@vue/compat 3.4.22 → 3.4.24

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.4.22
2
+ * @vue/compat v3.4.24
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -2542,11 +2542,6 @@ Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
2542
2542
  warnedInvalidKeys[key] = true;
2543
2543
  }
2544
2544
  }
2545
- if (instance && config["OPTIONS_DATA_MERGE"] != null) {
2546
- warn$1(
2547
- `Deprecation config "${"OPTIONS_DATA_MERGE"}" can only be configured globally.`
2548
- );
2549
- }
2550
2545
  }
2551
2546
  function getCompatConfigForKey(key, instance) {
2552
2547
  const instanceConfig = instance && instance.type.compatConfig;
@@ -2929,21 +2924,21 @@ function renderComponentRoot(instance) {
2929
2924
  vnode,
2930
2925
  proxy,
2931
2926
  withProxy,
2932
- props,
2933
2927
  propsOptions: [propsOptions],
2934
2928
  slots,
2935
2929
  attrs,
2936
2930
  emit,
2937
2931
  render,
2938
2932
  renderCache,
2933
+ props,
2939
2934
  data,
2940
2935
  setupState,
2941
2936
  ctx,
2942
2937
  inheritAttrs
2943
2938
  } = instance;
2939
+ const prev = setCurrentRenderingInstance(instance);
2944
2940
  let result;
2945
2941
  let fallthroughAttrs;
2946
- const prev = setCurrentRenderingInstance(instance);
2947
2942
  if (!!(process.env.NODE_ENV !== "production")) {
2948
2943
  accessedAttrs = false;
2949
2944
  }
@@ -2965,7 +2960,7 @@ function renderComponentRoot(instance) {
2965
2960
  thisProxy,
2966
2961
  proxyToUse,
2967
2962
  renderCache,
2968
- props,
2963
+ !!(process.env.NODE_ENV !== "production") ? shallowReadonly(props) : props,
2969
2964
  setupState,
2970
2965
  data,
2971
2966
  ctx
@@ -2979,7 +2974,7 @@ function renderComponentRoot(instance) {
2979
2974
  }
2980
2975
  result = normalizeVNode(
2981
2976
  render2.length > 1 ? render2(
2982
- props,
2977
+ !!(process.env.NODE_ENV !== "production") ? shallowReadonly(props) : props,
2983
2978
  !!(process.env.NODE_ENV !== "production") ? {
2984
2979
  get attrs() {
2985
2980
  markAttrsAccessed();
@@ -2989,9 +2984,8 @@ function renderComponentRoot(instance) {
2989
2984
  emit
2990
2985
  } : { attrs, slots, emit }
2991
2986
  ) : render2(
2992
- props,
2987
+ !!(process.env.NODE_ENV !== "production") ? shallowReadonly(props) : props,
2993
2988
  null
2994
- /* we know it doesn't need it */
2995
2989
  )
2996
2990
  );
2997
2991
  fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);
@@ -4555,11 +4549,19 @@ function emptyPlaceholder(vnode) {
4555
4549
  }
4556
4550
  }
4557
4551
  function getKeepAliveChild(vnode) {
4558
- return isKeepAlive(vnode) ? (
4559
- // #7121 ensure get the child component subtree in case
4560
- // it's been replaced during HMR
4561
- !!(process.env.NODE_ENV !== "production") && vnode.component ? vnode.component.subTree : vnode.children ? vnode.children[0] : void 0
4562
- ) : vnode;
4552
+ if (!isKeepAlive(vnode)) {
4553
+ return vnode;
4554
+ }
4555
+ if (!!(process.env.NODE_ENV !== "production") && vnode.component) {
4556
+ return vnode.component.subTree;
4557
+ }
4558
+ const { shapeFlag, children } = vnode;
4559
+ if (shapeFlag & 16) {
4560
+ return children[0];
4561
+ }
4562
+ if (shapeFlag & 32 && isFunction(children.default)) {
4563
+ return children.default();
4564
+ }
4563
4565
  }
4564
4566
  function setTransitionHooks(vnode, hooks) {
4565
4567
  if (vnode.shapeFlag & 6 && vnode.component) {
@@ -5765,7 +5767,7 @@ const PublicInstanceProxyHandlers = {
5765
5767
  let cssModule, globalProperties;
5766
5768
  if (publicGetter) {
5767
5769
  if (key === "$attrs") {
5768
- track(instance, "get", key);
5770
+ track(instance.attrs, "get", "");
5769
5771
  !!(process.env.NODE_ENV !== "production") && markAttrsAccessed();
5770
5772
  } else if (!!(process.env.NODE_ENV !== "production") && key === "$slots") {
5771
5773
  track(instance, "get", key);
@@ -6579,7 +6581,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
6579
6581
  return vm;
6580
6582
  }
6581
6583
  }
6582
- Vue.version = `2.6.14-compat:${"3.4.22"}`;
6584
+ Vue.version = `2.6.14-compat:${"3.4.24"}`;
6583
6585
  Vue.config = singletonApp.config;
6584
6586
  Vue.use = (p, ...options) => {
6585
6587
  if (p && isFunction(p.install)) {
@@ -7219,10 +7221,13 @@ function shouldSkipAttr(key, instance) {
7219
7221
  return false;
7220
7222
  }
7221
7223
 
7222
- const attrsProto = {};
7224
+ const internalObjectProto = /* @__PURE__ */ Object.create(null);
7225
+ const createInternalObject = () => Object.create(internalObjectProto);
7226
+ const isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto;
7227
+
7223
7228
  function initProps(instance, rawProps, isStateful, isSSR = false) {
7224
7229
  const props = {};
7225
- const attrs = Object.create(attrsProto);
7230
+ const attrs = createInternalObject();
7226
7231
  instance.propsDefaults = /* @__PURE__ */ Object.create(null);
7227
7232
  setFullProps(instance, rawProps, props, attrs);
7228
7233
  for (const key in instance.propsOptions[0]) {
@@ -7698,23 +7703,17 @@ const normalizeVNodeSlots = (instance, children) => {
7698
7703
  instance.slots.default = () => normalized;
7699
7704
  };
7700
7705
  const initSlots = (instance, children) => {
7706
+ const slots = instance.slots = createInternalObject();
7701
7707
  if (instance.vnode.shapeFlag & 32) {
7702
7708
  const type = children._;
7703
7709
  if (type) {
7704
- instance.slots = toRaw(children);
7705
- def(instance.slots, "_", type);
7710
+ extend(slots, children);
7711
+ def(slots, "_", type);
7706
7712
  } else {
7707
- normalizeObjectSlots(
7708
- children,
7709
- instance.slots = {},
7710
- instance
7711
- );
7712
- }
7713
- } else {
7714
- instance.slots = {};
7715
- if (children) {
7716
- normalizeVNodeSlots(instance, children);
7713
+ normalizeObjectSlots(children, slots, instance);
7717
7714
  }
7715
+ } else if (children) {
7716
+ normalizeVNodeSlots(instance, children);
7718
7717
  }
7719
7718
  };
7720
7719
  const updateSlots = (instance, children, optimized) => {
@@ -10594,7 +10593,7 @@ Component that was made reactive: `,
10594
10593
  function guardReactiveProps(props) {
10595
10594
  if (!props)
10596
10595
  return null;
10597
- return isProxy(props) || Object.getPrototypeOf(props) === attrsProto ? extend({}, props) : props;
10596
+ return isProxy(props) || isInternalObject(props) ? extend({}, props) : props;
10598
10597
  }
10599
10598
  function cloneVNode(vnode, extraProps, mergeRef = false) {
10600
10599
  const { props, ref, patchFlag, children } = vnode;
@@ -10702,7 +10701,7 @@ function normalizeChildren(vnode, children) {
10702
10701
  } else {
10703
10702
  type = 32;
10704
10703
  const slotFlag = children._;
10705
- if (!slotFlag) {
10704
+ if (!slotFlag && !isInternalObject(children)) {
10706
10705
  children._ctx = currentRenderingInstance;
10707
10706
  } else if (slotFlag === 3 && currentRenderingInstance) {
10708
10707
  if (currentRenderingInstance.slots._ === 1) {
@@ -11494,7 +11493,7 @@ function isMemoSame(cached, memo) {
11494
11493
  return true;
11495
11494
  }
11496
11495
 
11497
- const version = "3.4.22";
11496
+ const version = "3.4.24";
11498
11497
  const warn = !!(process.env.NODE_ENV !== "production") ? warn$1 : NOOP;
11499
11498
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
11500
11499
  const devtools = !!(process.env.NODE_ENV !== "production") || true ? devtools$1 : void 0;
@@ -11739,8 +11738,8 @@ function resolveTransitionProps(rawProps) {
11739
11738
  if (legacyClassEnabled && legacyLeaveFromClass) {
11740
11739
  addTransitionClass(el, legacyLeaveFromClass);
11741
11740
  }
11742
- forceReflow();
11743
11741
  addTransitionClass(el, leaveActiveClass);
11742
+ forceReflow();
11744
11743
  nextFrame(() => {
11745
11744
  if (!el._isLeaving) {
11746
11745
  return;
@@ -15938,6 +15937,7 @@ function createTransformContext(root, {
15938
15937
  vOnce: 0
15939
15938
  },
15940
15939
  parent: null,
15940
+ grandParent: null,
15941
15941
  currentNode: root,
15942
15942
  childIndex: 0,
15943
15943
  inVOnce: false,
@@ -16084,6 +16084,7 @@ function traverseChildren(parent, context) {
16084
16084
  const child = parent.children[i];
16085
16085
  if (isString(child))
16086
16086
  continue;
16087
+ context.grandParent = context.parent;
16087
16088
  context.parent = parent;
16088
16089
  context.childIndex = i;
16089
16090
  context.onNodeRemoved = nodeRemoved;
@@ -17659,6 +17660,16 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
17659
17660
  if (arg)
17660
17661
  mergeArgs.push(arg);
17661
17662
  };
17663
+ const pushRefVForMarker = () => {
17664
+ if (context.scopes.vFor > 0) {
17665
+ properties.push(
17666
+ createObjectProperty(
17667
+ createSimpleExpression("ref_for", true),
17668
+ createSimpleExpression("true")
17669
+ )
17670
+ );
17671
+ }
17672
+ };
17662
17673
  const analyzePatchFlag = ({ key, value }) => {
17663
17674
  if (isStaticExp(key)) {
17664
17675
  const name = key.content;
@@ -17702,14 +17713,7 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
17702
17713
  let isStatic = true;
17703
17714
  if (name === "ref") {
17704
17715
  hasRef = true;
17705
- if (context.scopes.vFor > 0) {
17706
- properties.push(
17707
- createObjectProperty(
17708
- createSimpleExpression("ref_for", true),
17709
- createSimpleExpression("true")
17710
- )
17711
- );
17712
- }
17716
+ pushRefVForMarker();
17713
17717
  }
17714
17718
  if (name === "is" && (isComponentTag(tag) || value && value.content.startsWith("vue:") || isCompatEnabled(
17715
17719
  "COMPILER_IS_ON_ELEMENT",
@@ -17759,18 +17763,14 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
17759
17763
  ) {
17760
17764
  shouldUseBlock = true;
17761
17765
  }
17762
- if (isVBind && isStaticArgOf(arg, "ref") && context.scopes.vFor > 0) {
17763
- properties.push(
17764
- createObjectProperty(
17765
- createSimpleExpression("ref_for", true),
17766
- createSimpleExpression("true")
17767
- )
17768
- );
17766
+ if (isVBind && isStaticArgOf(arg, "ref")) {
17767
+ pushRefVForMarker();
17769
17768
  }
17770
17769
  if (!arg && (isVBind || isVOn)) {
17771
17770
  hasDynamicKeys = true;
17772
17771
  if (exp) {
17773
17772
  if (isVBind) {
17773
+ pushRefVForMarker();
17774
17774
  pushMergeArg();
17775
17775
  {
17776
17776
  if (!!(process.env.NODE_ENV !== "production")) {
@@ -19184,8 +19184,7 @@ ${codeFrame}` : message);
19184
19184
  registerRuntimeCompiler(compileToFunction);
19185
19185
  const Vue = createCompatVue();
19186
19186
  Vue.compile = compileToFunction;
19187
- var Vue$1 = Vue;
19188
19187
 
19189
- const { configureCompat } = Vue$1;
19188
+ const { configureCompat } = Vue;
19190
19189
 
19191
- export { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, EffectScope, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, ReactiveEffect, Static, Suspense, Teleport, Text, TrackOpTypes, Transition, TransitionGroup, TriggerOpTypes, VueElement, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, camelize, capitalize, cloneVNode, compatUtils, computed, configureCompat, createApp, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSSRApp, createSlots, createStaticVNode, createTextVNode, createVNode, customRef, Vue$1 as default, defineAsyncComponent, defineComponent, defineCustomElement, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSSRCustomElement, defineSlots, devtools, effect, effectScope, getCurrentInstance, getCurrentScope, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, hydrate, initCustomFormatter, initDirectivesForSSR, inject, isMemoSame, isProxy, isReactive, isReadonly, isRef, isRuntimeOnly, isShallow, isVNode, markRaw, mergeDefaults, mergeModels, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, proxyRefs, pushScopeId, queuePostFlushCb, reactive, readonly, ref, registerRuntimeCompiler, render, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, shallowReactive, shallowReadonly, shallowRef, ssrContextKey, ssrUtils, stop, toDisplayString, toHandlerKey, toHandlers, toRaw, toRef, toRefs, toValue, transformVNodeArgs, triggerRef, unref, useAttrs, useCssModule, useCssVars, useModel, useSSRContext, useSlots, useTransitionState, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withKeys, withMemo, withModifiers, withScopeId };
19190
+ export { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, EffectScope, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, ReactiveEffect, Static, Suspense, Teleport, Text, TrackOpTypes, Transition, TransitionGroup, TriggerOpTypes, VueElement, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, camelize, capitalize, cloneVNode, compatUtils, computed, configureCompat, createApp, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSSRApp, createSlots, createStaticVNode, createTextVNode, createVNode, customRef, Vue as default, defineAsyncComponent, defineComponent, defineCustomElement, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSSRCustomElement, defineSlots, devtools, effect, effectScope, getCurrentInstance, getCurrentScope, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, hydrate, initCustomFormatter, initDirectivesForSSR, inject, isMemoSame, isProxy, isReactive, isReadonly, isRef, isRuntimeOnly, isShallow, isVNode, markRaw, mergeDefaults, mergeModels, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, proxyRefs, pushScopeId, queuePostFlushCb, reactive, readonly, ref, registerRuntimeCompiler, render, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, shallowReactive, shallowReadonly, shallowRef, ssrContextKey, ssrUtils, stop, toDisplayString, toHandlerKey, toHandlers, toRaw, toRef, toRefs, toValue, transformVNodeArgs, triggerRef, unref, useAttrs, useCssModule, useCssVars, useModel, useSSRContext, useSlots, useTransitionState, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withKeys, withMemo, withModifiers, withScopeId };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compat v3.4.22
2
+ * @vue/compat v3.4.24
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -2538,11 +2538,6 @@ Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
2538
2538
  warnedInvalidKeys[key] = true;
2539
2539
  }
2540
2540
  }
2541
- if (instance && config["OPTIONS_DATA_MERGE"] != null) {
2542
- warn$1(
2543
- `Deprecation config "${"OPTIONS_DATA_MERGE"}" can only be configured globally.`
2544
- );
2545
- }
2546
2541
  }
2547
2542
  function getCompatConfigForKey(key, instance) {
2548
2543
  const instanceConfig = instance && instance.type.compatConfig;
@@ -2925,21 +2920,21 @@ Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
2925
2920
  vnode,
2926
2921
  proxy,
2927
2922
  withProxy,
2928
- props,
2929
2923
  propsOptions: [propsOptions],
2930
2924
  slots,
2931
2925
  attrs,
2932
2926
  emit,
2933
2927
  render,
2934
2928
  renderCache,
2929
+ props,
2935
2930
  data,
2936
2931
  setupState,
2937
2932
  ctx,
2938
2933
  inheritAttrs
2939
2934
  } = instance;
2935
+ const prev = setCurrentRenderingInstance(instance);
2940
2936
  let result;
2941
2937
  let fallthroughAttrs;
2942
- const prev = setCurrentRenderingInstance(instance);
2943
2938
  {
2944
2939
  accessedAttrs = false;
2945
2940
  }
@@ -2961,7 +2956,7 @@ Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
2961
2956
  thisProxy,
2962
2957
  proxyToUse,
2963
2958
  renderCache,
2964
- props,
2959
+ true ? shallowReadonly(props) : props,
2965
2960
  setupState,
2966
2961
  data,
2967
2962
  ctx
@@ -2975,7 +2970,7 @@ Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
2975
2970
  }
2976
2971
  result = normalizeVNode(
2977
2972
  render2.length > 1 ? render2(
2978
- props,
2973
+ true ? shallowReadonly(props) : props,
2979
2974
  true ? {
2980
2975
  get attrs() {
2981
2976
  markAttrsAccessed();
@@ -2985,9 +2980,8 @@ Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
2985
2980
  emit
2986
2981
  } : { attrs, slots, emit }
2987
2982
  ) : render2(
2988
- props,
2983
+ true ? shallowReadonly(props) : props,
2989
2984
  null
2990
- /* we know it doesn't need it */
2991
2985
  )
2992
2986
  );
2993
2987
  fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);
@@ -4522,11 +4516,19 @@ If this is a native custom element, make sure to exclude it from component resol
4522
4516
  }
4523
4517
  }
4524
4518
  function getKeepAliveChild(vnode) {
4525
- return isKeepAlive(vnode) ? (
4526
- // #7121 ensure get the child component subtree in case
4527
- // it's been replaced during HMR
4528
- vnode.component ? vnode.component.subTree : vnode.children ? vnode.children[0] : void 0
4529
- ) : vnode;
4519
+ if (!isKeepAlive(vnode)) {
4520
+ return vnode;
4521
+ }
4522
+ if (vnode.component) {
4523
+ return vnode.component.subTree;
4524
+ }
4525
+ const { shapeFlag, children } = vnode;
4526
+ if (shapeFlag & 16) {
4527
+ return children[0];
4528
+ }
4529
+ if (shapeFlag & 32 && isFunction(children.default)) {
4530
+ return children.default();
4531
+ }
4530
4532
  }
4531
4533
  function setTransitionHooks(vnode, hooks) {
4532
4534
  if (vnode.shapeFlag & 6 && vnode.component) {
@@ -5726,7 +5728,7 @@ If this is a native custom element, make sure to exclude it from component resol
5726
5728
  let cssModule, globalProperties;
5727
5729
  if (publicGetter) {
5728
5730
  if (key === "$attrs") {
5729
- track(instance, "get", key);
5731
+ track(instance.attrs, "get", "");
5730
5732
  markAttrsAccessed();
5731
5733
  } else if (key === "$slots") {
5732
5734
  track(instance, "get", key);
@@ -6538,7 +6540,7 @@ If this is a native custom element, make sure to exclude it from component resol
6538
6540
  return vm;
6539
6541
  }
6540
6542
  }
6541
- Vue.version = `2.6.14-compat:${"3.4.22"}`;
6543
+ Vue.version = `2.6.14-compat:${"3.4.24"}`;
6542
6544
  Vue.config = singletonApp.config;
6543
6545
  Vue.use = (p, ...options) => {
6544
6546
  if (p && isFunction(p.install)) {
@@ -7175,10 +7177,13 @@ If you want to remount the same app, move your app creation logic into a factory
7175
7177
  return false;
7176
7178
  }
7177
7179
 
7178
- const attrsProto = {};
7180
+ const internalObjectProto = /* @__PURE__ */ Object.create(null);
7181
+ const createInternalObject = () => Object.create(internalObjectProto);
7182
+ const isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto;
7183
+
7179
7184
  function initProps(instance, rawProps, isStateful, isSSR = false) {
7180
7185
  const props = {};
7181
- const attrs = Object.create(attrsProto);
7186
+ const attrs = createInternalObject();
7182
7187
  instance.propsDefaults = /* @__PURE__ */ Object.create(null);
7183
7188
  setFullProps(instance, rawProps, props, attrs);
7184
7189
  for (const key in instance.propsOptions[0]) {
@@ -7654,23 +7659,17 @@ If you want to remount the same app, move your app creation logic into a factory
7654
7659
  instance.slots.default = () => normalized;
7655
7660
  };
7656
7661
  const initSlots = (instance, children) => {
7662
+ const slots = instance.slots = createInternalObject();
7657
7663
  if (instance.vnode.shapeFlag & 32) {
7658
7664
  const type = children._;
7659
7665
  if (type) {
7660
- instance.slots = toRaw(children);
7661
- def(instance.slots, "_", type);
7666
+ extend(slots, children);
7667
+ def(slots, "_", type);
7662
7668
  } else {
7663
- normalizeObjectSlots(
7664
- children,
7665
- instance.slots = {},
7666
- instance
7667
- );
7668
- }
7669
- } else {
7670
- instance.slots = {};
7671
- if (children) {
7672
- normalizeVNodeSlots(instance, children);
7669
+ normalizeObjectSlots(children, slots, instance);
7673
7670
  }
7671
+ } else if (children) {
7672
+ normalizeVNodeSlots(instance, children);
7674
7673
  }
7675
7674
  };
7676
7675
  const updateSlots = (instance, children, optimized) => {
@@ -10502,7 +10501,7 @@ Component that was made reactive: `,
10502
10501
  function guardReactiveProps(props) {
10503
10502
  if (!props)
10504
10503
  return null;
10505
- return isProxy(props) || Object.getPrototypeOf(props) === attrsProto ? extend({}, props) : props;
10504
+ return isProxy(props) || isInternalObject(props) ? extend({}, props) : props;
10506
10505
  }
10507
10506
  function cloneVNode(vnode, extraProps, mergeRef = false) {
10508
10507
  const { props, ref, patchFlag, children } = vnode;
@@ -10610,7 +10609,7 @@ Component that was made reactive: `,
10610
10609
  } else {
10611
10610
  type = 32;
10612
10611
  const slotFlag = children._;
10613
- if (!slotFlag) {
10612
+ if (!slotFlag && !isInternalObject(children)) {
10614
10613
  children._ctx = currentRenderingInstance;
10615
10614
  } else if (slotFlag === 3 && currentRenderingInstance) {
10616
10615
  if (currentRenderingInstance.slots._ === 1) {
@@ -11371,7 +11370,7 @@ Component that was made reactive: `,
11371
11370
  return true;
11372
11371
  }
11373
11372
 
11374
- const version = "3.4.22";
11373
+ const version = "3.4.24";
11375
11374
  const warn = warn$1 ;
11376
11375
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
11377
11376
  const devtools = devtools$1 ;
@@ -11608,8 +11607,8 @@ Component that was made reactive: `,
11608
11607
  if (legacyClassEnabled && legacyLeaveFromClass) {
11609
11608
  addTransitionClass(el, legacyLeaveFromClass);
11610
11609
  }
11611
- forceReflow();
11612
11610
  addTransitionClass(el, leaveActiveClass);
11611
+ forceReflow();
11613
11612
  nextFrame(() => {
11614
11613
  if (!el._isLeaving) {
11615
11614
  return;
@@ -15752,6 +15751,7 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
15752
15751
  vOnce: 0
15753
15752
  },
15754
15753
  parent: null,
15754
+ grandParent: null,
15755
15755
  currentNode: root,
15756
15756
  childIndex: 0,
15757
15757
  inVOnce: false,
@@ -15898,6 +15898,7 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
15898
15898
  const child = parent.children[i];
15899
15899
  if (isString(child))
15900
15900
  continue;
15901
+ context.grandParent = context.parent;
15901
15902
  context.parent = parent;
15902
15903
  context.childIndex = i;
15903
15904
  context.onNodeRemoved = nodeRemoved;
@@ -17471,6 +17472,16 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
17471
17472
  if (arg)
17472
17473
  mergeArgs.push(arg);
17473
17474
  };
17475
+ const pushRefVForMarker = () => {
17476
+ if (context.scopes.vFor > 0) {
17477
+ properties.push(
17478
+ createObjectProperty(
17479
+ createSimpleExpression("ref_for", true),
17480
+ createSimpleExpression("true")
17481
+ )
17482
+ );
17483
+ }
17484
+ };
17474
17485
  const analyzePatchFlag = ({ key, value }) => {
17475
17486
  if (isStaticExp(key)) {
17476
17487
  const name = key.content;
@@ -17514,14 +17525,7 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
17514
17525
  let isStatic = true;
17515
17526
  if (name === "ref") {
17516
17527
  hasRef = true;
17517
- if (context.scopes.vFor > 0) {
17518
- properties.push(
17519
- createObjectProperty(
17520
- createSimpleExpression("ref_for", true),
17521
- createSimpleExpression("true")
17522
- )
17523
- );
17524
- }
17528
+ pushRefVForMarker();
17525
17529
  }
17526
17530
  if (name === "is" && (isComponentTag(tag) || value && value.content.startsWith("vue:") || isCompatEnabled(
17527
17531
  "COMPILER_IS_ON_ELEMENT",
@@ -17571,18 +17575,14 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
17571
17575
  ) {
17572
17576
  shouldUseBlock = true;
17573
17577
  }
17574
- if (isVBind && isStaticArgOf(arg, "ref") && context.scopes.vFor > 0) {
17575
- properties.push(
17576
- createObjectProperty(
17577
- createSimpleExpression("ref_for", true),
17578
- createSimpleExpression("true")
17579
- )
17580
- );
17578
+ if (isVBind && isStaticArgOf(arg, "ref")) {
17579
+ pushRefVForMarker();
17581
17580
  }
17582
17581
  if (!arg && (isVBind || isVOn)) {
17583
17582
  hasDynamicKeys = true;
17584
17583
  if (exp) {
17585
17584
  if (isVBind) {
17585
+ pushRefVForMarker();
17586
17586
  pushMergeArg();
17587
17587
  {
17588
17588
  {