@fictjs/runtime 0.3.0 → 0.5.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/advanced.cjs +10 -8
- package/dist/advanced.cjs.map +1 -1
- package/dist/advanced.d.cts +4 -3
- package/dist/advanced.d.ts +4 -3
- package/dist/advanced.js +10 -8
- package/dist/advanced.js.map +1 -1
- package/dist/{chunk-TWELIZRY.js → chunk-5AA7HP4S.js} +5 -3
- package/dist/{chunk-TWELIZRY.js.map → chunk-5AA7HP4S.js.map} +1 -1
- package/dist/chunk-6SOPF5LZ.cjs +2363 -0
- package/dist/chunk-6SOPF5LZ.cjs.map +1 -0
- package/dist/{chunk-SO6X7G5S.js → chunk-BQG7VEBY.js} +501 -1880
- package/dist/chunk-BQG7VEBY.js.map +1 -0
- package/dist/chunk-FKDMDAUR.js +2363 -0
- package/dist/chunk-FKDMDAUR.js.map +1 -0
- package/dist/{chunk-L4DIV3RC.cjs → chunk-GHUV2FLD.cjs} +9 -7
- package/dist/chunk-GHUV2FLD.cjs.map +1 -0
- package/dist/{chunk-XLIZJMMJ.js → chunk-KKKYW54Z.js} +8 -6
- package/dist/{chunk-XLIZJMMJ.js.map → chunk-KKKYW54Z.js.map} +1 -1
- package/dist/{chunk-M2TSXZ4C.cjs → chunk-KYLNC4CD.cjs} +18 -16
- package/dist/chunk-KYLNC4CD.cjs.map +1 -0
- package/dist/chunk-TKWN42TA.cjs +2259 -0
- package/dist/chunk-TKWN42TA.cjs.map +1 -0
- package/dist/{context-B25xyQrJ.d.cts → context-CTBE00S_.d.cts} +1 -1
- package/dist/{context-CGdP7_Jb.d.ts → context-lkLhbkFJ.d.ts} +1 -1
- package/dist/{effect-D6kaLM2-.d.cts → effect-BpSNEJJz.d.cts} +7 -67
- package/dist/{effect-D6kaLM2-.d.ts → effect-BpSNEJJz.d.ts} +7 -67
- package/dist/index.cjs +40 -38
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -4
- package/dist/index.d.ts +5 -4
- package/dist/index.dev.js +92 -4
- package/dist/index.dev.js.map +1 -1
- package/dist/index.js +19 -17
- package/dist/index.js.map +1 -1
- package/dist/internal.cjs +189 -202
- package/dist/internal.cjs.map +1 -1
- package/dist/internal.d.cts +13 -23
- package/dist/internal.d.ts +13 -23
- package/dist/internal.js +195 -208
- package/dist/internal.js.map +1 -1
- package/dist/loader.cjs +280 -0
- package/dist/loader.cjs.map +1 -0
- package/dist/loader.d.cts +57 -0
- package/dist/loader.d.ts +57 -0
- package/dist/loader.js +280 -0
- package/dist/loader.js.map +1 -0
- package/dist/{props-BIfromL0.d.cts → props-XTHYD19o.d.cts} +13 -2
- package/dist/{props-BEgIVMRx.d.ts → props-x-HbI-jX.d.ts} +13 -2
- package/dist/resume-BrAkmSTY.d.cts +79 -0
- package/dist/resume-Dx8_l72o.d.ts +79 -0
- package/dist/{scope-CzNkn587.d.ts → scope-CdbGmsFf.d.ts} +1 -1
- package/dist/{scope-Cx_3CjIZ.d.cts → scope-DfcP9I-A.d.cts} +1 -1
- package/dist/signal-C4ISF17w.d.cts +66 -0
- package/dist/signal-C4ISF17w.d.ts +66 -0
- package/package.json +8 -3
- package/src/binding.ts +254 -5
- package/src/dom.ts +103 -5
- package/src/hooks.ts +15 -2
- package/src/hydration.ts +75 -0
- package/src/internal.ts +34 -2
- package/src/list-helpers.ts +113 -12
- package/src/loader.ts +437 -0
- package/src/node-ops.ts +65 -0
- package/src/resume.ts +517 -0
- package/src/store.ts +8 -0
- package/dist/chunk-ID3WBWNO.cjs +0 -3638
- package/dist/chunk-ID3WBWNO.cjs.map +0 -1
- package/dist/chunk-L4DIV3RC.cjs.map +0 -1
- package/dist/chunk-M2TSXZ4C.cjs.map +0 -1
- package/dist/chunk-SO6X7G5S.js.map +0 -1
package/dist/internal.js
CHANGED
|
@@ -1,31 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
runInScope
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-5AA7HP4S.js";
|
|
4
4
|
import {
|
|
5
|
-
Aliases,
|
|
6
|
-
BooleanAttributes,
|
|
7
|
-
ChildProperties,
|
|
8
|
-
DelegatedEvents,
|
|
9
5
|
Fragment,
|
|
10
|
-
Properties,
|
|
11
|
-
SVGElements,
|
|
12
|
-
SVGNamespace,
|
|
13
|
-
UnitlessStyles,
|
|
14
|
-
__fictPopContext,
|
|
15
6
|
__fictProp,
|
|
16
7
|
__fictPropsRest,
|
|
17
|
-
__fictPushContext,
|
|
18
|
-
__fictRender,
|
|
19
|
-
__fictResetContext,
|
|
20
|
-
__fictUseContext,
|
|
21
|
-
__fictUseEffect,
|
|
22
|
-
__fictUseMemo,
|
|
23
|
-
__fictUseSignal,
|
|
24
|
-
__resetReactiveState,
|
|
25
8
|
addEventListener,
|
|
26
9
|
assign,
|
|
27
10
|
batch,
|
|
28
|
-
batch2,
|
|
29
11
|
bindAttribute,
|
|
30
12
|
bindClass,
|
|
31
13
|
bindEvent,
|
|
@@ -37,194 +19,90 @@ import {
|
|
|
37
19
|
classList,
|
|
38
20
|
clearDelegatedEvents,
|
|
39
21
|
createConditional,
|
|
40
|
-
createEffect,
|
|
41
22
|
createElement,
|
|
42
|
-
createMemo,
|
|
43
23
|
createPortal,
|
|
44
24
|
createPropsProxy,
|
|
25
|
+
delegateEvents,
|
|
26
|
+
getSlotEnd,
|
|
27
|
+
hydrateComponent,
|
|
28
|
+
insert,
|
|
29
|
+
insertBetween,
|
|
30
|
+
insertNodesBefore,
|
|
31
|
+
isHydratingActive,
|
|
32
|
+
isReactive,
|
|
33
|
+
keyed,
|
|
34
|
+
mergeProps,
|
|
35
|
+
prop,
|
|
36
|
+
removeNodes,
|
|
37
|
+
render,
|
|
38
|
+
resolvePath,
|
|
39
|
+
spread,
|
|
40
|
+
template,
|
|
41
|
+
toNodeArray,
|
|
42
|
+
unwrap,
|
|
43
|
+
withHydrationRange
|
|
44
|
+
} from "./chunk-BQG7VEBY.js";
|
|
45
|
+
import {
|
|
46
|
+
Aliases,
|
|
47
|
+
BooleanAttributes,
|
|
48
|
+
ChildProperties,
|
|
49
|
+
DelegatedEvents,
|
|
50
|
+
Properties,
|
|
51
|
+
SVGElements,
|
|
52
|
+
SVGNamespace,
|
|
53
|
+
UnitlessStyles,
|
|
54
|
+
__fictDisableResumable,
|
|
55
|
+
__fictDisableSSR,
|
|
56
|
+
__fictEnableResumable,
|
|
57
|
+
__fictEnableSSR,
|
|
58
|
+
__fictEnsureScope,
|
|
59
|
+
__fictEnterHydration,
|
|
60
|
+
__fictExitHydration,
|
|
61
|
+
__fictGetResume,
|
|
62
|
+
__fictGetSSRScope,
|
|
63
|
+
__fictGetScopeProps,
|
|
64
|
+
__fictGetScopeRegistry,
|
|
65
|
+
__fictIsHydrating,
|
|
66
|
+
__fictIsResumable,
|
|
67
|
+
__fictIsSSR,
|
|
68
|
+
__fictPopContext,
|
|
69
|
+
__fictPrepareContext,
|
|
70
|
+
__fictPushContext,
|
|
71
|
+
__fictQrl,
|
|
72
|
+
__fictRegisterResume,
|
|
73
|
+
__fictRegisterScope,
|
|
74
|
+
__fictRender,
|
|
75
|
+
__fictResetContext,
|
|
76
|
+
__fictSerializeSSRState,
|
|
77
|
+
__fictSetSSRState,
|
|
78
|
+
__fictUseContext,
|
|
79
|
+
__fictUseEffect,
|
|
80
|
+
__fictUseLexicalScope,
|
|
81
|
+
__fictUseMemo,
|
|
82
|
+
__fictUseSignal,
|
|
83
|
+
__resetReactiveState,
|
|
84
|
+
createEffect,
|
|
85
|
+
createMemo,
|
|
45
86
|
createRenderEffect,
|
|
46
87
|
createRootContext,
|
|
47
88
|
createSelector,
|
|
48
|
-
|
|
89
|
+
createStore,
|
|
90
|
+
deserializeValue,
|
|
49
91
|
destroyRoot,
|
|
50
92
|
effectScope,
|
|
51
93
|
flush,
|
|
52
94
|
flushOnMount,
|
|
53
95
|
getCurrentRoot,
|
|
54
96
|
getPropAlias,
|
|
55
|
-
|
|
56
|
-
insertNodesBefore,
|
|
57
|
-
isReactive,
|
|
58
|
-
keyed,
|
|
59
|
-
mergeProps,
|
|
97
|
+
isStoreProxy,
|
|
60
98
|
onDestroy,
|
|
61
99
|
popRoot,
|
|
62
|
-
prop,
|
|
63
100
|
pushRoot,
|
|
64
|
-
|
|
101
|
+
serializeValue,
|
|
65
102
|
setActiveSub,
|
|
66
103
|
signal,
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
toNodeArray,
|
|
70
|
-
unwrap
|
|
71
|
-
} from "./chunk-SO6X7G5S.js";
|
|
72
|
-
|
|
73
|
-
// src/store.ts
|
|
74
|
-
var PROXY = Symbol("fict:store-proxy");
|
|
75
|
-
var TARGET = Symbol("fict:store-target");
|
|
76
|
-
var ITERATE_KEY = Symbol("fict:iterate");
|
|
77
|
-
function createStore(initialValue) {
|
|
78
|
-
const unwrapped = unwrap2(initialValue);
|
|
79
|
-
const wrapped = wrap(unwrapped);
|
|
80
|
-
function setStore(fn) {
|
|
81
|
-
batch(() => {
|
|
82
|
-
const result = fn(wrapped);
|
|
83
|
-
if (result !== void 0) {
|
|
84
|
-
reconcile(wrapped, result);
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
return [wrapped, setStore];
|
|
89
|
-
}
|
|
90
|
-
var proxyCache = /* @__PURE__ */ new WeakMap();
|
|
91
|
-
var signalCache = /* @__PURE__ */ new WeakMap();
|
|
92
|
-
function wrap(value) {
|
|
93
|
-
if (value === null || typeof value !== "object") return value;
|
|
94
|
-
if (Reflect.get(value, PROXY)) return value;
|
|
95
|
-
if (proxyCache.has(value)) return proxyCache.get(value);
|
|
96
|
-
const handler = {
|
|
97
|
-
get(target, prop2, receiver) {
|
|
98
|
-
if (prop2 === PROXY) return true;
|
|
99
|
-
if (prop2 === TARGET) return target;
|
|
100
|
-
const value2 = Reflect.get(target, prop2, receiver);
|
|
101
|
-
track(target, prop2);
|
|
102
|
-
return wrap(value2);
|
|
103
|
-
},
|
|
104
|
-
has(target, prop2) {
|
|
105
|
-
const result = Reflect.has(target, prop2);
|
|
106
|
-
track(target, prop2);
|
|
107
|
-
return result;
|
|
108
|
-
},
|
|
109
|
-
ownKeys(target) {
|
|
110
|
-
track(target, ITERATE_KEY);
|
|
111
|
-
return Reflect.ownKeys(target);
|
|
112
|
-
},
|
|
113
|
-
getOwnPropertyDescriptor(target, prop2) {
|
|
114
|
-
track(target, prop2);
|
|
115
|
-
return Reflect.getOwnPropertyDescriptor(target, prop2);
|
|
116
|
-
},
|
|
117
|
-
set(target, prop2, value2, receiver) {
|
|
118
|
-
if (prop2 === PROXY || prop2 === TARGET) return false;
|
|
119
|
-
const isArrayLength = Array.isArray(target) && prop2 === "length";
|
|
120
|
-
const oldLength = isArrayLength ? target.length : void 0;
|
|
121
|
-
const hadKey = Object.prototype.hasOwnProperty.call(target, prop2);
|
|
122
|
-
const oldValue = Reflect.get(target, prop2, receiver);
|
|
123
|
-
if (oldValue === value2) return true;
|
|
124
|
-
const result = Reflect.set(target, prop2, value2, receiver);
|
|
125
|
-
if (result) {
|
|
126
|
-
trigger(target, prop2);
|
|
127
|
-
if (!hadKey) {
|
|
128
|
-
trigger(target, ITERATE_KEY);
|
|
129
|
-
}
|
|
130
|
-
if (isArrayLength) {
|
|
131
|
-
const nextLength = target.length;
|
|
132
|
-
if (typeof oldLength === "number" && nextLength < oldLength) {
|
|
133
|
-
const signals = signalCache.get(target);
|
|
134
|
-
if (signals) {
|
|
135
|
-
for (const key of signals.keys()) {
|
|
136
|
-
if (typeof key !== "string") continue;
|
|
137
|
-
const index = Number(key);
|
|
138
|
-
if (!Number.isInteger(index) || String(index) !== key) continue;
|
|
139
|
-
if (index >= nextLength && index < oldLength) {
|
|
140
|
-
trigger(target, key);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
trigger(target, ITERATE_KEY);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
return result;
|
|
149
|
-
},
|
|
150
|
-
deleteProperty(target, prop2) {
|
|
151
|
-
const hadKey = Object.prototype.hasOwnProperty.call(target, prop2);
|
|
152
|
-
const result = Reflect.deleteProperty(target, prop2);
|
|
153
|
-
if (result) {
|
|
154
|
-
trigger(target, prop2);
|
|
155
|
-
if (hadKey) {
|
|
156
|
-
trigger(target, ITERATE_KEY);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
return result;
|
|
160
|
-
}
|
|
161
|
-
};
|
|
162
|
-
const proxy = new Proxy(value, handler);
|
|
163
|
-
proxyCache.set(value, proxy);
|
|
164
|
-
return proxy;
|
|
165
|
-
}
|
|
166
|
-
function unwrap2(value) {
|
|
167
|
-
if (value && typeof value === "object" && Reflect.get(value, PROXY)) {
|
|
168
|
-
return Reflect.get(value, TARGET);
|
|
169
|
-
}
|
|
170
|
-
return value;
|
|
171
|
-
}
|
|
172
|
-
function track(target, prop2) {
|
|
173
|
-
let signals = signalCache.get(target);
|
|
174
|
-
if (!signals) {
|
|
175
|
-
signals = /* @__PURE__ */ new Map();
|
|
176
|
-
signalCache.set(target, signals);
|
|
177
|
-
}
|
|
178
|
-
let s = signals.get(prop2);
|
|
179
|
-
if (!s) {
|
|
180
|
-
const initial = prop2 === ITERATE_KEY ? Reflect.ownKeys(target).length : getLastValue(target, prop2);
|
|
181
|
-
s = signal(initial);
|
|
182
|
-
signals.set(prop2, s);
|
|
183
|
-
}
|
|
184
|
-
s();
|
|
185
|
-
}
|
|
186
|
-
function trigger(target, prop2) {
|
|
187
|
-
const signals = signalCache.get(target);
|
|
188
|
-
if (signals) {
|
|
189
|
-
const s = signals.get(prop2);
|
|
190
|
-
if (s) {
|
|
191
|
-
if (prop2 === ITERATE_KEY) {
|
|
192
|
-
s(Reflect.ownKeys(target).length);
|
|
193
|
-
} else {
|
|
194
|
-
s(getLastValue(target, prop2));
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
function getLastValue(target, prop2) {
|
|
200
|
-
return Reflect.get(target, prop2);
|
|
201
|
-
}
|
|
202
|
-
function reconcile(target, value) {
|
|
203
|
-
if (target === value) return;
|
|
204
|
-
if (value === null || typeof value !== "object") {
|
|
205
|
-
throw new Error(
|
|
206
|
-
`[Fict] Cannot replace store with primitive value: ${String(
|
|
207
|
-
value
|
|
208
|
-
)}. setStore should return an object/array to merge.`
|
|
209
|
-
);
|
|
210
|
-
}
|
|
211
|
-
const realTarget = unwrap2(target);
|
|
212
|
-
const realValue = unwrap2(value);
|
|
213
|
-
const keys = /* @__PURE__ */ new Set([...Object.keys(realTarget), ...Object.keys(realValue)]);
|
|
214
|
-
for (const key of keys) {
|
|
215
|
-
const rTarget = realTarget;
|
|
216
|
-
const rValue = realValue;
|
|
217
|
-
if (rValue[key] === void 0 && rTarget[key] !== void 0) {
|
|
218
|
-
delete target[key];
|
|
219
|
-
} else if (rTarget[key] !== rValue[key]) {
|
|
220
|
-
;
|
|
221
|
-
target[key] = rValue[key];
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
if (Array.isArray(target) && Array.isArray(realValue) && target.length !== realValue.length) {
|
|
225
|
-
target.length = realValue.length;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
104
|
+
unwrapStore
|
|
105
|
+
} from "./chunk-FKDMDAUR.js";
|
|
228
106
|
|
|
229
107
|
// src/reconcile.ts
|
|
230
108
|
function reconcileArrays(parentNode, a, b) {
|
|
@@ -353,21 +231,21 @@ var MAX_SAFE_VERSION = 9007199254740991;
|
|
|
353
231
|
function createVersionedSignalAccessor(initialValue) {
|
|
354
232
|
let current = initialValue;
|
|
355
233
|
let version = 0;
|
|
356
|
-
const
|
|
234
|
+
const track = signal(version);
|
|
357
235
|
function accessor(value) {
|
|
358
236
|
if (arguments.length === 0) {
|
|
359
|
-
|
|
237
|
+
track();
|
|
360
238
|
return current;
|
|
361
239
|
}
|
|
362
240
|
current = value;
|
|
363
241
|
version = version >= MAX_SAFE_VERSION ? 1 : version + 1;
|
|
364
|
-
|
|
242
|
+
track(version);
|
|
365
243
|
}
|
|
366
244
|
return accessor;
|
|
367
245
|
}
|
|
368
|
-
function createKeyedListContainer() {
|
|
369
|
-
const startMarker = document.createComment("fict:list:start");
|
|
370
|
-
const endMarker = document.createComment("fict:list:end");
|
|
246
|
+
function createKeyedListContainer(startOverride, endOverride) {
|
|
247
|
+
const startMarker = startOverride ?? document.createComment("fict:list:start");
|
|
248
|
+
const endMarker = endOverride ?? document.createComment("fict:list:end");
|
|
371
249
|
const dispose = () => {
|
|
372
250
|
for (const block of container.blocks.values()) {
|
|
373
251
|
destroyRoot(block.root);
|
|
@@ -407,7 +285,7 @@ function createKeyedListContainer() {
|
|
|
407
285
|
};
|
|
408
286
|
return container;
|
|
409
287
|
}
|
|
410
|
-
function createKeyedBlock(key, item, index,
|
|
288
|
+
function createKeyedBlock(key, item, index, render2, needsIndex = true, hostRoot) {
|
|
411
289
|
const itemSig = createVersionedSignalAccessor(item);
|
|
412
290
|
const indexSig = needsIndex ? signal(index) : ((next) => {
|
|
413
291
|
if (arguments.length === 0) return index;
|
|
@@ -421,7 +299,7 @@ function createKeyedBlock(key, item, index, render, needsIndex = true, hostRoot)
|
|
|
421
299
|
const prevSub = setActiveSub(void 0);
|
|
422
300
|
try {
|
|
423
301
|
scopeDispose = effectScope(() => {
|
|
424
|
-
const rendered =
|
|
302
|
+
const rendered = render2(itemSig, indexSig, key);
|
|
425
303
|
if (rendered instanceof Node || Array.isArray(rendered) && rendered.every((n) => n instanceof Node)) {
|
|
426
304
|
nodes = toNodeArray(rendered);
|
|
427
305
|
} else {
|
|
@@ -534,20 +412,41 @@ function reorderByLIS(parent, endMarker, prev, next) {
|
|
|
534
412
|
}
|
|
535
413
|
return moved;
|
|
536
414
|
}
|
|
537
|
-
function createKeyedList(getItems, keyFn, renderItem, needsIndex) {
|
|
415
|
+
function createKeyedList(getItems, keyFn, renderItem, needsIndex, startMarker, endMarker) {
|
|
538
416
|
const resolvedNeedsIndex = arguments.length >= 4 ? !!needsIndex : renderItem.length > 1;
|
|
539
|
-
return createFineGrainedKeyedList(
|
|
417
|
+
return createFineGrainedKeyedList(
|
|
418
|
+
getItems,
|
|
419
|
+
keyFn,
|
|
420
|
+
renderItem,
|
|
421
|
+
resolvedNeedsIndex,
|
|
422
|
+
startMarker,
|
|
423
|
+
endMarker
|
|
424
|
+
);
|
|
540
425
|
}
|
|
541
|
-
function createFineGrainedKeyedList(getItems, keyFn, renderItem, needsIndex) {
|
|
542
|
-
const container = createKeyedListContainer();
|
|
426
|
+
function createFineGrainedKeyedList(getItems, keyFn, renderItem, needsIndex, startOverride, endOverride) {
|
|
427
|
+
const container = createKeyedListContainer(startOverride, endOverride);
|
|
543
428
|
const hostRoot = getCurrentRoot();
|
|
544
|
-
const
|
|
545
|
-
fragment
|
|
429
|
+
const useProvided = !!(startOverride && endOverride);
|
|
430
|
+
const fragment = useProvided ? container.startMarker : document.createDocumentFragment();
|
|
431
|
+
if (!useProvided) {
|
|
432
|
+
;
|
|
433
|
+
fragment.append(container.startMarker, container.endMarker);
|
|
434
|
+
}
|
|
546
435
|
let disposed = false;
|
|
547
436
|
let effectDispose;
|
|
548
437
|
let connectObserver = null;
|
|
549
438
|
let effectStarted = false;
|
|
550
439
|
let startScheduled = false;
|
|
440
|
+
let initialHydrating = __fictIsHydrating();
|
|
441
|
+
const collectBetween = () => {
|
|
442
|
+
const nodes = [];
|
|
443
|
+
let cursor = container.startMarker.nextSibling;
|
|
444
|
+
while (cursor && cursor !== container.endMarker) {
|
|
445
|
+
nodes.push(cursor);
|
|
446
|
+
cursor = cursor.nextSibling;
|
|
447
|
+
}
|
|
448
|
+
return nodes;
|
|
449
|
+
};
|
|
551
450
|
const getConnectedParent = () => {
|
|
552
451
|
const endParent = container.endMarker.parentNode;
|
|
553
452
|
const startParent = container.startMarker.parentNode;
|
|
@@ -560,15 +459,72 @@ function createFineGrainedKeyedList(getItems, keyFn, renderItem, needsIndex) {
|
|
|
560
459
|
};
|
|
561
460
|
const performDiff = () => {
|
|
562
461
|
if (disposed) return;
|
|
563
|
-
const
|
|
462
|
+
const isSSR = __fictIsSSR();
|
|
463
|
+
const parent = isSSR ? container.startMarker.parentNode : getConnectedParent();
|
|
564
464
|
if (!parent) return;
|
|
565
|
-
|
|
465
|
+
batch(() => {
|
|
566
466
|
const oldBlocks = container.blocks;
|
|
567
467
|
const newBlocks = container.nextBlocks;
|
|
568
468
|
const prevOrderedBlocks = container.orderedBlocks;
|
|
569
469
|
const nextOrderedBlocks = container.nextOrderedBlocks;
|
|
570
470
|
const orderedIndexByKey = container.orderedIndexByKey;
|
|
571
471
|
const newItems = getItems();
|
|
472
|
+
if (initialHydrating && isHydratingActive()) {
|
|
473
|
+
initialHydrating = false;
|
|
474
|
+
newBlocks.clear();
|
|
475
|
+
nextOrderedBlocks.length = 0;
|
|
476
|
+
orderedIndexByKey.clear();
|
|
477
|
+
if (newItems.length === 0) {
|
|
478
|
+
oldBlocks.clear();
|
|
479
|
+
prevOrderedBlocks.length = 0;
|
|
480
|
+
container.currentNodes = [container.startMarker, container.endMarker];
|
|
481
|
+
container.nextNodes.length = 0;
|
|
482
|
+
return;
|
|
483
|
+
}
|
|
484
|
+
const createdBlocks2 = [];
|
|
485
|
+
withHydrationRange(
|
|
486
|
+
container.startMarker.nextSibling,
|
|
487
|
+
container.endMarker,
|
|
488
|
+
parent.ownerDocument ?? document,
|
|
489
|
+
() => {
|
|
490
|
+
for (let index = 0; index < newItems.length; index++) {
|
|
491
|
+
const item = newItems[index];
|
|
492
|
+
const key = keyFn(item, index);
|
|
493
|
+
if (newBlocks.has(key)) {
|
|
494
|
+
if (isDev) {
|
|
495
|
+
console.warn(
|
|
496
|
+
`[fict] Duplicate key "${String(key)}" detected in list hydration. Each item should have a unique key.`
|
|
497
|
+
);
|
|
498
|
+
}
|
|
499
|
+
const existing = newBlocks.get(key);
|
|
500
|
+
if (existing) {
|
|
501
|
+
destroyRoot(existing.root);
|
|
502
|
+
removeNodes(existing.nodes);
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
const block = createKeyedBlock(key, item, index, renderItem, needsIndex, hostRoot);
|
|
506
|
+
createdBlocks2.push(block);
|
|
507
|
+
newBlocks.set(key, block);
|
|
508
|
+
orderedIndexByKey.set(key, nextOrderedBlocks.length);
|
|
509
|
+
nextOrderedBlocks.push(block);
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
);
|
|
513
|
+
container.blocks = newBlocks;
|
|
514
|
+
container.nextBlocks = oldBlocks;
|
|
515
|
+
container.orderedBlocks = nextOrderedBlocks;
|
|
516
|
+
container.nextOrderedBlocks = prevOrderedBlocks;
|
|
517
|
+
oldBlocks.clear();
|
|
518
|
+
prevOrderedBlocks.length = 0;
|
|
519
|
+
container.currentNodes = [container.startMarker, ...collectBetween(), container.endMarker];
|
|
520
|
+
container.nextNodes.length = 0;
|
|
521
|
+
for (const block of createdBlocks2) {
|
|
522
|
+
if (newBlocks.get(block.key) === block) {
|
|
523
|
+
flushOnMount(block.root);
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
return;
|
|
527
|
+
}
|
|
572
528
|
if (newItems.length === 0) {
|
|
573
529
|
if (oldBlocks.size > 0) {
|
|
574
530
|
for (const block of oldBlocks.values()) {
|
|
@@ -798,7 +754,8 @@ function createFineGrainedKeyedList(getItems, keyFn, renderItem, needsIndex) {
|
|
|
798
754
|
};
|
|
799
755
|
const ensureEffectStarted = () => {
|
|
800
756
|
if (disposed || effectStarted) return effectStarted;
|
|
801
|
-
const
|
|
757
|
+
const isSSR = __fictIsSSR();
|
|
758
|
+
const parent = isSSR ? container.startMarker.parentNode : getConnectedParent();
|
|
802
759
|
if (!parent) return false;
|
|
803
760
|
const start = () => {
|
|
804
761
|
effectDispose = createRenderEffect(performDiff);
|
|
@@ -880,14 +837,35 @@ export {
|
|
|
880
837
|
SVGElements,
|
|
881
838
|
SVGNamespace,
|
|
882
839
|
UnitlessStyles,
|
|
840
|
+
__fictDisableResumable,
|
|
841
|
+
__fictDisableSSR,
|
|
842
|
+
__fictEnableResumable,
|
|
843
|
+
__fictEnableSSR,
|
|
844
|
+
__fictEnsureScope,
|
|
845
|
+
__fictEnterHydration,
|
|
846
|
+
__fictExitHydration,
|
|
847
|
+
__fictGetResume,
|
|
848
|
+
__fictGetSSRScope,
|
|
849
|
+
__fictGetScopeProps,
|
|
850
|
+
__fictGetScopeRegistry,
|
|
851
|
+
__fictIsHydrating,
|
|
852
|
+
__fictIsResumable,
|
|
853
|
+
__fictIsSSR,
|
|
883
854
|
__fictPopContext,
|
|
855
|
+
__fictPrepareContext,
|
|
884
856
|
__fictProp,
|
|
885
857
|
__fictPropsRest,
|
|
886
858
|
__fictPushContext,
|
|
859
|
+
__fictQrl,
|
|
860
|
+
__fictRegisterResume,
|
|
861
|
+
__fictRegisterScope,
|
|
887
862
|
__fictRender,
|
|
888
863
|
__fictResetContext,
|
|
864
|
+
__fictSerializeSSRState,
|
|
865
|
+
__fictSetSSRState,
|
|
889
866
|
__fictUseContext,
|
|
890
867
|
__fictUseEffect,
|
|
868
|
+
__fictUseLexicalScope,
|
|
891
869
|
__fictUseMemo,
|
|
892
870
|
__fictUseSignal,
|
|
893
871
|
__resetReactiveState,
|
|
@@ -915,11 +893,16 @@ export {
|
|
|
915
893
|
signal as createSignal,
|
|
916
894
|
createStore,
|
|
917
895
|
delegateEvents,
|
|
896
|
+
deserializeValue,
|
|
918
897
|
getPropAlias,
|
|
898
|
+
getSlotEnd,
|
|
899
|
+
hydrateComponent,
|
|
919
900
|
insert,
|
|
901
|
+
insertBetween,
|
|
920
902
|
insertNodesBefore,
|
|
921
903
|
isNodeBetweenMarkers,
|
|
922
904
|
isReactive,
|
|
905
|
+
isStoreProxy,
|
|
923
906
|
keyed,
|
|
924
907
|
mergeProps,
|
|
925
908
|
moveNodesBefore,
|
|
@@ -927,10 +910,14 @@ export {
|
|
|
927
910
|
prop,
|
|
928
911
|
reconcileArrays,
|
|
929
912
|
removeNodes,
|
|
913
|
+
render,
|
|
914
|
+
resolvePath,
|
|
930
915
|
runInScope,
|
|
916
|
+
serializeValue,
|
|
931
917
|
spread,
|
|
932
918
|
template,
|
|
933
919
|
toNodeArray,
|
|
934
|
-
unwrap
|
|
920
|
+
unwrap,
|
|
921
|
+
unwrapStore
|
|
935
922
|
};
|
|
936
923
|
//# sourceMappingURL=internal.js.map
|