@vue/runtime-dom 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,9 +1,9 @@
1
1
  /**
2
- * @vue/runtime-dom v3.6.0-rc.12
2
+ * @vue/runtime-dom v3.6.0-rc.14
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
6
- import { BaseTransition, BaseTransitionPropsValidators, Fragment, Static, Text, assertNumber, callWithAsyncErrorHandling, camelize, createHydrationRenderer, createRenderer, createVNode, defineComponent, getCurrentInstance, getTransitionRawChildren, h, isRuntimeOnly, nextTick, onBeforeUpdate, onMounted, onUnmounted, onUpdated, queuePostFlushCb, resolveTransitionHooks, setIsHydratingEnabled, setTransitionHooks, toRaw, unref, useInstanceOption, useTransitionState, warn, watch } from "@vue/runtime-core";
6
+ import { BaseTransition, BaseTransitionPropsValidators, Fragment, Static, Text, assertNumber, callWithAsyncErrorHandling, camelize, createHydrationRenderer, createRenderer, createVNode, defineComponent, getCurrentInstance, getTransitionRawChildren, h, isRuntimeOnly, isVaporInteropEnabled, nextTick, onBeforeUpdate, onMounted, onUnmounted, onUpdated, queuePostFlushCb, resolveTransitionHooks, setIsHydratingEnabled, setTransitionHooks, toRaw, unref, useInstanceOption, useTransitionState, warn, watch, withTransitionEnabled } from "@vue/runtime-core";
7
7
  import { EMPTY_OBJ, NOOP, camelize as camelize$1, canSetValueDirectly, capitalize, extend, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isFunction, isHTMLTag, isMathMLTag, isModelListener, isNativeOn, isObject, isOn, isPlainObject, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, looseEqual, looseIndexOf, looseToNumber, normalizeCssVarValue, shouldSetAsAttr, toNumber } from "@vue/shared";
8
8
  export * from "@vue/runtime-core";
9
9
  //#region packages/runtime-dom/src/nodeOps.ts
@@ -400,14 +400,14 @@ function setVarsOnVNode(vnode, vars) {
400
400
  }
401
401
  while (vnode.component) {
402
402
  const component = vnode.component;
403
- if (component.vapor) {
403
+ if (isVaporInteropEnabled && component.vapor) {
404
404
  component.appContext.vapor.applyCssVars(vnode, vars);
405
405
  return;
406
406
  }
407
407
  vnode = vnode.component.subTree;
408
408
  }
409
409
  if (vnode.shapeFlag & 1 && vnode.el) setVarsOnNode(vnode.el, vars);
410
- else if (vnode.vb) vnode.ctx.appContext.vapor.applyCssVars(vnode, vars);
410
+ else if (isVaporInteropEnabled && vnode.vb) vnode.ctx.appContext.vapor.applyCssVars(vnode, vars);
411
411
  else if (vnode.type === Fragment) vnode.children.forEach((c) => setVarsOnVNode(c, vars));
412
412
  else if (vnode.type === Static) {
413
413
  let { el, anchor } = vnode;
@@ -1110,7 +1110,7 @@ const decorate = (t) => {
1110
1110
  delete t.props.mode;
1111
1111
  return t;
1112
1112
  };
1113
- const TransitionGroup = /* @__PURE__ */ decorate({
1113
+ const TransitionGroup = /*@__PURE__*/ withTransitionEnabled(/* @__PURE__ */ decorate({
1114
1114
  name: "TransitionGroup",
1115
1115
  props: /*@__PURE__*/ extend({}, TransitionPropsValidators, {
1116
1116
  tag: String,
@@ -1119,6 +1119,11 @@ const TransitionGroup = /* @__PURE__ */ decorate({
1119
1119
  setup(props, { slots }) {
1120
1120
  const instance = getCurrentInstance();
1121
1121
  const state = useTransitionState();
1122
+ const group = {
1123
+ props: {},
1124
+ state,
1125
+ instance
1126
+ };
1122
1127
  let prevChildren;
1123
1128
  let children;
1124
1129
  let origins;
@@ -1149,7 +1154,7 @@ const TransitionGroup = /* @__PURE__ */ decorate({
1149
1154
  });
1150
1155
  return () => {
1151
1156
  const rawProps = toRaw(props);
1152
- const cssTransitionProps = resolveTransitionProps(rawProps);
1157
+ const cssTransitionProps = group.props = resolveTransitionProps(rawProps);
1153
1158
  let tag = rawProps.tag || Fragment;
1154
1159
  prevChildren = [];
1155
1160
  moves = void 0;
@@ -1159,12 +1164,17 @@ const TransitionGroup = /* @__PURE__ */ decorate({
1159
1164
  prevChildren.push(child);
1160
1165
  setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
1161
1166
  positionMap.set(child, getPosition(child.el));
1162
- }
1167
+ } else if (isVaporInteropEnabled && child.vs && child.vb) instance.appContext.vapor.forEachGroupChild(child, (el) => {
1168
+ const row = { el };
1169
+ prevChildren.push(row);
1170
+ positionMap.set(row, getPosition(el));
1171
+ });
1163
1172
  }
1164
1173
  children = slots.default ? getTransitionRawChildren(slots.default()) : [];
1165
1174
  for (let i = 0; i < children.length; i++) {
1166
1175
  const child = children[i];
1167
- if (child.key != null) setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
1176
+ if (isVaporInteropEnabled && child.vs) child.vs.group = group;
1177
+ else if (child.key != null) setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
1168
1178
  else if (!!(process.env.NODE_ENV !== "production") && child.type !== Text) warn(`<TransitionGroup> children must be keyed.`);
1169
1179
  }
1170
1180
  if (prevChildren.length) {
@@ -1178,7 +1188,7 @@ const TransitionGroup = /* @__PURE__ */ decorate({
1178
1188
  return createVNode(tag, null, children);
1179
1189
  };
1180
1190
  }
1181
- });
1191
+ }));
1182
1192
  function callPendingCbs(el) {
1183
1193
  if (el[moveCbKey]) el[moveCbKey]();
1184
1194
  if (el[enterCbKey]) el[enterCbKey]();
@@ -1322,7 +1332,7 @@ const vModelTextInit = (el, trim, number, lazy, set) => {
1322
1332
  if (e.target.composing) return;
1323
1333
  (set || el[assignKey])(castValue(el.value, trim, number || el.type === "number"));
1324
1334
  });
1325
- if (trim || number) addEventListener(el, "change", () => {
1335
+ if (trim || number || el.type === "number") addEventListener(el, "change", () => {
1326
1336
  el.value = castValue(el.value, trim, number || el.type === "number");
1327
1337
  });
1328
1338
  if (!lazy) {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/runtime-dom v3.6.0-rc.12
2
+ * @vue/runtime-dom v3.6.0-rc.14
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -428,6 +428,21 @@ var VueRuntimeDOM = (function(exports) {
428
428
  return String(value);
429
429
  }
430
430
  //#endregion
431
+ //#region packages/shared/src/vaporFlags.ts
432
+ /**
433
+ * The data of the comment a vapor server render opens the branch of a `v-if`
434
+ * chain with, `<!--[1-->`: the digits are the branch's position in the chain,
435
+ * and `<!--]-->` closes it like a fragment.
436
+ */
437
+ function isVaporBranchStart(data) {
438
+ if (data.length < 2 || data.charCodeAt(0) !== 91) return false;
439
+ for (let i = 1; i < data.length; i++) {
440
+ const c = data.charCodeAt(i);
441
+ if (c < 48 || c > 57) return false;
442
+ }
443
+ return true;
444
+ }
445
+ //#endregion
431
446
  //#region packages/reactivity/src/debug.ts
432
447
  const triggerEventInfos = [];
433
448
  function onTrack(sub, debugInfo) {
@@ -3209,6 +3224,16 @@ var VueRuntimeDOM = (function(exports) {
3209
3224
  };
3210
3225
  }
3211
3226
  //#endregion
3227
+ //#region packages/runtime-core/src/vaporInteropState.ts
3228
+ /**
3229
+ * Set by `vaporInteropPlugin`. Stays false in apps that never import the
3230
+ * plugin, so bundlers drop the vapor-in-vdom branches of the renderer.
3231
+ */
3232
+ let isVaporInteropEnabled = false;
3233
+ function setVaporInteropEnabled() {
3234
+ isVaporInteropEnabled = true;
3235
+ }
3236
+ //#endregion
3212
3237
  //#region packages/runtime-core/src/components/Teleport.ts
3213
3238
  const pendingMounts = /* @__PURE__ */ new WeakMap();
3214
3239
  const TeleportEndKey = Symbol("_vte");
@@ -3468,13 +3493,18 @@ var VueRuntimeDOM = (function(exports) {
3468
3493
  onAfterAppear: TransitionHookValidator,
3469
3494
  onAppearCancelled: TransitionHookValidator
3470
3495
  };
3496
+ let isTransitionEnabled = false;
3497
+ function withTransitionEnabled(value) {
3498
+ isTransitionEnabled = true;
3499
+ return value;
3500
+ }
3471
3501
  function isEmptyTransitionChild(vnode, instance) {
3472
3502
  if (vnode.type === Comment) return true;
3473
3503
  if (vnode.type === Fragment) {
3474
3504
  const child = isArray(vnode.children) && filterSingleRoot(vnode.children, false);
3475
3505
  return !child || isEmptyTransitionChild(child, instance);
3476
3506
  }
3477
- if (vnode.type === VaporSlot || isVaporComponent(vnode.type)) return !getVaporInterface(instance, vnode).hasTransitionChild(vnode);
3507
+ if (isVaporInteropEnabled && (vnode.type === VaporSlot || isVaporComponent(vnode.type))) return !getVaporInterface(instance, vnode).hasTransitionChild(vnode);
3478
3508
  return !!vnode.component && isEmptyTransitionChild(vnode.component.subTree, instance);
3479
3509
  }
3480
3510
  const BaseTransitionImpl = {
@@ -3491,7 +3521,7 @@ var VueRuntimeDOM = (function(exports) {
3491
3521
  const { mode } = rawProps;
3492
3522
  checkTransitionMode(mode);
3493
3523
  return prepareTransitionSwitch(instance.subTree, child, rawProps, state, instance, mode === "out-in" ? resumeAfterLeave || (resumeAfterLeave = () => {
3494
- if (!(instance.job.flags & 4)) instance.update();
3524
+ if (!(instance.effect.flags & 1024)) instance.update();
3495
3525
  }) : NOOP);
3496
3526
  };
3497
3527
  }
@@ -3511,7 +3541,7 @@ var VueRuntimeDOM = (function(exports) {
3511
3541
  }
3512
3542
  return child;
3513
3543
  }
3514
- const BaseTransition = BaseTransitionImpl;
3544
+ const BaseTransition = /*@__PURE__*/ withTransitionEnabled(BaseTransitionImpl);
3515
3545
  function getLeavingNodesForType(state, vnode) {
3516
3546
  const { leavingNodes } = state;
3517
3547
  let leavingVNodesCache = leavingNodes.get(vnode.type);
@@ -3549,7 +3579,7 @@ var VueRuntimeDOM = (function(exports) {
3549
3579
  return hooks;
3550
3580
  }
3551
3581
  }, props, state, instance);
3552
- if (vnode.type === VaporSlot) extend(hooks, {
3582
+ if (isVaporInteropEnabled && vnode.type === VaporSlot) extend(hooks, {
3553
3583
  __vapor: true,
3554
3584
  props,
3555
3585
  state,
@@ -3726,7 +3756,7 @@ var VueRuntimeDOM = (function(exports) {
3726
3756
  function setTransitionHooks(vnode, hooks) {
3727
3757
  if (vnode.shapeFlag & 6 && vnode.component) {
3728
3758
  vnode.transition = hooks;
3729
- if (isVaporComponent(vnode.type)) getVaporInterface(vnode.component, vnode).setTransitionHooks(vnode.component, hooks);
3759
+ if (isVaporInteropEnabled && isVaporComponent(vnode.type)) getVaporInterface(vnode.component, vnode).setTransitionHooks(vnode.component, hooks);
3730
3760
  else {
3731
3761
  const subTree = vnode.component.subTree;
3732
3762
  return setTransitionHooks(isTeleport(subTree.type) ? getInnerChild$1(subTree) || subTree : subTree, hooks);
@@ -3765,7 +3795,7 @@ var VueRuntimeDOM = (function(exports) {
3765
3795
  if (mode && mode !== "in-out" && mode !== "out-in" && mode !== "default") warn$1(`invalid <transition> mode: ${mode}`);
3766
3796
  }
3767
3797
  function getTransitionRoot(vnode) {
3768
- if (vnode.component && !isVaporComponent(vnode.type)) return getTransitionRoot(vnode.component.subTree);
3798
+ if (vnode.component && (!isVaporInteropEnabled || !isVaporComponent(vnode.type))) return getTransitionRoot(vnode.component.subTree);
3769
3799
  if (vnode.type === Fragment) {
3770
3800
  const child = isArray(vnode.children) && filterSingleRoot(vnode.children, false);
3771
3801
  return child ? getTransitionRoot(child) : void 0;
@@ -3952,6 +3982,8 @@ var VueRuntimeDOM = (function(exports) {
3952
3982
  if (isMathMLContainer(container)) return "mathml";
3953
3983
  };
3954
3984
  const isComment = (node) => node.nodeType === 8;
3985
+ /** The data of a comment opening a range a hydration steps over as one. */
3986
+ const isRangeStart = (data) => data === "[" || data === "(" || isVaporBranchStart(data);
3955
3987
  function createHydrationFunctions(rendererInternals) {
3956
3988
  const { mt: mountComponent, p: patch, o: { patchProp, createText, nextSibling, parentNode, remove, insert, createComment } } = rendererInternals;
3957
3989
  const hydrate = (vnode, container) => {
@@ -3969,7 +4001,7 @@ var VueRuntimeDOM = (function(exports) {
3969
4001
  };
3970
4002
  const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {
3971
4003
  optimized = optimized || !!vnode.dynamicChildren;
3972
- const isFragmentStart = isComment(node) && (node.data === "[" || node.data === "(");
4004
+ const isFragmentStart = isComment(node) && (node.data === "[" || node.data === "(" || isVaporInteropEnabled && isVaporBranchStart(node.data));
3973
4005
  const onMismatch = () => handleMismatch(node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragmentStart);
3974
4006
  const { type, ref, shapeFlag, patchFlag } = vnode;
3975
4007
  let domType = node.nodeType;
@@ -4025,7 +4057,7 @@ var VueRuntimeDOM = (function(exports) {
4025
4057
  else nextNode = hydrateFragment(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);
4026
4058
  break;
4027
4059
  case VaporSlot:
4028
- nextNode = getVaporInterface(parentComponent, vnode).hydrateSlot(vnode, node, parentComponent, parentSuspense, slotScopeIds);
4060
+ if (isVaporInteropEnabled) nextNode = getVaporInterface(parentComponent, vnode).hydrateSlot(vnode, node, parentComponent, parentSuspense, slotScopeIds);
4029
4061
  break;
4030
4062
  default: if (shapeFlag & 1) {
4031
4063
  if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) nextNode = onMismatch();
@@ -4157,7 +4189,7 @@ var VueRuntimeDOM = (function(exports) {
4157
4189
  if (fragmentSlotScopeIds) slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;
4158
4190
  const container = parentNode(node);
4159
4191
  const first = nextSibling(node);
4160
- const next = vnode.vo && node.data === "(" ? getVaporInterface(parentComponent, vnode).hydrateSlotOutlet(vnode, node, parentComponent, parentSuspense, slotScopeIds) : hydrateChildren(first, vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized);
4192
+ const next = isVaporInteropEnabled && vnode.vo && node.data === "(" ? getVaporInterface(parentComponent, vnode).hydrateSlotOutlet(vnode, node, parentComponent, parentSuspense, slotScopeIds) : hydrateChildren(first, vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized);
4161
4193
  if (next && isComment(next) && next.data === (node.data === "(" ? ")" : "]")) return nextSibling(vnode.anchor = next);
4162
4194
  else {
4163
4195
  logMismatchError();
@@ -4167,7 +4199,7 @@ var VueRuntimeDOM = (function(exports) {
4167
4199
  };
4168
4200
  const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {
4169
4201
  if (!isNodeMismatchAllowed(node, vnode)) {
4170
- warn$1(`Hydration node mismatch:\n- rendered on server:`, node, node.nodeType === 3 ? `(text)` : isComment(node) && (node.data === "[" || node.data === "(") ? `(start of fragment)` : ``, `\n- expected on client:`, vnode.type);
4202
+ warn$1(`Hydration node mismatch:\n- rendered on server:`, node, node.nodeType === 3 ? `(text)` : isComment(node) && isRangeStart(node.data) ? `(start of fragment)` : ``, `\n- expected on client:`, vnode.type);
4171
4203
  logMismatchError();
4172
4204
  }
4173
4205
  vnode.el = null;
@@ -4194,7 +4226,7 @@ var VueRuntimeDOM = (function(exports) {
4194
4226
  while (node) {
4195
4227
  node = nextSibling(node);
4196
4228
  if (node && isComment(node)) {
4197
- if (node.data === open) match++;
4229
+ if (node.data === open || isVaporInteropEnabled && open === "[" && isVaporBranchStart(node.data)) match++;
4198
4230
  if (node.data === close) {
4199
4231
  if (match === 0) return nextSibling(node);
4200
4232
  else match--;
@@ -4450,9 +4482,9 @@ var VueRuntimeDOM = (function(exports) {
4450
4482
  return teardown;
4451
4483
  };
4452
4484
  function forEachElement(node, cb) {
4453
- if (isComment(node) && (node.data === "[" || node.data === "(")) {
4485
+ if (isComment(node) && isRangeStart(node.data)) {
4454
4486
  const open = node.data;
4455
- const close = open === "[" ? "]" : ")";
4487
+ const close = open === "(" ? ")" : "]";
4456
4488
  let depth = 1;
4457
4489
  let next = node.nextSibling;
4458
4490
  while (next) {
@@ -4461,7 +4493,7 @@ var VueRuntimeDOM = (function(exports) {
4461
4493
  } else if (isComment(next)) {
4462
4494
  if (next.data === close) {
4463
4495
  if (--depth === 0) break;
4464
- } else if (next.data === open) depth++;
4496
+ } else if (close === "]" ? next.data === "[" || isVaporBranchStart(next.data) : next.data === open) depth++;
4465
4497
  }
4466
4498
  next = next.nextSibling;
4467
4499
  }
@@ -4564,7 +4596,7 @@ var VueRuntimeDOM = (function(exports) {
4564
4596
  setPendingRequest: (request) => pendingRequest = request
4565
4597
  };
4566
4598
  }
4567
- const useAsyncComponentState = (delay, timeout, onError, instance = currentInstance) => {
4599
+ const useAsyncComponentState = (delay = 200, timeout, onError, instance = currentInstance) => {
4568
4600
  const loaded = /* @__PURE__ */ ref(false);
4569
4601
  const error = /* @__PURE__ */ ref();
4570
4602
  const delayed = /* @__PURE__ */ ref(!!delay);
@@ -4621,7 +4653,12 @@ var VueRuntimeDOM = (function(exports) {
4621
4653
  //#endregion
4622
4654
  //#region packages/runtime-core/src/components/KeepAlive.ts
4623
4655
  const isKeepAlive = (vnode) => vnode.type.__isKeepAlive;
4624
- const KeepAlive = {
4656
+ let isKeepAliveEnabled = false;
4657
+ function withKeepAliveEnabled(value) {
4658
+ isKeepAliveEnabled = true;
4659
+ return value;
4660
+ }
4661
+ const KeepAlive = /*@__PURE__*/ withKeepAliveEnabled({
4625
4662
  name: `KeepAlive`,
4626
4663
  __isKeepAlive: true,
4627
4664
  props: {
@@ -4760,7 +4797,7 @@ var VueRuntimeDOM = (function(exports) {
4760
4797
  return isSuspense(rawVNode.type) ? rawVNode : vnode;
4761
4798
  };
4762
4799
  }
4763
- };
4800
+ });
4764
4801
  function matches(pattern, name) {
4765
4802
  if (isArray(pattern)) return pattern.some((p) => matches(p, name));
4766
4803
  else if (isString(pattern)) return pattern.split(",").includes(name);
@@ -4992,11 +5029,12 @@ var VueRuntimeDOM = (function(exports) {
4992
5029
  function renderSlot(slots, name, props, fallback, noSlotted, branchKey) {
4993
5030
  if (props == null) props = {};
4994
5031
  let slot = slots[name];
4995
- const vaporSlot = slot && slot[rawVaporSlotKey];
5032
+ const vaporSlot = isVaporInteropEnabled && slot && slot[rawVaporSlotKey];
4996
5033
  if (vaporSlot) {
4997
5034
  const ret = (openBlock(), createBlock(VaporSlot, props));
4998
5035
  ret.vs = {
4999
5036
  slot: vaporSlot,
5037
+ name,
5000
5038
  outlets: fallback ? [{
5001
5039
  fallback,
5002
5040
  owner: currentRenderingInstance
@@ -5027,7 +5065,7 @@ var VueRuntimeDOM = (function(exports) {
5027
5065
  try {
5028
5066
  const validSlotContent = slot && ensureValidVNode(slot(props));
5029
5067
  let attached = false;
5030
- if (fallback && validSlotContent && currentRenderingInstance) {
5068
+ if (isVaporInteropEnabled && fallback && validSlotContent && currentRenderingInstance) {
5031
5069
  const interop = currentRenderingInstance.appContext.vapor;
5032
5070
  if (interop) attached = interop.attachSlotOutlet(validSlotContent, fallback, currentRenderingInstance);
5033
5071
  }
@@ -6711,7 +6749,7 @@ var VueRuntimeDOM = (function(exports) {
6711
6749
  processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
6712
6750
  break;
6713
6751
  case VaporSlot:
6714
- getVaporInterface(parentComponent, n2).slot(n1, n2, container, anchor, parentComponent, parentSuspense, slotScopeIds);
6752
+ if (isVaporInteropEnabled) getVaporInterface(parentComponent, n2).slot(n1, n2, container, anchor, parentComponent, parentSuspense, slotScopeIds);
6715
6753
  break;
6716
6754
  default: if (shapeFlag & 1) processElement(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
6717
6755
  else if (shapeFlag & 6) processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
@@ -6845,7 +6883,7 @@ var VueRuntimeDOM = (function(exports) {
6845
6883
  let vnodeHook;
6846
6884
  parentComponent && toggleRecurse(parentComponent, false);
6847
6885
  if (vnodeHook = newProps.onVnodeBeforeUpdate) invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
6848
- if (n2.ibu) n2.ibu();
6886
+ if (isVaporInteropEnabled && n2.ibu) n2.ibu();
6849
6887
  if (dirs) invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate");
6850
6888
  parentComponent && toggleRecurse(parentComponent, true);
6851
6889
  if (isHmrUpdating || dynamicChildren && (!n1.dynamicChildren || n1.dynamicChildren.length !== dynamicChildren.length)) {
@@ -6879,9 +6917,9 @@ var VueRuntimeDOM = (function(exports) {
6879
6917
  if (n1.children !== n2.children) hostSetElementText(el, n2.children);
6880
6918
  }
6881
6919
  } else if (!optimized && dynamicChildren == null) patchProps(el, oldProps, newProps, parentComponent, namespace);
6882
- if ((vnodeHook = newProps.onVnodeUpdated) || dirs || n2.iu) queuePostRenderEffect(() => {
6920
+ if ((vnodeHook = newProps.onVnodeUpdated) || dirs || isVaporInteropEnabled && n2.iu) queuePostRenderEffect(() => {
6883
6921
  vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
6884
- n2.iu && n2.iu();
6922
+ isVaporInteropEnabled && n2.iu && n2.iu();
6885
6923
  dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated");
6886
6924
  }, void 0, parentSuspense);
6887
6925
  };
@@ -7089,7 +7127,7 @@ var VueRuntimeDOM = (function(exports) {
7089
7127
  } else next = vnode;
7090
7128
  if (bu) invokeArrayFns(bu);
7091
7129
  if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) invokeVNodeHook(vnodeHook, parent, next, vnode);
7092
- if (next.ibu) next.ibu();
7130
+ if (isVaporInteropEnabled && next.ibu) next.ibu();
7093
7131
  toggleRecurse(instance, true);
7094
7132
  startMeasure(instance, `render`);
7095
7133
  const nextTree = renderComponentRoot(instance);
@@ -7102,9 +7140,9 @@ var VueRuntimeDOM = (function(exports) {
7102
7140
  next.el = nextTree.el;
7103
7141
  if (originNext === null) updateHOCHostEl(instance, nextTree.el);
7104
7142
  if (u) queuePostRenderEffect(u, void 0, parentSuspense);
7105
- if ((vnodeHook = next.props && next.props.onVnodeUpdated) || next.iu) queuePostRenderEffect(() => {
7143
+ if ((vnodeHook = next.props && next.props.onVnodeUpdated) || isVaporInteropEnabled && next.iu) queuePostRenderEffect(() => {
7106
7144
  vnodeHook && invokeVNodeHook(vnodeHook, parent, next, vnode);
7107
- next.iu && next.iu();
7145
+ isVaporInteropEnabled && next.iu && next.iu();
7108
7146
  }, void 0, parentSuspense);
7109
7147
  devtoolsComponentUpdated(instance);
7110
7148
  popWarningContext();
@@ -7256,7 +7294,7 @@ var VueRuntimeDOM = (function(exports) {
7256
7294
  };
7257
7295
  const move = (vnode, container, anchor, moveType, parentComponent, parentSuspense = null) => {
7258
7296
  const { el, type, transition, children, shapeFlag } = vnode;
7259
- if (isVaporComponent(type) || type === VaporSlot) {
7297
+ if (isVaporInteropEnabled && (isVaporComponent(type) || type === VaporSlot)) {
7260
7298
  getVaporInterface(parentComponent, vnode).move(vnode, container, anchor, moveType, parentSuspense);
7261
7299
  return;
7262
7300
  }
@@ -7300,11 +7338,11 @@ var VueRuntimeDOM = (function(exports) {
7300
7338
  }
7301
7339
  if (cacheIndex != null && (!vnode.ctx || vnode.ctx === parentComponent)) parentComponent.renderCache[cacheIndex] = void 0;
7302
7340
  if (shapeFlag & 256) {
7303
- if (isVaporComponent(vnode.type)) getVaporInterface(parentComponent, vnode).deactivate(vnode, parentComponent.ctx.getStorageContainer(), parentSuspense);
7341
+ if (isVaporInteropEnabled && isVaporComponent(vnode.type)) getVaporInterface(parentComponent, vnode).deactivate(vnode, parentComponent.ctx.getStorageContainer(), parentSuspense);
7304
7342
  else parentComponent.ctx.deactivate(vnode);
7305
7343
  return;
7306
7344
  }
7307
- if (shapeFlag & 6 && isVaporComponent(type)) {
7345
+ if (isVaporInteropEnabled && shapeFlag & 6 && isVaporComponent(type)) {
7308
7346
  getVaporInterface(parentComponent, vnode).unmount(vnode, doRemove, parentSuspense);
7309
7347
  return;
7310
7348
  }
@@ -7322,7 +7360,7 @@ var VueRuntimeDOM = (function(exports) {
7322
7360
  if (shapeFlag & 64) vnode.type.remove(vnode, parentComponent, parentSuspense, internals, doRemove);
7323
7361
  else if (dynamicChildren && !dynamicChildren.hasOnce && (type !== Fragment || patchFlag > 0 && patchFlag & 64)) unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true);
7324
7362
  else if (type === Fragment && patchFlag & 384 || !optimized && shapeFlag & 16) unmountChildren(children, parentComponent, parentSuspense);
7325
- if (type === VaporSlot) {
7363
+ if (isVaporInteropEnabled && type === VaporSlot) {
7326
7364
  getVaporInterface(parentComponent, vnode).unmount(vnode, doRemove, parentSuspense);
7327
7365
  return;
7328
7366
  }
@@ -7356,7 +7394,7 @@ var VueRuntimeDOM = (function(exports) {
7356
7394
  if (transition) {
7357
7395
  let leavingEl = leavingNode && leavingNode.el;
7358
7396
  let isElement = !!(leavingNode && leavingNode.shapeFlag & 1);
7359
- if (isFragment && leavingNode && isVaporComponent(leavingNode.type)) {
7397
+ if (isVaporInteropEnabled && isFragment && leavingNode && isVaporComponent(leavingNode.type)) {
7360
7398
  leavingEl = getVaporInterface(leavingNode.component, leavingNode).getTransitionElement(leavingNode);
7361
7399
  isElement = !!leavingEl;
7362
7400
  }
@@ -7395,7 +7433,7 @@ var VueRuntimeDOM = (function(exports) {
7395
7433
  };
7396
7434
  const getNextHostNode = (vnode) => {
7397
7435
  if (vnode.shapeFlag & 6) {
7398
- if (isVaporComponent(vnode.type)) return hostNextSibling(vnode.anchor);
7436
+ if (isVaporInteropEnabled && isVaporComponent(vnode.type)) return hostNextSibling(vnode.anchor);
7399
7437
  return getNextHostNode(vnode.component.subTree);
7400
7438
  }
7401
7439
  if (vnode.shapeFlag & 128) return vnode.suspense.next();
@@ -7456,7 +7494,7 @@ var VueRuntimeDOM = (function(exports) {
7456
7494
  return currentNamespace === "svg" && type === "foreignObject" || currentNamespace === "mathml" && type === "annotation-xml" && props && props.encoding && props.encoding.includes("html") ? void 0 : currentNamespace;
7457
7495
  }
7458
7496
  function toggleRecurse({ effect, job, vapor }, allowed) {
7459
- if (!vapor) {
7497
+ if (!isVaporInteropEnabled || !vapor) {
7460
7498
  if (allowed) {
7461
7499
  effect.flags |= 128;
7462
7500
  job.flags |= 2;
@@ -7568,7 +7606,7 @@ var VueRuntimeDOM = (function(exports) {
7568
7606
  currentParent = currentParent.parent;
7569
7607
  } else break;
7570
7608
  }
7571
- const vaporScopeIds = includeVaporRootIds && currentVNode.vaporScopeIds;
7609
+ const vaporScopeIds = isVaporInteropEnabled && includeVaporRootIds && currentVNode.vaporScopeIds;
7572
7610
  if (vaporScopeIds) inheritedScopeIds.push(...vaporScopeIds);
7573
7611
  return inheritedScopeIds;
7574
7612
  }
@@ -7581,8 +7619,13 @@ var VueRuntimeDOM = (function(exports) {
7581
7619
  //#endregion
7582
7620
  //#region packages/runtime-core/src/components/Suspense.ts
7583
7621
  const isSuspense = (type) => type.__isSuspense;
7622
+ let isSuspenseEnabled = false;
7623
+ function withSuspenseEnabled(value) {
7624
+ isSuspenseEnabled = true;
7625
+ return value;
7626
+ }
7584
7627
  let suspenseId = 0;
7585
- const Suspense = {
7628
+ const Suspense = /*@__PURE__*/ withSuspenseEnabled({
7586
7629
  name: "Suspense",
7587
7630
  __isSuspense: true,
7588
7631
  process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {
@@ -7599,7 +7642,7 @@ var VueRuntimeDOM = (function(exports) {
7599
7642
  },
7600
7643
  hydrate: hydrateSuspense,
7601
7644
  normalize: normalizeSuspenseChildren
7602
- };
7645
+ });
7603
7646
  function triggerEvent(vnode, name) {
7604
7647
  const eventListener = vnode.props && vnode.props[name];
7605
7648
  if (isFunction(eventListener)) eventListener();
@@ -8134,16 +8177,23 @@ var VueRuntimeDOM = (function(exports) {
8134
8177
  if (!vaporSlot) return vaporSlot;
8135
8178
  const cloned = {
8136
8179
  slot: vaporSlot.slot,
8180
+ name: vaporSlot.name,
8137
8181
  outlets: vaporSlot.outlets,
8138
- props: vaporSlot.props
8182
+ props: vaporSlot.props,
8183
+ attrs: vaporSlot.attrs && vaporSlot.attrs === EMPTY_OBJ ? {} : vaporSlot.attrs,
8184
+ group: vaporSlot.group
8139
8185
  };
8140
- if (vaporSlot.props && extraProps) {
8186
+ const attrs = cloned.attrs;
8187
+ if (extraProps && vaporSlot.props) {
8141
8188
  let extraSlotProps;
8142
- for (const key in extraProps) if (key !== "key") {
8189
+ for (const key in extraProps) if (attrs ? !isReservedProp(key) : key !== "key") {
8143
8190
  if (!extraSlotProps) extraSlotProps = {};
8144
8191
  extraSlotProps[key] = extraProps[key];
8145
8192
  }
8146
- if (extraSlotProps) cloned.props = mergeProps(vaporSlot.props, extraSlotProps);
8193
+ if (extraSlotProps) {
8194
+ if (attrs) cloned.attrs = mergeProps(attrs, extraSlotProps);
8195
+ else cloned.props = mergeProps(vaporSlot.props, extraSlotProps);
8196
+ }
8147
8197
  }
8148
8198
  if (vnode.el) {
8149
8199
  cloned.state = vaporSlot.state;
@@ -8416,7 +8466,7 @@ var VueRuntimeDOM = (function(exports) {
8416
8466
  isSSR && setInSSRSetupState(isSSR);
8417
8467
  const { props, children, vi } = instance.vnode;
8418
8468
  const isStateful = isStatefulComponent(instance);
8419
- if (vi) vi(instance);
8469
+ if (isVaporInteropEnabled && vi) vi(instance);
8420
8470
  else {
8421
8471
  initProps(instance, props, isStateful, isSSR);
8422
8472
  initSlots(instance, children, optimized || isSSR);
@@ -8834,7 +8884,7 @@ var VueRuntimeDOM = (function(exports) {
8834
8884
  }
8835
8885
  //#endregion
8836
8886
  //#region packages/runtime-core/src/index.ts
8837
- const version = "3.6.0-rc.12";
8887
+ const version = "3.6.0-rc.14";
8838
8888
  const warn = warn$1;
8839
8889
  /**
8840
8890
  * Runtime error messages. Only exposed in dev or esm builds.
@@ -9247,14 +9297,14 @@ var VueRuntimeDOM = (function(exports) {
9247
9297
  }
9248
9298
  while (vnode.component) {
9249
9299
  const component = vnode.component;
9250
- if (component.vapor) {
9300
+ if (isVaporInteropEnabled && component.vapor) {
9251
9301
  component.appContext.vapor.applyCssVars(vnode, vars);
9252
9302
  return;
9253
9303
  }
9254
9304
  vnode = vnode.component.subTree;
9255
9305
  }
9256
9306
  if (vnode.shapeFlag & 1 && vnode.el) setVarsOnNode(vnode.el, vars);
9257
- else if (vnode.vb) vnode.ctx.appContext.vapor.applyCssVars(vnode, vars);
9307
+ else if (isVaporInteropEnabled && vnode.vb) vnode.ctx.appContext.vapor.applyCssVars(vnode, vars);
9258
9308
  else if (vnode.type === Fragment) vnode.children.forEach((c) => setVarsOnVNode(c, vars));
9259
9309
  else if (vnode.type === Static) {
9260
9310
  let { el, anchor } = vnode;
@@ -9933,7 +9983,7 @@ var VueRuntimeDOM = (function(exports) {
9933
9983
  delete t.props.mode;
9934
9984
  return t;
9935
9985
  };
9936
- const TransitionGroup = /* @__PURE__ */ decorate({
9986
+ const TransitionGroup = /*@__PURE__*/ withTransitionEnabled(/* @__PURE__ */ decorate({
9937
9987
  name: "TransitionGroup",
9938
9988
  props: /*@__PURE__*/ extend({}, TransitionPropsValidators, {
9939
9989
  tag: String,
@@ -9942,6 +9992,11 @@ var VueRuntimeDOM = (function(exports) {
9942
9992
  setup(props, { slots }) {
9943
9993
  const instance = getCurrentInstance();
9944
9994
  const state = useTransitionState();
9995
+ const group = {
9996
+ props: {},
9997
+ state,
9998
+ instance
9999
+ };
9945
10000
  let prevChildren;
9946
10001
  let children;
9947
10002
  let origins;
@@ -9972,7 +10027,7 @@ var VueRuntimeDOM = (function(exports) {
9972
10027
  });
9973
10028
  return () => {
9974
10029
  const rawProps = /* @__PURE__ */ toRaw(props);
9975
- const cssTransitionProps = resolveTransitionProps(rawProps);
10030
+ const cssTransitionProps = group.props = resolveTransitionProps(rawProps);
9976
10031
  let tag = rawProps.tag || Fragment;
9977
10032
  prevChildren = [];
9978
10033
  moves = void 0;
@@ -9982,12 +10037,17 @@ var VueRuntimeDOM = (function(exports) {
9982
10037
  prevChildren.push(child);
9983
10038
  setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
9984
10039
  positionMap.set(child, getPosition(child.el));
9985
- }
10040
+ } else if (isVaporInteropEnabled && child.vs && child.vb) instance.appContext.vapor.forEachGroupChild(child, (el) => {
10041
+ const row = { el };
10042
+ prevChildren.push(row);
10043
+ positionMap.set(row, getPosition(el));
10044
+ });
9986
10045
  }
9987
10046
  children = slots.default ? getTransitionRawChildren(slots.default()) : [];
9988
10047
  for (let i = 0; i < children.length; i++) {
9989
10048
  const child = children[i];
9990
- if (child.key != null) setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
10049
+ if (isVaporInteropEnabled && child.vs) child.vs.group = group;
10050
+ else if (child.key != null) setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
9991
10051
  else if (child.type !== Text) warn(`<TransitionGroup> children must be keyed.`);
9992
10052
  }
9993
10053
  if (prevChildren.length) {
@@ -10001,7 +10061,7 @@ var VueRuntimeDOM = (function(exports) {
10001
10061
  return createVNode(tag, null, children);
10002
10062
  };
10003
10063
  }
10004
- });
10064
+ }));
10005
10065
  function callPendingCbs(el) {
10006
10066
  if (el[moveCbKey]) el[moveCbKey]();
10007
10067
  if (el[enterCbKey]) el[enterCbKey]();
@@ -10145,7 +10205,7 @@ var VueRuntimeDOM = (function(exports) {
10145
10205
  if (e.target.composing) return;
10146
10206
  (set || el[assignKey])(castValue(el.value, trim, number || el.type === "number"));
10147
10207
  });
10148
- if (trim || number) addEventListener(el, "change", () => {
10208
+ if (trim || number || el.type === "number") addEventListener(el, "change", () => {
10149
10209
  el.value = castValue(el.value, trim, number || el.type === "number");
10150
10210
  });
10151
10211
  if (!lazy) {
@@ -10589,6 +10649,12 @@ var VueRuntimeDOM = (function(exports) {
10589
10649
  exports.initCustomFormatter = initCustomFormatter;
10590
10650
  exports.initDirectivesForSSR = initDirectivesForSSR;
10591
10651
  exports.inject = inject;
10652
+ Object.defineProperty(exports, "isKeepAliveEnabled", {
10653
+ enumerable: true,
10654
+ get: function() {
10655
+ return isKeepAliveEnabled;
10656
+ }
10657
+ });
10592
10658
  exports.isMemoSame = isMemoSame;
10593
10659
  exports.isProxy = isProxy;
10594
10660
  exports.isReactive = isReactive;
@@ -10596,7 +10662,25 @@ var VueRuntimeDOM = (function(exports) {
10596
10662
  exports.isRef = isRef;
10597
10663
  exports.isRuntimeOnly = isRuntimeOnly;
10598
10664
  exports.isShallow = isShallow;
10665
+ Object.defineProperty(exports, "isSuspenseEnabled", {
10666
+ enumerable: true,
10667
+ get: function() {
10668
+ return isSuspenseEnabled;
10669
+ }
10670
+ });
10671
+ Object.defineProperty(exports, "isTransitionEnabled", {
10672
+ enumerable: true,
10673
+ get: function() {
10674
+ return isTransitionEnabled;
10675
+ }
10676
+ });
10599
10677
  exports.isVNode = isVNode;
10678
+ Object.defineProperty(exports, "isVaporInteropEnabled", {
10679
+ enumerable: true,
10680
+ get: function() {
10681
+ return isVaporInteropEnabled;
10682
+ }
10683
+ });
10600
10684
  exports.markRaw = markRaw;
10601
10685
  exports.mergeDefaults = mergeDefaults;
10602
10686
  exports.mergeModels = mergeModels;
@@ -10643,6 +10727,7 @@ var VueRuntimeDOM = (function(exports) {
10643
10727
  exports.setDevtoolsHook = setDevtoolsHook;
10644
10728
  exports.setIsHydratingEnabled = setIsHydratingEnabled;
10645
10729
  exports.setTransitionHooks = setTransitionHooks;
10730
+ exports.setVaporInteropEnabled = setVaporInteropEnabled;
10646
10731
  exports.shallowReactive = shallowReactive;
10647
10732
  exports.shallowReadonly = shallowReadonly;
10648
10733
  exports.shallowRef = shallowRef;
@@ -10687,9 +10772,12 @@ var VueRuntimeDOM = (function(exports) {
10687
10772
  exports.withCtx = withCtx;
10688
10773
  exports.withDefaults = withDefaults;
10689
10774
  exports.withDirectives = withDirectives;
10775
+ exports.withKeepAliveEnabled = withKeepAliveEnabled;
10690
10776
  exports.withKeys = withKeys;
10691
10777
  exports.withMemo = withMemo;
10692
10778
  exports.withModifiers = withModifiers;
10693
10779
  exports.withScopeId = withScopeId;
10780
+ exports.withSuspenseEnabled = withSuspenseEnabled;
10781
+ exports.withTransitionEnabled = withTransitionEnabled;
10694
10782
  return exports;
10695
10783
  })({});