haori 0.59.4 → 0.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1409,7 +1409,7 @@ declare class ElementFragment extends Fragment {
1409
1409
  * 付け直しで描画済みの DOM から作り直すことになり、描いた結果を宣言として読み込み
1410
1410
  * ます(仕様「監視対象」の「走査した要素を外部のスクリプトが DOM の中で移したり、
1411
1411
  * 外して後で戻したりしても、宣言は保ちます」)。付け直しでは `Core.addNode()` が
1412
- * この断片をそのまま挿入して走査します。
1412
+ * この断片をそのまま木へつなぎ直して走査します。
1413
1413
  *
1414
1414
  * DOM は既に動いているため、DOM からの除去は行いません(同じ親の中で順を変えた
1415
1415
  * 場合、ノードはまだ親の下にあります)。外部ライブラリ連携は、DOM から外れる要素と
@@ -1425,7 +1425,7 @@ declare class ElementFragment extends Fragment {
1425
1425
  * 外部ライブラリが配下に生成した DOM ごと取り込んでフォーム値の収集に載せます
1426
1426
  * (仕様「`data-external`」の「付け直した場合も、配下は走査した時点の構成のまま
1427
1427
  * 扱う」、課題 #42)。子の断片・属性・キャッシュ登録は保ち、付け直しでは
1428
- * `Core.addNode()` がこの断片をそのまま挿入して走査します。バインドデータの
1428
+ * `Core.addNode()` がこの断片をそのまま木へつなぎ直して走査します。バインドデータの
1429
1429
  * キャッシュは、付け直しで親を設定するとき(`setParent()`)に部分木ごと捨てられる
1430
1430
  * ため、ここでは捨てません(捨てる行を外しても結果が変わらないことを確認済み)。
1431
1431
  *
@@ -1767,6 +1767,26 @@ declare class ElementFragment extends Fragment {
1767
1767
  * @returns エレメントの更新のPromise
1768
1768
  */
1769
1769
  private applyValue;
1770
+ /**
1771
+ * 値を行の配列で収集する入力欄(`data-value-type="lines"` の textarea)かどうかを
1772
+ * 判定します。
1773
+ *
1774
+ * @returns 行の配列で収集する場合 true
1775
+ */
1776
+ collectsLines(): boolean;
1777
+ /**
1778
+ * `data-value-type="lines"` の textarea へ、行の配列を反映します。
1779
+ *
1780
+ * 改行でつないで書きます。DOM の内容が同じ行の配列を表している場合は書き換え
1781
+ * ません。利用者が書いた空の行や前後の空白を、コミットの書き戻しで消さない
1782
+ * ためです(仕様「`data-value-type`」)。
1783
+ *
1784
+ * @param value 反映する値(配列、または改行区切りの文字列)
1785
+ * @param dispatchEvents input/change イベントを発火するかどうか
1786
+ * @param origin 値の由来(通番と種別)
1787
+ * @returns 反映完了の Promise
1788
+ */
1789
+ private writeLinesValue;
1770
1790
  /**
1771
1791
  * 値を持つ入力エレメント(テキスト系 / textarea / 単一選択 select)へ値を反映します。
1772
1792
  *
@@ -2146,14 +2166,26 @@ declare class ElementFragment extends Fragment {
2146
2166
  *
2147
2167
  * `data-value-type` を宣言した入力欄では、宣言した型へ正規化します(仕様
2148
2168
  * 「`data-value-type`」)。宣言は `type` より優先するため、`type="number"` へ
2149
- * `string` を宣言した場合は文字列になります。それ以外の要素では値をそのまま
2150
- * 返します。
2169
+ * `string` を宣言した場合は文字列になります。`lines` を宣言した textarea では、
2170
+ * 行の配列になります。それ以外の要素では値をそのまま返します。
2151
2171
  *
2152
2172
  * @param element 対象の入力要素
2153
2173
  * @param value 正規化する値
2154
2174
  * @returns 正規化後の値(宣言または `type="number"` に従う)
2155
2175
  */
2156
2176
  private normalizeValueForElement;
2177
+ /**
2178
+ * 値を行の配列へ正規化します。
2179
+ *
2180
+ * 改行で分け、各行の前後の空白を除き、空の行は捨てます(`\r\n` の `\r` は
2181
+ * 前後の空白として除かれます)。配列が渡された場合は、各要素を行として同じ規則を
2182
+ * 適用します。`null` と、配列の `null` の要素は空として扱います(仕様
2183
+ * 「`data-value-type`」)。
2184
+ *
2185
+ * @param value 正規化する値
2186
+ * @returns 行の配列
2187
+ */
2188
+ private static normalizeLinesValue;
2157
2189
  /**
2158
2190
  * 値を数値へ正規化します。
2159
2191
  *
@@ -2181,10 +2213,10 @@ declare class ElementFragment extends Fragment {
2181
2213
  * 入力欄に宣言された収集値の型(`data-value-type`)を解決します。
2182
2214
  *
2183
2215
  * 宣言は静的なものとして扱い、DOM の属性から直接読みます。宣言できるのは
2184
- * `boolean` / `number` / `string` で、対象は値を持つ入力(`<input>` のうち
2185
- * `checkbox` / `radio` / `file` を除くもの、`<textarea>`、単一選択の `<select>`)
2186
- * です。対象外の要素や未知の型は宣言が無いものとして扱い、開発モードで警告します
2187
- * (仕様「`data-value-type`」)。
2216
+ * `boolean` / `number` / `string` / `lines` で、対象は値を持つ入力(`<input>` の
2217
+ * うち `checkbox` / `radio` / `file` を除くもの、`<textarea>`、単一選択の
2218
+ * `<select>`)です。`lines` は `<textarea>` だけです。対象外の要素や未知の型は
2219
+ * 宣言が無いものとして扱い、開発モードで警告します(仕様「`data-value-type`」)。
2188
2220
  *
2189
2221
  * @param element 対象の要素
2190
2222
  * @returns 宣言された型。宣言が無い場合と無視する場合は null
@@ -2446,6 +2478,28 @@ declare class ElementFragment extends Fragment {
2446
2478
  * @return 挿入のPromise
2447
2479
  */
2448
2480
  insertBefore(newChild: Fragment, referenceChild: Fragment | null, referenceNodeOverride?: Node | null): Promise<void>;
2481
+ /**
2482
+ * 監視が観測した追加を、DOM を動かさずに内部の木へ反映します。
2483
+ *
2484
+ * ノードは既に DOM 上の追加された位置にあります。DOM から外して付け直すと、開いた
2485
+ * popover・`showModal()` で開いた `<dialog>` のモーダル状態・フォーカスが失われます
2486
+ * (仕様「監視対象」の「外部のスクリプトが DOM に追加したノードは、追加された位置の
2487
+ * まま取り込み、DOM から外して付け直すことはしません」)。
2488
+ *
2489
+ * @param newChild 追加された子ノード
2490
+ * @param referenceChild 追加された位置の次の子ノード(末尾の場合は null)
2491
+ * @returns 戻り値はありません。
2492
+ */
2493
+ attachObserved(newChild: Fragment, referenceChild: Fragment | null): void;
2494
+ /**
2495
+ * 子ノードを内部の木の参照ノードの前へつなぎます。DOM は操作しません。
2496
+ *
2497
+ * @param newChild 新しい子ノード
2498
+ * @param referenceChild 参照ノード(末尾の場合は null)
2499
+ * @param referenceNodeOverride DOM で挿入する位置の次のノード(省略時は参照ノード)
2500
+ * @returns DOM で挿入する位置の次のノード
2501
+ */
2502
+ private linkChild;
2449
2503
  /**
2450
2504
  * 指定した参照ノードの後に子ノードを挿入します。
2451
2505
  *
@@ -4113,6 +4167,17 @@ export declare class Form {
4113
4167
  * @return Promise(メッセージの追加が完了したら解決される)
4114
4168
  */
4115
4169
  static addMessage(fragment: ElementFragment, key: string, message: string, level?: 'info' | 'warning' | 'error' | 'success'): Promise<void>;
4170
+ /**
4171
+ * キーに一致したフラグメントから、2 つめ以降のラジオボタンを除きます。
4172
+ *
4173
+ * 同じキーで収集するラジオボタンは 1 つの値を表すため、メッセージは最初の
4174
+ * 1 つにだけ渡します(仕様「エラーハンドリング」)。ラジオの数だけ渡すと、
4175
+ * 同じ文がラジオの数だけ並びます。
4176
+ *
4177
+ * @param fragments キーに一致したフラグメント
4178
+ * @returns メッセージを渡すフラグメント
4179
+ */
4180
+ private static keepFirstRadio;
4116
4181
  /**
4117
4182
  * 指定されたキーに一致するフラグメントを検索します。
4118
4183
  *
@@ -4858,7 +4923,7 @@ declare interface ValueChangeOrigin {
4858
4923
  * リリース時に `package.json` と揃えて更新します(`tests/version.test.ts` が
4859
4924
  * 一致を検査します)。
4860
4925
  */
4861
- export declare const version = "0.59.4";
4926
+ export declare const version = "0.60.0";
4862
4927
 
4863
4928
  /**
4864
4929
  * すべてのレンダリングタスク(追従投入分を含む)の完了を待ちます。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "haori",
3
- "version": "0.59.4",
3
+ "version": "0.60.0",
4
4
  "description": "A lightweight HTML-first UI engine powered by declarative data bindings and expressions.",
5
5
  "scripts": {
6
6
  "dev": "vite",