@thyn/core 0.0.319 → 0.0.321

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 CHANGED
@@ -438,24 +438,35 @@ export function isolatedTerminalList(props) {
438
438
  return;
439
439
  }
440
440
  let start = nextItems.findIndex((item, index) => prevItems[index] !== item);
441
- if (start === oldLength) {
442
- endBookend.before(...nextItems.slice(start).map(render));
441
+ if (start === oldLength) { // append items
442
+ // 1. Create a lightweight fragment to hold the new nodes
443
+ // This avoids creating an intermediate array (like .slice would)
444
+ // const fragment = document.createDocumentFragment();
445
+ // 2. Iterate strictly over the new range
446
+ for (let i = start; i < newLength; i++) {
447
+ // Append the rendered node to the fragment
448
+ // (Using .appendChild is slightly faster than .append if render() returns a Node)
449
+ // fragment.appendChild(render(nextItems[i]));
450
+ parent.insertBefore(render(nextItems[i]), endBookend);
451
+ }
452
+ // 3. Insert the entire batch at once
453
+ // parent.insertBefore(fragment, endBookend);
443
454
  prevItems = nextItems;
444
455
  nextItems = null;
445
456
  return;
446
457
  }
447
- let childNodes = Array.from(childNodeList);
448
- if (start < 0) {
449
- for (let i = nextItems.length; i < oldLength; i++) {
450
- const e = childNodes[1 + --oldLength];
451
- shallowTeardown(e);
452
- e.remove();
458
+ if (start < 0) { // truncation
459
+ let removeCount = oldLength - newLength;
460
+ while (removeCount-- > 0) {
461
+ const node = endBookend.previousSibling;
462
+ shallowTeardown(node);
463
+ node.remove();
453
464
  }
454
465
  prevItems = nextItems;
455
466
  nextItems = null;
456
- childNodes = null;
457
467
  return;
458
468
  }
469
+ let childNodes = Array.from(childNodeList);
459
470
  if (start >= newLength) {
460
471
  while (start < oldLength) {
461
472
  const e = childNodes[1 + --oldLength];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thyn/core",
3
- "version": "0.0.319",
3
+ "version": "0.0.321",
4
4
  "scripts": {
5
5
  "build": "tsc",
6
6
  "pub": "tsc && npm version patch -f && npm -f publish --access=public",
package/src/element.ts CHANGED
@@ -465,26 +465,40 @@ export function isolatedTerminalList(props) {
465
465
  }
466
466
 
467
467
  let start = nextItems.findIndex((item, index) => prevItems[index] !== item);
468
- if (start === oldLength) {
469
- endBookend.before(...nextItems.slice(start).map(render));
468
+ if (start === oldLength) { // append items
469
+ // 1. Create a lightweight fragment to hold the new nodes
470
+ // This avoids creating an intermediate array (like .slice would)
471
+ // const fragment = document.createDocumentFragment();
472
+
473
+ // 2. Iterate strictly over the new range
474
+ for (let i = start; i < newLength; i++) {
475
+ // Append the rendered node to the fragment
476
+ // (Using .appendChild is slightly faster than .append if render() returns a Node)
477
+ // fragment.appendChild(render(nextItems[i]));
478
+ parent.insertBefore(render(nextItems[i]), endBookend);
479
+ }
480
+
481
+ // 3. Insert the entire batch at once
482
+ // parent.insertBefore(fragment, endBookend);
483
+
470
484
  prevItems = nextItems;
471
485
  nextItems = null;
472
486
  return;
473
487
  }
474
488
 
475
- let childNodes = Array.from(childNodeList);
476
- if (start < 0) {
477
- for (let i = nextItems.length; i < oldLength; i++) {
478
- const e = childNodes[1 + --oldLength];
479
- shallowTeardown(e);
480
- e.remove();
489
+ if (start < 0) { // truncation
490
+ let removeCount = oldLength - newLength;
491
+ while (removeCount-- > 0) {
492
+ const node = endBookend.previousSibling;
493
+ shallowTeardown(node);
494
+ node.remove();
481
495
  }
482
496
  prevItems = nextItems;
483
497
  nextItems = null;
484
- childNodes = null;
485
498
  return;
486
499
  }
487
500
 
501
+ let childNodes = Array.from(childNodeList);
488
502
  if (start >= newLength) {
489
503
  while (start < oldLength) {
490
504
  const e = childNodes[1 + --oldLength];
@@ -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":"49047a6ace3213f1548ecce45653e2ff9c87af34ec944a70616c61ae7f18e24f","signature":"c084f39693d652cdebc33667d280f50dece748c2ed4b408e06615834e51a5097"},{"version":"9d501c790355584f293b5f7a0149fec0c4093389d697f98b04ffc1fc4b335680","signature":"f3ddd3670c33381859688f604378a0028cafa5b52cc936da9a225933eb464387"},{"version":"0e3be4d02e120fbbfd12edcc9ad69ff668f5f4303e2b9c80521a8a722428e97d","signature":"12fd8be483df752ac04ae85347f9c397954ac2390e0de50612bf8b9899d7767d"},{"version":"23e3a2d8ef7695586b582f6366a28b1404801ada9a0c82d895f19344f8100ea5","signature":"a32c52a25b47067dac589266e7667623ea1ef2b0c1f9c4fd41adbc7b67a59eee"},{"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":"49047a6ace3213f1548ecce45653e2ff9c87af34ec944a70616c61ae7f18e24f","signature":"c084f39693d652cdebc33667d280f50dece748c2ed4b408e06615834e51a5097"},{"version":"c7830418bc552a4adc203a857705a724d777aea8ec23c5d1190f4e0aa475673d","signature":"f3ddd3670c33381859688f604378a0028cafa5b52cc936da9a225933eb464387"},{"version":"0e3be4d02e120fbbfd12edcc9ad69ff668f5f4303e2b9c80521a8a722428e97d","signature":"12fd8be483df752ac04ae85347f9c397954ac2390e0de50612bf8b9899d7767d"},{"version":"23e3a2d8ef7695586b582f6366a28b1404801ada9a0c82d895f19344f8100ea5","signature":"a32c52a25b47067dac589266e7667623ea1ef2b0c1f9c4fd41adbc7b67a59eee"},{"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"}
package/dist/element.d.ts DELETED
@@ -1,18 +0,0 @@
1
- export declare function mount(app: any, parent: any): void;
2
- export declare function collectEffect(effectFn: any): void;
3
- export declare function createReactiveTextNode(v: any): any;
4
- export declare function component(name: any, props?: any): any;
5
- export declare function fixedComponent(name: any, props?: any): any;
6
- export declare function setAttribute(el: any, key: any, val: any): any;
7
- export declare function setProperty(el: any, key: any, val: any): any;
8
- export declare function setReactiveAttribute(el: any, key: any, val: any): any;
9
- export declare function setReactiveProperty(el: any, key: any, val: any): any;
10
- export declare function addChildren(e: any, children: any): any;
11
- export declare function markAsReactive(el: any): any;
12
- export declare function addEffect(el: any, ef: any): any;
13
- export declare function show(props: any): (Element | Comment) & {
14
- $fx?: any;
15
- };
16
- export declare function terminalList(props: any): DocumentFragment;
17
- export declare function list(props: any, terminal?: boolean): DocumentFragment;
18
- export declare function isolatedTerminalList(props: any): DocumentFragment;
package/dist/events.d.ts DELETED
@@ -1 +0,0 @@
1
- export declare function addEvent(el: any, name: string, handler: Function): void;
package/dist/events.js DELETED
@@ -1,55 +0,0 @@
1
- const delegatedEvents = new Set();
2
- const eventMap = {
3
- focus: 'focusin',
4
- blur: 'focusout',
5
- };
6
- // Events that bubble and are safe to delegate
7
- const bubbly = new Set([
8
- 'click', 'dblclick', 'contextmenu',
9
- 'keydown', 'keypress', 'keyup',
10
- 'mousedown', 'mousemove', 'mouseup', 'mouseout', 'mouseover',
11
- 'touchstart', 'touchend', 'touchmove', 'touchcancel',
12
- 'change', 'input', 'submit', 'reset',
13
- 'focusin', 'focusout',
14
- 'drag', 'dragend', 'dragenter', 'dragleave', 'dragover', 'dragstart', 'drop',
15
- 'animationstart', 'animationend', 'animationiteration',
16
- 'transitionend'
17
- ]);
18
- export function addEvent(el, name, handler) {
19
- let eventName = name.startsWith('on') ? name.slice(2).toLowerCase() : name.toLowerCase();
20
- // Map events if needed (e.g. focus -> focusin)
21
- if (eventName in eventMap) {
22
- eventName = eventMap[eventName];
23
- }
24
- // If it's a known bubbling event, delegate it
25
- if (bubbly.has(eventName)) {
26
- if (!delegatedEvents.has(eventName)) {
27
- delegatedEvents.add(eventName);
28
- document.addEventListener(eventName, handleEvent);
29
- }
30
- if (!el.$$events)
31
- el.$$events = {};
32
- el.$$events[eventName] = handler;
33
- }
34
- else {
35
- // Fallback for non-bubbling events (scroll, load, mouseenter, etc.)
36
- // We attach directly.
37
- el.addEventListener(eventName, handler);
38
- }
39
- }
40
- function handleEvent(e) {
41
- let node = e.target;
42
- const eventName = e.type;
43
- while (node) {
44
- const handler = node.$$events?.[eventName];
45
- if (handler) {
46
- // Use .call to set 'this' to the element, mimicking currentTarget
47
- handler.call(node, e);
48
- if (e.cancelBubble)
49
- return;
50
- }
51
- if (node === document)
52
- break;
53
- node = node.parentNode;
54
- }
55
- }
package/dist/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export { addChildren, addEffect, component, createReactiveTextNode, fixedComponent, isolatedTerminalList, list, markAsReactive, mount, setAttribute, setProperty, setReactiveAttribute, setReactiveProperty, show, terminalList } from "./element.js";
2
- export { $effect, $signal, staticEffect } from "./signals.js";
package/dist/index.js DELETED
@@ -1,2 +0,0 @@
1
- export { addChildren, addEffect, component, createReactiveTextNode, fixedComponent, isolatedTerminalList, list, markAsReactive, mount, setAttribute, setProperty, setReactiveAttribute, setReactiveProperty, show, terminalList } from "./element.js";
2
- export { $effect, $signal, staticEffect } from "./signals.js";
package/dist/router.d.ts DELETED
@@ -1,16 +0,0 @@
1
- export declare const router: {
2
- path: import("./signals.js").Signal<string>;
3
- param: (name: string) => string | undefined;
4
- };
5
- interface Route {
6
- path: string;
7
- component: () => Node;
8
- }
9
- export declare function Router({ routes }: {
10
- routes: Route[];
11
- }): any;
12
- export declare function Link({ slot, to }: {
13
- slot: any;
14
- to: any;
15
- }): HTMLAnchorElement;
16
- export {};
package/dist/router.js DELETED
@@ -1,66 +0,0 @@
1
- import { component, show } from "./element.js";
2
- import { $signal, staticEffect } from "./signals.js";
3
- const params = $signal({});
4
- export const router = {
5
- path: $signal(location.pathname),
6
- param: (name) => params()[name],
7
- };
8
- export function Router({ routes }) {
9
- const current = $signal(null);
10
- const compiledRoutes = routes.map(route => {
11
- const compiledRoute = {
12
- path: null,
13
- raw: route,
14
- names: [],
15
- component: route.component,
16
- };
17
- compiledRoute.path = new RegExp(`^${route.path.replace(/\/:([^/]+)/g, (_, name) => {
18
- compiledRoute.names.push(name);
19
- return '/([^/]+)';
20
- })}$`);
21
- return compiledRoute;
22
- });
23
- staticEffect(() => {
24
- const pn = router.path();
25
- if (pn !== location.pathname) {
26
- history.pushState({}, "", pn);
27
- }
28
- const ps = {};
29
- let rt = null;
30
- for (const route of compiledRoutes) {
31
- const match = pn.match(route.path);
32
- if (!match)
33
- continue;
34
- for (let i = 0; i < route.names.length; i++) {
35
- const name = route.names[i];
36
- ps[name] = decodeURIComponent(match[i + 1]);
37
- }
38
- rt = route;
39
- break;
40
- }
41
- ;
42
- current(rt);
43
- params(ps);
44
- });
45
- return component(show, compiledRoutes.map((r) => ({
46
- if: () => r === current(),
47
- then: () => component(r.component),
48
- })));
49
- }
50
- export function Link({ slot, to }) {
51
- const a = document.createElement("a");
52
- a.href = to;
53
- for (const ch of slot) {
54
- a.appendChild(ch);
55
- }
56
- a.onclick = (e) => {
57
- if (!e.defaultPrevented &&
58
- e.button === 0 &&
59
- !(e.metaKey || e.ctrlKey || e.shiftKey || e.altKey)) {
60
- e.preventDefault();
61
- history.pushState({}, "", to);
62
- router.path(to);
63
- }
64
- };
65
- return a;
66
- }
package/dist/signals.d.ts DELETED
@@ -1,10 +0,0 @@
1
- export interface Signal<T> {
2
- (): T;
3
- (newValue: T): void;
4
- (updater: (prev: T) => T): void;
5
- }
6
- export declare function $signal<T>(initialValue: T): Signal<T>;
7
- export declare function $effect(fn: (() => (() => void) | void) & any): any;
8
- export declare function staticEffect(fn: (() => (() => void) | void) & any): any;
9
- export declare function uncollectedStaticEffect(fn: (() => (() => void) | void) & any): any;
10
- export declare function cleanup(ef: any): void;
package/dist/signals.js DELETED
@@ -1,101 +0,0 @@
1
- import { collectEffect } from "./element.js";
2
- let currentEffect;
3
- let isBatching;
4
- const pendingEffects = [];
5
- function scheduleEffect(effectFn) {
6
- pendingEffects.push(effectFn);
7
- if (!isBatching) {
8
- isBatching = true;
9
- queueMicrotask(() => {
10
- for (const ef of pendingEffects) {
11
- if (ef.dyn) {
12
- cleanup(ef);
13
- const prev = currentEffect;
14
- currentEffect = ef;
15
- runEffectFn(ef);
16
- currentEffect = prev;
17
- }
18
- else {
19
- ef();
20
- }
21
- }
22
- pendingEffects.length = 0;
23
- isBatching = false;
24
- });
25
- }
26
- }
27
- export function $signal(initialValue) {
28
- let value = initialValue;
29
- const subs = new Set();
30
- return function (newValue) {
31
- if (!arguments.length) {
32
- if (currentEffect) {
33
- subs.add(currentEffect);
34
- const td = currentEffect.td;
35
- currentEffect.td = !td ? subs : (Array.isArray(td) ? (td.push(subs), td) : [td, subs]);
36
- }
37
- return value;
38
- }
39
- newValue = typeof newValue === "function" ? newValue(value) : newValue;
40
- if (newValue !== value) {
41
- value = newValue;
42
- subs.forEach(scheduleEffect);
43
- }
44
- };
45
- }
46
- function runEffectFn(ef) {
47
- const td = ef();
48
- if (td) {
49
- if (ef.td) {
50
- if (Array.isArray(ef.td)) {
51
- ef.td.push(td);
52
- }
53
- else {
54
- ef.td = [ef.td, td];
55
- }
56
- }
57
- else {
58
- ef.td = td;
59
- }
60
- }
61
- }
62
- export function $effect(fn) {
63
- const prev = currentEffect;
64
- currentEffect = fn;
65
- fn.dyn = true;
66
- runEffectFn(fn);
67
- currentEffect = prev;
68
- collectEffect(fn);
69
- return fn;
70
- }
71
- export function staticEffect(fn) {
72
- fn.td = null;
73
- const prev = currentEffect;
74
- currentEffect = fn;
75
- fn();
76
- currentEffect = prev;
77
- collectEffect(fn);
78
- return fn;
79
- }
80
- export function uncollectedStaticEffect(fn) {
81
- fn.td = null;
82
- const prev = currentEffect;
83
- currentEffect = fn;
84
- fn();
85
- currentEffect = prev;
86
- return fn;
87
- }
88
- export function cleanup(ef) {
89
- if (!ef.td)
90
- return;
91
- if (ef.td.delete) {
92
- ef.td.delete(ef);
93
- }
94
- else if (typeof ef.td === "function") {
95
- ef.td();
96
- }
97
- else {
98
- for (const f of ef.td)
99
- typeof f === "function" ? f() : f.delete(ef);
100
- }
101
- }