@barefootjs/client 0.27.0 → 0.28.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.
@@ -1,14 +1,14 @@
1
1
  // src/runtime/index.ts
2
2
  import {
3
- createSignal as createSignal2,
4
- createEffect as createEffect4,
3
+ createSignal as createSignal3,
4
+ createEffect as createEffect5,
5
5
  createDisposableEffect,
6
6
  createMemo,
7
7
  createSelector,
8
8
  createRoot as createRoot3,
9
9
  onCleanup,
10
10
  onMount,
11
- untrack as untrack3,
11
+ untrack as untrack4,
12
12
  batch,
13
13
  setProfilerSink,
14
14
  beginTurn,
@@ -1142,9 +1142,7 @@ function upsertChild(parent, name, slotId, props, key, anchorScope) {
1142
1142
  const ph = parent.getAttribute(BF_PLACEHOLDER) === phId ? parent : parent.querySelector(`[${BF_PLACEHOLDER}="${phId}"]`);
1143
1143
  if (ph) {
1144
1144
  const slot = slotId ? buildSlotInfo(parent, slotId, anchorScope) : undefined;
1145
- const comp = createComponent(name, props, key, slot);
1146
- ph.replaceWith(comp);
1147
- return comp;
1145
+ return createComponent(name, props, key, slot, ph);
1148
1146
  }
1149
1147
  return null;
1150
1148
  }
@@ -1352,11 +1350,30 @@ var _parentScopeId = null;
1352
1350
  function setParentScopeId(id) {
1353
1351
  _parentScopeId = id;
1354
1352
  }
1355
- function createComponent(nameOrDef, props = {}, key, slot) {
1353
+ var _rowMountPoint = null;
1354
+ function setRowMountPoint(p) {
1355
+ const prev = _rowMountPoint;
1356
+ _rowMountPoint = p;
1357
+ return prev;
1358
+ }
1359
+ function takeRowMountPoint() {
1360
+ const p = _rowMountPoint;
1361
+ _rowMountPoint = null;
1362
+ return p;
1363
+ }
1364
+ function createComponent(nameOrDef, props = {}, key, slot, mountAt) {
1365
+ const element = materializeComponent(nameOrDef, props, key, slot, mountAt);
1366
+ if (mountAt && mountAt.parentNode && element !== mountAt) {
1367
+ mountAt.replaceWith(element);
1368
+ }
1369
+ return element;
1370
+ }
1371
+ function materializeComponent(nameOrDef, props = {}, key, slot, mountAt) {
1356
1372
  if (props == null)
1357
1373
  props = {};
1374
+ const rowMount = mountAt ? null : takeRowMountPoint();
1358
1375
  if (typeof nameOrDef !== "string") {
1359
- return createComponentFromDef(nameOrDef, props, key);
1376
+ return createComponentFromDef(nameOrDef, props, key, mountAt, rowMount);
1360
1377
  }
1361
1378
  const name = nameOrDef;
1362
1379
  const templateFn = getTemplate(name);
@@ -1416,8 +1433,13 @@ function createComponent(nameOrDef, props = {}, key, slot) {
1416
1433
  if (key !== undefined) {
1417
1434
  element.setAttribute(BF_KEY, String(key));
1418
1435
  }
1419
- const prevScope = setCurrentScope(element);
1420
1436
  const rootIsDeferredPlaceholder = element.hasAttribute(BF_PLACEHOLDER);
1437
+ if (mountAt && !rootIsDeferredPlaceholder) {
1438
+ mountAt.replaceWith(element);
1439
+ } else if (rowMount && !rootIsDeferredPlaceholder) {
1440
+ rowMount.container.insertBefore(element, rowMount.anchor);
1441
+ }
1442
+ const prevScope = setCurrentScope(element);
1421
1443
  let placeholderWrapper = null;
1422
1444
  if (rootIsDeferredPlaceholder) {
1423
1445
  placeholderWrapper = parseHTML("<div></div>").firstChild;
@@ -1558,7 +1580,7 @@ function insertGetterChildren(element, children) {
1558
1580
  element.appendChild(document.createTextNode(String(children)));
1559
1581
  }
1560
1582
  }
1561
- function createComponentFromDef(def, props, key) {
1583
+ function createComponentFromDef(def, props, key, mountAt, rowMount) {
1562
1584
  if (!def.template) {
1563
1585
  throw new Error("[BarefootJS] createComponent with ComponentDef requires a template function");
1564
1586
  }
@@ -1577,6 +1599,11 @@ function createComponentFromDef(def, props, key) {
1577
1599
  if (key !== undefined) {
1578
1600
  element.setAttribute(BF_KEY, String(key));
1579
1601
  }
1602
+ if (mountAt) {
1603
+ mountAt.replaceWith(element);
1604
+ } else if (rowMount) {
1605
+ rowMount.container.insertBefore(element, rowMount.anchor);
1606
+ }
1580
1607
  def.init(element, props);
1581
1608
  hydratedScopes.add(element);
1582
1609
  return element;
@@ -1757,9 +1784,7 @@ function upsertChildItem(primaryEl, name, slotId, props, key, anchorScope) {
1757
1784
  const ph = qsaItem(primaryEl, `[data-bf-ph="${phId}"]`);
1758
1785
  if (ph) {
1759
1786
  const slot = slotId ? buildSlotInfo(primaryEl, slotId, anchorScope) : undefined;
1760
- const comp = createComponent(name, props, key, slot);
1761
- ph.replaceWith(comp);
1762
- return comp;
1787
+ return createComponent(name, props, key, slot, ph);
1763
1788
  }
1764
1789
  return null;
1765
1790
  }
@@ -1872,7 +1897,7 @@ function removeScope(scope) {
1872
1897
  ex.remove();
1873
1898
  }
1874
1899
  }
1875
- function createItemScope(item, index, renderItem, existingPrimary, existingExtras, existingStart) {
1900
+ function createItemScope(item, index, renderItem, existingPrimary, existingExtras, existingStart, rowMount) {
1876
1901
  let primaryEl;
1877
1902
  let dispose;
1878
1903
  let setItem;
@@ -1882,7 +1907,14 @@ function createItemScope(item, index, renderItem, existingPrimary, existingExtra
1882
1907
  dispose = d;
1883
1908
  const [itemAccessor, itemSetter] = createSignal(item);
1884
1909
  setItem = itemSetter;
1885
- primaryEl = renderItem(itemAccessor, index, existingPrimary);
1910
+ const ownsRowMount = !existingPrimary && !!rowMount;
1911
+ const prevRowMount = ownsRowMount ? setRowMountPoint(rowMount) : null;
1912
+ try {
1913
+ primaryEl = renderItem(itemAccessor, index, existingPrimary);
1914
+ } finally {
1915
+ if (ownsRowMount)
1916
+ setRowMountPoint(prevRowMount);
1917
+ }
1886
1918
  if (existingPrimary) {
1887
1919
  extras = existingExtras ?? [];
1888
1920
  startMarker = existingStart ?? null;
@@ -1896,6 +1928,9 @@ function createItemScope(item, index, renderItem, existingPrimary, existingExtra
1896
1928
  }
1897
1929
  return;
1898
1930
  });
1931
+ if (rowMount && !existingPrimary && extras.length > 0 && primaryEl.parentNode) {
1932
+ primaryEl.remove();
1933
+ }
1899
1934
  return { startMarker, primaryEl, extras, dispose, setItem };
1900
1935
  }
1901
1936
  function mapArray(accessor, container, getKey, renderItem, markerId, bfId) {
@@ -1937,7 +1972,7 @@ function mapArray(accessor, container, getKey, renderItem, markerId, bfId) {
1937
1972
  for (let i2 = existingRanges.length;i2 < items.length; i2++) {
1938
1973
  const item = items[i2];
1939
1974
  const key = getKey ? getKey(item, i2) : String(i2);
1940
- const scope = createItemScope(item, i2, renderItem);
1975
+ const scope = createItemScope(item, i2, renderItem, undefined, undefined, undefined, { container, anchor });
1941
1976
  if (!scope.primaryEl.dataset.key)
1942
1977
  scope.primaryEl.setAttribute(BF_KEY, key);
1943
1978
  scopes.set(key, scope);
@@ -2016,7 +2051,7 @@ function mapArray(accessor, container, getKey, renderItem, markerId, bfId) {
2016
2051
  existing.setItem(item);
2017
2052
  desiredOrder.push(existing);
2018
2053
  } else {
2019
- const scope = createItemScope(item, i2, renderItem);
2054
+ const scope = createItemScope(item, i2, renderItem, undefined, undefined, undefined, { container, anchor });
2020
2055
  if (!scope.primaryEl.dataset.key)
2021
2056
  scope.primaryEl.setAttribute(BF_KEY, key);
2022
2057
  scopes.set(key, scope);
@@ -2212,6 +2247,198 @@ function mapArrayAnchored(accessor, container, getKey, renderItem, markerId, bfI
2212
2247
  }
2213
2248
  }, bfId);
2214
2249
  }
2250
+ // src/runtime/map-array-lazy.ts
2251
+ import { createEffect as createEffect2, createSignal as createSignal2, untrack as untrack2 } from "@barefootjs/client/reactive";
2252
+ function mapArrayLazy(accessor, container, getKey, plan, markerId, bfId) {
2253
+ if (!container)
2254
+ return;
2255
+ const entries = new Map;
2256
+ let entryList = [];
2257
+ let hydrated = false;
2258
+ const needsResubscribe = plan.applyOuter !== undefined;
2259
+ const [generation, bumpGeneration] = needsResubscribe ? createSignal2(0) : [null, null];
2260
+ let stranded = false;
2261
+ const markStranded = () => {
2262
+ if (needsResubscribe)
2263
+ stranded = true;
2264
+ };
2265
+ const flushStranded = () => {
2266
+ if (stranded && bumpGeneration) {
2267
+ stranded = false;
2268
+ bumpGeneration((n) => n + 1);
2269
+ }
2270
+ };
2271
+ let cachedStart = null;
2272
+ let cachedEnd = null;
2273
+ const resolveMarkers = () => {
2274
+ if (cachedStart && cachedEnd && cachedStart.isConnected && cachedEnd.isConnected) {
2275
+ return { start: cachedStart, end: cachedEnd };
2276
+ }
2277
+ const found = findLoopMarkers2(container, markerId);
2278
+ cachedStart = found.start;
2279
+ cachedEnd = found.end;
2280
+ return found;
2281
+ };
2282
+ const createEntry = (item, index, key) => {
2283
+ const entry = {
2284
+ key,
2285
+ primaryEl: undefined,
2286
+ item,
2287
+ refs: null,
2288
+ last: null
2289
+ };
2290
+ entry.primaryEl = untrack2(() => plan.createRow(entry, index));
2291
+ if (!entry.primaryEl.dataset.key)
2292
+ entry.primaryEl.setAttribute(BF_KEY, key);
2293
+ markStranded();
2294
+ return entry;
2295
+ };
2296
+ createEffect2(() => {
2297
+ const items = accessor();
2298
+ if (!items)
2299
+ return;
2300
+ const { start: startMarker, end: endMarker } = resolveMarkers();
2301
+ const anchor = endMarker ?? null;
2302
+ if (!hydrated) {
2303
+ hydrated = true;
2304
+ const doms = [];
2305
+ for (let node = startMarker ? startMarker.nextSibling : container.firstChild;node && node !== anchor; node = node.nextSibling) {
2306
+ if (node.nodeType === Node.ELEMENT_NODE)
2307
+ doms.push(node);
2308
+ }
2309
+ if (doms.length > 0 && entries.size === 0) {
2310
+ const list = [];
2311
+ const shared = Math.min(doms.length, items.length);
2312
+ for (let i2 = 0;i2 < shared; i2++) {
2313
+ const el = doms[i2];
2314
+ const ssrKey = el.getAttribute(BF_KEY);
2315
+ const key = ssrKey !== null ? ssrKey : getKey ? getKey(items[i2], i2) : String(i2);
2316
+ const entry = { key, primaryEl: el, item: items[i2], refs: null, last: null };
2317
+ entries.set(key, entry);
2318
+ list.push(entry);
2319
+ }
2320
+ for (let i2 = doms.length;i2 < items.length; i2++) {
2321
+ const item = items[i2];
2322
+ const key = getKey ? getKey(item, i2) : String(i2);
2323
+ const entry = createEntry(item, i2, key);
2324
+ entries.set(key, entry);
2325
+ list.push(entry);
2326
+ container.insertBefore(entry.primaryEl, anchor);
2327
+ }
2328
+ for (let i2 = items.length;i2 < doms.length; i2++)
2329
+ doms[i2].remove();
2330
+ entryList = list;
2331
+ flushStranded();
2332
+ return;
2333
+ }
2334
+ }
2335
+ if (items.length === 0) {
2336
+ if (entries.size > 0) {
2337
+ if (startMarker && endMarker) {
2338
+ const range = document.createRange();
2339
+ range.setStartAfter(startMarker);
2340
+ range.setEndBefore(endMarker);
2341
+ range.deleteContents();
2342
+ } else {
2343
+ let actualNodeCount = 0;
2344
+ for (let node = container.firstChild;node; node = node.nextSibling)
2345
+ actualNodeCount++;
2346
+ if (actualNodeCount === entries.size) {
2347
+ container.textContent = "";
2348
+ } else {
2349
+ for (const entry of entries.values())
2350
+ entry.primaryEl.remove();
2351
+ }
2352
+ }
2353
+ entries.clear();
2354
+ entryList = [];
2355
+ }
2356
+ return;
2357
+ }
2358
+ const newKeys = new Set;
2359
+ const warnedKeys = new Set;
2360
+ const desiredOrder = [];
2361
+ for (let i2 = 0;i2 < items.length; i2++) {
2362
+ const item = items[i2];
2363
+ const key = getKey ? getKey(item, i2) : String(i2);
2364
+ if (newKeys.has(key) && !warnedKeys.has(key)) {
2365
+ warnedKeys.add(key);
2366
+ console.warn(`[BarefootJS] mapArrayLazy: duplicate key "${key}" — items with this key collapse to a single DOM row, ` + `so only the last one renders. Use a per-item identifier (e.g. \`key={item.id}\`) for correct reconciliation.`);
2367
+ }
2368
+ newKeys.add(key);
2369
+ const existing = entries.get(key);
2370
+ if (existing) {
2371
+ if (!Object.is(existing.item, item)) {
2372
+ const prevItem = existing.item;
2373
+ existing.item = item;
2374
+ untrack2(() => plan.applyItem(existing, prevItem));
2375
+ markStranded();
2376
+ }
2377
+ desiredOrder.push(existing);
2378
+ } else {
2379
+ const entry = createEntry(item, i2, key);
2380
+ entries.set(key, entry);
2381
+ desiredOrder.push(entry);
2382
+ }
2383
+ }
2384
+ for (const [key, entry] of entries) {
2385
+ if (!newKeys.has(key)) {
2386
+ if (entry.primaryEl.parentNode)
2387
+ entry.primaryEl.remove();
2388
+ entries.delete(key);
2389
+ }
2390
+ }
2391
+ const primaryElToDesiredIndex = new Map;
2392
+ for (let i2 = 0;i2 < desiredOrder.length; i2++) {
2393
+ primaryElToDesiredIndex.set(desiredOrder[i2].primaryEl, i2);
2394
+ }
2395
+ const domOrderIndices = [];
2396
+ for (let node = startMarker ? startMarker.nextSibling : container.firstChild;node && node !== anchor; node = node.nextSibling) {
2397
+ if (node.nodeType !== Node.ELEMENT_NODE)
2398
+ continue;
2399
+ const idx = primaryElToDesiredIndex.get(node);
2400
+ if (idx !== undefined)
2401
+ domOrderIndices.push(idx);
2402
+ }
2403
+ const stationary = new Array(desiredOrder.length).fill(false);
2404
+ for (const pos of longestIncreasingSubsequenceIndices(domOrderIndices)) {
2405
+ stationary[domOrderIndices[pos]] = true;
2406
+ }
2407
+ let i = 0;
2408
+ while (i < desiredOrder.length) {
2409
+ if (stationary[i]) {
2410
+ i++;
2411
+ continue;
2412
+ }
2413
+ let j = i;
2414
+ while (j < desiredOrder.length && !stationary[j])
2415
+ j++;
2416
+ const before = j < desiredOrder.length ? desiredOrder[j].primaryEl : anchor;
2417
+ if (j - i === 1) {
2418
+ container.insertBefore(desiredOrder[i].primaryEl, before);
2419
+ } else {
2420
+ const runFragment = document.createDocumentFragment();
2421
+ for (let k = i;k < j; k++)
2422
+ runFragment.appendChild(desiredOrder[k].primaryEl);
2423
+ container.insertBefore(runFragment, before);
2424
+ }
2425
+ i = j;
2426
+ }
2427
+ entryList = desiredOrder;
2428
+ flushStranded();
2429
+ }, bfId);
2430
+ if (plan.applyOuter) {
2431
+ const applyOuter = plan.applyOuter.bind(plan);
2432
+ let seed = true;
2433
+ createEffect2(() => {
2434
+ if (generation)
2435
+ generation();
2436
+ const isSeed = seed;
2437
+ seed = false;
2438
+ applyOuter(entryList, isSeed);
2439
+ });
2440
+ }
2441
+ }
2215
2442
  // src/runtime/patch-leaf.ts
2216
2443
  function patchLeaf(el, html) {
2217
2444
  const tpl = document.createElement("template");
@@ -2318,11 +2545,11 @@ function claimMarkerlessText(root, spec) {
2318
2545
  }
2319
2546
  const existing = parent.childNodes[idx];
2320
2547
  if (existing && existing.nodeType === Node.TEXT_NODE) {
2321
- return { kind: "text", node: existing };
2548
+ return { kind: "text", ref: existing };
2322
2549
  }
2323
2550
  const node = document.createTextNode("");
2324
2551
  parent.insertBefore(node, existing ?? null);
2325
- return { kind: "text", node };
2552
+ return { kind: "text", ref: node };
2326
2553
  }
2327
2554
  function claimOne(root, spec) {
2328
2555
  if (spec.kind === "text" && spec.markerless) {
@@ -2332,7 +2559,8 @@ function claimOne(root, spec) {
2332
2559
  if (!anchor)
2333
2560
  return null;
2334
2561
  if (spec.kind === "text") {
2335
- return { kind: "text", node: textNodeAfterComment(anchor) };
2562
+ const next = anchor.nextSibling;
2563
+ return { kind: "text", ref: next?.nodeType === Node.TEXT_NODE ? next : anchor };
2336
2564
  }
2337
2565
  const end = findMarkupEnd(anchor);
2338
2566
  if (!end) {
@@ -2341,8 +2569,42 @@ function claimOne(root, spec) {
2341
2569
  }
2342
2570
  return { kind: "markup", start: anchor, end, last: undefined };
2343
2571
  }
2344
- function writeText(ref, value) {
2345
- ref.node.nodeValue = String(value ?? "");
2572
+ function materializeText(slot) {
2573
+ const anchor = slot.ref;
2574
+ const parent = anchor.parentNode;
2575
+ if (!parent)
2576
+ return null;
2577
+ const node = document.createTextNode("");
2578
+ parent.insertBefore(node, anchor.nextSibling);
2579
+ slot.ref = node;
2580
+ return node;
2581
+ }
2582
+ function readText(slot) {
2583
+ return slot.ref.nodeType === Node.TEXT_NODE ? slot.ref.nodeValue ?? "" : "";
2584
+ }
2585
+ function writeText(slot, value) {
2586
+ const node = slot.ref.nodeType === Node.TEXT_NODE ? slot.ref : materializeText(slot);
2587
+ if (!node)
2588
+ return;
2589
+ node.nodeValue = String(value ?? "");
2590
+ }
2591
+ function textOrNode(value) {
2592
+ if (typeof Node !== "undefined" && value instanceof Node)
2593
+ return value;
2594
+ return String(value);
2595
+ }
2596
+ function promoteTextToMarkup(slot, id) {
2597
+ const anchor = slot.ref.nodeType === Node.COMMENT_NODE ? slot.ref : isSlotComment(slot.ref.previousSibling, id) ? slot.ref.previousSibling : null;
2598
+ if (!anchor) {
2599
+ console.warn(`[barefootjs] slot ${id} was claimed as text and received a Node, but has no anchor marker to promote from; write ignored`);
2600
+ return null;
2601
+ }
2602
+ const end = findMarkupEnd(anchor);
2603
+ if (!end) {
2604
+ console.warn(`[barefootjs] slot ${id} was claimed as text and received a Node, but has no end marker; write ignored`);
2605
+ return null;
2606
+ }
2607
+ return { kind: "markup", start: anchor, end, last: undefined };
2346
2608
  }
2347
2609
  function clearMarkupRange(start, end) {
2348
2610
  const parent = end.parentNode;
@@ -2386,19 +2648,37 @@ function writeSlot(refs, id, value) {
2386
2648
  return;
2387
2649
  }
2388
2650
  if (ref.kind === "text") {
2651
+ if (typeof Node !== "undefined" && value instanceof Node) {
2652
+ const promoted = promoteTextToMarkup(ref, id);
2653
+ if (!promoted)
2654
+ return;
2655
+ refs.set(id, promoted);
2656
+ writeMarkup(promoted, value);
2657
+ return;
2658
+ }
2389
2659
  writeText(ref, value);
2390
2660
  } else {
2391
2661
  writeMarkup(ref, value);
2392
2662
  }
2393
2663
  }
2664
+ function readSlot(refs, id) {
2665
+ const ref = refs.get(id);
2666
+ if (!ref || ref.kind !== "text")
2667
+ return null;
2668
+ return readText(ref);
2669
+ }
2394
2670
  function claimSlots(root, plan) {
2671
+ const refs = claimRefs(root, plan);
2672
+ return { write: (id, value) => writeSlot(refs, id, value) };
2673
+ }
2674
+ function claimRefs(root, plan) {
2395
2675
  const refs = new Map;
2396
2676
  for (const spec of plan) {
2397
2677
  const ref = claimOne(root, spec);
2398
2678
  if (ref)
2399
2679
  refs.set(spec.id, ref);
2400
2680
  }
2401
- return { write: (id, value) => writeSlot(refs, id, value) };
2681
+ return refs;
2402
2682
  }
2403
2683
  function lazySlots(root, plan) {
2404
2684
  let claimed = null;
@@ -2408,8 +2688,16 @@ function lazySlots(root, plan) {
2408
2688
  claimed.write(id, value);
2409
2689
  };
2410
2690
  }
2691
+ function lazyClaimSlots(root, plan) {
2692
+ let refs = null;
2693
+ const ensure = () => refs ??= claimRefs(root, plan);
2694
+ return {
2695
+ write: (id, value) => writeSlot(ensure(), id, value),
2696
+ read: (id) => readSlot(ensure(), id)
2697
+ };
2698
+ }
2411
2699
  // src/runtime/apply-rest-attrs.ts
2412
- import { createEffect as createEffect2 } from "@barefootjs/client/reactive";
2700
+ import { createEffect as createEffect3 } from "@barefootjs/client/reactive";
2413
2701
 
2414
2702
  // src/runtime/style.ts
2415
2703
  function styleToCss(value) {
@@ -2454,7 +2742,7 @@ function applyRestAttrs(el, source, excludeKeys) {
2454
2742
  }
2455
2743
  }
2456
2744
  const attrEntries = classified.filter(({ c }) => c.kind !== "ref" && c.kind !== "event" && c.kind !== "skip");
2457
- createEffect2(() => {
2745
+ createEffect3(() => {
2458
2746
  for (const { key, c } of attrEntries) {
2459
2747
  const value = source[key];
2460
2748
  if (c.kind === "innerHTML") {
@@ -2530,7 +2818,7 @@ function date(recv, op) {
2530
2818
  return d[op]();
2531
2819
  }
2532
2820
  // src/runtime/insert.ts
2533
- import { createEffect as createEffect3, untrack as untrack2 } from "@barefootjs/client/reactive";
2821
+ import { createEffect as createEffect4, untrack as untrack3 } from "@barefootjs/client/reactive";
2534
2822
  function makeRegion(scope) {
2535
2823
  if (scope.nodeType === Node.COMMENT_NODE) {
2536
2824
  const anchor = scope;
@@ -2585,7 +2873,7 @@ function normalizeTemplate(value) {
2585
2873
  return typeof value === "string" ? { html: value, slots: EMPTY_SLOTS } : value;
2586
2874
  }
2587
2875
  function evalBranchTemplate(branch) {
2588
- return untrack2(() => normalizeTemplate(branch.template()));
2876
+ return untrack3(() => normalizeTemplate(branch.template()));
2589
2877
  }
2590
2878
  function insert(scope, id, conditionFn, whenTrue, whenFalse, bfId) {
2591
2879
  if (!scope)
@@ -2611,7 +2899,7 @@ function insert(scope, id, conditionFn, whenTrue, whenFalse, bfId) {
2611
2899
  }
2612
2900
  let prevCond;
2613
2901
  let branchCleanup = null;
2614
- createEffect3(() => {
2902
+ createEffect4(() => {
2615
2903
  let currCond;
2616
2904
  try {
2617
2905
  currCond = Boolean(conditionFn());
@@ -2935,7 +3223,8 @@ export {
2935
3223
  upsertChildItem,
2936
3224
  upsertChild,
2937
3225
  unwrap,
2938
- untrack3 as untrack,
3226
+ untrack4 as untrack,
3227
+ textOrNode,
2939
3228
  textNodeAfterComment as tAfter,
2940
3229
  styleToCss,
2941
3230
  spreadAttrs,
@@ -2959,9 +3248,11 @@ export {
2959
3248
  parseHTML,
2960
3249
  onMount,
2961
3250
  onCleanup,
3251
+ mapArrayLazy,
2962
3252
  mapArrayAnchored,
2963
3253
  mapArray,
2964
3254
  lazySlots,
3255
+ lazyClaimSlots,
2965
3256
  isSSRPortal,
2966
3257
  insert,
2967
3258
  initChild,
@@ -2986,14 +3277,14 @@ export {
2986
3277
  disposeScope,
2987
3278
  date,
2988
3279
  cssEscape,
2989
- createSignal2 as createSignal,
3280
+ createSignal3 as createSignal,
2990
3281
  createSelector,
2991
3282
  createSearchParams,
2992
3283
  createRoot3 as createRoot,
2993
3284
  createRecordingSink,
2994
3285
  createPortal,
2995
3286
  createMemo,
2996
- createEffect4 as createEffect,
3287
+ createEffect5 as createEffect,
2997
3288
  createDisposableEffect,
2998
3289
  createContext,
2999
3290
  createComponent,