@vue/server-renderer 3.6.0-alpha.2 → 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.2
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,17 +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.version === globalVersion && prevSub.sub === sub) {
491
+ return;
492
+ }
490
493
  const newLink = sub.depsTail = dep.subsTail = {
494
+ version: globalVersion,
491
495
  dep,
492
496
  sub,
493
497
  prevDep,
@@ -593,6 +597,7 @@ function propagate(link2) {
593
597
  } while (true);
594
598
  }
595
599
  function startTracking(sub) {
600
+ ++globalVersion;
596
601
  sub.depsTail = void 0;
597
602
  sub.flags = sub.flags & -57 | 4 /* RecursedCheck */;
598
603
  return setActiveSub(sub);
@@ -693,18 +698,12 @@ function shallowPropagate(link2) {
693
698
  } while (link2 !== void 0);
694
699
  }
695
700
  function isValidLink(checkLink, sub) {
696
- const depsTail = sub.depsTail;
697
- if (depsTail !== void 0) {
698
- let link2 = sub.deps;
699
- do {
700
- if (link2 === checkLink) {
701
- return true;
702
- }
703
- if (link2 === depsTail) {
704
- break;
705
- }
706
- link2 = link2.nextDep;
707
- } 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;
708
707
  }
709
708
  return false;
710
709
  }
@@ -940,7 +939,7 @@ const arrayInstrumentations = {
940
939
  join(separator) {
941
940
  return reactiveReadArray(this).join(separator);
942
941
  },
943
- // keys() iterator only reads `length`, no optimisation required
942
+ // keys() iterator only reads `length`, no optimization required
944
943
  lastIndexOf(...args) {
945
944
  return searchProxy(this, "lastIndexOf", args);
946
945
  },
@@ -992,7 +991,7 @@ function iterator(self, method, wrapValue) {
992
991
  iter._next = iter.next;
993
992
  iter.next = () => {
994
993
  const result = iter._next();
995
- if (result.value) {
994
+ if (!result.done) {
996
995
  result.value = wrapValue(result.value);
997
996
  }
998
997
  return result;
@@ -1123,7 +1122,8 @@ class BaseReactiveHandler {
1123
1122
  return res;
1124
1123
  }
1125
1124
  if (isRef(res)) {
1126
- return targetIsArray && isIntegerKey(key) ? res : res.value;
1125
+ const value = targetIsArray && isIntegerKey(key) ? res : res.value;
1126
+ return isReadonly2 && isObject(value) ? readonly(value) : value;
1127
1127
  }
1128
1128
  if (isObject(res)) {
1129
1129
  return isReadonly2 ? readonly(res) : reactive(res);
@@ -1145,7 +1145,13 @@ class MutableReactiveHandler extends BaseReactiveHandler {
1145
1145
  }
1146
1146
  if (!isArray(target) && isRef(oldValue) && !isRef(value)) {
1147
1147
  if (isOldValueReadonly) {
1148
- 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;
1149
1155
  } else {
1150
1156
  oldValue.value = value;
1151
1157
  return true;
@@ -1290,7 +1296,7 @@ function createInstrumentations(readonly, shallow) {
1290
1296
  get size() {
1291
1297
  const target = this["__v_raw"];
1292
1298
  !readonly && track(toRaw(target), "iterate", ITERATE_KEY);
1293
- return Reflect.get(target, "size", target);
1299
+ return target.size;
1294
1300
  },
1295
1301
  has(key) {
1296
1302
  const target = this["__v_raw"];
@@ -2038,11 +2044,11 @@ function traverse(value, depth = Infinity, seen) {
2038
2044
  if (depth <= 0 || !isObject(value) || value["__v_skip"]) {
2039
2045
  return value;
2040
2046
  }
2041
- seen = seen || /* @__PURE__ */ new Set();
2042
- if (seen.has(value)) {
2047
+ seen = seen || /* @__PURE__ */ new Map();
2048
+ if ((seen.get(value) || 0) >= depth) {
2043
2049
  return value;
2044
2050
  }
2045
- seen.add(value);
2051
+ seen.set(value, depth);
2046
2052
  depth--;
2047
2053
  if (isRef(value)) {
2048
2054
  traverse(value.value, depth, seen);
@@ -2549,8 +2555,10 @@ function rerender(id, newRender) {
2549
2555
  instance.hmrRerender();
2550
2556
  } else {
2551
2557
  const i = instance;
2552
- i.renderCache = [];
2553
- i.effect.run();
2558
+ if (!(i.effect.flags & 1024)) {
2559
+ i.renderCache = [];
2560
+ i.effect.run();
2561
+ }
2554
2562
  }
2555
2563
  nextTick(() => {
2556
2564
  isHmrUpdating = false;
@@ -2592,7 +2600,10 @@ function reload(id, newComp) {
2592
2600
  if (parent.vapor) {
2593
2601
  parent.hmrRerender();
2594
2602
  } else {
2595
- parent.effect.run();
2603
+ if (!(parent.effect.flags & 1024)) {
2604
+ parent.renderCache = [];
2605
+ parent.effect.run();
2606
+ }
2596
2607
  }
2597
2608
  nextTick(() => {
2598
2609
  isHmrUpdating = false;
@@ -2702,7 +2713,6 @@ const devtoolsComponentRemoved = (component) => {
2702
2713
  _devtoolsComponentRemoved(component);
2703
2714
  }
2704
2715
  };
2705
- /*! #__NO_SIDE_EFFECTS__ */
2706
2716
  // @__NO_SIDE_EFFECTS__
2707
2717
  function createDevtoolsComponentHook(hook) {
2708
2718
  return (component) => {
@@ -2800,10 +2810,18 @@ function invokeDirectiveHook(vnode, prevVNode, instance, name) {
2800
2810
  const TeleportEndKey = Symbol("_vte");
2801
2811
  const isTeleport = (type) => type.__isTeleport;
2802
2812
 
2813
+ const leaveCbKey = Symbol("_leaveCb");
2803
2814
  function setTransitionHooks(vnode, hooks) {
2804
2815
  if (vnode.shapeFlag & 6 && vnode.component) {
2805
- vnode.transition = hooks;
2806
- 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
+ }
2807
2825
  } else if (vnode.shapeFlag & 128) {
2808
2826
  vnode.ssContent.transition = hooks.clone(vnode.ssContent);
2809
2827
  vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);
@@ -2818,6 +2836,7 @@ function markAsyncBoundary(instance) {
2818
2836
 
2819
2837
  const knownTemplateRefs = /* @__PURE__ */ new WeakSet();
2820
2838
 
2839
+ const pendingSetRefMap = /* @__PURE__ */ new WeakMap();
2821
2840
  function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
2822
2841
  if (isArray(rawRef)) {
2823
2842
  rawRef.forEach(
@@ -2849,28 +2868,23 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
2849
2868
  const oldRef = oldRawRef && oldRawRef.r;
2850
2869
  const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;
2851
2870
  const setupState = owner.setupState;
2852
- const rawSetupState = toRaw(setupState);
2853
- const canSetSetupRef = setupState === EMPTY_OBJ ? () => false : (key) => {
2854
- {
2855
- if (hasOwn(rawSetupState, key) && !isRef(rawSetupState[key])) {
2856
- warn$1(
2857
- `Template ref "${key}" used on a non-ref value. It will not work in the production build.`
2858
- );
2859
- }
2860
- if (knownTemplateRefs.has(rawSetupState[key])) {
2861
- return false;
2862
- }
2863
- }
2864
- return hasOwn(rawSetupState, key);
2871
+ const canSetSetupRef = createCanSetSetupRefChecker(setupState);
2872
+ const canSetRef = (ref2) => {
2873
+ return !knownTemplateRefs.has(ref2);
2865
2874
  };
2866
2875
  if (oldRef != null && oldRef !== ref) {
2876
+ invalidatePendingSetRef(oldRawRef);
2867
2877
  if (isString(oldRef)) {
2868
2878
  refs[oldRef] = null;
2869
2879
  if (canSetSetupRef(oldRef)) {
2870
2880
  setupState[oldRef] = null;
2871
2881
  }
2872
2882
  } else if (isRef(oldRef)) {
2873
- oldRef.value = null;
2883
+ if (canSetRef(oldRef)) {
2884
+ oldRef.value = null;
2885
+ }
2886
+ const oldRawRefAtom = oldRawRef;
2887
+ if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;
2874
2888
  }
2875
2889
  }
2876
2890
  if (isFunction(ref)) {
@@ -2881,7 +2895,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
2881
2895
  if (_isString || _isRef) {
2882
2896
  const doSet = () => {
2883
2897
  if (rawRef.f) {
2884
- 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];
2885
2899
  if (isUnmount) {
2886
2900
  isArray(existing) && remove(existing, refValue);
2887
2901
  } else {
@@ -2892,8 +2906,11 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
2892
2906
  setupState[ref] = refs[ref];
2893
2907
  }
2894
2908
  } else {
2895
- ref.value = [refValue];
2896
- 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;
2897
2914
  }
2898
2915
  } else if (!existing.includes(refValue)) {
2899
2916
  existing.push(refValue);
@@ -2905,15 +2922,23 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
2905
2922
  setupState[ref] = value;
2906
2923
  }
2907
2924
  } else if (_isRef) {
2908
- ref.value = value;
2925
+ if (canSetRef(ref)) {
2926
+ ref.value = value;
2927
+ }
2909
2928
  if (rawRef.k) refs[rawRef.k] = value;
2910
2929
  } else {
2911
2930
  warn$1("Invalid template ref type:", ref, `(${typeof ref})`);
2912
2931
  }
2913
2932
  };
2914
2933
  if (value) {
2915
- queuePostRenderEffect(doSet, -1, parentSuspense);
2934
+ const job = () => {
2935
+ doSet();
2936
+ pendingSetRefMap.delete(rawRef);
2937
+ };
2938
+ pendingSetRefMap.set(rawRef, job);
2939
+ queuePostRenderEffect(job, -1, parentSuspense);
2916
2940
  } else {
2941
+ invalidatePendingSetRef(rawRef);
2917
2942
  doSet();
2918
2943
  }
2919
2944
  } else {
@@ -2921,6 +2946,29 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
2921
2946
  }
2922
2947
  }
2923
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
+ }
2924
2972
 
2925
2973
  const isAsyncWrapper = (i) => !!i.type.__asyncLoader;
2926
2974
 
@@ -2931,7 +2979,7 @@ function onActivated(hook, target) {
2931
2979
  function onDeactivated(hook, target) {
2932
2980
  registerKeepAliveHook(hook, "da", target);
2933
2981
  }
2934
- function registerKeepAliveHook(hook, type, target = getCurrentInstance()) {
2982
+ function registerKeepAliveHook(hook, type, target = getCurrentGenericInstance()) {
2935
2983
  const wrappedHook = hook.__wdc || (hook.__wdc = () => {
2936
2984
  let current = target;
2937
2985
  while (current) {
@@ -2945,8 +2993,9 @@ function registerKeepAliveHook(hook, type, target = getCurrentInstance()) {
2945
2993
  injectHook(type, wrappedHook, target);
2946
2994
  if (target) {
2947
2995
  let current = target.parent;
2948
- while (current && current.parent && current.parent.vnode) {
2949
- if (isKeepAlive(current.parent.vnode)) {
2996
+ while (current && current.parent) {
2997
+ let parent = current.parent;
2998
+ if (isKeepAlive(parent.vapor ? parent : parent.vnode)) {
2950
2999
  injectToKeepAliveRoot(wrappedHook, type, target, current);
2951
3000
  }
2952
3001
  current = current.parent;
@@ -3177,10 +3226,10 @@ const PublicInstanceProxyHandlers = {
3177
3226
  return true;
3178
3227
  },
3179
3228
  has({
3180
- _: { data, setupState, accessCache, ctx, appContext, propsOptions }
3229
+ _: { data, setupState, accessCache, ctx, appContext, propsOptions, type }
3181
3230
  }, key) {
3182
- let normalizedProps;
3183
- 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]);
3184
3233
  },
3185
3234
  defineProperty(target, key, descriptor) {
3186
3235
  if (descriptor.get != null) {
@@ -3447,7 +3496,8 @@ function applyOptions(instance) {
3447
3496
  expose.forEach((key) => {
3448
3497
  Object.defineProperty(exposed, key, {
3449
3498
  get: () => publicThis[key],
3450
- set: (val) => publicThis[key] = val
3499
+ set: (val) => publicThis[key] = val,
3500
+ enumerable: true
3451
3501
  });
3452
3502
  });
3453
3503
  } else if (!instance.exposed) {
@@ -4317,7 +4367,7 @@ function isBoolean(...args) {
4317
4367
  return args.some((elem) => elem.toLowerCase() === "boolean");
4318
4368
  }
4319
4369
 
4320
- const isInternalKey = (key) => key[0] === "_" || key === "$stable";
4370
+ const isInternalKey = (key) => key === "_" || key === "_ctx" || key === "$stable";
4321
4371
  const normalizeSlotValue = (value) => isArray(value) ? value.map(normalizeVNode$1) : [normalizeVNode$1(value)];
4322
4372
  const normalizeSlot = (key, rawSlot, ctx) => {
4323
4373
  if (rawSlot._n) {
@@ -4371,8 +4421,6 @@ const assignSlots = (slots, children, optimized) => {
4371
4421
  const initSlots = (instance, children, optimized) => {
4372
4422
  const slots = instance.slots = createInternalObject();
4373
4423
  if (instance.vnode.shapeFlag & 32) {
4374
- const cacheIndexes = children.__;
4375
- if (cacheIndexes) def(slots, "__", cacheIndexes, true);
4376
4424
  const type = children._;
4377
4425
  if (type) {
4378
4426
  assignSlots(slots, children, optimized);
@@ -4436,12 +4484,10 @@ function endMeasure(instance, type) {
4436
4484
  if (instance.appContext.config.performance && isSupported()) {
4437
4485
  const startTag = `vue-${type}-${instance.uid}`;
4438
4486
  const endTag = startTag + `:end`;
4487
+ const measureName = `<${formatComponentName(instance, instance.type)}> ${type}`;
4439
4488
  perf.mark(endTag);
4440
- perf.measure(
4441
- `<${formatComponentName(instance, instance.type)}> ${type}`,
4442
- startTag,
4443
- endTag
4444
- );
4489
+ perf.measure(measureName, startTag, endTag);
4490
+ perf.clearMeasures(measureName);
4445
4491
  perf.clearMarks(startTag);
4446
4492
  perf.clearMarks(endTag);
4447
4493
  }
@@ -4677,15 +4723,25 @@ function baseCreateRenderer(options, createHydrationFns) {
4677
4723
  optimized
4678
4724
  );
4679
4725
  } else {
4680
- patchElement(
4681
- n1,
4682
- n2,
4683
- parentComponent,
4684
- parentSuspense,
4685
- namespace,
4686
- slotScopeIds,
4687
- optimized
4688
- );
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
+ }
4689
4745
  }
4690
4746
  };
4691
4747
  const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
@@ -4736,16 +4792,20 @@ function baseCreateRenderer(options, createHydrationFns) {
4736
4792
  if (dirs) {
4737
4793
  invokeDirectiveHook(vnode, null, parentComponent, "beforeMount");
4738
4794
  }
4739
- const needCallTransitionHooks = needTransition(parentSuspense, transition);
4740
- if (needCallTransitionHooks) {
4741
- 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);
4742
4804
  }
4743
- hostInsert(el, container, anchor);
4744
- if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) {
4805
+ if ((vnodeHook = props && props.onVnodeMounted) || dirs) {
4745
4806
  queuePostRenderEffect(
4746
4807
  () => {
4747
4808
  vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);
4748
- needCallTransitionHooks && transition.enter(el);
4749
4809
  dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted");
4750
4810
  },
4751
4811
  void 0,
@@ -4762,21 +4822,9 @@ function baseCreateRenderer(options, createHydrationFns) {
4762
4822
  hostSetScopeId(el, slotScopeIds[i]);
4763
4823
  }
4764
4824
  }
4765
- let subTree = parentComponent && parentComponent.subTree;
4766
- if (subTree) {
4767
- if (subTree.patchFlag > 0 && subTree.patchFlag & 2048) {
4768
- subTree = filterSingleRoot(subTree.children) || subTree;
4769
- }
4770
- if (vnode === subTree || isSuspense(subTree.type) && (subTree.ssContent === vnode || subTree.ssFallback === vnode)) {
4771
- const parentVNode = parentComponent.vnode;
4772
- setScopeId(
4773
- el,
4774
- parentVNode,
4775
- parentVNode.scopeId,
4776
- parentVNode.slotScopeIds,
4777
- parentComponent.parent
4778
- );
4779
- }
4825
+ const inheritedScopeIds = getInheritedScopeIds(vnode, parentComponent);
4826
+ for (let i = 0; i < inheritedScopeIds.length; i++) {
4827
+ hostSetScopeId(el, inheritedScopeIds[i]);
4780
4828
  }
4781
4829
  };
4782
4830
  const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => {
@@ -5017,12 +5065,21 @@ function baseCreateRenderer(options, createHydrationFns) {
5017
5065
  n2.slotScopeIds = slotScopeIds;
5018
5066
  if (n2.type.__vapor) {
5019
5067
  if (n1 == null) {
5020
- getVaporInterface(parentComponent, n2).mount(
5021
- n2,
5022
- container,
5023
- anchor,
5024
- parentComponent
5025
- );
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
+ }
5026
5083
  } else {
5027
5084
  getVaporInterface(parentComponent, n2).update(
5028
5085
  n1,
@@ -5085,6 +5142,7 @@ function baseCreateRenderer(options, createHydrationFns) {
5085
5142
  if (!initialVNode.el) {
5086
5143
  const placeholder = instance.subTree = createVNode(Comment);
5087
5144
  processCommentNode(null, placeholder, container, anchor);
5145
+ initialVNode.placeholder = placeholder.el;
5088
5146
  }
5089
5147
  } else {
5090
5148
  setupRenderEffect(
@@ -5593,7 +5651,11 @@ function baseCreateRenderer(options, createHydrationFns) {
5593
5651
  for (i = toBePatched - 1; i >= 0; i--) {
5594
5652
  const nextIndex = s2 + i;
5595
5653
  const nextChild = c2[nextIndex];
5596
- 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;
5597
5659
  if (newIndexToOldIndexMap[i] === 0) {
5598
5660
  patch(
5599
5661
  null,
@@ -5673,12 +5735,12 @@ function baseCreateRenderer(options, createHydrationFns) {
5673
5735
  const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition;
5674
5736
  if (needTransition2) {
5675
5737
  if (moveType === 0) {
5676
- transition.beforeEnter(el);
5677
- hostInsert(el, container, anchor);
5678
- queuePostRenderEffect(
5679
- () => transition.enter(el),
5680
- void 0,
5681
- parentSuspense
5738
+ performTransitionEnter(
5739
+ el,
5740
+ transition,
5741
+ () => hostInsert(el, container, anchor),
5742
+ parentSuspense,
5743
+ true
5682
5744
  );
5683
5745
  } else {
5684
5746
  const { leave, delayLeave, afterLeave } = transition;
@@ -5690,6 +5752,12 @@ function baseCreateRenderer(options, createHydrationFns) {
5690
5752
  }
5691
5753
  };
5692
5754
  const performLeave = () => {
5755
+ if (el._isLeaving) {
5756
+ el[leaveCbKey](
5757
+ true
5758
+ /* cancelled */
5759
+ );
5760
+ }
5693
5761
  leave(el, () => {
5694
5762
  remove2();
5695
5763
  afterLeave && afterLeave();
@@ -5729,7 +5797,14 @@ function baseCreateRenderer(options, createHydrationFns) {
5729
5797
  parentComponent.renderCache[cacheIndex] = void 0;
5730
5798
  }
5731
5799
  if (shapeFlag & 256) {
5732
- 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
+ }
5733
5808
  return;
5734
5809
  }
5735
5810
  const shouldInvokeDirs = shapeFlag & 1 && dirs;
@@ -5817,22 +5892,15 @@ function baseCreateRenderer(options, createHydrationFns) {
5817
5892
  removeStaticNode(vnode);
5818
5893
  return;
5819
5894
  }
5820
- const performRemove = () => {
5821
- hostRemove(el);
5822
- if (transition && !transition.persisted && transition.afterLeave) {
5823
- transition.afterLeave();
5824
- }
5825
- };
5826
- if (vnode.shapeFlag & 1 && transition && !transition.persisted) {
5827
- const { leave, delayLeave } = transition;
5828
- const performLeave = () => leave(el, performRemove);
5829
- if (delayLeave) {
5830
- delayLeave(vnode.el, performRemove, performLeave);
5831
- } else {
5832
- performLeave();
5833
- }
5895
+ if (transition) {
5896
+ performTransitionLeave(
5897
+ el,
5898
+ transition,
5899
+ () => hostRemove(el),
5900
+ !!(vnode.shapeFlag & 1)
5901
+ );
5834
5902
  } else {
5835
- performRemove();
5903
+ hostRemove(el);
5836
5904
  }
5837
5905
  };
5838
5906
  const removeFragment = (cur, end) => {
@@ -5848,27 +5916,12 @@ function baseCreateRenderer(options, createHydrationFns) {
5848
5916
  if (instance.type.__hmrId) {
5849
5917
  unregisterHMR(instance);
5850
5918
  }
5851
- const {
5852
- bum,
5853
- scope,
5854
- effect,
5855
- subTree,
5856
- um,
5857
- m,
5858
- a,
5859
- parent,
5860
- slots: { __: slotCacheKeys }
5861
- } = instance;
5919
+ const { bum, scope, effect, subTree, um, m, a } = instance;
5862
5920
  invalidateMount(m);
5863
5921
  invalidateMount(a);
5864
5922
  if (bum) {
5865
5923
  invokeArrayFns(bum);
5866
5924
  }
5867
- if (parent && isArray(slotCacheKeys)) {
5868
- slotCacheKeys.forEach((v) => {
5869
- parent.renderCache[v] = void 0;
5870
- });
5871
- }
5872
5925
  scope.stop();
5873
5926
  if (effect) {
5874
5927
  effect.stop();
@@ -5882,12 +5935,6 @@ function baseCreateRenderer(options, createHydrationFns) {
5882
5935
  void 0,
5883
5936
  parentSuspense
5884
5937
  );
5885
- if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) {
5886
- parentSuspense.deps--;
5887
- if (parentSuspense.deps === 0) {
5888
- parentSuspense.resolve();
5889
- }
5890
- }
5891
5938
  {
5892
5939
  devtoolsComponentRemoved(instance);
5893
5940
  }
@@ -5900,7 +5947,7 @@ function baseCreateRenderer(options, createHydrationFns) {
5900
5947
  const getNextHostNode = (vnode) => {
5901
5948
  if (vnode.shapeFlag & 6) {
5902
5949
  if (vnode.type.__vapor) {
5903
- return hostNextSibling(vnode.component.block);
5950
+ return hostNextSibling(vnode.anchor);
5904
5951
  }
5905
5952
  return getNextHostNode(vnode.component.subTree);
5906
5953
  }
@@ -5944,6 +5991,7 @@ function baseCreateRenderer(options, createHydrationFns) {
5944
5991
  o: options
5945
5992
  };
5946
5993
  let hydrate;
5994
+ let hydrateNode;
5947
5995
  const mountApp = (app, container, isHydrate, namespace) => {
5948
5996
  const vnode = app._ceVNode || createVNode(app._component, app._props);
5949
5997
  vnode.appContext = app._context;
@@ -5970,6 +6018,7 @@ function baseCreateRenderer(options, createHydrationFns) {
5970
6018
  return {
5971
6019
  render,
5972
6020
  hydrate,
6021
+ hydrateNode,
5973
6022
  internals,
5974
6023
  createApp: createAppAPI(
5975
6024
  mountApp,
@@ -6009,7 +6058,8 @@ function traverseStaticChildren(n1, n2, shallow = false) {
6009
6058
  if (!shallow && c2.patchFlag !== -2)
6010
6059
  traverseStaticChildren(c1, c2);
6011
6060
  }
6012
- if (c2.type === Text) {
6061
+ if (c2.type === Text && // avoid cached text nodes retaining detached dom nodes
6062
+ c2.patchFlag !== -1) {
6013
6063
  c2.el = c1.el;
6014
6064
  }
6015
6065
  if (c2.type === Comment && !c2.el) {
@@ -6022,7 +6072,7 @@ function traverseStaticChildren(n1, n2, shallow = false) {
6022
6072
  }
6023
6073
  }
6024
6074
  function locateNonHydratedAsyncRoot(instance) {
6025
- const subComponent = instance.vapor ? null : instance.subTree.component;
6075
+ const subComponent = instance.subTree && instance.subTree.component;
6026
6076
  if (subComponent) {
6027
6077
  if (subComponent.asyncDep && !subComponent.asyncResolved) {
6028
6078
  return subComponent;
@@ -6037,6 +6087,34 @@ function invalidateMount(hooks) {
6037
6087
  hooks[i].flags |= 4;
6038
6088
  }
6039
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
+ }
6040
6118
  function getVaporInterface(instance, vnode) {
6041
6119
  const ctx = instance ? instance.appContext : vnode.appContext;
6042
6120
  const res = ctx && ctx.vapor;
@@ -6051,6 +6129,32 @@ app.use(vaporInteropPlugin)
6051
6129
  }
6052
6130
  return res;
6053
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
+ }
6054
6158
 
6055
6159
  const ssrContextKey = Symbol.for("v-scx");
6056
6160
  const useSSRContext = () => {
@@ -6294,8 +6398,9 @@ function baseEmit(instance, props, getter, event, ...rawArgs) {
6294
6398
  function defaultPropGetter(props, key) {
6295
6399
  return props[key];
6296
6400
  }
6401
+ const mixinEmitsCache = /* @__PURE__ */ new WeakMap();
6297
6402
  function normalizeEmitsOptions(comp, appContext, asMixin = false) {
6298
- const cache = appContext.emitsCache;
6403
+ const cache = asMixin ? mixinEmitsCache : appContext.emitsCache;
6299
6404
  const cached = cache.get(comp);
6300
6405
  if (cached !== void 0) {
6301
6406
  return cached;
@@ -6680,15 +6785,11 @@ const createVNodeWithArgsTransform = (...args) => {
6680
6785
  );
6681
6786
  };
6682
6787
  const normalizeKey = ({ key }) => key != null ? key : null;
6683
- const normalizeRef = ({
6684
- ref,
6685
- ref_key,
6686
- ref_for
6687
- }) => {
6788
+ const normalizeRef = ({ ref, ref_key, ref_for }, i = currentRenderingInstance) => {
6688
6789
  if (typeof ref === "number") {
6689
6790
  ref = "" + ref;
6690
6791
  }
6691
- 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;
6692
6793
  };
6693
6794
  function createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) {
6694
6795
  const vnode = {
@@ -6854,6 +6955,7 @@ function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false
6854
6955
  suspense: vnode.suspense,
6855
6956
  ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),
6856
6957
  ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),
6958
+ placeholder: vnode.placeholder,
6857
6959
  el: vnode.el,
6858
6960
  anchor: vnode.anchor,
6859
6961
  ctx: vnode.ctx,
@@ -6974,7 +7076,6 @@ function invokeVNodeHook(hook, instance, vnode, prevVNode = null) {
6974
7076
 
6975
7077
  let currentInstance = null;
6976
7078
  const getCurrentGenericInstance = () => currentInstance || currentRenderingInstance;
6977
- const getCurrentInstance = () => currentInstance && !currentInstance.vapor ? currentInstance : currentRenderingInstance;
6978
7079
  let isInSSRComponentSetup = false;
6979
7080
  let setInSSRSetupState;
6980
7081
  let simpleSetCurrentInstance;
@@ -7335,7 +7436,7 @@ function getComponentPublicInstance(instance) {
7335
7436
  return instance.proxy;
7336
7437
  }
7337
7438
  }
7338
- const classifyRE = /(?:^|[-_])(\w)/g;
7439
+ const classifyRE = /(?:^|[-_])\w/g;
7339
7440
  const classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, "");
7340
7441
  function getComponentName(Component, includeInferred = true) {
7341
7442
  return isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;
@@ -7370,7 +7471,7 @@ const computed = (getterOrOptions, debugOptions) => {
7370
7471
  return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);
7371
7472
  };
7372
7473
 
7373
- const version = "3.6.0-alpha.2";
7474
+ const version = "3.6.0-alpha.3";
7374
7475
  const warn = warn$1 ;
7375
7476
  const _ssrUtils = {
7376
7477
  createComponentInstance: createComponentInstance$1,
@@ -7488,7 +7589,7 @@ const vShowHidden = Symbol("_vsh");
7488
7589
 
7489
7590
  const CSS_VAR_TEXT = Symbol("CSS_VAR_TEXT" );
7490
7591
 
7491
- const displayRE = /(^|;)\s*display\s*:/;
7592
+ const displayRE = /(?:^|;)\s*display\s*:/;
7492
7593
  function patchStyle(el, prev, next) {
7493
7594
  const style = el.style;
7494
7595
  const isCssString = isString(next);
@@ -7825,7 +7926,7 @@ let renderer;
7825
7926
  function ensureRenderer() {
7826
7927
  return renderer || (renderer = createRenderer(rendererOptions));
7827
7928
  }
7828
- const createApp = (...args) => {
7929
+ const createApp = ((...args) => {
7829
7930
  const app = ensureRenderer().createApp(...args);
7830
7931
  {
7831
7932
  injectNativeTagCheck(app);
@@ -7850,7 +7951,7 @@ const createApp = (...args) => {
7850
7951
  return proxy;
7851
7952
  };
7852
7953
  return app;
7853
- };
7954
+ });
7854
7955
  function resolveRootNamespace(container) {
7855
7956
  if (container instanceof SVGElement) {
7856
7957
  return "svg";
@@ -8037,6 +8138,8 @@ function ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push,
8037
8138
  );
8038
8139
  } else if (fallbackRenderFn) {
8039
8140
  fallbackRenderFn();
8141
+ } else if (transition) {
8142
+ push(`<!---->`);
8040
8143
  }
8041
8144
  } else {
8042
8145
  let isEmptySlot = true;
@@ -8061,13 +8164,19 @@ function ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push,
8061
8164
  start++;
8062
8165
  end--;
8063
8166
  }
8064
- for (let i = start; i < end; i++) {
8065
- 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(`<!---->`);
8066
8173
  }
8067
8174
  }
8068
8175
  }
8069
8176
  } else if (fallbackRenderFn) {
8070
8177
  fallbackRenderFn();
8178
+ } else if (transition) {
8179
+ push(`<!---->`);
8071
8180
  }
8072
8181
  }
8073
8182
  const commentTestRE = /^<!--[\s\S]*-->$/;