@vue/compat 3.4.23 → 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.23
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) {
@@ -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.23"}`;
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)) {
@@ -7701,23 +7703,17 @@ const normalizeVNodeSlots = (instance, children) => {
7701
7703
  instance.slots.default = () => normalized;
7702
7704
  };
7703
7705
  const initSlots = (instance, children) => {
7706
+ const slots = instance.slots = createInternalObject();
7704
7707
  if (instance.vnode.shapeFlag & 32) {
7705
7708
  const type = children._;
7706
7709
  if (type) {
7707
- instance.slots = toRaw(children);
7708
- def(instance.slots, "_", type);
7710
+ extend(slots, children);
7711
+ def(slots, "_", type);
7709
7712
  } else {
7710
- normalizeObjectSlots(
7711
- children,
7712
- instance.slots = createInternalObject(),
7713
- instance
7714
- );
7715
- }
7716
- } else {
7717
- instance.slots = createInternalObject();
7718
- if (children) {
7719
- normalizeVNodeSlots(instance, children);
7713
+ normalizeObjectSlots(children, slots, instance);
7720
7714
  }
7715
+ } else if (children) {
7716
+ normalizeVNodeSlots(instance, children);
7721
7717
  }
7722
7718
  };
7723
7719
  const updateSlots = (instance, children, optimized) => {
@@ -11497,7 +11493,7 @@ function isMemoSame(cached, memo) {
11497
11493
  return true;
11498
11494
  }
11499
11495
 
11500
- const version = "3.4.23";
11496
+ const version = "3.4.24";
11501
11497
  const warn = !!(process.env.NODE_ENV !== "production") ? warn$1 : NOOP;
11502
11498
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
11503
11499
  const devtools = !!(process.env.NODE_ENV !== "production") || true ? devtools$1 : void 0;
@@ -11742,8 +11738,8 @@ function resolveTransitionProps(rawProps) {
11742
11738
  if (legacyClassEnabled && legacyLeaveFromClass) {
11743
11739
  addTransitionClass(el, legacyLeaveFromClass);
11744
11740
  }
11745
- forceReflow();
11746
11741
  addTransitionClass(el, leaveActiveClass);
11742
+ forceReflow();
11747
11743
  nextFrame(() => {
11748
11744
  if (!el._isLeaving) {
11749
11745
  return;
@@ -15941,6 +15937,7 @@ function createTransformContext(root, {
15941
15937
  vOnce: 0
15942
15938
  },
15943
15939
  parent: null,
15940
+ grandParent: null,
15944
15941
  currentNode: root,
15945
15942
  childIndex: 0,
15946
15943
  inVOnce: false,
@@ -16087,6 +16084,7 @@ function traverseChildren(parent, context) {
16087
16084
  const child = parent.children[i];
16088
16085
  if (isString(child))
16089
16086
  continue;
16087
+ context.grandParent = context.parent;
16090
16088
  context.parent = parent;
16091
16089
  context.childIndex = i;
16092
16090
  context.onNodeRemoved = nodeRemoved;
@@ -17662,6 +17660,16 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
17662
17660
  if (arg)
17663
17661
  mergeArgs.push(arg);
17664
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
+ };
17665
17673
  const analyzePatchFlag = ({ key, value }) => {
17666
17674
  if (isStaticExp(key)) {
17667
17675
  const name = key.content;
@@ -17705,14 +17713,7 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
17705
17713
  let isStatic = true;
17706
17714
  if (name === "ref") {
17707
17715
  hasRef = true;
17708
- if (context.scopes.vFor > 0) {
17709
- properties.push(
17710
- createObjectProperty(
17711
- createSimpleExpression("ref_for", true),
17712
- createSimpleExpression("true")
17713
- )
17714
- );
17715
- }
17716
+ pushRefVForMarker();
17716
17717
  }
17717
17718
  if (name === "is" && (isComponentTag(tag) || value && value.content.startsWith("vue:") || isCompatEnabled(
17718
17719
  "COMPILER_IS_ON_ELEMENT",
@@ -17762,18 +17763,14 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
17762
17763
  ) {
17763
17764
  shouldUseBlock = true;
17764
17765
  }
17765
- if (isVBind && isStaticArgOf(arg, "ref") && context.scopes.vFor > 0) {
17766
- properties.push(
17767
- createObjectProperty(
17768
- createSimpleExpression("ref_for", true),
17769
- createSimpleExpression("true")
17770
- )
17771
- );
17766
+ if (isVBind && isStaticArgOf(arg, "ref")) {
17767
+ pushRefVForMarker();
17772
17768
  }
17773
17769
  if (!arg && (isVBind || isVOn)) {
17774
17770
  hasDynamicKeys = true;
17775
17771
  if (exp) {
17776
17772
  if (isVBind) {
17773
+ pushRefVForMarker();
17777
17774
  pushMergeArg();
17778
17775
  {
17779
17776
  if (!!(process.env.NODE_ENV !== "production")) {
@@ -19187,8 +19184,7 @@ ${codeFrame}` : message);
19187
19184
  registerRuntimeCompiler(compileToFunction);
19188
19185
  const Vue = createCompatVue();
19189
19186
  Vue.compile = compileToFunction;
19190
- var Vue$1 = Vue;
19191
19187
 
19192
- const { configureCompat } = Vue$1;
19188
+ const { configureCompat } = Vue;
19193
19189
 
19194
- 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.23
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) {
@@ -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.23"}`;
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)) {
@@ -7657,23 +7659,17 @@ If you want to remount the same app, move your app creation logic into a factory
7657
7659
  instance.slots.default = () => normalized;
7658
7660
  };
7659
7661
  const initSlots = (instance, children) => {
7662
+ const slots = instance.slots = createInternalObject();
7660
7663
  if (instance.vnode.shapeFlag & 32) {
7661
7664
  const type = children._;
7662
7665
  if (type) {
7663
- instance.slots = toRaw(children);
7664
- def(instance.slots, "_", type);
7666
+ extend(slots, children);
7667
+ def(slots, "_", type);
7665
7668
  } else {
7666
- normalizeObjectSlots(
7667
- children,
7668
- instance.slots = createInternalObject(),
7669
- instance
7670
- );
7671
- }
7672
- } else {
7673
- instance.slots = createInternalObject();
7674
- if (children) {
7675
- normalizeVNodeSlots(instance, children);
7669
+ normalizeObjectSlots(children, slots, instance);
7676
7670
  }
7671
+ } else if (children) {
7672
+ normalizeVNodeSlots(instance, children);
7677
7673
  }
7678
7674
  };
7679
7675
  const updateSlots = (instance, children, optimized) => {
@@ -11374,7 +11370,7 @@ Component that was made reactive: `,
11374
11370
  return true;
11375
11371
  }
11376
11372
 
11377
- const version = "3.4.23";
11373
+ const version = "3.4.24";
11378
11374
  const warn = warn$1 ;
11379
11375
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
11380
11376
  const devtools = devtools$1 ;
@@ -11611,8 +11607,8 @@ Component that was made reactive: `,
11611
11607
  if (legacyClassEnabled && legacyLeaveFromClass) {
11612
11608
  addTransitionClass(el, legacyLeaveFromClass);
11613
11609
  }
11614
- forceReflow();
11615
11610
  addTransitionClass(el, leaveActiveClass);
11611
+ forceReflow();
11616
11612
  nextFrame(() => {
11617
11613
  if (!el._isLeaving) {
11618
11614
  return;
@@ -15755,6 +15751,7 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
15755
15751
  vOnce: 0
15756
15752
  },
15757
15753
  parent: null,
15754
+ grandParent: null,
15758
15755
  currentNode: root,
15759
15756
  childIndex: 0,
15760
15757
  inVOnce: false,
@@ -15901,6 +15898,7 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
15901
15898
  const child = parent.children[i];
15902
15899
  if (isString(child))
15903
15900
  continue;
15901
+ context.grandParent = context.parent;
15904
15902
  context.parent = parent;
15905
15903
  context.childIndex = i;
15906
15904
  context.onNodeRemoved = nodeRemoved;
@@ -17474,6 +17472,16 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
17474
17472
  if (arg)
17475
17473
  mergeArgs.push(arg);
17476
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
+ };
17477
17485
  const analyzePatchFlag = ({ key, value }) => {
17478
17486
  if (isStaticExp(key)) {
17479
17487
  const name = key.content;
@@ -17517,14 +17525,7 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
17517
17525
  let isStatic = true;
17518
17526
  if (name === "ref") {
17519
17527
  hasRef = true;
17520
- if (context.scopes.vFor > 0) {
17521
- properties.push(
17522
- createObjectProperty(
17523
- createSimpleExpression("ref_for", true),
17524
- createSimpleExpression("true")
17525
- )
17526
- );
17527
- }
17528
+ pushRefVForMarker();
17528
17529
  }
17529
17530
  if (name === "is" && (isComponentTag(tag) || value && value.content.startsWith("vue:") || isCompatEnabled(
17530
17531
  "COMPILER_IS_ON_ELEMENT",
@@ -17574,18 +17575,14 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
17574
17575
  ) {
17575
17576
  shouldUseBlock = true;
17576
17577
  }
17577
- if (isVBind && isStaticArgOf(arg, "ref") && context.scopes.vFor > 0) {
17578
- properties.push(
17579
- createObjectProperty(
17580
- createSimpleExpression("ref_for", true),
17581
- createSimpleExpression("true")
17582
- )
17583
- );
17578
+ if (isVBind && isStaticArgOf(arg, "ref")) {
17579
+ pushRefVForMarker();
17584
17580
  }
17585
17581
  if (!arg && (isVBind || isVOn)) {
17586
17582
  hasDynamicKeys = true;
17587
17583
  if (exp) {
17588
17584
  if (isVBind) {
17585
+ pushRefVForMarker();
17589
17586
  pushMergeArg();
17590
17587
  {
17591
17588
  {