# Bone Flow #028 TextArea Specification v1.0

Component ID: #028  
Component Name: Bone TextArea  
Implementation Version: 1.0.14  
Status: Development  
UI Baseline: #027 Bone TextBox v1.0.14

## 1. Responsibility

TextAreaは複数行文字列の入力・編集UIです。Boneの永続的正本、Joint接続実装、業務保存処理は担当しません。

```text
Bone / Joint IN
  ↓
TextArea editingValue
  ↓ commit
committedValue snapshot
  ↓
#002 Bone Joint Delivery Channel
  ↓
Target
```

## 2. Data contract

Bone最小構造は変更しません。

```json
{"id":"...","type":"TEXTAREA","value":"multiple\nlines"}
```

基本valueは `string`。`null / undefined` は空文字として表示可能ですが、読み込みだけで自動commitしません。

## 3. Editing state

- `editingValue`: 現在編集中。
- `committedValue`: 最後の正式確定値。
- `dirty`: 両者が異なる時true。

## 4. Commit model

TextAreaではEnterを改行に使用します。

- Enter alone: commitしない。
- Ctrl+Enter: shortcut設定に応じcommit。
- Cmd/Meta+Enter: shortcut設定に応じcommit。
- blur: `blurCommit=true` の場合commit。
- Escape: 編集中値を確定値へ戻す。
- composition中のshortcut: commitしない。
- invalid: `commitInvalid=false` の既定ではcommitしないが編集値は保持する。

`commitShortcut`:

- `ctrl-or-meta-enter` (default)
- `ctrl-enter`
- `meta-enter`
- `none`

## 5. Multiline Property

| Property | Contract | Default |
|---|---|---|
| rows | integer 1..1000 | 6 |
| cols | integer 1..1000 | 40 |
| wrap | soft / hard / off | soft |
| resize | none / vertical / horizontal / both | vertical |
| scroll | auto / hidden / scroll | auto |
| width | 40..4000 px | 480 |
| height | 48..2000 px | 160 |

## 6. Security boundary

Untrusted INではgetterを実行せず、objectのString coercionを行いません。Proxy trap例外は外へ漏らさずrejectします。改行 `\n` と `\r` は許可し、NUL等の危険な制御文字とunpaired surrogateは拒否します。

HTML風文字列はHTMLとして解釈しません。Security Testは専用TextArea instanceで行い、通常Previewを変更しません。

## 7. Joint delegation

TextAreaが担当するのはcommitまでです。以下は#002 Bone Joint v1.1.36へ委譲します。

- Target Ready
- WAITING
- FIFO queue
- BLOCKED
- BLOCK解除
- Target配送
- Joint線・Marker・Animation

使用API: `BoneJoint.createDeliveryChannel()`。

WAIT / BLOCKED時も接続自体は維持します。

## 8. #027 baseline preserved

- 日本語 / English Property
- Theme default/dark/light/neon
- safe backgroundColor
- normal/flat/borderless appearance
- parent dependency
- 9-way position
- input alignment
- Active Border Effect
- isolated Security Test
- five Joint connection-image cases
- Smoke / Validation / JSON・MD reports
- Completion management

## 9. Prohibitions

- #027 TextBoxを変更しない。
- #001 Core / #002 Joint / #017 TextをTextArea都合で変更しない。
- TextArea内に独自queue / retry / Joint線を実装しない。
- Enter aloneをcommitに戻さない。
- Security Testを通常Previewへ連動させない。
- objectをString(value)で受理しない。
- 未実施Browser RuntimeをALL PASSと記録しない。

## 10. Completion condition

Browser Runtime QA ALL PASS + WAIT目視確認 + BLOCK目視確認。Node/static test PASSだけでは正式完了にしません。


## 11. Dependency version compatibility

#001 Bone Core minimum `1.0.0` / #002 Bone Joint minimum `1.1.36`。依存Versionは same major.minor かつ actual patch >= minimum patch の時だけ互換とし、必要Public APIも同時に確認する。#028 TextArea自身のVersion確認は実装Version完全一致で行う。


## v1.0.7 Missing common UI restoration

- `Untrusted IN / Security Test` は通常Previewと独立した既存Security Testを維持し、表示Smokeを追加。
- `mouseoverBorderEffect / mouseoverEffectColor / mouseoverEffectDirection / mouseoverEffectSpeed` を追加し、描画は #022 Bone Hover Border Effectへ委譲。
- `Class リスト` を追加。`TextAreaClassSample` のコード、実UI生成、Class経由の値設定/commit、State/実行結果を同一画面で確認する。
- TextArea固有 rows / cols / wrap / resize / scroll / commitShortcut、Security判定、WAIT/BLOCK、接続イメージ、Completionは変更しない。

## v1.0.8 Guide
TESTのClassリストからGuideを開き、Public API一覧/詳細、使用方法、TextAreaClassSampleのいつ・どこで使用するか、参照データ、コード各部、コードの書き方、サンプル、実行結果を確認できる。

## v1.0.9 Installer version verification fix

- `install.ps1` / `install.bat` のComponent Versionを 1.0.9 へ同期。
- HTML / JS の実装VersionとInstaller期待Versionを一致させ、HTML version verification失敗を解消。
- #022 minimum 1.0.8 を含むDependency contractは変更しない。

## v1.0.10 Guide layout correction
- #027 TextBox v1.0.35 のGuide構造を維持。
- TextAreaの長いPublic API/Class内容でGuide全体に横スクロールが発生しないよう、Guide内コンテンツのmin-width/折返しを修正。
- Classリスト本体、Security、Mouse Over、TextArea Runtime責務は変更しない。


## v1.0.11 Guide content correction

- #027 TextBox v1.0.35 のGuide構造/説明項目を正式参照し、TextArea固有差分だけへ置換する。
- Guide操作説明の必須順序: クラス一覧 / いつ・どこで使用 / 参照するデータの説明 / 参照データ詳細 / コードの書き方 / サンプル / 結果。
- #028 Runtimeに存在しない依存/APIをGuideへ捏造しない。


## v1.0.14 Full TEST UI / Class List / Guide review

- #027 TextBox v1.0.35 was used as the primary structural reference for Guide presentation.
- Added 8 executable consumer-side Classes grouped by responsibility.
- All 35 BoneTextArea Public APIs are covered exactly once by the Class List catalog.
- Added ordinary TEST-screen operation instructions before Class-by-Class operation documentation.
- Corrected stale `textbox` sample-variable names in the #028 Public API Guide to `textarea`.
- Completed English Mouse Over `spin` / `cross` Property labels found during full-screen review.
- Runtime behavior itself is unchanged except self-version synchronization.


## Runtime correction candidate (package 1.0.29, runtime 1.0.16)
- #022 Border Effect is connected for Active and Mouse Over with focus/blur updates and all nine official effect kinds.
- #040 gradient RETURN is preserved; the official #022 overlay gets a caller-scoped gradient border layer.
- #118 four Property options remain available below Effect settings and are passed to #040 Caller.
- Actual Windows Installer execution and localhost UI tests are unverified. Use the on-page effect audit and existing Smoke/Validation.
