@thyn/core 0.0.228 → 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 +142 -142
- package/dist/signals.js +0 -1
- package/package.json +1 -1
- package/src/element.ts +168 -143
- 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,164 +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
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
for (const ch of removalQueue) {
|
|
287
|
-
remove(ch);
|
|
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 = [];
|
|
288
300
|
}
|
|
289
|
-
prevItems = nextItems;
|
|
290
|
-
nextItems = null;
|
|
291
301
|
return;
|
|
292
302
|
}
|
|
293
|
-
|
|
294
|
-
if (
|
|
295
|
-
|
|
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;
|
|
296
308
|
prevItems = nextItems;
|
|
297
|
-
nextItems = null;
|
|
298
309
|
return;
|
|
299
310
|
}
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
prevItems = nextItems;
|
|
307
|
-
nextItems = null;
|
|
308
|
-
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++;
|
|
309
317
|
}
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
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);
|
|
316
324
|
prevItems = nextItems;
|
|
317
|
-
nextItems = null;
|
|
318
325
|
return;
|
|
319
326
|
}
|
|
320
|
-
//
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
const removalQueue = [];
|
|
327
|
-
for (let i = start; i <= oldLength; i++) {
|
|
328
|
-
if (!nextKeys.has(prevItems[i])) {
|
|
329
|
-
const ch = childNodes[i + offset];
|
|
330
|
-
teardownNode(ch);
|
|
331
|
-
removalQueue.push(ch);
|
|
332
|
-
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);
|
|
333
333
|
}
|
|
334
|
-
|
|
335
|
-
for (const e of removalQueue) {
|
|
336
|
-
remove(e);
|
|
337
|
-
}
|
|
338
|
-
if (oldLength - start === removalQueue.length) {
|
|
334
|
+
rowNodes.length = newLength; // JS Array Truncate
|
|
339
335
|
prevItems = nextItems;
|
|
340
|
-
nextItems = null;
|
|
341
336
|
return;
|
|
342
337
|
}
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
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]);
|
|
352
359
|
}
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
const set = [];
|
|
357
|
-
for (let i = start; i <= newLength; i++) {
|
|
358
|
-
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.
|
|
359
363
|
}
|
|
360
|
-
lastOrdered.after(...set);
|
|
361
|
-
prevItems = nextItems;
|
|
362
|
-
keyMap = null;
|
|
363
|
-
nextItems = null;
|
|
364
|
-
return;
|
|
365
364
|
}
|
|
366
|
-
|
|
365
|
+
// B. Setup for new node list construction
|
|
366
|
+
const nextRowNodes = new Array(newLength);
|
|
367
|
+
// Copy Prefix
|
|
367
368
|
for (let i = 0; i < start; i++) {
|
|
368
|
-
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
cursor = el.nextSibling;
|
|
392
|
-
}
|
|
393
|
-
else if (item !== newChd) {
|
|
394
|
-
const next = el.nextSibling;
|
|
395
|
-
replaceWith(newChd, el, render);
|
|
396
|
-
cursor = next;
|
|
397
|
-
}
|
|
398
|
-
else {
|
|
399
|
-
cursor = el.nextSibling;
|
|
400
|
-
}
|
|
401
|
-
keyMap.delete(newChd);
|
|
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);
|
|
402
392
|
}
|
|
403
|
-
else
|
|
404
|
-
|
|
393
|
+
else {
|
|
394
|
+
// Create new
|
|
395
|
+
node = render(newItem);
|
|
396
|
+
parent.insertBefore(node, anchor);
|
|
405
397
|
}
|
|
406
|
-
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
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;
|
|
413
414
|
prevItems = nextItems;
|
|
414
|
-
nextItems = null;
|
|
415
415
|
});
|
|
416
416
|
return outlet;
|
|
417
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,182 +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
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
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 = [];
|
|
305
331
|
}
|
|
306
|
-
prevItems = nextItems;
|
|
307
|
-
nextItems = null;
|
|
308
332
|
return;
|
|
309
333
|
}
|
|
310
334
|
|
|
311
|
-
|
|
312
|
-
if (
|
|
313
|
-
|
|
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;
|
|
314
340
|
prevItems = nextItems;
|
|
315
|
-
nextItems = null;
|
|
316
341
|
return;
|
|
317
342
|
}
|
|
318
343
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
nextItems = null;
|
|
327
|
-
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++;
|
|
328
351
|
}
|
|
329
352
|
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
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);
|
|
336
360
|
prevItems = nextItems;
|
|
337
|
-
nextItems = null;
|
|
338
361
|
return;
|
|
339
362
|
}
|
|
340
363
|
|
|
341
|
-
//
|
|
342
|
-
|
|
343
|
-
oldLength
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
oldLength--, newLength--
|
|
348
|
-
);
|
|
349
|
-
|
|
350
|
-
const nextKeys = new Set(nextItems);
|
|
351
|
-
const removalQueue = [];
|
|
352
|
-
for (let i = start; i <= oldLength; i++) {
|
|
353
|
-
if (!nextKeys.has(prevItems[i])) {
|
|
354
|
-
const ch = childNodes[i + offset];
|
|
355
|
-
teardownNode(ch);
|
|
356
|
-
removalQueue.push(ch);
|
|
357
|
-
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);
|
|
358
370
|
}
|
|
359
|
-
|
|
360
|
-
for (const e of removalQueue) {
|
|
361
|
-
remove(e);
|
|
362
|
-
}
|
|
363
|
-
if (oldLength - start === removalQueue.length) {
|
|
371
|
+
rowNodes.length = newLength; // JS Array Truncate
|
|
364
372
|
prevItems = nextItems;
|
|
365
|
-
nextItems = null;
|
|
366
373
|
return;
|
|
367
374
|
}
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
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.
|
|
386
404
|
}
|
|
387
|
-
lastOrdered.after(...set);
|
|
388
|
-
prevItems = nextItems;
|
|
389
|
-
keyMap = null;
|
|
390
|
-
nextItems = null;
|
|
391
|
-
return;
|
|
392
405
|
}
|
|
393
406
|
|
|
394
|
-
|
|
407
|
+
// B. Setup for new node list construction
|
|
408
|
+
const nextRowNodes = new Array(newLength);
|
|
409
|
+
|
|
410
|
+
// Copy Prefix
|
|
395
411
|
for (let i = 0; i < start; i++) {
|
|
396
|
-
|
|
412
|
+
nextRowNodes[i] = rowNodes[i];
|
|
397
413
|
}
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
if (
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
keyMap.delete(newChd);
|
|
428
|
-
} else if (oldChd !== newChd) {
|
|
429
|
-
parent.insertBefore(render(newChd), cursor);
|
|
414
|
+
// Copy Suffix
|
|
415
|
+
for (let i = 0; i < end; i++) {
|
|
416
|
+
nextRowNodes[newLength - 1 - i] = rowNodes[oldLength - 1 - i];
|
|
417
|
+
}
|
|
418
|
+
|
|
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);
|
|
430
443
|
}
|
|
431
|
-
|
|
444
|
+
nextRowNodes[i] = node;
|
|
432
445
|
}
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
446
|
+
|
|
447
|
+
// E. Cleanup
|
|
448
|
+
// Anything remaining in keyMap is gone
|
|
449
|
+
for (const node of keyMap.values()) {
|
|
450
|
+
teardownNode(node);
|
|
451
|
+
remove(node);
|
|
436
452
|
}
|
|
437
|
-
|
|
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;
|
|
438
463
|
prevItems = nextItems;
|
|
439
|
-
nextItems = null;
|
|
440
464
|
});
|
|
465
|
+
|
|
441
466
|
return outlet;
|
|
442
467
|
}
|
|
443
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":"e5c36aef8afe34aeee0ced23b9ce37f734196f94db9ea1cd14f2ea295449c5f8","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"}
|