@vue/server-renderer 3.6.0-alpha.1 → 3.6.0-alpha.3

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,9 +1,8 @@
1
1
  /**
2
- * @vue/server-renderer v3.6.0-alpha.1
2
+ * @vue/server-renderer v3.6.0-alpha.3
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
6
- /*! #__NO_SIDE_EFFECTS__ */
7
6
  // @__NO_SIDE_EFFECTS__
8
7
  function makeMap(str) {
9
8
  const map = /* @__PURE__ */ Object.create(null);
@@ -58,10 +57,10 @@ const isBuiltInDirective = /* @__PURE__ */ makeMap(
58
57
  );
59
58
  const cacheStringFunction = (fn) => {
60
59
  const cache = /* @__PURE__ */ Object.create(null);
61
- return (str) => {
60
+ return ((str) => {
62
61
  const hit = cache[str];
63
62
  return hit || (cache[str] = fn(str));
64
- };
63
+ });
65
64
  };
66
65
  const camelizeRE = /-(\w)/g;
67
66
  const camelizeReplacer = (_, c) => c ? c.toUpperCase() : "";
@@ -230,6 +229,9 @@ function shouldSetAsAttr(tagName, key) {
230
229
  if ((key === "width" || key === "height") && (tagName === "IMG" || tagName === "VIDEO" || tagName === "CANVAS" || tagName === "SOURCE")) {
231
230
  return true;
232
231
  }
232
+ if (key === "sandbox" && tagName === "IFRAME") {
233
+ return true;
234
+ }
233
235
  return false;
234
236
  }
235
237
 
@@ -455,6 +457,7 @@ var ReactiveFlags = /* @__PURE__ */ ((ReactiveFlags2) => {
455
457
  const notifyBuffer = [];
456
458
  let batchDepth = 0;
457
459
  let activeSub = void 0;
460
+ let globalVersion = 0;
458
461
  let notifyIndex = 0;
459
462
  let notifyBufferLength = 0;
460
463
  function setActiveSub(sub) {
@@ -477,20 +480,18 @@ function link(dep, sub) {
477
480
  if (prevDep !== void 0 && prevDep.dep === dep) {
478
481
  return;
479
482
  }
480
- let nextDep = void 0;
481
- const recursedCheck = sub.flags & 4 /* RecursedCheck */;
482
- if (recursedCheck) {
483
- nextDep = prevDep !== void 0 ? prevDep.nextDep : sub.deps;
484
- if (nextDep !== void 0 && nextDep.dep === dep) {
485
- sub.depsTail = nextDep;
486
- return;
487
- }
483
+ const nextDep = prevDep !== void 0 ? prevDep.nextDep : sub.deps;
484
+ if (nextDep !== void 0 && nextDep.dep === dep) {
485
+ nextDep.version = globalVersion;
486
+ sub.depsTail = nextDep;
487
+ return;
488
488
  }
489
489
  const prevSub = dep.subsTail;
490
- if (prevSub !== void 0 && prevSub.sub === sub && (!recursedCheck || isValidLink(prevSub, sub))) {
490
+ if (prevSub !== void 0 && prevSub.version === globalVersion && prevSub.sub === sub) {
491
491
  return;
492
492
  }
493
493
  const newLink = sub.depsTail = dep.subsTail = {
494
+ version: globalVersion,
494
495
  dep,
495
496
  sub,
496
497
  prevDep,
@@ -596,6 +597,7 @@ function propagate(link2) {
596
597
  } while (true);
597
598
  }
598
599
  function startTracking(sub) {
600
+ ++globalVersion;
599
601
  sub.depsTail = void 0;
600
602
  sub.flags = sub.flags & -57 | 4 /* RecursedCheck */;
601
603
  return setActiveSub(sub);
@@ -696,18 +698,12 @@ function shallowPropagate(link2) {
696
698
  } while (link2 !== void 0);
697
699
  }
698
700
  function isValidLink(checkLink, sub) {
699
- const depsTail = sub.depsTail;
700
- if (depsTail !== void 0) {
701
- let link2 = sub.deps;
702
- do {
703
- if (link2 === checkLink) {
704
- return true;
705
- }
706
- if (link2 === depsTail) {
707
- break;
708
- }
709
- link2 = link2.nextDep;
710
- } while (link2 !== void 0);
701
+ let link2 = sub.depsTail;
702
+ while (link2 !== void 0) {
703
+ if (link2 === checkLink) {
704
+ return true;
705
+ }
706
+ link2 = link2.prevDep;
711
707
  }
712
708
  return false;
713
709
  }
@@ -943,7 +939,7 @@ const arrayInstrumentations = {
943
939
  join(separator) {
944
940
  return reactiveReadArray(this).join(separator);
945
941
  },
946
- // keys() iterator only reads `length`, no optimisation required
942
+ // keys() iterator only reads `length`, no optimization required
947
943
  lastIndexOf(...args) {
948
944
  return searchProxy(this, "lastIndexOf", args);
949
945
  },
@@ -995,7 +991,7 @@ function iterator(self, method, wrapValue) {
995
991
  iter._next = iter.next;
996
992
  iter.next = () => {
997
993
  const result = iter._next();
998
- if (result.value) {
994
+ if (!result.done) {
999
995
  result.value = wrapValue(result.value);
1000
996
  }
1001
997
  return result;
@@ -1126,7 +1122,8 @@ class BaseReactiveHandler {
1126
1122
  return res;
1127
1123
  }
1128
1124
  if (isRef(res)) {
1129
- return targetIsArray && isIntegerKey(key) ? res : res.value;
1125
+ const value = targetIsArray && isIntegerKey(key) ? res : res.value;
1126
+ return isReadonly2 && isObject(value) ? readonly(value) : value;
1130
1127
  }
1131
1128
  if (isObject(res)) {
1132
1129
  return isReadonly2 ? readonly(res) : reactive(res);
@@ -1148,7 +1145,13 @@ class MutableReactiveHandler extends BaseReactiveHandler {
1148
1145
  }
1149
1146
  if (!isArray(target) && isRef(oldValue) && !isRef(value)) {
1150
1147
  if (isOldValueReadonly) {
1151
- return false;
1148
+ {
1149
+ warn$2(
1150
+ `Set operation on key "${String(key)}" failed: target is readonly.`,
1151
+ target[key]
1152
+ );
1153
+ }
1154
+ return true;
1152
1155
  } else {
1153
1156
  oldValue.value = value;
1154
1157
  return true;
@@ -1293,7 +1296,7 @@ function createInstrumentations(readonly, shallow) {
1293
1296
  get size() {
1294
1297
  const target = this["__v_raw"];
1295
1298
  !readonly && track(toRaw(target), "iterate", ITERATE_KEY);
1296
- return Reflect.get(target, "size", target);
1299
+ return target.size;
1297
1300
  },
1298
1301
  has(key) {
1299
1302
  const target = this["__v_raw"];
@@ -1738,14 +1741,12 @@ class EffectScope {
1738
1741
  }
1739
1742
  }
1740
1743
  run(fn) {
1741
- const prevSub = setActiveSub();
1742
1744
  const prevScope = activeEffectScope;
1743
1745
  try {
1744
1746
  activeEffectScope = this;
1745
1747
  return fn();
1746
1748
  } finally {
1747
1749
  activeEffectScope = prevScope;
1748
- setActiveSub(prevSub);
1749
1750
  }
1750
1751
  }
1751
1752
  stop() {
@@ -2043,11 +2044,11 @@ function traverse(value, depth = Infinity, seen) {
2043
2044
  if (depth <= 0 || !isObject(value) || value["__v_skip"]) {
2044
2045
  return value;
2045
2046
  }
2046
- seen = seen || /* @__PURE__ */ new Set();
2047
- if (seen.has(value)) {
2047
+ seen = seen || /* @__PURE__ */ new Map();
2048
+ if ((seen.get(value) || 0) >= depth) {
2048
2049
  return value;
2049
2050
  }
2050
- seen.add(value);
2051
+ seen.set(value, depth);
2051
2052
  depth--;
2052
2053
  if (isRef(value)) {
2053
2054
  traverse(value.value, depth, seen);
@@ -2554,8 +2555,10 @@ function rerender(id, newRender) {
2554
2555
  instance.hmrRerender();
2555
2556
  } else {
2556
2557
  const i = instance;
2557
- i.renderCache = [];
2558
- i.effect.run();
2558
+ if (!(i.effect.flags & 1024)) {
2559
+ i.renderCache = [];
2560
+ i.effect.run();
2561
+ }
2559
2562
  }
2560
2563
  nextTick(() => {
2561
2564
  isHmrUpdating = false;
@@ -2568,7 +2571,7 @@ function reload(id, newComp) {
2568
2571
  newComp = normalizeClassComponent(newComp);
2569
2572
  updateComponentDef(record.initialDef, newComp);
2570
2573
  const instances = [...record.instances];
2571
- if (newComp.vapor) {
2574
+ if (newComp.__vapor) {
2572
2575
  for (const instance of instances) {
2573
2576
  instance.hmrReload(newComp);
2574
2577
  }
@@ -2597,7 +2600,10 @@ function reload(id, newComp) {
2597
2600
  if (parent.vapor) {
2598
2601
  parent.hmrRerender();
2599
2602
  } else {
2600
- parent.effect.run();
2603
+ if (!(parent.effect.flags & 1024)) {
2604
+ parent.renderCache = [];
2605
+ parent.effect.run();
2606
+ }
2601
2607
  }
2602
2608
  nextTick(() => {
2603
2609
  isHmrUpdating = false;
@@ -2707,7 +2713,6 @@ const devtoolsComponentRemoved = (component) => {
2707
2713
  _devtoolsComponentRemoved(component);
2708
2714
  }
2709
2715
  };
2710
- /*! #__NO_SIDE_EFFECTS__ */
2711
2716
  // @__NO_SIDE_EFFECTS__
2712
2717
  function createDevtoolsComponentHook(hook) {
2713
2718
  return (component) => {
@@ -2805,10 +2810,18 @@ function invokeDirectiveHook(vnode, prevVNode, instance, name) {
2805
2810
  const TeleportEndKey = Symbol("_vte");
2806
2811
  const isTeleport = (type) => type.__isTeleport;
2807
2812
 
2813
+ const leaveCbKey = Symbol("_leaveCb");
2808
2814
  function setTransitionHooks(vnode, hooks) {
2809
2815
  if (vnode.shapeFlag & 6 && vnode.component) {
2810
- vnode.transition = hooks;
2811
- setTransitionHooks(vnode.component.subTree, hooks);
2816
+ if (vnode.type.__vapor) {
2817
+ getVaporInterface(vnode.component, vnode).setTransitionHooks(
2818
+ vnode.component,
2819
+ hooks
2820
+ );
2821
+ } else {
2822
+ vnode.transition = hooks;
2823
+ setTransitionHooks(vnode.component.subTree, hooks);
2824
+ }
2812
2825
  } else if (vnode.shapeFlag & 128) {
2813
2826
  vnode.ssContent.transition = hooks.clone(vnode.ssContent);
2814
2827
  vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);
@@ -2823,6 +2836,7 @@ function markAsyncBoundary(instance) {
2823
2836
 
2824
2837
  const knownTemplateRefs = /* @__PURE__ */ new WeakSet();
2825
2838
 
2839
+ const pendingSetRefMap = /* @__PURE__ */ new WeakMap();
2826
2840
  function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
2827
2841
  if (isArray(rawRef)) {
2828
2842
  rawRef.forEach(
@@ -2854,28 +2868,23 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
2854
2868
  const oldRef = oldRawRef && oldRawRef.r;
2855
2869
  const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;
2856
2870
  const setupState = owner.setupState;
2857
- const rawSetupState = toRaw(setupState);
2858
- const canSetSetupRef = setupState === EMPTY_OBJ ? () => false : (key) => {
2859
- {
2860
- if (hasOwn(rawSetupState, key) && !isRef(rawSetupState[key])) {
2861
- warn$1(
2862
- `Template ref "${key}" used on a non-ref value. It will not work in the production build.`
2863
- );
2864
- }
2865
- if (knownTemplateRefs.has(rawSetupState[key])) {
2866
- return false;
2867
- }
2868
- }
2869
- return hasOwn(rawSetupState, key);
2871
+ const canSetSetupRef = createCanSetSetupRefChecker(setupState);
2872
+ const canSetRef = (ref2) => {
2873
+ return !knownTemplateRefs.has(ref2);
2870
2874
  };
2871
2875
  if (oldRef != null && oldRef !== ref) {
2876
+ invalidatePendingSetRef(oldRawRef);
2872
2877
  if (isString(oldRef)) {
2873
2878
  refs[oldRef] = null;
2874
2879
  if (canSetSetupRef(oldRef)) {
2875
2880
  setupState[oldRef] = null;
2876
2881
  }
2877
2882
  } else if (isRef(oldRef)) {
2878
- oldRef.value = null;
2883
+ if (canSetRef(oldRef)) {
2884
+ oldRef.value = null;
2885
+ }
2886
+ const oldRawRefAtom = oldRawRef;
2887
+ if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;
2879
2888
  }
2880
2889
  }
2881
2890
  if (isFunction(ref)) {
@@ -2886,7 +2895,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
2886
2895
  if (_isString || _isRef) {
2887
2896
  const doSet = () => {
2888
2897
  if (rawRef.f) {
2889
- const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : ref.value;
2898
+ const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : canSetRef(ref) || !rawRef.k ? ref.value : refs[rawRef.k];
2890
2899
  if (isUnmount) {
2891
2900
  isArray(existing) && remove(existing, refValue);
2892
2901
  } else {
@@ -2897,8 +2906,11 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
2897
2906
  setupState[ref] = refs[ref];
2898
2907
  }
2899
2908
  } else {
2900
- ref.value = [refValue];
2901
- if (rawRef.k) refs[rawRef.k] = ref.value;
2909
+ const newVal = [refValue];
2910
+ if (canSetRef(ref)) {
2911
+ ref.value = newVal;
2912
+ }
2913
+ if (rawRef.k) refs[rawRef.k] = newVal;
2902
2914
  }
2903
2915
  } else if (!existing.includes(refValue)) {
2904
2916
  existing.push(refValue);
@@ -2910,15 +2922,23 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
2910
2922
  setupState[ref] = value;
2911
2923
  }
2912
2924
  } else if (_isRef) {
2913
- ref.value = value;
2925
+ if (canSetRef(ref)) {
2926
+ ref.value = value;
2927
+ }
2914
2928
  if (rawRef.k) refs[rawRef.k] = value;
2915
2929
  } else {
2916
2930
  warn$1("Invalid template ref type:", ref, `(${typeof ref})`);
2917
2931
  }
2918
2932
  };
2919
2933
  if (value) {
2920
- queuePostRenderEffect(doSet, -1, parentSuspense);
2934
+ const job = () => {
2935
+ doSet();
2936
+ pendingSetRefMap.delete(rawRef);
2937
+ };
2938
+ pendingSetRefMap.set(rawRef, job);
2939
+ queuePostRenderEffect(job, -1, parentSuspense);
2921
2940
  } else {
2941
+ invalidatePendingSetRef(rawRef);
2922
2942
  doSet();
2923
2943
  }
2924
2944
  } else {
@@ -2926,6 +2946,29 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
2926
2946
  }
2927
2947
  }
2928
2948
  }
2949
+ function createCanSetSetupRefChecker(setupState) {
2950
+ const rawSetupState = toRaw(setupState);
2951
+ return setupState === void 0 || setupState === EMPTY_OBJ ? NO : (key) => {
2952
+ {
2953
+ if (hasOwn(rawSetupState, key) && !isRef(rawSetupState[key])) {
2954
+ warn$1(
2955
+ `Template ref "${key}" used on a non-ref value. It will not work in the production build.`
2956
+ );
2957
+ }
2958
+ if (knownTemplateRefs.has(rawSetupState[key])) {
2959
+ return false;
2960
+ }
2961
+ }
2962
+ return hasOwn(rawSetupState, key);
2963
+ };
2964
+ }
2965
+ function invalidatePendingSetRef(rawRef) {
2966
+ const pendingSetRef = pendingSetRefMap.get(rawRef);
2967
+ if (pendingSetRef) {
2968
+ pendingSetRef.flags |= 4;
2969
+ pendingSetRefMap.delete(rawRef);
2970
+ }
2971
+ }
2929
2972
 
2930
2973
  const isAsyncWrapper = (i) => !!i.type.__asyncLoader;
2931
2974
 
@@ -2936,7 +2979,7 @@ function onActivated(hook, target) {
2936
2979
  function onDeactivated(hook, target) {
2937
2980
  registerKeepAliveHook(hook, "da", target);
2938
2981
  }
2939
- function registerKeepAliveHook(hook, type, target = getCurrentInstance()) {
2982
+ function registerKeepAliveHook(hook, type, target = getCurrentGenericInstance()) {
2940
2983
  const wrappedHook = hook.__wdc || (hook.__wdc = () => {
2941
2984
  let current = target;
2942
2985
  while (current) {
@@ -2950,8 +2993,9 @@ function registerKeepAliveHook(hook, type, target = getCurrentInstance()) {
2950
2993
  injectHook(type, wrappedHook, target);
2951
2994
  if (target) {
2952
2995
  let current = target.parent;
2953
- while (current && current.parent && current.parent.vnode) {
2954
- if (isKeepAlive(current.parent.vnode)) {
2996
+ while (current && current.parent) {
2997
+ let parent = current.parent;
2998
+ if (isKeepAlive(parent.vapor ? parent : parent.vnode)) {
2955
2999
  injectToKeepAliveRoot(wrappedHook, type, target, current);
2956
3000
  }
2957
3001
  current = current.parent;
@@ -3182,10 +3226,10 @@ const PublicInstanceProxyHandlers = {
3182
3226
  return true;
3183
3227
  },
3184
3228
  has({
3185
- _: { data, setupState, accessCache, ctx, appContext, propsOptions }
3229
+ _: { data, setupState, accessCache, ctx, appContext, propsOptions, type }
3186
3230
  }, key) {
3187
- let normalizedProps;
3188
- return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key);
3231
+ let normalizedProps, cssModules;
3232
+ return !!(accessCache[key] || data !== EMPTY_OBJ && key[0] !== "$" && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key) || (cssModules = type.__cssModules) && cssModules[key]);
3189
3233
  },
3190
3234
  defineProperty(target, key, descriptor) {
3191
3235
  if (descriptor.get != null) {
@@ -3452,7 +3496,8 @@ function applyOptions(instance) {
3452
3496
  expose.forEach((key) => {
3453
3497
  Object.defineProperty(exposed, key, {
3454
3498
  get: () => publicThis[key],
3455
- set: (val) => publicThis[key] = val
3499
+ set: (val) => publicThis[key] = val,
3500
+ enumerable: true
3456
3501
  });
3457
3502
  });
3458
3503
  } else if (!instance.exposed) {
@@ -4322,7 +4367,7 @@ function isBoolean(...args) {
4322
4367
  return args.some((elem) => elem.toLowerCase() === "boolean");
4323
4368
  }
4324
4369
 
4325
- const isInternalKey = (key) => key[0] === "_" || key === "$stable";
4370
+ const isInternalKey = (key) => key === "_" || key === "_ctx" || key === "$stable";
4326
4371
  const normalizeSlotValue = (value) => isArray(value) ? value.map(normalizeVNode$1) : [normalizeVNode$1(value)];
4327
4372
  const normalizeSlot = (key, rawSlot, ctx) => {
4328
4373
  if (rawSlot._n) {
@@ -4376,8 +4421,6 @@ const assignSlots = (slots, children, optimized) => {
4376
4421
  const initSlots = (instance, children, optimized) => {
4377
4422
  const slots = instance.slots = createInternalObject();
4378
4423
  if (instance.vnode.shapeFlag & 32) {
4379
- const cacheIndexes = children.__;
4380
- if (cacheIndexes) def(slots, "__", cacheIndexes, true);
4381
4424
  const type = children._;
4382
4425
  if (type) {
4383
4426
  assignSlots(slots, children, optimized);
@@ -4441,12 +4484,10 @@ function endMeasure(instance, type) {
4441
4484
  if (instance.appContext.config.performance && isSupported()) {
4442
4485
  const startTag = `vue-${type}-${instance.uid}`;
4443
4486
  const endTag = startTag + `:end`;
4487
+ const measureName = `<${formatComponentName(instance, instance.type)}> ${type}`;
4444
4488
  perf.mark(endTag);
4445
- perf.measure(
4446
- `<${formatComponentName(instance, instance.type)}> ${type}`,
4447
- startTag,
4448
- endTag
4449
- );
4489
+ perf.measure(measureName, startTag, endTag);
4490
+ perf.clearMeasures(measureName);
4450
4491
  perf.clearMarks(startTag);
4451
4492
  perf.clearMarks(endTag);
4452
4493
  }
@@ -4682,15 +4723,25 @@ function baseCreateRenderer(options, createHydrationFns) {
4682
4723
  optimized
4683
4724
  );
4684
4725
  } else {
4685
- patchElement(
4686
- n1,
4687
- n2,
4688
- parentComponent,
4689
- parentSuspense,
4690
- namespace,
4691
- slotScopeIds,
4692
- optimized
4693
- );
4726
+ const customElement = !!(n1.el && n1.el._isVueCE) ? n1.el : null;
4727
+ try {
4728
+ if (customElement) {
4729
+ customElement._beginPatch();
4730
+ }
4731
+ patchElement(
4732
+ n1,
4733
+ n2,
4734
+ parentComponent,
4735
+ parentSuspense,
4736
+ namespace,
4737
+ slotScopeIds,
4738
+ optimized
4739
+ );
4740
+ } finally {
4741
+ if (customElement) {
4742
+ customElement._endPatch();
4743
+ }
4744
+ }
4694
4745
  }
4695
4746
  };
4696
4747
  const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
@@ -4741,16 +4792,20 @@ function baseCreateRenderer(options, createHydrationFns) {
4741
4792
  if (dirs) {
4742
4793
  invokeDirectiveHook(vnode, null, parentComponent, "beforeMount");
4743
4794
  }
4744
- const needCallTransitionHooks = needTransition(parentSuspense, transition);
4745
- if (needCallTransitionHooks) {
4746
- transition.beforeEnter(el);
4795
+ if (transition) {
4796
+ performTransitionEnter(
4797
+ el,
4798
+ transition,
4799
+ () => hostInsert(el, container, anchor),
4800
+ parentSuspense
4801
+ );
4802
+ } else {
4803
+ hostInsert(el, container, anchor);
4747
4804
  }
4748
- hostInsert(el, container, anchor);
4749
- if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) {
4805
+ if ((vnodeHook = props && props.onVnodeMounted) || dirs) {
4750
4806
  queuePostRenderEffect(
4751
4807
  () => {
4752
4808
  vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);
4753
- needCallTransitionHooks && transition.enter(el);
4754
4809
  dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted");
4755
4810
  },
4756
4811
  void 0,
@@ -4767,21 +4822,9 @@ function baseCreateRenderer(options, createHydrationFns) {
4767
4822
  hostSetScopeId(el, slotScopeIds[i]);
4768
4823
  }
4769
4824
  }
4770
- let subTree = parentComponent && parentComponent.subTree;
4771
- if (subTree) {
4772
- if (subTree.patchFlag > 0 && subTree.patchFlag & 2048) {
4773
- subTree = filterSingleRoot(subTree.children) || subTree;
4774
- }
4775
- if (vnode === subTree || isSuspense(subTree.type) && (subTree.ssContent === vnode || subTree.ssFallback === vnode)) {
4776
- const parentVNode = parentComponent.vnode;
4777
- setScopeId(
4778
- el,
4779
- parentVNode,
4780
- parentVNode.scopeId,
4781
- parentVNode.slotScopeIds,
4782
- parentComponent.parent
4783
- );
4784
- }
4825
+ const inheritedScopeIds = getInheritedScopeIds(vnode, parentComponent);
4826
+ for (let i = 0; i < inheritedScopeIds.length; i++) {
4827
+ hostSetScopeId(el, inheritedScopeIds[i]);
4785
4828
  }
4786
4829
  };
4787
4830
  const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => {
@@ -5022,12 +5065,21 @@ function baseCreateRenderer(options, createHydrationFns) {
5022
5065
  n2.slotScopeIds = slotScopeIds;
5023
5066
  if (n2.type.__vapor) {
5024
5067
  if (n1 == null) {
5025
- getVaporInterface(parentComponent, n2).mount(
5026
- n2,
5027
- container,
5028
- anchor,
5029
- parentComponent
5030
- );
5068
+ if (n2.shapeFlag & 512) {
5069
+ getVaporInterface(parentComponent, n2).activate(
5070
+ n2,
5071
+ container,
5072
+ anchor,
5073
+ parentComponent
5074
+ );
5075
+ } else {
5076
+ getVaporInterface(parentComponent, n2).mount(
5077
+ n2,
5078
+ container,
5079
+ anchor,
5080
+ parentComponent
5081
+ );
5082
+ }
5031
5083
  } else {
5032
5084
  getVaporInterface(parentComponent, n2).update(
5033
5085
  n1,
@@ -5090,6 +5142,7 @@ function baseCreateRenderer(options, createHydrationFns) {
5090
5142
  if (!initialVNode.el) {
5091
5143
  const placeholder = instance.subTree = createVNode(Comment);
5092
5144
  processCommentNode(null, placeholder, container, anchor);
5145
+ initialVNode.placeholder = placeholder.el;
5093
5146
  }
5094
5147
  } else {
5095
5148
  setupRenderEffect(
@@ -5598,7 +5651,11 @@ function baseCreateRenderer(options, createHydrationFns) {
5598
5651
  for (i = toBePatched - 1; i >= 0; i--) {
5599
5652
  const nextIndex = s2 + i;
5600
5653
  const nextChild = c2[nextIndex];
5601
- const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;
5654
+ const anchorVNode = c2[nextIndex + 1];
5655
+ const anchor = nextIndex + 1 < l2 ? (
5656
+ // #13559, fallback to el placeholder for unresolved async component
5657
+ anchorVNode.el || anchorVNode.placeholder
5658
+ ) : parentAnchor;
5602
5659
  if (newIndexToOldIndexMap[i] === 0) {
5603
5660
  patch(
5604
5661
  null,
@@ -5678,12 +5735,12 @@ function baseCreateRenderer(options, createHydrationFns) {
5678
5735
  const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition;
5679
5736
  if (needTransition2) {
5680
5737
  if (moveType === 0) {
5681
- transition.beforeEnter(el);
5682
- hostInsert(el, container, anchor);
5683
- queuePostRenderEffect(
5684
- () => transition.enter(el),
5685
- void 0,
5686
- parentSuspense
5738
+ performTransitionEnter(
5739
+ el,
5740
+ transition,
5741
+ () => hostInsert(el, container, anchor),
5742
+ parentSuspense,
5743
+ true
5687
5744
  );
5688
5745
  } else {
5689
5746
  const { leave, delayLeave, afterLeave } = transition;
@@ -5695,6 +5752,12 @@ function baseCreateRenderer(options, createHydrationFns) {
5695
5752
  }
5696
5753
  };
5697
5754
  const performLeave = () => {
5755
+ if (el._isLeaving) {
5756
+ el[leaveCbKey](
5757
+ true
5758
+ /* cancelled */
5759
+ );
5760
+ }
5698
5761
  leave(el, () => {
5699
5762
  remove2();
5700
5763
  afterLeave && afterLeave();
@@ -5734,7 +5797,14 @@ function baseCreateRenderer(options, createHydrationFns) {
5734
5797
  parentComponent.renderCache[cacheIndex] = void 0;
5735
5798
  }
5736
5799
  if (shapeFlag & 256) {
5737
- parentComponent.ctx.deactivate(vnode);
5800
+ if (vnode.type.__vapor) {
5801
+ getVaporInterface(parentComponent, vnode).deactivate(
5802
+ vnode,
5803
+ parentComponent.ctx.getStorageContainer()
5804
+ );
5805
+ } else {
5806
+ parentComponent.ctx.deactivate(vnode);
5807
+ }
5738
5808
  return;
5739
5809
  }
5740
5810
  const shouldInvokeDirs = shapeFlag & 1 && dirs;
@@ -5822,22 +5892,15 @@ function baseCreateRenderer(options, createHydrationFns) {
5822
5892
  removeStaticNode(vnode);
5823
5893
  return;
5824
5894
  }
5825
- const performRemove = () => {
5826
- hostRemove(el);
5827
- if (transition && !transition.persisted && transition.afterLeave) {
5828
- transition.afterLeave();
5829
- }
5830
- };
5831
- if (vnode.shapeFlag & 1 && transition && !transition.persisted) {
5832
- const { leave, delayLeave } = transition;
5833
- const performLeave = () => leave(el, performRemove);
5834
- if (delayLeave) {
5835
- delayLeave(vnode.el, performRemove, performLeave);
5836
- } else {
5837
- performLeave();
5838
- }
5895
+ if (transition) {
5896
+ performTransitionLeave(
5897
+ el,
5898
+ transition,
5899
+ () => hostRemove(el),
5900
+ !!(vnode.shapeFlag & 1)
5901
+ );
5839
5902
  } else {
5840
- performRemove();
5903
+ hostRemove(el);
5841
5904
  }
5842
5905
  };
5843
5906
  const removeFragment = (cur, end) => {
@@ -5853,27 +5916,12 @@ function baseCreateRenderer(options, createHydrationFns) {
5853
5916
  if (instance.type.__hmrId) {
5854
5917
  unregisterHMR(instance);
5855
5918
  }
5856
- const {
5857
- bum,
5858
- scope,
5859
- effect,
5860
- subTree,
5861
- um,
5862
- m,
5863
- a,
5864
- parent,
5865
- slots: { __: slotCacheKeys }
5866
- } = instance;
5919
+ const { bum, scope, effect, subTree, um, m, a } = instance;
5867
5920
  invalidateMount(m);
5868
5921
  invalidateMount(a);
5869
5922
  if (bum) {
5870
5923
  invokeArrayFns(bum);
5871
5924
  }
5872
- if (parent && isArray(slotCacheKeys)) {
5873
- slotCacheKeys.forEach((v) => {
5874
- parent.renderCache[v] = void 0;
5875
- });
5876
- }
5877
5925
  scope.stop();
5878
5926
  if (effect) {
5879
5927
  effect.stop();
@@ -5887,12 +5935,6 @@ function baseCreateRenderer(options, createHydrationFns) {
5887
5935
  void 0,
5888
5936
  parentSuspense
5889
5937
  );
5890
- if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) {
5891
- parentSuspense.deps--;
5892
- if (parentSuspense.deps === 0) {
5893
- parentSuspense.resolve();
5894
- }
5895
- }
5896
5938
  {
5897
5939
  devtoolsComponentRemoved(instance);
5898
5940
  }
@@ -5905,7 +5947,7 @@ function baseCreateRenderer(options, createHydrationFns) {
5905
5947
  const getNextHostNode = (vnode) => {
5906
5948
  if (vnode.shapeFlag & 6) {
5907
5949
  if (vnode.type.__vapor) {
5908
- return hostNextSibling(vnode.component.block);
5950
+ return hostNextSibling(vnode.anchor);
5909
5951
  }
5910
5952
  return getNextHostNode(vnode.component.subTree);
5911
5953
  }
@@ -5949,6 +5991,7 @@ function baseCreateRenderer(options, createHydrationFns) {
5949
5991
  o: options
5950
5992
  };
5951
5993
  let hydrate;
5994
+ let hydrateNode;
5952
5995
  const mountApp = (app, container, isHydrate, namespace) => {
5953
5996
  const vnode = app._ceVNode || createVNode(app._component, app._props);
5954
5997
  vnode.appContext = app._context;
@@ -5975,6 +6018,7 @@ function baseCreateRenderer(options, createHydrationFns) {
5975
6018
  return {
5976
6019
  render,
5977
6020
  hydrate,
6021
+ hydrateNode,
5978
6022
  internals,
5979
6023
  createApp: createAppAPI(
5980
6024
  mountApp,
@@ -6014,7 +6058,8 @@ function traverseStaticChildren(n1, n2, shallow = false) {
6014
6058
  if (!shallow && c2.patchFlag !== -2)
6015
6059
  traverseStaticChildren(c1, c2);
6016
6060
  }
6017
- if (c2.type === Text) {
6061
+ if (c2.type === Text && // avoid cached text nodes retaining detached dom nodes
6062
+ c2.patchFlag !== -1) {
6018
6063
  c2.el = c1.el;
6019
6064
  }
6020
6065
  if (c2.type === Comment && !c2.el) {
@@ -6027,7 +6072,7 @@ function traverseStaticChildren(n1, n2, shallow = false) {
6027
6072
  }
6028
6073
  }
6029
6074
  function locateNonHydratedAsyncRoot(instance) {
6030
- const subComponent = instance.subTree.component;
6075
+ const subComponent = instance.subTree && instance.subTree.component;
6031
6076
  if (subComponent) {
6032
6077
  if (subComponent.asyncDep && !subComponent.asyncResolved) {
6033
6078
  return subComponent;
@@ -6042,6 +6087,34 @@ function invalidateMount(hooks) {
6042
6087
  hooks[i].flags |= 4;
6043
6088
  }
6044
6089
  }
6090
+ function performTransitionEnter(el, transition, insert, parentSuspense, force = false) {
6091
+ if (force || needTransition(parentSuspense, transition)) {
6092
+ transition.beforeEnter(el);
6093
+ insert();
6094
+ queuePostRenderEffect(() => transition.enter(el), void 0, parentSuspense);
6095
+ } else {
6096
+ insert();
6097
+ }
6098
+ }
6099
+ function performTransitionLeave(el, transition, remove, isElement = true) {
6100
+ const performRemove = () => {
6101
+ remove();
6102
+ if (transition && !transition.persisted && transition.afterLeave) {
6103
+ transition.afterLeave();
6104
+ }
6105
+ };
6106
+ if (isElement && transition && !transition.persisted) {
6107
+ const { leave, delayLeave } = transition;
6108
+ const performLeave = () => leave(el, performRemove);
6109
+ if (delayLeave) {
6110
+ delayLeave(el, performRemove, performLeave);
6111
+ } else {
6112
+ performLeave();
6113
+ }
6114
+ } else {
6115
+ performRemove();
6116
+ }
6117
+ }
6045
6118
  function getVaporInterface(instance, vnode) {
6046
6119
  const ctx = instance ? instance.appContext : vnode.appContext;
6047
6120
  const res = ctx && ctx.vapor;
@@ -6056,6 +6129,32 @@ app.use(vaporInteropPlugin)
6056
6129
  }
6057
6130
  return res;
6058
6131
  }
6132
+ function getInheritedScopeIds(vnode, parentComponent) {
6133
+ const inheritedScopeIds = [];
6134
+ let currentParent = parentComponent;
6135
+ let currentVNode = vnode;
6136
+ while (currentParent) {
6137
+ let subTree = currentParent.subTree;
6138
+ if (!subTree) break;
6139
+ if (subTree.patchFlag > 0 && subTree.patchFlag & 2048) {
6140
+ subTree = filterSingleRoot(subTree.children) || subTree;
6141
+ }
6142
+ if (currentVNode === subTree || isSuspense(subTree.type) && (subTree.ssContent === currentVNode || subTree.ssFallback === currentVNode)) {
6143
+ const parentVNode = currentParent.vnode;
6144
+ if (parentVNode.scopeId) {
6145
+ inheritedScopeIds.push(parentVNode.scopeId);
6146
+ }
6147
+ if (parentVNode.slotScopeIds) {
6148
+ inheritedScopeIds.push(...parentVNode.slotScopeIds);
6149
+ }
6150
+ currentVNode = parentVNode;
6151
+ currentParent = currentParent.parent;
6152
+ } else {
6153
+ break;
6154
+ }
6155
+ }
6156
+ return inheritedScopeIds;
6157
+ }
6059
6158
 
6060
6159
  const ssrContextKey = Symbol.for("v-scx");
6061
6160
  const useSSRContext = () => {
@@ -6299,8 +6398,9 @@ function baseEmit(instance, props, getter, event, ...rawArgs) {
6299
6398
  function defaultPropGetter(props, key) {
6300
6399
  return props[key];
6301
6400
  }
6401
+ const mixinEmitsCache = /* @__PURE__ */ new WeakMap();
6302
6402
  function normalizeEmitsOptions(comp, appContext, asMixin = false) {
6303
- const cache = appContext.emitsCache;
6403
+ const cache = asMixin ? mixinEmitsCache : appContext.emitsCache;
6304
6404
  const cached = cache.get(comp);
6305
6405
  if (cached !== void 0) {
6306
6406
  return cached;
@@ -6685,15 +6785,11 @@ const createVNodeWithArgsTransform = (...args) => {
6685
6785
  );
6686
6786
  };
6687
6787
  const normalizeKey = ({ key }) => key != null ? key : null;
6688
- const normalizeRef = ({
6689
- ref,
6690
- ref_key,
6691
- ref_for
6692
- }) => {
6788
+ const normalizeRef = ({ ref, ref_key, ref_for }, i = currentRenderingInstance) => {
6693
6789
  if (typeof ref === "number") {
6694
6790
  ref = "" + ref;
6695
6791
  }
6696
- return ref != null ? isString(ref) || isRef(ref) || isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null;
6792
+ return ref != null ? isString(ref) || isRef(ref) || isFunction(ref) ? { i, r: ref, k: ref_key, f: !!ref_for } : ref : null;
6697
6793
  };
6698
6794
  function createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) {
6699
6795
  const vnode = {
@@ -6859,6 +6955,7 @@ function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false
6859
6955
  suspense: vnode.suspense,
6860
6956
  ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),
6861
6957
  ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),
6958
+ placeholder: vnode.placeholder,
6862
6959
  el: vnode.el,
6863
6960
  anchor: vnode.anchor,
6864
6961
  ctx: vnode.ctx,
@@ -6979,7 +7076,6 @@ function invokeVNodeHook(hook, instance, vnode, prevVNode = null) {
6979
7076
 
6980
7077
  let currentInstance = null;
6981
7078
  const getCurrentGenericInstance = () => currentInstance || currentRenderingInstance;
6982
- const getCurrentInstance = () => currentInstance && !currentInstance.vapor ? currentInstance : currentRenderingInstance;
6983
7079
  let isInSSRComponentSetup = false;
6984
7080
  let setInSSRSetupState;
6985
7081
  let simpleSetCurrentInstance;
@@ -7340,7 +7436,7 @@ function getComponentPublicInstance(instance) {
7340
7436
  return instance.proxy;
7341
7437
  }
7342
7438
  }
7343
- const classifyRE = /(?:^|[-_])(\w)/g;
7439
+ const classifyRE = /(?:^|[-_])\w/g;
7344
7440
  const classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, "");
7345
7441
  function getComponentName(Component, includeInferred = true) {
7346
7442
  return isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;
@@ -7375,7 +7471,7 @@ const computed = (getterOrOptions, debugOptions) => {
7375
7471
  return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);
7376
7472
  };
7377
7473
 
7378
- const version = "3.6.0-alpha.1";
7474
+ const version = "3.6.0-alpha.3";
7379
7475
  const warn = warn$1 ;
7380
7476
  const _ssrUtils = {
7381
7477
  createComponentInstance: createComponentInstance$1,
@@ -7493,7 +7589,7 @@ const vShowHidden = Symbol("_vsh");
7493
7589
 
7494
7590
  const CSS_VAR_TEXT = Symbol("CSS_VAR_TEXT" );
7495
7591
 
7496
- const displayRE = /(^|;)\s*display\s*:/;
7592
+ const displayRE = /(?:^|;)\s*display\s*:/;
7497
7593
  function patchStyle(el, prev, next) {
7498
7594
  const style = el.style;
7499
7595
  const isCssString = isString(next);
@@ -7830,7 +7926,7 @@ let renderer;
7830
7926
  function ensureRenderer() {
7831
7927
  return renderer || (renderer = createRenderer(rendererOptions));
7832
7928
  }
7833
- const createApp = (...args) => {
7929
+ const createApp = ((...args) => {
7834
7930
  const app = ensureRenderer().createApp(...args);
7835
7931
  {
7836
7932
  injectNativeTagCheck(app);
@@ -7855,7 +7951,7 @@ const createApp = (...args) => {
7855
7951
  return proxy;
7856
7952
  };
7857
7953
  return app;
7858
- };
7954
+ });
7859
7955
  function resolveRootNamespace(container) {
7860
7956
  if (container instanceof SVGElement) {
7861
7957
  return "svg";
@@ -8042,6 +8138,8 @@ function ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push,
8042
8138
  );
8043
8139
  } else if (fallbackRenderFn) {
8044
8140
  fallbackRenderFn();
8141
+ } else if (transition) {
8142
+ push(`<!---->`);
8045
8143
  }
8046
8144
  } else {
8047
8145
  let isEmptySlot = true;
@@ -8066,13 +8164,19 @@ function ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push,
8066
8164
  start++;
8067
8165
  end--;
8068
8166
  }
8069
- for (let i = start; i < end; i++) {
8070
- push(slotBuffer[i]);
8167
+ if (start < end) {
8168
+ for (let i = start; i < end; i++) {
8169
+ push(slotBuffer[i]);
8170
+ }
8171
+ } else if (transition) {
8172
+ push(`<!---->`);
8071
8173
  }
8072
8174
  }
8073
8175
  }
8074
8176
  } else if (fallbackRenderFn) {
8075
8177
  fallbackRenderFn();
8178
+ } else if (transition) {
8179
+ push(`<!---->`);
8076
8180
  }
8077
8181
  }
8078
8182
  const commentTestRE = /^<!--[\s\S]*-->$/;