haori 0.44.1 → 0.45.2

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
@@ -439,6 +439,17 @@ export declare class Core {
439
439
  depth: number;
440
440
  }>;
441
441
  };
442
+ /**
443
+ * スコープの解決結果と由来を収集します。
444
+ *
445
+ * `dumpScope()` の本体です。こちらは出力しません。診断(`data-if` の falsy 報告)は
446
+ * 自分で 1 行だけ出すため、ここで出すと同じ内容が二重に出て、再描画のたびに
447
+ * コンソールへ積み上がります。
448
+ *
449
+ * @param element 対象要素
450
+ * @return 解決済みスコープと各キーの由来情報
451
+ */
452
+ private static collectScope;
442
453
  /**
443
454
  * data-bind 属性の値をパースします。
444
455
  *
@@ -1753,6 +1764,27 @@ declare class ElementFragment extends Fragment {
1753
1764
  * @return 戻り値はありません。
1754
1765
  */
1755
1766
  private static warnUnresolvedAttribute;
1767
+ /**
1768
+ * 型の食い違う厳密比較を報告済みの宣言。
1769
+ * 再評価ごとに警告すると開発コンソールが埋まるため、同じ宣言は一度だけ報告する。
1770
+ */
1771
+ private static readonly loggedTypeMismatchedComparisons;
1772
+ /**
1773
+ * 開発モードで、型の食い違う厳密比較を警告します。
1774
+ *
1775
+ * `===` / `!==` の両辺の型が違うと、値が同じでも比較は必ず偽になります。API 由来
1776
+ * の数値の `id` と、フォームの収集値(文字列)を比べる宣言で起きやすく、
1777
+ * `data-attr-selected` / `data-attr-checked` では「選択やチェックが付かない」、
1778
+ * その他の `data-attr-*` では「属性が消える」という形でしか現れません。原因の
1779
+ * 属性とテンプレート、両辺の型を名指しで報告します。
1780
+ *
1781
+ * @param rawName 生の属性名
1782
+ * @param template 宣言されたテンプレート
1783
+ * @param types 両辺の型
1784
+ * @param element 対象エレメント
1785
+ * @return 戻り値はありません。
1786
+ */
1787
+ private static warnTypeMismatchedComparison;
1756
1788
  /**
1757
1789
  * チェック状態の宣言バインドについて、再適用を抑止すべきかを判定します。
1758
1790
  *
@@ -2465,6 +2497,56 @@ export declare class Form {
2465
2497
  * @returns 収集キー。どちらも無い場合は null
2466
2498
  */
2467
2499
  static resolveFieldName(fragment: ElementFragment): unknown;
2500
+ /**
2501
+ * 行の入力欄のうち、新しい要素データと値が食い違う収集キーに属するものだけ、
2502
+ * ユーザー編集の印を解除します。
2503
+ *
2504
+ * 行への `data-{event}-copy` で使います。コピーが優先するのは**コピーしたキー**
2505
+ * なので(仕様「編集可能な行への書き込み」)、行の印を丸ごと解除すると、コピー
2506
+ * していないキーの編集まで宣言バインドの評価結果へ明け渡してしまいます。評価が
2507
+ * 要素データと食い違う構成(数値の `id` と文字列の収集値を厳密比較する
2508
+ * `data-attr-selected` など)では、その欄の確定した編集が静かに消えます。
2509
+ *
2510
+ * 判定は**行の収集値と新しい要素データの突き合わせ**で行います。コピーしたキーは
2511
+ * 値が変わるため食い違い、コピーしていないキーは編集がすでに要素データへ確定して
2512
+ * いるため一致します。要素データが変わらない書き戻し(入力欄の状態が要素データへ
2513
+ * 確定していない構成)でも、画面と食い違うキーだけが対象になります。
2514
+ *
2515
+ * @param row 行のフラグメント
2516
+ * @param item 新しい要素データ
2517
+ * @returns 戻り値はありません。
2518
+ */
2519
+ static clearRowUserEditMarksForChangedKeys(row: ElementFragment, item: Record<string, unknown>): void;
2520
+ /**
2521
+ * 収集値と要素データの値が同じ内容かどうかを判定します。
2522
+ *
2523
+ * 直列化できない値(循環参照など)は「違う」と扱います。
2524
+ *
2525
+ * @param left 比較元の値
2526
+ * @param right 比較先の値
2527
+ * @returns 同じ内容なら true
2528
+ */
2529
+ private static isSameCollectedValue;
2530
+ /**
2531
+ * 指定した収集キーに属する部分木のユーザー編集の印を解除します。
2532
+ *
2533
+ * @param fragment 走査中のフラグメント
2534
+ * @param row 行のフラグメント(収集キーの起点)
2535
+ * @param keys 対象の収集キー
2536
+ * @returns 戻り値はありません。
2537
+ */
2538
+ private static clearUserEditMarksForKeys;
2539
+ /**
2540
+ * 行の中の要素が属する、収集値の**最上位**キーを返します。
2541
+ *
2542
+ * 行から要素までの間にある `data-form-object` / `data-form-list` と `name`
2543
+ * (`data-form-name`)のうち、行に最も近いものが最上位キーです。
2544
+ *
2545
+ * @param fragment 対象フラグメント
2546
+ * @param row 行のフラグメント
2547
+ * @returns 最上位の収集キー。無い場合は null
2548
+ */
2549
+ private static resolveRowTopLevelKey;
2468
2550
  /**
2469
2551
  * `data-form-name` の初期化を行います。
2470
2552
  *
@@ -4161,7 +4243,7 @@ declare interface ValueChangeOrigin {
4161
4243
  * リリース時に `package.json` と揃えて更新します(`tests/version.test.ts` が
4162
4244
  * 一致を検査します)。
4163
4245
  */
4164
- export declare const version = "0.44.1";
4246
+ export declare const version = "0.45.2";
4165
4247
 
4166
4248
  /**
4167
4249
  * すべてのレンダリングタスク(追従投入分を含む)の完了を待ちます。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "haori",
3
- "version": "0.44.1",
3
+ "version": "0.45.2",
4
4
  "description": "A lightweight HTML-first UI engine powered by declarative data bindings and expressions.",
5
5
  "scripts": {
6
6
  "dev": "vite",