@thyn/core 0.0.227 → 0.0.229
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/element.d.ts +1 -1
- package/dist/element.js +143 -128
- package/dist/signals.js +0 -1
- package/package.json +1 -1
- package/src/element.ts +169 -130
- package/src/signals.ts +0 -1
- package/tsconfig.tsbuildinfo +1 -1
package/dist/element.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare function mount(app: any, parent: any): void;
|
|
2
2
|
export declare function collectEffect(effectFn: any): void;
|
|
3
|
-
export declare function createReactiveTextNode(v: any):
|
|
3
|
+
export declare function createReactiveTextNode(v: any): Text;
|
|
4
4
|
export declare function component(name: any, props?: any): any;
|
|
5
5
|
export declare function setAttribute(el: any, key: any, val: any): any;
|
|
6
6
|
export declare function setProperty(el: any, key: any, val: any): any;
|
package/dist/element.js
CHANGED
|
@@ -9,15 +9,21 @@ export function collectEffect(effectFn) {
|
|
|
9
9
|
}
|
|
10
10
|
collectingHead = effectFn;
|
|
11
11
|
}
|
|
12
|
+
// export function createReactiveTextNode(v) {
|
|
13
|
+
// let n;
|
|
14
|
+
// staticEffect(() => {
|
|
15
|
+
// if (n) {
|
|
16
|
+
// n.nodeValue = v();
|
|
17
|
+
// } else {
|
|
18
|
+
// n = document.createTextNode(v());
|
|
19
|
+
// }
|
|
20
|
+
// });
|
|
21
|
+
// return n;
|
|
22
|
+
// }
|
|
12
23
|
export function createReactiveTextNode(v) {
|
|
13
|
-
|
|
24
|
+
const n = document.createTextNode(v());
|
|
14
25
|
staticEffect(() => {
|
|
15
|
-
|
|
16
|
-
n.nodeValue = v();
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
n = document.createTextNode(v());
|
|
20
|
-
}
|
|
26
|
+
n.nodeValue = v();
|
|
21
27
|
});
|
|
22
28
|
return n;
|
|
23
29
|
}
|
|
@@ -75,7 +81,7 @@ export function setReactiveAttribute(el, key, val) {
|
|
|
75
81
|
return;
|
|
76
82
|
}
|
|
77
83
|
if (v !== undefined)
|
|
78
|
-
el.setAttribute(key,
|
|
84
|
+
el.setAttribute(key, v);
|
|
79
85
|
ran = true;
|
|
80
86
|
}));
|
|
81
87
|
}
|
|
@@ -246,7 +252,9 @@ export function list(props, terminal = false) {
|
|
|
246
252
|
const teardownNode = terminal ? shallowTeardown : teardown;
|
|
247
253
|
let parent;
|
|
248
254
|
let outlet = document.createDocumentFragment();
|
|
249
|
-
|
|
255
|
+
// State
|
|
256
|
+
let prevItems = [];
|
|
257
|
+
let rowNodes = []; // The "Shadow Array" - avoids reading DOM
|
|
250
258
|
const startBookend = document.createComment("");
|
|
251
259
|
const endBookend = document.createComment("");
|
|
252
260
|
startBookend.$frag = outlet;
|
|
@@ -254,149 +262,156 @@ export function list(props, terminal = false) {
|
|
|
254
262
|
const render = props.render;
|
|
255
263
|
staticEffect(() => {
|
|
256
264
|
parent = startBookend.parentNode;
|
|
265
|
+
// 1. Initialization / First Render
|
|
257
266
|
if (!parent) {
|
|
258
|
-
|
|
259
|
-
|
|
267
|
+
const items = props.items();
|
|
268
|
+
// Render all items
|
|
269
|
+
const newNodes = items.map(render);
|
|
270
|
+
outlet.append(startBookend, ...newNodes, endBookend);
|
|
271
|
+
// Save state
|
|
272
|
+
prevItems = items;
|
|
273
|
+
rowNodes = newNodes;
|
|
260
274
|
return;
|
|
261
275
|
}
|
|
262
|
-
|
|
263
|
-
|
|
276
|
+
const nextItems = props.items();
|
|
277
|
+
const newLength = nextItems.length;
|
|
264
278
|
let oldLength = prevItems.length;
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
279
|
+
// 2. Fast Path: Clear All
|
|
280
|
+
if (newLength === 0) {
|
|
281
|
+
if (oldLength !== 0) {
|
|
282
|
+
// Bulk remove
|
|
283
|
+
const removalQueue = rowNodes;
|
|
284
|
+
// Teardown
|
|
285
|
+
for (let i = 0; i < oldLength; i++) {
|
|
286
|
+
teardownNode(removalQueue[i]);
|
|
287
|
+
}
|
|
288
|
+
// DOM Removal
|
|
289
|
+
// Optimization: If terminal list, we might clear parent.textContent
|
|
290
|
+
// But to be safe with siblings:
|
|
291
|
+
if (removalQueue.length) {
|
|
292
|
+
// If the nodes are contiguous, we could use range delete,
|
|
293
|
+
// but individual remove is safer for mixed node types.
|
|
294
|
+
for (let i = 0; i < removalQueue.length; i++) {
|
|
295
|
+
remove(removalQueue[i]);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
rowNodes = [];
|
|
299
|
+
prevItems = [];
|
|
284
300
|
}
|
|
285
|
-
prevItems = nextItems;
|
|
286
|
-
nextItems = null;
|
|
287
301
|
return;
|
|
288
302
|
}
|
|
289
|
-
|
|
290
|
-
if (
|
|
291
|
-
|
|
303
|
+
// 3. Fast Path: Create All (from empty)
|
|
304
|
+
if (oldLength === 0) {
|
|
305
|
+
const newNodes = nextItems.map(render);
|
|
306
|
+
endBookend.before(...newNodes);
|
|
307
|
+
rowNodes = newNodes;
|
|
292
308
|
prevItems = nextItems;
|
|
293
|
-
nextItems = null;
|
|
294
309
|
return;
|
|
295
310
|
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
prevItems = nextItems;
|
|
303
|
-
nextItems = null;
|
|
304
|
-
return;
|
|
311
|
+
// 4. Reconciliation
|
|
312
|
+
let start = 0;
|
|
313
|
+
let minLen = Math.min(oldLength, newLength);
|
|
314
|
+
// Prefix Scan (Cheaper JS Array read vs DOM read)
|
|
315
|
+
while (start < minLen && prevItems[start] === nextItems[start]) {
|
|
316
|
+
start++;
|
|
305
317
|
}
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
318
|
+
// Optimization: Append only
|
|
319
|
+
if (start === oldLength && newLength > oldLength) {
|
|
320
|
+
const newPart = nextItems.slice(start);
|
|
321
|
+
const newNodes = newPart.map(render);
|
|
322
|
+
endBookend.before(...newNodes);
|
|
323
|
+
rowNodes = rowNodes.concat(newNodes);
|
|
312
324
|
prevItems = nextItems;
|
|
313
|
-
nextItems = null;
|
|
314
325
|
return;
|
|
315
326
|
}
|
|
316
|
-
//
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
const removalQueue = [];
|
|
323
|
-
for (let i = start; i <= oldLength; i++) {
|
|
324
|
-
if (!nextKeys.has(prevItems[i])) {
|
|
325
|
-
const ch = childNodes[i + offset];
|
|
326
|
-
teardownNode(ch);
|
|
327
|
-
removalQueue.push(ch);
|
|
328
|
-
childNodes[i + offset] = null;
|
|
327
|
+
// Optimization: Truncate only
|
|
328
|
+
if (start === newLength && oldLength > newLength) {
|
|
329
|
+
for (let i = start; i < oldLength; i++) {
|
|
330
|
+
const node = rowNodes[i];
|
|
331
|
+
teardownNode(node);
|
|
332
|
+
remove(node);
|
|
329
333
|
}
|
|
330
|
-
|
|
331
|
-
for (const e of removalQueue) {
|
|
332
|
-
remove(e);
|
|
333
|
-
}
|
|
334
|
-
if (oldLength - start === removalQueue.length) {
|
|
334
|
+
rowNodes.length = newLength; // JS Array Truncate
|
|
335
335
|
prevItems = nextItems;
|
|
336
|
-
nextItems = null;
|
|
337
336
|
return;
|
|
338
337
|
}
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
338
|
+
// Suffix Scan
|
|
339
|
+
let end = 0;
|
|
340
|
+
// We stop if the suffix hits the prefix
|
|
341
|
+
while (newLength - 1 - end >= start &&
|
|
342
|
+
oldLength - 1 - end >= start &&
|
|
343
|
+
nextItems[newLength - 1 - end] === prevItems[oldLength - 1 - end]) {
|
|
344
|
+
end++;
|
|
345
|
+
}
|
|
346
|
+
// 5. Complex Diff (The Middle)
|
|
347
|
+
const oldStart = start;
|
|
348
|
+
const oldEnd = oldLength - end;
|
|
349
|
+
const newEnd = newLength - end;
|
|
350
|
+
// A. Build Map of existing items in the "changed" region
|
|
351
|
+
// key -> { node, index }
|
|
352
|
+
const keyMap = new Map();
|
|
353
|
+
for (let i = oldStart; i < oldEnd; i++) {
|
|
354
|
+
const item = prevItems[i];
|
|
355
|
+
// If duplicate items exist, first one wins or logic needs to be more robust.
|
|
356
|
+
// Assuming unique keys for simplicity or using last-write-wins:
|
|
357
|
+
if (!keyMap.has(item)) {
|
|
358
|
+
keyMap.set(item, rowNodes[i]);
|
|
348
359
|
}
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
const set = [];
|
|
353
|
-
for (let i = start; i <= newLength; i++) {
|
|
354
|
-
set.push(keyMap.get(nextItems[i])?.el ?? childNodes[i + offset]);
|
|
360
|
+
else {
|
|
361
|
+
// Handle duplicates by removing the extra immediately?
|
|
362
|
+
// Or handle collision. For now, assume distinct items or standard behavior.
|
|
355
363
|
}
|
|
356
|
-
lastOrdered.after(...set);
|
|
357
|
-
prevItems = nextItems;
|
|
358
|
-
keyMap = null;
|
|
359
|
-
nextItems = null;
|
|
360
|
-
return;
|
|
361
364
|
}
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
365
|
+
// B. Setup for new node list construction
|
|
366
|
+
const nextRowNodes = new Array(newLength);
|
|
367
|
+
// Copy Prefix
|
|
368
|
+
for (let i = 0; i < start; i++) {
|
|
369
|
+
nextRowNodes[i] = rowNodes[i];
|
|
370
|
+
}
|
|
371
|
+
// Copy Suffix
|
|
372
|
+
for (let i = 0; i < end; i++) {
|
|
373
|
+
nextRowNodes[newLength - 1 - i] = rowNodes[oldLength - 1 - i];
|
|
374
|
+
}
|
|
375
|
+
// C. Find anchor for insertions
|
|
376
|
+
// We insert before the first node of the suffix, or the endBookend.
|
|
377
|
+
const anchor = (end > 0) ? rowNodes[oldLength - end] : endBookend;
|
|
378
|
+
// D. Iterate new middle
|
|
379
|
+
for (let i = oldStart; i < newEnd; i++) {
|
|
380
|
+
const newItem = nextItems[i];
|
|
381
|
+
let node;
|
|
382
|
+
if (keyMap.has(newItem)) {
|
|
383
|
+
// Reuse existing
|
|
384
|
+
node = keyMap.get(newItem);
|
|
385
|
+
keyMap.delete(newItem);
|
|
386
|
+
// DOM Move:
|
|
387
|
+
// We always insertBefore the anchor.
|
|
388
|
+
// Since we are iterating forward, "anchor" isn't static.
|
|
389
|
+
// Actually, simply inserting before the *current* anchor works if we
|
|
390
|
+
// process carefully, but standard "place and move cursor" is safer.
|
|
391
|
+
parent.insertBefore(node, anchor);
|
|
373
392
|
}
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
if (oldDom !== el) {
|
|
379
|
-
const tmp = el.nextSibling;
|
|
380
|
-
parent.insertBefore(el, oldDom);
|
|
381
|
-
parent.insertBefore(oldDom, tmp);
|
|
382
|
-
}
|
|
383
|
-
else if (item !== newChd) {
|
|
384
|
-
replaceWith(newChd, el, render);
|
|
385
|
-
}
|
|
386
|
-
keyMap.delete(newChd);
|
|
387
|
-
}
|
|
388
|
-
else if (oldChd !== newChd) {
|
|
389
|
-
parent.insertBefore(render(newChd), childNodeList[start + offset]);
|
|
393
|
+
else {
|
|
394
|
+
// Create new
|
|
395
|
+
node = render(newItem);
|
|
396
|
+
parent.insertBefore(node, anchor);
|
|
390
397
|
}
|
|
391
|
-
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
+
nextRowNodes[i] = node;
|
|
399
|
+
}
|
|
400
|
+
// E. Cleanup
|
|
401
|
+
// Anything remaining in keyMap is gone
|
|
402
|
+
for (const node of keyMap.values()) {
|
|
403
|
+
teardownNode(node);
|
|
404
|
+
remove(node);
|
|
405
|
+
}
|
|
406
|
+
// Handle "middle" items that weren't in keyMap (duplicates logic)
|
|
407
|
+
// or implicit removals handled by the map logic.
|
|
408
|
+
// Specifically: We iterated [oldStart...oldEnd] to build the map.
|
|
409
|
+
// If an item was in that range but NOT in the new range, it's in the map.
|
|
410
|
+
// If it WAS in the new range, we removed it from the map.
|
|
411
|
+
// So map.values() is exactly what needs to die.
|
|
412
|
+
// Update State
|
|
413
|
+
rowNodes = nextRowNodes;
|
|
398
414
|
prevItems = nextItems;
|
|
399
|
-
nextItems = null;
|
|
400
415
|
});
|
|
401
416
|
return outlet;
|
|
402
417
|
}
|
package/dist/signals.js
CHANGED
package/package.json
CHANGED
package/src/element.ts
CHANGED
|
@@ -13,14 +13,22 @@ export function collectEffect(effectFn) {
|
|
|
13
13
|
collectingHead = effectFn;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
// export function createReactiveTextNode(v) {
|
|
17
|
+
// let n;
|
|
18
|
+
// staticEffect(() => {
|
|
19
|
+
// if (n) {
|
|
20
|
+
// n.nodeValue = v();
|
|
21
|
+
// } else {
|
|
22
|
+
// n = document.createTextNode(v());
|
|
23
|
+
// }
|
|
24
|
+
// });
|
|
25
|
+
// return n;
|
|
26
|
+
// }
|
|
27
|
+
|
|
16
28
|
export function createReactiveTextNode(v) {
|
|
17
|
-
|
|
29
|
+
const n = document.createTextNode(v());
|
|
18
30
|
staticEffect(() => {
|
|
19
|
-
|
|
20
|
-
n.nodeValue = v();
|
|
21
|
-
} else {
|
|
22
|
-
n = document.createTextNode(v());
|
|
23
|
-
}
|
|
31
|
+
n.nodeValue = v();
|
|
24
32
|
});
|
|
25
33
|
return n;
|
|
26
34
|
}
|
|
@@ -78,7 +86,7 @@ export function setReactiveAttribute(el, key, val) {
|
|
|
78
86
|
else el.setAttribute(key, v);
|
|
79
87
|
return;
|
|
80
88
|
}
|
|
81
|
-
if (v !== undefined) el.setAttribute(key,
|
|
89
|
+
if (v !== undefined) el.setAttribute(key, v);
|
|
82
90
|
ran = true;
|
|
83
91
|
}),
|
|
84
92
|
);
|
|
@@ -262,168 +270,199 @@ export function list(props, terminal = false) {
|
|
|
262
270
|
const teardownNode = terminal ? shallowTeardown : teardown;
|
|
263
271
|
let parent;
|
|
264
272
|
let outlet = document.createDocumentFragment();
|
|
265
|
-
|
|
273
|
+
|
|
274
|
+
// State
|
|
275
|
+
let prevItems = [];
|
|
276
|
+
let rowNodes = []; // The "Shadow Array" - avoids reading DOM
|
|
277
|
+
|
|
266
278
|
const startBookend = document.createComment("") as any;
|
|
267
279
|
const endBookend = document.createComment("") as any;
|
|
280
|
+
|
|
268
281
|
startBookend.$frag = outlet;
|
|
269
282
|
startBookend.$end = endBookend;
|
|
283
|
+
|
|
270
284
|
const render = props.render;
|
|
271
285
|
|
|
272
286
|
staticEffect(() => {
|
|
273
287
|
parent = startBookend.parentNode;
|
|
288
|
+
|
|
289
|
+
// 1. Initialization / First Render
|
|
274
290
|
if (!parent) {
|
|
275
|
-
|
|
276
|
-
|
|
291
|
+
const items = props.items();
|
|
292
|
+
// Render all items
|
|
293
|
+
const newNodes = items.map(render);
|
|
294
|
+
|
|
295
|
+
outlet.append(startBookend, ...newNodes, endBookend);
|
|
296
|
+
|
|
297
|
+
// Save state
|
|
298
|
+
prevItems = items;
|
|
299
|
+
rowNodes = newNodes;
|
|
277
300
|
return;
|
|
278
301
|
}
|
|
279
|
-
|
|
280
|
-
|
|
302
|
+
|
|
303
|
+
const nextItems = props.items();
|
|
304
|
+
const newLength = nextItems.length;
|
|
281
305
|
let oldLength = prevItems.length;
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
removalQueue.
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
306
|
+
|
|
307
|
+
// 2. Fast Path: Clear All
|
|
308
|
+
if (newLength === 0) {
|
|
309
|
+
if (oldLength !== 0) {
|
|
310
|
+
// Bulk remove
|
|
311
|
+
const removalQueue = rowNodes;
|
|
312
|
+
|
|
313
|
+
// Teardown
|
|
314
|
+
for (let i = 0; i < oldLength; i++) {
|
|
315
|
+
teardownNode(removalQueue[i]);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
// DOM Removal
|
|
319
|
+
// Optimization: If terminal list, we might clear parent.textContent
|
|
320
|
+
// But to be safe with siblings:
|
|
321
|
+
if (removalQueue.length) {
|
|
322
|
+
// If the nodes are contiguous, we could use range delete,
|
|
323
|
+
// but individual remove is safer for mixed node types.
|
|
324
|
+
for (let i = 0; i < removalQueue.length; i++) {
|
|
325
|
+
remove(removalQueue[i]);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
rowNodes = [];
|
|
330
|
+
prevItems = [];
|
|
301
331
|
}
|
|
302
|
-
prevItems = nextItems;
|
|
303
|
-
nextItems = null;
|
|
304
332
|
return;
|
|
305
333
|
}
|
|
306
334
|
|
|
307
|
-
|
|
308
|
-
if (
|
|
309
|
-
|
|
335
|
+
// 3. Fast Path: Create All (from empty)
|
|
336
|
+
if (oldLength === 0) {
|
|
337
|
+
const newNodes = nextItems.map(render);
|
|
338
|
+
endBookend.before(...newNodes);
|
|
339
|
+
rowNodes = newNodes;
|
|
310
340
|
prevItems = nextItems;
|
|
311
|
-
nextItems = null;
|
|
312
341
|
return;
|
|
313
342
|
}
|
|
314
343
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
nextItems = null;
|
|
323
|
-
return;
|
|
344
|
+
// 4. Reconciliation
|
|
345
|
+
let start = 0;
|
|
346
|
+
let minLen = Math.min(oldLength, newLength);
|
|
347
|
+
|
|
348
|
+
// Prefix Scan (Cheaper JS Array read vs DOM read)
|
|
349
|
+
while (start < minLen && prevItems[start] === nextItems[start]) {
|
|
350
|
+
start++;
|
|
324
351
|
}
|
|
325
352
|
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
353
|
+
// Optimization: Append only
|
|
354
|
+
if (start === oldLength && newLength > oldLength) {
|
|
355
|
+
const newPart = nextItems.slice(start);
|
|
356
|
+
const newNodes = newPart.map(render);
|
|
357
|
+
endBookend.before(...newNodes);
|
|
358
|
+
|
|
359
|
+
rowNodes = rowNodes.concat(newNodes);
|
|
332
360
|
prevItems = nextItems;
|
|
333
|
-
nextItems = null;
|
|
334
361
|
return;
|
|
335
362
|
}
|
|
336
363
|
|
|
337
|
-
//
|
|
338
|
-
|
|
339
|
-
oldLength
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
oldLength--, newLength--
|
|
344
|
-
);
|
|
345
|
-
|
|
346
|
-
const nextKeys = new Set(nextItems);
|
|
347
|
-
const removalQueue = [];
|
|
348
|
-
for (let i = start; i <= oldLength; i++) {
|
|
349
|
-
if (!nextKeys.has(prevItems[i])) {
|
|
350
|
-
const ch = childNodes[i + offset];
|
|
351
|
-
teardownNode(ch);
|
|
352
|
-
removalQueue.push(ch);
|
|
353
|
-
childNodes[i + offset] = null;
|
|
364
|
+
// Optimization: Truncate only
|
|
365
|
+
if (start === newLength && oldLength > newLength) {
|
|
366
|
+
for (let i = start; i < oldLength; i++) {
|
|
367
|
+
const node = rowNodes[i];
|
|
368
|
+
teardownNode(node);
|
|
369
|
+
remove(node);
|
|
354
370
|
}
|
|
355
|
-
|
|
356
|
-
for (const e of removalQueue) {
|
|
357
|
-
remove(e);
|
|
358
|
-
}
|
|
359
|
-
if (oldLength - start === removalQueue.length) {
|
|
371
|
+
rowNodes.length = newLength; // JS Array Truncate
|
|
360
372
|
prevItems = nextItems;
|
|
361
|
-
nextItems = null;
|
|
362
373
|
return;
|
|
363
374
|
}
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
+
|
|
376
|
+
// Suffix Scan
|
|
377
|
+
let end = 0;
|
|
378
|
+
// We stop if the suffix hits the prefix
|
|
379
|
+
while (
|
|
380
|
+
newLength - 1 - end >= start &&
|
|
381
|
+
oldLength - 1 - end >= start &&
|
|
382
|
+
nextItems[newLength - 1 - end] === prevItems[oldLength - 1 - end]
|
|
383
|
+
) {
|
|
384
|
+
end++;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
// 5. Complex Diff (The Middle)
|
|
388
|
+
const oldStart = start;
|
|
389
|
+
const oldEnd = oldLength - end;
|
|
390
|
+
const newEnd = newLength - end;
|
|
391
|
+
|
|
392
|
+
// A. Build Map of existing items in the "changed" region
|
|
393
|
+
// key -> { node, index }
|
|
394
|
+
const keyMap = new Map();
|
|
395
|
+
for (let i = oldStart; i < oldEnd; i++) {
|
|
396
|
+
const item = prevItems[i];
|
|
397
|
+
// If duplicate items exist, first one wins or logic needs to be more robust.
|
|
398
|
+
// Assuming unique keys for simplicity or using last-write-wins:
|
|
399
|
+
if (!keyMap.has(item)) {
|
|
400
|
+
keyMap.set(item, rowNodes[i]);
|
|
401
|
+
} else {
|
|
402
|
+
// Handle duplicates by removing the extra immediately?
|
|
403
|
+
// Or handle collision. For now, assume distinct items or standard behavior.
|
|
375
404
|
}
|
|
376
405
|
}
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
406
|
+
|
|
407
|
+
// B. Setup for new node list construction
|
|
408
|
+
const nextRowNodes = new Array(newLength);
|
|
409
|
+
|
|
410
|
+
// Copy Prefix
|
|
411
|
+
for (let i = 0; i < start; i++) {
|
|
412
|
+
nextRowNodes[i] = rowNodes[i];
|
|
413
|
+
}
|
|
414
|
+
// Copy Suffix
|
|
415
|
+
for (let i = 0; i < end; i++) {
|
|
416
|
+
nextRowNodes[newLength - 1 - i] = rowNodes[oldLength - 1 - i];
|
|
388
417
|
}
|
|
389
418
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
} else if (oldChd !== newChd) {
|
|
415
|
-
parent.insertBefore(render(newChd), childNodeList[start + offset]);
|
|
419
|
+
// C. Find anchor for insertions
|
|
420
|
+
// We insert before the first node of the suffix, or the endBookend.
|
|
421
|
+
const anchor = (end > 0) ? rowNodes[oldLength - end] : endBookend;
|
|
422
|
+
|
|
423
|
+
// D. Iterate new middle
|
|
424
|
+
for (let i = oldStart; i < newEnd; i++) {
|
|
425
|
+
const newItem = nextItems[i];
|
|
426
|
+
let node;
|
|
427
|
+
|
|
428
|
+
if (keyMap.has(newItem)) {
|
|
429
|
+
// Reuse existing
|
|
430
|
+
node = keyMap.get(newItem);
|
|
431
|
+
keyMap.delete(newItem);
|
|
432
|
+
|
|
433
|
+
// DOM Move:
|
|
434
|
+
// We always insertBefore the anchor.
|
|
435
|
+
// Since we are iterating forward, "anchor" isn't static.
|
|
436
|
+
// Actually, simply inserting before the *current* anchor works if we
|
|
437
|
+
// process carefully, but standard "place and move cursor" is safer.
|
|
438
|
+
parent.insertBefore(node, anchor);
|
|
439
|
+
} else {
|
|
440
|
+
// Create new
|
|
441
|
+
node = render(newItem);
|
|
442
|
+
parent.insertBefore(node, anchor);
|
|
416
443
|
}
|
|
417
|
-
|
|
444
|
+
nextRowNodes[i] = node;
|
|
418
445
|
}
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
446
|
+
|
|
447
|
+
// E. Cleanup
|
|
448
|
+
// Anything remaining in keyMap is gone
|
|
449
|
+
for (const node of keyMap.values()) {
|
|
450
|
+
teardownNode(node);
|
|
451
|
+
remove(node);
|
|
422
452
|
}
|
|
423
|
-
|
|
453
|
+
|
|
454
|
+
// Handle "middle" items that weren't in keyMap (duplicates logic)
|
|
455
|
+
// or implicit removals handled by the map logic.
|
|
456
|
+
// Specifically: We iterated [oldStart...oldEnd] to build the map.
|
|
457
|
+
// If an item was in that range but NOT in the new range, it's in the map.
|
|
458
|
+
// If it WAS in the new range, we removed it from the map.
|
|
459
|
+
// So map.values() is exactly what needs to die.
|
|
460
|
+
|
|
461
|
+
// Update State
|
|
462
|
+
rowNodes = nextRowNodes;
|
|
424
463
|
prevItems = nextItems;
|
|
425
|
-
nextItems = null;
|
|
426
464
|
});
|
|
465
|
+
|
|
427
466
|
return outlet;
|
|
428
467
|
}
|
|
429
468
|
|
package/src/signals.ts
CHANGED
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.dom.asynciterable.d.ts","./node_modules/typescript/lib/lib.webworker.importscripts.d.ts","./node_modules/typescript/lib/lib.scripthost.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/typescript/lib/lib.es2020.full.d.ts","./src/signals.ts","./src/element.ts","./src/index.ts","./src/router.ts","./node_modules/@types/deep-eql/index.d.ts","./node_modules/assertion-error/index.d.ts","./node_modules/@types/chai/index.d.ts","./node_modules/@types/estree/index.d.ts"],"fileIdsList":[[56,57],[52],[52,53],[53]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"1305d1e76ca44e30fb8b2b8075fa522b83f60c0bcf5d4326a9d2cf79b53724f8","impliedFormat":1},{"version":"240d6b8f6981f174caea8caba5ad321e998832805d22a545c1f7bef0e72bb663","signature":"a53dff95094f1f7fee261ff1879f5909cd440f02aa68ff6893d017b2343181d1"},{"version":"a81c93d3e401d0b1cae96bbff1de2192c8b0b783ca57757778269d86a1dc7bd1","signature":"1e9fd227702d856993cc7d708cc104bcbea5c070fbf976204a77c36457b1342e"},{"version":"ac16f8022e1d86594d058f84a530164af4b03dcc8bb45ac4a00736fe8aab62e7","signature":"1e325d171d22aa3144736ace94df4b5bf779c6083bc0f9ce684855844f8abcbc"},{"version":"a155e9ebe821846c43103394346639a6a19a7f844be4892bbe4352aa20ee6707","signature":"166554555b2dc6392155b045bb33ce964f7d5f092f50fada34eb4d5828d7740e"},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1}],"root":[[52,55]],"options":{"allowJs":true,"checkJs":false,"composite":true,"esModuleInterop":true,"module":99,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"target":7},"referencedMap":[[58,1],[53,2],[54,3],[55,3],[52,4]],"latestChangedDtsFile":"./dist/router.d.ts","version":"5.9.3"}
|
|
1
|
+
{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.dom.asynciterable.d.ts","./node_modules/typescript/lib/lib.webworker.importscripts.d.ts","./node_modules/typescript/lib/lib.scripthost.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/typescript/lib/lib.es2020.full.d.ts","./src/signals.ts","./src/element.ts","./src/index.ts","./src/router.ts","./node_modules/@types/deep-eql/index.d.ts","./node_modules/assertion-error/index.d.ts","./node_modules/@types/chai/index.d.ts","./node_modules/@types/estree/index.d.ts"],"fileIdsList":[[56,57],[52],[52,53],[53]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"1305d1e76ca44e30fb8b2b8075fa522b83f60c0bcf5d4326a9d2cf79b53724f8","impliedFormat":1},{"version":"2834d3d5f4c0526c760679f15c35791e91f4e51d54d24d00610e35b7ce7a9e01","signature":"a53dff95094f1f7fee261ff1879f5909cd440f02aa68ff6893d017b2343181d1"},{"version":"e9ff34c5bc574b75c34770ddd48174c11fa24127ba94013918be7b71ba5162bb","signature":"4e15936f04a7ab7370e9a897f6d9befa980662283d92660ba0b5cacfab78e5d1"},{"version":"ac16f8022e1d86594d058f84a530164af4b03dcc8bb45ac4a00736fe8aab62e7","signature":"1e325d171d22aa3144736ace94df4b5bf779c6083bc0f9ce684855844f8abcbc"},{"version":"a155e9ebe821846c43103394346639a6a19a7f844be4892bbe4352aa20ee6707","signature":"166554555b2dc6392155b045bb33ce964f7d5f092f50fada34eb4d5828d7740e"},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1}],"root":[[52,55]],"options":{"allowJs":true,"checkJs":false,"composite":true,"esModuleInterop":true,"module":99,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"target":7},"referencedMap":[[58,1],[53,2],[54,3],[55,3],[52,4]],"latestChangedDtsFile":"./dist/element.d.ts","version":"5.9.3"}
|