@fictjs/runtime 0.8.0 → 0.9.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/README.md +46 -0
- package/dist/advanced.cjs +9 -9
- package/dist/advanced.d.cts +4 -4
- package/dist/advanced.d.ts +4 -4
- package/dist/advanced.js +4 -4
- package/dist/{effect-DAzpH7Mm.d.cts → binding-BWchH3Kp.d.cts} +33 -24
- package/dist/{effect-DAzpH7Mm.d.ts → binding-BWchH3Kp.d.ts} +33 -24
- package/dist/{chunk-7YQK3XKY.js → chunk-DXG3TARY.js} +520 -518
- package/dist/chunk-DXG3TARY.js.map +1 -0
- package/dist/{chunk-TLDT76RV.js → chunk-FVX77557.js} +3 -3
- package/dist/{chunk-WRU3IZOA.js → chunk-JVYH76ZX.js} +3 -3
- package/dist/chunk-LBE6DC3V.cjs +768 -0
- package/dist/chunk-LBE6DC3V.cjs.map +1 -0
- package/dist/chunk-N6ODUM2Y.js +768 -0
- package/dist/chunk-N6ODUM2Y.js.map +1 -0
- package/dist/{chunk-PRF4QG73.cjs → chunk-OAM7HABA.cjs} +423 -246
- package/dist/chunk-OAM7HABA.cjs.map +1 -0
- package/dist/{chunk-CEV6TO5U.cjs → chunk-PD6IQY2Y.cjs} +8 -8
- package/dist/{chunk-CEV6TO5U.cjs.map → chunk-PD6IQY2Y.cjs.map} +1 -1
- package/dist/{chunk-HHDHQGJY.cjs → chunk-PG4QX2I2.cjs} +17 -17
- package/dist/{chunk-HHDHQGJY.cjs.map → chunk-PG4QX2I2.cjs.map} +1 -1
- package/dist/{chunk-4LCHQ7U4.js → chunk-T2LNV5Q5.js} +271 -94
- package/dist/chunk-T2LNV5Q5.js.map +1 -0
- package/dist/{chunk-FSCBL7RI.cjs → chunk-UBFDB6OL.cjs} +521 -519
- package/dist/chunk-UBFDB6OL.cjs.map +1 -0
- package/dist/{context-C4vBQbb4.d.ts → devtools-5AipK9CX.d.cts} +35 -35
- package/dist/{context-BFbHf9nC.d.cts → devtools-BDp76luf.d.ts} +35 -35
- package/dist/index.cjs +42 -42
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.dev.js +3 -3
- package/dist/index.dev.js.map +1 -1
- package/dist/index.js +3 -3
- package/dist/internal-list.cjs +12 -0
- package/dist/internal-list.cjs.map +1 -0
- package/dist/internal-list.d.cts +2 -0
- package/dist/internal-list.d.ts +2 -0
- package/dist/internal-list.js +12 -0
- package/dist/internal-list.js.map +1 -0
- package/dist/internal.cjs +6 -746
- package/dist/internal.cjs.map +1 -1
- package/dist/internal.d.cts +6 -74
- package/dist/internal.d.ts +6 -74
- package/dist/internal.js +12 -752
- package/dist/internal.js.map +1 -1
- package/dist/list-DL5DOFcO.d.ts +71 -0
- package/dist/list-hP7hQ9Vk.d.cts +71 -0
- package/dist/loader.cjs +94 -15
- package/dist/loader.cjs.map +1 -1
- package/dist/loader.d.cts +16 -2
- package/dist/loader.d.ts +16 -2
- package/dist/loader.js +87 -8
- package/dist/loader.js.map +1 -1
- package/dist/{props-84UJeWO8.d.cts → props-BpZz0AOq.d.cts} +2 -2
- package/dist/{props-BRhFK50f.d.ts → props-CjLH0JE-.d.ts} +2 -2
- package/dist/{resume-i-A3EFox.d.cts → resume-BJ4oHLi_.d.cts} +3 -1
- package/dist/{resume-CqeQ3v_q.d.ts → resume-CuyJWXP_.d.ts} +3 -1
- package/dist/{scope-DlCBL1Ft.d.cts → scope-BJCtq8hJ.d.cts} +1 -1
- package/dist/{scope-D3DpsfoG.d.ts → scope-jPt5DHRT.d.ts} +1 -1
- package/package.json +8 -1
- package/src/binding.ts +113 -36
- package/src/cycle-guard.ts +3 -3
- package/src/internal/list.ts +7 -0
- package/src/internal.ts +1 -0
- package/src/list-helpers.ts +1 -1
- package/src/loader.ts +119 -9
- package/src/resume.ts +6 -3
- package/src/signal.ts +8 -1
- package/dist/chunk-4LCHQ7U4.js.map +0 -1
- package/dist/chunk-7YQK3XKY.js.map +0 -1
- package/dist/chunk-FSCBL7RI.cjs.map +0 -1
- package/dist/chunk-PRF4QG73.cjs.map +0 -1
- /package/dist/{chunk-TLDT76RV.js.map → chunk-FVX77557.js.map} +0 -0
- /package/dist/{chunk-WRU3IZOA.js.map → chunk-JVYH76ZX.js.map} +0 -0
|
@@ -0,0 +1,768 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _chunkOAM7HABAcjs = require('./chunk-OAM7HABA.cjs');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
var _chunkUBFDB6OLcjs = require('./chunk-UBFDB6OL.cjs');
|
|
25
|
+
|
|
26
|
+
// src/reconcile.ts
|
|
27
|
+
function reconcileArrays(parentNode, a, b) {
|
|
28
|
+
const bLength = b.length;
|
|
29
|
+
let aEnd = a.length;
|
|
30
|
+
let bEnd = bLength;
|
|
31
|
+
let aStart = 0;
|
|
32
|
+
let bStart = 0;
|
|
33
|
+
const after = aEnd > 0 ? a[aEnd - 1].nextSibling : null;
|
|
34
|
+
let map = null;
|
|
35
|
+
while (aStart < aEnd || bStart < bEnd) {
|
|
36
|
+
if (a[aStart] === b[bStart]) {
|
|
37
|
+
aStart++;
|
|
38
|
+
bStart++;
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
while (a[aEnd - 1] === b[bEnd - 1]) {
|
|
42
|
+
aEnd--;
|
|
43
|
+
bEnd--;
|
|
44
|
+
}
|
|
45
|
+
if (aEnd === aStart) {
|
|
46
|
+
const node = bEnd < bLength ? bStart ? b[bStart - 1].nextSibling : _nullishCoalesce(b[bEnd - bStart], () => ( null)) : after;
|
|
47
|
+
const count = bEnd - bStart;
|
|
48
|
+
const doc = parentNode.ownerDocument;
|
|
49
|
+
if (count > 1 && doc) {
|
|
50
|
+
const frag = doc.createDocumentFragment();
|
|
51
|
+
for (let i = bStart; i < bEnd; i++) {
|
|
52
|
+
frag.appendChild(b[i]);
|
|
53
|
+
}
|
|
54
|
+
parentNode.insertBefore(frag, node);
|
|
55
|
+
bStart = bEnd;
|
|
56
|
+
} else {
|
|
57
|
+
while (bStart < bEnd) {
|
|
58
|
+
parentNode.insertBefore(b[bStart++], node);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
} else if (bEnd === bStart) {
|
|
62
|
+
while (aStart < aEnd) {
|
|
63
|
+
const nodeToRemove = a[aStart];
|
|
64
|
+
if (!map || !map.has(nodeToRemove)) {
|
|
65
|
+
_optionalChain([nodeToRemove, 'access', _ => _.parentNode, 'optionalAccess', _2 => _2.removeChild, 'call', _3 => _3(nodeToRemove)]);
|
|
66
|
+
}
|
|
67
|
+
aStart++;
|
|
68
|
+
}
|
|
69
|
+
} else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {
|
|
70
|
+
const node = a[--aEnd].nextSibling;
|
|
71
|
+
parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling);
|
|
72
|
+
parentNode.insertBefore(b[--bEnd], node);
|
|
73
|
+
a[aEnd] = b[bEnd];
|
|
74
|
+
} else {
|
|
75
|
+
if (!map) {
|
|
76
|
+
map = /* @__PURE__ */ new Map();
|
|
77
|
+
let i = bStart;
|
|
78
|
+
while (i < bEnd) {
|
|
79
|
+
map.set(b[i], i++);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const index = map.get(a[aStart]);
|
|
83
|
+
if (index != null) {
|
|
84
|
+
if (bStart < index && index < bEnd) {
|
|
85
|
+
let i = aStart;
|
|
86
|
+
let sequence = 1;
|
|
87
|
+
let t;
|
|
88
|
+
while (++i < aEnd && i < bEnd) {
|
|
89
|
+
t = map.get(a[i]);
|
|
90
|
+
if (t == null || t !== index + sequence) break;
|
|
91
|
+
sequence++;
|
|
92
|
+
}
|
|
93
|
+
if (sequence > index - bStart) {
|
|
94
|
+
const node = a[aStart];
|
|
95
|
+
while (bStart < index) {
|
|
96
|
+
parentNode.insertBefore(b[bStart++], node);
|
|
97
|
+
}
|
|
98
|
+
} else {
|
|
99
|
+
parentNode.replaceChild(b[bStart++], a[aStart++]);
|
|
100
|
+
}
|
|
101
|
+
} else {
|
|
102
|
+
aStart++;
|
|
103
|
+
}
|
|
104
|
+
} else {
|
|
105
|
+
const nodeToRemove = a[aStart++];
|
|
106
|
+
_optionalChain([nodeToRemove, 'access', _4 => _4.parentNode, 'optionalAccess', _5 => _5.removeChild, 'call', _6 => _6(nodeToRemove)]);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// src/list-helpers.ts
|
|
113
|
+
var isDev = typeof __DEV__ !== "undefined" ? __DEV__ : typeof process !== "undefined" && _optionalChain([process, 'access', _7 => _7.env, 'optionalAccess', _8 => _8.NODE_ENV]) !== "production";
|
|
114
|
+
var isShadowRoot = (node) => typeof ShadowRoot !== "undefined" && node instanceof ShadowRoot;
|
|
115
|
+
function moveNodesBefore(parent, nodes, anchor) {
|
|
116
|
+
for (let i = nodes.length - 1; i >= 0; i--) {
|
|
117
|
+
const node = nodes[i];
|
|
118
|
+
if (!node || !(node instanceof Node)) {
|
|
119
|
+
const message = isDev ? "Invalid node in moveNodesBefore" : "FICT:E_NODE";
|
|
120
|
+
throw new Error(message);
|
|
121
|
+
}
|
|
122
|
+
if (node.nextSibling !== anchor) {
|
|
123
|
+
if (node.ownerDocument !== parent.ownerDocument && parent.ownerDocument) {
|
|
124
|
+
parent.ownerDocument.adoptNode(node);
|
|
125
|
+
}
|
|
126
|
+
try {
|
|
127
|
+
parent.insertBefore(node, anchor);
|
|
128
|
+
} catch (e) {
|
|
129
|
+
if (parent.ownerDocument) {
|
|
130
|
+
try {
|
|
131
|
+
const clone = parent.ownerDocument.importNode(node, true);
|
|
132
|
+
parent.insertBefore(clone, anchor);
|
|
133
|
+
nodes[i] = clone;
|
|
134
|
+
if (isDev) {
|
|
135
|
+
console.warn(
|
|
136
|
+
`[fict] Node cloning fallback triggered during list reordering. This may indicate cross-document node insertion. The node reference has been updated to the clone.`
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
anchor = clone;
|
|
140
|
+
continue;
|
|
141
|
+
} catch (e2) {
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
throw e;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
anchor = node;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
var MAX_SAFE_VERSION = 9007199254740991;
|
|
151
|
+
function createVersionedSignalAccessor(initialValue) {
|
|
152
|
+
let current = initialValue;
|
|
153
|
+
let version = 0;
|
|
154
|
+
const track = _chunkUBFDB6OLcjs.signal.call(void 0, version);
|
|
155
|
+
function accessor(value) {
|
|
156
|
+
if (arguments.length === 0) {
|
|
157
|
+
track();
|
|
158
|
+
return current;
|
|
159
|
+
}
|
|
160
|
+
current = value;
|
|
161
|
+
version = version >= MAX_SAFE_VERSION ? 1 : version + 1;
|
|
162
|
+
track(version);
|
|
163
|
+
}
|
|
164
|
+
return accessor;
|
|
165
|
+
}
|
|
166
|
+
function createKeyedListContainer(startOverride, endOverride) {
|
|
167
|
+
const startMarker = _nullishCoalesce(startOverride, () => ( document.createComment("fict:list:start")));
|
|
168
|
+
const endMarker = _nullishCoalesce(endOverride, () => ( document.createComment("fict:list:end")));
|
|
169
|
+
const dispose = () => {
|
|
170
|
+
for (const block of container.blocks.values()) {
|
|
171
|
+
_chunkUBFDB6OLcjs.destroyRoot.call(void 0, block.root);
|
|
172
|
+
}
|
|
173
|
+
container.blocks.clear();
|
|
174
|
+
container.nextBlocks.clear();
|
|
175
|
+
if (!startMarker.parentNode || !endMarker.parentNode) {
|
|
176
|
+
container.currentNodes = [];
|
|
177
|
+
container.nextNodes = [];
|
|
178
|
+
container.orderedBlocks.length = 0;
|
|
179
|
+
container.nextOrderedBlocks.length = 0;
|
|
180
|
+
container.orderedIndexByKey.clear();
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
const range = document.createRange();
|
|
184
|
+
range.setStartBefore(startMarker);
|
|
185
|
+
range.setEndAfter(endMarker);
|
|
186
|
+
range.deleteContents();
|
|
187
|
+
container.currentNodes = [];
|
|
188
|
+
container.nextNodes = [];
|
|
189
|
+
container.nextBlocks.clear();
|
|
190
|
+
container.orderedBlocks.length = 0;
|
|
191
|
+
container.nextOrderedBlocks.length = 0;
|
|
192
|
+
container.orderedIndexByKey.clear();
|
|
193
|
+
};
|
|
194
|
+
const container = {
|
|
195
|
+
startMarker,
|
|
196
|
+
endMarker,
|
|
197
|
+
blocks: /* @__PURE__ */ new Map(),
|
|
198
|
+
nextBlocks: /* @__PURE__ */ new Map(),
|
|
199
|
+
currentNodes: [startMarker, endMarker],
|
|
200
|
+
nextNodes: [],
|
|
201
|
+
orderedBlocks: [],
|
|
202
|
+
nextOrderedBlocks: [],
|
|
203
|
+
orderedIndexByKey: /* @__PURE__ */ new Map(),
|
|
204
|
+
dispose
|
|
205
|
+
};
|
|
206
|
+
return container;
|
|
207
|
+
}
|
|
208
|
+
function createKeyedBlock(key, item, index, render, needsIndex = true, hostRoot) {
|
|
209
|
+
const itemSig = createVersionedSignalAccessor(item);
|
|
210
|
+
const indexSig = needsIndex ? _chunkUBFDB6OLcjs.signal.call(void 0, index) : ((next) => {
|
|
211
|
+
if (arguments.length === 0) return index;
|
|
212
|
+
index = next;
|
|
213
|
+
return index;
|
|
214
|
+
});
|
|
215
|
+
const root = _chunkUBFDB6OLcjs.createRootContext.call(void 0, hostRoot);
|
|
216
|
+
const prevRoot = _chunkUBFDB6OLcjs.pushRoot.call(void 0, root);
|
|
217
|
+
let nodes = [];
|
|
218
|
+
let scopeDispose;
|
|
219
|
+
const prevSub = _chunkUBFDB6OLcjs.setActiveSub.call(void 0, void 0);
|
|
220
|
+
try {
|
|
221
|
+
scopeDispose = _chunkUBFDB6OLcjs.effectScope.call(void 0, () => {
|
|
222
|
+
const rendered = render(itemSig, indexSig, key);
|
|
223
|
+
if (rendered instanceof Node || Array.isArray(rendered) && rendered.every((n) => n instanceof Node)) {
|
|
224
|
+
nodes = _chunkOAM7HABAcjs.toNodeArray.call(void 0, rendered);
|
|
225
|
+
} else {
|
|
226
|
+
const element = _chunkOAM7HABAcjs.createElement.call(void 0, rendered);
|
|
227
|
+
nodes = _chunkOAM7HABAcjs.toNodeArray.call(void 0, element);
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
if (scopeDispose) {
|
|
231
|
+
root.cleanups.push(scopeDispose);
|
|
232
|
+
}
|
|
233
|
+
} finally {
|
|
234
|
+
_chunkUBFDB6OLcjs.setActiveSub.call(void 0, prevSub);
|
|
235
|
+
_chunkUBFDB6OLcjs.popRoot.call(void 0, prevRoot);
|
|
236
|
+
}
|
|
237
|
+
return {
|
|
238
|
+
key,
|
|
239
|
+
nodes,
|
|
240
|
+
root,
|
|
241
|
+
item: itemSig,
|
|
242
|
+
index: indexSig,
|
|
243
|
+
rawItem: item,
|
|
244
|
+
rawIndex: index
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
function isNodeBetweenMarkers(node, startMarker, endMarker) {
|
|
248
|
+
let current = startMarker.nextSibling;
|
|
249
|
+
while (current && current !== endMarker) {
|
|
250
|
+
if (current === node) return true;
|
|
251
|
+
current = current.nextSibling;
|
|
252
|
+
}
|
|
253
|
+
return false;
|
|
254
|
+
}
|
|
255
|
+
function reorderBySwap(parent, first, second) {
|
|
256
|
+
if (first === second) return false;
|
|
257
|
+
const firstNodes = first.nodes;
|
|
258
|
+
const secondNodes = second.nodes;
|
|
259
|
+
if (firstNodes.length === 0 || secondNodes.length === 0) return false;
|
|
260
|
+
const lastFirst = firstNodes[firstNodes.length - 1];
|
|
261
|
+
const lastSecond = secondNodes[secondNodes.length - 1];
|
|
262
|
+
const afterFirst = lastFirst.nextSibling;
|
|
263
|
+
const afterSecond = lastSecond.nextSibling;
|
|
264
|
+
moveNodesBefore(parent, firstNodes, afterSecond);
|
|
265
|
+
moveNodesBefore(parent, secondNodes, afterFirst);
|
|
266
|
+
return true;
|
|
267
|
+
}
|
|
268
|
+
function getLISIndices(sequence) {
|
|
269
|
+
const predecessors = new Array(sequence.length);
|
|
270
|
+
const result = [];
|
|
271
|
+
for (let i = 0; i < sequence.length; i++) {
|
|
272
|
+
const value = sequence[i];
|
|
273
|
+
if (value < 0) {
|
|
274
|
+
predecessors[i] = -1;
|
|
275
|
+
continue;
|
|
276
|
+
}
|
|
277
|
+
let low = 0;
|
|
278
|
+
let high = result.length;
|
|
279
|
+
while (low < high) {
|
|
280
|
+
const mid = low + high >> 1;
|
|
281
|
+
if (sequence[result[mid]] < value) {
|
|
282
|
+
low = mid + 1;
|
|
283
|
+
} else {
|
|
284
|
+
high = mid;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
predecessors[i] = low > 0 ? result[low - 1] : -1;
|
|
288
|
+
if (low === result.length) {
|
|
289
|
+
result.push(i);
|
|
290
|
+
} else {
|
|
291
|
+
result[low] = i;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
const lis = new Array(result.length);
|
|
295
|
+
let k = result.length > 0 ? result[result.length - 1] : -1;
|
|
296
|
+
for (let i = result.length - 1; i >= 0; i--) {
|
|
297
|
+
lis[i] = k;
|
|
298
|
+
k = predecessors[k];
|
|
299
|
+
}
|
|
300
|
+
return lis;
|
|
301
|
+
}
|
|
302
|
+
function reorderByLIS(parent, endMarker, prev, next) {
|
|
303
|
+
const positions = /* @__PURE__ */ new Map();
|
|
304
|
+
for (let i = 0; i < prev.length; i++) {
|
|
305
|
+
positions.set(prev[i], i);
|
|
306
|
+
}
|
|
307
|
+
const sequence = new Array(next.length);
|
|
308
|
+
for (let i = 0; i < next.length; i++) {
|
|
309
|
+
const position = positions.get(next[i]);
|
|
310
|
+
if (position === void 0) return false;
|
|
311
|
+
sequence[i] = position;
|
|
312
|
+
}
|
|
313
|
+
const lisIndices = getLISIndices(sequence);
|
|
314
|
+
if (lisIndices.length === sequence.length) return true;
|
|
315
|
+
const inLIS = new Array(sequence.length).fill(false);
|
|
316
|
+
for (let i = 0; i < lisIndices.length; i++) {
|
|
317
|
+
inLIS[lisIndices[i]] = true;
|
|
318
|
+
}
|
|
319
|
+
let anchor = endMarker;
|
|
320
|
+
let moved = false;
|
|
321
|
+
for (let i = next.length - 1; i >= 0; i--) {
|
|
322
|
+
const block = next[i];
|
|
323
|
+
const nodes = block.nodes;
|
|
324
|
+
if (nodes.length === 0) continue;
|
|
325
|
+
if (inLIS[i]) {
|
|
326
|
+
anchor = nodes[0];
|
|
327
|
+
continue;
|
|
328
|
+
}
|
|
329
|
+
moveNodesBefore(parent, nodes, anchor);
|
|
330
|
+
anchor = nodes[0];
|
|
331
|
+
moved = true;
|
|
332
|
+
}
|
|
333
|
+
return moved;
|
|
334
|
+
}
|
|
335
|
+
function createKeyedList(getItems, keyFn, renderItem, needsIndex, startMarker, endMarker) {
|
|
336
|
+
const resolvedNeedsIndex = arguments.length >= 4 ? !!needsIndex : renderItem.length > 1;
|
|
337
|
+
return createFineGrainedKeyedList(
|
|
338
|
+
getItems,
|
|
339
|
+
keyFn,
|
|
340
|
+
renderItem,
|
|
341
|
+
resolvedNeedsIndex,
|
|
342
|
+
startMarker,
|
|
343
|
+
endMarker
|
|
344
|
+
);
|
|
345
|
+
}
|
|
346
|
+
function createFineGrainedKeyedList(getItems, keyFn, renderItem, needsIndex, startOverride, endOverride) {
|
|
347
|
+
const container = createKeyedListContainer(startOverride, endOverride);
|
|
348
|
+
const hostRoot = _chunkUBFDB6OLcjs.getCurrentRoot.call(void 0, );
|
|
349
|
+
const useProvided = !!(startOverride && endOverride);
|
|
350
|
+
const fragment = useProvided ? container.startMarker : document.createDocumentFragment();
|
|
351
|
+
if (!useProvided) {
|
|
352
|
+
;
|
|
353
|
+
fragment.append(container.startMarker, container.endMarker);
|
|
354
|
+
}
|
|
355
|
+
let disposed = false;
|
|
356
|
+
let effectDispose;
|
|
357
|
+
let connectObserver = null;
|
|
358
|
+
let effectStarted = false;
|
|
359
|
+
let startScheduled = false;
|
|
360
|
+
let initialHydrating = _chunkUBFDB6OLcjs.__fictIsHydrating.call(void 0, );
|
|
361
|
+
const collectBetween = () => {
|
|
362
|
+
const nodes = [];
|
|
363
|
+
let cursor = container.startMarker.nextSibling;
|
|
364
|
+
while (cursor && cursor !== container.endMarker) {
|
|
365
|
+
nodes.push(cursor);
|
|
366
|
+
cursor = cursor.nextSibling;
|
|
367
|
+
}
|
|
368
|
+
return nodes;
|
|
369
|
+
};
|
|
370
|
+
const getConnectedParent = () => {
|
|
371
|
+
const endParent = container.endMarker.parentNode;
|
|
372
|
+
const startParent = container.startMarker.parentNode;
|
|
373
|
+
if (endParent && startParent && endParent === startParent && endParent.nodeType !== 11) {
|
|
374
|
+
const parentNode = endParent;
|
|
375
|
+
if ("isConnected" in parentNode && !parentNode.isConnected) return null;
|
|
376
|
+
return parentNode;
|
|
377
|
+
}
|
|
378
|
+
if (endParent && startParent && endParent === startParent && isShadowRoot(endParent)) {
|
|
379
|
+
const shadowRoot = endParent;
|
|
380
|
+
const host = shadowRoot.host;
|
|
381
|
+
if ("isConnected" in host && !host.isConnected) return null;
|
|
382
|
+
return shadowRoot;
|
|
383
|
+
}
|
|
384
|
+
return null;
|
|
385
|
+
};
|
|
386
|
+
const performDiff = () => {
|
|
387
|
+
if (disposed) return;
|
|
388
|
+
const isSSR = _chunkUBFDB6OLcjs.__fictIsSSR.call(void 0, );
|
|
389
|
+
const parent = isSSR ? container.startMarker.parentNode : getConnectedParent();
|
|
390
|
+
if (!parent) return;
|
|
391
|
+
_chunkOAM7HABAcjs.batch.call(void 0, () => {
|
|
392
|
+
const oldBlocks = container.blocks;
|
|
393
|
+
const newBlocks = container.nextBlocks;
|
|
394
|
+
const prevOrderedBlocks = container.orderedBlocks;
|
|
395
|
+
const nextOrderedBlocks = container.nextOrderedBlocks;
|
|
396
|
+
const orderedIndexByKey = container.orderedIndexByKey;
|
|
397
|
+
const newItems = getItems();
|
|
398
|
+
if (initialHydrating && _chunkOAM7HABAcjs.isHydratingActive.call(void 0, )) {
|
|
399
|
+
initialHydrating = false;
|
|
400
|
+
newBlocks.clear();
|
|
401
|
+
nextOrderedBlocks.length = 0;
|
|
402
|
+
orderedIndexByKey.clear();
|
|
403
|
+
if (newItems.length === 0) {
|
|
404
|
+
oldBlocks.clear();
|
|
405
|
+
prevOrderedBlocks.length = 0;
|
|
406
|
+
container.currentNodes = [container.startMarker, container.endMarker];
|
|
407
|
+
container.nextNodes.length = 0;
|
|
408
|
+
return;
|
|
409
|
+
}
|
|
410
|
+
const createdBlocks2 = [];
|
|
411
|
+
_chunkOAM7HABAcjs.withHydrationRange.call(void 0,
|
|
412
|
+
container.startMarker.nextSibling,
|
|
413
|
+
container.endMarker,
|
|
414
|
+
_nullishCoalesce(parent.ownerDocument, () => ( document)),
|
|
415
|
+
() => {
|
|
416
|
+
for (let index = 0; index < newItems.length; index++) {
|
|
417
|
+
const item = newItems[index];
|
|
418
|
+
const key = keyFn(item, index);
|
|
419
|
+
if (newBlocks.has(key)) {
|
|
420
|
+
if (isDev) {
|
|
421
|
+
console.warn(
|
|
422
|
+
`[fict] Duplicate key "${String(key)}" detected in list hydration. Each item should have a unique key.`
|
|
423
|
+
);
|
|
424
|
+
}
|
|
425
|
+
const existing = newBlocks.get(key);
|
|
426
|
+
if (existing) {
|
|
427
|
+
_chunkUBFDB6OLcjs.destroyRoot.call(void 0, existing.root);
|
|
428
|
+
_chunkOAM7HABAcjs.removeNodes.call(void 0, existing.nodes);
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
const block = createKeyedBlock(key, item, index, renderItem, needsIndex, hostRoot);
|
|
432
|
+
createdBlocks2.push(block);
|
|
433
|
+
newBlocks.set(key, block);
|
|
434
|
+
orderedIndexByKey.set(key, nextOrderedBlocks.length);
|
|
435
|
+
nextOrderedBlocks.push(block);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
);
|
|
439
|
+
container.blocks = newBlocks;
|
|
440
|
+
container.nextBlocks = oldBlocks;
|
|
441
|
+
container.orderedBlocks = nextOrderedBlocks;
|
|
442
|
+
container.nextOrderedBlocks = prevOrderedBlocks;
|
|
443
|
+
oldBlocks.clear();
|
|
444
|
+
prevOrderedBlocks.length = 0;
|
|
445
|
+
container.currentNodes = [container.startMarker, ...collectBetween(), container.endMarker];
|
|
446
|
+
container.nextNodes.length = 0;
|
|
447
|
+
for (const block of createdBlocks2) {
|
|
448
|
+
if (newBlocks.get(block.key) === block) {
|
|
449
|
+
_chunkUBFDB6OLcjs.flushOnMount.call(void 0, block.root);
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
return;
|
|
453
|
+
}
|
|
454
|
+
if (newItems.length === 0) {
|
|
455
|
+
if (oldBlocks.size > 0) {
|
|
456
|
+
for (const block of oldBlocks.values()) {
|
|
457
|
+
_chunkUBFDB6OLcjs.destroyRoot.call(void 0, block.root);
|
|
458
|
+
}
|
|
459
|
+
const range = document.createRange();
|
|
460
|
+
range.setStartAfter(container.startMarker);
|
|
461
|
+
range.setEndBefore(container.endMarker);
|
|
462
|
+
range.deleteContents();
|
|
463
|
+
}
|
|
464
|
+
oldBlocks.clear();
|
|
465
|
+
newBlocks.clear();
|
|
466
|
+
prevOrderedBlocks.length = 0;
|
|
467
|
+
nextOrderedBlocks.length = 0;
|
|
468
|
+
orderedIndexByKey.clear();
|
|
469
|
+
container.currentNodes.length = 0;
|
|
470
|
+
container.currentNodes.push(container.startMarker, container.endMarker);
|
|
471
|
+
container.nextNodes.length = 0;
|
|
472
|
+
return;
|
|
473
|
+
}
|
|
474
|
+
const prevCount = prevOrderedBlocks.length;
|
|
475
|
+
if (prevCount > 0 && newItems.length === prevCount && orderedIndexByKey.size === prevCount) {
|
|
476
|
+
let stableOrder = true;
|
|
477
|
+
const seen = /* @__PURE__ */ new Set();
|
|
478
|
+
for (let i = 0; i < prevCount; i++) {
|
|
479
|
+
const item = newItems[i];
|
|
480
|
+
const key = keyFn(item, i);
|
|
481
|
+
if (seen.has(key) || prevOrderedBlocks[i].key !== key) {
|
|
482
|
+
stableOrder = false;
|
|
483
|
+
break;
|
|
484
|
+
}
|
|
485
|
+
seen.add(key);
|
|
486
|
+
}
|
|
487
|
+
if (stableOrder) {
|
|
488
|
+
for (let i = 0; i < prevCount; i++) {
|
|
489
|
+
const item = newItems[i];
|
|
490
|
+
const block = prevOrderedBlocks[i];
|
|
491
|
+
if (block.rawItem !== item) {
|
|
492
|
+
block.rawItem = item;
|
|
493
|
+
block.item(item);
|
|
494
|
+
}
|
|
495
|
+
if (needsIndex && block.rawIndex !== i) {
|
|
496
|
+
block.rawIndex = i;
|
|
497
|
+
block.index(i);
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
return;
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
newBlocks.clear();
|
|
504
|
+
nextOrderedBlocks.length = 0;
|
|
505
|
+
orderedIndexByKey.clear();
|
|
506
|
+
const createdBlocks = [];
|
|
507
|
+
let appendCandidate = prevCount > 0 && newItems.length >= prevCount;
|
|
508
|
+
const appendedBlocks = [];
|
|
509
|
+
let mismatchCount = 0;
|
|
510
|
+
let mismatchFirst = -1;
|
|
511
|
+
let mismatchSecond = -1;
|
|
512
|
+
let hasDuplicateKey = false;
|
|
513
|
+
newItems.forEach((item, index) => {
|
|
514
|
+
const key = keyFn(item, index);
|
|
515
|
+
let block = oldBlocks.get(key);
|
|
516
|
+
const existed = block !== void 0;
|
|
517
|
+
if (block) {
|
|
518
|
+
if (block.rawItem !== item) {
|
|
519
|
+
block.rawItem = item;
|
|
520
|
+
block.item(item);
|
|
521
|
+
}
|
|
522
|
+
if (needsIndex && block.rawIndex !== index) {
|
|
523
|
+
block.rawIndex = index;
|
|
524
|
+
block.index(index);
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
if (block) {
|
|
528
|
+
newBlocks.set(key, block);
|
|
529
|
+
oldBlocks.delete(key);
|
|
530
|
+
} else {
|
|
531
|
+
const existingBlock = newBlocks.get(key);
|
|
532
|
+
if (existingBlock) {
|
|
533
|
+
if (isDev) {
|
|
534
|
+
console.warn(
|
|
535
|
+
`[fict] Duplicate key "${String(key)}" detected in list rendering. Each item should have a unique key. The previous item with this key will be replaced.`
|
|
536
|
+
);
|
|
537
|
+
}
|
|
538
|
+
_chunkUBFDB6OLcjs.destroyRoot.call(void 0, existingBlock.root);
|
|
539
|
+
_chunkOAM7HABAcjs.removeNodes.call(void 0, existingBlock.nodes);
|
|
540
|
+
}
|
|
541
|
+
block = createKeyedBlock(key, item, index, renderItem, needsIndex, hostRoot);
|
|
542
|
+
createdBlocks.push(block);
|
|
543
|
+
}
|
|
544
|
+
const resolvedBlock = block;
|
|
545
|
+
newBlocks.set(key, resolvedBlock);
|
|
546
|
+
const position = orderedIndexByKey.get(key);
|
|
547
|
+
if (position !== void 0) {
|
|
548
|
+
appendCandidate = false;
|
|
549
|
+
hasDuplicateKey = true;
|
|
550
|
+
const prior = nextOrderedBlocks[position];
|
|
551
|
+
if (prior && prior !== resolvedBlock) {
|
|
552
|
+
_chunkUBFDB6OLcjs.destroyRoot.call(void 0, prior.root);
|
|
553
|
+
_chunkOAM7HABAcjs.removeNodes.call(void 0, prior.nodes);
|
|
554
|
+
}
|
|
555
|
+
nextOrderedBlocks[position] = resolvedBlock;
|
|
556
|
+
} else {
|
|
557
|
+
if (appendCandidate) {
|
|
558
|
+
if (index < prevCount) {
|
|
559
|
+
if (!prevOrderedBlocks[index] || prevOrderedBlocks[index].key !== key) {
|
|
560
|
+
appendCandidate = false;
|
|
561
|
+
}
|
|
562
|
+
} else if (existed) {
|
|
563
|
+
appendCandidate = false;
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
const nextIndex = nextOrderedBlocks.length;
|
|
567
|
+
orderedIndexByKey.set(key, nextIndex);
|
|
568
|
+
nextOrderedBlocks.push(resolvedBlock);
|
|
569
|
+
if (mismatchCount < 3 && (nextIndex >= prevCount || prevOrderedBlocks[nextIndex] !== resolvedBlock)) {
|
|
570
|
+
if (mismatchCount === 0) {
|
|
571
|
+
mismatchFirst = nextIndex;
|
|
572
|
+
} else if (mismatchCount === 1) {
|
|
573
|
+
mismatchSecond = nextIndex;
|
|
574
|
+
}
|
|
575
|
+
mismatchCount++;
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
if (appendCandidate && index >= prevCount) {
|
|
579
|
+
appendedBlocks.push(resolvedBlock);
|
|
580
|
+
}
|
|
581
|
+
});
|
|
582
|
+
const canAppend = appendCandidate && prevCount > 0 && newItems.length > prevCount && oldBlocks.size === 0 && appendedBlocks.length > 0;
|
|
583
|
+
if (canAppend) {
|
|
584
|
+
const appendedNodes = [];
|
|
585
|
+
for (const block of appendedBlocks) {
|
|
586
|
+
for (let i = 0; i < block.nodes.length; i++) {
|
|
587
|
+
appendedNodes.push(block.nodes[i]);
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
if (appendedNodes.length > 0) {
|
|
591
|
+
_chunkOAM7HABAcjs.insertNodesBefore.call(void 0, parent, appendedNodes, container.endMarker);
|
|
592
|
+
const currentNodes = container.currentNodes;
|
|
593
|
+
currentNodes.pop();
|
|
594
|
+
for (let i = 0; i < appendedNodes.length; i++) {
|
|
595
|
+
currentNodes.push(appendedNodes[i]);
|
|
596
|
+
}
|
|
597
|
+
currentNodes.push(container.endMarker);
|
|
598
|
+
}
|
|
599
|
+
container.blocks = newBlocks;
|
|
600
|
+
container.nextBlocks = oldBlocks;
|
|
601
|
+
container.orderedBlocks = nextOrderedBlocks;
|
|
602
|
+
container.nextOrderedBlocks = prevOrderedBlocks;
|
|
603
|
+
for (const block of createdBlocks) {
|
|
604
|
+
if (newBlocks.get(block.key) === block) {
|
|
605
|
+
_chunkUBFDB6OLcjs.flushOnMount.call(void 0, block.root);
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
return;
|
|
609
|
+
}
|
|
610
|
+
if (oldBlocks.size > 0) {
|
|
611
|
+
for (const block of oldBlocks.values()) {
|
|
612
|
+
_chunkUBFDB6OLcjs.destroyRoot.call(void 0, block.root);
|
|
613
|
+
_chunkOAM7HABAcjs.removeNodes.call(void 0, block.nodes);
|
|
614
|
+
}
|
|
615
|
+
oldBlocks.clear();
|
|
616
|
+
}
|
|
617
|
+
const canReorderInPlace = createdBlocks.length === 0 && oldBlocks.size === 0 && nextOrderedBlocks.length === prevOrderedBlocks.length;
|
|
618
|
+
let skipReconcile = false;
|
|
619
|
+
let updateNodeBuffer = true;
|
|
620
|
+
if (canReorderInPlace && nextOrderedBlocks.length > 0 && !hasDuplicateKey) {
|
|
621
|
+
if (mismatchCount === 0) {
|
|
622
|
+
skipReconcile = true;
|
|
623
|
+
updateNodeBuffer = false;
|
|
624
|
+
} else if (mismatchCount === 2 && prevOrderedBlocks[mismatchFirst] === nextOrderedBlocks[mismatchSecond] && prevOrderedBlocks[mismatchSecond] === nextOrderedBlocks[mismatchFirst]) {
|
|
625
|
+
if (reorderBySwap(
|
|
626
|
+
parent,
|
|
627
|
+
prevOrderedBlocks[mismatchFirst],
|
|
628
|
+
prevOrderedBlocks[mismatchSecond]
|
|
629
|
+
)) {
|
|
630
|
+
skipReconcile = true;
|
|
631
|
+
}
|
|
632
|
+
} else if (reorderByLIS(parent, container.endMarker, prevOrderedBlocks, nextOrderedBlocks)) {
|
|
633
|
+
skipReconcile = true;
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
if (!skipReconcile && (newBlocks.size > 0 || container.currentNodes.length > 0)) {
|
|
637
|
+
const prevNodes = container.currentNodes;
|
|
638
|
+
const nextNodes = container.nextNodes;
|
|
639
|
+
nextNodes.length = 0;
|
|
640
|
+
nextNodes.push(container.startMarker);
|
|
641
|
+
for (let i = 0; i < nextOrderedBlocks.length; i++) {
|
|
642
|
+
const nodes = nextOrderedBlocks[i].nodes;
|
|
643
|
+
for (let j = 0; j < nodes.length; j++) {
|
|
644
|
+
nextNodes.push(nodes[j]);
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
nextNodes.push(container.endMarker);
|
|
648
|
+
reconcileArrays(parent, prevNodes, nextNodes);
|
|
649
|
+
container.currentNodes = nextNodes;
|
|
650
|
+
container.nextNodes = prevNodes;
|
|
651
|
+
} else if (skipReconcile && updateNodeBuffer) {
|
|
652
|
+
const prevNodes = container.currentNodes;
|
|
653
|
+
const nextNodes = container.nextNodes;
|
|
654
|
+
nextNodes.length = 0;
|
|
655
|
+
nextNodes.push(container.startMarker);
|
|
656
|
+
for (let i = 0; i < nextOrderedBlocks.length; i++) {
|
|
657
|
+
const nodes = nextOrderedBlocks[i].nodes;
|
|
658
|
+
for (let j = 0; j < nodes.length; j++) {
|
|
659
|
+
nextNodes.push(nodes[j]);
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
nextNodes.push(container.endMarker);
|
|
663
|
+
container.currentNodes = nextNodes;
|
|
664
|
+
container.nextNodes = prevNodes;
|
|
665
|
+
}
|
|
666
|
+
container.blocks = newBlocks;
|
|
667
|
+
container.nextBlocks = oldBlocks;
|
|
668
|
+
container.orderedBlocks = nextOrderedBlocks;
|
|
669
|
+
container.nextOrderedBlocks = prevOrderedBlocks;
|
|
670
|
+
for (const block of createdBlocks) {
|
|
671
|
+
if (newBlocks.get(block.key) === block) {
|
|
672
|
+
_chunkUBFDB6OLcjs.flushOnMount.call(void 0, block.root);
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
});
|
|
676
|
+
};
|
|
677
|
+
const disconnectObserver = () => {
|
|
678
|
+
_optionalChain([connectObserver, 'optionalAccess', _9 => _9.disconnect, 'call', _10 => _10()]);
|
|
679
|
+
connectObserver = null;
|
|
680
|
+
};
|
|
681
|
+
const ensureEffectStarted = () => {
|
|
682
|
+
if (disposed || effectStarted) return effectStarted;
|
|
683
|
+
const isSSR = _chunkUBFDB6OLcjs.__fictIsSSR.call(void 0, );
|
|
684
|
+
const parent = isSSR ? container.startMarker.parentNode : getConnectedParent();
|
|
685
|
+
if (!parent) return false;
|
|
686
|
+
const start = () => {
|
|
687
|
+
effectDispose = _chunkUBFDB6OLcjs.createRenderEffect.call(void 0, performDiff);
|
|
688
|
+
effectStarted = true;
|
|
689
|
+
};
|
|
690
|
+
if (hostRoot) {
|
|
691
|
+
const prev = _chunkUBFDB6OLcjs.pushRoot.call(void 0, hostRoot);
|
|
692
|
+
try {
|
|
693
|
+
start();
|
|
694
|
+
} finally {
|
|
695
|
+
_chunkUBFDB6OLcjs.popRoot.call(void 0, prev);
|
|
696
|
+
}
|
|
697
|
+
} else {
|
|
698
|
+
start();
|
|
699
|
+
}
|
|
700
|
+
return true;
|
|
701
|
+
};
|
|
702
|
+
const waitForConnection = () => {
|
|
703
|
+
if (connectObserver || typeof MutationObserver === "undefined") return;
|
|
704
|
+
const root = _nullishCoalesce(_optionalChain([container, 'access', _11 => _11.startMarker, 'access', _12 => _12.getRootNode, 'optionalCall', _13 => _13()]), () => ( document));
|
|
705
|
+
const shadowRoot = root && root.nodeType === 11 && isShadowRoot(root) ? root : null;
|
|
706
|
+
connectObserver = new MutationObserver(() => {
|
|
707
|
+
if (disposed) return;
|
|
708
|
+
if (getConnectedParent()) {
|
|
709
|
+
disconnectObserver();
|
|
710
|
+
if (ensureEffectStarted()) {
|
|
711
|
+
_chunkUBFDB6OLcjs.flush.call(void 0, );
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
});
|
|
715
|
+
connectObserver.observe(document, { childList: true, subtree: true });
|
|
716
|
+
if (shadowRoot) {
|
|
717
|
+
connectObserver.observe(shadowRoot, { childList: true, subtree: true });
|
|
718
|
+
}
|
|
719
|
+
};
|
|
720
|
+
const scheduleStart = () => {
|
|
721
|
+
if (startScheduled || disposed || effectStarted) return;
|
|
722
|
+
startScheduled = true;
|
|
723
|
+
const run = () => {
|
|
724
|
+
startScheduled = false;
|
|
725
|
+
if (!ensureEffectStarted()) {
|
|
726
|
+
waitForConnection();
|
|
727
|
+
}
|
|
728
|
+
};
|
|
729
|
+
if (typeof queueMicrotask === "function") {
|
|
730
|
+
queueMicrotask(run);
|
|
731
|
+
} else {
|
|
732
|
+
Promise.resolve().then(run).catch(() => void 0);
|
|
733
|
+
}
|
|
734
|
+
};
|
|
735
|
+
scheduleStart();
|
|
736
|
+
return {
|
|
737
|
+
get marker() {
|
|
738
|
+
scheduleStart();
|
|
739
|
+
return fragment;
|
|
740
|
+
},
|
|
741
|
+
startMarker: container.startMarker,
|
|
742
|
+
endMarker: container.endMarker,
|
|
743
|
+
// Flush pending items - call after markers are inserted into DOM
|
|
744
|
+
flush: () => {
|
|
745
|
+
if (disposed) return;
|
|
746
|
+
scheduleStart();
|
|
747
|
+
if (ensureEffectStarted()) {
|
|
748
|
+
_chunkUBFDB6OLcjs.flush.call(void 0, );
|
|
749
|
+
} else {
|
|
750
|
+
waitForConnection();
|
|
751
|
+
}
|
|
752
|
+
},
|
|
753
|
+
dispose: () => {
|
|
754
|
+
disposed = true;
|
|
755
|
+
_optionalChain([effectDispose, 'optionalCall', _14 => _14()]);
|
|
756
|
+
disconnectObserver();
|
|
757
|
+
container.dispose();
|
|
758
|
+
}
|
|
759
|
+
};
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
|
|
763
|
+
|
|
764
|
+
|
|
765
|
+
|
|
766
|
+
|
|
767
|
+
exports.reconcileArrays = reconcileArrays; exports.moveNodesBefore = moveNodesBefore; exports.isNodeBetweenMarkers = isNodeBetweenMarkers; exports.createKeyedList = createKeyedList;
|
|
768
|
+
//# sourceMappingURL=chunk-LBE6DC3V.cjs.map
|