@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.
- package/dist/{chunk-MIOMT2CB.js → chunk-AJP4OVCN.js} +29 -9
- package/dist/chunk-AJP4OVCN.js.map +1 -0
- package/dist/{chunk-XLVBYXOU.js → chunk-ETPJTPYD.js} +6 -3
- package/dist/chunk-ETPJTPYD.js.map +1 -0
- package/dist/{chunk-JRQNDXX7.cjs → chunk-FBM7V4NE.cjs} +68 -47
- package/dist/chunk-FBM7V4NE.cjs.map +1 -0
- package/dist/{chunk-W7OUWVRA.cjs → chunk-H7MDUHS5.cjs} +6 -2
- package/dist/chunk-H7MDUHS5.cjs.map +1 -0
- package/dist/{chunk-2Y5US35K.cjs → chunk-KUXNZ5MG.cjs} +12 -12
- package/dist/{chunk-2Y5US35K.cjs.map → chunk-KUXNZ5MG.cjs.map} +1 -1
- package/dist/{chunk-INNOI6TG.js → chunk-Y3A2EVVS.js} +3 -3
- package/dist/{chunk-INNOI6TG.js.map → chunk-Y3A2EVVS.js.map} +1 -1
- package/dist/forma-runtime-csp.js +178 -79
- package/dist/forma-runtime.js +178 -79
- package/dist/formajs-runtime-hardened.global.js +178 -79
- package/dist/formajs-runtime-hardened.global.js.map +1 -1
- package/dist/formajs-runtime.global.js +178 -79
- package/dist/formajs-runtime.global.js.map +1 -1
- package/dist/formajs.global.js +245 -61
- package/dist/formajs.global.js.map +1 -1
- package/dist/http.cjs +11 -11
- package/dist/http.js +2 -2
- package/dist/index.cjs +307 -143
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +34 -2
- package/dist/index.d.ts +34 -2
- package/dist/index.js +248 -88
- package/dist/index.js.map +1 -1
- package/dist/runtime-hardened.cjs +178 -79
- package/dist/runtime-hardened.cjs.map +1 -1
- package/dist/runtime-hardened.js +178 -79
- package/dist/runtime-hardened.js.map +1 -1
- package/dist/runtime.cjs +198 -103
- package/dist/runtime.cjs.map +1 -1
- package/dist/runtime.js +174 -79
- package/dist/runtime.js.map +1 -1
- package/dist/server.cjs +7 -7
- package/dist/server.js +2 -2
- package/dist/tc39-compat.cjs +3 -3
- package/dist/tc39-compat.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-JRQNDXX7.cjs.map +0 -1
- package/dist/chunk-MIOMT2CB.js.map +0 -1
- package/dist/chunk-W7OUWVRA.cjs.map +0 -1
- package/dist/chunk-XLVBYXOU.js.map +0 -1
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
666
|
+
currentNode = chunkKUXNZ5MG_cjs.createRoot((dispose) => {
|
|
651
667
|
branchDispose = dispose;
|
|
652
|
-
return
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
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
|
-
|
|
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 (
|
|
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 =
|
|
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 (
|
|
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] =
|
|
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 (
|
|
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] =
|
|
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
|
-
|
|
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] =
|
|
1035
|
-
const element =
|
|
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 (
|
|
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
|
-
|
|
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 (
|
|
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
|
-
|
|
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
|
-
|
|
1132
|
+
chunkKUXNZ5MG_cjs.internalEffect(() => {
|
|
1117
1133
|
textNode.data = String(child());
|
|
1118
1134
|
});
|
|
1119
1135
|
} else {
|
|
1120
|
-
if (
|
|
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
|
-
|
|
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 (
|
|
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
|
-
|
|
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
|
|
1362
|
-
if (
|
|
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
|
-
|
|
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 (
|
|
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 (
|
|
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 =
|
|
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] =
|
|
1541
|
+
const [getIndex, setIndex] = chunkH7MDUHS5_cjs.createSignal(0);
|
|
1522
1542
|
let itemDispose;
|
|
1523
|
-
const element =
|
|
1543
|
+
const element = chunkKUXNZ5MG_cjs.createRoot((dispose) => {
|
|
1524
1544
|
itemDispose = dispose;
|
|
1525
|
-
return
|
|
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
|
-
|
|
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
|
-
|
|
1572
|
-
//# sourceMappingURL=chunk-
|
|
1591
|
+
exports.svg = svg;
|
|
1592
|
+
//# sourceMappingURL=chunk-FBM7V4NE.cjs.map
|
|
1593
|
+
//# sourceMappingURL=chunk-FBM7V4NE.cjs.map
|