@vue/runtime-core 3.6.0-rc.13 → 3.6.0-rc.15

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,5 +1,5 @@
1
1
  /**
2
- * @vue/runtime-core v3.6.0-rc.13
2
+ * @vue/runtime-core v3.6.0-rc.15
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -201,7 +201,7 @@ function callWithAsyncErrorHandling(fn, instance, type, args) {
201
201
  if ((0, _vue_shared.isFunction)(fn)) {
202
202
  const res = callWithErrorHandling(fn, instance, type, args);
203
203
  if (res && (0, _vue_shared.isPromise)(res)) res.catch((err) => {
204
- handleError(err, instance, type);
204
+ handleError(err, instance, type, void 0, true);
205
205
  });
206
206
  return res;
207
207
  }
@@ -211,7 +211,7 @@ function callWithAsyncErrorHandling(fn, instance, type, args) {
211
211
  return values;
212
212
  } else warn$1(`Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}`);
213
213
  }
214
- function handleError(err, instance, type, throwInDev = true) {
214
+ function handleError(err, instance, type, throwInDev = true, isAsyncError = false) {
215
215
  const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || _vue_shared.EMPTY_OBJ;
216
216
  if (instance) {
217
217
  let cur = instance.parent;
@@ -219,7 +219,7 @@ function handleError(err, instance, type, throwInDev = true) {
219
219
  const errorInfo = ErrorTypeStrings$1[type];
220
220
  while (cur) {
221
221
  const errorCapturedHooks = cur.ec;
222
- if (errorCapturedHooks) {
222
+ if (errorCapturedHooks && !cur.isUnmounted && (!isAsyncError || cur.scope.active)) {
223
223
  for (let i = 0; i < errorCapturedHooks.length; i++) if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) return;
224
224
  }
225
225
  cur = cur.parent;
@@ -524,7 +524,11 @@ function reload(id, newComp) {
524
524
  updateComponentDef(record.initialDef, newComp);
525
525
  const instances = [...record.instances];
526
526
  if (isVapor && newComp.__vapor && !instances.some((instance) => instance.parent && !instance.parent.vapor) && !instances.some((i) => i.ceReload)) {
527
- for (const instance of instances) if (instance.root && instance.root.ce && instance !== instance.root) instance.root.ce._removeChildStyle(instance.type);
527
+ for (const instance of instances) {
528
+ if (instance.root && instance.root.ce && instance !== instance.root) instance.root.ce._removeChildStyle(instance.type);
529
+ const oldComp = normalizeClassComponent(instance.type);
530
+ if (oldComp !== record.initialDef) updateComponentDef(oldComp, newComp);
531
+ }
528
532
  const dirtyInstances = new Set(instances);
529
533
  const rerenderedParents = /* @__PURE__ */ new Set();
530
534
  runWithHmrUpdating(() => {
@@ -565,7 +569,25 @@ function reload(id, newComp) {
565
569
  if (instance.root.ce && instance !== instance.root) instance.root.ce._removeChildStyle(oldComp);
566
570
  }
567
571
  parents.forEach((parent) => {
568
- queueJob(() => {
572
+ const children = instances.filter((instance) => instance.parent === parent);
573
+ const update = () => {
574
+ if (!parent.scope.active) return;
575
+ const activeChildren = children.filter((instance) => instance.scope.active);
576
+ if (!activeChildren.length) return;
577
+ const pending = activeChildren.find((instance) => instance.asyncDep && !instance.asyncResolved) || locateUnresolvedAsyncRoot(parent);
578
+ if (pending) {
579
+ pending.asyncDep.catch(_vue_shared.NOOP).then(() => {
580
+ if (parent.scope.active && (pending.asyncResolved || !pending.scope.active)) queueJob(update);
581
+ });
582
+ return;
583
+ }
584
+ for (const instance of activeChildren) {
585
+ const oldComp = normalizeClassComponent(instance.type);
586
+ let dirtyInstances = hmrDirtyComponents.get(oldComp);
587
+ if (!dirtyInstances) hmrDirtyComponents.set(oldComp, dirtyInstances = /* @__PURE__ */ new Set());
588
+ dirtyInstances.add(instance);
589
+ hmrDirtyComponentsMode.set(oldComp, !!isVapor);
590
+ }
569
591
  runWithHmrUpdating(() => {
570
592
  if (parent.vapor) parent.hmrRerender();
571
593
  else {
@@ -576,7 +598,12 @@ function reload(id, newComp) {
576
598
  }
577
599
  }
578
600
  });
579
- });
601
+ queuePostFlushCb(() => {
602
+ hmrDirtyComponents.clear();
603
+ hmrDirtyComponentsMode.clear();
604
+ });
605
+ };
606
+ queueJob(update);
580
607
  });
581
608
  }
582
609
  queuePostFlushCb(() => {
@@ -773,18 +800,35 @@ function withDirectives(vnode, directives) {
773
800
  return vnode;
774
801
  }
775
802
  function invokeDirectiveHook(vnode, prevVNode, instance, name) {
776
- const bindings = vnode.dirs;
803
+ let hookVNode = vnode;
804
+ if (name === "beforeMount") vnode._mount = vnode;
805
+ else if (name === "beforeUpdate") {
806
+ const mount = prevVNode && prevVNode._mount;
807
+ if (mount) {
808
+ mount._latest = vnode;
809
+ vnode._mount = mount;
810
+ }
811
+ } else if (name === "mounted") {
812
+ const latest = vnode._latest;
813
+ vnode._mount = vnode._latest = void 0;
814
+ if (latest) {
815
+ hookVNode = latest;
816
+ latest._mount = void 0;
817
+ }
818
+ }
819
+ const bindings = hookVNode.dirs;
777
820
  const oldBindings = prevVNode && prevVNode.dirs;
778
821
  for (let i = 0; i < bindings.length; i++) {
779
- const binding = bindings[i];
822
+ let binding = bindings[i];
780
823
  if (oldBindings) binding.oldValue = oldBindings[i].value;
824
+ else if (name === "mounted" && binding.oldValue !== void 0) binding = (0, _vue_shared.extend)({}, binding, { oldValue: void 0 });
781
825
  let hook = binding.dir[name];
782
826
  if (hook) {
783
827
  const prevSub = (0, _vue_reactivity.setActiveSub)();
784
828
  callWithAsyncErrorHandling(hook, instance, 8, [
785
829
  vnode.el,
786
830
  binding,
787
- vnode,
831
+ hookVNode,
788
832
  prevVNode
789
833
  ]);
790
834
  (0, _vue_reactivity.setActiveSub)(prevSub);
@@ -1227,7 +1271,15 @@ const BaseTransitionImpl = {
1227
1271
  const { mode } = rawProps;
1228
1272
  checkTransitionMode(mode);
1229
1273
  return prepareTransitionSwitch(instance.subTree, child, rawProps, state, instance, mode === "out-in" ? resumeAfterLeave || (resumeAfterLeave = () => {
1230
- if (!(instance.effect.flags & 1024)) instance.update();
1274
+ if (!(instance.effect.flags & 1024)) {
1275
+ if (instance.effect.running) {
1276
+ const job = () => {
1277
+ if (!(instance.effect.flags & 1024)) instance.update();
1278
+ };
1279
+ job.i = instance;
1280
+ queueJob(job);
1281
+ } else instance.update();
1282
+ }
1231
1283
  }) : _vue_shared.NOOP);
1232
1284
  };
1233
1285
  }
@@ -1257,7 +1309,7 @@ function getLeavingNodesForType(state, vnode) {
1257
1309
  }
1258
1310
  return leavingVNodesCache;
1259
1311
  }
1260
- function resolveTransitionHooks(vnode, props, state, instance, postClone) {
1312
+ function resolveTransitionHooks(vnode, props, state, instance) {
1261
1313
  const key = String(vnode.key);
1262
1314
  const leavingVNodesCache = getLeavingNodesForType(state, vnode);
1263
1315
  const hooks = baseResolveTransitionHooks({
@@ -1280,9 +1332,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
1280
1332
  }
1281
1333
  },
1282
1334
  cloneHooks: (vnode) => {
1283
- const hooks = resolveTransitionHooks(vnode, props, state, instance, postClone);
1284
- if (postClone) postClone(hooks);
1285
- return hooks;
1335
+ return resolveTransitionHooks(vnode, props, state, instance);
1286
1336
  }
1287
1337
  }, props, state, instance);
1288
1338
  if (isVaporInteropEnabled && vnode.type === VaporSlot) (0, _vue_shared.extend)(hooks, {
@@ -1320,7 +1370,7 @@ function baseResolveTransitionHooks(context, props, state, instance) {
1320
1370
  callHook(hook, [el]);
1321
1371
  },
1322
1372
  enter(el) {
1323
- if (!isHmrUpdating && isLeaving()) return;
1373
+ if (!isHmrUpdating && isLeaving(el)) return;
1324
1374
  let hook = onEnter;
1325
1375
  let afterHook = onAfterEnter;
1326
1376
  let cancelHook = onEnterCancelled;
@@ -1364,7 +1414,19 @@ function baseResolveTransitionHooks(context, props, state, instance) {
1364
1414
  else done();
1365
1415
  },
1366
1416
  clone(node) {
1367
- return cloneHooks ? cloneHooks(node) : hooks;
1417
+ if (!cloneHooks) return hooks;
1418
+ const cloned = cloneHooks(node);
1419
+ cloned.afterLeave = () => {
1420
+ if (hooks.afterLeave) hooks.afterLeave();
1421
+ };
1422
+ cloned.delayLeave = (el, earlyRemove, delayedLeave) => {
1423
+ if (hooks.delayLeave) hooks.delayLeave(el, earlyRemove, delayedLeave);
1424
+ else delayedLeave();
1425
+ };
1426
+ cloned.delayedLeave = () => {
1427
+ if (hooks.delayedLeave) hooks.delayedLeave();
1428
+ };
1429
+ return cloned;
1368
1430
  }
1369
1431
  };
1370
1432
  return hooks;
@@ -1399,10 +1461,7 @@ function prepareTransitionSwitch(previous, next, props, state, instance, resumeA
1399
1461
  if (state.isLeaving) return emptyPlaceholder(next);
1400
1462
  const nextInner = getInnerChild$1(next);
1401
1463
  if (!nextInner) return emptyPlaceholder(next);
1402
- let enterHooks = resolveTransitionHooks(nextInner, props, state, instance, (hooks) => {
1403
- if (delayedLeaveSource) forwardDelayedLeave(hooks, delayedLeaveSource);
1404
- enterHooks = hooks;
1405
- });
1464
+ const enterHooks = resolveTransitionHooks(nextInner, props, state, instance);
1406
1465
  if (delayedLeaveSource) forwardDelayedLeave(enterHooks, delayedLeaveSource);
1407
1466
  if (nextInner.type !== Comment) setTransitionHooks(nextInner, enterHooks);
1408
1467
  const mode = props.mode;
@@ -1468,9 +1527,14 @@ function setTransitionHooks(vnode, hooks) {
1468
1527
  return setTransitionHooks(isTeleport(subTree.type) ? getInnerChild$1(subTree) || subTree : subTree, hooks);
1469
1528
  }
1470
1529
  } else if (vnode.shapeFlag & 128) {
1471
- const contentHooks = vnode.ssContent.transition = hooks.clone(vnode.ssContent);
1472
- const fallbackHooks = vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);
1473
- return vnode.suspense && vnode.suspense.activeBranch === vnode.ssFallback ? fallbackHooks : contentHooks;
1530
+ const suspense = vnode.suspense;
1531
+ if (suspense) {
1532
+ const branch = suspense.isHydrating ? suspense.pendingBranch : suspense.activeBranch;
1533
+ if (branch) return setTransitionHooks(branch, hooks.clone(branch));
1534
+ } else {
1535
+ vnode.ssContent.transition = hooks.clone(vnode.ssContent);
1536
+ vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);
1537
+ }
1474
1538
  } else {
1475
1539
  vnode.transition = hooks;
1476
1540
  if (vnode.type === Fragment && (0, _vue_shared.isArray)(vnode.children)) {
@@ -1688,6 +1752,8 @@ const getContainerType = (container) => {
1688
1752
  if (isMathMLContainer(container)) return "mathml";
1689
1753
  };
1690
1754
  const isComment = (node) => node.nodeType === 8;
1755
+ /** The data of a comment opening a range a hydration steps over as one. */
1756
+ const isRangeStart = (data) => data === "[" || data === "(" || (0, _vue_shared.isVaporRangeStart)(data);
1691
1757
  function createHydrationFunctions(rendererInternals) {
1692
1758
  const { mt: mountComponent, p: patch, o: { patchProp, createText, nextSibling, parentNode, remove, insert, createComment } } = rendererInternals;
1693
1759
  const hydrate = (vnode, container) => {
@@ -1705,7 +1771,7 @@ function createHydrationFunctions(rendererInternals) {
1705
1771
  };
1706
1772
  const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {
1707
1773
  optimized = optimized || !!vnode.dynamicChildren;
1708
- const isFragmentStart = isComment(node) && (node.data === "[" || node.data === "(");
1774
+ const isFragmentStart = isComment(node) && (node.data === "[" || node.data === "(" || isVaporInteropEnabled && (0, _vue_shared.isVaporRangeStart)(node.data));
1709
1775
  const onMismatch = () => handleMismatch(node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragmentStart);
1710
1776
  const { type, ref, shapeFlag, patchFlag } = vnode;
1711
1777
  let domType = node.nodeType;
@@ -1894,16 +1960,17 @@ function createHydrationFunctions(rendererInternals) {
1894
1960
  const container = parentNode(node);
1895
1961
  const first = nextSibling(node);
1896
1962
  const next = isVaporInteropEnabled && vnode.vo && node.data === "(" ? getVaporInterface(parentComponent, vnode).hydrateSlotOutlet(vnode, node, parentComponent, parentSuspense, slotScopeIds) : hydrateChildren(first, vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized);
1897
- if (next && isComment(next) && next.data === (node.data === "(" ? ")" : "]")) return nextSibling(vnode.anchor = next);
1963
+ const close = isVaporInteropEnabled ? (0, _vue_shared.rangeCloseOf)(node.data) : node.data === "(" ? ")" : "]";
1964
+ if (next && isComment(next) && next.data === close) return nextSibling(vnode.anchor = next);
1898
1965
  else {
1899
1966
  logMismatchError();
1900
- insert(vnode.anchor = createComment(`]`), container, next);
1967
+ insert(vnode.anchor = createComment(close), container, next);
1901
1968
  return next;
1902
1969
  }
1903
1970
  };
1904
1971
  const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {
1905
1972
  if (!isNodeMismatchAllowed(node, vnode)) {
1906
- warn$1(`Hydration node mismatch:\n- rendered on server:`, node, node.nodeType === 3 ? `(text)` : isComment(node) && (node.data === "[" || node.data === "(") ? `(start of fragment)` : ``, `\n- expected on client:`, vnode.type);
1973
+ warn$1(`Hydration node mismatch:\n- rendered on server:`, node, node.nodeType === 3 ? `(text)` : isComment(node) && isRangeStart(node.data) ? `(start of fragment)` : ``, `\n- expected on client:`, vnode.type);
1907
1974
  logMismatchError();
1908
1975
  }
1909
1976
  vnode.el = null;
@@ -1919,18 +1986,18 @@ function createHydrationFunctions(rendererInternals) {
1919
1986
  const container = parentNode(node);
1920
1987
  remove(node);
1921
1988
  patch(null, vnode, container, next, parentComponent, parentSuspense, getContainerType(container), slotScopeIds);
1922
- if (parentComponent && parentComponent.vnode) {
1989
+ if (parentComponent && parentComponent.vnode && parentComponent.vnode.el === node) {
1923
1990
  parentComponent.vnode.el = vnode.el;
1924
1991
  updateHOCHostEl(parentComponent, vnode.el);
1925
1992
  }
1926
1993
  return next;
1927
1994
  };
1928
- const locateClosingAnchor = (node, open = node && isComment(node) && node.data === "(" ? "(" : "[", close = open === "(" ? ")" : "]") => {
1995
+ const locateClosingAnchor = (node, open = node && isComment(node) && (node.data === "(" || isVaporInteropEnabled && node.data === "{") ? node.data : "[", close = isVaporInteropEnabled ? (0, _vue_shared.rangeCloseOf)(open) : open === "(" ? ")" : "]") => {
1929
1996
  let match = 0;
1930
1997
  while (node) {
1931
1998
  node = nextSibling(node);
1932
1999
  if (node && isComment(node)) {
1933
- if (node.data === open) match++;
2000
+ if (node.data === open || isVaporInteropEnabled && open === "[" && (0, _vue_shared.isVaporBranchStart)(node.data)) match++;
1934
2001
  if (node.data === close) {
1935
2002
  if (match === 0) return nextSibling(node);
1936
2003
  else match--;
@@ -2186,9 +2253,9 @@ const hydrateOnInteraction = (interactions = []) => (hydrate, forEach) => {
2186
2253
  return teardown;
2187
2254
  };
2188
2255
  function forEachElement(node, cb) {
2189
- if (isComment(node) && (node.data === "[" || node.data === "(")) {
2256
+ if (isComment(node) && isRangeStart(node.data)) {
2190
2257
  const open = node.data;
2191
- const close = open === "[" ? "]" : ")";
2258
+ const close = (0, _vue_shared.rangeCloseOf)(open);
2192
2259
  let depth = 1;
2193
2260
  let next = node.nextSibling;
2194
2261
  while (next) {
@@ -2197,7 +2264,7 @@ function forEachElement(node, cb) {
2197
2264
  } else if (isComment(next)) {
2198
2265
  if (next.data === close) {
2199
2266
  if (--depth === 0) break;
2200
- } else if (next.data === open) depth++;
2267
+ } else if (close === "]" ? next.data === "[" || (0, _vue_shared.isVaporBranchStart)(next.data) : next.data === open) depth++;
2201
2268
  }
2202
2269
  next = next.nextSibling;
2203
2270
  }
@@ -2225,7 +2292,7 @@ function defineAsyncComponent(source) {
2225
2292
  if (resolvedComp) return () => createInnerComp(resolvedComp, instance);
2226
2293
  const onError = (err) => {
2227
2294
  setPendingRequest(null);
2228
- handleError(err, instance, 13, !errorComponent);
2295
+ handleError(err, instance, 13, !errorComponent, true);
2229
2296
  };
2230
2297
  if (suspensible && instance.suspense || isInSSRComponentSetup) return load().then((comp) => {
2231
2298
  return () => createInnerComp(comp, instance);
@@ -2306,10 +2373,12 @@ const useAsyncComponentState = (delay = 200, timeout, onError, instance = curren
2306
2373
  const delayed = (0, _vue_reactivity.ref)(!!delay);
2307
2374
  let timeoutTimer;
2308
2375
  let delayTimer;
2309
- if (instance) onUnmounted(() => {
2310
- if (timeoutTimer != null) clearTimeout(timeoutTimer);
2311
- if (delayTimer != null) clearTimeout(delayTimer);
2312
- }, instance);
2376
+ if (instance) instance.scope.run(() => {
2377
+ (0, _vue_reactivity.onScopeDispose)(() => {
2378
+ if (timeoutTimer != null) clearTimeout(timeoutTimer);
2379
+ if (delayTimer != null) clearTimeout(delayTimer);
2380
+ });
2381
+ });
2313
2382
  if (delay) delayTimer = setTimeout(() => {
2314
2383
  if (instance && instance.isUnmounted) return;
2315
2384
  delayed.value = false;
@@ -2344,7 +2413,12 @@ function performAsyncHydrate(el, instance, hydrate, getResolvedComp, load, hydra
2344
2413
  }
2345
2414
  return;
2346
2415
  }
2347
- if (!el.parentNode || wasConnected && !el.isConnected) return;
2416
+ if (!el.parentNode) return;
2417
+ if (wasConnected && !el.isConnected) {
2418
+ let current = instance;
2419
+ while (current && !current.isDeactivated) current = current.parent;
2420
+ if (!current) return;
2421
+ }
2348
2422
  hydrate();
2349
2423
  };
2350
2424
  const doHydrate = hydrateStrategy ? () => {
@@ -2402,7 +2476,11 @@ const KeepAlive = /*@__PURE__*/ withKeepAliveEnabled({
2402
2476
  activate(vnode, container, anchor, renderer, keepAliveInstance, parentSuspense, namespace, optimized);
2403
2477
  };
2404
2478
  sharedContext.deactivate = (vnode) => {
2405
- deactivate(vnode, storageContainer, renderer, keepAliveInstance, parentSuspense);
2479
+ const cached = sharedContext.getCachedComponent(vnode);
2480
+ if (!cached || cached.component !== vnode.component) return false;
2481
+ if (isVaporInteropEnabled && isVaporComponent(vnode.type)) getVaporInterface(keepAliveInstance, vnode).deactivate(vnode, storageContainer, parentSuspense);
2482
+ else deactivate(vnode, storageContainer, renderer, keepAliveInstance, parentSuspense);
2483
+ return true;
2406
2484
  };
2407
2485
  function unmount(vnode) {
2408
2486
  resetShapeFlag(vnode);
@@ -2434,11 +2512,15 @@ const KeepAlive = /*@__PURE__*/ withKeepAliveEnabled({
2434
2512
  let pendingCacheKey = null;
2435
2513
  const cacheSubtree = () => {
2436
2514
  if (pendingCacheKey != null) {
2437
- if (isSuspense(keepAliveInstance.subTree.type)) queuePostRenderEffect(() => {
2438
- const vnode = getInnerChild(keepAliveInstance.subTree);
2439
- if (vnode.component) cache.set(pendingCacheKey, vnode);
2440
- }, void 0, keepAliveInstance.subTree.suspense);
2441
- else cache.set(pendingCacheKey, getInnerChild(keepAliveInstance.subTree));
2515
+ if (isSuspense(keepAliveInstance.subTree.type)) {
2516
+ const cacheInnerChild = () => {
2517
+ const vnode = getInnerChild(keepAliveInstance.subTree);
2518
+ if (vnode.component) cache.set(pendingCacheKey, vnode);
2519
+ };
2520
+ const suspense = keepAliveInstance.subTree.suspense;
2521
+ if (suspense.pendingBranch) queuePostRenderEffect(cacheInnerChild, void 0, suspense);
2522
+ else cacheInnerChild();
2523
+ } else cache.set(pendingCacheKey, getInnerChild(keepAliveInstance.subTree));
2442
2524
  }
2443
2525
  };
2444
2526
  onMounted(cacheSubtree);
@@ -2543,9 +2625,8 @@ function registerKeepAliveHook(hook, type, target = getCurrentGenericInstance())
2543
2625
  }
2544
2626
  function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {
2545
2627
  const injected = injectHook(type, hook, keepAliveRoot, true);
2546
- onUnmounted(() => {
2547
- (0, _vue_shared.remove)(keepAliveRoot[type], injected);
2548
- }, target);
2628
+ const removal = injectHook("um", () => (0, _vue_shared.remove)(keepAliveRoot[type], injected), target);
2629
+ removal.flags = 8;
2549
2630
  }
2550
2631
  function resetShapeFlag(vnode) {
2551
2632
  vnode.shapeFlag &= -257;
@@ -2770,6 +2851,11 @@ function renderSlot(slots, name, props, fallback, noSlotted, branchKey) {
2770
2851
  ret.props = (0, _vue_shared.extend)({}, ret.props, { key: branchKey });
2771
2852
  ret.key = branchKey;
2772
2853
  }
2854
+ if (isBlockTreeEnabled <= 0) {
2855
+ if (!ret.vs.props) ret.vs.props = ret.props;
2856
+ ret.props = ret.key != null ? { key: ret.key } : null;
2857
+ ret.vs.attrs = _vue_shared.EMPTY_OBJ;
2858
+ }
2773
2859
  if (!noSlotted && ret.scopeId) ret.slotScopeIds = [ret.scopeId + "-s"];
2774
2860
  return ret;
2775
2861
  }
@@ -4571,8 +4657,10 @@ function baseCreateRenderer(options, createHydrationFns) {
4571
4657
  (0, _vue_shared.def)(el, "__vnode", vnode, true);
4572
4658
  (0, _vue_shared.def)(el, "__vueParentComponent", parentComponent, true);
4573
4659
  if (dirs) invokeDirectiveHook(vnode, null, parentComponent, "beforeMount");
4574
- if (transition) performTransitionEnter(el, transition, () => hostInsert(el, container, anchor), parentSuspense);
4575
- else hostInsert(el, container, anchor);
4660
+ if (transition) {
4661
+ if (!needTransition(parentSuspense, transition) && !transition.persisted) el[deferredEnterKey] = true;
4662
+ performTransitionEnter(el, transition, () => hostInsert(el, container, anchor), parentSuspense);
4663
+ } else hostInsert(el, container, anchor);
4576
4664
  if ((vnodeHook = props && props.onVnodeMounted) || dirs) {
4577
4665
  const isHmr = isHmrUpdating;
4578
4666
  queuePostRenderEffect(() => {
@@ -4829,16 +4917,20 @@ function baseCreateRenderer(options, createHydrationFns) {
4829
4917
  } else {
4830
4918
  let { next, bu, u, parent, vnode } = instance;
4831
4919
  {
4832
- const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance);
4833
- if (nonHydratedAsyncRoot) {
4920
+ const unresolvedAsyncRoot = locateUnresolvedAsyncRoot(instance);
4921
+ if (unresolvedAsyncRoot) {
4834
4922
  if (next) {
4835
4923
  next.el = vnode.el;
4836
4924
  updateComponentPreRender(instance, next, optimized);
4837
4925
  }
4838
- nonHydratedAsyncRoot.asyncDep.then(() => {
4839
- queuePostRenderEffect(() => {
4840
- if (!instance.isUnmounted) instance.update();
4841
- }, void 0, parentSuspense);
4926
+ unresolvedAsyncRoot.asyncDep.then(() => {
4927
+ const retry = () => {
4928
+ if (instance.effect.flags & 1024) return;
4929
+ if (parentSuspense && parentSuspense.pendingBranch) queuePostRenderEffect(retry, void 0, parentSuspense);
4930
+ else instance.update();
4931
+ };
4932
+ retry.flags = 24;
4933
+ queuePostRenderEffect(retry, void 0, parentSuspense);
4842
4934
  });
4843
4935
  return;
4844
4936
  }
@@ -4861,7 +4953,7 @@ function baseCreateRenderer(options, createHydrationFns) {
4861
4953
  const prevTree = instance.subTree;
4862
4954
  instance.subTree = nextTree;
4863
4955
  startMeasure(instance, `patch`);
4864
- patch(prevTree, nextTree, hostParentNode(prevTree.el), getNextHostNode(prevTree), instance, parentSuspense, namespace);
4956
+ patch(prevTree, nextTree, hostParentNode(prevTree.el || resolveAsyncComponentPlaceholder(prevTree)), getNextHostNode(prevTree), instance, parentSuspense, namespace);
4865
4957
  endMeasure(instance, `patch`);
4866
4958
  next.el = nextTree.el;
4867
4959
  if (originNext === null) updateHOCHostEl(instance, nextTree.el);
@@ -5064,9 +5156,7 @@ function baseCreateRenderer(options, createHydrationFns) {
5064
5156
  }
5065
5157
  if (cacheIndex != null && (!vnode.ctx || vnode.ctx === parentComponent)) parentComponent.renderCache[cacheIndex] = void 0;
5066
5158
  if (shapeFlag & 256) {
5067
- if (isVaporInteropEnabled && isVaporComponent(vnode.type)) getVaporInterface(parentComponent, vnode).deactivate(vnode, parentComponent.ctx.getStorageContainer(), parentSuspense);
5068
- else parentComponent.ctx.deactivate(vnode);
5069
- return;
5159
+ if (parentComponent.ctx.deactivate(vnode)) return;
5070
5160
  }
5071
5161
  if (isVaporInteropEnabled && shapeFlag & 6 && isVaporComponent(type)) {
5072
5162
  getVaporInterface(parentComponent, vnode).unmount(vnode, doRemove, parentSuspense);
@@ -5146,12 +5236,14 @@ function baseCreateRenderer(options, createHydrationFns) {
5146
5236
  if (effect) {
5147
5237
  effect.stop();
5148
5238
  unmount(subTree, instance, parentSuspense, doRemove);
5149
- } else if (instance.vnode.el && subTree) {
5239
+ } else if (subTree) {
5150
5240
  subTree.transition = instance.vnode.transition;
5151
5241
  unmount(subTree, instance, parentSuspense, doRemove);
5152
5242
  }
5153
5243
  if (um) queuePostRenderEffect(um, void 0, parentSuspense);
5154
- queuePostRenderEffect(() => instance.isUnmounted = true, void 0, parentSuspense);
5244
+ const markUnmounted = () => instance.isUnmounted = true;
5245
+ markUnmounted.flags = 8;
5246
+ queuePostRenderEffect(markUnmounted, void 0, parentSuspense);
5155
5247
  devtoolsComponentRemoved(instance);
5156
5248
  };
5157
5249
  const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {
@@ -5265,11 +5357,11 @@ function traverseStaticChildren(n1, n2, shallow = false) {
5265
5357
  c2.el && (c2.el.__vnode = c2);
5266
5358
  }
5267
5359
  }
5268
- function locateNonHydratedAsyncRoot(instance) {
5360
+ function locateUnresolvedAsyncRoot(instance) {
5269
5361
  const subComponent = instance.subTree && instance.subTree.component;
5270
5362
  if (subComponent) {
5271
5363
  if (subComponent.asyncDep && !subComponent.asyncResolved) return subComponent;
5272
- else return locateNonHydratedAsyncRoot(subComponent);
5364
+ else return locateUnresolvedAsyncRoot(subComponent);
5273
5365
  }
5274
5366
  }
5275
5367
  function invalidateMount(hooks) {
@@ -5339,7 +5431,9 @@ function getInheritedScopeIds(vnode, parentComponent, includeVaporRootIds = true
5339
5431
  function resolveAsyncComponentPlaceholder(anchorVnode) {
5340
5432
  if (anchorVnode.placeholder) return anchorVnode.placeholder;
5341
5433
  const instance = anchorVnode.component;
5342
- if (instance) return resolveAsyncComponentPlaceholder(instance.subTree);
5434
+ if (instance && instance.subTree) return resolveAsyncComponentPlaceholder(instance.subTree);
5435
+ const suspense = anchorVnode.suspense;
5436
+ if (suspense && suspense.activeBranch) return resolveAsyncComponentPlaceholder(suspense.activeBranch);
5343
5437
  return null;
5344
5438
  }
5345
5439
  //#endregion
@@ -5351,17 +5445,22 @@ function withSuspenseEnabled(value) {
5351
5445
  return value;
5352
5446
  }
5353
5447
  let suspenseId = 0;
5448
+ const deferredEnterKey = Symbol("_deferredEnter");
5354
5449
  const Suspense = /*@__PURE__*/ withSuspenseEnabled({
5355
5450
  name: "Suspense",
5356
5451
  __isSuspense: true,
5357
5452
  process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {
5358
5453
  if (n1 == null) mountSuspense(n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals);
5359
5454
  else {
5360
- if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback && !parentSuspense.isHydrating) {
5361
- n2.suspense = n1.suspense;
5362
- n2.suspense.vnode = n2;
5363
- n2.el = n1.el;
5364
- return;
5455
+ const suspense = n1.suspense;
5456
+ if (parentSuspense && parentSuspense.deps > 0 && !parentSuspense.isHydrating) {
5457
+ const owner = suspense.parentComponent;
5458
+ if (!!owner && owner.suspense === parentSuspense && owner.suspenseId !== parentSuspense.pendingId ? parentSuspense.pendingBranch && !isSameVNodeType(n2.ssContent, suspense.pendingBranch || suspense.activeBranch) : !suspense.isInFallback) {
5459
+ n2.suspense = suspense;
5460
+ suspense.vnode = n2;
5461
+ n2.el = n1.el;
5462
+ return;
5463
+ }
5365
5464
  }
5366
5465
  patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, rendererInternals);
5367
5466
  }
@@ -5373,6 +5472,36 @@ function triggerEvent(vnode, name) {
5373
5472
  const eventListener = vnode.props && vnode.props[name];
5374
5473
  if ((0, _vue_shared.isFunction)(eventListener)) eventListener();
5375
5474
  }
5475
+ function enterDeferred(suspense, branch) {
5476
+ const enters = [];
5477
+ collectDeferredEnters(branch, enters, true);
5478
+ if (isVaporInteropEnabled) {
5479
+ const { parentComponent } = suspense;
5480
+ const vapor = parentComponent && parentComponent.appContext.vapor;
5481
+ if (vapor) vapor.enterDeferred(suspense, enters);
5482
+ }
5483
+ if (enters.length) queuePostFlushCb(enters);
5484
+ }
5485
+ function collectDeferredEnters(vnode, enters, isRoot) {
5486
+ const { el, transition, children, shapeFlag } = vnode;
5487
+ if (shapeFlag & 6) {
5488
+ const subTree = vnode.component.subTree;
5489
+ if (subTree) collectDeferredEnters(subTree, enters, isRoot);
5490
+ return;
5491
+ }
5492
+ if (shapeFlag & 192) return;
5493
+ if (shapeFlag & 1) {
5494
+ if (!isRoot && el && el[deferredEnterKey]) {
5495
+ el[deferredEnterKey] = void 0;
5496
+ if (transition && !transition.persisted) {
5497
+ transition.beforeEnter(el);
5498
+ enters.push(() => transition.enter(el));
5499
+ }
5500
+ }
5501
+ isRoot = false;
5502
+ }
5503
+ if (shapeFlag & 16) for (let i = 0; i < children.length; i++) collectDeferredEnters(children[i], enters, isRoot);
5504
+ }
5376
5505
  function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {
5377
5506
  const { p: patch, o: { createElement } } = rendererInternals;
5378
5507
  const hiddenContainer = createElement("div");
@@ -5412,11 +5541,7 @@ function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, sl
5412
5541
  suspense.activeBranch = pendingBranch;
5413
5542
  } else unmount(pendingBranch, parentComponent, suspense);
5414
5543
  suspense.deps = 0;
5415
- for (let i = 0; i < suspense.effects.length; i++) {
5416
- const effect = suspense.effects[i];
5417
- if (effect.flags & 8) queuePostFlushCb(effect);
5418
- }
5419
- suspense.effects.length = 0;
5544
+ discardEffects(suspense);
5420
5545
  suspense.hiddenContainer = createElement("div");
5421
5546
  if (isInFallback) {
5422
5547
  patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, namespace, slotScopeIds, optimized);
@@ -5439,14 +5564,14 @@ function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, sl
5439
5564
  } else {
5440
5565
  triggerEvent(n2, "onPending");
5441
5566
  suspense.pendingBranch = newBranch;
5442
- if (newBranch.shapeFlag & 512) suspense.pendingId = newBranch.component.suspenseId;
5443
- else suspense.pendingId = suspenseId++;
5567
+ suspense.pendingId = suspenseId++;
5444
5568
  patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, namespace, slotScopeIds, optimized);
5445
5569
  if (suspense.deps <= 0) suspense.resolve();
5446
5570
  else {
5447
- const { timeout, pendingId } = suspense;
5448
- if (timeout > 0) setTimeout(() => {
5449
- if (suspense.pendingId === pendingId) suspense.fallback(newFallback);
5571
+ const { timeout } = suspense;
5572
+ if (timeout > 0) suspense.timeoutTimer = setTimeout(() => {
5573
+ suspense.timeoutTimer = void 0;
5574
+ suspense.fallback(suspense.vnode.ssFallback);
5450
5575
  }, timeout);
5451
5576
  else if (timeout === 0) suspense.fallback(newFallback);
5452
5577
  }
@@ -5482,6 +5607,7 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
5482
5607
  deps: 0,
5483
5608
  pendingId: suspenseId++,
5484
5609
  timeout: typeof timeout === "number" ? timeout : -1,
5610
+ timeoutTimer: void 0,
5485
5611
  activeBranch: null,
5486
5612
  isFallbackMountPending: false,
5487
5613
  pendingBranch: null,
@@ -5499,26 +5625,39 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
5499
5625
  delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in";
5500
5626
  let hasUpdatedAnchor = false;
5501
5627
  if (delayEnter) activeBranch.transition.afterLeave = () => {
5502
- if (pendingId === suspense.pendingId) {
5628
+ if (pendingId === suspense.pendingId && !suspense.isUnmounted) {
5629
+ enterDeferred(suspense, pendingBranch);
5503
5630
  move(pendingBranch, container, anchor === initialAnchor && !hasUpdatedAnchor ? next(activeBranch) : anchor, 0, parentComponent);
5504
5631
  queuePostFlushCb(effects);
5505
5632
  if (isInFallback && vnode.ssFallback) vnode.ssFallback.el = null;
5506
5633
  }
5507
5634
  };
5508
5635
  if (activeBranch && !suspense.isFallbackMountPending) {
5509
- if (parentNode(activeBranch.el) === container) {
5636
+ if (parentNode(activeBranch.el || resolveAsyncComponentPlaceholder(activeBranch)) === container) {
5510
5637
  anchor = next(activeBranch);
5511
5638
  hasUpdatedAnchor = true;
5512
5639
  }
5513
5640
  unmount(activeBranch, parentComponent, suspense, true);
5514
5641
  if (!delayEnter && isInFallback && vnode.ssFallback) queuePostRenderEffect(() => vnode.ssFallback.el = null, void 0, suspense);
5515
5642
  }
5516
- if (!delayEnter) move(pendingBranch, container, anchor, 0, parentComponent);
5643
+ if (!delayEnter) {
5644
+ enterDeferred(suspense, pendingBranch);
5645
+ move(pendingBranch, container, anchor, 0, parentComponent);
5646
+ }
5517
5647
  }
5648
+ clearTimeout(suspense.timeoutTimer);
5649
+ suspense.timeoutTimer = void 0;
5518
5650
  suspense.isFallbackMountPending = false;
5519
5651
  setActiveBranch(suspense, pendingBranch);
5520
5652
  suspense.pendingBranch = null;
5521
5653
  suspense.isInFallback = false;
5654
+ let kept = 0;
5655
+ for (let i = 0; i < effects.length; i++) {
5656
+ const effect = effects[i];
5657
+ if (effect.flags & 16) queuePostFlushCb(effect);
5658
+ else effects[kept++] = effect;
5659
+ }
5660
+ effects.length = kept;
5522
5661
  let parent = suspense.parent;
5523
5662
  let hasUnresolvedAncestor = false;
5524
5663
  while (parent) {
@@ -5541,13 +5680,13 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
5541
5680
  triggerEvent(vnode, "onResolve");
5542
5681
  },
5543
5682
  fallback(fallbackVNode) {
5544
- if (!suspense.pendingBranch) return;
5683
+ if (suspense.isUnmounted || !suspense.pendingBranch) return;
5545
5684
  const { vnode, activeBranch, parentComponent, container, namespace } = suspense;
5546
5685
  triggerEvent(vnode, "onFallback");
5547
5686
  const anchor = next(activeBranch);
5548
5687
  const mountFallback = () => {
5549
5688
  suspense.isFallbackMountPending = false;
5550
- if (!suspense.isInFallback) return;
5689
+ if (suspense.isUnmounted || !suspense.isInFallback) return;
5551
5690
  const latestFallback = suspense.vnode.ssFallback;
5552
5691
  patch(null, latestFallback, container, anchor, parentComponent, null, namespace, slotScopeIds, optimized);
5553
5692
  setActiveBranch(suspense, latestFallback);
@@ -5571,24 +5710,52 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
5571
5710
  registerDep(instance, onResolve) {
5572
5711
  const isInPendingSuspense = !!suspense.pendingBranch;
5573
5712
  if (isInPendingSuspense) suspense.deps++;
5713
+ const render = (setupResult) => {
5714
+ instance.asyncResolved = true;
5715
+ onResolve(setupResult);
5716
+ };
5574
5717
  instance.asyncDep.catch((err) => {
5575
- handleError(err, instance, 0);
5718
+ handleError(err, instance, 0, false, true);
5719
+ return () => null;
5576
5720
  }).then((asyncSetupResult) => {
5577
- if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) return;
5721
+ if (instance.isUnmounted || suspense.isUnmounted) return;
5722
+ const isPendingDep = isInPendingSuspense && suspense.pendingId === instance.suspenseId;
5578
5723
  setCurrentInstance(null, void 0);
5579
5724
  if (!instance.scope.active) {
5580
- if (isInPendingSuspense && --suspense.deps === 0) suspense.resolve();
5725
+ if (isPendingDep && --suspense.deps === 0) suspense.resolve();
5581
5726
  return;
5582
5727
  }
5583
- instance.asyncResolved = true;
5584
- onResolve(asyncSetupResult);
5585
- if (isInPendingSuspense && --suspense.deps === 0) suspense.resolve();
5728
+ if (!isPendingDep && suspense.pendingBranch) {
5729
+ const job = () => {
5730
+ if (instance.isUnmounted || suspense.isUnmounted || !instance.scope.active) return;
5731
+ if (suspense.pendingBranch) queueEffectWithSuspense(job, void 0, suspense);
5732
+ else render(asyncSetupResult);
5733
+ };
5734
+ job.flags = 24;
5735
+ queueEffectWithSuspense(job, void 0, suspense);
5736
+ return;
5737
+ }
5738
+ render(asyncSetupResult);
5739
+ if (isPendingDep && --suspense.deps === 0) suspense.resolve();
5586
5740
  });
5587
5741
  },
5588
5742
  unmount(parentSuspense, doRemove) {
5589
5743
  suspense.isUnmounted = true;
5744
+ clearTimeout(suspense.timeoutTimer);
5745
+ suspense.timeoutTimer = void 0;
5746
+ if (parentSuspenseId !== void 0) {
5747
+ const parent = suspense.parent;
5748
+ const pendingId = parentSuspenseId;
5749
+ parentSuspenseId = void 0;
5750
+ queuePostFlushCb(() => {
5751
+ if (parent.pendingId === pendingId && !parent.isUnmounted && --parent.deps === 0) parent.resolve();
5752
+ });
5753
+ }
5590
5754
  if (suspense.activeBranch) unmount(suspense.activeBranch, parentComponent, parentSuspense, doRemove);
5591
- if (suspense.pendingBranch) unmount(suspense.pendingBranch, parentComponent, parentSuspense, doRemove);
5755
+ if (suspense.pendingBranch) {
5756
+ unmount(suspense.pendingBranch, parentComponent, suspense, doRemove);
5757
+ discardEffects(suspense);
5758
+ }
5592
5759
  }
5593
5760
  };
5594
5761
  return suspense;
@@ -5629,6 +5796,14 @@ function normalizeSuspenseSlot(s) {
5629
5796
  if (block && !s.dynamicChildren) s.dynamicChildren = block.filter((c) => c !== s);
5630
5797
  return s;
5631
5798
  }
5799
+ function discardEffects(suspense) {
5800
+ const { effects } = suspense;
5801
+ for (let i = 0; i < effects.length; i++) {
5802
+ const effect = effects[i];
5803
+ if (effect.flags & 8) queuePostFlushCb(effect);
5804
+ }
5805
+ effects.length = 0;
5806
+ }
5632
5807
  function queueEffectWithSuspense(fn, id, suspense) {
5633
5808
  if (suspense && suspense.pendingBranch) {
5634
5809
  if ((0, _vue_shared.isArray)(fn)) suspense.effects.push(...fn);
@@ -5853,7 +6028,8 @@ function _createVNode(type, props = null, children = null, patchFlag = 0, dynami
5853
6028
  }
5854
6029
  function guardReactiveProps(props) {
5855
6030
  if (!props) return null;
5856
- return (0, _vue_reactivity.isProxy)(props) || isInternalObject(props) ? (0, _vue_shared.extend)({}, props) : props;
6031
+ if ((0, _vue_reactivity.isProxy)(props)) return (0, _vue_shared.extend)({}, props);
6032
+ return isInternalObject(props) ? (0, _vue_shared.extend)({}, props[rawAttrsKey] || props) : props;
5857
6033
  }
5858
6034
  function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false) {
5859
6035
  const { props, ref, patchFlag, children, transition } = vnode;
@@ -5966,6 +6142,17 @@ function normalizeVNode(child) {
5966
6142
  function cloneIfMounted(child) {
5967
6143
  return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child);
5968
6144
  }
6145
+ let deferElementSlots = false;
6146
+ /**
6147
+ * While enabled, compiled default slots passed as children of plain elements
6148
+ * are kept on the vnode so the server renderer can render them in push mode.
6149
+ * @internal
6150
+ */
6151
+ function setDeferElementSlots(value) {
6152
+ const prev = deferElementSlots;
6153
+ deferElementSlots = value;
6154
+ return prev;
6155
+ }
5969
6156
  function normalizeChildren(vnode, children) {
5970
6157
  let type = 0;
5971
6158
  const { shapeFlag } = vnode;
@@ -5974,6 +6161,11 @@ function normalizeChildren(vnode, children) {
5974
6161
  else if (typeof children === "object") {
5975
6162
  if (shapeFlag & 65) {
5976
6163
  const slot = children.default;
6164
+ if (deferElementSlots && slot && slot._c && shapeFlag & 1) {
6165
+ vnode.children = children;
6166
+ vnode.shapeFlag |= 32;
6167
+ return;
6168
+ }
5977
6169
  if (slot) {
5978
6170
  slot._c && (slot._d = false);
5979
6171
  normalizeChildren(vnode, slot());
@@ -6248,7 +6440,8 @@ function setupStatefulComponent(instance, isSSR) {
6248
6440
  setInSSRSetupState(false);
6249
6441
  }
6250
6442
  }).catch((e) => {
6251
- handleError(e, instance, 0);
6443
+ handleError(e, instance, 0, void 0, true);
6444
+ instance.ssrRender = (_, push) => push("<!---->");
6252
6445
  });
6253
6446
  else {
6254
6447
  instance.asyncDep = setupResult;
@@ -6319,11 +6512,16 @@ function finishComponentSetup(instance, isSSR, skipOptions) {
6319
6512
  else warn$1(`Component is missing template or render function: `, Component);
6320
6513
  }
6321
6514
  }
6515
+ /**
6516
+ * Read through the setup context `attrs` proxy to get the raw attrs object.
6517
+ * @internal
6518
+ */
6519
+ const rawAttrsKey = Symbol();
6322
6520
  const attrsProxyHandlers = {
6323
6521
  get(target, key) {
6324
6522
  markAttrsAccessed();
6325
6523
  (0, _vue_reactivity.track)(target, "get", "");
6326
- return target[key];
6524
+ return key === rawAttrsKey ? target : target[key];
6327
6525
  },
6328
6526
  set() {
6329
6527
  warn$1(`setupContext.attrs is readonly.`);
@@ -6621,7 +6819,7 @@ function isMemoSame(cached, memo) {
6621
6819
  }
6622
6820
  //#endregion
6623
6821
  //#region packages/runtime-core/src/index.ts
6624
- const version = "3.6.0-rc.13";
6822
+ const version = "3.6.0-rc.15";
6625
6823
  const warn = warn$1;
6626
6824
  /**
6627
6825
  * Runtime error messages. Only exposed in dev or esm builds.
@@ -6647,7 +6845,8 @@ const ssrUtils = {
6647
6845
  popWarningContext,
6648
6846
  VaporSlot,
6649
6847
  rawVaporSlotKey,
6650
- invokeSlotFallback
6848
+ invokeSlotFallback,
6849
+ setDeferElementSlots
6651
6850
  };
6652
6851
  /**
6653
6852
  * @internal only exposed in compat builds