haori 0.6.0 → 0.6.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/README.ja.md +3 -1
- package/README.md +3 -1
- package/dist/haori.cjs.js +13 -13
- package/dist/haori.cjs.js.map +1 -1
- package/dist/haori.es.js +2603 -1778
- package/dist/haori.es.js.map +1 -1
- package/dist/haori.iife.js +13 -13
- package/dist/haori.iife.js.map +1 -1
- package/dist/index.d.ts +242 -1
- package/dist/package.json +1 -1
- package/dist/src/core.d.ts +158 -1
- package/dist/src/core.d.ts.map +1 -1
- package/dist/src/core.js +647 -79
- package/dist/src/core.js.map +1 -1
- package/dist/src/event.d.ts +2 -2
- package/dist/src/event.js +2 -2
- package/dist/src/event_dispatcher.d.ts.map +1 -1
- package/dist/src/event_dispatcher.js.map +1 -1
- package/dist/src/expression.d.ts +49 -3
- package/dist/src/expression.d.ts.map +1 -1
- package/dist/src/expression.js +148 -33
- package/dist/src/expression.js.map +1 -1
- package/dist/src/form.d.ts.map +1 -1
- package/dist/src/form.js +2 -1
- package/dist/src/form.js.map +1 -1
- package/dist/src/fragment.d.ts +84 -0
- package/dist/src/fragment.d.ts.map +1 -1
- package/dist/src/fragment.js +490 -75
- package/dist/src/fragment.js.map +1 -1
- package/dist/src/observer.d.ts.map +1 -1
- package/dist/src/observer.js +0 -7
- package/dist/src/observer.js.map +1 -1
- package/dist/src/procedure.d.ts.map +1 -1
- package/dist/src/procedure.js +1 -3
- package/dist/src/procedure.js.map +1 -1
- package/dist/tests/core.test.js +288 -4
- package/dist/tests/core.test.js.map +1 -1
- package/dist/tests/data-derive.test.js +159 -0
- package/dist/tests/data-derive.test.js.map +1 -1
- package/dist/tests/evaluation-profile.test.d.ts +2 -0
- package/dist/tests/evaluation-profile.test.d.ts.map +1 -0
- package/dist/tests/evaluation-profile.test.js +92 -0
- package/dist/tests/evaluation-profile.test.js.map +1 -0
- package/dist/tests/expression.test.js +35 -1
- package/dist/tests/expression.test.js.map +1 -1
- package/dist/tests/fragment.test.js +31 -0
- package/dist/tests/fragment.test.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -64,6 +64,8 @@ export declare class Core {
|
|
|
64
64
|
private static readonly REACTIVE_FETCH_STATES;
|
|
65
65
|
/** data-import の自動再評価状態 */
|
|
66
66
|
private static readonly REACTIVE_IMPORT_STATES;
|
|
67
|
+
/** data-derive subtree skip の開発用プロファイル */
|
|
68
|
+
private static readonly DERIVE_SUBTREE_PROFILES;
|
|
67
69
|
/**
|
|
68
70
|
* 遅延属性かどうか(完全名で判定)を判定します。
|
|
69
71
|
*
|
|
@@ -159,6 +161,43 @@ export declare class Core {
|
|
|
159
161
|
* @returns Promise (スキャンが完了したときに解決される)
|
|
160
162
|
*/
|
|
161
163
|
static scan(element: HTMLElement): Promise<void>;
|
|
164
|
+
/**
|
|
165
|
+
* 新規 each 行を局所初期化します。
|
|
166
|
+
* 既存 scan の属性順序を保ちつつ、Fragment 木を直接たどります。
|
|
167
|
+
*
|
|
168
|
+
* @param fragment 新規挿入された行フラグメント
|
|
169
|
+
* @returns 初期化完了の Promise
|
|
170
|
+
*/
|
|
171
|
+
private static initializeFreshEachRow;
|
|
172
|
+
/**
|
|
173
|
+
* ElementFragment とその子孫を初期化します。
|
|
174
|
+
*
|
|
175
|
+
* @param fragment 対象フラグメント
|
|
176
|
+
* @param stopAtEach true の場合、data-each 要素では通常再帰を止める
|
|
177
|
+
* @returns 初期化完了の Promise
|
|
178
|
+
*/
|
|
179
|
+
private static initializeElementFragment;
|
|
180
|
+
/**
|
|
181
|
+
* 要素初期化時の mounted 状態を同期します。
|
|
182
|
+
*
|
|
183
|
+
* @param fragment 対象フラグメント
|
|
184
|
+
*/
|
|
185
|
+
private static syncMountedState;
|
|
186
|
+
/**
|
|
187
|
+
* scan と fresh clone 初期化で共有する属性初期化を行います。
|
|
188
|
+
*
|
|
189
|
+
* @param fragment 対象フラグメント
|
|
190
|
+
* @returns 属性初期化完了の Promise
|
|
191
|
+
*/
|
|
192
|
+
private static initializeElementAttributes;
|
|
193
|
+
/**
|
|
194
|
+
* 子孫初期化をスキップすべきかどうかを返します。
|
|
195
|
+
*
|
|
196
|
+
* @param fragment 対象フラグメント
|
|
197
|
+
* @param stopAtEach true の場合、data-each 要素で通常再帰を止める
|
|
198
|
+
* @returns 子孫初期化をスキップするなら true
|
|
199
|
+
*/
|
|
200
|
+
private static shouldSkipChildInitialization;
|
|
162
201
|
/**
|
|
163
202
|
* エレメントに属性を設定します。
|
|
164
203
|
* 属性固有の処理も行います。
|
|
@@ -236,7 +275,7 @@ export declare class Core {
|
|
|
236
275
|
* @param deriveName 上書きする導出名
|
|
237
276
|
* @returns Promise (評価完了時に解決)
|
|
238
277
|
*/
|
|
239
|
-
static evaluateDerive(fragment: ElementFragment, deriveExpression?: string | null, deriveName?: string | null): Promise<
|
|
278
|
+
static evaluateDerive(fragment: ElementFragment, deriveExpression?: string | null, deriveName?: string | null): Promise<boolean>;
|
|
240
279
|
/**
|
|
241
280
|
* テキストフラグメントを評価します。
|
|
242
281
|
*
|
|
@@ -266,6 +305,101 @@ export declare class Core {
|
|
|
266
305
|
* @returns 配列。無効な場合は null
|
|
267
306
|
*/
|
|
268
307
|
private static resolveEachItems;
|
|
308
|
+
/**
|
|
309
|
+
* nested data-each の入力が同値で、要素自身に他の動的要素が無い場合は
|
|
310
|
+
* evaluateAll の子走査を省略できるかどうかを返します。
|
|
311
|
+
*
|
|
312
|
+
* @param fragment 判定対象フラグメント
|
|
313
|
+
* @returns 省略可能なら true
|
|
314
|
+
*/
|
|
315
|
+
private static canSkipUnchangedNestedEach;
|
|
316
|
+
/**
|
|
317
|
+
* data-derive subtree の入力が同値で、保守条件も満たす場合に
|
|
318
|
+
* 子走査を省略できるかどうかを返します。
|
|
319
|
+
*
|
|
320
|
+
* @param fragment 判定対象フラグメント
|
|
321
|
+
* @returns 省略可能なら true
|
|
322
|
+
*/
|
|
323
|
+
private static canSkipStableDerivedSubtree;
|
|
324
|
+
/**
|
|
325
|
+
* data-derive subtree skip の初期 PoC で扱わない子孫要素を含むかを返します。
|
|
326
|
+
*
|
|
327
|
+
* @param fragment 判定対象フラグメント
|
|
328
|
+
* @returns 含むなら true
|
|
329
|
+
*/
|
|
330
|
+
private static hasDisallowedDerivedSubtreeDescendant;
|
|
331
|
+
/**
|
|
332
|
+
* data-derive host が子孫要素へ公開している binding の署名を返します。
|
|
333
|
+
*
|
|
334
|
+
* @param fragment 対象フラグメント
|
|
335
|
+
* @returns binding 署名
|
|
336
|
+
*/
|
|
337
|
+
private static createDescendantBindingSignature;
|
|
338
|
+
/**
|
|
339
|
+
* data-derive 実行前の入力署名を返します。
|
|
340
|
+
*
|
|
341
|
+
* @param fragment 対象フラグメント
|
|
342
|
+
* @param deriveExpression 導出式
|
|
343
|
+
* @param deriveName 導出名
|
|
344
|
+
* @returns 入力署名。導出が無効なら null
|
|
345
|
+
*/
|
|
346
|
+
private static createDeriveInputSignature;
|
|
347
|
+
/**
|
|
348
|
+
* data-derive subtree skip 用の署名を現在状態で更新します。
|
|
349
|
+
*
|
|
350
|
+
* @param fragment 対象フラグメント
|
|
351
|
+
*/
|
|
352
|
+
private static refreshDerivedSubtreeSignature;
|
|
353
|
+
/**
|
|
354
|
+
* data-derive subtree skip のプロファイルを取得または初期化します。
|
|
355
|
+
*
|
|
356
|
+
* @param fragment 対象フラグメント
|
|
357
|
+
* @returns プロファイル
|
|
358
|
+
*/
|
|
359
|
+
private static getOrCreateDerivedSubtreeProfile;
|
|
360
|
+
/**
|
|
361
|
+
* data-derive subtree host の識別子を作成します。
|
|
362
|
+
*
|
|
363
|
+
* @param fragment 対象フラグメント
|
|
364
|
+
* @returns host 識別子
|
|
365
|
+
*/
|
|
366
|
+
private static createDerivedSubtreeHostId;
|
|
367
|
+
/**
|
|
368
|
+
* data-derive subtree の署名計算回数を記録します。
|
|
369
|
+
*
|
|
370
|
+
* @param fragment 対象フラグメント
|
|
371
|
+
* @param source 計算元
|
|
372
|
+
*/
|
|
373
|
+
private static recordDerivedSubtreeSignatureComputation;
|
|
374
|
+
/**
|
|
375
|
+
* data-derive subtree の現在プロファイルをログ出力します。
|
|
376
|
+
*
|
|
377
|
+
* @param fragment 対象フラグメント
|
|
378
|
+
* @param reason ログ理由
|
|
379
|
+
*/
|
|
380
|
+
private static logDerivedSubtreeProfileSnapshot;
|
|
381
|
+
/**
|
|
382
|
+
* data-each 以外の動的要素状態を持つかどうかを返します。
|
|
383
|
+
*
|
|
384
|
+
* @param fragment 判定対象フラグメント
|
|
385
|
+
* @returns 該当するなら true
|
|
386
|
+
*/
|
|
387
|
+
private static hasNonEachDynamicElementState;
|
|
388
|
+
/**
|
|
389
|
+
* fresh clone 初期化を subtree ごと省略できるかどうかを事前計算します。
|
|
390
|
+
*
|
|
391
|
+
* @param fragment 判定対象フラグメント
|
|
392
|
+
* @returns subtree 全体を省略可能なら true
|
|
393
|
+
*/
|
|
394
|
+
private static markFreshInitializationSkippable;
|
|
395
|
+
/**
|
|
396
|
+
* fresh clone 初期化で再評価が必要な属性かどうかを返します。
|
|
397
|
+
*
|
|
398
|
+
* @param fragment 判定対象フラグメント
|
|
399
|
+
* @param name 属性名
|
|
400
|
+
* @returns 再評価が必要なら true
|
|
401
|
+
*/
|
|
402
|
+
private static isFreshInitializationDynamicAttribute;
|
|
269
403
|
/**
|
|
270
404
|
* 差分を更新します。
|
|
271
405
|
*
|
|
@@ -294,6 +428,29 @@ export declare class Core {
|
|
|
294
428
|
* @returns 行メタデータの更新完了 Promise
|
|
295
429
|
*/
|
|
296
430
|
private static updateRowFragment;
|
|
431
|
+
/**
|
|
432
|
+
* 新規挿入行に遅延再評価が必要かどうかを判定します。
|
|
433
|
+
*
|
|
434
|
+
* @param fragment 判定対象の行フラグメント
|
|
435
|
+
* @returns 遅延再評価が必要なら true
|
|
436
|
+
*/
|
|
437
|
+
private static needsScheduledEvaluateAll;
|
|
438
|
+
/**
|
|
439
|
+
* mounted 状態に依存して再評価が必要になりやすい属性を持つかどうかを返します。
|
|
440
|
+
*
|
|
441
|
+
* @param fragment 判定対象フラグメント
|
|
442
|
+
* @returns 該当属性を持つなら true
|
|
443
|
+
*/
|
|
444
|
+
private static hasMountSensitiveAttribute;
|
|
445
|
+
/**
|
|
446
|
+
* バインド値が同一かどうかを再帰的に判定します。
|
|
447
|
+
*
|
|
448
|
+
* @param left 比較元の値
|
|
449
|
+
* @param right 比較先の値
|
|
450
|
+
* @param visited 循環参照対策用の訪問済みペア
|
|
451
|
+
* @returns 同一なら true
|
|
452
|
+
*/
|
|
453
|
+
private static createBindingSignature;
|
|
297
454
|
/**
|
|
298
455
|
* フラグメントの再評価を次のイベントループで実行します。
|
|
299
456
|
*
|
|
@@ -333,6 +490,16 @@ declare class ElementFragment extends Fragment {
|
|
|
333
490
|
private template;
|
|
334
491
|
/** each比較用のキー */
|
|
335
492
|
private listKey;
|
|
493
|
+
/** 直近に描画した each 行の入力署名 */
|
|
494
|
+
private renderSignature;
|
|
495
|
+
/** 直近に描画した data-each 全体の入力署名 */
|
|
496
|
+
private eachInputSignature;
|
|
497
|
+
/** 直近に公開した data-derive subtree の入力署名 */
|
|
498
|
+
private deriveSubtreeSignature;
|
|
499
|
+
/** 直近に評価した data-derive の入力署名 */
|
|
500
|
+
private deriveInputSignature;
|
|
501
|
+
/** fresh clone 初期化を subtree ごと省略できるかどうか */
|
|
502
|
+
private freshInitializationSkippable;
|
|
336
503
|
/** valueプロパティの値 */
|
|
337
504
|
private value;
|
|
338
505
|
/** 属性更新スキップフラグ(オブザーバーによる無限ループ対応) */
|
|
@@ -413,6 +580,12 @@ declare class ElementFragment extends Fragment {
|
|
|
413
580
|
* @returns 生のバインドデータ
|
|
414
581
|
*/
|
|
415
582
|
getRawBindingData(): Record<string, unknown> | null;
|
|
583
|
+
/**
|
|
584
|
+
* 生の派生バインドデータを取得します。
|
|
585
|
+
*
|
|
586
|
+
* @returns 生の派生バインドデータ
|
|
587
|
+
*/
|
|
588
|
+
getRawDerivedBindingData(): Record<string, unknown> | null;
|
|
416
589
|
/**
|
|
417
590
|
* バインドデータを設定します。
|
|
418
591
|
*
|
|
@@ -459,6 +632,66 @@ declare class ElementFragment extends Fragment {
|
|
|
459
632
|
* @returns 比較用リストキー
|
|
460
633
|
*/
|
|
461
634
|
getListKey(): string | null;
|
|
635
|
+
/**
|
|
636
|
+
* 直近に描画した each 行の入力署名を取得します。
|
|
637
|
+
*
|
|
638
|
+
* @returns 入力署名
|
|
639
|
+
*/
|
|
640
|
+
getRenderSignature(): string | null;
|
|
641
|
+
/**
|
|
642
|
+
* 直近に描画した each 行の入力署名を設定します。
|
|
643
|
+
*
|
|
644
|
+
* @param signature 入力署名
|
|
645
|
+
*/
|
|
646
|
+
setRenderSignature(signature: string | null): void;
|
|
647
|
+
/**
|
|
648
|
+
* 直近に描画した data-each 全体の入力署名を取得します。
|
|
649
|
+
*
|
|
650
|
+
* @returns 入力署名
|
|
651
|
+
*/
|
|
652
|
+
getEachInputSignature(): string | null;
|
|
653
|
+
/**
|
|
654
|
+
* 直近に描画した data-each 全体の入力署名を設定します。
|
|
655
|
+
*
|
|
656
|
+
* @param signature 入力署名
|
|
657
|
+
*/
|
|
658
|
+
setEachInputSignature(signature: string | null): void;
|
|
659
|
+
/**
|
|
660
|
+
* 直近に公開した data-derive subtree の入力署名を取得します。
|
|
661
|
+
*
|
|
662
|
+
* @returns 入力署名
|
|
663
|
+
*/
|
|
664
|
+
getDeriveSubtreeSignature(): string | null;
|
|
665
|
+
/**
|
|
666
|
+
* 直近に公開した data-derive subtree の入力署名を設定します。
|
|
667
|
+
*
|
|
668
|
+
* @param signature 入力署名
|
|
669
|
+
*/
|
|
670
|
+
setDeriveSubtreeSignature(signature: string | null): void;
|
|
671
|
+
/**
|
|
672
|
+
* 直近に評価した data-derive の入力署名を取得します。
|
|
673
|
+
*
|
|
674
|
+
* @returns 入力署名
|
|
675
|
+
*/
|
|
676
|
+
getDeriveInputSignature(): string | null;
|
|
677
|
+
/**
|
|
678
|
+
* 直近に評価した data-derive の入力署名を設定します。
|
|
679
|
+
*
|
|
680
|
+
* @param signature 入力署名
|
|
681
|
+
*/
|
|
682
|
+
setDeriveInputSignature(signature: string | null): void;
|
|
683
|
+
/**
|
|
684
|
+
* fresh clone 初期化を subtree ごと省略できるかどうかを返します。
|
|
685
|
+
*
|
|
686
|
+
* @returns 省略可能なら true
|
|
687
|
+
*/
|
|
688
|
+
isFreshInitializationSkippable(): boolean;
|
|
689
|
+
/**
|
|
690
|
+
* fresh clone 初期化を subtree ごと省略できるかどうかを設定します。
|
|
691
|
+
*
|
|
692
|
+
* @param skippable 省略可能なら true
|
|
693
|
+
*/
|
|
694
|
+
setFreshInitializationSkippable(skippable: boolean): void;
|
|
462
695
|
/**
|
|
463
696
|
* 入力エレメントに値を設定します。
|
|
464
697
|
* チェックボックとラジオボタンの場合は値に一致するかどうかでチェック状態を変更します。
|
|
@@ -1068,6 +1301,8 @@ declare class TextFragment extends Fragment {
|
|
|
1068
1301
|
private contents;
|
|
1069
1302
|
/** 更新スキップフラグ(オブザーバーによる無限ループ対応) */
|
|
1070
1303
|
private skipMutation;
|
|
1304
|
+
/** 直近に描画した文字列 */
|
|
1305
|
+
private renderedText;
|
|
1071
1306
|
/**
|
|
1072
1307
|
* テキストフラグメントのコンストラクタ。
|
|
1073
1308
|
* 対象テキストノードの内容を初期化します。
|
|
@@ -1087,6 +1322,12 @@ declare class TextFragment extends Fragment {
|
|
|
1087
1322
|
* @returns フラグメントの対象ノード
|
|
1088
1323
|
*/
|
|
1089
1324
|
getTarget(): Text;
|
|
1325
|
+
/**
|
|
1326
|
+
* テキストに評価式が含まれているかどうかを返します。
|
|
1327
|
+
*
|
|
1328
|
+
* @returns 評価式を含むなら true
|
|
1329
|
+
*/
|
|
1330
|
+
hasDynamicContent(): boolean;
|
|
1090
1331
|
/**
|
|
1091
1332
|
* コンテンツを更新します。
|
|
1092
1333
|
*
|
package/dist/package.json
CHANGED
package/dist/src/core.d.ts
CHANGED
|
@@ -18,6 +18,8 @@ export default class Core {
|
|
|
18
18
|
private static readonly REACTIVE_FETCH_STATES;
|
|
19
19
|
/** data-import の自動再評価状態 */
|
|
20
20
|
private static readonly REACTIVE_IMPORT_STATES;
|
|
21
|
+
/** data-derive subtree skip の開発用プロファイル */
|
|
22
|
+
private static readonly DERIVE_SUBTREE_PROFILES;
|
|
21
23
|
/**
|
|
22
24
|
* 遅延属性かどうか(完全名で判定)を判定します。
|
|
23
25
|
*
|
|
@@ -113,6 +115,43 @@ export default class Core {
|
|
|
113
115
|
* @returns Promise (スキャンが完了したときに解決される)
|
|
114
116
|
*/
|
|
115
117
|
static scan(element: HTMLElement): Promise<void>;
|
|
118
|
+
/**
|
|
119
|
+
* 新規 each 行を局所初期化します。
|
|
120
|
+
* 既存 scan の属性順序を保ちつつ、Fragment 木を直接たどります。
|
|
121
|
+
*
|
|
122
|
+
* @param fragment 新規挿入された行フラグメント
|
|
123
|
+
* @returns 初期化完了の Promise
|
|
124
|
+
*/
|
|
125
|
+
private static initializeFreshEachRow;
|
|
126
|
+
/**
|
|
127
|
+
* ElementFragment とその子孫を初期化します。
|
|
128
|
+
*
|
|
129
|
+
* @param fragment 対象フラグメント
|
|
130
|
+
* @param stopAtEach true の場合、data-each 要素では通常再帰を止める
|
|
131
|
+
* @returns 初期化完了の Promise
|
|
132
|
+
*/
|
|
133
|
+
private static initializeElementFragment;
|
|
134
|
+
/**
|
|
135
|
+
* 要素初期化時の mounted 状態を同期します。
|
|
136
|
+
*
|
|
137
|
+
* @param fragment 対象フラグメント
|
|
138
|
+
*/
|
|
139
|
+
private static syncMountedState;
|
|
140
|
+
/**
|
|
141
|
+
* scan と fresh clone 初期化で共有する属性初期化を行います。
|
|
142
|
+
*
|
|
143
|
+
* @param fragment 対象フラグメント
|
|
144
|
+
* @returns 属性初期化完了の Promise
|
|
145
|
+
*/
|
|
146
|
+
private static initializeElementAttributes;
|
|
147
|
+
/**
|
|
148
|
+
* 子孫初期化をスキップすべきかどうかを返します。
|
|
149
|
+
*
|
|
150
|
+
* @param fragment 対象フラグメント
|
|
151
|
+
* @param stopAtEach true の場合、data-each 要素で通常再帰を止める
|
|
152
|
+
* @returns 子孫初期化をスキップするなら true
|
|
153
|
+
*/
|
|
154
|
+
private static shouldSkipChildInitialization;
|
|
116
155
|
/**
|
|
117
156
|
* エレメントに属性を設定します。
|
|
118
157
|
* 属性固有の処理も行います。
|
|
@@ -190,7 +229,7 @@ export default class Core {
|
|
|
190
229
|
* @param deriveName 上書きする導出名
|
|
191
230
|
* @returns Promise (評価完了時に解決)
|
|
192
231
|
*/
|
|
193
|
-
static evaluateDerive(fragment: ElementFragment, deriveExpression?: string | null, deriveName?: string | null): Promise<
|
|
232
|
+
static evaluateDerive(fragment: ElementFragment, deriveExpression?: string | null, deriveName?: string | null): Promise<boolean>;
|
|
194
233
|
/**
|
|
195
234
|
* テキストフラグメントを評価します。
|
|
196
235
|
*
|
|
@@ -220,6 +259,101 @@ export default class Core {
|
|
|
220
259
|
* @returns 配列。無効な場合は null
|
|
221
260
|
*/
|
|
222
261
|
private static resolveEachItems;
|
|
262
|
+
/**
|
|
263
|
+
* nested data-each の入力が同値で、要素自身に他の動的要素が無い場合は
|
|
264
|
+
* evaluateAll の子走査を省略できるかどうかを返します。
|
|
265
|
+
*
|
|
266
|
+
* @param fragment 判定対象フラグメント
|
|
267
|
+
* @returns 省略可能なら true
|
|
268
|
+
*/
|
|
269
|
+
private static canSkipUnchangedNestedEach;
|
|
270
|
+
/**
|
|
271
|
+
* data-derive subtree の入力が同値で、保守条件も満たす場合に
|
|
272
|
+
* 子走査を省略できるかどうかを返します。
|
|
273
|
+
*
|
|
274
|
+
* @param fragment 判定対象フラグメント
|
|
275
|
+
* @returns 省略可能なら true
|
|
276
|
+
*/
|
|
277
|
+
private static canSkipStableDerivedSubtree;
|
|
278
|
+
/**
|
|
279
|
+
* data-derive subtree skip の初期 PoC で扱わない子孫要素を含むかを返します。
|
|
280
|
+
*
|
|
281
|
+
* @param fragment 判定対象フラグメント
|
|
282
|
+
* @returns 含むなら true
|
|
283
|
+
*/
|
|
284
|
+
private static hasDisallowedDerivedSubtreeDescendant;
|
|
285
|
+
/**
|
|
286
|
+
* data-derive host が子孫要素へ公開している binding の署名を返します。
|
|
287
|
+
*
|
|
288
|
+
* @param fragment 対象フラグメント
|
|
289
|
+
* @returns binding 署名
|
|
290
|
+
*/
|
|
291
|
+
private static createDescendantBindingSignature;
|
|
292
|
+
/**
|
|
293
|
+
* data-derive 実行前の入力署名を返します。
|
|
294
|
+
*
|
|
295
|
+
* @param fragment 対象フラグメント
|
|
296
|
+
* @param deriveExpression 導出式
|
|
297
|
+
* @param deriveName 導出名
|
|
298
|
+
* @returns 入力署名。導出が無効なら null
|
|
299
|
+
*/
|
|
300
|
+
private static createDeriveInputSignature;
|
|
301
|
+
/**
|
|
302
|
+
* data-derive subtree skip 用の署名を現在状態で更新します。
|
|
303
|
+
*
|
|
304
|
+
* @param fragment 対象フラグメント
|
|
305
|
+
*/
|
|
306
|
+
private static refreshDerivedSubtreeSignature;
|
|
307
|
+
/**
|
|
308
|
+
* data-derive subtree skip のプロファイルを取得または初期化します。
|
|
309
|
+
*
|
|
310
|
+
* @param fragment 対象フラグメント
|
|
311
|
+
* @returns プロファイル
|
|
312
|
+
*/
|
|
313
|
+
private static getOrCreateDerivedSubtreeProfile;
|
|
314
|
+
/**
|
|
315
|
+
* data-derive subtree host の識別子を作成します。
|
|
316
|
+
*
|
|
317
|
+
* @param fragment 対象フラグメント
|
|
318
|
+
* @returns host 識別子
|
|
319
|
+
*/
|
|
320
|
+
private static createDerivedSubtreeHostId;
|
|
321
|
+
/**
|
|
322
|
+
* data-derive subtree の署名計算回数を記録します。
|
|
323
|
+
*
|
|
324
|
+
* @param fragment 対象フラグメント
|
|
325
|
+
* @param source 計算元
|
|
326
|
+
*/
|
|
327
|
+
private static recordDerivedSubtreeSignatureComputation;
|
|
328
|
+
/**
|
|
329
|
+
* data-derive subtree の現在プロファイルをログ出力します。
|
|
330
|
+
*
|
|
331
|
+
* @param fragment 対象フラグメント
|
|
332
|
+
* @param reason ログ理由
|
|
333
|
+
*/
|
|
334
|
+
private static logDerivedSubtreeProfileSnapshot;
|
|
335
|
+
/**
|
|
336
|
+
* data-each 以外の動的要素状態を持つかどうかを返します。
|
|
337
|
+
*
|
|
338
|
+
* @param fragment 判定対象フラグメント
|
|
339
|
+
* @returns 該当するなら true
|
|
340
|
+
*/
|
|
341
|
+
private static hasNonEachDynamicElementState;
|
|
342
|
+
/**
|
|
343
|
+
* fresh clone 初期化を subtree ごと省略できるかどうかを事前計算します。
|
|
344
|
+
*
|
|
345
|
+
* @param fragment 判定対象フラグメント
|
|
346
|
+
* @returns subtree 全体を省略可能なら true
|
|
347
|
+
*/
|
|
348
|
+
private static markFreshInitializationSkippable;
|
|
349
|
+
/**
|
|
350
|
+
* fresh clone 初期化で再評価が必要な属性かどうかを返します。
|
|
351
|
+
*
|
|
352
|
+
* @param fragment 判定対象フラグメント
|
|
353
|
+
* @param name 属性名
|
|
354
|
+
* @returns 再評価が必要なら true
|
|
355
|
+
*/
|
|
356
|
+
private static isFreshInitializationDynamicAttribute;
|
|
223
357
|
/**
|
|
224
358
|
* 差分を更新します。
|
|
225
359
|
*
|
|
@@ -248,6 +382,29 @@ export default class Core {
|
|
|
248
382
|
* @returns 行メタデータの更新完了 Promise
|
|
249
383
|
*/
|
|
250
384
|
private static updateRowFragment;
|
|
385
|
+
/**
|
|
386
|
+
* 新規挿入行に遅延再評価が必要かどうかを判定します。
|
|
387
|
+
*
|
|
388
|
+
* @param fragment 判定対象の行フラグメント
|
|
389
|
+
* @returns 遅延再評価が必要なら true
|
|
390
|
+
*/
|
|
391
|
+
private static needsScheduledEvaluateAll;
|
|
392
|
+
/**
|
|
393
|
+
* mounted 状態に依存して再評価が必要になりやすい属性を持つかどうかを返します。
|
|
394
|
+
*
|
|
395
|
+
* @param fragment 判定対象フラグメント
|
|
396
|
+
* @returns 該当属性を持つなら true
|
|
397
|
+
*/
|
|
398
|
+
private static hasMountSensitiveAttribute;
|
|
399
|
+
/**
|
|
400
|
+
* バインド値が同一かどうかを再帰的に判定します。
|
|
401
|
+
*
|
|
402
|
+
* @param left 比較元の値
|
|
403
|
+
* @param right 比較先の値
|
|
404
|
+
* @param visited 循環参照対策用の訪問済みペア
|
|
405
|
+
* @returns 同一なら true
|
|
406
|
+
*/
|
|
407
|
+
private static createBindingSignature;
|
|
251
408
|
/**
|
|
252
409
|
* フラグメントの再評価を次のイベントループで実行します。
|
|
253
410
|
*
|
package/dist/src/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/core.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/core.ts"],"names":[],"mappings":"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"}
|