@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.
package/dist/vue.cjs.js CHANGED
@@ -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
  **/
@@ -2586,11 +2586,6 @@ Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
2586
2586
  warnedInvalidKeys[key] = true;
2587
2587
  }
2588
2588
  }
2589
- if (instance && config["OPTIONS_DATA_MERGE"] != null) {
2590
- warn$1(
2591
- `Deprecation config "${"OPTIONS_DATA_MERGE"}" can only be configured globally.`
2592
- );
2593
- }
2594
2589
  }
2595
2590
  function getCompatConfigForKey(key, instance) {
2596
2591
  const instanceConfig = instance && instance.type.compatConfig;
@@ -2973,21 +2968,21 @@ function renderComponentRoot(instance) {
2973
2968
  vnode,
2974
2969
  proxy,
2975
2970
  withProxy,
2976
- props,
2977
2971
  propsOptions: [propsOptions],
2978
2972
  slots,
2979
2973
  attrs,
2980
2974
  emit,
2981
2975
  render,
2982
2976
  renderCache,
2977
+ props,
2983
2978
  data,
2984
2979
  setupState,
2985
2980
  ctx,
2986
2981
  inheritAttrs
2987
2982
  } = instance;
2983
+ const prev = setCurrentRenderingInstance(instance);
2988
2984
  let result;
2989
2985
  let fallthroughAttrs;
2990
- const prev = setCurrentRenderingInstance(instance);
2991
2986
  {
2992
2987
  accessedAttrs = false;
2993
2988
  }
@@ -3009,7 +3004,7 @@ function renderComponentRoot(instance) {
3009
3004
  thisProxy,
3010
3005
  proxyToUse,
3011
3006
  renderCache,
3012
- props,
3007
+ true ? shallowReadonly(props) : props,
3013
3008
  setupState,
3014
3009
  data,
3015
3010
  ctx
@@ -3023,7 +3018,7 @@ function renderComponentRoot(instance) {
3023
3018
  }
3024
3019
  result = normalizeVNode(
3025
3020
  render2.length > 1 ? render2(
3026
- props,
3021
+ true ? shallowReadonly(props) : props,
3027
3022
  true ? {
3028
3023
  get attrs() {
3029
3024
  markAttrsAccessed();
@@ -3033,9 +3028,8 @@ function renderComponentRoot(instance) {
3033
3028
  emit
3034
3029
  } : { attrs, slots, emit }
3035
3030
  ) : render2(
3036
- props,
3031
+ true ? shallowReadonly(props) : props,
3037
3032
  null
3038
- /* we know it doesn't need it */
3039
3033
  )
3040
3034
  );
3041
3035
  fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);
@@ -4597,11 +4591,19 @@ function emptyPlaceholder(vnode) {
4597
4591
  }
4598
4592
  }
4599
4593
  function getKeepAliveChild(vnode) {
4600
- return isKeepAlive(vnode) ? (
4601
- // #7121 ensure get the child component subtree in case
4602
- // it's been replaced during HMR
4603
- vnode.component ? vnode.component.subTree : vnode.children ? vnode.children[0] : void 0
4604
- ) : vnode;
4594
+ if (!isKeepAlive(vnode)) {
4595
+ return vnode;
4596
+ }
4597
+ if (vnode.component) {
4598
+ return vnode.component.subTree;
4599
+ }
4600
+ const { shapeFlag, children } = vnode;
4601
+ if (shapeFlag & 16) {
4602
+ return children[0];
4603
+ }
4604
+ if (shapeFlag & 32 && isFunction(children.default)) {
4605
+ return children.default();
4606
+ }
4605
4607
  }
4606
4608
  function setTransitionHooks(vnode, hooks) {
4607
4609
  if (vnode.shapeFlag & 6 && vnode.component) {
@@ -5807,7 +5809,7 @@ const PublicInstanceProxyHandlers = {
5807
5809
  let cssModule, globalProperties;
5808
5810
  if (publicGetter) {
5809
5811
  if (key === "$attrs") {
5810
- track(instance, "get", key);
5812
+ track(instance.attrs, "get", "");
5811
5813
  markAttrsAccessed();
5812
5814
  } else if (key === "$slots") {
5813
5815
  track(instance, "get", key);
@@ -6619,7 +6621,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
6619
6621
  return vm;
6620
6622
  }
6621
6623
  }
6622
- Vue.version = `2.6.14-compat:${"3.4.22"}`;
6624
+ Vue.version = `2.6.14-compat:${"3.4.24"}`;
6623
6625
  Vue.config = singletonApp.config;
6624
6626
  Vue.use = (p, ...options) => {
6625
6627
  if (p && isFunction(p.install)) {
@@ -7256,10 +7258,13 @@ function shouldSkipAttr(key, instance) {
7256
7258
  return false;
7257
7259
  }
7258
7260
 
7259
- const attrsProto = {};
7261
+ const internalObjectProto = /* @__PURE__ */ Object.create(null);
7262
+ const createInternalObject = () => Object.create(internalObjectProto);
7263
+ const isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto;
7264
+
7260
7265
  function initProps(instance, rawProps, isStateful, isSSR = false) {
7261
7266
  const props = {};
7262
- const attrs = Object.create(attrsProto);
7267
+ const attrs = createInternalObject();
7263
7268
  instance.propsDefaults = /* @__PURE__ */ Object.create(null);
7264
7269
  setFullProps(instance, rawProps, props, attrs);
7265
7270
  for (const key in instance.propsOptions[0]) {
@@ -7735,23 +7740,17 @@ const normalizeVNodeSlots = (instance, children) => {
7735
7740
  instance.slots.default = () => normalized;
7736
7741
  };
7737
7742
  const initSlots = (instance, children) => {
7743
+ const slots = instance.slots = createInternalObject();
7738
7744
  if (instance.vnode.shapeFlag & 32) {
7739
7745
  const type = children._;
7740
7746
  if (type) {
7741
- instance.slots = toRaw(children);
7742
- def(instance.slots, "_", type);
7747
+ extend(slots, children);
7748
+ def(slots, "_", type);
7743
7749
  } else {
7744
- normalizeObjectSlots(
7745
- children,
7746
- instance.slots = {},
7747
- instance
7748
- );
7749
- }
7750
- } else {
7751
- instance.slots = {};
7752
- if (children) {
7753
- normalizeVNodeSlots(instance, children);
7750
+ normalizeObjectSlots(children, slots, instance);
7754
7751
  }
7752
+ } else if (children) {
7753
+ normalizeVNodeSlots(instance, children);
7755
7754
  }
7756
7755
  };
7757
7756
  const updateSlots = (instance, children, optimized) => {
@@ -10583,7 +10582,7 @@ Component that was made reactive: `,
10583
10582
  function guardReactiveProps(props) {
10584
10583
  if (!props)
10585
10584
  return null;
10586
- return isProxy(props) || Object.getPrototypeOf(props) === attrsProto ? extend({}, props) : props;
10585
+ return isProxy(props) || isInternalObject(props) ? extend({}, props) : props;
10587
10586
  }
10588
10587
  function cloneVNode(vnode, extraProps, mergeRef = false) {
10589
10588
  const { props, ref, patchFlag, children } = vnode;
@@ -10691,7 +10690,7 @@ function normalizeChildren(vnode, children) {
10691
10690
  } else {
10692
10691
  type = 32;
10693
10692
  const slotFlag = children._;
10694
- if (!slotFlag) {
10693
+ if (!slotFlag && !isInternalObject(children)) {
10695
10694
  children._ctx = currentRenderingInstance;
10696
10695
  } else if (slotFlag === 3 && currentRenderingInstance) {
10697
10696
  if (currentRenderingInstance.slots._ === 1) {
@@ -11469,7 +11468,7 @@ function isMemoSame(cached, memo) {
11469
11468
  return true;
11470
11469
  }
11471
11470
 
11472
- const version = "3.4.22";
11471
+ const version = "3.4.24";
11473
11472
  const warn = warn$1 ;
11474
11473
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
11475
11474
  const devtools = devtools$1 ;
@@ -11714,8 +11713,8 @@ function resolveTransitionProps(rawProps) {
11714
11713
  if (legacyClassEnabled && legacyLeaveFromClass) {
11715
11714
  addTransitionClass(el, legacyLeaveFromClass);
11716
11715
  }
11717
- forceReflow();
11718
11716
  addTransitionClass(el, leaveActiveClass);
11717
+ forceReflow();
11719
11718
  nextFrame(() => {
11720
11719
  if (!el._isLeaving) {
11721
11720
  return;
@@ -14820,7 +14819,7 @@ function isReferenced(node, parent, grandparent) {
14820
14819
  if (parent.key === node) {
14821
14820
  return !!parent.computed;
14822
14821
  }
14823
- return !grandparent || grandparent.type !== "ObjectPattern";
14822
+ return !grandparent ;
14824
14823
  case "ClassProperty":
14825
14824
  if (parent.key === node) {
14826
14825
  return !!parent.computed;
@@ -14851,9 +14850,6 @@ function isReferenced(node, parent, grandparent) {
14851
14850
  case "ExportDefaultSpecifier":
14852
14851
  return false;
14853
14852
  case "ExportSpecifier":
14854
- if (grandparent == null ? void 0 : grandparent.source) {
14855
- return false;
14856
- }
14857
14853
  return parent.local === node;
14858
14854
  case "ImportDefaultSpecifier":
14859
14855
  case "ImportNamespaceSpecifier":
@@ -16223,6 +16219,7 @@ function createTransformContext(root, {
16223
16219
  vOnce: 0
16224
16220
  },
16225
16221
  parent: null,
16222
+ grandParent: null,
16226
16223
  currentNode: root,
16227
16224
  childIndex: 0,
16228
16225
  inVOnce: false,
@@ -16397,6 +16394,7 @@ function traverseChildren(parent, context) {
16397
16394
  const child = parent.children[i];
16398
16395
  if (isString(child))
16399
16396
  continue;
16397
+ context.grandParent = context.parent;
16400
16398
  context.parent = parent;
16401
16399
  context.childIndex = i;
16402
16400
  context.onNodeRemoved = nodeRemoved;
@@ -17375,9 +17373,10 @@ function processExpression(node, context, asParams = false, asRawStatements = fa
17375
17373
  if (!ast) {
17376
17374
  const source = asRawStatements ? ` ${rawExp} ` : `(${rawExp})${asParams ? `=>{}` : ``}`;
17377
17375
  try {
17378
- ast = parser.parse(source, {
17376
+ ast = parser.parseExpression(source, {
17377
+ sourceType: "module",
17379
17378
  plugins: context.expressionPlugins
17380
- }).program;
17379
+ });
17381
17380
  } catch (e) {
17382
17381
  context.onError(
17383
17382
  createCompilerError(
@@ -18458,6 +18457,16 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
18458
18457
  if (arg)
18459
18458
  mergeArgs.push(arg);
18460
18459
  };
18460
+ const pushRefVForMarker = () => {
18461
+ if (context.scopes.vFor > 0) {
18462
+ properties.push(
18463
+ createObjectProperty(
18464
+ createSimpleExpression("ref_for", true),
18465
+ createSimpleExpression("true")
18466
+ )
18467
+ );
18468
+ }
18469
+ };
18461
18470
  const analyzePatchFlag = ({ key, value }) => {
18462
18471
  if (isStaticExp(key)) {
18463
18472
  const name = key.content;
@@ -18501,14 +18510,7 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
18501
18510
  let isStatic = true;
18502
18511
  if (name === "ref") {
18503
18512
  hasRef = true;
18504
- if (context.scopes.vFor > 0) {
18505
- properties.push(
18506
- createObjectProperty(
18507
- createSimpleExpression("ref_for", true),
18508
- createSimpleExpression("true")
18509
- )
18510
- );
18511
- }
18513
+ pushRefVForMarker();
18512
18514
  if (value && context.inline) {
18513
18515
  const binding = context.bindingMetadata[value.content];
18514
18516
  if (binding === "setup-let" || binding === "setup-ref" || binding === "setup-maybe-ref") {
@@ -18570,18 +18572,14 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
18570
18572
  ) {
18571
18573
  shouldUseBlock = true;
18572
18574
  }
18573
- if (isVBind && isStaticArgOf(arg, "ref") && context.scopes.vFor > 0) {
18574
- properties.push(
18575
- createObjectProperty(
18576
- createSimpleExpression("ref_for", true),
18577
- createSimpleExpression("true")
18578
- )
18579
- );
18575
+ if (isVBind && isStaticArgOf(arg, "ref")) {
18576
+ pushRefVForMarker();
18580
18577
  }
18581
18578
  if (!arg && (isVBind || isVOn)) {
18582
18579
  hasDynamicKeys = true;
18583
18580
  if (exp) {
18584
18581
  if (isVBind) {
18582
+ pushRefVForMarker();
18585
18583
  pushMergeArg();
18586
18584
  {
18587
18585
  {
@@ -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
  **/
@@ -1184,7 +1184,7 @@ function readonly(target) {
1184
1184
  readonlyMap
1185
1185
  );
1186
1186
  }
1187
- function shallowReadonly(target) {
1187
+ function shallowReadonly$1(target) {
1188
1188
  return createReactiveObject(
1189
1189
  target,
1190
1190
  true,
@@ -2102,21 +2102,21 @@ function renderComponentRoot(instance) {
2102
2102
  vnode,
2103
2103
  proxy,
2104
2104
  withProxy,
2105
- props,
2106
2105
  propsOptions: [propsOptions],
2107
2106
  slots,
2108
2107
  attrs,
2109
2108
  emit,
2110
2109
  render,
2111
2110
  renderCache,
2111
+ props,
2112
2112
  data,
2113
2113
  setupState,
2114
2114
  ctx,
2115
2115
  inheritAttrs
2116
2116
  } = instance;
2117
+ const prev = setCurrentRenderingInstance(instance);
2117
2118
  let result;
2118
2119
  let fallthroughAttrs;
2119
- const prev = setCurrentRenderingInstance(instance);
2120
2120
  try {
2121
2121
  if (vnode.shapeFlag & 4) {
2122
2122
  const proxyToUse = withProxy || proxy;
@@ -2135,7 +2135,7 @@ function renderComponentRoot(instance) {
2135
2135
  thisProxy,
2136
2136
  proxyToUse,
2137
2137
  renderCache,
2138
- props,
2138
+ false ? shallowReadonly(props) : props,
2139
2139
  setupState,
2140
2140
  data,
2141
2141
  ctx
@@ -2147,7 +2147,7 @@ function renderComponentRoot(instance) {
2147
2147
  if (false) ;
2148
2148
  result = normalizeVNode(
2149
2149
  render2.length > 1 ? render2(
2150
- props,
2150
+ false ? shallowReadonly(props) : props,
2151
2151
  false ? {
2152
2152
  get attrs() {
2153
2153
  markAttrsAccessed();
@@ -2157,9 +2157,8 @@ function renderComponentRoot(instance) {
2157
2157
  emit
2158
2158
  } : { attrs, slots, emit }
2159
2159
  ) : render2(
2160
- props,
2160
+ false ? shallowReadonly(props) : props,
2161
2161
  null
2162
- /* we know it doesn't need it */
2163
2162
  )
2164
2163
  );
2165
2164
  fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);
@@ -3540,11 +3539,16 @@ function emptyPlaceholder(vnode) {
3540
3539
  }
3541
3540
  }
3542
3541
  function getKeepAliveChild(vnode) {
3543
- return isKeepAlive(vnode) ? (
3544
- // #7121 ensure get the child component subtree in case
3545
- // it's been replaced during HMR
3546
- vnode.children ? vnode.children[0] : void 0
3547
- ) : vnode;
3542
+ if (!isKeepAlive(vnode)) {
3543
+ return vnode;
3544
+ }
3545
+ const { shapeFlag, children } = vnode;
3546
+ if (shapeFlag & 16) {
3547
+ return children[0];
3548
+ }
3549
+ if (shapeFlag & 32 && isFunction(children.default)) {
3550
+ return children.default();
3551
+ }
3548
3552
  }
3549
3553
  function setTransitionHooks(vnode, hooks) {
3550
3554
  if (vnode.shapeFlag & 6 && vnode.component) {
@@ -4702,7 +4706,7 @@ const PublicInstanceProxyHandlers = {
4702
4706
  let cssModule, globalProperties;
4703
4707
  if (publicGetter) {
4704
4708
  if (key === "$attrs") {
4705
- track(instance, "get", key);
4709
+ track(instance.attrs, "get", "");
4706
4710
  }
4707
4711
  return publicGetter(instance);
4708
4712
  } else if (
@@ -5275,7 +5279,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
5275
5279
  return vm;
5276
5280
  }
5277
5281
  }
5278
- Vue.version = `2.6.14-compat:${"3.4.22"}`;
5282
+ Vue.version = `2.6.14-compat:${"3.4.24"}`;
5279
5283
  Vue.config = singletonApp.config;
5280
5284
  Vue.use = (p, ...options) => {
5281
5285
  if (p && isFunction(p.install)) {
@@ -5802,10 +5806,13 @@ function shouldSkipAttr(key, instance) {
5802
5806
  return false;
5803
5807
  }
5804
5808
 
5805
- const attrsProto = {};
5809
+ const internalObjectProto = /* @__PURE__ */ Object.create(null);
5810
+ const createInternalObject = () => Object.create(internalObjectProto);
5811
+ const isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto;
5812
+
5806
5813
  function initProps(instance, rawProps, isStateful, isSSR = false) {
5807
5814
  const props = {};
5808
- const attrs = Object.create(attrsProto);
5815
+ const attrs = createInternalObject();
5809
5816
  instance.propsDefaults = /* @__PURE__ */ Object.create(null);
5810
5817
  setFullProps(instance, rawProps, props, attrs);
5811
5818
  for (const key in instance.propsOptions[0]) {
@@ -6143,21 +6150,17 @@ const normalizeVNodeSlots = (instance, children) => {
6143
6150
  instance.slots.default = () => normalized;
6144
6151
  };
6145
6152
  const initSlots = (instance, children) => {
6153
+ const slots = instance.slots = createInternalObject();
6146
6154
  if (instance.vnode.shapeFlag & 32) {
6147
6155
  const type = children._;
6148
6156
  if (type) {
6149
- instance.slots = toRaw(children);
6150
- def(instance.slots, "_", type);
6157
+ extend(slots, children);
6158
+ def(slots, "_", type);
6151
6159
  } else {
6152
- normalizeObjectSlots(
6153
- children,
6154
- instance.slots = {});
6155
- }
6156
- } else {
6157
- instance.slots = {};
6158
- if (children) {
6159
- normalizeVNodeSlots(instance, children);
6160
+ normalizeObjectSlots(children, slots);
6160
6161
  }
6162
+ } else if (children) {
6163
+ normalizeVNodeSlots(instance, children);
6161
6164
  }
6162
6165
  };
6163
6166
  const updateSlots = (instance, children, optimized) => {
@@ -8581,7 +8584,7 @@ function _createVNode(type, props = null, children = null, patchFlag = 0, dynami
8581
8584
  function guardReactiveProps(props) {
8582
8585
  if (!props)
8583
8586
  return null;
8584
- return isProxy(props) || Object.getPrototypeOf(props) === attrsProto ? extend({}, props) : props;
8587
+ return isProxy(props) || isInternalObject(props) ? extend({}, props) : props;
8585
8588
  }
8586
8589
  function cloneVNode(vnode, extraProps, mergeRef = false) {
8587
8590
  const { props, ref, patchFlag, children } = vnode;
@@ -8682,7 +8685,7 @@ function normalizeChildren(vnode, children) {
8682
8685
  } else {
8683
8686
  type = 32;
8684
8687
  const slotFlag = children._;
8685
- if (!slotFlag) {
8688
+ if (!slotFlag && !isInternalObject(children)) {
8686
8689
  children._ctx = currentRenderingInstance;
8687
8690
  } else if (slotFlag === 3 && currentRenderingInstance) {
8688
8691
  if (currentRenderingInstance.slots._ === 1) {
@@ -9135,7 +9138,7 @@ function isMemoSame(cached, memo) {
9135
9138
  return true;
9136
9139
  }
9137
9140
 
9138
- const version = "3.4.22";
9141
+ const version = "3.4.24";
9139
9142
  const warn$1 = NOOP;
9140
9143
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
9141
9144
  const devtools = void 0;
@@ -9380,8 +9383,8 @@ function resolveTransitionProps(rawProps) {
9380
9383
  if (legacyClassEnabled && legacyLeaveFromClass) {
9381
9384
  addTransitionClass(el, legacyLeaveFromClass);
9382
9385
  }
9383
- forceReflow();
9384
9386
  addTransitionClass(el, leaveActiveClass);
9387
+ forceReflow();
9385
9388
  nextFrame(() => {
9386
9389
  if (!el._isLeaving) {
9387
9390
  return;
@@ -10839,7 +10842,7 @@ var runtimeDom = /*#__PURE__*/Object.freeze({
10839
10842
  setDevtoolsHook: setDevtoolsHook,
10840
10843
  setTransitionHooks: setTransitionHooks,
10841
10844
  shallowReactive: shallowReactive,
10842
- shallowReadonly: shallowReadonly,
10845
+ shallowReadonly: shallowReadonly$1,
10843
10846
  shallowRef: shallowRef,
10844
10847
  ssrContextKey: ssrContextKey,
10845
10848
  ssrUtils: ssrUtils,
@@ -12302,7 +12305,7 @@ function isReferenced(node, parent, grandparent) {
12302
12305
  if (parent.key === node) {
12303
12306
  return !!parent.computed;
12304
12307
  }
12305
- return !grandparent || grandparent.type !== "ObjectPattern";
12308
+ return !grandparent ;
12306
12309
  case "ClassProperty":
12307
12310
  if (parent.key === node) {
12308
12311
  return !!parent.computed;
@@ -12333,9 +12336,6 @@ function isReferenced(node, parent, grandparent) {
12333
12336
  case "ExportDefaultSpecifier":
12334
12337
  return false;
12335
12338
  case "ExportSpecifier":
12336
- if (grandparent == null ? void 0 : grandparent.source) {
12337
- return false;
12338
- }
12339
12339
  return parent.local === node;
12340
12340
  case "ImportDefaultSpecifier":
12341
12341
  case "ImportNamespaceSpecifier":
@@ -13663,6 +13663,7 @@ function createTransformContext(root, {
13663
13663
  vOnce: 0
13664
13664
  },
13665
13665
  parent: null,
13666
+ grandParent: null,
13666
13667
  currentNode: root,
13667
13668
  childIndex: 0,
13668
13669
  inVOnce: false,
@@ -13818,6 +13819,7 @@ function traverseChildren(parent, context) {
13818
13819
  const child = parent.children[i];
13819
13820
  if (isString(child))
13820
13821
  continue;
13822
+ context.grandParent = context.parent;
13821
13823
  context.parent = parent;
13822
13824
  context.childIndex = i;
13823
13825
  context.onNodeRemoved = nodeRemoved;
@@ -14784,9 +14786,10 @@ function processExpression(node, context, asParams = false, asRawStatements = fa
14784
14786
  if (!ast) {
14785
14787
  const source = asRawStatements ? ` ${rawExp} ` : `(${rawExp})${asParams ? `=>{}` : ``}`;
14786
14788
  try {
14787
- ast = parser.parse(source, {
14789
+ ast = parser.parseExpression(source, {
14790
+ sourceType: "module",
14788
14791
  plugins: context.expressionPlugins
14789
- }).program;
14792
+ });
14790
14793
  } catch (e) {
14791
14794
  context.onError(
14792
14795
  createCompilerError(
@@ -15842,6 +15845,16 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
15842
15845
  if (arg)
15843
15846
  mergeArgs.push(arg);
15844
15847
  };
15848
+ const pushRefVForMarker = () => {
15849
+ if (context.scopes.vFor > 0) {
15850
+ properties.push(
15851
+ createObjectProperty(
15852
+ createSimpleExpression("ref_for", true),
15853
+ createSimpleExpression("true")
15854
+ )
15855
+ );
15856
+ }
15857
+ };
15845
15858
  const analyzePatchFlag = ({ key, value }) => {
15846
15859
  if (isStaticExp(key)) {
15847
15860
  const name = key.content;
@@ -15885,14 +15898,7 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
15885
15898
  let isStatic = true;
15886
15899
  if (name === "ref") {
15887
15900
  hasRef = true;
15888
- if (context.scopes.vFor > 0) {
15889
- properties.push(
15890
- createObjectProperty(
15891
- createSimpleExpression("ref_for", true),
15892
- createSimpleExpression("true")
15893
- )
15894
- );
15895
- }
15901
+ pushRefVForMarker();
15896
15902
  if (value && context.inline) {
15897
15903
  const binding = context.bindingMetadata[value.content];
15898
15904
  if (binding === "setup-let" || binding === "setup-ref" || binding === "setup-maybe-ref") {
@@ -15954,18 +15960,14 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
15954
15960
  ) {
15955
15961
  shouldUseBlock = true;
15956
15962
  }
15957
- if (isVBind && isStaticArgOf(arg, "ref") && context.scopes.vFor > 0) {
15958
- properties.push(
15959
- createObjectProperty(
15960
- createSimpleExpression("ref_for", true),
15961
- createSimpleExpression("true")
15962
- )
15963
- );
15963
+ if (isVBind && isStaticArgOf(arg, "ref")) {
15964
+ pushRefVForMarker();
15964
15965
  }
15965
15966
  if (!arg && (isVBind || isVOn)) {
15966
15967
  hasDynamicKeys = true;
15967
15968
  if (exp) {
15968
15969
  if (isVBind) {
15970
+ pushRefVForMarker();
15969
15971
  pushMergeArg();
15970
15972
  {
15971
15973
  if (isCompatEnabled(