@vue/compat 3.5.17 → 3.5.18

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.5.17
2
+ * @vue/compat v3.5.18
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -384,6 +384,24 @@ const stringifySymbol = (v, i = "") => {
384
384
  );
385
385
  };
386
386
 
387
+ function normalizeCssVarValue(value) {
388
+ if (value == null) {
389
+ return "initial";
390
+ }
391
+ if (typeof value === "string") {
392
+ return value === "" ? " " : value;
393
+ }
394
+ if (typeof value !== "number" || !Number.isFinite(value)) {
395
+ if (!!(process.env.NODE_ENV !== "production")) {
396
+ console.warn(
397
+ "[Vue warn] Invalid value used for CSS binding. Expected a string or a finite number but received:",
398
+ value
399
+ );
400
+ }
401
+ }
402
+ return String(value);
403
+ }
404
+
387
405
  function warn$2(msg, ...args) {
388
406
  console.warn(`[Vue warn] ${msg}`, ...args);
389
407
  }
@@ -5012,10 +5030,8 @@ function resolveCssVars(instance, vnode, expectedMap) {
5012
5030
  if (instance.getCssVars && (vnode === root || root && root.type === Fragment && root.children.includes(vnode))) {
5013
5031
  const cssVars = instance.getCssVars();
5014
5032
  for (const key in cssVars) {
5015
- expectedMap.set(
5016
- `--${getEscapedCssVarName(key)}`,
5017
- String(cssVars[key])
5018
- );
5033
+ const value = normalizeCssVarValue(cssVars[key]);
5034
+ expectedMap.set(`--${getEscapedCssVarName(key)}`, value);
5019
5035
  }
5020
5036
  }
5021
5037
  if (vnode === root && instance.parent) {
@@ -5204,16 +5220,19 @@ function defineAsyncComponent(source) {
5204
5220
  __asyncLoader: load,
5205
5221
  __asyncHydrate(el, instance, hydrate) {
5206
5222
  let patched = false;
5207
- const doHydrate = hydrateStrategy ? () => {
5208
- const performHydrate = () => {
5209
- if (!!(process.env.NODE_ENV !== "production") && patched) {
5223
+ (instance.bu || (instance.bu = [])).push(() => patched = true);
5224
+ const performHydrate = () => {
5225
+ if (patched) {
5226
+ if (!!(process.env.NODE_ENV !== "production")) {
5210
5227
  warn$1(
5211
- `Skipping lazy hydration for component '${getComponentName(resolvedComp)}': it was updated before lazy hydration performed.`
5228
+ `Skipping lazy hydration for component '${getComponentName(resolvedComp) || resolvedComp.__file}': it was updated before lazy hydration performed.`
5212
5229
  );
5213
- return;
5214
5230
  }
5215
- hydrate();
5216
- };
5231
+ return;
5232
+ }
5233
+ hydrate();
5234
+ };
5235
+ const doHydrate = hydrateStrategy ? () => {
5217
5236
  const teardown = hydrateStrategy(
5218
5237
  performHydrate,
5219
5238
  (cb) => forEachElement(el, cb)
@@ -5221,8 +5240,7 @@ function defineAsyncComponent(source) {
5221
5240
  if (teardown) {
5222
5241
  (instance.bum || (instance.bum = [])).push(teardown);
5223
5242
  }
5224
- (instance.u || (instance.u = [])).push(() => patched = true);
5225
- } : hydrate;
5243
+ } : performHydrate;
5226
5244
  if (resolvedComp) {
5227
5245
  doHydrate();
5228
5246
  } else {
@@ -6644,15 +6662,15 @@ function withDefaults(props, defaults) {
6644
6662
  return null;
6645
6663
  }
6646
6664
  function useSlots() {
6647
- return getContext().slots;
6665
+ return getContext("useSlots").slots;
6648
6666
  }
6649
6667
  function useAttrs() {
6650
- return getContext().attrs;
6668
+ return getContext("useAttrs").attrs;
6651
6669
  }
6652
- function getContext() {
6670
+ function getContext(calledFunctionName) {
6653
6671
  const i = getCurrentInstance();
6654
6672
  if (!!(process.env.NODE_ENV !== "production") && !i) {
6655
- warn$1(`useContext() called without active instance.`);
6673
+ warn$1(`${calledFunctionName}() called without active instance.`);
6656
6674
  }
6657
6675
  return i.setupContext || (i.setupContext = createSetupContext(i));
6658
6676
  }
@@ -6913,7 +6931,8 @@ function applyOptions(instance) {
6913
6931
  expose.forEach((key) => {
6914
6932
  Object.defineProperty(exposed, key, {
6915
6933
  get: () => publicThis[key],
6916
- set: (val) => publicThis[key] = val
6934
+ set: (val) => publicThis[key] = val,
6935
+ enumerable: true
6917
6936
  });
6918
6937
  });
6919
6938
  } else if (!instance.exposed) {
@@ -7238,7 +7257,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
7238
7257
  return vm;
7239
7258
  }
7240
7259
  }
7241
- Vue.version = `2.6.14-compat:${"3.5.17"}`;
7260
+ Vue.version = `2.6.14-compat:${"3.5.18"}`;
7242
7261
  Vue.config = singletonApp.config;
7243
7262
  Vue.use = (plugin, ...options) => {
7244
7263
  if (plugin && isFunction(plugin.install)) {
@@ -7832,7 +7851,7 @@ function provide(key, value) {
7832
7851
  }
7833
7852
  }
7834
7853
  function inject(key, defaultValue, treatDefaultAsFactory = false) {
7835
- const instance = currentInstance || currentRenderingInstance;
7854
+ const instance = getCurrentInstance();
7836
7855
  if (instance || currentApp) {
7837
7856
  let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;
7838
7857
  if (provides && key in provides) {
@@ -7847,7 +7866,7 @@ function inject(key, defaultValue, treatDefaultAsFactory = false) {
7847
7866
  }
7848
7867
  }
7849
7868
  function hasInjectionContext() {
7850
- return !!(currentInstance || currentRenderingInstance || currentApp);
7869
+ return !!(getCurrentInstance() || currentApp);
7851
7870
  }
7852
7871
 
7853
7872
  function createPropsDefaultThis(instance, rawProps, propKey) {
@@ -8333,7 +8352,7 @@ function isBoolean(...args) {
8333
8352
  return args.some((elem) => elem.toLowerCase() === "boolean");
8334
8353
  }
8335
8354
 
8336
- const isInternalKey = (key) => key[0] === "_" || key === "$stable";
8355
+ const isInternalKey = (key) => key === "_" || key === "__" || key === "_ctx" || key === "$stable";
8337
8356
  const normalizeSlotValue = (value) => isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)];
8338
8357
  const normalizeSlot = (key, rawSlot, ctx) => {
8339
8358
  if (rawSlot._n) {
@@ -9114,6 +9133,7 @@ function baseCreateRenderer(options, createHydrationFns) {
9114
9133
  if (!initialVNode.el) {
9115
9134
  const placeholder = instance.subTree = createVNode(Comment);
9116
9135
  processCommentNode(null, placeholder, container, anchor);
9136
+ initialVNode.placeholder = placeholder.el;
9117
9137
  }
9118
9138
  } else {
9119
9139
  setupRenderEffect(
@@ -9639,7 +9659,11 @@ function baseCreateRenderer(options, createHydrationFns) {
9639
9659
  for (i = toBePatched - 1; i >= 0; i--) {
9640
9660
  const nextIndex = s2 + i;
9641
9661
  const nextChild = c2[nextIndex];
9642
- const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;
9662
+ const anchorVNode = c2[nextIndex + 1];
9663
+ const anchor = nextIndex + 1 < l2 ? (
9664
+ // #13559, fallback to el placeholder for unresolved async component
9665
+ anchorVNode.el || anchorVNode.placeholder
9666
+ ) : parentAnchor;
9643
9667
  if (newIndexToOldIndexMap[i] === 0) {
9644
9668
  patch(
9645
9669
  null,
@@ -11634,6 +11658,7 @@ function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false
11634
11658
  suspense: vnode.suspense,
11635
11659
  ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),
11636
11660
  ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),
11661
+ placeholder: vnode.placeholder,
11637
11662
  el: vnode.el,
11638
11663
  anchor: vnode.anchor,
11639
11664
  ctx: vnode.ctx,
@@ -12454,7 +12479,7 @@ function isMemoSame(cached, memo) {
12454
12479
  return true;
12455
12480
  }
12456
12481
 
12457
- const version = "3.5.17";
12482
+ const version = "3.5.18";
12458
12483
  const warn = !!(process.env.NODE_ENV !== "production") ? warn$1 : NOOP;
12459
12484
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
12460
12485
  const devtools = !!(process.env.NODE_ENV !== "production") || true ? devtools$1 : void 0;
@@ -13011,8 +13036,9 @@ function setVarsOnNode(el, vars) {
13011
13036
  const style = el.style;
13012
13037
  let cssText = "";
13013
13038
  for (const key in vars) {
13014
- style.setProperty(`--${key}`, vars[key]);
13015
- cssText += `--${key}: ${vars[key]};`;
13039
+ const value = normalizeCssVarValue(vars[key]);
13040
+ style.setProperty(`--${key}`, value);
13041
+ cssText += `--${key}: ${value};`;
13016
13042
  }
13017
13043
  style[CSS_VAR_TEXT] = cssText;
13018
13044
  }
@@ -15909,7 +15935,7 @@ function isCoreComponent(tag) {
15909
15935
  return BASE_TRANSITION;
15910
15936
  }
15911
15937
  }
15912
- const nonIdentifierRE = /^\d|[^\$\w\xA0-\uFFFF]/;
15938
+ const nonIdentifierRE = /^$|^\d|[^\$\w\xA0-\uFFFF]/;
15913
15939
  const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name);
15914
15940
  const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/;
15915
15941
  const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/;
@@ -16021,6 +16047,9 @@ function hasDynamicKeyVBind(node) {
16021
16047
  function isText$1(node) {
16022
16048
  return node.type === 5 || node.type === 2;
16023
16049
  }
16050
+ function isVPre(p) {
16051
+ return p.type === 7 && p.name === "pre";
16052
+ }
16024
16053
  function isVSlot(p) {
16025
16054
  return p.type === 7 && p.name === "slot";
16026
16055
  }
@@ -16279,7 +16308,7 @@ const tokenizer = new Tokenizer(stack, {
16279
16308
  ondirarg(start, end) {
16280
16309
  if (start === end) return;
16281
16310
  const arg = getSlice(start, end);
16282
- if (inVPre) {
16311
+ if (inVPre && !isVPre(currentProp)) {
16283
16312
  currentProp.name += arg;
16284
16313
  setLocEnd(currentProp.nameLoc, end);
16285
16314
  } else {
@@ -16294,7 +16323,7 @@ const tokenizer = new Tokenizer(stack, {
16294
16323
  },
16295
16324
  ondirmodifier(start, end) {
16296
16325
  const mod = getSlice(start, end);
16297
- if (inVPre) {
16326
+ if (inVPre && !isVPre(currentProp)) {
16298
16327
  currentProp.name += "." + mod;
16299
16328
  setLocEnd(currentProp.nameLoc, end);
16300
16329
  } else if (currentProp.name === "slot") {
@@ -16922,6 +16951,11 @@ function walk(node, parent, context, doNotHoistNode = false, inFor = false) {
16922
16951
  } else if (child.type === 12) {
16923
16952
  const constantType = doNotHoistNode ? 0 : getConstantType(child, context);
16924
16953
  if (constantType >= 2) {
16954
+ if (child.codegenNode.type === 14 && child.codegenNode.arguments.length > 0) {
16955
+ child.codegenNode.arguments.push(
16956
+ -1 + (!!(process.env.NODE_ENV !== "production") ? ` /* ${PatchFlagNames[-1]} */` : ``)
16957
+ );
16958
+ }
16925
16959
  toCache.push(child);
16926
16960
  continue;
16927
16961
  }
@@ -18374,7 +18408,7 @@ const transformBind = (dir, _node, context) => {
18374
18408
  arg.children.unshift(`(`);
18375
18409
  arg.children.push(`) || ""`);
18376
18410
  } else if (!arg.isStatic) {
18377
- arg.content = `${arg.content} || ""`;
18411
+ arg.content = arg.content ? `${arg.content} || ""` : `""`;
18378
18412
  }
18379
18413
  if (modifiers.some((mod) => mod.content === "camel")) {
18380
18414
  if (arg.type === 4) {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compat v3.5.17
2
+ * @vue/compat v3.5.18
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -387,6 +387,24 @@ var Vue = (function () {
387
387
  );
388
388
  };
389
389
 
390
+ function normalizeCssVarValue(value) {
391
+ if (value == null) {
392
+ return "initial";
393
+ }
394
+ if (typeof value === "string") {
395
+ return value === "" ? " " : value;
396
+ }
397
+ if (typeof value !== "number" || !Number.isFinite(value)) {
398
+ {
399
+ console.warn(
400
+ "[Vue warn] Invalid value used for CSS binding. Expected a string or a finite number but received:",
401
+ value
402
+ );
403
+ }
404
+ }
405
+ return String(value);
406
+ }
407
+
390
408
  function warn$2(msg, ...args) {
391
409
  console.warn(`[Vue warn] ${msg}`, ...args);
392
410
  }
@@ -4985,10 +5003,8 @@ Server rendered element contains fewer child nodes than client vdom.`
4985
5003
  if (instance.getCssVars && (vnode === root || root && root.type === Fragment && root.children.includes(vnode))) {
4986
5004
  const cssVars = instance.getCssVars();
4987
5005
  for (const key in cssVars) {
4988
- expectedMap.set(
4989
- `--${getEscapedCssVarName(key)}`,
4990
- String(cssVars[key])
4991
- );
5006
+ const value = normalizeCssVarValue(cssVars[key]);
5007
+ expectedMap.set(`--${getEscapedCssVarName(key)}`, value);
4992
5008
  }
4993
5009
  }
4994
5010
  if (vnode === root && instance.parent) {
@@ -5177,16 +5193,19 @@ Server rendered element contains fewer child nodes than client vdom.`
5177
5193
  __asyncLoader: load,
5178
5194
  __asyncHydrate(el, instance, hydrate) {
5179
5195
  let patched = false;
5180
- const doHydrate = hydrateStrategy ? () => {
5181
- const performHydrate = () => {
5182
- if (patched) {
5196
+ (instance.bu || (instance.bu = [])).push(() => patched = true);
5197
+ const performHydrate = () => {
5198
+ if (patched) {
5199
+ {
5183
5200
  warn$1(
5184
- `Skipping lazy hydration for component '${getComponentName(resolvedComp)}': it was updated before lazy hydration performed.`
5201
+ `Skipping lazy hydration for component '${getComponentName(resolvedComp) || resolvedComp.__file}': it was updated before lazy hydration performed.`
5185
5202
  );
5186
- return;
5187
5203
  }
5188
- hydrate();
5189
- };
5204
+ return;
5205
+ }
5206
+ hydrate();
5207
+ };
5208
+ const doHydrate = hydrateStrategy ? () => {
5190
5209
  const teardown = hydrateStrategy(
5191
5210
  performHydrate,
5192
5211
  (cb) => forEachElement(el, cb)
@@ -5194,8 +5213,7 @@ Server rendered element contains fewer child nodes than client vdom.`
5194
5213
  if (teardown) {
5195
5214
  (instance.bum || (instance.bum = [])).push(teardown);
5196
5215
  }
5197
- (instance.u || (instance.u = [])).push(() => patched = true);
5198
- } : hydrate;
5216
+ } : performHydrate;
5199
5217
  if (resolvedComp) {
5200
5218
  doHydrate();
5201
5219
  } else {
@@ -6611,15 +6629,15 @@ If this is a native custom element, make sure to exclude it from component resol
6611
6629
  return null;
6612
6630
  }
6613
6631
  function useSlots() {
6614
- return getContext().slots;
6632
+ return getContext("useSlots").slots;
6615
6633
  }
6616
6634
  function useAttrs() {
6617
- return getContext().attrs;
6635
+ return getContext("useAttrs").attrs;
6618
6636
  }
6619
- function getContext() {
6637
+ function getContext(calledFunctionName) {
6620
6638
  const i = getCurrentInstance();
6621
6639
  if (!i) {
6622
- warn$1(`useContext() called without active instance.`);
6640
+ warn$1(`${calledFunctionName}() called without active instance.`);
6623
6641
  }
6624
6642
  return i.setupContext || (i.setupContext = createSetupContext(i));
6625
6643
  }
@@ -6878,7 +6896,8 @@ If this is a native custom element, make sure to exclude it from component resol
6878
6896
  expose.forEach((key) => {
6879
6897
  Object.defineProperty(exposed, key, {
6880
6898
  get: () => publicThis[key],
6881
- set: (val) => publicThis[key] = val
6899
+ set: (val) => publicThis[key] = val,
6900
+ enumerable: true
6882
6901
  });
6883
6902
  });
6884
6903
  } else if (!instance.exposed) {
@@ -7200,7 +7219,7 @@ If this is a native custom element, make sure to exclude it from component resol
7200
7219
  return vm;
7201
7220
  }
7202
7221
  }
7203
- Vue.version = `2.6.14-compat:${"3.5.17"}`;
7222
+ Vue.version = `2.6.14-compat:${"3.5.18"}`;
7204
7223
  Vue.config = singletonApp.config;
7205
7224
  Vue.use = (plugin, ...options) => {
7206
7225
  if (plugin && isFunction(plugin.install)) {
@@ -7792,7 +7811,7 @@ If you want to remount the same app, move your app creation logic into a factory
7792
7811
  }
7793
7812
  }
7794
7813
  function inject(key, defaultValue, treatDefaultAsFactory = false) {
7795
- const instance = currentInstance || currentRenderingInstance;
7814
+ const instance = getCurrentInstance();
7796
7815
  if (instance || currentApp) {
7797
7816
  let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;
7798
7817
  if (provides && key in provides) {
@@ -7807,7 +7826,7 @@ If you want to remount the same app, move your app creation logic into a factory
7807
7826
  }
7808
7827
  }
7809
7828
  function hasInjectionContext() {
7810
- return !!(currentInstance || currentRenderingInstance || currentApp);
7829
+ return !!(getCurrentInstance() || currentApp);
7811
7830
  }
7812
7831
 
7813
7832
  function createPropsDefaultThis(instance, rawProps, propKey) {
@@ -8293,7 +8312,7 @@ If you want to remount the same app, move your app creation logic into a factory
8293
8312
  return args.some((elem) => elem.toLowerCase() === "boolean");
8294
8313
  }
8295
8314
 
8296
- const isInternalKey = (key) => key[0] === "_" || key === "$stable";
8315
+ const isInternalKey = (key) => key === "_" || key === "__" || key === "_ctx" || key === "$stable";
8297
8316
  const normalizeSlotValue = (value) => isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)];
8298
8317
  const normalizeSlot = (key, rawSlot, ctx) => {
8299
8318
  if (rawSlot._n) {
@@ -9036,6 +9055,7 @@ If you want to remount the same app, move your app creation logic into a factory
9036
9055
  if (!initialVNode.el) {
9037
9056
  const placeholder = instance.subTree = createVNode(Comment);
9038
9057
  processCommentNode(null, placeholder, container, anchor);
9058
+ initialVNode.placeholder = placeholder.el;
9039
9059
  }
9040
9060
  } else {
9041
9061
  setupRenderEffect(
@@ -9561,7 +9581,11 @@ If you want to remount the same app, move your app creation logic into a factory
9561
9581
  for (i = toBePatched - 1; i >= 0; i--) {
9562
9582
  const nextIndex = s2 + i;
9563
9583
  const nextChild = c2[nextIndex];
9564
- const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;
9584
+ const anchorVNode = c2[nextIndex + 1];
9585
+ const anchor = nextIndex + 1 < l2 ? (
9586
+ // #13559, fallback to el placeholder for unresolved async component
9587
+ anchorVNode.el || anchorVNode.placeholder
9588
+ ) : parentAnchor;
9565
9589
  if (newIndexToOldIndexMap[i] === 0) {
9566
9590
  patch(
9567
9591
  null,
@@ -11528,6 +11552,7 @@ Component that was made reactive: `,
11528
11552
  suspense: vnode.suspense,
11529
11553
  ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),
11530
11554
  ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),
11555
+ placeholder: vnode.placeholder,
11531
11556
  el: vnode.el,
11532
11557
  anchor: vnode.anchor,
11533
11558
  ctx: vnode.ctx,
@@ -12320,7 +12345,7 @@ Component that was made reactive: `,
12320
12345
  return true;
12321
12346
  }
12322
12347
 
12323
- const version = "3.5.17";
12348
+ const version = "3.5.18";
12324
12349
  const warn = warn$1 ;
12325
12350
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
12326
12351
  const devtools = devtools$1 ;
@@ -12858,8 +12883,9 @@ Component that was made reactive: `,
12858
12883
  const style = el.style;
12859
12884
  let cssText = "";
12860
12885
  for (const key in vars) {
12861
- style.setProperty(`--${key}`, vars[key]);
12862
- cssText += `--${key}: ${vars[key]};`;
12886
+ const value = normalizeCssVarValue(vars[key]);
12887
+ style.setProperty(`--${key}`, value);
12888
+ cssText += `--${key}: ${value};`;
12863
12889
  }
12864
12890
  style[CSS_VAR_TEXT] = cssText;
12865
12891
  }
@@ -15709,7 +15735,7 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
15709
15735
  return BASE_TRANSITION;
15710
15736
  }
15711
15737
  }
15712
- const nonIdentifierRE = /^\d|[^\$\w\xA0-\uFFFF]/;
15738
+ const nonIdentifierRE = /^$|^\d|[^\$\w\xA0-\uFFFF]/;
15713
15739
  const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name);
15714
15740
  const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/;
15715
15741
  const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/;
@@ -15821,6 +15847,9 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
15821
15847
  function isText$1(node) {
15822
15848
  return node.type === 5 || node.type === 2;
15823
15849
  }
15850
+ function isVPre(p) {
15851
+ return p.type === 7 && p.name === "pre";
15852
+ }
15824
15853
  function isVSlot(p) {
15825
15854
  return p.type === 7 && p.name === "slot";
15826
15855
  }
@@ -16079,7 +16108,7 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
16079
16108
  ondirarg(start, end) {
16080
16109
  if (start === end) return;
16081
16110
  const arg = getSlice(start, end);
16082
- if (inVPre) {
16111
+ if (inVPre && !isVPre(currentProp)) {
16083
16112
  currentProp.name += arg;
16084
16113
  setLocEnd(currentProp.nameLoc, end);
16085
16114
  } else {
@@ -16094,7 +16123,7 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
16094
16123
  },
16095
16124
  ondirmodifier(start, end) {
16096
16125
  const mod = getSlice(start, end);
16097
- if (inVPre) {
16126
+ if (inVPre && !isVPre(currentProp)) {
16098
16127
  currentProp.name += "." + mod;
16099
16128
  setLocEnd(currentProp.nameLoc, end);
16100
16129
  } else if (currentProp.name === "slot") {
@@ -16722,6 +16751,11 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
16722
16751
  } else if (child.type === 12) {
16723
16752
  const constantType = doNotHoistNode ? 0 : getConstantType(child, context);
16724
16753
  if (constantType >= 2) {
16754
+ if (child.codegenNode.type === 14 && child.codegenNode.arguments.length > 0) {
16755
+ child.codegenNode.arguments.push(
16756
+ -1 + (` /* ${PatchFlagNames[-1]} */` )
16757
+ );
16758
+ }
16725
16759
  toCache.push(child);
16726
16760
  continue;
16727
16761
  }
@@ -18171,7 +18205,7 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
18171
18205
  arg.children.unshift(`(`);
18172
18206
  arg.children.push(`) || ""`);
18173
18207
  } else if (!arg.isStatic) {
18174
- arg.content = `${arg.content} || ""`;
18208
+ arg.content = arg.content ? `${arg.content} || ""` : `""`;
18175
18209
  }
18176
18210
  if (modifiers.some((mod) => mod.content === "camel")) {
18177
18211
  if (arg.type === 4) {