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

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.
@@ -27,6 +27,16 @@ type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (
27
27
  type LooseRequired<T> = { [P in keyof (T & Required<T>)]: T[P]; };
28
28
  type IfAny<T, Y, N> = 0 extends 1 & T ? Y : N;
29
29
  //#endregion
30
+ //#region packages/shared/src/vaporFlags.d.ts
31
+ /**
32
+ * `isSingleRoot` of a component creation call for the single root of a slot
33
+ * body (`true` marks the single root of a component template). See
34
+ * resolveFallthroughOwner in runtime-vapor.
35
+ */
36
+ declare enum VaporSingleRoot {
37
+ SLOT = 2
38
+ }
39
+ //#endregion
30
40
  //#region packages/reactivity/src/constants.d.ts
31
41
  declare enum TrackOpTypes {
32
42
  GET = "get",
@@ -657,6 +667,12 @@ interface TransitionHooks<HostElement = RendererElement> {
657
667
  delayLeave?(el: HostElement, earlyRemove: () => void, delayedLeave: () => void): void;
658
668
  delayedLeave?(): void;
659
669
  }
670
+ interface TransitionState {
671
+ isMounted: boolean;
672
+ isLeaving: boolean;
673
+ isUnmounting: boolean;
674
+ leavingNodes: Map<any, Record<string, any>>;
675
+ }
660
676
  //#endregion
661
677
  //#region packages/runtime-core/src/renderer.d.ts
662
678
  type ElementNamespace = "svg" | "mathml" | undefined;
@@ -1055,6 +1071,11 @@ interface VaporInVdomInterface {
1055
1071
  */
1056
1072
  hasTransitionChild(vnode: VNode): boolean;
1057
1073
  getTransitionElement(vnode: VNode): RendererElement | undefined;
1074
+ /**
1075
+ * Re-resolves the hooks of the rows a mounted vapor slot renders under a
1076
+ * TransitionGroup (`vnode.vs.group`) and hands over their elements.
1077
+ */
1078
+ forEachGroupChild(vnode: VNode, cb: (el: RendererElement) => void): void;
1058
1079
  applyCssVars(vnode: VNode, vars: Record<string, string>): void;
1059
1080
  /**
1060
1081
  * Hands the fallback of a vdom outlet over to the vapor slot its content
@@ -1083,7 +1104,7 @@ interface VdomSlotOptions {
1083
1104
  interface VdomInVaporInterface {
1084
1105
  mount: (component: ConcreteComponent, parentComponent: any, props?: any, slots?: any, once?: boolean, inputScope?: EffectScope) => any;
1085
1106
  slot: (slots: any, name: string | (() => string), props: Record<string, any>, parentComponent: any, options?: VdomSlotOptions) => any;
1086
- mountVNode: (vnode: VNode, parentComponent: any, isSingleRoot?: boolean, rawProps?: any, once?: boolean) => any;
1107
+ mountVNode: (vnode: VNode, parentComponent: any, isSingleRoot?: boolean | VaporSingleRoot, rawProps?: any, once?: boolean) => any;
1087
1108
  }
1088
1109
  /**
1089
1110
  * Minimal app context shared between vdom and vapor
@@ -1337,8 +1358,15 @@ interface VNode<HostNode = RendererNode, HostElement = RendererElement, ExtraPro
1337
1358
  */
1338
1359
  vs?: {
1339
1360
  slot: (props: any) => any;
1361
+ name: string;
1340
1362
  outlets?: readonly VdomSlotOutlet[];
1341
1363
  props?: Data;
1364
+ attrs?: Data;
1365
+ group?: {
1366
+ props: BaseTransitionProps<any>;
1367
+ state: TransitionState;
1368
+ instance: GenericComponentInstance;
1369
+ };
1342
1370
  state?: unknown;
1343
1371
  ref?: ShallowRef<any>;
1344
1372
  scope?: EffectScope;
package/dist/vue.cjs.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compat v3.6.0-rc.12
2
+ * @vue/compat v3.6.0-rc.13
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -3717,6 +3717,16 @@ function createPathGetter(ctx, path) {
3717
3717
  };
3718
3718
  }
3719
3719
  //#endregion
3720
+ //#region packages/runtime-core/src/vaporInteropState.ts
3721
+ /**
3722
+ * Set by `vaporInteropPlugin`. Stays false in apps that never import the
3723
+ * plugin, so bundlers drop the vapor-in-vdom branches of the renderer.
3724
+ */
3725
+ let isVaporInteropEnabled = false;
3726
+ function setVaporInteropEnabled() {
3727
+ isVaporInteropEnabled = true;
3728
+ }
3729
+ //#endregion
3720
3730
  //#region packages/runtime-core/src/components/Teleport.ts
3721
3731
  const pendingMounts = /* @__PURE__ */ new WeakMap();
3722
3732
  const TeleportEndKey = Symbol("_vte");
@@ -3976,13 +3986,18 @@ const BaseTransitionPropsValidators = {
3976
3986
  onAfterAppear: TransitionHookValidator,
3977
3987
  onAppearCancelled: TransitionHookValidator
3978
3988
  };
3989
+ let isTransitionEnabled = false;
3990
+ function withTransitionEnabled(value) {
3991
+ isTransitionEnabled = true;
3992
+ return value;
3993
+ }
3979
3994
  function isEmptyTransitionChild(vnode, instance) {
3980
3995
  if (vnode.type === Comment) return true;
3981
3996
  if (vnode.type === Fragment) {
3982
3997
  const child = isArray(vnode.children) && filterSingleRoot(vnode.children, false);
3983
3998
  return !child || isEmptyTransitionChild(child, instance);
3984
3999
  }
3985
- if (vnode.type === VaporSlot || isVaporComponent(vnode.type)) return !getVaporInterface(instance, vnode).hasTransitionChild(vnode);
4000
+ if (isVaporInteropEnabled && (vnode.type === VaporSlot || isVaporComponent(vnode.type))) return !getVaporInterface(instance, vnode).hasTransitionChild(vnode);
3986
4001
  return !!vnode.component && isEmptyTransitionChild(vnode.component.subTree, instance);
3987
4002
  }
3988
4003
  const BaseTransitionImpl = {
@@ -3999,7 +4014,7 @@ const BaseTransitionImpl = {
3999
4014
  const { mode } = rawProps;
4000
4015
  checkTransitionMode(mode);
4001
4016
  return prepareTransitionSwitch(instance.subTree, child, rawProps, state, instance, mode === "out-in" ? resumeAfterLeave || (resumeAfterLeave = () => {
4002
- if (!(instance.job.flags & 4)) instance.update();
4017
+ if (!(instance.effect.flags & 1024)) instance.update();
4003
4018
  }) : NOOP);
4004
4019
  };
4005
4020
  }
@@ -4020,7 +4035,7 @@ function findNonCommentChild(children) {
4020
4035
  }
4021
4036
  return child;
4022
4037
  }
4023
- const BaseTransition = BaseTransitionImpl;
4038
+ const BaseTransition = /*@__PURE__*/ withTransitionEnabled(BaseTransitionImpl);
4024
4039
  function getLeavingNodesForType(state, vnode) {
4025
4040
  const { leavingNodes } = state;
4026
4041
  let leavingVNodesCache = leavingNodes.get(vnode.type);
@@ -4058,7 +4073,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4058
4073
  return hooks;
4059
4074
  }
4060
4075
  }, props, state, instance);
4061
- if (vnode.type === VaporSlot) extend(hooks, {
4076
+ if (isVaporInteropEnabled && vnode.type === VaporSlot) extend(hooks, {
4062
4077
  __vapor: true,
4063
4078
  props,
4064
4079
  state,
@@ -4235,7 +4250,7 @@ function applyTransitionModeSwitch(leavingVNode, leavingHooks, getEnterHooks, pr
4235
4250
  function setTransitionHooks(vnode, hooks) {
4236
4251
  if (vnode.shapeFlag & 6 && vnode.component) {
4237
4252
  vnode.transition = hooks;
4238
- if (isVaporComponent(vnode.type)) getVaporInterface(vnode.component, vnode).setTransitionHooks(vnode.component, hooks);
4253
+ if (isVaporInteropEnabled && isVaporComponent(vnode.type)) getVaporInterface(vnode.component, vnode).setTransitionHooks(vnode.component, hooks);
4239
4254
  else {
4240
4255
  const subTree = vnode.component.subTree;
4241
4256
  return setTransitionHooks(isTeleport(subTree.type) ? getInnerChild$1(subTree) || subTree : subTree, hooks);
@@ -4274,7 +4289,7 @@ function checkTransitionMode(mode) {
4274
4289
  if (mode && mode !== "in-out" && mode !== "out-in" && mode !== "default") warn$1(`invalid <transition> mode: ${mode}`);
4275
4290
  }
4276
4291
  function getTransitionRoot(vnode) {
4277
- if (vnode.component && !isVaporComponent(vnode.type)) return getTransitionRoot(vnode.component.subTree);
4292
+ if (vnode.component && (!isVaporInteropEnabled || !isVaporComponent(vnode.type))) return getTransitionRoot(vnode.component.subTree);
4278
4293
  if (vnode.type === Fragment) {
4279
4294
  const child = isArray(vnode.children) && filterSingleRoot(vnode.children, false);
4280
4295
  return child ? getTransitionRoot(child) : void 0;
@@ -4534,7 +4549,7 @@ function createHydrationFunctions(rendererInternals) {
4534
4549
  else nextNode = hydrateFragment(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);
4535
4550
  break;
4536
4551
  case VaporSlot:
4537
- nextNode = getVaporInterface(parentComponent, vnode).hydrateSlot(vnode, node, parentComponent, parentSuspense, slotScopeIds);
4552
+ if (isVaporInteropEnabled) nextNode = getVaporInterface(parentComponent, vnode).hydrateSlot(vnode, node, parentComponent, parentSuspense, slotScopeIds);
4538
4553
  break;
4539
4554
  default: if (shapeFlag & 1) {
4540
4555
  if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode$1(node)) nextNode = onMismatch();
@@ -4666,7 +4681,7 @@ function createHydrationFunctions(rendererInternals) {
4666
4681
  if (fragmentSlotScopeIds) slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;
4667
4682
  const container = parentNode(node);
4668
4683
  const first = nextSibling(node);
4669
- const next = vnode.vo && node.data === "(" ? getVaporInterface(parentComponent, vnode).hydrateSlotOutlet(vnode, node, parentComponent, parentSuspense, slotScopeIds) : hydrateChildren(first, vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized);
4684
+ const next = isVaporInteropEnabled && vnode.vo && node.data === "(" ? getVaporInterface(parentComponent, vnode).hydrateSlotOutlet(vnode, node, parentComponent, parentSuspense, slotScopeIds) : hydrateChildren(first, vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized);
4670
4685
  if (next && isComment(next) && next.data === (node.data === "(" ? ")" : "]")) return nextSibling(vnode.anchor = next);
4671
4686
  else {
4672
4687
  logMismatchError();
@@ -5073,7 +5088,7 @@ function createAsyncComponentContext(source) {
5073
5088
  setPendingRequest: (request) => pendingRequest = request
5074
5089
  };
5075
5090
  }
5076
- const useAsyncComponentState = (delay, timeout, onError, instance = currentInstance) => {
5091
+ const useAsyncComponentState = (delay = 200, timeout, onError, instance = currentInstance) => {
5077
5092
  const loaded = /* @__PURE__ */ ref(false);
5078
5093
  const error = /* @__PURE__ */ ref();
5079
5094
  const delayed = /* @__PURE__ */ ref(!!delay);
@@ -5130,6 +5145,11 @@ function performAsyncHydrate(el, instance, hydrate, getResolvedComp, load, hydra
5130
5145
  //#endregion
5131
5146
  //#region packages/runtime-core/src/components/KeepAlive.ts
5132
5147
  const isKeepAlive = (vnode) => vnode.type.__isKeepAlive;
5148
+ let isKeepAliveEnabled = false;
5149
+ function withKeepAliveEnabled(value) {
5150
+ isKeepAliveEnabled = true;
5151
+ return value;
5152
+ }
5133
5153
  const KeepAliveImpl = {
5134
5154
  name: `KeepAlive`,
5135
5155
  __isKeepAlive: true,
@@ -5278,7 +5298,7 @@ const decorate$2 = (t) => {
5278
5298
  t.__isBuiltIn = true;
5279
5299
  return t;
5280
5300
  };
5281
- const KeepAlive = /*@__PURE__*/ decorate$2(KeepAliveImpl);
5301
+ const KeepAlive = /*@__PURE__*/ withKeepAliveEnabled(/*@__PURE__*/ decorate$2(KeepAliveImpl));
5282
5302
  function matches(pattern, name) {
5283
5303
  if (isArray(pattern)) return pattern.some((p) => matches(p, name));
5284
5304
  else if (isString(pattern)) return pattern.split(",").includes(name);
@@ -5741,11 +5761,12 @@ function invokeSlotFallback(fallback, owner) {
5741
5761
  function renderSlot(slots, name, props, fallback, noSlotted, branchKey) {
5742
5762
  if (props == null) props = {};
5743
5763
  let slot = slots[name];
5744
- const vaporSlot = slot && slot[rawVaporSlotKey];
5764
+ const vaporSlot = isVaporInteropEnabled && slot && slot[rawVaporSlotKey];
5745
5765
  if (vaporSlot) {
5746
5766
  const ret = (openBlock(), createBlock(VaporSlot, props));
5747
5767
  ret.vs = {
5748
5768
  slot: vaporSlot,
5769
+ name,
5749
5770
  outlets: fallback ? [{
5750
5771
  fallback,
5751
5772
  owner: currentRenderingInstance
@@ -5776,7 +5797,7 @@ function renderSlot(slots, name, props, fallback, noSlotted, branchKey) {
5776
5797
  try {
5777
5798
  const validSlotContent = slot && ensureValidVNode(slot(props));
5778
5799
  let attached = false;
5779
- if (fallback && validSlotContent && currentRenderingInstance) {
5800
+ if (isVaporInteropEnabled && fallback && validSlotContent && currentRenderingInstance) {
5780
5801
  const interop = currentRenderingInstance.appContext.vapor;
5781
5802
  if (interop) attached = interop.attachSlotOutlet(validSlotContent, fallback, currentRenderingInstance);
5782
5803
  }
@@ -6736,7 +6757,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
6736
6757
  if (options.el) return vm.$mount(options.el);
6737
6758
  else return vm;
6738
6759
  }
6739
- Vue.version = `2.6.14-compat:3.6.0-rc.12`;
6760
+ Vue.version = `2.6.14-compat:3.6.0-rc.13`;
6740
6761
  Vue.config = singletonApp.config;
6741
6762
  Vue.use = (plugin, ...options) => {
6742
6763
  if (plugin && isFunction(plugin.install)) plugin.install(Vue, ...options);
@@ -8100,7 +8121,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8100
8121
  processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
8101
8122
  break;
8102
8123
  case VaporSlot:
8103
- getVaporInterface(parentComponent, n2).slot(n1, n2, container, anchor, parentComponent, parentSuspense, slotScopeIds);
8124
+ if (isVaporInteropEnabled) getVaporInterface(parentComponent, n2).slot(n1, n2, container, anchor, parentComponent, parentSuspense, slotScopeIds);
8104
8125
  break;
8105
8126
  default: if (shapeFlag & 1) processElement(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
8106
8127
  else if (shapeFlag & 6) processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
@@ -8234,7 +8255,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8234
8255
  let vnodeHook;
8235
8256
  parentComponent && toggleRecurse(parentComponent, false);
8236
8257
  if (vnodeHook = newProps.onVnodeBeforeUpdate) invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
8237
- if (n2.ibu) n2.ibu();
8258
+ if (isVaporInteropEnabled && n2.ibu) n2.ibu();
8238
8259
  if (dirs) invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate");
8239
8260
  parentComponent && toggleRecurse(parentComponent, true);
8240
8261
  if (isHmrUpdating || dynamicChildren && (!n1.dynamicChildren || n1.dynamicChildren.length !== dynamicChildren.length)) {
@@ -8268,9 +8289,9 @@ function baseCreateRenderer(options, createHydrationFns) {
8268
8289
  if (n1.children !== n2.children) hostSetElementText(el, n2.children);
8269
8290
  }
8270
8291
  } else if (!optimized && dynamicChildren == null) patchProps(el, oldProps, newProps, parentComponent, namespace);
8271
- if ((vnodeHook = newProps.onVnodeUpdated) || dirs || n2.iu) queuePostRenderEffect(() => {
8292
+ if ((vnodeHook = newProps.onVnodeUpdated) || dirs || isVaporInteropEnabled && n2.iu) queuePostRenderEffect(() => {
8272
8293
  vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
8273
- n2.iu && n2.iu();
8294
+ isVaporInteropEnabled && n2.iu && n2.iu();
8274
8295
  dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated");
8275
8296
  }, void 0, parentSuspense);
8276
8297
  };
@@ -8486,7 +8507,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8486
8507
  } else next = vnode;
8487
8508
  if (bu) invokeArrayFns(bu);
8488
8509
  if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) invokeVNodeHook(vnodeHook, parent, next, vnode);
8489
- if (next.ibu) next.ibu();
8510
+ if (isVaporInteropEnabled && next.ibu) next.ibu();
8490
8511
  if (isCompatEnabled$1("INSTANCE_EVENT_HOOKS", instance)) instance.emit("hook:beforeUpdate");
8491
8512
  toggleRecurse(instance, true);
8492
8513
  startMeasure(instance, `render`);
@@ -8500,9 +8521,9 @@ function baseCreateRenderer(options, createHydrationFns) {
8500
8521
  next.el = nextTree.el;
8501
8522
  if (originNext === null) updateHOCHostEl(instance, nextTree.el);
8502
8523
  if (u) queuePostRenderEffect(u, void 0, parentSuspense);
8503
- if ((vnodeHook = next.props && next.props.onVnodeUpdated) || next.iu) queuePostRenderEffect(() => {
8524
+ if ((vnodeHook = next.props && next.props.onVnodeUpdated) || isVaporInteropEnabled && next.iu) queuePostRenderEffect(() => {
8504
8525
  vnodeHook && invokeVNodeHook(vnodeHook, parent, next, vnode);
8505
- next.iu && next.iu();
8526
+ isVaporInteropEnabled && next.iu && next.iu();
8506
8527
  }, void 0, parentSuspense);
8507
8528
  if (isCompatEnabled$1("INSTANCE_EVENT_HOOKS", instance)) queuePostRenderEffect(() => instance.emit("hook:updated"), void 0, parentSuspense);
8508
8529
  devtoolsComponentUpdated(instance);
@@ -8655,7 +8676,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8655
8676
  };
8656
8677
  const move = (vnode, container, anchor, moveType, parentComponent, parentSuspense = null) => {
8657
8678
  const { el, type, transition, children, shapeFlag } = vnode;
8658
- if (isVaporComponent(type) || type === VaporSlot) {
8679
+ if (isVaporInteropEnabled && (isVaporComponent(type) || type === VaporSlot)) {
8659
8680
  getVaporInterface(parentComponent, vnode).move(vnode, container, anchor, moveType, parentSuspense);
8660
8681
  return;
8661
8682
  }
@@ -8699,11 +8720,11 @@ function baseCreateRenderer(options, createHydrationFns) {
8699
8720
  }
8700
8721
  if (cacheIndex != null && (!vnode.ctx || vnode.ctx === parentComponent)) parentComponent.renderCache[cacheIndex] = void 0;
8701
8722
  if (shapeFlag & 256) {
8702
- if (isVaporComponent(vnode.type)) getVaporInterface(parentComponent, vnode).deactivate(vnode, parentComponent.ctx.getStorageContainer(), parentSuspense);
8723
+ if (isVaporInteropEnabled && isVaporComponent(vnode.type)) getVaporInterface(parentComponent, vnode).deactivate(vnode, parentComponent.ctx.getStorageContainer(), parentSuspense);
8703
8724
  else parentComponent.ctx.deactivate(vnode);
8704
8725
  return;
8705
8726
  }
8706
- if (shapeFlag & 6 && isVaporComponent(type)) {
8727
+ if (isVaporInteropEnabled && shapeFlag & 6 && isVaporComponent(type)) {
8707
8728
  getVaporInterface(parentComponent, vnode).unmount(vnode, doRemove, parentSuspense);
8708
8729
  return;
8709
8730
  }
@@ -8721,7 +8742,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8721
8742
  if (shapeFlag & 64) vnode.type.remove(vnode, parentComponent, parentSuspense, internals, doRemove);
8722
8743
  else if (dynamicChildren && !dynamicChildren.hasOnce && (type !== Fragment || patchFlag > 0 && patchFlag & 64)) unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true);
8723
8744
  else if (type === Fragment && patchFlag & 384 || !optimized && shapeFlag & 16) unmountChildren(children, parentComponent, parentSuspense);
8724
- if (type === VaporSlot) {
8745
+ if (isVaporInteropEnabled && type === VaporSlot) {
8725
8746
  getVaporInterface(parentComponent, vnode).unmount(vnode, doRemove, parentSuspense);
8726
8747
  return;
8727
8748
  }
@@ -8755,7 +8776,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8755
8776
  if (transition) {
8756
8777
  let leavingEl = leavingNode && leavingNode.el;
8757
8778
  let isElement = !!(leavingNode && leavingNode.shapeFlag & 1);
8758
- if (isFragment && leavingNode && isVaporComponent(leavingNode.type)) {
8779
+ if (isVaporInteropEnabled && isFragment && leavingNode && isVaporComponent(leavingNode.type)) {
8759
8780
  leavingEl = getVaporInterface(leavingNode.component, leavingNode).getTransitionElement(leavingNode);
8760
8781
  isElement = !!leavingEl;
8761
8782
  }
@@ -8796,7 +8817,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8796
8817
  };
8797
8818
  const getNextHostNode = (vnode) => {
8798
8819
  if (vnode.shapeFlag & 6) {
8799
- if (isVaporComponent(vnode.type)) return hostNextSibling(vnode.anchor);
8820
+ if (isVaporInteropEnabled && isVaporComponent(vnode.type)) return hostNextSibling(vnode.anchor);
8800
8821
  return getNextHostNode(vnode.component.subTree);
8801
8822
  }
8802
8823
  if (vnode.shapeFlag & 128) return vnode.suspense.next();
@@ -8857,7 +8878,7 @@ function resolveChildrenNamespace({ type, props }, currentNamespace) {
8857
8878
  return currentNamespace === "svg" && type === "foreignObject" || currentNamespace === "mathml" && type === "annotation-xml" && props && props.encoding && props.encoding.includes("html") ? void 0 : currentNamespace;
8858
8879
  }
8859
8880
  function toggleRecurse({ effect, job, vapor }, allowed) {
8860
- if (!vapor) {
8881
+ if (!isVaporInteropEnabled || !vapor) {
8861
8882
  if (allowed) {
8862
8883
  effect.flags |= 128;
8863
8884
  job.flags |= 2;
@@ -8969,7 +8990,7 @@ function getInheritedScopeIds(vnode, parentComponent, includeVaporRootIds = true
8969
8990
  currentParent = currentParent.parent;
8970
8991
  } else break;
8971
8992
  }
8972
- const vaporScopeIds = includeVaporRootIds && currentVNode.vaporScopeIds;
8993
+ const vaporScopeIds = isVaporInteropEnabled && includeVaporRootIds && currentVNode.vaporScopeIds;
8973
8994
  if (vaporScopeIds) inheritedScopeIds.push(...vaporScopeIds);
8974
8995
  return inheritedScopeIds;
8975
8996
  }
@@ -8982,8 +9003,13 @@ function resolveAsyncComponentPlaceholder(anchorVnode) {
8982
9003
  //#endregion
8983
9004
  //#region packages/runtime-core/src/components/Suspense.ts
8984
9005
  const isSuspense = (type) => type.__isSuspense;
9006
+ let isSuspenseEnabled = false;
9007
+ function withSuspenseEnabled(value) {
9008
+ isSuspenseEnabled = true;
9009
+ return value;
9010
+ }
8985
9011
  let suspenseId = 0;
8986
- const Suspense = {
9012
+ const Suspense = /*@__PURE__*/ withSuspenseEnabled({
8987
9013
  name: "Suspense",
8988
9014
  __isSuspense: true,
8989
9015
  process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {
@@ -9000,7 +9026,7 @@ const Suspense = {
9000
9026
  },
9001
9027
  hydrate: hydrateSuspense,
9002
9028
  normalize: normalizeSuspenseChildren
9003
- };
9029
+ });
9004
9030
  function triggerEvent(vnode, name) {
9005
9031
  const eventListener = vnode.props && vnode.props[name];
9006
9032
  if (isFunction(eventListener)) eventListener();
@@ -9579,16 +9605,23 @@ function cloneVaporSlotMeta(vnode, extraProps) {
9579
9605
  if (!vaporSlot) return vaporSlot;
9580
9606
  const cloned = {
9581
9607
  slot: vaporSlot.slot,
9608
+ name: vaporSlot.name,
9582
9609
  outlets: vaporSlot.outlets,
9583
- props: vaporSlot.props
9610
+ props: vaporSlot.props,
9611
+ attrs: vaporSlot.attrs && vaporSlot.attrs === EMPTY_OBJ ? {} : vaporSlot.attrs,
9612
+ group: vaporSlot.group
9584
9613
  };
9585
- if (vaporSlot.props && extraProps) {
9614
+ const attrs = cloned.attrs;
9615
+ if (extraProps && vaporSlot.props) {
9586
9616
  let extraSlotProps;
9587
- for (const key in extraProps) if (key !== "key") {
9617
+ for (const key in extraProps) if (attrs ? !isReservedProp(key) : key !== "key") {
9588
9618
  if (!extraSlotProps) extraSlotProps = {};
9589
9619
  extraSlotProps[key] = extraProps[key];
9590
9620
  }
9591
- if (extraSlotProps) cloned.props = mergeProps(vaporSlot.props, extraSlotProps);
9621
+ if (extraSlotProps) {
9622
+ if (attrs) cloned.attrs = mergeProps(attrs, extraSlotProps);
9623
+ else cloned.props = mergeProps(vaporSlot.props, extraSlotProps);
9624
+ }
9592
9625
  }
9593
9626
  if (vnode.el) {
9594
9627
  cloned.state = vaporSlot.state;
@@ -9870,7 +9903,7 @@ function setupComponent(instance, isSSR = false, optimized = false) {
9870
9903
  isSSR && setInSSRSetupState(isSSR);
9871
9904
  const { props, children, vi } = instance.vnode;
9872
9905
  const isStateful = isStatefulComponent(instance);
9873
- if (vi) vi(instance);
9906
+ if (isVaporInteropEnabled && vi) vi(instance);
9874
9907
  else {
9875
9908
  initProps(instance, props, isStateful, isSSR);
9876
9909
  initSlots(instance, children, optimized || isSSR);
@@ -10294,7 +10327,7 @@ function isMemoSame(cached, memo) {
10294
10327
  }
10295
10328
  //#endregion
10296
10329
  //#region packages/runtime-core/src/index.ts
10297
- const version = "3.6.0-rc.12";
10330
+ const version = "3.6.0-rc.13";
10298
10331
  const warn = warn$1;
10299
10332
  /**
10300
10333
  * Runtime error messages. Only exposed in dev or esm builds.
@@ -11404,7 +11437,7 @@ const decorate = (t) => {
11404
11437
  t.__isBuiltIn = true;
11405
11438
  return t;
11406
11439
  };
11407
- const TransitionGroup = /* @__PURE__ */ decorate({
11440
+ const TransitionGroup = /*@__PURE__*/ withTransitionEnabled(/* @__PURE__ */ decorate({
11408
11441
  name: "TransitionGroup",
11409
11442
  props: /*@__PURE__*/ extend({}, TransitionPropsValidators, {
11410
11443
  tag: String,
@@ -11413,6 +11446,11 @@ const TransitionGroup = /* @__PURE__ */ decorate({
11413
11446
  setup(props, { slots }) {
11414
11447
  const instance = getCurrentInstance();
11415
11448
  const state = useTransitionState();
11449
+ const group = {
11450
+ props: {},
11451
+ state,
11452
+ instance
11453
+ };
11416
11454
  let prevChildren;
11417
11455
  let children;
11418
11456
  let origins;
@@ -11443,7 +11481,7 @@ const TransitionGroup = /* @__PURE__ */ decorate({
11443
11481
  });
11444
11482
  return () => {
11445
11483
  const rawProps = /* @__PURE__ */ toRaw(props);
11446
- const cssTransitionProps = resolveTransitionProps(rawProps);
11484
+ const cssTransitionProps = group.props = resolveTransitionProps(rawProps);
11447
11485
  let tag = rawProps.tag || Fragment;
11448
11486
  if (!rawProps.tag && compatUtils.checkCompatEnabled("TRANSITION_GROUP_ROOT", instance.parent)) tag = "span";
11449
11487
  prevChildren = [];
@@ -11454,12 +11492,17 @@ const TransitionGroup = /* @__PURE__ */ decorate({
11454
11492
  prevChildren.push(child);
11455
11493
  setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
11456
11494
  positionMap.set(child, getPosition(child.el));
11457
- }
11495
+ } else if (isVaporInteropEnabled && child.vs && child.vb) instance.appContext.vapor.forEachGroupChild(child, (el) => {
11496
+ const row = { el };
11497
+ prevChildren.push(row);
11498
+ positionMap.set(row, getPosition(el));
11499
+ });
11458
11500
  }
11459
11501
  children = slots.default ? getTransitionRawChildren(slots.default()) : [];
11460
11502
  for (let i = 0; i < children.length; i++) {
11461
11503
  const child = children[i];
11462
- if (child.key != null) setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
11504
+ if (isVaporInteropEnabled && child.vs) child.vs.group = group;
11505
+ else if (child.key != null) setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
11463
11506
  else if (child.type !== Text) warn(`<TransitionGroup> children must be keyed.`);
11464
11507
  }
11465
11508
  if (prevChildren.length) {
@@ -11473,7 +11516,7 @@ const TransitionGroup = /* @__PURE__ */ decorate({
11473
11516
  return createVNode(tag, null, children);
11474
11517
  };
11475
11518
  }
11476
- });
11519
+ }));
11477
11520
  function callPendingCbs(el) {
11478
11521
  if (el[moveCbKey]) el[moveCbKey]();
11479
11522
  if (el[enterCbKey]) el[enterCbKey]();
@@ -11617,7 +11660,7 @@ const vModelTextInit = (el, trim, number, lazy, set) => {
11617
11660
  if (e.target.composing) return;
11618
11661
  (set || el[assignKey])(castValue(el.value, trim, number || el.type === "number"));
11619
11662
  });
11620
- if (trim || number) addEventListener(el, "change", () => {
11663
+ if (trim || number || el.type === "number") addEventListener(el, "change", () => {
11621
11664
  el.value = castValue(el.value, trim, number || el.type === "number");
11622
11665
  });
11623
11666
  if (!lazy) {
@@ -11997,6 +12040,7 @@ var src_exports = /* @__PURE__ */ __exportAll({
11997
12040
  initCustomFormatter: () => initCustomFormatter,
11998
12041
  initDirectivesForSSR: () => initDirectivesForSSR,
11999
12042
  inject: () => inject,
12043
+ isKeepAliveEnabled: () => isKeepAliveEnabled,
12000
12044
  isMemoSame: () => isMemoSame,
12001
12045
  isProxy: () => isProxy,
12002
12046
  isReactive: () => isReactive,
@@ -12004,7 +12048,10 @@ var src_exports = /* @__PURE__ */ __exportAll({
12004
12048
  isRef: () => isRef,
12005
12049
  isRuntimeOnly: () => isRuntimeOnly,
12006
12050
  isShallow: () => isShallow,
12051
+ isSuspenseEnabled: () => isSuspenseEnabled,
12052
+ isTransitionEnabled: () => isTransitionEnabled,
12007
12053
  isVNode: () => isVNode,
12054
+ isVaporInteropEnabled: () => isVaporInteropEnabled,
12008
12055
  markRaw: () => markRaw,
12009
12056
  mergeDefaults: () => mergeDefaults,
12010
12057
  mergeModels: () => mergeModels,
@@ -12051,6 +12098,7 @@ var src_exports = /* @__PURE__ */ __exportAll({
12051
12098
  setDevtoolsHook: () => setDevtoolsHook,
12052
12099
  setIsHydratingEnabled: () => setIsHydratingEnabled,
12053
12100
  setTransitionHooks: () => setTransitionHooks,
12101
+ setVaporInteropEnabled: () => setVaporInteropEnabled,
12054
12102
  shallowReactive: () => shallowReactive,
12055
12103
  shallowReadonly: () => shallowReadonly,
12056
12104
  shallowRef: () => shallowRef,
@@ -12095,10 +12143,13 @@ var src_exports = /* @__PURE__ */ __exportAll({
12095
12143
  withCtx: () => withCtx,
12096
12144
  withDefaults: () => withDefaults,
12097
12145
  withDirectives: () => withDirectives,
12146
+ withKeepAliveEnabled: () => withKeepAliveEnabled,
12098
12147
  withKeys: () => withKeys,
12099
12148
  withMemo: () => withMemo,
12100
12149
  withModifiers: () => withModifiers,
12101
- withScopeId: () => withScopeId
12150
+ withScopeId: () => withScopeId,
12151
+ withSuspenseEnabled: () => withSuspenseEnabled,
12152
+ withTransitionEnabled: () => withTransitionEnabled
12102
12153
  });
12103
12154
  const rendererOptions = /*@__PURE__*/ extend({ patchProp }, nodeOps);
12104
12155
  let renderer;