@getforma/core 1.1.0 → 1.3.0

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.
Files changed (45) hide show
  1. package/dist/{chunk-MIOMT2CB.js → chunk-AJP4OVCN.js} +29 -9
  2. package/dist/chunk-AJP4OVCN.js.map +1 -0
  3. package/dist/{chunk-XLVBYXOU.js → chunk-ETPJTPYD.js} +6 -3
  4. package/dist/chunk-ETPJTPYD.js.map +1 -0
  5. package/dist/{chunk-JRQNDXX7.cjs → chunk-FBM7V4NE.cjs} +68 -47
  6. package/dist/chunk-FBM7V4NE.cjs.map +1 -0
  7. package/dist/{chunk-W7OUWVRA.cjs → chunk-H7MDUHS5.cjs} +6 -2
  8. package/dist/chunk-H7MDUHS5.cjs.map +1 -0
  9. package/dist/{chunk-2Y5US35K.cjs → chunk-KUXNZ5MG.cjs} +12 -12
  10. package/dist/{chunk-2Y5US35K.cjs.map → chunk-KUXNZ5MG.cjs.map} +1 -1
  11. package/dist/{chunk-INNOI6TG.js → chunk-Y3A2EVVS.js} +3 -3
  12. package/dist/{chunk-INNOI6TG.js.map → chunk-Y3A2EVVS.js.map} +1 -1
  13. package/dist/forma-runtime-csp.js +178 -79
  14. package/dist/forma-runtime.js +178 -79
  15. package/dist/formajs-runtime-hardened.global.js +178 -79
  16. package/dist/formajs-runtime-hardened.global.js.map +1 -1
  17. package/dist/formajs-runtime.global.js +178 -79
  18. package/dist/formajs-runtime.global.js.map +1 -1
  19. package/dist/formajs.global.js +245 -61
  20. package/dist/formajs.global.js.map +1 -1
  21. package/dist/http.cjs +11 -11
  22. package/dist/http.js +2 -2
  23. package/dist/index.cjs +307 -143
  24. package/dist/index.cjs.map +1 -1
  25. package/dist/index.d.cts +34 -2
  26. package/dist/index.d.ts +34 -2
  27. package/dist/index.js +248 -88
  28. package/dist/index.js.map +1 -1
  29. package/dist/runtime-hardened.cjs +178 -79
  30. package/dist/runtime-hardened.cjs.map +1 -1
  31. package/dist/runtime-hardened.js +178 -79
  32. package/dist/runtime-hardened.js.map +1 -1
  33. package/dist/runtime.cjs +198 -103
  34. package/dist/runtime.cjs.map +1 -1
  35. package/dist/runtime.js +174 -79
  36. package/dist/runtime.js.map +1 -1
  37. package/dist/server.cjs +7 -7
  38. package/dist/server.js +2 -2
  39. package/dist/tc39-compat.cjs +3 -3
  40. package/dist/tc39-compat.js +1 -1
  41. package/package.json +1 -1
  42. package/dist/chunk-JRQNDXX7.cjs.map +0 -1
  43. package/dist/chunk-MIOMT2CB.js.map +0 -1
  44. package/dist/chunk-W7OUWVRA.cjs.map +0 -1
  45. package/dist/chunk-XLVBYXOU.js.map +0 -1
@@ -1,12 +1,23 @@
1
1
  'use strict';
2
2
 
3
- var chunk2Y5US35K_cjs = require('./chunk-2Y5US35K.cjs');
4
- var chunkW7OUWVRA_cjs = require('./chunk-W7OUWVRA.cjs');
3
+ var chunkKUXNZ5MG_cjs = require('./chunk-KUXNZ5MG.cjs');
4
+ var chunkH7MDUHS5_cjs = require('./chunk-H7MDUHS5.cjs');
5
5
 
6
6
  // src/dom/element.ts
7
7
  var Fragment = /* @__PURE__ */ Symbol.for("forma.fragment");
8
8
  var SVG_NS = "http://www.w3.org/2000/svg";
9
9
  var XLINK_NS = "http://www.w3.org/1999/xlink";
10
+ var DUAL_USE_SVG_TAGS = /* @__PURE__ */ new Set(["a", "title", "script", "style", "font"]);
11
+ var currentNamespace = null;
12
+ function svg(build) {
13
+ const prev = currentNamespace;
14
+ currentNamespace = SVG_NS;
15
+ try {
16
+ return build();
17
+ } finally {
18
+ currentNamespace = prev;
19
+ }
20
+ }
10
21
  var SVG_TAGS = /* @__PURE__ */ new Set([
11
22
  "svg",
12
23
  "path",
@@ -156,7 +167,7 @@ function getCache(el) {
156
167
  }
157
168
  function handleClass(el, _key, value) {
158
169
  if (typeof value === "function") {
159
- chunk2Y5US35K_cjs.internalEffect(() => {
170
+ chunkKUXNZ5MG_cjs.internalEffect(() => {
160
171
  const v = value();
161
172
  const cache = getCache(el);
162
173
  if (cache["class"] === v) return;
@@ -206,7 +217,7 @@ function applyStyleObj(el, obj, prevKeys) {
206
217
  function handleStyle(el, _key, value) {
207
218
  if (typeof value === "function") {
208
219
  let prevKeys = [];
209
- chunk2Y5US35K_cjs.internalEffect(() => {
220
+ chunkKUXNZ5MG_cjs.internalEffect(() => {
210
221
  const v = value();
211
222
  if (typeof v === "string") {
212
223
  const cache = getCache(el);
@@ -236,7 +247,7 @@ function handleEvent(el, key, value) {
236
247
  }
237
248
  function handleInnerHTML(el, _key, value) {
238
249
  if (typeof value === "function") {
239
- chunk2Y5US35K_cjs.internalEffect(() => {
250
+ chunkKUXNZ5MG_cjs.internalEffect(() => {
240
251
  const resolved = value();
241
252
  if (resolved == null) {
242
253
  el.innerHTML = "";
@@ -280,7 +291,7 @@ function handleInnerHTML(el, _key, value) {
280
291
  function handleXLink(el, key, value) {
281
292
  const localName = key.slice(6);
282
293
  if (typeof value === "function") {
283
- chunk2Y5US35K_cjs.internalEffect(() => {
294
+ chunkKUXNZ5MG_cjs.internalEffect(() => {
284
295
  const v = value();
285
296
  if (v == null || v === false) {
286
297
  el.removeAttributeNS(XLINK_NS, localName);
@@ -298,7 +309,7 @@ function handleXLink(el, key, value) {
298
309
  }
299
310
  function handleBooleanAttr(el, key, value) {
300
311
  if (typeof value === "function") {
301
- chunk2Y5US35K_cjs.internalEffect(() => {
312
+ chunkKUXNZ5MG_cjs.internalEffect(() => {
302
313
  const v = value();
303
314
  const cache = getCache(el);
304
315
  if (cache[key] === v) return;
@@ -322,7 +333,7 @@ function handleBooleanAttr(el, key, value) {
322
333
  }
323
334
  function handleGenericAttr(el, key, value) {
324
335
  if (typeof value === "function") {
325
- chunk2Y5US35K_cjs.internalEffect(() => {
336
+ chunkKUXNZ5MG_cjs.internalEffect(() => {
326
337
  const v = value();
327
338
  if (v == null || v === false) {
328
339
  const cache = getCache(el);
@@ -465,7 +476,7 @@ function appendChild(parent, child) {
465
476
  }
466
477
  currentNode = null;
467
478
  };
468
- chunk2Y5US35K_cjs.internalEffect(() => {
479
+ chunkKUXNZ5MG_cjs.internalEffect(() => {
469
480
  const v = child();
470
481
  let resolved = v;
471
482
  if (Array.isArray(v)) {
@@ -540,7 +551,12 @@ function h(tag, props, ...children) {
540
551
  return { type: "element", tag: tagName, props: props ?? null, children };
541
552
  }
542
553
  let el;
543
- if (ELEMENT_PROTOS && ELEMENT_PROTOS[tagName]) {
554
+ const svgCtx = currentNamespace === SVG_NS;
555
+ if (svgCtx && (SVG_TAGS.has(tagName) || DUAL_USE_SVG_TAGS.has(tagName))) {
556
+ el = document.createElementNS(SVG_NS, tagName);
557
+ } else if (!svgCtx && DUAL_USE_SVG_TAGS.has(tagName)) {
558
+ el = getProto(tagName).cloneNode(false);
559
+ } else if (ELEMENT_PROTOS && ELEMENT_PROTOS[tagName]) {
544
560
  el = ELEMENT_PROTOS[tagName].cloneNode(false);
545
561
  } else if (SVG_TAGS.has(tagName)) {
546
562
  el = document.createElementNS(SVG_NS, tagName);
@@ -615,7 +631,7 @@ function createShow(when, thenFn, elseFn = () => null) {
615
631
  let currentNode = null;
616
632
  let lastTruthy = null;
617
633
  let currentDispose = null;
618
- const showDispose = chunk2Y5US35K_cjs.internalEffect(() => {
634
+ const showDispose = chunkKUXNZ5MG_cjs.internalEffect(() => {
619
635
  const truthy = !!when();
620
636
  const DEBUG = typeof globalThis.__FORMA_DEBUG__ !== "undefined";
621
637
  const DEBUG_LABEL = DEBUG ? thenFn.toString().slice(0, 60) : "";
@@ -647,9 +663,9 @@ function createShow(when, thenFn, elseFn = () => null) {
647
663
  const branchFn = truthy ? thenFn : elseFn;
648
664
  if (branchFn) {
649
665
  let branchDispose;
650
- currentNode = chunk2Y5US35K_cjs.createRoot((dispose) => {
666
+ currentNode = chunkKUXNZ5MG_cjs.createRoot((dispose) => {
651
667
  branchDispose = dispose;
652
- return chunk2Y5US35K_cjs.untrack(() => branchFn());
668
+ return chunkKUXNZ5MG_cjs.untrack(() => branchFn());
653
669
  });
654
670
  currentDispose = branchDispose;
655
671
  } else {
@@ -659,7 +675,7 @@ function createShow(when, thenFn, elseFn = () => null) {
659
675
  parent.insertBefore(currentNode, endMarker);
660
676
  }
661
677
  });
662
- chunk2Y5US35K_cjs.registerDisposer(() => {
678
+ chunkKUXNZ5MG_cjs.registerDisposer(() => {
663
679
  if (currentDispose) {
664
680
  currentDispose();
665
681
  currentDispose = null;
@@ -707,7 +723,7 @@ function applyDynamicProps(el, props) {
707
723
  }
708
724
  const fn = value;
709
725
  const attrKey = key;
710
- chunk2Y5US35K_cjs.internalEffect(() => {
726
+ chunkKUXNZ5MG_cjs.internalEffect(() => {
711
727
  const v = fn();
712
728
  if (v === false || v == null) {
713
729
  el.removeAttribute(attrKey);
@@ -819,13 +835,13 @@ function setupShowEffect(desc, marker) {
819
835
  let elseFragment = null;
820
836
  const hasSSRContent = marker.start.nextSibling !== marker.end;
821
837
  if (!hasSSRContent && currentCondition) {
822
- if (chunkW7OUWVRA_cjs.__DEV__) console.warn("[forma] Hydration: show condition mismatch \u2014 SSR empty but client condition is true");
838
+ if (chunkH7MDUHS5_cjs.__DEV__) console.warn("[forma] Hydration: show condition mismatch \u2014 SSR empty but client condition is true");
823
839
  const trueBranch = desc.whenTrue();
824
840
  if (trueBranch instanceof Node) {
825
841
  marker.start.parentNode.insertBefore(trueBranch, marker.end);
826
842
  }
827
843
  }
828
- chunk2Y5US35K_cjs.internalEffect(() => {
844
+ chunkKUXNZ5MG_cjs.internalEffect(() => {
829
845
  const next = !!desc.condition();
830
846
  if (next === currentCondition) return;
831
847
  currentCondition = next;
@@ -872,7 +888,7 @@ function adoptBranchContent(desc, regionStart, regionEnd) {
872
888
  }
873
889
  function adoptNode(desc, ssrEl) {
874
890
  if (!ssrEl || ssrEl.tagName !== desc.tag.toUpperCase()) {
875
- if (chunkW7OUWVRA_cjs.__DEV__) console.warn(`Hydration mismatch: expected <${desc.tag}>, got <${ssrEl?.tagName?.toLowerCase() ?? "nothing"}>`);
891
+ if (chunkH7MDUHS5_cjs.__DEV__) console.warn(`Hydration mismatch: expected <${desc.tag}>, got <${ssrEl?.tagName?.toLowerCase() ?? "nothing"}>`);
876
892
  const fresh = descriptorToElement(desc);
877
893
  if (ssrEl) ssrEl.replaceWith(fresh);
878
894
  return;
@@ -946,7 +962,7 @@ function adoptNode(desc, ssrEl) {
946
962
  }
947
963
  node = node.nextSibling;
948
964
  }
949
- const currentItems = chunk2Y5US35K_cjs.untrack(() => child.items());
965
+ const currentItems = chunkKUXNZ5MG_cjs.untrack(() => child.items());
950
966
  const listKeyFn = child.keyFn;
951
967
  const listRenderFn = child.renderFn;
952
968
  const useIndexFallback = ssrKeyMap.size === 0 && ssrElements.length > 0;
@@ -970,11 +986,11 @@ function adoptNode(desc, ssrEl) {
970
986
  adoptedNodes.push(ssrNode);
971
987
  adoptedItems.push(item);
972
988
  } else {
973
- if (chunkW7OUWVRA_cjs.__DEV__) console.warn(`[FormaJS] Hydration: list item key "${key}" not found in SSR \u2014 rendering fresh`);
989
+ if (chunkH7MDUHS5_cjs.__DEV__) console.warn(`[FormaJS] Hydration: list item key "${key}" not found in SSR \u2014 rendering fresh`);
974
990
  const prevHydrating = hydrating;
975
991
  hydrating = false;
976
992
  try {
977
- const [getIndex] = chunkW7OUWVRA_cjs.createSignal(i);
993
+ const [getIndex] = chunkH7MDUHS5_cjs.createSignal(i);
978
994
  const fresh = listRenderFn(item, getIndex);
979
995
  end.parentNode.insertBefore(fresh, end);
980
996
  adoptedNodes.push(fresh);
@@ -992,7 +1008,7 @@ function adoptNode(desc, ssrEl) {
992
1008
  }
993
1009
  } else {
994
1010
  for (const [unusedKey, unusedNode] of ssrKeyMap) {
995
- if (chunkW7OUWVRA_cjs.__DEV__) console.warn(`[FormaJS] Hydration: removing extra SSR list item with key "${unusedKey}"`);
1011
+ if (chunkH7MDUHS5_cjs.__DEV__) console.warn(`[FormaJS] Hydration: removing extra SSR list item with key "${unusedKey}"`);
996
1012
  if (unusedNode.parentNode) {
997
1013
  unusedNode.parentNode.removeChild(unusedNode);
998
1014
  }
@@ -1006,7 +1022,7 @@ function adoptNode(desc, ssrEl) {
1006
1022
  for (let i = 0; i < adoptedItems.length; i++) {
1007
1023
  const item = adoptedItems[i];
1008
1024
  const key = listKeyFn(item);
1009
- const [getIndex, setIndex] = chunkW7OUWVRA_cjs.createSignal(i);
1025
+ const [getIndex, setIndex] = chunkH7MDUHS5_cjs.createSignal(i);
1010
1026
  cache.set(key, {
1011
1027
  element: adoptedNodes[i],
1012
1028
  item,
@@ -1016,7 +1032,7 @@ function adoptNode(desc, ssrEl) {
1016
1032
  }
1017
1033
  let reconcileNodes = adoptedNodes.slice();
1018
1034
  let reconcileItems = adoptedItems.slice();
1019
- chunk2Y5US35K_cjs.internalEffect(() => {
1035
+ chunkKUXNZ5MG_cjs.internalEffect(() => {
1020
1036
  const newItems = child.items();
1021
1037
  const parent2 = start.parentNode;
1022
1038
  if (!parent2) return;
@@ -1031,8 +1047,8 @@ function adoptNode(desc, ssrEl) {
1031
1047
  hydrating = false;
1032
1048
  try {
1033
1049
  const key = listKeyFn(item);
1034
- const [getIndex, setIndex] = chunkW7OUWVRA_cjs.createSignal(0);
1035
- const element = chunk2Y5US35K_cjs.untrack(() => listRenderFn(item, getIndex));
1050
+ const [getIndex, setIndex] = chunkH7MDUHS5_cjs.createSignal(0);
1051
+ const element = chunkKUXNZ5MG_cjs.untrack(() => listRenderFn(item, getIndex));
1036
1052
  cache.set(key, { element, item, getIndex, setIndex });
1037
1053
  return element;
1038
1054
  } finally {
@@ -1081,12 +1097,12 @@ function adoptNode(desc, ssrEl) {
1081
1097
  const endMarker = findClosingMarker(cursor);
1082
1098
  let textNode = cursor.nextSibling;
1083
1099
  if (!textNode || textNode.nodeType !== 3) {
1084
- if (chunkW7OUWVRA_cjs.__DEV__) console.warn(`[FormaJS] Hydration: created text node for marker ${data} \u2014 SSR walker should emit content between markers`);
1100
+ if (chunkH7MDUHS5_cjs.__DEV__) console.warn(`[FormaJS] Hydration: created text node for marker ${data} \u2014 SSR walker should emit content between markers`);
1085
1101
  const created = document.createTextNode("");
1086
1102
  cursor.parentNode.insertBefore(created, endMarker || cursor.nextSibling);
1087
1103
  textNode = created;
1088
1104
  }
1089
- chunk2Y5US35K_cjs.internalEffect(() => {
1105
+ chunkKUXNZ5MG_cjs.internalEffect(() => {
1090
1106
  textNode.data = String(child());
1091
1107
  });
1092
1108
  cursor = endMarker ? endMarker.nextSibling : textNode.nextSibling;
@@ -1096,11 +1112,11 @@ function adoptNode(desc, ssrEl) {
1096
1112
  if (end) {
1097
1113
  let textNode = findTextBetween(start, end);
1098
1114
  if (!textNode) {
1099
- if (chunkW7OUWVRA_cjs.__DEV__) console.warn(`[FormaJS] Hydration: created text node for show marker ${start.data} \u2014 SSR walker should emit content between markers`);
1115
+ if (chunkH7MDUHS5_cjs.__DEV__) console.warn(`[FormaJS] Hydration: created text node for show marker ${start.data} \u2014 SSR walker should emit content between markers`);
1100
1116
  textNode = document.createTextNode("");
1101
1117
  start.parentNode.insertBefore(textNode, end);
1102
1118
  }
1103
- chunk2Y5US35K_cjs.internalEffect(() => {
1119
+ chunkKUXNZ5MG_cjs.internalEffect(() => {
1104
1120
  textNode.data = String(child());
1105
1121
  });
1106
1122
  cursor = end.nextSibling;
@@ -1113,14 +1129,14 @@ function adoptNode(desc, ssrEl) {
1113
1129
  } else if (cursor && cursor.nodeType === 3) {
1114
1130
  const textNode = cursor;
1115
1131
  cursor = cursor.nextSibling;
1116
- chunk2Y5US35K_cjs.internalEffect(() => {
1132
+ chunkKUXNZ5MG_cjs.internalEffect(() => {
1117
1133
  textNode.data = String(child());
1118
1134
  });
1119
1135
  } else {
1120
- if (chunkW7OUWVRA_cjs.__DEV__) console.warn(`[FormaJS] Hydration: created text node in empty <${ssrEl.tagName.toLowerCase()}> \u2014 IR may not cover this component`);
1136
+ if (chunkH7MDUHS5_cjs.__DEV__) console.warn(`[FormaJS] Hydration: created text node in empty <${ssrEl.tagName.toLowerCase()}> \u2014 IR may not cover this component`);
1121
1137
  const textNode = document.createTextNode("");
1122
1138
  ssrEl.appendChild(textNode);
1123
- chunk2Y5US35K_cjs.internalEffect(() => {
1139
+ chunkKUXNZ5MG_cjs.internalEffect(() => {
1124
1140
  textNode.data = String(child());
1125
1141
  });
1126
1142
  }
@@ -1134,7 +1150,7 @@ function adoptNode(desc, ssrEl) {
1134
1150
  function hydrateIsland(component, target) {
1135
1151
  const hasSSRContent = target.childElementCount > 0 || target.childNodes.length > 0 && Array.from(target.childNodes).some((n) => n.nodeType === 1 || n.nodeType === 3 && n.data.trim());
1136
1152
  if (!hasSSRContent) {
1137
- if (chunkW7OUWVRA_cjs.__DEV__) {
1153
+ if (chunkH7MDUHS5_cjs.__DEV__) {
1138
1154
  const name = target.getAttribute("data-forma-component") || "unknown";
1139
1155
  console.warn(
1140
1156
  `[forma] Island "${name}" has no SSR content \u2014 falling back to CSR. This means the IR walker did not render content between ISLAND_START and ISLAND_END.`
@@ -1352,14 +1368,18 @@ function reconcileList(parent, oldItems, newItems, oldNodes, keyFn, createFn, up
1352
1368
  }
1353
1369
  const oldKeyMap = /* @__PURE__ */ new Map();
1354
1370
  for (let i = 0; i < oldLen; i++) {
1355
- oldKeyMap.set(keyFn(oldItems[i]), i);
1371
+ const k = keyFn(oldItems[i]);
1372
+ const bucket = oldKeyMap.get(k);
1373
+ if (bucket) bucket.push(i);
1374
+ else oldKeyMap.set(k, [i]);
1356
1375
  }
1357
1376
  const oldIndices = new Array(newLen);
1358
1377
  const oldUsed = new Uint8Array(oldLen);
1359
1378
  for (let i = 0; i < newLen; i++) {
1360
1379
  const key = keyFn(newItems[i]);
1361
- const oldIdx = oldKeyMap.get(key);
1362
- if (oldIdx !== void 0) {
1380
+ const bucket = oldKeyMap.get(key);
1381
+ if (bucket && bucket.length > 0) {
1382
+ const oldIdx = bucket.shift();
1363
1383
  oldIndices[i] = oldIdx;
1364
1384
  oldUsed[oldIdx] = 1;
1365
1385
  } else {
@@ -1450,14 +1470,14 @@ function createList(items, keyFn, renderFn, options) {
1450
1470
  let currentNodes = [];
1451
1471
  let currentItems = [];
1452
1472
  const updateOnItemChange = options?.updateOnItemChange ?? "none";
1453
- chunk2Y5US35K_cjs.internalEffect(() => {
1473
+ chunkKUXNZ5MG_cjs.internalEffect(() => {
1454
1474
  const newItems = items();
1455
1475
  const parent = startMarker.parentNode;
1456
1476
  if (!parent) {
1457
1477
  return;
1458
1478
  }
1459
1479
  if (!Array.isArray(newItems)) {
1460
- if (chunkW7OUWVRA_cjs.__DEV__) {
1480
+ if (chunkH7MDUHS5_cjs.__DEV__) {
1461
1481
  console.warn("[forma] createList: value is not an array, treating as empty");
1462
1482
  }
1463
1483
  for (const node of currentNodes) {
@@ -1475,7 +1495,7 @@ function createList(items, keyFn, renderFn, options) {
1475
1495
  break;
1476
1496
  }
1477
1497
  }
1478
- if (chunkW7OUWVRA_cjs.__DEV__) {
1498
+ if (chunkH7MDUHS5_cjs.__DEV__) {
1479
1499
  const seen = /* @__PURE__ */ new Set();
1480
1500
  for (const item of cleanItems) {
1481
1501
  const key = keyFn(item);
@@ -1495,7 +1515,7 @@ function createList(items, keyFn, renderFn, options) {
1495
1515
  if (node[ABORT_SYM3] || node[CACHE_SYM2] || node[DYNAMIC_CHILD_SYM2]) {
1496
1516
  return;
1497
1517
  }
1498
- const next = chunk2Y5US35K_cjs.untrack(() => renderFn(item, cached.getIndex));
1518
+ const next = chunkKUXNZ5MG_cjs.untrack(() => renderFn(item, cached.getIndex));
1499
1519
  if (canPatchStaticElement(node, next)) {
1500
1520
  patchStaticElement(node, next);
1501
1521
  cached.element = node;
@@ -1518,11 +1538,11 @@ function createList(items, keyFn, renderFn, options) {
1518
1538
  // disposed when the item is removed from the list.
1519
1539
  (item) => {
1520
1540
  const key = keyFn(item);
1521
- const [getIndex, setIndex] = chunkW7OUWVRA_cjs.createSignal(0);
1541
+ const [getIndex, setIndex] = chunkH7MDUHS5_cjs.createSignal(0);
1522
1542
  let itemDispose;
1523
- const element = chunk2Y5US35K_cjs.createRoot((dispose) => {
1543
+ const element = chunkKUXNZ5MG_cjs.createRoot((dispose) => {
1524
1544
  itemDispose = dispose;
1525
- return chunk2Y5US35K_cjs.untrack(() => renderFn(item, getIndex));
1545
+ return chunkKUXNZ5MG_cjs.untrack(() => renderFn(item, getIndex));
1526
1546
  });
1527
1547
  cache.set(key, { element, item, getIndex, setIndex, dispose: itemDispose });
1528
1548
  return element;
@@ -1549,7 +1569,7 @@ function createList(items, keyFn, renderFn, options) {
1549
1569
  currentNodes = result.nodes;
1550
1570
  currentItems = result.items;
1551
1571
  });
1552
- chunk2Y5US35K_cjs.registerDisposer(() => {
1572
+ chunkKUXNZ5MG_cjs.registerDisposer(() => {
1553
1573
  for (const cached of cache.values()) {
1554
1574
  cached.dispose();
1555
1575
  }
@@ -1568,5 +1588,6 @@ exports.fragment = fragment;
1568
1588
  exports.h = h;
1569
1589
  exports.hydrateIsland = hydrateIsland;
1570
1590
  exports.reconcileList = reconcileList;
1571
- //# sourceMappingURL=chunk-JRQNDXX7.cjs.map
1572
- //# sourceMappingURL=chunk-JRQNDXX7.cjs.map
1591
+ exports.svg = svg;
1592
+ //# sourceMappingURL=chunk-FBM7V4NE.cjs.map
1593
+ //# sourceMappingURL=chunk-FBM7V4NE.cjs.map