@vue/compat 3.6.0-rc.12 → 3.6.0-rc.14

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/compat v3.6.0-rc.12
2
+ * @vue/compat v3.6.0-rc.14
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -467,6 +467,21 @@ function getSequence(arr) {
467
467
  return result;
468
468
  }
469
469
  //#endregion
470
+ //#region packages/shared/src/vaporFlags.ts
471
+ /**
472
+ * The data of the comment a vapor server render opens the branch of a `v-if`
473
+ * chain with, `<!--[1-->`: the digits are the branch's position in the chain,
474
+ * and `<!--]-->` closes it like a fragment.
475
+ */
476
+ function isVaporBranchStart(data) {
477
+ if (data.length < 2 || data.charCodeAt(0) !== 91) return false;
478
+ for (let i = 1; i < data.length; i++) {
479
+ const c = data.charCodeAt(i);
480
+ if (c < 48 || c > 57) return false;
481
+ }
482
+ return true;
483
+ }
484
+ //#endregion
470
485
  //#region packages/reactivity/src/system.ts
471
486
  const notifyBuffer = [];
472
487
  let batchDepth = 0;
@@ -2954,6 +2969,16 @@ function createPathGetter(ctx, path) {
2954
2969
  };
2955
2970
  }
2956
2971
  //#endregion
2972
+ //#region packages/runtime-core/src/vaporInteropState.ts
2973
+ /**
2974
+ * Set by `vaporInteropPlugin`. Stays false in apps that never import the
2975
+ * plugin, so bundlers drop the vapor-in-vdom branches of the renderer.
2976
+ */
2977
+ let isVaporInteropEnabled = false;
2978
+ function setVaporInteropEnabled() {
2979
+ isVaporInteropEnabled = true;
2980
+ }
2981
+ //#endregion
2957
2982
  //#region packages/runtime-core/src/components/Teleport.ts
2958
2983
  const pendingMounts = /* @__PURE__ */ new WeakMap();
2959
2984
  const TeleportEndKey = Symbol("_vte");
@@ -3200,13 +3225,18 @@ const BaseTransitionPropsValidators = {
3200
3225
  onAfterAppear: TransitionHookValidator,
3201
3226
  onAppearCancelled: TransitionHookValidator
3202
3227
  };
3228
+ let isTransitionEnabled = false;
3229
+ function withTransitionEnabled(value) {
3230
+ isTransitionEnabled = true;
3231
+ return value;
3232
+ }
3203
3233
  function isEmptyTransitionChild(vnode, instance) {
3204
3234
  if (vnode.type === Comment) return true;
3205
3235
  if (vnode.type === Fragment) {
3206
3236
  const child = isArray(vnode.children) && filterSingleRoot(vnode.children, false);
3207
3237
  return !child || isEmptyTransitionChild(child, instance);
3208
3238
  }
3209
- if (vnode.type === VaporSlot || isVaporComponent(vnode.type)) return !getVaporInterface(instance, vnode).hasTransitionChild(vnode);
3239
+ if (isVaporInteropEnabled && (vnode.type === VaporSlot || isVaporComponent(vnode.type))) return !getVaporInterface(instance, vnode).hasTransitionChild(vnode);
3210
3240
  return !!vnode.component && isEmptyTransitionChild(vnode.component.subTree, instance);
3211
3241
  }
3212
3242
  const BaseTransitionImpl = {
@@ -3222,7 +3252,7 @@ const BaseTransitionImpl = {
3222
3252
  const rawProps = /* @__PURE__ */ toRaw(props);
3223
3253
  const { mode } = rawProps;
3224
3254
  return prepareTransitionSwitch(instance.subTree, child, rawProps, state, instance, mode === "out-in" ? resumeAfterLeave || (resumeAfterLeave = () => {
3225
- if (!(instance.job.flags & 4)) instance.update();
3255
+ if (!(instance.effect.flags & 1024)) instance.update();
3226
3256
  }) : NOOP);
3227
3257
  };
3228
3258
  }
@@ -3238,7 +3268,7 @@ function findNonCommentChild(children) {
3238
3268
  }
3239
3269
  return child;
3240
3270
  }
3241
- const BaseTransition = BaseTransitionImpl;
3271
+ const BaseTransition = /*@__PURE__*/ withTransitionEnabled(BaseTransitionImpl);
3242
3272
  function getLeavingNodesForType(state, vnode) {
3243
3273
  const { leavingNodes } = state;
3244
3274
  let leavingVNodesCache = leavingNodes.get(vnode.type);
@@ -3276,7 +3306,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3276
3306
  return hooks;
3277
3307
  }
3278
3308
  }, props, state, instance);
3279
- if (vnode.type === VaporSlot) extend(hooks, {
3309
+ if (isVaporInteropEnabled && vnode.type === VaporSlot) extend(hooks, {
3280
3310
  __vapor: true,
3281
3311
  props,
3282
3312
  state,
@@ -3453,7 +3483,7 @@ function applyTransitionModeSwitch(leavingVNode, leavingHooks, getEnterHooks, pr
3453
3483
  function setTransitionHooks(vnode, hooks) {
3454
3484
  if (vnode.shapeFlag & 6 && vnode.component) {
3455
3485
  vnode.transition = hooks;
3456
- if (isVaporComponent(vnode.type)) getVaporInterface(vnode.component, vnode).setTransitionHooks(vnode.component, hooks);
3486
+ if (isVaporInteropEnabled && isVaporComponent(vnode.type)) getVaporInterface(vnode.component, vnode).setTransitionHooks(vnode.component, hooks);
3457
3487
  else {
3458
3488
  const subTree = vnode.component.subTree;
3459
3489
  return setTransitionHooks(isTeleport(subTree.type) ? getInnerChild$1(subTree) || subTree : subTree, hooks);
@@ -3486,7 +3516,7 @@ function getTransitionRawChildren(children, keepComment = false, parentKey) {
3486
3516
  return ret;
3487
3517
  }
3488
3518
  function getTransitionRoot(vnode) {
3489
- if (vnode.component && !isVaporComponent(vnode.type)) return getTransitionRoot(vnode.component.subTree);
3519
+ if (vnode.component && (!isVaporInteropEnabled || !isVaporComponent(vnode.type))) return getTransitionRoot(vnode.component.subTree);
3490
3520
  if (vnode.type === Fragment) {
3491
3521
  const child = isArray(vnode.children) && filterSingleRoot(vnode.children, false);
3492
3522
  return child ? getTransitionRoot(child) : void 0;
@@ -3661,6 +3691,8 @@ const getContainerType = (container) => {
3661
3691
  if (isMathMLContainer(container)) return "mathml";
3662
3692
  };
3663
3693
  const isComment = (node) => node.nodeType === 8;
3694
+ /** The data of a comment opening a range a hydration steps over as one. */
3695
+ const isRangeStart = (data) => data === "[" || data === "(" || isVaporBranchStart(data);
3664
3696
  function createHydrationFunctions(rendererInternals) {
3665
3697
  const { mt: mountComponent, p: patch, o: { patchProp, createText, nextSibling, parentNode, remove, insert, createComment } } = rendererInternals;
3666
3698
  const hydrate = (vnode, container) => {
@@ -3677,7 +3709,7 @@ function createHydrationFunctions(rendererInternals) {
3677
3709
  };
3678
3710
  const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {
3679
3711
  optimized = optimized || !!vnode.dynamicChildren;
3680
- const isFragmentStart = isComment(node) && (node.data === "[" || node.data === "(");
3712
+ const isFragmentStart = isComment(node) && (node.data === "[" || node.data === "(" || isVaporInteropEnabled && isVaporBranchStart(node.data));
3681
3713
  const onMismatch = () => handleMismatch(node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragmentStart);
3682
3714
  const { type, ref, shapeFlag, patchFlag } = vnode;
3683
3715
  let domType = node.nodeType;
@@ -3730,7 +3762,7 @@ function createHydrationFunctions(rendererInternals) {
3730
3762
  else nextNode = hydrateFragment(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);
3731
3763
  break;
3732
3764
  case VaporSlot:
3733
- nextNode = getVaporInterface(parentComponent, vnode).hydrateSlot(vnode, node, parentComponent, parentSuspense, slotScopeIds);
3765
+ if (isVaporInteropEnabled) nextNode = getVaporInterface(parentComponent, vnode).hydrateSlot(vnode, node, parentComponent, parentSuspense, slotScopeIds);
3734
3766
  break;
3735
3767
  default: if (shapeFlag & 1) {
3736
3768
  if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode$1(node)) nextNode = onMismatch();
@@ -3741,7 +3773,7 @@ function createHydrationFunctions(rendererInternals) {
3741
3773
  if (isFragmentStart) nextNode = locateClosingAnchor(node);
3742
3774
  else if (isComment(node) && node.data === "teleport start") nextNode = locateClosingAnchor(node, node.data, "teleport end");
3743
3775
  else nextNode = nextSibling(node);
3744
- if (vnode.type.__vapor) getVaporInterface(parentComponent, vnode).hydrate(vnode, node, container, nextNode, parentComponent, parentSuspense);
3776
+ if ((isVaporInteropEnabled || false) && vnode.type.__vapor) getVaporInterface(parentComponent, vnode).hydrate(vnode, node, container, nextNode, parentComponent, parentSuspense);
3745
3777
  else {
3746
3778
  mountComponent(vnode, container, null, parentComponent, parentSuspense, getContainerType(container), optimized);
3747
3779
  const component = vnode.component;
@@ -3853,7 +3885,7 @@ function createHydrationFunctions(rendererInternals) {
3853
3885
  if (fragmentSlotScopeIds) slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;
3854
3886
  const container = parentNode(node);
3855
3887
  const first = nextSibling(node);
3856
- const next = vnode.vo && node.data === "(" ? getVaporInterface(parentComponent, vnode).hydrateSlotOutlet(vnode, node, parentComponent, parentSuspense, slotScopeIds) : hydrateChildren(first, vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized);
3888
+ const next = isVaporInteropEnabled && vnode.vo && node.data === "(" ? getVaporInterface(parentComponent, vnode).hydrateSlotOutlet(vnode, node, parentComponent, parentSuspense, slotScopeIds) : hydrateChildren(first, vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized);
3857
3889
  if (next && isComment(next) && next.data === (node.data === "(" ? ")" : "]")) return nextSibling(vnode.anchor = next);
3858
3890
  else {
3859
3891
  logMismatchError();
@@ -3887,7 +3919,7 @@ function createHydrationFunctions(rendererInternals) {
3887
3919
  while (node) {
3888
3920
  node = nextSibling(node);
3889
3921
  if (node && isComment(node)) {
3890
- if (node.data === open) match++;
3922
+ if (node.data === open || isVaporInteropEnabled && open === "[" && isVaporBranchStart(node.data)) match++;
3891
3923
  if (node.data === close) {
3892
3924
  if (match === 0) return nextSibling(node);
3893
3925
  else match--;
@@ -4030,9 +4062,9 @@ const hydrateOnInteraction = (interactions = []) => (hydrate, forEach) => {
4030
4062
  return teardown;
4031
4063
  };
4032
4064
  function forEachElement(node, cb) {
4033
- if (isComment(node) && (node.data === "[" || node.data === "(")) {
4065
+ if (isComment(node) && isRangeStart(node.data)) {
4034
4066
  const open = node.data;
4035
- const close = open === "[" ? "]" : ")";
4067
+ const close = open === "(" ? ")" : "]";
4036
4068
  let depth = 1;
4037
4069
  let next = node.nextSibling;
4038
4070
  while (next) {
@@ -4041,7 +4073,7 @@ function forEachElement(node, cb) {
4041
4073
  } else if (isComment(next)) {
4042
4074
  if (next.data === close) {
4043
4075
  if (--depth === 0) break;
4044
- } else if (next.data === open) depth++;
4076
+ } else if (close === "]" ? next.data === "[" || isVaporBranchStart(next.data) : next.data === open) depth++;
4045
4077
  }
4046
4078
  next = next.nextSibling;
4047
4079
  }
@@ -4142,7 +4174,7 @@ function createAsyncComponentContext(source) {
4142
4174
  setPendingRequest: (request) => pendingRequest = request
4143
4175
  };
4144
4176
  }
4145
- const useAsyncComponentState = (delay, timeout, onError, instance = currentInstance) => {
4177
+ const useAsyncComponentState = (delay = 200, timeout, onError, instance = currentInstance) => {
4146
4178
  const loaded = /* @__PURE__ */ ref(false);
4147
4179
  const error = /* @__PURE__ */ ref();
4148
4180
  const delayed = /* @__PURE__ */ ref(!!delay);
@@ -4193,6 +4225,11 @@ function performAsyncHydrate(el, instance, hydrate, getResolvedComp, load, hydra
4193
4225
  //#endregion
4194
4226
  //#region packages/runtime-core/src/components/KeepAlive.ts
4195
4227
  const isKeepAlive = (vnode) => vnode.type.__isKeepAlive;
4228
+ let isKeepAliveEnabled = false;
4229
+ function withKeepAliveEnabled(value) {
4230
+ isKeepAliveEnabled = true;
4231
+ return value;
4232
+ }
4196
4233
  const KeepAliveImpl = {
4197
4234
  name: `KeepAlive`,
4198
4235
  __isKeepAlive: true,
@@ -4339,7 +4376,7 @@ const decorate$2 = (t) => {
4339
4376
  t.__isBuiltIn = true;
4340
4377
  return t;
4341
4378
  };
4342
- const KeepAlive = /*@__PURE__*/ decorate$2(KeepAliveImpl);
4379
+ const KeepAlive = /*@__PURE__*/ withKeepAliveEnabled(/*@__PURE__*/ decorate$2(KeepAliveImpl));
4343
4380
  function matches(pattern, name) {
4344
4381
  if (isArray(pattern)) return pattern.some((p) => matches(p, name));
4345
4382
  else if (isString(pattern)) return pattern.split(",").includes(name);
@@ -4794,11 +4831,12 @@ function invokeSlotFallback(fallback, owner) {
4794
4831
  function renderSlot(slots, name, props, fallback, noSlotted, branchKey) {
4795
4832
  if (props == null) props = {};
4796
4833
  let slot = slots[name];
4797
- const vaporSlot = slot && slot[rawVaporSlotKey];
4834
+ const vaporSlot = isVaporInteropEnabled && slot && slot[rawVaporSlotKey];
4798
4835
  if (vaporSlot) {
4799
4836
  const ret = (openBlock(), createBlock(VaporSlot, props));
4800
4837
  ret.vs = {
4801
4838
  slot: vaporSlot,
4839
+ name,
4802
4840
  outlets: fallback ? [{
4803
4841
  fallback,
4804
4842
  owner: currentRenderingInstance
@@ -4825,7 +4863,7 @@ function renderSlot(slots, name, props, fallback, noSlotted, branchKey) {
4825
4863
  try {
4826
4864
  const validSlotContent = slot && ensureValidVNode(slot(props));
4827
4865
  let attached = false;
4828
- if (fallback && validSlotContent && currentRenderingInstance) {
4866
+ if (isVaporInteropEnabled && fallback && validSlotContent && currentRenderingInstance) {
4829
4867
  const interop = currentRenderingInstance.appContext.vapor;
4830
4868
  if (interop) attached = interop.attachSlotOutlet(validSlotContent, fallback, currentRenderingInstance);
4831
4869
  }
@@ -5598,7 +5636,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
5598
5636
  if (options.el) return vm.$mount(options.el);
5599
5637
  else return vm;
5600
5638
  }
5601
- Vue.version = `2.6.14-compat:3.6.0-rc.12`;
5639
+ Vue.version = `2.6.14-compat:3.6.0-rc.14`;
5602
5640
  Vue.config = singletonApp.config;
5603
5641
  Vue.use = (plugin, ...options) => {
5604
5642
  if (plugin && isFunction(plugin.install)) plugin.install(Vue, ...options);
@@ -6634,7 +6672,7 @@ function baseCreateRenderer(options, createHydrationFns) {
6634
6672
  processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
6635
6673
  break;
6636
6674
  case VaporSlot:
6637
- getVaporInterface(parentComponent, n2).slot(n1, n2, container, anchor, parentComponent, parentSuspense, slotScopeIds);
6675
+ if (isVaporInteropEnabled) getVaporInterface(parentComponent, n2).slot(n1, n2, container, anchor, parentComponent, parentSuspense, slotScopeIds);
6638
6676
  break;
6639
6677
  default: if (shapeFlag & 1) processElement(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
6640
6678
  else if (shapeFlag & 6) processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
@@ -6744,7 +6782,7 @@ function baseCreateRenderer(options, createHydrationFns) {
6744
6782
  let vnodeHook;
6745
6783
  parentComponent && toggleRecurse(parentComponent, false);
6746
6784
  if (vnodeHook = newProps.onVnodeBeforeUpdate) invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
6747
- if (n2.ibu) n2.ibu();
6785
+ if (isVaporInteropEnabled && n2.ibu) n2.ibu();
6748
6786
  if (dirs) invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate");
6749
6787
  parentComponent && toggleRecurse(parentComponent, true);
6750
6788
  if (dynamicChildren && (!n1.dynamicChildren || n1.dynamicChildren.length !== dynamicChildren.length)) {
@@ -6776,9 +6814,9 @@ function baseCreateRenderer(options, createHydrationFns) {
6776
6814
  if (n1.children !== n2.children) hostSetElementText(el, n2.children);
6777
6815
  }
6778
6816
  } else if (!optimized && dynamicChildren == null) patchProps(el, oldProps, newProps, parentComponent, namespace);
6779
- if ((vnodeHook = newProps.onVnodeUpdated) || dirs || n2.iu) queuePostRenderEffect(() => {
6817
+ if ((vnodeHook = newProps.onVnodeUpdated) || dirs || isVaporInteropEnabled && n2.iu) queuePostRenderEffect(() => {
6780
6818
  vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
6781
- n2.iu && n2.iu();
6819
+ isVaporInteropEnabled && n2.iu && n2.iu();
6782
6820
  dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated");
6783
6821
  }, void 0, parentSuspense);
6784
6822
  };
@@ -6821,7 +6859,7 @@ function baseCreateRenderer(options, createHydrationFns) {
6821
6859
  };
6822
6860
  const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
6823
6861
  n2.slotScopeIds = slotScopeIds;
6824
- if (n2.type.__vapor) {
6862
+ if ((isVaporInteropEnabled || false) && n2.type.__vapor) {
6825
6863
  if (n1 == null) {
6826
6864
  if (n2.shapeFlag & 512) getVaporInterface(parentComponent, n2).activate(n2, container, anchor, parentComponent, parentSuspense);
6827
6865
  else getVaporInterface(parentComponent, n2).mount(n2, container, anchor, parentComponent, parentSuspense);
@@ -6963,7 +7001,7 @@ function baseCreateRenderer(options, createHydrationFns) {
6963
7001
  } else next = vnode;
6964
7002
  if (bu) invokeArrayFns(bu);
6965
7003
  if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) invokeVNodeHook(vnodeHook, parent, next, vnode);
6966
- if (next.ibu) next.ibu();
7004
+ if (isVaporInteropEnabled && next.ibu) next.ibu();
6967
7005
  if (isCompatEnabled$1("INSTANCE_EVENT_HOOKS", instance)) instance.emit("hook:beforeUpdate");
6968
7006
  toggleRecurse(instance, true);
6969
7007
  const nextTree = renderComponentRoot(instance);
@@ -6973,9 +7011,9 @@ function baseCreateRenderer(options, createHydrationFns) {
6973
7011
  next.el = nextTree.el;
6974
7012
  if (originNext === null) updateHOCHostEl(instance, nextTree.el);
6975
7013
  if (u) queuePostRenderEffect(u, void 0, parentSuspense);
6976
- if ((vnodeHook = next.props && next.props.onVnodeUpdated) || next.iu) queuePostRenderEffect(() => {
7014
+ if ((vnodeHook = next.props && next.props.onVnodeUpdated) || isVaporInteropEnabled && next.iu) queuePostRenderEffect(() => {
6977
7015
  vnodeHook && invokeVNodeHook(vnodeHook, parent, next, vnode);
6978
- next.iu && next.iu();
7016
+ isVaporInteropEnabled && next.iu && next.iu();
6979
7017
  }, void 0, parentSuspense);
6980
7018
  if (isCompatEnabled$1("INSTANCE_EVENT_HOOKS", instance)) queuePostRenderEffect(() => instance.emit("hook:updated"), void 0, parentSuspense);
6981
7019
  }
@@ -7123,7 +7161,7 @@ function baseCreateRenderer(options, createHydrationFns) {
7123
7161
  };
7124
7162
  const move = (vnode, container, anchor, moveType, parentComponent, parentSuspense = null) => {
7125
7163
  const { el, type, transition, children, shapeFlag } = vnode;
7126
- if (isVaporComponent(type) || type === VaporSlot) {
7164
+ if (isVaporInteropEnabled && (isVaporComponent(type) || type === VaporSlot)) {
7127
7165
  getVaporInterface(parentComponent, vnode).move(vnode, container, anchor, moveType, parentSuspense);
7128
7166
  return;
7129
7167
  }
@@ -7167,11 +7205,11 @@ function baseCreateRenderer(options, createHydrationFns) {
7167
7205
  }
7168
7206
  if (cacheIndex != null && (!vnode.ctx || vnode.ctx === parentComponent)) parentComponent.renderCache[cacheIndex] = void 0;
7169
7207
  if (shapeFlag & 256) {
7170
- if (isVaporComponent(vnode.type)) getVaporInterface(parentComponent, vnode).deactivate(vnode, parentComponent.ctx.getStorageContainer(), parentSuspense);
7208
+ if (isVaporInteropEnabled && isVaporComponent(vnode.type)) getVaporInterface(parentComponent, vnode).deactivate(vnode, parentComponent.ctx.getStorageContainer(), parentSuspense);
7171
7209
  else parentComponent.ctx.deactivate(vnode);
7172
7210
  return;
7173
7211
  }
7174
- if (shapeFlag & 6 && isVaporComponent(type)) {
7212
+ if (isVaporInteropEnabled && shapeFlag & 6 && isVaporComponent(type)) {
7175
7213
  getVaporInterface(parentComponent, vnode).unmount(vnode, doRemove, parentSuspense);
7176
7214
  return;
7177
7215
  }
@@ -7189,7 +7227,7 @@ function baseCreateRenderer(options, createHydrationFns) {
7189
7227
  if (shapeFlag & 64) vnode.type.remove(vnode, parentComponent, parentSuspense, internals, doRemove);
7190
7228
  else if (dynamicChildren && !dynamicChildren.hasOnce && (type !== Fragment || patchFlag > 0 && patchFlag & 64)) unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true);
7191
7229
  else if (type === Fragment && patchFlag & 384 || !optimized && shapeFlag & 16) unmountChildren(children, parentComponent, parentSuspense);
7192
- if (type === VaporSlot) {
7230
+ if (isVaporInteropEnabled && type === VaporSlot) {
7193
7231
  getVaporInterface(parentComponent, vnode).unmount(vnode, doRemove, parentSuspense);
7194
7232
  return;
7195
7233
  }
@@ -7223,7 +7261,7 @@ function baseCreateRenderer(options, createHydrationFns) {
7223
7261
  if (transition) {
7224
7262
  let leavingEl = leavingNode && leavingNode.el;
7225
7263
  let isElement = !!(leavingNode && leavingNode.shapeFlag & 1);
7226
- if (isFragment && leavingNode && isVaporComponent(leavingNode.type)) {
7264
+ if (isVaporInteropEnabled && isFragment && leavingNode && isVaporComponent(leavingNode.type)) {
7227
7265
  leavingEl = getVaporInterface(leavingNode.component, leavingNode).getTransitionElement(leavingNode);
7228
7266
  isElement = !!leavingEl;
7229
7267
  }
@@ -7262,7 +7300,7 @@ function baseCreateRenderer(options, createHydrationFns) {
7262
7300
  };
7263
7301
  const getNextHostNode = (vnode) => {
7264
7302
  if (vnode.shapeFlag & 6) {
7265
- if (isVaporComponent(vnode.type)) return hostNextSibling(vnode.anchor);
7303
+ if (isVaporInteropEnabled && isVaporComponent(vnode.type)) return hostNextSibling(vnode.anchor);
7266
7304
  return getNextHostNode(vnode.component.subTree);
7267
7305
  }
7268
7306
  if (vnode.shapeFlag & 128) return vnode.suspense.next();
@@ -7318,7 +7356,7 @@ function resolveChildrenNamespace({ type, props }, currentNamespace) {
7318
7356
  return currentNamespace === "svg" && type === "foreignObject" || currentNamespace === "mathml" && type === "annotation-xml" && props && props.encoding && props.encoding.includes("html") ? void 0 : currentNamespace;
7319
7357
  }
7320
7358
  function toggleRecurse({ effect, job, vapor }, allowed) {
7321
- if (!vapor) {
7359
+ if (!isVaporInteropEnabled || !vapor) {
7322
7360
  if (allowed) {
7323
7361
  effect.flags |= 128;
7324
7362
  job.flags |= 2;
@@ -7425,7 +7463,7 @@ function getInheritedScopeIds(vnode, parentComponent, includeVaporRootIds = true
7425
7463
  currentParent = currentParent.parent;
7426
7464
  } else break;
7427
7465
  }
7428
- const vaporScopeIds = includeVaporRootIds && currentVNode.vaporScopeIds;
7466
+ const vaporScopeIds = isVaporInteropEnabled && includeVaporRootIds && currentVNode.vaporScopeIds;
7429
7467
  if (vaporScopeIds) inheritedScopeIds.push(...vaporScopeIds);
7430
7468
  return inheritedScopeIds;
7431
7469
  }
@@ -7438,8 +7476,13 @@ function resolveAsyncComponentPlaceholder(anchorVnode) {
7438
7476
  //#endregion
7439
7477
  //#region packages/runtime-core/src/components/Suspense.ts
7440
7478
  const isSuspense = (type) => type.__isSuspense;
7479
+ let isSuspenseEnabled = false;
7480
+ function withSuspenseEnabled(value) {
7481
+ isSuspenseEnabled = true;
7482
+ return value;
7483
+ }
7441
7484
  let suspenseId = 0;
7442
- const Suspense = {
7485
+ const Suspense = /*@__PURE__*/ withSuspenseEnabled({
7443
7486
  name: "Suspense",
7444
7487
  __isSuspense: true,
7445
7488
  process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {
@@ -7456,7 +7499,7 @@ const Suspense = {
7456
7499
  },
7457
7500
  hydrate: hydrateSuspense,
7458
7501
  normalize: normalizeSuspenseChildren
7459
- };
7502
+ });
7460
7503
  function triggerEvent(vnode, name) {
7461
7504
  const eventListener = vnode.props && vnode.props[name];
7462
7505
  if (isFunction(eventListener)) eventListener();
@@ -7985,16 +8028,23 @@ function cloneVaporSlotMeta(vnode, extraProps) {
7985
8028
  if (!vaporSlot) return vaporSlot;
7986
8029
  const cloned = {
7987
8030
  slot: vaporSlot.slot,
8031
+ name: vaporSlot.name,
7988
8032
  outlets: vaporSlot.outlets,
7989
- props: vaporSlot.props
8033
+ props: vaporSlot.props,
8034
+ attrs: vaporSlot.attrs && vaporSlot.attrs === EMPTY_OBJ ? {} : vaporSlot.attrs,
8035
+ group: vaporSlot.group
7990
8036
  };
7991
- if (vaporSlot.props && extraProps) {
8037
+ const attrs = cloned.attrs;
8038
+ if (extraProps && vaporSlot.props) {
7992
8039
  let extraSlotProps;
7993
- for (const key in extraProps) if (key !== "key") {
8040
+ for (const key in extraProps) if (attrs ? !isReservedProp(key) : key !== "key") {
7994
8041
  if (!extraSlotProps) extraSlotProps = {};
7995
8042
  extraSlotProps[key] = extraProps[key];
7996
8043
  }
7997
- if (extraSlotProps) cloned.props = mergeProps(vaporSlot.props, extraSlotProps);
8044
+ if (extraSlotProps) {
8045
+ if (attrs) cloned.attrs = mergeProps(attrs, extraSlotProps);
8046
+ else cloned.props = mergeProps(vaporSlot.props, extraSlotProps);
8047
+ }
7998
8048
  }
7999
8049
  if (vnode.el) {
8000
8050
  cloned.state = vaporSlot.state;
@@ -8255,7 +8305,7 @@ function setupComponent(instance, isSSR = false, optimized = false) {
8255
8305
  isSSR && setInSSRSetupState(isSSR);
8256
8306
  const { props, children, vi } = instance.vnode;
8257
8307
  const isStateful = isStatefulComponent(instance);
8258
- if (vi) vi(instance);
8308
+ if (isVaporInteropEnabled && vi) vi(instance);
8259
8309
  else {
8260
8310
  initProps(instance, props, isStateful, isSSR);
8261
8311
  initSlots(instance, children, optimized || isSSR);
@@ -8435,7 +8485,7 @@ function isMemoSame(cached, memo) {
8435
8485
  }
8436
8486
  //#endregion
8437
8487
  //#region packages/runtime-core/src/index.ts
8438
- const version = "3.6.0-rc.12";
8488
+ const version = "3.6.0-rc.14";
8439
8489
  const warn = NOOP;
8440
8490
  /**
8441
8491
  * Runtime error messages. Only exposed in dev or esm builds.
@@ -9484,7 +9534,7 @@ const decorate = (t) => {
9484
9534
  t.__isBuiltIn = true;
9485
9535
  return t;
9486
9536
  };
9487
- const TransitionGroup = /* @__PURE__ */ decorate({
9537
+ const TransitionGroup = /*@__PURE__*/ withTransitionEnabled(/* @__PURE__ */ decorate({
9488
9538
  name: "TransitionGroup",
9489
9539
  props: /*@__PURE__*/ extend({}, TransitionPropsValidators, {
9490
9540
  tag: String,
@@ -9493,6 +9543,11 @@ const TransitionGroup = /* @__PURE__ */ decorate({
9493
9543
  setup(props, { slots }) {
9494
9544
  const instance = getCurrentInstance();
9495
9545
  const state = useTransitionState();
9546
+ const group = {
9547
+ props: {},
9548
+ state,
9549
+ instance
9550
+ };
9496
9551
  let prevChildren;
9497
9552
  let children;
9498
9553
  let origins;
@@ -9523,7 +9578,7 @@ const TransitionGroup = /* @__PURE__ */ decorate({
9523
9578
  });
9524
9579
  return () => {
9525
9580
  const rawProps = /* @__PURE__ */ toRaw(props);
9526
- const cssTransitionProps = resolveTransitionProps(rawProps);
9581
+ const cssTransitionProps = group.props = resolveTransitionProps(rawProps);
9527
9582
  let tag = rawProps.tag || Fragment;
9528
9583
  if (!rawProps.tag && compatUtils.checkCompatEnabled("TRANSITION_GROUP_ROOT", instance.parent)) tag = "span";
9529
9584
  prevChildren = [];
@@ -9534,12 +9589,17 @@ const TransitionGroup = /* @__PURE__ */ decorate({
9534
9589
  prevChildren.push(child);
9535
9590
  setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
9536
9591
  positionMap.set(child, getPosition(child.el));
9537
- }
9592
+ } else if (isVaporInteropEnabled && child.vs && child.vb) instance.appContext.vapor.forEachGroupChild(child, (el) => {
9593
+ const row = { el };
9594
+ prevChildren.push(row);
9595
+ positionMap.set(row, getPosition(el));
9596
+ });
9538
9597
  }
9539
9598
  children = slots.default ? getTransitionRawChildren(slots.default()) : [];
9540
9599
  for (let i = 0; i < children.length; i++) {
9541
9600
  const child = children[i];
9542
- if (child.key != null) setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
9601
+ if (isVaporInteropEnabled && child.vs) child.vs.group = group;
9602
+ else if (child.key != null) setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
9543
9603
  }
9544
9604
  if (prevChildren.length) {
9545
9605
  const root = instance.vnode.el;
@@ -9552,7 +9612,7 @@ const TransitionGroup = /* @__PURE__ */ decorate({
9552
9612
  return createVNode(tag, null, children);
9553
9613
  };
9554
9614
  }
9555
- });
9615
+ }));
9556
9616
  function callPendingCbs(el) {
9557
9617
  if (el[moveCbKey]) el[moveCbKey]();
9558
9618
  if (el[enterCbKey]) el[enterCbKey]();
@@ -9696,7 +9756,7 @@ const vModelTextInit = (el, trim, number, lazy, set) => {
9696
9756
  if (e.target.composing) return;
9697
9757
  (set || el[assignKey])(castValue(el.value, trim, number || el.type === "number"));
9698
9758
  });
9699
- if (trim || number) addEventListener(el, "change", () => {
9759
+ if (trim || number || el.type === "number") addEventListener(el, "change", () => {
9700
9760
  el.value = castValue(el.value, trim, number || el.type === "number");
9701
9761
  });
9702
9762
  if (!lazy) {
@@ -10072,6 +10132,7 @@ var src_exports = /* @__PURE__ */ __exportAll({
10072
10132
  initCustomFormatter: () => initCustomFormatter,
10073
10133
  initDirectivesForSSR: () => initDirectivesForSSR,
10074
10134
  inject: () => inject,
10135
+ isKeepAliveEnabled: () => isKeepAliveEnabled,
10075
10136
  isMemoSame: () => isMemoSame,
10076
10137
  isProxy: () => isProxy,
10077
10138
  isReactive: () => isReactive,
@@ -10079,7 +10140,10 @@ var src_exports = /* @__PURE__ */ __exportAll({
10079
10140
  isRef: () => isRef,
10080
10141
  isRuntimeOnly: () => isRuntimeOnly,
10081
10142
  isShallow: () => isShallow,
10143
+ isSuspenseEnabled: () => isSuspenseEnabled,
10144
+ isTransitionEnabled: () => isTransitionEnabled,
10082
10145
  isVNode: () => isVNode,
10146
+ isVaporInteropEnabled: () => isVaporInteropEnabled,
10083
10147
  markRaw: () => markRaw,
10084
10148
  mergeDefaults: () => mergeDefaults,
10085
10149
  mergeModels: () => mergeModels,
@@ -10126,6 +10190,7 @@ var src_exports = /* @__PURE__ */ __exportAll({
10126
10190
  setDevtoolsHook: () => setDevtoolsHook,
10127
10191
  setIsHydratingEnabled: () => setIsHydratingEnabled,
10128
10192
  setTransitionHooks: () => setTransitionHooks,
10193
+ setVaporInteropEnabled: () => setVaporInteropEnabled,
10129
10194
  shallowReactive: () => shallowReactive,
10130
10195
  shallowReadonly: () => shallowReadonly,
10131
10196
  shallowRef: () => shallowRef,
@@ -10170,10 +10235,13 @@ var src_exports = /* @__PURE__ */ __exportAll({
10170
10235
  withCtx: () => withCtx,
10171
10236
  withDefaults: () => withDefaults,
10172
10237
  withDirectives: () => withDirectives,
10238
+ withKeepAliveEnabled: () => withKeepAliveEnabled,
10173
10239
  withKeys: () => withKeys,
10174
10240
  withMemo: () => withMemo,
10175
10241
  withModifiers: () => withModifiers,
10176
- withScopeId: () => withScopeId
10242
+ withScopeId: () => withScopeId,
10243
+ withSuspenseEnabled: () => withSuspenseEnabled,
10244
+ withTransitionEnabled: () => withTransitionEnabled
10177
10245
  });
10178
10246
  const rendererOptions = /*@__PURE__*/ extend({ patchProp }, nodeOps);
10179
10247
  let renderer;
@@ -12050,7 +12118,15 @@ const nonIdentifierRE = /^$|^\d|[^\$\w\xA0-\uFFFF]/;
12050
12118
  const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name);
12051
12119
  const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/;
12052
12120
  const getExpSource = (exp) => exp.type === 4 ? exp.content : exp.loc.source;
12121
+ const asciiIdentifierRE = /^[A-Za-z_$][\w$]*$/;
12122
+ const isReservedWord = /*@__PURE__*/ makeMap("await,break,case,catch,class,const,continue,debugger,default,delete,do,else,enum,export,extends,false,finally,for,function,if,implements,import,in,instanceof,interface,let,new,null,package,private,protected,public,return,static,super,switch,this,throw,true,try,typeof,undefined,var,void,while,with,yield");
12123
+ const isUnparsedIdentifier = (exp) => {
12124
+ if (exp.ast !== null) return false;
12125
+ const content = getExpSource(exp);
12126
+ return asciiIdentifierRE.test(content) && !isReservedWord(content);
12127
+ };
12053
12128
  const isMemberExpressionNode = (exp, context) => {
12129
+ if (isUnparsedIdentifier(exp)) return true;
12054
12130
  try {
12055
12131
  let ret = exp.ast || (0, _babel_parser.parseExpression)(getExpSource(exp), { plugins: context.expressionPlugins ? [...context.expressionPlugins, "typescript"] : ["typescript"] });
12056
12132
  ret = unwrapTSNode(ret);
@@ -12061,6 +12137,7 @@ const isMemberExpressionNode = (exp, context) => {
12061
12137
  };
12062
12138
  const isMemberExpression = isMemberExpressionNode;
12063
12139
  const isFnExpressionNode = (exp, context) => {
12140
+ if (isUnparsedIdentifier(exp)) return false;
12064
12141
  try {
12065
12142
  let ret = exp.ast || (0, _babel_parser.parseExpression)(getExpSource(exp), { plugins: context.expressionPlugins ? [...context.expressionPlugins, "typescript"] : ["typescript"] });
12066
12143
  if (ret.type === "Program") {