haori 0.1.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.
Files changed (175) hide show
  1. package/LICENSE +21 -0
  2. package/README.ja.md +157 -0
  3. package/README.md +158 -0
  4. package/dist/haori.cjs.js +13 -0
  5. package/dist/haori.cjs.js.map +1 -0
  6. package/dist/haori.es.js +2929 -0
  7. package/dist/haori.es.js.map +1 -0
  8. package/dist/haori.iife.js +13 -0
  9. package/dist/haori.iife.js.map +1 -0
  10. package/dist/index.d.ts +824 -0
  11. package/dist/src/core.d.ts +144 -0
  12. package/dist/src/core.d.ts.map +1 -0
  13. package/dist/src/core.js +605 -0
  14. package/dist/src/core.js.map +1 -0
  15. package/dist/src/dev.d.ts +35 -0
  16. package/dist/src/dev.d.ts.map +1 -0
  17. package/dist/src/dev.js +44 -0
  18. package/dist/src/dev.js.map +1 -0
  19. package/dist/src/env.d.ts +25 -0
  20. package/dist/src/env.d.ts.map +1 -0
  21. package/dist/src/env.js +64 -0
  22. package/dist/src/env.js.map +1 -0
  23. package/dist/src/event.d.ts +144 -0
  24. package/dist/src/event.d.ts.map +1 -0
  25. package/dist/src/event.js +221 -0
  26. package/dist/src/event.js.map +1 -0
  27. package/dist/src/event_dispatcher.d.ts +50 -0
  28. package/dist/src/event_dispatcher.d.ts.map +1 -0
  29. package/dist/src/event_dispatcher.js +99 -0
  30. package/dist/src/event_dispatcher.js.map +1 -0
  31. package/dist/src/expression.d.ts +39 -0
  32. package/dist/src/expression.d.ts.map +1 -0
  33. package/dist/src/expression.js +148 -0
  34. package/dist/src/expression.js.map +1 -0
  35. package/dist/src/form.d.ts +113 -0
  36. package/dist/src/form.d.ts.map +1 -0
  37. package/dist/src/form.js +361 -0
  38. package/dist/src/form.js.map +1 -0
  39. package/dist/src/fragment.d.ts +427 -0
  40. package/dist/src/fragment.d.ts.map +1 -0
  41. package/dist/src/fragment.js +1168 -0
  42. package/dist/src/fragment.js.map +1 -0
  43. package/dist/src/haori.d.ts +54 -0
  44. package/dist/src/haori.d.ts.map +1 -0
  45. package/dist/src/haori.js +120 -0
  46. package/dist/src/haori.js.map +1 -0
  47. package/dist/src/import.d.ts +19 -0
  48. package/dist/src/import.d.ts.map +1 -0
  49. package/dist/src/import.js +64 -0
  50. package/dist/src/import.js.map +1 -0
  51. package/dist/src/index.d.ts +17 -0
  52. package/dist/src/index.d.ts.map +1 -0
  53. package/dist/src/index.js +21 -0
  54. package/dist/src/index.js.map +1 -0
  55. package/dist/src/log.d.ts +32 -0
  56. package/dist/src/log.d.ts.map +1 -0
  57. package/dist/src/log.js +43 -0
  58. package/dist/src/log.js.map +1 -0
  59. package/dist/src/observer.d.ts +17 -0
  60. package/dist/src/observer.d.ts.map +1 -0
  61. package/dist/src/observer.js +102 -0
  62. package/dist/src/observer.js.map +1 -0
  63. package/dist/src/procedure.d.ts +203 -0
  64. package/dist/src/procedure.d.ts.map +1 -0
  65. package/dist/src/procedure.js +1040 -0
  66. package/dist/src/procedure.js.map +1 -0
  67. package/dist/src/queue.d.ts +28 -0
  68. package/dist/src/queue.d.ts.map +1 -0
  69. package/dist/src/queue.js +150 -0
  70. package/dist/src/queue.js.map +1 -0
  71. package/dist/src/url.d.ts +14 -0
  72. package/dist/src/url.d.ts.map +1 -0
  73. package/dist/src/url.js +22 -0
  74. package/dist/src/url.js.map +1 -0
  75. package/dist/tests/click-attributes.test.d.ts +2 -0
  76. package/dist/tests/click-attributes.test.d.ts.map +1 -0
  77. package/dist/tests/click-attributes.test.js +95 -0
  78. package/dist/tests/click-attributes.test.js.map +1 -0
  79. package/dist/tests/core.test.d.ts +5 -0
  80. package/dist/tests/core.test.d.ts.map +1 -0
  81. package/dist/tests/core.test.js +158 -0
  82. package/dist/tests/core.test.js.map +1 -0
  83. package/dist/tests/data-each-browserlike.test.d.ts +2 -0
  84. package/dist/tests/data-each-browserlike.test.d.ts.map +1 -0
  85. package/dist/tests/data-each-browserlike.test.js +48 -0
  86. package/dist/tests/data-each-browserlike.test.js.map +1 -0
  87. package/dist/tests/data-each-fragment-debug.test.d.ts +2 -0
  88. package/dist/tests/data-each-fragment-debug.test.d.ts.map +1 -0
  89. package/dist/tests/data-each-fragment-debug.test.js +119 -0
  90. package/dist/tests/data-each-fragment-debug.test.js.map +1 -0
  91. package/dist/tests/data-each-table.test.d.ts +2 -0
  92. package/dist/tests/data-each-table.test.d.ts.map +1 -0
  93. package/dist/tests/data-each-table.test.js +63 -0
  94. package/dist/tests/data-each-table.test.js.map +1 -0
  95. package/dist/tests/dev.test.d.ts +2 -0
  96. package/dist/tests/dev.test.d.ts.map +1 -0
  97. package/dist/tests/dev.test.js +51 -0
  98. package/dist/tests/dev.test.js.map +1 -0
  99. package/dist/tests/each_arg.test.d.ts +2 -0
  100. package/dist/tests/each_arg.test.d.ts.map +1 -0
  101. package/dist/tests/each_arg.test.js +41 -0
  102. package/dist/tests/each_arg.test.js.map +1 -0
  103. package/dist/tests/env.test.d.ts +2 -0
  104. package/dist/tests/env.test.d.ts.map +1 -0
  105. package/dist/tests/env.test.js +96 -0
  106. package/dist/tests/env.test.js.map +1 -0
  107. package/dist/tests/event.test.d.ts +2 -0
  108. package/dist/tests/event.test.d.ts.map +1 -0
  109. package/dist/tests/event.test.js +287 -0
  110. package/dist/tests/event.test.js.map +1 -0
  111. package/dist/tests/expression.test.d.ts +2 -0
  112. package/dist/tests/expression.test.d.ts.map +1 -0
  113. package/dist/tests/expression.test.js +281 -0
  114. package/dist/tests/expression.test.js.map +1 -0
  115. package/dist/tests/fetch-and-procedure-scenarios.test.d.ts +2 -0
  116. package/dist/tests/fetch-and-procedure-scenarios.test.d.ts.map +1 -0
  117. package/dist/tests/fetch-and-procedure-scenarios.test.js +133 -0
  118. package/dist/tests/fetch-and-procedure-scenarios.test.js.map +1 -0
  119. package/dist/tests/form.test.d.ts +2 -0
  120. package/dist/tests/form.test.d.ts.map +1 -0
  121. package/dist/tests/form.test.js +607 -0
  122. package/dist/tests/form.test.js.map +1 -0
  123. package/dist/tests/fragment.test.d.ts +2 -0
  124. package/dist/tests/fragment.test.d.ts.map +1 -0
  125. package/dist/tests/fragment.test.js +164 -0
  126. package/dist/tests/fragment.test.js.map +1 -0
  127. package/dist/tests/import.test.d.ts +2 -0
  128. package/dist/tests/import.test.d.ts.map +1 -0
  129. package/dist/tests/import.test.js +148 -0
  130. package/dist/tests/import.test.js.map +1 -0
  131. package/dist/tests/log.test.d.ts +2 -0
  132. package/dist/tests/log.test.d.ts.map +1 -0
  133. package/dist/tests/log.test.js +58 -0
  134. package/dist/tests/log.test.js.map +1 -0
  135. package/dist/tests/procedure-action-operations.test.d.ts +2 -0
  136. package/dist/tests/procedure-action-operations.test.d.ts.map +1 -0
  137. package/dist/tests/procedure-action-operations.test.js +148 -0
  138. package/dist/tests/procedure-action-operations.test.js.map +1 -0
  139. package/dist/tests/procedure-fetch-options.test.d.ts +2 -0
  140. package/dist/tests/procedure-fetch-options.test.d.ts.map +1 -0
  141. package/dist/tests/procedure-fetch-options.test.js +131 -0
  142. package/dist/tests/procedure-fetch-options.test.js.map +1 -0
  143. package/dist/tests/procedure.test.d.ts +2 -0
  144. package/dist/tests/procedure.test.d.ts.map +1 -0
  145. package/dist/tests/procedure.test.js +136 -0
  146. package/dist/tests/procedure.test.js.map +1 -0
  147. package/dist/tests/procedure_events.test.d.ts +7 -0
  148. package/dist/tests/procedure_events.test.d.ts.map +1 -0
  149. package/dist/tests/procedure_events.test.js +96 -0
  150. package/dist/tests/procedure_events.test.js.map +1 -0
  151. package/dist/tests/reset_each.test.d.ts +2 -0
  152. package/dist/tests/reset_each.test.d.ts.map +1 -0
  153. package/dist/tests/reset_each.test.js +215 -0
  154. package/dist/tests/reset_each.test.js.map +1 -0
  155. package/dist/tests/row-move.test.d.ts +2 -0
  156. package/dist/tests/row-move.test.d.ts.map +1 -0
  157. package/dist/tests/row-move.test.js +197 -0
  158. package/dist/tests/row-move.test.js.map +1 -0
  159. package/dist/tests/row-operations.test.d.ts +2 -0
  160. package/dist/tests/row-operations.test.d.ts.map +1 -0
  161. package/dist/tests/row-operations.test.js +238 -0
  162. package/dist/tests/row-operations.test.js.map +1 -0
  163. package/dist/tests/url.test.d.ts +2 -0
  164. package/dist/tests/url.test.d.ts.map +1 -0
  165. package/dist/tests/url.test.js +150 -0
  166. package/dist/tests/url.test.js.map +1 -0
  167. package/dist/vite.config.d.ts +3 -0
  168. package/dist/vite.config.d.ts.map +1 -0
  169. package/dist/vite.config.js +28 -0
  170. package/dist/vite.config.js.map +1 -0
  171. package/dist/vitest.config.d.ts +3 -0
  172. package/dist/vitest.config.d.ts.map +1 -0
  173. package/dist/vitest.config.js +19 -0
  174. package/dist/vitest.config.js.map +1 -0
  175. package/package.json +68 -0
@@ -0,0 +1,824 @@
1
+ /**
2
+ * コメントフラグメント。
3
+ * コメントノードを表現します。
4
+ */
5
+ declare class CommentFragment extends Fragment {
6
+ /** コメント文字列 */
7
+ private text;
8
+ /** 更新スキップフラグ(オブザーバーによる無限ループ対応) */
9
+ private skipMutation;
10
+ /**
11
+ * コメントフラグメントのコンストラクタ。
12
+ * 対象コメントノードの内容を初期化します。
13
+ *
14
+ * @param target 対象コメントノード
15
+ */
16
+ constructor(target: Comment);
17
+ /**
18
+ * フラグメントをクローンします。
19
+ *
20
+ * @returns クローンされたフラグメント
21
+ */
22
+ clone(): Fragment;
23
+ /**
24
+ * フラグメントの対象ノードを取得します。
25
+ *
26
+ * @returns フラグメントの対象ノード
27
+ */
28
+ getTarget(): Comment;
29
+ /**
30
+ * コンテンツを更新します。
31
+ *
32
+ * @param text テキスト
33
+ * @return 更新のPromise
34
+ */
35
+ setContent(text: string): Promise<void>;
36
+ }
37
+
38
+ /**
39
+ * アプリケーションの中心的な制御を行うクラスです。
40
+ * Fragment の初期化、属性変化の処理、条件分岐・繰り返し処理を管理します。
41
+ */
42
+ export declare class Core {
43
+ /** 優先処理する属性のサフィックス(処理順序で定義) */
44
+ private static readonly PRIORITY_ATTRIBUTE_SUFFIXES;
45
+ /** 遅延処理する属性のサフィックス */
46
+ private static readonly DEFERRED_ATTRIBUTE_SUFFIXES;
47
+ /**
48
+ * 遅延属性かどうか(完全名で判定)を判定します。
49
+ *
50
+ * @param name 属性名
51
+ * @returns 遅延属性かどうか
52
+ */
53
+ private static isDeferredAttributeName;
54
+ /**
55
+ * 指定された要素と、その子要素をスキャンし、Fragmentを生成します。
56
+ *
57
+ * @param element スキャン対象の要素
58
+ * @returns Promise (スキャンが完了したときに解決される)
59
+ */
60
+ static scan(element: HTMLElement): Promise<void>;
61
+ /**
62
+ * エレメントに属性を設定します。
63
+ * 属性固有の処理も行います。
64
+ *
65
+ * @param element エレメント
66
+ * @param name 属性名
67
+ * @param value 属性値
68
+ * @returns Promise (DOM操作が完了したときに解決される)
69
+ */
70
+ static setAttribute(element: HTMLElement, name: string, value: string | null): Promise<void>;
71
+ /**
72
+ * エレメントに属性を設定し、評価を行います。
73
+ *
74
+ * @param element エレメント
75
+ * @param name 属性名
76
+ * @param value 属性値
77
+ * @returns Promise (DOM操作が完了したときに解決される)
78
+ */
79
+ static setBindingData(element: HTMLElement, data: Record<string, unknown>): Promise<void>;
80
+ /**
81
+ * data-bind 属性の値をパースします。
82
+ *
83
+ * @param data data-bind 属性の値
84
+ * @returns パースされたデータオブジェクト
85
+ */
86
+ static parseDataBind(data: string): Record<string, unknown>;
87
+ /**
88
+ * ノードを親要素に追加し評価を行います。
89
+ *
90
+ * @param parentElement 親エレメント
91
+ * @param node 追加するノード
92
+ */
93
+ static addNode(parentElement: HTMLElement, node: Node): void;
94
+ /**
95
+ * ノードを親要素から削除します。
96
+ *
97
+ * @param node 削除するノード
98
+ */
99
+ static removeNode(node: Node): void;
100
+ /**
101
+ * ノードのテキストを変更します。
102
+ *
103
+ * @param node 変更するノード
104
+ * @param text 新しいテキスト
105
+ */
106
+ static changeText(node: Text | Comment, text: string): void;
107
+ /**
108
+ * エレメントの値を変更します。
109
+ * フォームの双方向バインディングを考慮し、フォームのバインドデータも更新します。
110
+ *
111
+ * @param element 変更するエレメント
112
+ * @param value 新しい値
113
+ * @returns Promise (DOM操作が完了したときに解決される)
114
+ */
115
+ static changeValue(element: HTMLElement, value: string): Promise<void>;
116
+ /**
117
+ * フォームフラグメントを取得します。
118
+ *
119
+ * @param fragment フラグメント
120
+ * @returns フォームフラグメントまたはnull
121
+ */
122
+ private static getFormFragment;
123
+ /**
124
+ * フラグメントとその子要素を評価します。
125
+ *
126
+ * @param fragment 対象フラグメント
127
+ * @return Promise (DOM操作が完了したときに解決される)
128
+ */
129
+ static evaluateAll(fragment: ElementFragment): Promise<void>;
130
+ /**
131
+ * テキストフラグメントを評価します。
132
+ *
133
+ * @param fragment 対象フラグメント
134
+ * @returns Promise (DOM操作が完了したときに解決される)
135
+ */
136
+ static evaluateText(fragment: TextFragment): Promise<void>;
137
+ /**
138
+ * if要素を評価します。
139
+ * 値がfalse、null、undefined、NaNの場合は非表示にし、それ以外の場合は表示します。
140
+ *
141
+ * @param fragment 対象フラグメント
142
+ * @return Promise (DOM操作が完了したときに解決される)
143
+ */
144
+ static evaluateIf(fragment: ElementFragment): Promise<void>;
145
+ /**
146
+ * each要素を評価します。
147
+ * 非表示または未マウントの場合は処理をスキップします。
148
+ *
149
+ * @param fragment 対象フラグメント
150
+ */
151
+ static evaluateEach(fragment: ElementFragment): Promise<void>;
152
+ /**
153
+ * 差分を更新します。
154
+ *
155
+ * @param parent 親フラグメント
156
+ * @param newList 新しいリスト
157
+ */
158
+ private static updateDiff;
159
+ /**
160
+ * リスト比較用のキーを生成します。
161
+ *
162
+ * @param item 対象オブジェクト
163
+ * @param keyArg リストキーに使用するプロパティ名
164
+ * @param index 配列のインデックス
165
+ * @returns リストキー
166
+ */
167
+ private static createListKey;
168
+ /**
169
+ * 行フラグメントにデータを設定します。
170
+ *
171
+ * @param rowFragment 行フラグメント
172
+ * @param data 行データ
173
+ * @param indexKey インデックスキー
174
+ * @param index インデックス番号
175
+ * @param arg バインドデータパラメータ名
176
+ * @param listKey リストキー
177
+ */
178
+ private static updateRowFragment;
179
+ }
180
+
181
+ /**
182
+ * エレメントフラグメント。
183
+ * DOM要素を表現し、子ノードを持つことができます。
184
+ */
185
+ declare class ElementFragment extends Fragment {
186
+ /** inputイベントを発生させるタイプ */
187
+ private readonly INPUT_EVENT_TYPES;
188
+ /** 子フラグメントのリスト */
189
+ private readonly children;
190
+ /** 属性名に対する属性情報のマップ */
191
+ private readonly attributeMap;
192
+ /** バインドデータ */
193
+ private bindingData;
194
+ /** バインドデータのキャッシュ */
195
+ private bindingDataCache;
196
+ /** 表示状態 */
197
+ private visible;
198
+ /** 元の display 値 */
199
+ private display;
200
+ /** each用のテンプレート */
201
+ private template;
202
+ /** each比較用のキー */
203
+ private listKey;
204
+ /** valueプロパティの値 */
205
+ private value;
206
+ /** 属性更新スキップフラグ(オブザーバーによる無限ループ対応) */
207
+ private skipMutationAttributes;
208
+ /** 値変更スキップフラグ(更新イベントによる無限ループ対応) */
209
+ private skipChangeValue;
210
+ /**
211
+ * エレメントフラグメントのコンストラクタ。
212
+ * アトリビュートや子フラグメントの作成も行います。
213
+ *
214
+ * @param target 対象エレメント
215
+ */
216
+ constructor(target: HTMLElement);
217
+ /**
218
+ * 子フラグメントのリストを取得します。
219
+ *
220
+ * @returns 子フラグメントのリスト
221
+ */
222
+ getChildren(): Fragment[];
223
+ /**
224
+ * 子エレメントフラグメントのリストを取得します。
225
+ *
226
+ * @returns 子エレメントフラグメントのリスト
227
+ */
228
+ getChildElementFragments(): ElementFragment[];
229
+ /**
230
+ * 子フラグメントをリストに追加します。
231
+ * DOMの追加は行いません。
232
+ *
233
+ * @param child 追加する子フラグメント
234
+ */
235
+ pushChild(child: Fragment): void;
236
+ /**
237
+ * 子フラグメントをリストから削除します。
238
+ * DOMからの削除は行いません。
239
+ *
240
+ * @param child 削除する子フラグメント
241
+ */
242
+ removeChild(child: Fragment): void;
243
+ /**
244
+ * フラグメントをクローンします。
245
+ *
246
+ * @returns クローンされたフラグメント
247
+ */
248
+ clone(): ElementFragment;
249
+ /**
250
+ * フラグメントとノードを削除します。
251
+ *
252
+ * @param unmount DOMからの除去を行うかどうか(内部の子呼び出しの場合のみfalseとする)
253
+ * @return 除去のPromise
254
+ */
255
+ remove(unmount?: boolean): Promise<void>;
256
+ /**
257
+ * フラグメントの対象エレメントを取得します。
258
+ *
259
+ * @returns フラグメントの対象エレメント
260
+ */
261
+ getTarget(): HTMLElement;
262
+ /**
263
+ * 継承を考慮したバインドデータを取得します。
264
+ *
265
+ * @returns バインドデータのオブジェクト
266
+ */
267
+ getBindingData(): Record<string, unknown>;
268
+ /**
269
+ * 生のバインドデータを取得します。
270
+ *
271
+ * @returns 生のバインドデータ
272
+ */
273
+ getRawBindingData(): Record<string, unknown> | null;
274
+ /**
275
+ * バインドデータを設定します。
276
+ *
277
+ * @param data バインドデータ
278
+ */
279
+ setBindingData(data: Record<string, unknown>): void;
280
+ /**
281
+ * バインドデータのキャッシュをクリアします。
282
+ */
283
+ clearBindingDataCache(): void;
284
+ /**
285
+ * フラグメントのテンプレートを取得します。
286
+ *
287
+ * @returns テンプレート
288
+ */
289
+ getTemplate(): ElementFragment | null;
290
+ /**
291
+ * フラグメントのテンプレートを設定します。
292
+ *
293
+ * @param template フラグメントのテンプレート
294
+ */
295
+ setTemplate(template: ElementFragment | null): void;
296
+ /**
297
+ * 比較用リストキーを設定します。
298
+ *
299
+ * @param key 比較用リストキー
300
+ */
301
+ setListKey(key: string): void;
302
+ /**
303
+ * 比較用リストキーを取得します。
304
+ *
305
+ * @returns 比較用リストキー
306
+ */
307
+ getListKey(): string | null;
308
+ /**
309
+ * 入力エレメントに値を設定します。
310
+ * チェックボックとラジオボタンの場合は値に一致するかどうかでチェック状態を変更します。
311
+ *
312
+ * @param value 値
313
+ * @returns エレメントの更新のPromise
314
+ */
315
+ setValue(value: string | number | boolean | null): Promise<void>;
316
+ /**
317
+ * 入力エレメントの値を取得します。
318
+ * DOM要素の現在の値と同期します。
319
+ *
320
+ * @returns 入力エレメントの値
321
+ */
322
+ getValue(): string | number | boolean | null;
323
+ /**
324
+ * 内部の値をクリアします。エレメントのvalue値は変化しません。
325
+ */
326
+ clearValue(): void;
327
+ /**
328
+ * 内部の値をDOMの値と同期します。
329
+ * changeイベント時など、DOM値が変更された後に呼び出されます。
330
+ */
331
+ syncValue(): void;
332
+ /**
333
+ * 属性の値を評価して設定します。
334
+ * 評価値がfalseの場合は属性を削除します。
335
+ * 矯正評価属性の場合は元の値を設定します。
336
+ *
337
+ * @param name 属性名
338
+ * @param value 属性値
339
+ * @returns 属性の更新のPromise
340
+ */
341
+ setAttribute(name: string, value: string | null): Promise<void>;
342
+ /**
343
+ * 属性の値を削除します。
344
+ *
345
+ * @param name 属性名
346
+ * @returns 属性の削除のPromise
347
+ */
348
+ removeAttribute(name: string): Promise<void>;
349
+ /**
350
+ * 属性の評価された値を取得します。
351
+ * 複数の評価値がある場合は結合して返します。
352
+ *
353
+ * @param name 属性名
354
+ * @returns 評価された値
355
+ */
356
+ getAttribute(name: string): string | false | unknown | null;
357
+ /**
358
+ * 属性の生の値を取得します。
359
+ *
360
+ * @param name 属性名
361
+ * @returns 生の属性値
362
+ */
363
+ getRawAttribute(name: string): string | null;
364
+ /**
365
+ * 属性名のリストを取得します。
366
+ *
367
+ * @return 属性名のリスト
368
+ */
369
+ getAttributeNames(): string[];
370
+ /**
371
+ * 属性の有無を確認します。
372
+ *
373
+ * @param name 属性名
374
+ * @returns 属性の有無
375
+ */
376
+ hasAttribute(name: string): boolean;
377
+ /**
378
+ * 子ノードを参照ノードの前に挿入します。
379
+ * 参照ノードがnullの場合、親の最後に追加されます。
380
+ *
381
+ * @param newChild 新しい子ノード
382
+ * @param referenceChild 参照ノード
383
+ * @return 挿入のPromise
384
+ */
385
+ insertBefore(newChild: Fragment, referenceChild: Fragment | null): Promise<void>;
386
+ /**
387
+ * 指定した参照ノードの後に子ノードを挿入します。
388
+ *
389
+ * @param newChild 子ノード
390
+ * @param referenceChild 参照ノード
391
+ * @returns 挿入のPromise
392
+ */
393
+ insertAfter(newChild: Fragment, referenceChild: Fragment | null): Promise<void>;
394
+ /**
395
+ * 前のエレメントフラグメントを取得します。
396
+ * 存在しない場合はnullを返します。
397
+ *
398
+ * @return 前のエレメントフラグメントまたはnull
399
+ */
400
+ getPrevious(): ElementFragment | null;
401
+ /**
402
+ * 次のエレメントフラグメントを取得します。
403
+ * 存在しない場合はnullを返します。
404
+ *
405
+ * @return 次のエレメントフラグメントまたはnull
406
+ */
407
+ getNext(): ElementFragment | null;
408
+ /**
409
+ * 表示状態を返します。
410
+ *
411
+ * @returns 表示状態
412
+ */
413
+ isVisible(): boolean;
414
+ /**
415
+ * エレメントを非表示にします。
416
+ *
417
+ * @returns エレメントの非表示のPromise
418
+ */
419
+ hide(): Promise<void>;
420
+ /**
421
+ * エレメントを表示します。
422
+ *
423
+ * @return エレメントの表示のPromise
424
+ */
425
+ show(): Promise<void>;
426
+ /**
427
+ * 指定した属性名を持つ最も近い親要素を返します。
428
+ * 見つからない場合はnullを返します。
429
+ *
430
+ * @param name 属性名
431
+ * @returns 最も近い親要素またはnull
432
+ */
433
+ closestByAttribute(name: string): ElementFragment | null;
434
+ }
435
+
436
+ /**
437
+ * @fileoverview Haori環境検出機能
438
+ *
439
+ * 実行環境を管理します。
440
+ */
441
+ /**
442
+ * 実行環境を管理するクラスです。
443
+ */
444
+ export declare class Env {
445
+ private static _prefix;
446
+ /**
447
+ * 実行環境からプレフィックスと開発モードかどうかを自動検出します。
448
+ * scriptタグにdata-prefixがある場合は、その値+"-"をプレフィックスとして使用します。
449
+ * scriptタグにdata-dev属性がある場合、
450
+ * もしくはローカルホスト系ドメインであれば開発モードを有効化します。
451
+ */
452
+ static detect(): void;
453
+ /**
454
+ * プレフィックスを取得します。
455
+ *
456
+ * @returns プレフィックス
457
+ */
458
+ static get prefix(): string;
459
+ }
460
+
461
+ /**
462
+ * Formクラスは、フォームの双方向バインディングを提供します。
463
+ * 入力要素の値をフォームにバインドし、フォームのバインド値を入力要素に反映します。
464
+ */
465
+ export declare class Form {
466
+ /**
467
+ * フォーム内にある入力エレメントの値をオブジェクトとして取得します。
468
+ * data-form-object属性があると、そのエレメント内の値はオブジェクトとして処理されます。
469
+ * 入力エレメントにdata-form-list属性があると、そのエレメントの値はリストとして処理されます。
470
+ * 入力エレメント以外にdata-form-list属性があると、そのエレメントの値はオブジェクトのリストとして処理されます。
471
+ *
472
+ * @param form フォームのElementFragment
473
+ */
474
+ static getValues(form: ElementFragment): Record<string, unknown>;
475
+ /**
476
+ * フォーム内の各入力エレメントから値を取得し、オブジェクトとして返します。
477
+ * 入力エレメントのname属性、data-form-object属性、data-form-list属性に基づいて値を整理します。
478
+ *
479
+ * @param fragment 対象のElementFragment
480
+ * @param values オブジェクトに追加する値のオブジェクト
481
+ * @returns values と同じオブジェクト
482
+ */
483
+ private static getPartValues;
484
+ /**
485
+ * フォーム内にある入力エレメントに値を設定します。
486
+ * フォームのdata-bind属性に値が反映されます。
487
+ *
488
+ * @param form フォームのElementFragment
489
+ * @param values フォームに設定する値のオブジェクト
490
+ * @param force data-form-detach属性があるエレメントにも値を反映するかどうか
491
+ * @returns Promise(DOMの更新が完了したら解決される)
492
+ */
493
+ static setValues(form: ElementFragment, values: Record<string, unknown>, force?: boolean): Promise<void>;
494
+ /**
495
+ * フラグメント内にある各入力エレメントに値を設定します。
496
+ *
497
+ * @param fragment 対象フラグメント
498
+ * @param values フラグメントに設定する値のオブジェクト
499
+ * @param index 配列の場合のインデックス
500
+ * @param force data-form-detach属性があるエレメントにも値を反映するかどうか
501
+ * @returns Promise(DOMの更新が完了したら解決される)
502
+ */
503
+ private static setPartValues;
504
+ /**
505
+ * 対象フラグメントとその子孫要素の値を初期化します。
506
+ * 値の初期化とメッセージのクリアを行います。
507
+ *
508
+ * @param fragment 対象フラグメント
509
+ * @returns すべての初期化処理が完了するPromise
510
+ */
511
+ static reset(fragment: ElementFragment): Promise<void>;
512
+ /**
513
+ * data-each によって生成された複製(テンプレート以外)を削除します。
514
+ * 既存のテンプレートは保持し、その後の再評価で必要に応じて再生成されます。
515
+ * 対象エレメント自体がdata-eachを持つ場合はその子の複製を削除しますが、
516
+ * 対象エレメント自体は削除しません。
517
+ */
518
+ private static clearEachClones;
519
+ /**
520
+ * 再帰的に値を初期化します。
521
+ *
522
+ * @param fragment 対象フラグメント
523
+ */
524
+ private static clearValues;
525
+ /**
526
+ * フラグメントとその子要素のメッセージをクリアします。
527
+ *
528
+ * @param fragment 対象フラグメント
529
+ * @returns Promise(メッセージのクリアが完了したら解決される)
530
+ */
531
+ static clearMessages(fragment: ElementFragment): Promise<void>;
532
+ /**
533
+ * キーに一致するフラグメントにエラーメッセージを追加します。
534
+ * キーに一致するフラグメントが見つからない場合は、指定されたフラグメントにメッセージを追加します。
535
+ *
536
+ * @param fragment 対象フラグメント
537
+ * @param key キー(ドット区切りの文字列)
538
+ * @param message 追加するエラーメッセージ]
539
+ * @return Promise(メッセージの追加が完了したら解決される)
540
+ */
541
+ static addErrorMessage(fragment: ElementFragment, key: string, message: string): Promise<void>;
542
+ /**
543
+ * 指定されたキーに一致するフラグメントを検索します。
544
+ *
545
+ * @param fragment 対象フラグメント
546
+ * @param key キー(ドット区切りの文字列)
547
+ * @returns 一致するフラグメントの配列
548
+ */
549
+ static findFragmentsByKey(fragment: ElementFragment, key: string): ElementFragment[];
550
+ /**
551
+ * 指定されたキーに一致するフラグメントを検索します。
552
+ * data-form-list属性で指定された場合はdata-row属性を持つ子要素の位置と添字が一致するものを対象とします。
553
+ *
554
+ * @param fragment 対象フラグメント
555
+ * @param parts キーのパーツ
556
+ * @returns 一致するフラグメントの配列
557
+ */
558
+ private static findFragmentByKeyParts;
559
+ /**
560
+ * 対象のフラグメントがフォームフラグメントであればそれを返し、
561
+ * そうでなければ先祖要素をたどってフォームフラグメントを探します。
562
+ *
563
+ * @param fragment
564
+ */
565
+ static getFormFragment(fragment: ElementFragment): ElementFragment | null;
566
+ }
567
+
568
+ /**
569
+ * 仮想DOMのフラグメントの抽象クラス。
570
+ */
571
+ export declare abstract class Fragment {
572
+ /** フラグメントの対象ノードに対するキャッシュ */
573
+ protected static readonly FRAGMENT_CACHE: WeakMap<Node, Fragment>;
574
+ /**
575
+ * フラグメントを取得もしくは作成します。
576
+ *
577
+ * @param node 対象ノード
578
+ * @returns フラグメント
579
+ */
580
+ static get(node: HTMLElement): ElementFragment;
581
+ static get(node: Text): TextFragment;
582
+ static get(node: Comment): CommentFragment;
583
+ static get(node: Node | null): Fragment | null;
584
+ /** 親フラグメント */
585
+ protected parent: ElementFragment | null;
586
+ /** 対象ノード */
587
+ protected readonly target: Node;
588
+ /** フラグメントがDOMにマウントされているかどうか */
589
+ protected mounted: boolean;
590
+ /** ノード更新スキップフラグ(オブザーバーによる無限ループ対応) */
591
+ protected skipMutationNodes: boolean;
592
+ /**
593
+ * フラグメントのコンストラクタ。
594
+ *
595
+ * @param target 対象ノード
596
+ */
597
+ protected constructor(target: Node);
598
+ /**
599
+ * skipMutationNodesフラグの値を取得します。
600
+ *
601
+ * @returns skipMutationNodesの値
602
+ */
603
+ isSkipMutationNodes(): boolean;
604
+ /**
605
+ * フラグメントをDOMから除去します。
606
+ *
607
+ * @return 除去のPromise
608
+ */
609
+ unmount(): Promise<void>;
610
+ /**
611
+ * フラグメントをDOMに追加します。
612
+ *
613
+ * @return 追加のPromise
614
+ */
615
+ mount(): Promise<void>;
616
+ /**
617
+ * フラグメントのマウント状態を取得します。
618
+ *
619
+ * @returns マウント状態
620
+ */
621
+ isMounted(): boolean;
622
+ /**
623
+ * フラグメントのマウント状態を設定します。
624
+ *
625
+ * @param mounted マウント状態
626
+ */
627
+ setMounted(mounted: boolean): void;
628
+ /**
629
+ * フラグメントをクローンします。
630
+ *
631
+ * @returns クローンされたフラグメント
632
+ */
633
+ abstract clone(): Fragment;
634
+ /**
635
+ * フラグメントとノードを削除します。
636
+ *
637
+ * @param unmount DOMからの除去を行うかどうか(内部の子呼び出しの場合のみfalseとする)
638
+ * @return 除去のPromise
639
+ */
640
+ remove(unmount?: boolean): Promise<void>;
641
+ /**
642
+ * 対象ノードを取得します。
643
+ *
644
+ * @returns 対象ノード
645
+ */
646
+ getTarget(): Node;
647
+ /**
648
+ * 親フラグメントを取得します。
649
+ *
650
+ * @returns 親フラグメント
651
+ */
652
+ getParent(): ElementFragment | null;
653
+ /**
654
+ * 親フラグメントを設定します。
655
+ *
656
+ * @param parent 親フラグメント
657
+ */
658
+ setParent(parent: ElementFragment | null): void;
659
+ }
660
+
661
+ /**
662
+ * Haoriクラスは、アプリケーション全体で使用されるユーティリティメソッドを提供します。
663
+ * 挙動を変更する場合は必要に応じてオーバライドしてください。
664
+ */
665
+ declare class Haori {
666
+ /**
667
+ * 通知ダイアログを表示します。
668
+ *
669
+ * @param message 表示メッセージ
670
+ * @returns 通知が閉じられると解決されるPromise
671
+ */
672
+ static dialog(message: string): Promise<void>;
673
+ /**
674
+ * 通知トーストを表示します。
675
+ *
676
+ * @param message 表示メッセージ
677
+ * @param level メッセージのレベル('info' | 'warning' | 'error')
678
+ * @return 通知が表示されると解決されるPromise
679
+ */
680
+ static toast(message: string, level: 'info' | 'warning' | 'error'): Promise<void>;
681
+ /**
682
+ * 確認ダイアログを表示します。
683
+ *
684
+ * @param message 確認メッセージ
685
+ * @returns ユーザーがOKをクリックした場合はtrue、キャンセルした場合はfalseが解決されるPromise
686
+ */
687
+ static confirm(message: string): Promise<boolean>;
688
+ /**
689
+ * ダイアログを開きます。
690
+ *
691
+ * @param element 開くダイアログのHTML要素
692
+ */
693
+ static openDialog(element: HTMLElement): Promise<void>;
694
+ /**
695
+ * ダイアログを閉じます。
696
+ *
697
+ * @param element 閉じるダイアログのHTML要素
698
+ */
699
+ static closeDialog(element: HTMLElement): Promise<void>;
700
+ /**
701
+ * エラーメッセージを追加します。
702
+ *
703
+ * @param target メッセージを表示する要素
704
+ * @param message エラーメッセージ
705
+ */
706
+ static addErrorMessage(target: HTMLElement | HTMLFormElement, message: string): Promise<void>;
707
+ /**
708
+ * 対象のエレメントおよびその子要素のメッセージをクリアします。
709
+ *
710
+ * @param parent メッセージをクリアする親要素
711
+ */
712
+ static clearMessages(parent: HTMLElement): Promise<void>;
713
+ }
714
+ export { Haori }
715
+ export default Haori;
716
+
717
+ /**
718
+ * @fileoverview Haori共通ログ機能
719
+ *
720
+ * 開発モード時のみログ出力を行います。
721
+ */
722
+ /**
723
+ * ログ出力を管理するクラス
724
+ */
725
+ export declare class Log {
726
+ /**
727
+ * 開発モードでのみコンソールに情報を出力します。
728
+ *
729
+ * @param message 出力するメッセージ
730
+ * @param args 追加の引数
731
+ */
732
+ static info(message: string, ...args: unknown[]): void;
733
+ /**
734
+ * 開発モードでのみコンソールに警告を出力します。
735
+ *
736
+ * @param message 出力するメッセージ
737
+ * @param args 追加の引数
738
+ */
739
+ static warn(message: string, ...args: unknown[]): void;
740
+ /**
741
+ * モードに関係なくコンソールにエラーを出力します。
742
+ *
743
+ * @param message 出力するメッセージ
744
+ * @param args 追加の引数
745
+ */
746
+ static error(message: string, ...args: unknown[]): void;
747
+ }
748
+
749
+ /**
750
+ * @fileoverview 汎用非同期キュー機能
751
+ *
752
+ * 任意の処理を非同期でキューイングし、requestAnimationFrameを使用して順次実行します。
753
+ * 各処理はPromiseを返し、完了時の処理を記述できます。
754
+ * DOM操作などの非同期処理に適しています。
755
+ */
756
+ /**
757
+ * 非同期キューのデフォルトインスタンス。
758
+ * このインスタンスを使用して、アプリケーション全体でタスクをキューイングできます。
759
+ */
760
+ export declare class Queue {
761
+ /** 非同期キューインスタンス */
762
+ private static readonly ASYNC_QUEUE;
763
+ /**
764
+ * タスクをキューに追加します。
765
+ *
766
+ * @param task 実行する処理
767
+ * @param prepend trueの場合はキューの先頭に追加、falseの場合は末尾に追加
768
+ * @returns 処理完了Promise
769
+ */
770
+ static enqueue(task: () => unknown, prepend?: boolean): Promise<unknown>;
771
+ /**
772
+ * 全てのキュー処理が完了するまで待機します。
773
+ */
774
+ static wait(): Promise<void>;
775
+ }
776
+
777
+ /**
778
+ * テキストフラグメント。
779
+ * テキストノードを表現します。
780
+ */
781
+ declare class TextFragment extends Fragment {
782
+ /** 未評価のテキスト文字列 */
783
+ private text;
784
+ /** コンテンツ */
785
+ private contents;
786
+ /** 更新スキップフラグ(オブザーバーによる無限ループ対応) */
787
+ private skipMutation;
788
+ /**
789
+ * テキストフラグメントのコンストラクタ。
790
+ * 対象テキストノードの内容を初期化します。
791
+ *
792
+ * @param target 対象テキストノード
793
+ */
794
+ constructor(target: Text);
795
+ /**
796
+ * フラグメントをクローンします。
797
+ *
798
+ * @returns クローンされたフラグメント
799
+ */
800
+ clone(): TextFragment;
801
+ /**
802
+ * フラグメントの対象ノードを取得します。
803
+ *
804
+ * @returns フラグメントの対象ノード
805
+ */
806
+ getTarget(): Text;
807
+ /**
808
+ * コンテンツを更新します。
809
+ *
810
+ * @param text テキスト
811
+ * @returns 更新のPromise
812
+ */
813
+ setContent(text: string): Promise<void>;
814
+ /**
815
+ * フラグメントを評価します。
816
+ *
817
+ * @returns 評価結果のPromise
818
+ */
819
+ evaluate(): Promise<void>;
820
+ }
821
+
822
+ export declare const version = "0.1.0";
823
+
824
+ export { }