@fictjs/runtime 0.4.0 → 0.5.1

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 (72) hide show
  1. package/dist/advanced.cjs +10 -8
  2. package/dist/advanced.cjs.map +1 -1
  3. package/dist/advanced.d.cts +4 -3
  4. package/dist/advanced.d.ts +4 -3
  5. package/dist/advanced.js +10 -8
  6. package/dist/advanced.js.map +1 -1
  7. package/dist/{chunk-L4DIV3RC.cjs → chunk-4ZPZM5IG.cjs} +9 -7
  8. package/dist/chunk-4ZPZM5IG.cjs.map +1 -0
  9. package/dist/{chunk-XLIZJMMJ.js → chunk-5OYBRKE4.js} +8 -6
  10. package/dist/{chunk-XLIZJMMJ.js.map → chunk-5OYBRKE4.js.map} +1 -1
  11. package/dist/chunk-6RCEIWZL.cjs +2380 -0
  12. package/dist/chunk-6RCEIWZL.cjs.map +1 -0
  13. package/dist/chunk-7BO6P2KP.js +2380 -0
  14. package/dist/chunk-7BO6P2KP.js.map +1 -0
  15. package/dist/{chunk-TWELIZRY.js → chunk-AR6NSCZM.js} +5 -3
  16. package/dist/{chunk-TWELIZRY.js.map → chunk-AR6NSCZM.js.map} +1 -1
  17. package/dist/{chunk-M2TSXZ4C.cjs → chunk-LFMXNQZC.cjs} +18 -16
  18. package/dist/chunk-LFMXNQZC.cjs.map +1 -0
  19. package/dist/{chunk-SO6X7G5S.js → chunk-RY5CY4CI.js} +501 -1880
  20. package/dist/chunk-RY5CY4CI.js.map +1 -0
  21. package/dist/chunk-WJHXPF7M.cjs +2259 -0
  22. package/dist/chunk-WJHXPF7M.cjs.map +1 -0
  23. package/dist/{context-B25xyQrJ.d.cts → context-CTBE00S_.d.cts} +1 -1
  24. package/dist/{context-CGdP7_Jb.d.ts → context-lkLhbkFJ.d.ts} +1 -1
  25. package/dist/{effect-D6kaLM2-.d.cts → effect-BpSNEJJz.d.cts} +7 -67
  26. package/dist/{effect-D6kaLM2-.d.ts → effect-BpSNEJJz.d.ts} +7 -67
  27. package/dist/index.cjs +40 -38
  28. package/dist/index.cjs.map +1 -1
  29. package/dist/index.d.cts +5 -4
  30. package/dist/index.d.ts +5 -4
  31. package/dist/index.dev.js +125 -22
  32. package/dist/index.dev.js.map +1 -1
  33. package/dist/index.js +19 -17
  34. package/dist/index.js.map +1 -1
  35. package/dist/internal.cjs +202 -203
  36. package/dist/internal.cjs.map +1 -1
  37. package/dist/internal.d.cts +13 -23
  38. package/dist/internal.d.ts +13 -23
  39. package/dist/internal.js +207 -208
  40. package/dist/internal.js.map +1 -1
  41. package/dist/loader.cjs +280 -0
  42. package/dist/loader.cjs.map +1 -0
  43. package/dist/loader.d.cts +57 -0
  44. package/dist/loader.d.ts +57 -0
  45. package/dist/loader.js +280 -0
  46. package/dist/loader.js.map +1 -0
  47. package/dist/{props-BIfromL0.d.cts → props-XTHYD19o.d.cts} +13 -2
  48. package/dist/{props-BEgIVMRx.d.ts → props-x-HbI-jX.d.ts} +13 -2
  49. package/dist/resume-BrAkmSTY.d.cts +79 -0
  50. package/dist/resume-Dx8_l72o.d.ts +79 -0
  51. package/dist/{scope-CzNkn587.d.ts → scope-CdbGmsFf.d.ts} +1 -1
  52. package/dist/{scope-Cx_3CjIZ.d.cts → scope-DfcP9I-A.d.cts} +1 -1
  53. package/dist/signal-C4ISF17w.d.cts +66 -0
  54. package/dist/signal-C4ISF17w.d.ts +66 -0
  55. package/package.json +6 -1
  56. package/src/binding.ts +254 -5
  57. package/src/cycle-guard.ts +1 -1
  58. package/src/dom.ts +103 -5
  59. package/src/hooks.ts +15 -2
  60. package/src/hydration.ts +75 -0
  61. package/src/internal.ts +34 -2
  62. package/src/list-helpers.ts +127 -11
  63. package/src/loader.ts +437 -0
  64. package/src/node-ops.ts +65 -0
  65. package/src/resume.ts +517 -0
  66. package/src/signal.ts +47 -22
  67. package/src/store.ts +8 -0
  68. package/dist/chunk-ID3WBWNO.cjs +0 -3638
  69. package/dist/chunk-ID3WBWNO.cjs.map +0 -1
  70. package/dist/chunk-L4DIV3RC.cjs.map +0 -1
  71. package/dist/chunk-M2TSXZ4C.cjs.map +0 -1
  72. 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-TWELIZRY.js";
3
+ } from "./chunk-AR6NSCZM.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-RY5CY4CI.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
- delegateEvents,
89
+ createStore,
90
+ deserializeValue,
49
91
  destroyRoot,
50
92
  effectScope,
51
93
  flush,
52
94
  flushOnMount,
53
95
  getCurrentRoot,
54
96
  getPropAlias,
55
- insert,
56
- insertNodesBefore,
57
- isReactive,
58
- keyed,
59
- mergeProps,
97
+ isStoreProxy,
60
98
  onDestroy,
61
99
  popRoot,
62
- prop,
63
100
  pushRoot,
64
- removeNodes,
101
+ serializeValue,
65
102
  setActiveSub,
66
103
  signal,
67
- spread,
68
- template,
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-7BO6P2KP.js";
228
106
 
229
107
  // src/reconcile.ts
230
108
  function reconcileArrays(parentNode, a, b) {
@@ -314,6 +192,7 @@ function reconcileArrays(parentNode, a, b) {
314
192
 
315
193
  // src/list-helpers.ts
316
194
  var isDev = typeof __DEV__ !== "undefined" ? __DEV__ : typeof process === "undefined" || process.env?.NODE_ENV !== "production";
195
+ var isShadowRoot = (node) => typeof ShadowRoot !== "undefined" && node instanceof ShadowRoot;
317
196
  function moveNodesBefore(parent, nodes, anchor) {
318
197
  for (let i = nodes.length - 1; i >= 0; i--) {
319
198
  const node = nodes[i];
@@ -353,21 +232,21 @@ var MAX_SAFE_VERSION = 9007199254740991;
353
232
  function createVersionedSignalAccessor(initialValue) {
354
233
  let current = initialValue;
355
234
  let version = 0;
356
- const track2 = signal(version);
235
+ const track = signal(version);
357
236
  function accessor(value) {
358
237
  if (arguments.length === 0) {
359
- track2();
238
+ track();
360
239
  return current;
361
240
  }
362
241
  current = value;
363
242
  version = version >= MAX_SAFE_VERSION ? 1 : version + 1;
364
- track2(version);
243
+ track(version);
365
244
  }
366
245
  return accessor;
367
246
  }
368
- function createKeyedListContainer() {
369
- const startMarker = document.createComment("fict:list:start");
370
- const endMarker = document.createComment("fict:list:end");
247
+ function createKeyedListContainer(startOverride, endOverride) {
248
+ const startMarker = startOverride ?? document.createComment("fict:list:start");
249
+ const endMarker = endOverride ?? document.createComment("fict:list:end");
371
250
  const dispose = () => {
372
251
  for (const block of container.blocks.values()) {
373
252
  destroyRoot(block.root);
@@ -407,7 +286,7 @@ function createKeyedListContainer() {
407
286
  };
408
287
  return container;
409
288
  }
410
- function createKeyedBlock(key, item, index, render, needsIndex = true, hostRoot) {
289
+ function createKeyedBlock(key, item, index, render2, needsIndex = true, hostRoot) {
411
290
  const itemSig = createVersionedSignalAccessor(item);
412
291
  const indexSig = needsIndex ? signal(index) : ((next) => {
413
292
  if (arguments.length === 0) return index;
@@ -421,7 +300,7 @@ function createKeyedBlock(key, item, index, render, needsIndex = true, hostRoot)
421
300
  const prevSub = setActiveSub(void 0);
422
301
  try {
423
302
  scopeDispose = effectScope(() => {
424
- const rendered = render(itemSig, indexSig, key);
303
+ const rendered = render2(itemSig, indexSig, key);
425
304
  if (rendered instanceof Node || Array.isArray(rendered) && rendered.every((n) => n instanceof Node)) {
426
305
  nodes = toNodeArray(rendered);
427
306
  } else {
@@ -534,20 +413,41 @@ function reorderByLIS(parent, endMarker, prev, next) {
534
413
  }
535
414
  return moved;
536
415
  }
537
- function createKeyedList(getItems, keyFn, renderItem, needsIndex) {
416
+ function createKeyedList(getItems, keyFn, renderItem, needsIndex, startMarker, endMarker) {
538
417
  const resolvedNeedsIndex = arguments.length >= 4 ? !!needsIndex : renderItem.length > 1;
539
- return createFineGrainedKeyedList(getItems, keyFn, renderItem, resolvedNeedsIndex);
418
+ return createFineGrainedKeyedList(
419
+ getItems,
420
+ keyFn,
421
+ renderItem,
422
+ resolvedNeedsIndex,
423
+ startMarker,
424
+ endMarker
425
+ );
540
426
  }
541
- function createFineGrainedKeyedList(getItems, keyFn, renderItem, needsIndex) {
542
- const container = createKeyedListContainer();
427
+ function createFineGrainedKeyedList(getItems, keyFn, renderItem, needsIndex, startOverride, endOverride) {
428
+ const container = createKeyedListContainer(startOverride, endOverride);
543
429
  const hostRoot = getCurrentRoot();
544
- const fragment = document.createDocumentFragment();
545
- fragment.append(container.startMarker, container.endMarker);
430
+ const useProvided = !!(startOverride && endOverride);
431
+ const fragment = useProvided ? container.startMarker : document.createDocumentFragment();
432
+ if (!useProvided) {
433
+ ;
434
+ fragment.append(container.startMarker, container.endMarker);
435
+ }
546
436
  let disposed = false;
547
437
  let effectDispose;
548
438
  let connectObserver = null;
549
439
  let effectStarted = false;
550
440
  let startScheduled = false;
441
+ let initialHydrating = __fictIsHydrating();
442
+ const collectBetween = () => {
443
+ const nodes = [];
444
+ let cursor = container.startMarker.nextSibling;
445
+ while (cursor && cursor !== container.endMarker) {
446
+ nodes.push(cursor);
447
+ cursor = cursor.nextSibling;
448
+ }
449
+ return nodes;
450
+ };
551
451
  const getConnectedParent = () => {
552
452
  const endParent = container.endMarker.parentNode;
553
453
  const startParent = container.startMarker.parentNode;
@@ -556,19 +456,82 @@ function createFineGrainedKeyedList(getItems, keyFn, renderItem, needsIndex) {
556
456
  if ("isConnected" in parentNode && !parentNode.isConnected) return null;
557
457
  return parentNode;
558
458
  }
459
+ if (endParent && startParent && endParent === startParent && isShadowRoot(endParent)) {
460
+ const shadowRoot = endParent;
461
+ const host = shadowRoot.host;
462
+ if ("isConnected" in host && !host.isConnected) return null;
463
+ return shadowRoot;
464
+ }
559
465
  return null;
560
466
  };
561
467
  const performDiff = () => {
562
468
  if (disposed) return;
563
- const parent = getConnectedParent();
469
+ const isSSR = __fictIsSSR();
470
+ const parent = isSSR ? container.startMarker.parentNode : getConnectedParent();
564
471
  if (!parent) return;
565
- batch2(() => {
472
+ batch(() => {
566
473
  const oldBlocks = container.blocks;
567
474
  const newBlocks = container.nextBlocks;
568
475
  const prevOrderedBlocks = container.orderedBlocks;
569
476
  const nextOrderedBlocks = container.nextOrderedBlocks;
570
477
  const orderedIndexByKey = container.orderedIndexByKey;
571
478
  const newItems = getItems();
479
+ if (initialHydrating && isHydratingActive()) {
480
+ initialHydrating = false;
481
+ newBlocks.clear();
482
+ nextOrderedBlocks.length = 0;
483
+ orderedIndexByKey.clear();
484
+ if (newItems.length === 0) {
485
+ oldBlocks.clear();
486
+ prevOrderedBlocks.length = 0;
487
+ container.currentNodes = [container.startMarker, container.endMarker];
488
+ container.nextNodes.length = 0;
489
+ return;
490
+ }
491
+ const createdBlocks2 = [];
492
+ withHydrationRange(
493
+ container.startMarker.nextSibling,
494
+ container.endMarker,
495
+ parent.ownerDocument ?? document,
496
+ () => {
497
+ for (let index = 0; index < newItems.length; index++) {
498
+ const item = newItems[index];
499
+ const key = keyFn(item, index);
500
+ if (newBlocks.has(key)) {
501
+ if (isDev) {
502
+ console.warn(
503
+ `[fict] Duplicate key "${String(key)}" detected in list hydration. Each item should have a unique key.`
504
+ );
505
+ }
506
+ const existing = newBlocks.get(key);
507
+ if (existing) {
508
+ destroyRoot(existing.root);
509
+ removeNodes(existing.nodes);
510
+ }
511
+ }
512
+ const block = createKeyedBlock(key, item, index, renderItem, needsIndex, hostRoot);
513
+ createdBlocks2.push(block);
514
+ newBlocks.set(key, block);
515
+ orderedIndexByKey.set(key, nextOrderedBlocks.length);
516
+ nextOrderedBlocks.push(block);
517
+ }
518
+ }
519
+ );
520
+ container.blocks = newBlocks;
521
+ container.nextBlocks = oldBlocks;
522
+ container.orderedBlocks = nextOrderedBlocks;
523
+ container.nextOrderedBlocks = prevOrderedBlocks;
524
+ oldBlocks.clear();
525
+ prevOrderedBlocks.length = 0;
526
+ container.currentNodes = [container.startMarker, ...collectBetween(), container.endMarker];
527
+ container.nextNodes.length = 0;
528
+ for (const block of createdBlocks2) {
529
+ if (newBlocks.get(block.key) === block) {
530
+ flushOnMount(block.root);
531
+ }
532
+ }
533
+ return;
534
+ }
572
535
  if (newItems.length === 0) {
573
536
  if (oldBlocks.size > 0) {
574
537
  for (const block of oldBlocks.values()) {
@@ -798,7 +761,8 @@ function createFineGrainedKeyedList(getItems, keyFn, renderItem, needsIndex) {
798
761
  };
799
762
  const ensureEffectStarted = () => {
800
763
  if (disposed || effectStarted) return effectStarted;
801
- const parent = getConnectedParent();
764
+ const isSSR = __fictIsSSR();
765
+ const parent = isSSR ? container.startMarker.parentNode : getConnectedParent();
802
766
  if (!parent) return false;
803
767
  const start = () => {
804
768
  effectDispose = createRenderEffect(performDiff);
@@ -818,6 +782,8 @@ function createFineGrainedKeyedList(getItems, keyFn, renderItem, needsIndex) {
818
782
  };
819
783
  const waitForConnection = () => {
820
784
  if (connectObserver || typeof MutationObserver === "undefined") return;
785
+ const root = container.startMarker.getRootNode?.() ?? document;
786
+ const shadowRoot = root && root.nodeType === 11 && isShadowRoot(root) ? root : null;
821
787
  connectObserver = new MutationObserver(() => {
822
788
  if (disposed) return;
823
789
  if (getConnectedParent()) {
@@ -828,6 +794,9 @@ function createFineGrainedKeyedList(getItems, keyFn, renderItem, needsIndex) {
828
794
  }
829
795
  });
830
796
  connectObserver.observe(document, { childList: true, subtree: true });
797
+ if (shadowRoot) {
798
+ connectObserver.observe(shadowRoot, { childList: true, subtree: true });
799
+ }
831
800
  };
832
801
  const scheduleStart = () => {
833
802
  if (startScheduled || disposed || effectStarted) return;
@@ -880,14 +849,35 @@ export {
880
849
  SVGElements,
881
850
  SVGNamespace,
882
851
  UnitlessStyles,
852
+ __fictDisableResumable,
853
+ __fictDisableSSR,
854
+ __fictEnableResumable,
855
+ __fictEnableSSR,
856
+ __fictEnsureScope,
857
+ __fictEnterHydration,
858
+ __fictExitHydration,
859
+ __fictGetResume,
860
+ __fictGetSSRScope,
861
+ __fictGetScopeProps,
862
+ __fictGetScopeRegistry,
863
+ __fictIsHydrating,
864
+ __fictIsResumable,
865
+ __fictIsSSR,
883
866
  __fictPopContext,
867
+ __fictPrepareContext,
884
868
  __fictProp,
885
869
  __fictPropsRest,
886
870
  __fictPushContext,
871
+ __fictQrl,
872
+ __fictRegisterResume,
873
+ __fictRegisterScope,
887
874
  __fictRender,
888
875
  __fictResetContext,
876
+ __fictSerializeSSRState,
877
+ __fictSetSSRState,
889
878
  __fictUseContext,
890
879
  __fictUseEffect,
880
+ __fictUseLexicalScope,
891
881
  __fictUseMemo,
892
882
  __fictUseSignal,
893
883
  __resetReactiveState,
@@ -915,11 +905,16 @@ export {
915
905
  signal as createSignal,
916
906
  createStore,
917
907
  delegateEvents,
908
+ deserializeValue,
918
909
  getPropAlias,
910
+ getSlotEnd,
911
+ hydrateComponent,
919
912
  insert,
913
+ insertBetween,
920
914
  insertNodesBefore,
921
915
  isNodeBetweenMarkers,
922
916
  isReactive,
917
+ isStoreProxy,
923
918
  keyed,
924
919
  mergeProps,
925
920
  moveNodesBefore,
@@ -927,10 +922,14 @@ export {
927
922
  prop,
928
923
  reconcileArrays,
929
924
  removeNodes,
925
+ render,
926
+ resolvePath,
930
927
  runInScope,
928
+ serializeValue,
931
929
  spread,
932
930
  template,
933
931
  toNodeArray,
934
- unwrap
932
+ unwrap,
933
+ unwrapStore
935
934
  };
936
935
  //# sourceMappingURL=internal.js.map