@thyn/core 0.0.232 → 0.0.234
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.js +228 -225
- package/package.json +1 -1
- package/src/element.ts +236 -271
- package/tsconfig.tsbuildinfo +1 -1
package/dist/element.js
CHANGED
|
@@ -9,17 +9,6 @@ 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
|
-
// }
|
|
23
12
|
export function createReactiveTextNode(v) {
|
|
24
13
|
const n = document.createTextNode(v());
|
|
25
14
|
staticEffect(() => {
|
|
@@ -252,9 +241,7 @@ export function list(props, terminal = false) {
|
|
|
252
241
|
const teardownNode = terminal ? shallowTeardown : teardown;
|
|
253
242
|
let parent;
|
|
254
243
|
let outlet = document.createDocumentFragment();
|
|
255
|
-
|
|
256
|
-
let prevItems = [];
|
|
257
|
-
let rowNodes = []; // The "Shadow Array" - avoids reading DOM
|
|
244
|
+
let prevItems;
|
|
258
245
|
const startBookend = document.createComment("");
|
|
259
246
|
const endBookend = document.createComment("");
|
|
260
247
|
startBookend.$frag = outlet;
|
|
@@ -262,151 +249,144 @@ export function list(props, terminal = false) {
|
|
|
262
249
|
const render = props.render;
|
|
263
250
|
staticEffect(() => {
|
|
264
251
|
parent = startBookend.parentNode;
|
|
265
|
-
// 1. Initialization / First Render
|
|
266
252
|
if (!parent) {
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
const newNodes = items.map(render);
|
|
270
|
-
outlet.append(startBookend, ...newNodes, endBookend);
|
|
271
|
-
// Save state
|
|
272
|
-
prevItems = items;
|
|
273
|
-
rowNodes = newNodes;
|
|
253
|
+
prevItems = props.items();
|
|
254
|
+
outlet.append(startBookend, ...prevItems.map(render), endBookend);
|
|
274
255
|
return;
|
|
275
256
|
}
|
|
276
|
-
|
|
277
|
-
|
|
257
|
+
let nextItems = props.items();
|
|
258
|
+
let newLength = nextItems.length;
|
|
278
259
|
let oldLength = prevItems.length;
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
260
|
+
if (!oldLength && newLength) {
|
|
261
|
+
endBookend.before(...nextItems.map(render));
|
|
262
|
+
prevItems = nextItems;
|
|
263
|
+
nextItems = null;
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
const childNodeList = parent.childNodes;
|
|
267
|
+
const childNodes = Array.from(childNodeList);
|
|
268
|
+
const offset = childNodes.indexOf(startBookend) + 1;
|
|
269
|
+
if (!newLength) {
|
|
270
|
+
const removalQueue = [];
|
|
271
|
+
const end = prevItems.length + offset;
|
|
272
|
+
for (let i = offset; i < end; i++) {
|
|
273
|
+
const ch = childNodeList[i];
|
|
274
|
+
teardownNode(ch);
|
|
275
|
+
removalQueue.push(ch);
|
|
276
|
+
}
|
|
277
|
+
for (const ch of removalQueue) {
|
|
278
|
+
remove(ch);
|
|
288
279
|
}
|
|
280
|
+
prevItems = nextItems;
|
|
281
|
+
nextItems = null;
|
|
289
282
|
return;
|
|
290
283
|
}
|
|
291
|
-
|
|
292
|
-
if (
|
|
293
|
-
|
|
294
|
-
endBookend.before(...newNodes);
|
|
295
|
-
rowNodes = newNodes;
|
|
284
|
+
let start = nextItems.findIndex((item, index) => prevItems[index] !== item);
|
|
285
|
+
if (start === oldLength) {
|
|
286
|
+
endBookend.before(...nextItems.slice(start).map(render));
|
|
296
287
|
prevItems = nextItems;
|
|
288
|
+
nextItems = null;
|
|
297
289
|
return;
|
|
298
290
|
}
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
291
|
+
if (start < 0) {
|
|
292
|
+
for (let i = nextItems.length; i < oldLength; i++) {
|
|
293
|
+
const e = childNodes[offset + --oldLength];
|
|
294
|
+
teardownNode(e);
|
|
295
|
+
remove(e);
|
|
296
|
+
}
|
|
297
|
+
prevItems = nextItems;
|
|
298
|
+
nextItems = null;
|
|
299
|
+
return;
|
|
305
300
|
}
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
301
|
+
if (start >= newLength) {
|
|
302
|
+
while (start < oldLength) {
|
|
303
|
+
const e = childNodes[offset + --oldLength];
|
|
304
|
+
teardownNode(e);
|
|
305
|
+
remove(e);
|
|
306
|
+
}
|
|
312
307
|
prevItems = nextItems;
|
|
308
|
+
nextItems = null;
|
|
313
309
|
return;
|
|
314
310
|
}
|
|
315
|
-
//
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
311
|
+
// suffix
|
|
312
|
+
for (oldLength--, newLength--; newLength > start &&
|
|
313
|
+
oldLength >= start &&
|
|
314
|
+
nextItems[newLength] === prevItems[oldLength]; oldLength--, newLength--)
|
|
315
|
+
;
|
|
316
|
+
const nextKeys = new Set(nextItems);
|
|
317
|
+
const removalQueue = [];
|
|
318
|
+
for (let i = start; i <= oldLength; i++) {
|
|
319
|
+
if (!nextKeys.has(prevItems[i])) {
|
|
320
|
+
const ch = childNodes[i + offset];
|
|
321
|
+
teardownNode(ch);
|
|
322
|
+
removalQueue.push(ch);
|
|
323
|
+
childNodes[i + offset] = null;
|
|
320
324
|
}
|
|
321
|
-
|
|
325
|
+
}
|
|
326
|
+
for (const e of removalQueue) {
|
|
327
|
+
remove(e);
|
|
328
|
+
}
|
|
329
|
+
if (oldLength - start === removalQueue.length) {
|
|
322
330
|
prevItems = nextItems;
|
|
331
|
+
nextItems = null;
|
|
323
332
|
return;
|
|
324
333
|
}
|
|
325
|
-
|
|
326
|
-
let
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
const oldStart = start;
|
|
335
|
-
const oldEnd = oldLength - end;
|
|
336
|
-
const newEnd = newLength - end;
|
|
337
|
-
// A. Build Map of existing items in the "changed" region
|
|
338
|
-
// key -> { node, index }
|
|
339
|
-
const keyMap = new Map();
|
|
340
|
-
for (let i = oldStart; i < oldEnd; i++) {
|
|
341
|
-
const item = prevItems[i];
|
|
342
|
-
// If duplicate items exist, first one wins or logic needs to be more robust.
|
|
343
|
-
// Assuming unique keys for simplicity or using last-write-wins:
|
|
344
|
-
// if (!keyMap.has(item)) {
|
|
345
|
-
keyMap.set(item, rowNodes[i]);
|
|
346
|
-
// } else {
|
|
347
|
-
// Handle duplicates by removing the extra immediately?
|
|
348
|
-
// Or handle collision. For now, assume distinct items or standard behavior.
|
|
349
|
-
// }
|
|
350
|
-
}
|
|
351
|
-
// B. Setup for new node list construction
|
|
352
|
-
const nextRowNodes = new Array(newLength);
|
|
353
|
-
// Copy Prefix
|
|
354
|
-
for (let i = 0; i < start; i++) {
|
|
355
|
-
nextRowNodes[i] = rowNodes[i];
|
|
356
|
-
}
|
|
357
|
-
// Copy Suffix
|
|
358
|
-
for (let i = 0; i < end; i++) {
|
|
359
|
-
nextRowNodes[newLength - 1 - i] = rowNodes[oldLength - 1 - i];
|
|
360
|
-
}
|
|
361
|
-
// C. Find anchor for insertions
|
|
362
|
-
// We insert before the first node of the suffix, or the endBookend.
|
|
363
|
-
const anchor = (end > 0) ? rowNodes[oldLength - end] : endBookend;
|
|
364
|
-
// D. Iterate new middle
|
|
365
|
-
for (let i = oldStart; i < newEnd; i++) {
|
|
366
|
-
const newItem = nextItems[i];
|
|
367
|
-
let node;
|
|
368
|
-
if (keyMap.has(newItem)) {
|
|
369
|
-
// Reuse existing
|
|
370
|
-
node = keyMap.get(newItem);
|
|
371
|
-
keyMap.delete(newItem);
|
|
372
|
-
// DOM Move:
|
|
373
|
-
// We always insertBefore the anchor.
|
|
374
|
-
// Since we are iterating forward, "anchor" isn't static.
|
|
375
|
-
// Actually, simply inserting before the *current* anchor works if we
|
|
376
|
-
// process carefully, but standard "place and move cursor" is safer.
|
|
377
|
-
parent.insertBefore(node, anchor);
|
|
334
|
+
let keyMap = new Map();
|
|
335
|
+
for (let i = start; i <= oldLength; i++) {
|
|
336
|
+
if (childNodes[i + offset] &&
|
|
337
|
+
(!nextItems[i] ||
|
|
338
|
+
prevItems[i] !== nextItems[i])) {
|
|
339
|
+
keyMap.set(prevItems[i], {
|
|
340
|
+
el: childNodes[i + offset],
|
|
341
|
+
item: prevItems[i],
|
|
342
|
+
});
|
|
378
343
|
}
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
344
|
+
}
|
|
345
|
+
while (start <= newLength) {
|
|
346
|
+
const newChd = nextItems[start];
|
|
347
|
+
const oldChd = prevItems[start];
|
|
348
|
+
if (newChd === oldChd) {
|
|
349
|
+
start++;
|
|
350
|
+
continue;
|
|
351
|
+
}
|
|
352
|
+
if (oldChd === undefined) {
|
|
353
|
+
parent.insertBefore(render(newChd), endBookend);
|
|
354
|
+
start++;
|
|
355
|
+
continue;
|
|
356
|
+
}
|
|
357
|
+
const mappedOld = keyMap.get(newChd);
|
|
358
|
+
if (mappedOld) {
|
|
359
|
+
const oldDom = childNodeList[start + offset];
|
|
360
|
+
const { el, item } = mappedOld;
|
|
361
|
+
if (oldDom !== el) {
|
|
362
|
+
const tmp = el.nextSibling;
|
|
363
|
+
parent.insertBefore(el, oldDom);
|
|
364
|
+
parent.insertBefore(oldDom, tmp);
|
|
365
|
+
}
|
|
366
|
+
else if (item !== newChd) {
|
|
367
|
+
replaceWith(newChd, el, render);
|
|
368
|
+
}
|
|
369
|
+
keyMap.delete(newChd);
|
|
370
|
+
}
|
|
371
|
+
else if (oldChd !== newChd) {
|
|
372
|
+
parent.insertBefore(render(newChd), childNodeList[start + offset]);
|
|
383
373
|
}
|
|
384
|
-
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
}
|
|
392
|
-
// Handle "middle" items that weren't in keyMap (duplicates logic)
|
|
393
|
-
// or implicit removals handled by the map logic.
|
|
394
|
-
// Specifically: We iterated [oldStart...oldEnd] to build the map.
|
|
395
|
-
// If an item was in that range but NOT in the new range, it's in the map.
|
|
396
|
-
// If it WAS in the new range, we removed it from the map.
|
|
397
|
-
// So map.values() is exactly what needs to die.
|
|
398
|
-
// Update State
|
|
399
|
-
rowNodes = nextRowNodes;
|
|
374
|
+
start++;
|
|
375
|
+
}
|
|
376
|
+
for (const { el } of keyMap.values()) {
|
|
377
|
+
teardownNode(el);
|
|
378
|
+
remove(el);
|
|
379
|
+
}
|
|
380
|
+
keyMap = null;
|
|
400
381
|
prevItems = nextItems;
|
|
382
|
+
nextItems = null;
|
|
401
383
|
});
|
|
402
384
|
return outlet;
|
|
403
385
|
}
|
|
404
386
|
export function isolatedTerminalList(props) {
|
|
405
387
|
let parent;
|
|
406
388
|
let outlet = document.createDocumentFragment();
|
|
407
|
-
|
|
408
|
-
let prevItems = [];
|
|
409
|
-
let rowNodes = []; // The "Shadow Array"
|
|
389
|
+
let prevItems;
|
|
410
390
|
const startBookend = document.createComment("");
|
|
411
391
|
const endBookend = document.createComment("");
|
|
412
392
|
startBookend.$frag = outlet;
|
|
@@ -414,121 +394,144 @@ export function isolatedTerminalList(props) {
|
|
|
414
394
|
const render = props.render;
|
|
415
395
|
staticEffect(() => {
|
|
416
396
|
parent = startBookend.parentNode;
|
|
417
|
-
// 1. Initialization
|
|
418
397
|
if (!parent) {
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
outlet.append(startBookend, ...newNodes, endBookend);
|
|
422
|
-
prevItems = items;
|
|
423
|
-
rowNodes = newNodes;
|
|
398
|
+
prevItems = props.items();
|
|
399
|
+
outlet.append(startBookend, ...prevItems.map(render), endBookend);
|
|
424
400
|
return;
|
|
425
401
|
}
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
parent.textContent = "";
|
|
441
|
-
parent.append(startBookend, endBookend);
|
|
442
|
-
rowNodes = [];
|
|
443
|
-
prevItems = [];
|
|
402
|
+
let nextItems = props.items();
|
|
403
|
+
let newLength = nextItems.length;
|
|
404
|
+
let oldLength = prevItems.length;
|
|
405
|
+
if (!oldLength && newLength) {
|
|
406
|
+
endBookend.before(...nextItems.map(render));
|
|
407
|
+
prevItems = nextItems;
|
|
408
|
+
nextItems = null;
|
|
409
|
+
return;
|
|
410
|
+
}
|
|
411
|
+
const childNodeList = parent.childNodes;
|
|
412
|
+
if (!newLength) {
|
|
413
|
+
const end = childNodeList.length - 1;
|
|
414
|
+
for (let i = 1; i < end; i++) {
|
|
415
|
+
shallowTeardown(childNodeList[i]);
|
|
444
416
|
}
|
|
417
|
+
parent.textContent = "";
|
|
418
|
+
parent.append(startBookend, endBookend);
|
|
419
|
+
prevItems = nextItems;
|
|
420
|
+
nextItems = null;
|
|
445
421
|
return;
|
|
446
422
|
}
|
|
447
|
-
|
|
448
|
-
if (
|
|
449
|
-
|
|
450
|
-
endBookend.before(...newNodes);
|
|
451
|
-
rowNodes = newNodes;
|
|
423
|
+
let start = nextItems.findIndex((item, index) => prevItems[index] !== item);
|
|
424
|
+
if (start === oldLength) {
|
|
425
|
+
endBookend.before(...nextItems.slice(start).map(render));
|
|
452
426
|
prevItems = nextItems;
|
|
427
|
+
nextItems = null;
|
|
453
428
|
return;
|
|
454
429
|
}
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
430
|
+
let childNodes = Array.from(childNodeList);
|
|
431
|
+
if (start < 0) {
|
|
432
|
+
for (let i = nextItems.length; i < oldLength; i++) {
|
|
433
|
+
const e = childNodes[1 + --oldLength];
|
|
434
|
+
shallowTeardown(e);
|
|
435
|
+
e.remove();
|
|
436
|
+
}
|
|
437
|
+
prevItems = nextItems;
|
|
438
|
+
nextItems = null;
|
|
439
|
+
childNodes = null;
|
|
440
|
+
return;
|
|
461
441
|
}
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
442
|
+
if (start >= newLength) {
|
|
443
|
+
while (start < oldLength) {
|
|
444
|
+
const e = childNodes[1 + --oldLength];
|
|
445
|
+
shallowTeardown(e);
|
|
446
|
+
e.remove();
|
|
447
|
+
}
|
|
468
448
|
prevItems = nextItems;
|
|
449
|
+
nextItems = null;
|
|
450
|
+
childNodes = null;
|
|
469
451
|
return;
|
|
470
452
|
}
|
|
471
|
-
//
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
453
|
+
// suffix
|
|
454
|
+
for (oldLength--, newLength--; newLength > start &&
|
|
455
|
+
oldLength >= start &&
|
|
456
|
+
nextItems[newLength] === prevItems[oldLength]; oldLength--, newLength--)
|
|
457
|
+
;
|
|
458
|
+
const nextKeys = new Set(nextItems);
|
|
459
|
+
const removalQueue = [];
|
|
460
|
+
for (let i = start; i <= oldLength; i++) {
|
|
461
|
+
if (!nextKeys.has(prevItems[i])) {
|
|
462
|
+
const ch = childNodes[i + 1];
|
|
463
|
+
shallowTeardown(ch);
|
|
464
|
+
removalQueue.push(ch);
|
|
465
|
+
childNodes[i + 1] = null;
|
|
477
466
|
}
|
|
478
|
-
|
|
467
|
+
}
|
|
468
|
+
if (removalQueue.length === prevItems.length) {
|
|
469
|
+
parent.textContent = "";
|
|
470
|
+
parent.append(startBookend, ...nextItems.map(render), endBookend);
|
|
479
471
|
prevItems = nextItems;
|
|
472
|
+
nextItems = null;
|
|
473
|
+
childNodes = null;
|
|
480
474
|
return;
|
|
481
475
|
}
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
// Copy Prefix
|
|
501
|
-
for (let i = 0; i < start; i++) {
|
|
502
|
-
nextRowNodes[i] = rowNodes[i];
|
|
503
|
-
}
|
|
504
|
-
// Copy Suffix
|
|
505
|
-
for (let i = 0; i < end; i++) {
|
|
506
|
-
nextRowNodes[newLength - 1 - i] = rowNodes[oldLength - 1 - i];
|
|
507
|
-
}
|
|
508
|
-
// Determine Anchor (The first node of the suffix, or the end bookend)
|
|
509
|
-
const anchor = (end > 0) ? rowNodes[oldLength - end] : endBookend;
|
|
510
|
-
// B. Process Middle
|
|
511
|
-
for (let i = oldStart; i < newEnd; i++) {
|
|
512
|
-
const newItem = nextItems[i];
|
|
513
|
-
if (keyMap.has(newItem)) {
|
|
514
|
-
const node = keyMap.get(newItem);
|
|
515
|
-
keyMap.delete(newItem);
|
|
516
|
-
parent.insertBefore(node, anchor);
|
|
517
|
-
nextRowNodes[i] = node;
|
|
476
|
+
for (const e of removalQueue) {
|
|
477
|
+
e.remove();
|
|
478
|
+
}
|
|
479
|
+
if (oldLength - start === removalQueue.length) {
|
|
480
|
+
prevItems = nextItems;
|
|
481
|
+
nextItems = null;
|
|
482
|
+
childNodes = null;
|
|
483
|
+
return;
|
|
484
|
+
}
|
|
485
|
+
let keyMap = new Map();
|
|
486
|
+
for (let i = start; i <= oldLength; i++) {
|
|
487
|
+
if (childNodes[i + 1] &&
|
|
488
|
+
(!nextItems[i] ||
|
|
489
|
+
prevItems[i] !== nextItems[i])) {
|
|
490
|
+
keyMap.set(prevItems[i], {
|
|
491
|
+
el: childNodes[i + 1],
|
|
492
|
+
item: prevItems[i],
|
|
493
|
+
});
|
|
518
494
|
}
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
495
|
+
}
|
|
496
|
+
while (start <= newLength) {
|
|
497
|
+
const newChd = nextItems[start];
|
|
498
|
+
const oldChd = prevItems[start];
|
|
499
|
+
if (newChd === oldChd) {
|
|
500
|
+
start++;
|
|
501
|
+
continue;
|
|
502
|
+
}
|
|
503
|
+
if (oldChd === undefined) {
|
|
504
|
+
parent.insertBefore(render(newChd), endBookend);
|
|
505
|
+
start++;
|
|
506
|
+
continue;
|
|
523
507
|
}
|
|
508
|
+
const mappedOld = keyMap.get(newChd);
|
|
509
|
+
if (mappedOld) {
|
|
510
|
+
const oldDom = childNodeList[start + 1];
|
|
511
|
+
const { el, item } = mappedOld;
|
|
512
|
+
if (oldDom !== el) {
|
|
513
|
+
const tmp = el.nextSibling;
|
|
514
|
+
parent.insertBefore(el, oldDom);
|
|
515
|
+
parent.insertBefore(oldDom, tmp);
|
|
516
|
+
}
|
|
517
|
+
else if (item !== newChd) {
|
|
518
|
+
replaceWith(newChd, el, render);
|
|
519
|
+
}
|
|
520
|
+
keyMap.delete(newChd);
|
|
521
|
+
}
|
|
522
|
+
else if (oldChd !== newChd) {
|
|
523
|
+
parent.insertBefore(render(newChd), childNodeList[start + 1]);
|
|
524
|
+
}
|
|
525
|
+
start++;
|
|
524
526
|
}
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
node.remove();
|
|
527
|
+
for (const { el } of keyMap.values()) {
|
|
528
|
+
shallowTeardown(el);
|
|
529
|
+
el.remove();
|
|
529
530
|
}
|
|
530
|
-
|
|
531
|
+
keyMap = null;
|
|
531
532
|
prevItems = nextItems;
|
|
533
|
+
nextItems = null;
|
|
534
|
+
childNodes = null;
|
|
532
535
|
});
|
|
533
536
|
return outlet;
|
|
534
537
|
}
|
package/package.json
CHANGED
package/src/element.ts
CHANGED
|
@@ -13,18 +13,6 @@ 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
|
-
|
|
28
16
|
export function createReactiveTextNode(v) {
|
|
29
17
|
const n = document.createTextNode(v());
|
|
30
18
|
staticEffect(() => {
|
|
@@ -270,342 +258,319 @@ export function list(props, terminal = false) {
|
|
|
270
258
|
const teardownNode = terminal ? shallowTeardown : teardown;
|
|
271
259
|
let parent;
|
|
272
260
|
let outlet = document.createDocumentFragment();
|
|
273
|
-
|
|
274
|
-
// State
|
|
275
|
-
let prevItems = [];
|
|
276
|
-
let rowNodes = []; // The "Shadow Array" - avoids reading DOM
|
|
277
|
-
|
|
261
|
+
let prevItems;
|
|
278
262
|
const startBookend = document.createComment("") as any;
|
|
279
263
|
const endBookend = document.createComment("") as any;
|
|
280
|
-
|
|
281
264
|
startBookend.$frag = outlet;
|
|
282
265
|
startBookend.$end = endBookend;
|
|
283
|
-
|
|
284
266
|
const render = props.render;
|
|
285
267
|
|
|
286
268
|
staticEffect(() => {
|
|
287
269
|
parent = startBookend.parentNode;
|
|
288
|
-
|
|
289
|
-
// 1. Initialization / First Render
|
|
290
270
|
if (!parent) {
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
const newNodes = items.map(render);
|
|
294
|
-
|
|
295
|
-
outlet.append(startBookend, ...newNodes, endBookend);
|
|
296
|
-
|
|
297
|
-
// Save state
|
|
298
|
-
prevItems = items;
|
|
299
|
-
rowNodes = newNodes;
|
|
271
|
+
prevItems = props.items();
|
|
272
|
+
outlet.append(startBookend, ...prevItems.map(render), endBookend);
|
|
300
273
|
return;
|
|
301
274
|
}
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
const newLength = nextItems.length;
|
|
275
|
+
let nextItems = props.items();
|
|
276
|
+
let newLength = nextItems.length;
|
|
305
277
|
let oldLength = prevItems.length;
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
278
|
+
if (!oldLength && newLength) {
|
|
279
|
+
endBookend.before(...nextItems.map(render))
|
|
280
|
+
prevItems = nextItems;
|
|
281
|
+
nextItems = null;
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
const childNodeList = parent.childNodes as NodeListOf<ChildNode>;
|
|
285
|
+
const childNodes = Array.from(childNodeList);
|
|
286
|
+
const offset = childNodes.indexOf(startBookend) + 1;
|
|
287
|
+
if (!newLength) {
|
|
288
|
+
const removalQueue = [];
|
|
289
|
+
const end = prevItems.length + offset;
|
|
290
|
+
for (let i = offset; i < end; i++) {
|
|
291
|
+
const ch = childNodeList[i];
|
|
292
|
+
teardownNode(ch);
|
|
293
|
+
removalQueue.push(ch);
|
|
316
294
|
}
|
|
295
|
+
for (const ch of removalQueue) {
|
|
296
|
+
remove(ch);
|
|
297
|
+
}
|
|
298
|
+
prevItems = nextItems;
|
|
299
|
+
nextItems = null;
|
|
317
300
|
return;
|
|
318
301
|
}
|
|
319
302
|
|
|
320
|
-
|
|
321
|
-
if (
|
|
322
|
-
|
|
323
|
-
endBookend.before(...newNodes);
|
|
324
|
-
rowNodes = newNodes;
|
|
303
|
+
let start = nextItems.findIndex((item, index) => prevItems[index] !== item);
|
|
304
|
+
if (start === oldLength) {
|
|
305
|
+
endBookend.before(...nextItems.slice(start).map(render));
|
|
325
306
|
prevItems = nextItems;
|
|
307
|
+
nextItems = null;
|
|
326
308
|
return;
|
|
327
309
|
}
|
|
328
310
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
311
|
+
if (start < 0) {
|
|
312
|
+
for (let i = nextItems.length; i < oldLength; i++) {
|
|
313
|
+
const e = childNodes[offset + --oldLength];
|
|
314
|
+
teardownNode(e);
|
|
315
|
+
remove(e);
|
|
316
|
+
}
|
|
317
|
+
prevItems = nextItems;
|
|
318
|
+
nextItems = null;
|
|
319
|
+
return;
|
|
336
320
|
}
|
|
337
321
|
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
rowNodes = rowNodes.concat(newNodes);
|
|
322
|
+
if (start >= newLength) {
|
|
323
|
+
while (start < oldLength) {
|
|
324
|
+
const e = childNodes[offset + --oldLength];
|
|
325
|
+
teardownNode(e);
|
|
326
|
+
remove(e);
|
|
327
|
+
}
|
|
345
328
|
prevItems = nextItems;
|
|
329
|
+
nextItems = null;
|
|
346
330
|
return;
|
|
347
331
|
}
|
|
348
332
|
|
|
349
|
-
//
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
333
|
+
// suffix
|
|
334
|
+
for (
|
|
335
|
+
oldLength--, newLength--;
|
|
336
|
+
newLength > start &&
|
|
337
|
+
oldLength >= start &&
|
|
338
|
+
nextItems[newLength] === prevItems[oldLength];
|
|
339
|
+
oldLength--, newLength--
|
|
340
|
+
);
|
|
341
|
+
|
|
342
|
+
const nextKeys = new Set(nextItems);
|
|
343
|
+
const removalQueue = [];
|
|
344
|
+
for (let i = start; i <= oldLength; i++) {
|
|
345
|
+
if (!nextKeys.has(prevItems[i])) {
|
|
346
|
+
const ch = childNodes[i + offset];
|
|
347
|
+
teardownNode(ch);
|
|
348
|
+
removalQueue.push(ch);
|
|
349
|
+
childNodes[i + offset] = null;
|
|
354
350
|
}
|
|
355
|
-
|
|
351
|
+
}
|
|
352
|
+
for (const e of removalQueue) {
|
|
353
|
+
remove(e);
|
|
354
|
+
}
|
|
355
|
+
if (oldLength - start === removalQueue.length) {
|
|
356
356
|
prevItems = nextItems;
|
|
357
|
+
nextItems = null;
|
|
357
358
|
return;
|
|
358
359
|
}
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
// 5. Complex Diff (The Middle)
|
|
372
|
-
const oldStart = start;
|
|
373
|
-
const oldEnd = oldLength - end;
|
|
374
|
-
const newEnd = newLength - end;
|
|
375
|
-
|
|
376
|
-
// A. Build Map of existing items in the "changed" region
|
|
377
|
-
// key -> { node, index }
|
|
378
|
-
const keyMap = new Map();
|
|
379
|
-
for (let i = oldStart; i < oldEnd; i++) {
|
|
380
|
-
const item = prevItems[i];
|
|
381
|
-
// If duplicate items exist, first one wins or logic needs to be more robust.
|
|
382
|
-
// Assuming unique keys for simplicity or using last-write-wins:
|
|
383
|
-
// if (!keyMap.has(item)) {
|
|
384
|
-
keyMap.set(item, rowNodes[i]);
|
|
385
|
-
// } else {
|
|
386
|
-
// Handle duplicates by removing the extra immediately?
|
|
387
|
-
// Or handle collision. For now, assume distinct items or standard behavior.
|
|
388
|
-
// }
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
// B. Setup for new node list construction
|
|
392
|
-
const nextRowNodes = new Array(newLength);
|
|
393
|
-
|
|
394
|
-
// Copy Prefix
|
|
395
|
-
for (let i = 0; i < start; i++) {
|
|
396
|
-
nextRowNodes[i] = rowNodes[i];
|
|
397
|
-
}
|
|
398
|
-
// Copy Suffix
|
|
399
|
-
for (let i = 0; i < end; i++) {
|
|
400
|
-
nextRowNodes[newLength - 1 - i] = rowNodes[oldLength - 1 - i];
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
// C. Find anchor for insertions
|
|
404
|
-
// We insert before the first node of the suffix, or the endBookend.
|
|
405
|
-
const anchor = (end > 0) ? rowNodes[oldLength - end] : endBookend;
|
|
406
|
-
|
|
407
|
-
// D. Iterate new middle
|
|
408
|
-
for (let i = oldStart; i < newEnd; i++) {
|
|
409
|
-
const newItem = nextItems[i];
|
|
410
|
-
let node;
|
|
411
|
-
|
|
412
|
-
if (keyMap.has(newItem)) {
|
|
413
|
-
// Reuse existing
|
|
414
|
-
node = keyMap.get(newItem);
|
|
415
|
-
keyMap.delete(newItem);
|
|
416
|
-
|
|
417
|
-
// DOM Move:
|
|
418
|
-
// We always insertBefore the anchor.
|
|
419
|
-
// Since we are iterating forward, "anchor" isn't static.
|
|
420
|
-
// Actually, simply inserting before the *current* anchor works if we
|
|
421
|
-
// process carefully, but standard "place and move cursor" is safer.
|
|
422
|
-
parent.insertBefore(node, anchor);
|
|
423
|
-
} else {
|
|
424
|
-
// Create new
|
|
425
|
-
node = render(newItem);
|
|
426
|
-
parent.insertBefore(node, anchor);
|
|
360
|
+
let keyMap = new Map();
|
|
361
|
+
for (let i = start; i <= oldLength; i++) {
|
|
362
|
+
if (
|
|
363
|
+
childNodes[i + offset] &&
|
|
364
|
+
(!nextItems[i] ||
|
|
365
|
+
prevItems[i] !== nextItems[i])
|
|
366
|
+
) {
|
|
367
|
+
keyMap.set(prevItems[i], {
|
|
368
|
+
el: childNodes[i + offset],
|
|
369
|
+
item: prevItems[i],
|
|
370
|
+
});
|
|
427
371
|
}
|
|
428
|
-
nextRowNodes[i] = node;
|
|
429
372
|
}
|
|
430
373
|
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
374
|
+
while (start <= newLength) {
|
|
375
|
+
const newChd = nextItems[start];
|
|
376
|
+
const oldChd = prevItems[start];
|
|
377
|
+
if (newChd === oldChd) {
|
|
378
|
+
start++;
|
|
379
|
+
continue;
|
|
380
|
+
}
|
|
381
|
+
if (oldChd === undefined) {
|
|
382
|
+
parent.insertBefore(render(newChd), endBookend);
|
|
383
|
+
start++;
|
|
384
|
+
continue;
|
|
385
|
+
}
|
|
386
|
+
const mappedOld = keyMap.get(newChd);
|
|
387
|
+
if (mappedOld) {
|
|
388
|
+
const oldDom = childNodeList[start + offset];
|
|
389
|
+
const { el, item } = mappedOld;
|
|
390
|
+
if (oldDom !== el) {
|
|
391
|
+
const tmp = el.nextSibling;
|
|
392
|
+
parent.insertBefore(el, oldDom);
|
|
393
|
+
parent.insertBefore(oldDom, tmp);
|
|
394
|
+
} else if (item !== newChd) {
|
|
395
|
+
replaceWith(newChd, el, render);
|
|
396
|
+
}
|
|
397
|
+
keyMap.delete(newChd);
|
|
398
|
+
} else if (oldChd !== newChd) {
|
|
399
|
+
parent.insertBefore(render(newChd), childNodeList[start + offset]);
|
|
400
|
+
}
|
|
401
|
+
start++;
|
|
436
402
|
}
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
// If it WAS in the new range, we removed it from the map.
|
|
443
|
-
// So map.values() is exactly what needs to die.
|
|
444
|
-
|
|
445
|
-
// Update State
|
|
446
|
-
rowNodes = nextRowNodes;
|
|
403
|
+
for (const { el } of keyMap.values()) {
|
|
404
|
+
teardownNode(el);
|
|
405
|
+
remove(el);
|
|
406
|
+
}
|
|
407
|
+
keyMap = null;
|
|
447
408
|
prevItems = nextItems;
|
|
409
|
+
nextItems = null;
|
|
448
410
|
});
|
|
449
|
-
|
|
450
411
|
return outlet;
|
|
451
412
|
}
|
|
413
|
+
|
|
452
414
|
export function isolatedTerminalList(props) {
|
|
453
415
|
let parent;
|
|
454
416
|
let outlet = document.createDocumentFragment();
|
|
455
|
-
|
|
456
|
-
// State
|
|
457
|
-
let prevItems = [];
|
|
458
|
-
let rowNodes = []; // The "Shadow Array"
|
|
459
|
-
|
|
417
|
+
let prevItems;
|
|
460
418
|
const startBookend = document.createComment("") as any;
|
|
461
419
|
const endBookend = document.createComment("") as any;
|
|
462
|
-
|
|
463
420
|
startBookend.$frag = outlet;
|
|
464
421
|
startBookend.$end = endBookend;
|
|
465
|
-
|
|
466
422
|
const render = props.render;
|
|
467
423
|
|
|
468
424
|
staticEffect(() => {
|
|
469
425
|
parent = startBookend.parentNode;
|
|
470
|
-
|
|
471
|
-
// 1. Initialization
|
|
472
426
|
if (!parent) {
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
outlet.append(startBookend, ...newNodes, endBookend);
|
|
477
|
-
|
|
478
|
-
prevItems = items;
|
|
479
|
-
rowNodes = newNodes;
|
|
427
|
+
prevItems = props.items();
|
|
428
|
+
outlet.append(startBookend, ...prevItems.map(render), endBookend);
|
|
480
429
|
return;
|
|
481
430
|
}
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
if (oldLength !== 0) {
|
|
490
|
-
// Optimization: If the parent only contains our list (between bookends),
|
|
491
|
-
// we might want to use textContent = "". However, to be safe with
|
|
492
|
-
// bookends logic, we remove specifically known nodes.
|
|
493
|
-
for (let i = 0; i < oldLength; i++) {
|
|
494
|
-
const node = rowNodes[i];
|
|
495
|
-
shallowTeardown(node);
|
|
496
|
-
// node.remove();
|
|
497
|
-
}
|
|
498
|
-
parent.textContent = "";
|
|
499
|
-
parent.append(startBookend, endBookend);
|
|
500
|
-
rowNodes = [];
|
|
501
|
-
prevItems = [];
|
|
502
|
-
}
|
|
431
|
+
let nextItems = props.items();
|
|
432
|
+
let newLength = nextItems.length;
|
|
433
|
+
let oldLength = prevItems.length;
|
|
434
|
+
if (!oldLength && newLength) {
|
|
435
|
+
endBookend.before(...nextItems.map(render))
|
|
436
|
+
prevItems = nextItems;
|
|
437
|
+
nextItems = null;
|
|
503
438
|
return;
|
|
504
439
|
}
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
440
|
+
const childNodeList = parent.childNodes as NodeListOf<ChildNode>;
|
|
441
|
+
if (!newLength) {
|
|
442
|
+
const end = childNodeList.length - 1;
|
|
443
|
+
for (let i = 1; i < end; i++) {
|
|
444
|
+
shallowTeardown(childNodeList[i]);
|
|
445
|
+
}
|
|
446
|
+
parent.textContent = "";
|
|
447
|
+
parent.append(startBookend, endBookend);
|
|
512
448
|
prevItems = nextItems;
|
|
449
|
+
nextItems = null;
|
|
513
450
|
return;
|
|
514
451
|
}
|
|
515
452
|
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
start++;
|
|
453
|
+
let start = nextItems.findIndex((item, index) => prevItems[index] !== item);
|
|
454
|
+
if (start === oldLength) {
|
|
455
|
+
endBookend.before(...nextItems.slice(start).map(render));
|
|
456
|
+
prevItems = nextItems;
|
|
457
|
+
nextItems = null;
|
|
458
|
+
return;
|
|
523
459
|
}
|
|
524
460
|
|
|
525
|
-
|
|
526
|
-
if (start
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
461
|
+
let childNodes = Array.from(childNodeList);
|
|
462
|
+
if (start < 0) {
|
|
463
|
+
for (let i = nextItems.length; i < oldLength; i++) {
|
|
464
|
+
const e = childNodes[1 + --oldLength];
|
|
465
|
+
shallowTeardown(e);
|
|
466
|
+
e.remove();
|
|
467
|
+
}
|
|
532
468
|
prevItems = nextItems;
|
|
469
|
+
nextItems = null;
|
|
470
|
+
childNodes = null;
|
|
533
471
|
return;
|
|
534
472
|
}
|
|
535
473
|
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
node.remove();
|
|
474
|
+
if (start >= newLength) {
|
|
475
|
+
while (start < oldLength) {
|
|
476
|
+
const e = childNodes[1 + --oldLength];
|
|
477
|
+
shallowTeardown(e);
|
|
478
|
+
e.remove();
|
|
542
479
|
}
|
|
543
|
-
rowNodes.length = newLength;
|
|
544
480
|
prevItems = nextItems;
|
|
481
|
+
nextItems = null;
|
|
482
|
+
childNodes = null;
|
|
545
483
|
return;
|
|
546
484
|
}
|
|
547
485
|
|
|
548
|
-
//
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
newLength
|
|
552
|
-
oldLength
|
|
553
|
-
nextItems[newLength
|
|
554
|
-
|
|
555
|
-
|
|
486
|
+
// suffix
|
|
487
|
+
for (
|
|
488
|
+
oldLength--, newLength--;
|
|
489
|
+
newLength > start &&
|
|
490
|
+
oldLength >= start &&
|
|
491
|
+
nextItems[newLength] === prevItems[oldLength];
|
|
492
|
+
oldLength--, newLength--
|
|
493
|
+
);
|
|
494
|
+
|
|
495
|
+
const nextKeys = new Set(nextItems);
|
|
496
|
+
const removalQueue = [];
|
|
497
|
+
for (let i = start; i <= oldLength; i++) {
|
|
498
|
+
if (!nextKeys.has(prevItems[i])) {
|
|
499
|
+
const ch = childNodes[i + 1];
|
|
500
|
+
shallowTeardown(ch);
|
|
501
|
+
removalQueue.push(ch);
|
|
502
|
+
childNodes[i + 1] = null;
|
|
503
|
+
}
|
|
556
504
|
}
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
const keyMap = new Map();
|
|
565
|
-
for (let i = oldStart; i < oldEnd; i++) {
|
|
566
|
-
const item = prevItems[i];
|
|
567
|
-
keyMap.set(item, rowNodes[i]);
|
|
505
|
+
if (removalQueue.length === prevItems.length) {
|
|
506
|
+
parent.textContent = "";
|
|
507
|
+
parent.append(startBookend, ...nextItems.map(render), endBookend);
|
|
508
|
+
prevItems = nextItems;
|
|
509
|
+
nextItems = null;
|
|
510
|
+
childNodes = null;
|
|
511
|
+
return;
|
|
568
512
|
}
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
// Copy Prefix
|
|
573
|
-
for (let i = 0; i < start; i++) {
|
|
574
|
-
nextRowNodes[i] = rowNodes[i];
|
|
513
|
+
for (const e of removalQueue) {
|
|
514
|
+
e.remove();
|
|
575
515
|
}
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
516
|
+
if (oldLength - start === removalQueue.length) {
|
|
517
|
+
prevItems = nextItems;
|
|
518
|
+
nextItems = null;
|
|
519
|
+
childNodes = null;
|
|
520
|
+
return;
|
|
579
521
|
}
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
parent.insertBefore(node, anchor);
|
|
592
|
-
nextRowNodes[i] = node;
|
|
593
|
-
} else {
|
|
594
|
-
const node = render(newItem);
|
|
595
|
-
parent.insertBefore(node, anchor);
|
|
596
|
-
nextRowNodes[i] = node;
|
|
522
|
+
let keyMap = new Map();
|
|
523
|
+
for (let i = start; i <= oldLength; i++) {
|
|
524
|
+
if (
|
|
525
|
+
childNodes[i + 1] &&
|
|
526
|
+
(!nextItems[i] ||
|
|
527
|
+
prevItems[i] !== nextItems[i])
|
|
528
|
+
) {
|
|
529
|
+
keyMap.set(prevItems[i], {
|
|
530
|
+
el: childNodes[i + 1],
|
|
531
|
+
item: prevItems[i],
|
|
532
|
+
});
|
|
597
533
|
}
|
|
598
534
|
}
|
|
599
535
|
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
536
|
+
while (start <= newLength) {
|
|
537
|
+
const newChd = nextItems[start];
|
|
538
|
+
const oldChd = prevItems[start];
|
|
539
|
+
if (newChd === oldChd) {
|
|
540
|
+
start++;
|
|
541
|
+
continue;
|
|
542
|
+
}
|
|
543
|
+
if (oldChd === undefined) {
|
|
544
|
+
parent.insertBefore(render(newChd), endBookend);
|
|
545
|
+
start++;
|
|
546
|
+
continue;
|
|
547
|
+
}
|
|
548
|
+
const mappedOld = keyMap.get(newChd);
|
|
549
|
+
if (mappedOld) {
|
|
550
|
+
const oldDom = childNodeList[start + 1];
|
|
551
|
+
const { el, item } = mappedOld;
|
|
552
|
+
if (oldDom !== el) {
|
|
553
|
+
const tmp = el.nextSibling;
|
|
554
|
+
parent.insertBefore(el, oldDom);
|
|
555
|
+
parent.insertBefore(oldDom, tmp);
|
|
556
|
+
} else if (item !== newChd) {
|
|
557
|
+
replaceWith(newChd, el, render);
|
|
558
|
+
}
|
|
559
|
+
keyMap.delete(newChd);
|
|
560
|
+
} else if (oldChd !== newChd) {
|
|
561
|
+
parent.insertBefore(render(newChd), childNodeList[start + 1]);
|
|
562
|
+
}
|
|
563
|
+
start++;
|
|
604
564
|
}
|
|
605
|
-
|
|
606
|
-
|
|
565
|
+
for (const { el } of keyMap.values()) {
|
|
566
|
+
shallowTeardown(el);
|
|
567
|
+
el.remove();
|
|
568
|
+
}
|
|
569
|
+
keyMap = null;
|
|
607
570
|
prevItems = nextItems;
|
|
571
|
+
nextItems = null;
|
|
572
|
+
childNodes = null;
|
|
608
573
|
});
|
|
609
|
-
|
|
610
574
|
return outlet;
|
|
611
|
-
}
|
|
575
|
+
}
|
|
576
|
+
|
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":"2834d3d5f4c0526c760679f15c35791e91f4e51d54d24d00610e35b7ce7a9e01","signature":"a53dff95094f1f7fee261ff1879f5909cd440f02aa68ff6893d017b2343181d1"},{"version":"b33d036c5c7a309dcef7c008214bd6dc62bb9379987f5b3f7f3d407e38739836","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"}
|
|
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":"b30f34427d2857a1a267fb5560281dc3322439753ac89be4a864ae418c48264c","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"}
|