@vue/compat 3.5.14 → 3.5.15

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.14
2
+ * @vue/compat v3.5.15
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -2154,11 +2154,11 @@ function watch$1(source, cb, options = EMPTY_OBJ) {
2154
2154
  oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,
2155
2155
  boundCleanup
2156
2156
  ];
2157
+ oldValue = newValue;
2157
2158
  call ? call(cb, 3, args) : (
2158
2159
  // @ts-expect-error
2159
2160
  cb(...args)
2160
2161
  );
2161
- oldValue = newValue;
2162
2162
  } finally {
2163
2163
  activeWatcher = currentWatcher;
2164
2164
  }
@@ -3619,15 +3619,16 @@ const TeleportImpl = {
3619
3619
  updateCssVars(n2, true);
3620
3620
  }
3621
3621
  if (isTeleportDeferred(n2.props)) {
3622
+ n2.el.__isMounted = false;
3622
3623
  queuePostRenderEffect(() => {
3623
3624
  mountToTarget();
3624
- n2.el.__isMounted = true;
3625
+ delete n2.el.__isMounted;
3625
3626
  }, parentSuspense);
3626
3627
  } else {
3627
3628
  mountToTarget();
3628
3629
  }
3629
3630
  } else {
3630
- if (isTeleportDeferred(n2.props) && !n1.el.__isMounted) {
3631
+ if (isTeleportDeferred(n2.props) && n1.el.__isMounted === false) {
3631
3632
  queuePostRenderEffect(() => {
3632
3633
  TeleportImpl.process(
3633
3634
  n1,
@@ -3641,7 +3642,6 @@ const TeleportImpl = {
3641
3642
  optimized,
3642
3643
  internals
3643
3644
  );
3644
- delete n1.el.__isMounted;
3645
3645
  }, parentSuspense);
3646
3646
  return;
3647
3647
  }
@@ -4633,6 +4633,8 @@ function createHydrationFunctions(rendererInternals) {
4633
4633
  ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;
4634
4634
  const content = el.content.firstChild;
4635
4635
  if (needCallTransitionHooks) {
4636
+ const cls = content.getAttribute("class");
4637
+ if (cls) content.$cls = cls;
4636
4638
  transition.beforeEnter(content);
4637
4639
  }
4638
4640
  replaceNode(content, el, parentComponent);
@@ -4896,7 +4898,12 @@ function propHasMismatch(el, key, clientValue, vnode, instance) {
4896
4898
  let actual;
4897
4899
  let expected;
4898
4900
  if (key === "class") {
4899
- actual = el.getAttribute("class");
4901
+ if (el.$cls) {
4902
+ actual = el.$cls;
4903
+ delete el.$cls;
4904
+ } else {
4905
+ actual = el.getAttribute("class");
4906
+ }
4900
4907
  expected = normalizeClass(clientValue);
4901
4908
  if (!isSetEqual(toClassSet(actual || ""), toClassSet(expected))) {
4902
4909
  mismatchType = 2 /* CLASS */;
@@ -5191,14 +5198,25 @@ function defineAsyncComponent(source) {
5191
5198
  name: "AsyncComponentWrapper",
5192
5199
  __asyncLoader: load,
5193
5200
  __asyncHydrate(el, instance, hydrate) {
5201
+ let patched = false;
5194
5202
  const doHydrate = hydrateStrategy ? () => {
5203
+ const performHydrate = () => {
5204
+ if (!!(process.env.NODE_ENV !== "production") && patched) {
5205
+ warn$1(
5206
+ `Skipping lazy hydration for component '${getComponentName(resolvedComp)}': it was updated before lazy hydration performed.`
5207
+ );
5208
+ return;
5209
+ }
5210
+ hydrate();
5211
+ };
5195
5212
  const teardown = hydrateStrategy(
5196
- hydrate,
5213
+ performHydrate,
5197
5214
  (cb) => forEachElement(el, cb)
5198
5215
  );
5199
5216
  if (teardown) {
5200
5217
  (instance.bum || (instance.bum = [])).push(teardown);
5201
5218
  }
5219
+ (instance.u || (instance.u = [])).push(() => patched = true);
5202
5220
  } : hydrate;
5203
5221
  if (resolvedComp) {
5204
5222
  doHydrate();
@@ -7215,7 +7233,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
7215
7233
  return vm;
7216
7234
  }
7217
7235
  }
7218
- Vue.version = `2.6.14-compat:${"3.5.14"}`;
7236
+ Vue.version = `2.6.14-compat:${"3.5.15"}`;
7219
7237
  Vue.config = singletonApp.config;
7220
7238
  Vue.use = (plugin, ...options) => {
7221
7239
  if (plugin && isFunction(plugin.install)) {
@@ -7763,9 +7781,15 @@ If you want to remount the same app, move your app creation logic into a factory
7763
7781
  },
7764
7782
  provide(key, value) {
7765
7783
  if (!!(process.env.NODE_ENV !== "production") && key in context.provides) {
7766
- warn$1(
7767
- `App already provides property with key "${String(key)}". It will be overwritten with the new value.`
7768
- );
7784
+ if (hasOwn(context.provides, key)) {
7785
+ warn$1(
7786
+ `App already provides property with key "${String(key)}". It will be overwritten with the new value.`
7787
+ );
7788
+ } else {
7789
+ warn$1(
7790
+ `App already provides property with key "${String(key)}" inherited from its parent element. It will be overwritten with the new value.`
7791
+ );
7792
+ }
7769
7793
  }
7770
7794
  context.provides[key] = value;
7771
7795
  return app;
@@ -7805,7 +7829,7 @@ function provide(key, value) {
7805
7829
  function inject(key, defaultValue, treatDefaultAsFactory = false) {
7806
7830
  const instance = currentInstance || currentRenderingInstance;
7807
7831
  if (instance || currentApp) {
7808
- const provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;
7832
+ let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;
7809
7833
  if (provides && key in provides) {
7810
7834
  return provides[key];
7811
7835
  } else if (arguments.length > 1) {
@@ -8901,7 +8925,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8901
8925
  (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement
8902
8926
  // which also requires the correct parent container
8903
8927
  !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.
8904
- oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : (
8928
+ oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldVNode.el) : (
8905
8929
  // In other cases, the parent container is not actually used so we
8906
8930
  // just pass the block element here to avoid a DOM parentNode call.
8907
8931
  fallbackContainer
@@ -12419,7 +12443,7 @@ function isMemoSame(cached, memo) {
12419
12443
  return true;
12420
12444
  }
12421
12445
 
12422
- const version = "3.5.14";
12446
+ const version = "3.5.15";
12423
12447
  const warn = !!(process.env.NODE_ENV !== "production") ? warn$1 : NOOP;
12424
12448
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
12425
12449
  const devtools = !!(process.env.NODE_ENV !== "production") || true ? devtools$1 : void 0;
@@ -13119,7 +13143,7 @@ function compatCoerceAttr(el, key, value, instance = null) {
13119
13143
  el.setAttribute(key, v2CoercedValue);
13120
13144
  return true;
13121
13145
  }
13122
- } else if (value === false && !isSpecialBooleanAttr(key) && compatUtils.isCompatEnabled("ATTR_FALSE_VALUE", instance)) {
13146
+ } else if (value === false && !(el.tagName === "INPUT" && key === "value") && !isSpecialBooleanAttr(key) && compatUtils.isCompatEnabled("ATTR_FALSE_VALUE", instance)) {
13123
13147
  compatUtils.warnDeprecation(
13124
13148
  "ATTR_FALSE_VALUE",
13125
13149
  instance,
@@ -13408,13 +13432,10 @@ class VueElement extends BaseClass {
13408
13432
  this._root = this;
13409
13433
  }
13410
13434
  }
13411
- if (!this._def.__asyncLoader) {
13412
- this._resolveProps(this._def);
13413
- }
13414
13435
  }
13415
13436
  connectedCallback() {
13416
13437
  if (!this.isConnected) return;
13417
- if (!this.shadowRoot) {
13438
+ if (!this.shadowRoot && !this._resolved) {
13418
13439
  this._parseSlots();
13419
13440
  }
13420
13441
  this._connected = true;
@@ -13427,8 +13448,7 @@ class VueElement extends BaseClass {
13427
13448
  }
13428
13449
  if (!this._instance) {
13429
13450
  if (this._resolved) {
13430
- this._setParent();
13431
- this._update();
13451
+ this._mount(this._def);
13432
13452
  } else {
13433
13453
  if (parent && parent._pendingResolve) {
13434
13454
  this._pendingResolve = parent._pendingResolve.then(() => {
@@ -13444,7 +13464,15 @@ class VueElement extends BaseClass {
13444
13464
  _setParent(parent = this._parent) {
13445
13465
  if (parent) {
13446
13466
  this._instance.parent = parent._instance;
13447
- this._instance.provides = parent._instance.provides;
13467
+ this._inheritParentContext(parent);
13468
+ }
13469
+ }
13470
+ _inheritParentContext(parent = this._parent) {
13471
+ if (parent && this._app) {
13472
+ Object.setPrototypeOf(
13473
+ this._app._context.provides,
13474
+ parent._instance.provides
13475
+ );
13448
13476
  }
13449
13477
  }
13450
13478
  disconnectedCallback() {
@@ -13494,9 +13522,7 @@ class VueElement extends BaseClass {
13494
13522
  }
13495
13523
  }
13496
13524
  this._numberProps = numberProps;
13497
- if (isAsync) {
13498
- this._resolveProps(def);
13499
- }
13525
+ this._resolveProps(def);
13500
13526
  if (this.shadowRoot) {
13501
13527
  this._applyStyles(styles);
13502
13528
  } else if (!!(process.env.NODE_ENV !== "production") && styles) {
@@ -13520,6 +13546,7 @@ class VueElement extends BaseClass {
13520
13546
  def.name = "VueElement";
13521
13547
  }
13522
13548
  this._app = this._createApp(def);
13549
+ this._inheritParentContext();
13523
13550
  if (def.configureApp) {
13524
13551
  def.configureApp(this._app);
13525
13552
  }
@@ -13604,7 +13631,9 @@ class VueElement extends BaseClass {
13604
13631
  }
13605
13632
  }
13606
13633
  _update() {
13607
- render(this._createVNode(), this._root);
13634
+ const vnode = this._createVNode();
13635
+ if (this._app) vnode.appContext = this._app._context;
13636
+ render(vnode, this._root);
13608
13637
  }
13609
13638
  _createVNode() {
13610
13639
  const baseProps = {};
@@ -19114,9 +19143,8 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
19114
19143
  hasDynamicKeys = true;
19115
19144
  if (exp) {
19116
19145
  if (isVBind) {
19117
- pushRefVForMarker();
19118
- pushMergeArg();
19119
19146
  {
19147
+ pushMergeArg();
19120
19148
  if (!!(process.env.NODE_ENV !== "production")) {
19121
19149
  const hasOverridableKeys = mergeArgs.some((arg2) => {
19122
19150
  if (arg2.type === 15) {
@@ -19146,6 +19174,8 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
19146
19174
  continue;
19147
19175
  }
19148
19176
  }
19177
+ pushRefVForMarker();
19178
+ pushMergeArg();
19149
19179
  mergeArgs.push(exp);
19150
19180
  } else {
19151
19181
  pushMergeArg({
@@ -20378,6 +20408,9 @@ const ignoreSideEffectTags = (node, context) => {
20378
20408
  };
20379
20409
 
20380
20410
  function isValidHTMLNesting(parent, child) {
20411
+ if (parent === "template") {
20412
+ return true;
20413
+ }
20381
20414
  if (parent in onlyValidChildren) {
20382
20415
  return onlyValidChildren[parent].has(child);
20383
20416
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compat v3.5.14
2
+ * @vue/compat v3.5.15
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -2147,11 +2147,11 @@ var Vue = (function () {
2147
2147
  oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,
2148
2148
  boundCleanup
2149
2149
  ];
2150
+ oldValue = newValue;
2150
2151
  call ? call(cb, 3, args) : (
2151
2152
  // @ts-expect-error
2152
2153
  cb(...args)
2153
2154
  );
2154
- oldValue = newValue;
2155
2155
  } finally {
2156
2156
  activeWatcher = currentWatcher;
2157
2157
  }
@@ -3604,15 +3604,16 @@ Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
3604
3604
  updateCssVars(n2, true);
3605
3605
  }
3606
3606
  if (isTeleportDeferred(n2.props)) {
3607
+ n2.el.__isMounted = false;
3607
3608
  queuePostRenderEffect(() => {
3608
3609
  mountToTarget();
3609
- n2.el.__isMounted = true;
3610
+ delete n2.el.__isMounted;
3610
3611
  }, parentSuspense);
3611
3612
  } else {
3612
3613
  mountToTarget();
3613
3614
  }
3614
3615
  } else {
3615
- if (isTeleportDeferred(n2.props) && !n1.el.__isMounted) {
3616
+ if (isTeleportDeferred(n2.props) && n1.el.__isMounted === false) {
3616
3617
  queuePostRenderEffect(() => {
3617
3618
  TeleportImpl.process(
3618
3619
  n1,
@@ -3626,7 +3627,6 @@ Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
3626
3627
  optimized,
3627
3628
  internals
3628
3629
  );
3629
- delete n1.el.__isMounted;
3630
3630
  }, parentSuspense);
3631
3631
  return;
3632
3632
  }
@@ -4617,6 +4617,8 @@ Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
4617
4617
  ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;
4618
4618
  const content = el.content.firstChild;
4619
4619
  if (needCallTransitionHooks) {
4620
+ const cls = content.getAttribute("class");
4621
+ if (cls) content.$cls = cls;
4620
4622
  transition.beforeEnter(content);
4621
4623
  }
4622
4624
  replaceNode(content, el, parentComponent);
@@ -4869,7 +4871,12 @@ Server rendered element contains fewer child nodes than client vdom.`
4869
4871
  let actual;
4870
4872
  let expected;
4871
4873
  if (key === "class") {
4872
- actual = el.getAttribute("class");
4874
+ if (el.$cls) {
4875
+ actual = el.$cls;
4876
+ delete el.$cls;
4877
+ } else {
4878
+ actual = el.getAttribute("class");
4879
+ }
4873
4880
  expected = normalizeClass(clientValue);
4874
4881
  if (!isSetEqual(toClassSet(actual || ""), toClassSet(expected))) {
4875
4882
  mismatchType = 2 /* CLASS */;
@@ -5164,14 +5171,25 @@ Server rendered element contains fewer child nodes than client vdom.`
5164
5171
  name: "AsyncComponentWrapper",
5165
5172
  __asyncLoader: load,
5166
5173
  __asyncHydrate(el, instance, hydrate) {
5174
+ let patched = false;
5167
5175
  const doHydrate = hydrateStrategy ? () => {
5176
+ const performHydrate = () => {
5177
+ if (patched) {
5178
+ warn$1(
5179
+ `Skipping lazy hydration for component '${getComponentName(resolvedComp)}': it was updated before lazy hydration performed.`
5180
+ );
5181
+ return;
5182
+ }
5183
+ hydrate();
5184
+ };
5168
5185
  const teardown = hydrateStrategy(
5169
- hydrate,
5186
+ performHydrate,
5170
5187
  (cb) => forEachElement(el, cb)
5171
5188
  );
5172
5189
  if (teardown) {
5173
5190
  (instance.bum || (instance.bum = [])).push(teardown);
5174
5191
  }
5192
+ (instance.u || (instance.u = [])).push(() => patched = true);
5175
5193
  } : hydrate;
5176
5194
  if (resolvedComp) {
5177
5195
  doHydrate();
@@ -7177,7 +7195,7 @@ If this is a native custom element, make sure to exclude it from component resol
7177
7195
  return vm;
7178
7196
  }
7179
7197
  }
7180
- Vue.version = `2.6.14-compat:${"3.5.14"}`;
7198
+ Vue.version = `2.6.14-compat:${"3.5.15"}`;
7181
7199
  Vue.config = singletonApp.config;
7182
7200
  Vue.use = (plugin, ...options) => {
7183
7201
  if (plugin && isFunction(plugin.install)) {
@@ -7723,9 +7741,15 @@ If you want to remount the same app, move your app creation logic into a factory
7723
7741
  },
7724
7742
  provide(key, value) {
7725
7743
  if (key in context.provides) {
7726
- warn$1(
7727
- `App already provides property with key "${String(key)}". It will be overwritten with the new value.`
7728
- );
7744
+ if (hasOwn(context.provides, key)) {
7745
+ warn$1(
7746
+ `App already provides property with key "${String(key)}". It will be overwritten with the new value.`
7747
+ );
7748
+ } else {
7749
+ warn$1(
7750
+ `App already provides property with key "${String(key)}" inherited from its parent element. It will be overwritten with the new value.`
7751
+ );
7752
+ }
7729
7753
  }
7730
7754
  context.provides[key] = value;
7731
7755
  return app;
@@ -7765,7 +7789,7 @@ If you want to remount the same app, move your app creation logic into a factory
7765
7789
  function inject(key, defaultValue, treatDefaultAsFactory = false) {
7766
7790
  const instance = currentInstance || currentRenderingInstance;
7767
7791
  if (instance || currentApp) {
7768
- const provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;
7792
+ let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;
7769
7793
  if (provides && key in provides) {
7770
7794
  return provides[key];
7771
7795
  } else if (arguments.length > 1) {
@@ -8834,7 +8858,7 @@ If you want to remount the same app, move your app creation logic into a factory
8834
8858
  (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement
8835
8859
  // which also requires the correct parent container
8836
8860
  !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.
8837
- oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : (
8861
+ oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldVNode.el) : (
8838
8862
  // In other cases, the parent container is not actually used so we
8839
8863
  // just pass the block element here to avoid a DOM parentNode call.
8840
8864
  fallbackContainer
@@ -12285,7 +12309,7 @@ Component that was made reactive: `,
12285
12309
  return true;
12286
12310
  }
12287
12311
 
12288
- const version = "3.5.14";
12312
+ const version = "3.5.15";
12289
12313
  const warn = warn$1 ;
12290
12314
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
12291
12315
  const devtools = devtools$1 ;
@@ -12966,7 +12990,7 @@ Component that was made reactive: `,
12966
12990
  el.setAttribute(key, v2CoercedValue);
12967
12991
  return true;
12968
12992
  }
12969
- } else if (value === false && !isSpecialBooleanAttr(key) && compatUtils.isCompatEnabled("ATTR_FALSE_VALUE", instance)) {
12993
+ } else if (value === false && !(el.tagName === "INPUT" && key === "value") && !isSpecialBooleanAttr(key) && compatUtils.isCompatEnabled("ATTR_FALSE_VALUE", instance)) {
12970
12994
  compatUtils.warnDeprecation(
12971
12995
  "ATTR_FALSE_VALUE",
12972
12996
  instance,
@@ -13255,13 +13279,10 @@ Expected function or array of functions, received type ${typeof value}.`
13255
13279
  this._root = this;
13256
13280
  }
13257
13281
  }
13258
- if (!this._def.__asyncLoader) {
13259
- this._resolveProps(this._def);
13260
- }
13261
13282
  }
13262
13283
  connectedCallback() {
13263
13284
  if (!this.isConnected) return;
13264
- if (!this.shadowRoot) {
13285
+ if (!this.shadowRoot && !this._resolved) {
13265
13286
  this._parseSlots();
13266
13287
  }
13267
13288
  this._connected = true;
@@ -13274,8 +13295,7 @@ Expected function or array of functions, received type ${typeof value}.`
13274
13295
  }
13275
13296
  if (!this._instance) {
13276
13297
  if (this._resolved) {
13277
- this._setParent();
13278
- this._update();
13298
+ this._mount(this._def);
13279
13299
  } else {
13280
13300
  if (parent && parent._pendingResolve) {
13281
13301
  this._pendingResolve = parent._pendingResolve.then(() => {
@@ -13291,7 +13311,15 @@ Expected function or array of functions, received type ${typeof value}.`
13291
13311
  _setParent(parent = this._parent) {
13292
13312
  if (parent) {
13293
13313
  this._instance.parent = parent._instance;
13294
- this._instance.provides = parent._instance.provides;
13314
+ this._inheritParentContext(parent);
13315
+ }
13316
+ }
13317
+ _inheritParentContext(parent = this._parent) {
13318
+ if (parent && this._app) {
13319
+ Object.setPrototypeOf(
13320
+ this._app._context.provides,
13321
+ parent._instance.provides
13322
+ );
13295
13323
  }
13296
13324
  }
13297
13325
  disconnectedCallback() {
@@ -13341,9 +13369,7 @@ Expected function or array of functions, received type ${typeof value}.`
13341
13369
  }
13342
13370
  }
13343
13371
  this._numberProps = numberProps;
13344
- if (isAsync) {
13345
- this._resolveProps(def);
13346
- }
13372
+ this._resolveProps(def);
13347
13373
  if (this.shadowRoot) {
13348
13374
  this._applyStyles(styles);
13349
13375
  } else if (styles) {
@@ -13367,6 +13393,7 @@ Expected function or array of functions, received type ${typeof value}.`
13367
13393
  def.name = "VueElement";
13368
13394
  }
13369
13395
  this._app = this._createApp(def);
13396
+ this._inheritParentContext();
13370
13397
  if (def.configureApp) {
13371
13398
  def.configureApp(this._app);
13372
13399
  }
@@ -13451,7 +13478,9 @@ Expected function or array of functions, received type ${typeof value}.`
13451
13478
  }
13452
13479
  }
13453
13480
  _update() {
13454
- render(this._createVNode(), this._root);
13481
+ const vnode = this._createVNode();
13482
+ if (this._app) vnode.appContext = this._app._context;
13483
+ render(vnode, this._root);
13455
13484
  }
13456
13485
  _createVNode() {
13457
13486
  const baseProps = {};
@@ -18911,9 +18940,8 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
18911
18940
  hasDynamicKeys = true;
18912
18941
  if (exp) {
18913
18942
  if (isVBind) {
18914
- pushRefVForMarker();
18915
- pushMergeArg();
18916
18943
  {
18944
+ pushMergeArg();
18917
18945
  {
18918
18946
  const hasOverridableKeys = mergeArgs.some((arg2) => {
18919
18947
  if (arg2.type === 15) {
@@ -18943,6 +18971,8 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
18943
18971
  continue;
18944
18972
  }
18945
18973
  }
18974
+ pushRefVForMarker();
18975
+ pushMergeArg();
18946
18976
  mergeArgs.push(exp);
18947
18977
  } else {
18948
18978
  pushMergeArg({
@@ -20175,6 +20205,9 @@ Use a v-bind binding combined with a v-on listener that emits update:x event ins
20175
20205
  };
20176
20206
 
20177
20207
  function isValidHTMLNesting(parent, child) {
20208
+ if (parent === "template") {
20209
+ return true;
20210
+ }
20178
20211
  if (parent in onlyValidChildren) {
20179
20212
  return onlyValidChildren[parent].has(child);
20180
20213
  }