@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
  **/
@@ -2144,11 +2144,11 @@ function watch$1(source, cb, options = EMPTY_OBJ) {
2144
2144
  oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,
2145
2145
  boundCleanup
2146
2146
  ];
2147
+ oldValue = newValue;
2147
2148
  call ? call(cb, 3, args) : (
2148
2149
  // @ts-expect-error
2149
2150
  cb(...args)
2150
2151
  );
2151
- oldValue = newValue;
2152
2152
  } finally {
2153
2153
  activeWatcher = currentWatcher;
2154
2154
  }
@@ -3601,15 +3601,16 @@ const TeleportImpl = {
3601
3601
  updateCssVars(n2, true);
3602
3602
  }
3603
3603
  if (isTeleportDeferred(n2.props)) {
3604
+ n2.el.__isMounted = false;
3604
3605
  queuePostRenderEffect(() => {
3605
3606
  mountToTarget();
3606
- n2.el.__isMounted = true;
3607
+ delete n2.el.__isMounted;
3607
3608
  }, parentSuspense);
3608
3609
  } else {
3609
3610
  mountToTarget();
3610
3611
  }
3611
3612
  } else {
3612
- if (isTeleportDeferred(n2.props) && !n1.el.__isMounted) {
3613
+ if (isTeleportDeferred(n2.props) && n1.el.__isMounted === false) {
3613
3614
  queuePostRenderEffect(() => {
3614
3615
  TeleportImpl.process(
3615
3616
  n1,
@@ -3623,7 +3624,6 @@ const TeleportImpl = {
3623
3624
  optimized,
3624
3625
  internals
3625
3626
  );
3626
- delete n1.el.__isMounted;
3627
3627
  }, parentSuspense);
3628
3628
  return;
3629
3629
  }
@@ -4614,6 +4614,8 @@ function createHydrationFunctions(rendererInternals) {
4614
4614
  ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;
4615
4615
  const content = el.content.firstChild;
4616
4616
  if (needCallTransitionHooks) {
4617
+ const cls = content.getAttribute("class");
4618
+ if (cls) content.$cls = cls;
4617
4619
  transition.beforeEnter(content);
4618
4620
  }
4619
4621
  replaceNode(content, el, parentComponent);
@@ -4866,7 +4868,12 @@ function propHasMismatch(el, key, clientValue, vnode, instance) {
4866
4868
  let actual;
4867
4869
  let expected;
4868
4870
  if (key === "class") {
4869
- actual = el.getAttribute("class");
4871
+ if (el.$cls) {
4872
+ actual = el.$cls;
4873
+ delete el.$cls;
4874
+ } else {
4875
+ actual = el.getAttribute("class");
4876
+ }
4870
4877
  expected = normalizeClass(clientValue);
4871
4878
  if (!isSetEqual(toClassSet(actual || ""), toClassSet(expected))) {
4872
4879
  mismatchType = 2 /* CLASS */;
@@ -5161,14 +5168,25 @@ function defineAsyncComponent(source) {
5161
5168
  name: "AsyncComponentWrapper",
5162
5169
  __asyncLoader: load,
5163
5170
  __asyncHydrate(el, instance, hydrate) {
5171
+ let patched = false;
5164
5172
  const doHydrate = hydrateStrategy ? () => {
5173
+ const performHydrate = () => {
5174
+ if (patched) {
5175
+ warn$1(
5176
+ `Skipping lazy hydration for component '${getComponentName(resolvedComp)}': it was updated before lazy hydration performed.`
5177
+ );
5178
+ return;
5179
+ }
5180
+ hydrate();
5181
+ };
5165
5182
  const teardown = hydrateStrategy(
5166
- hydrate,
5183
+ performHydrate,
5167
5184
  (cb) => forEachElement(el, cb)
5168
5185
  );
5169
5186
  if (teardown) {
5170
5187
  (instance.bum || (instance.bum = [])).push(teardown);
5171
5188
  }
5189
+ (instance.u || (instance.u = [])).push(() => patched = true);
5172
5190
  } : hydrate;
5173
5191
  if (resolvedComp) {
5174
5192
  doHydrate();
@@ -7183,7 +7201,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
7183
7201
  return vm;
7184
7202
  }
7185
7203
  }
7186
- Vue.version = `2.6.14-compat:${"3.5.14"}`;
7204
+ Vue.version = `2.6.14-compat:${"3.5.15"}`;
7187
7205
  Vue.config = singletonApp.config;
7188
7206
  Vue.use = (plugin, ...options) => {
7189
7207
  if (plugin && isFunction(plugin.install)) {
@@ -7729,9 +7747,15 @@ If you want to remount the same app, move your app creation logic into a factory
7729
7747
  },
7730
7748
  provide(key, value) {
7731
7749
  if (key in context.provides) {
7732
- warn$1(
7733
- `App already provides property with key "${String(key)}". It will be overwritten with the new value.`
7734
- );
7750
+ if (hasOwn(context.provides, key)) {
7751
+ warn$1(
7752
+ `App already provides property with key "${String(key)}". It will be overwritten with the new value.`
7753
+ );
7754
+ } else {
7755
+ warn$1(
7756
+ `App already provides property with key "${String(key)}" inherited from its parent element. It will be overwritten with the new value.`
7757
+ );
7758
+ }
7735
7759
  }
7736
7760
  context.provides[key] = value;
7737
7761
  return app;
@@ -7771,7 +7795,7 @@ function provide(key, value) {
7771
7795
  function inject(key, defaultValue, treatDefaultAsFactory = false) {
7772
7796
  const instance = currentInstance || currentRenderingInstance;
7773
7797
  if (instance || currentApp) {
7774
- const provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;
7798
+ let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;
7775
7799
  if (provides && key in provides) {
7776
7800
  return provides[key];
7777
7801
  } else if (arguments.length > 1) {
@@ -8840,7 +8864,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8840
8864
  (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement
8841
8865
  // which also requires the correct parent container
8842
8866
  !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.
8843
- oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : (
8867
+ oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldVNode.el) : (
8844
8868
  // In other cases, the parent container is not actually used so we
8845
8869
  // just pass the block element here to avoid a DOM parentNode call.
8846
8870
  fallbackContainer
@@ -12333,7 +12357,7 @@ function isMemoSame(cached, memo) {
12333
12357
  return true;
12334
12358
  }
12335
12359
 
12336
- const version = "3.5.14";
12360
+ const version = "3.5.15";
12337
12361
  const warn = warn$1 ;
12338
12362
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
12339
12363
  const devtools = devtools$1 ;
@@ -13033,7 +13057,7 @@ function compatCoerceAttr(el, key, value, instance = null) {
13033
13057
  el.setAttribute(key, v2CoercedValue);
13034
13058
  return true;
13035
13059
  }
13036
- } else if (value === false && !isSpecialBooleanAttr(key) && compatUtils.isCompatEnabled("ATTR_FALSE_VALUE", instance)) {
13060
+ } else if (value === false && !(el.tagName === "INPUT" && key === "value") && !isSpecialBooleanAttr(key) && compatUtils.isCompatEnabled("ATTR_FALSE_VALUE", instance)) {
13037
13061
  compatUtils.warnDeprecation(
13038
13062
  "ATTR_FALSE_VALUE",
13039
13063
  instance,
@@ -13322,13 +13346,10 @@ class VueElement extends BaseClass {
13322
13346
  this._root = this;
13323
13347
  }
13324
13348
  }
13325
- if (!this._def.__asyncLoader) {
13326
- this._resolveProps(this._def);
13327
- }
13328
13349
  }
13329
13350
  connectedCallback() {
13330
13351
  if (!this.isConnected) return;
13331
- if (!this.shadowRoot) {
13352
+ if (!this.shadowRoot && !this._resolved) {
13332
13353
  this._parseSlots();
13333
13354
  }
13334
13355
  this._connected = true;
@@ -13341,8 +13362,7 @@ class VueElement extends BaseClass {
13341
13362
  }
13342
13363
  if (!this._instance) {
13343
13364
  if (this._resolved) {
13344
- this._setParent();
13345
- this._update();
13365
+ this._mount(this._def);
13346
13366
  } else {
13347
13367
  if (parent && parent._pendingResolve) {
13348
13368
  this._pendingResolve = parent._pendingResolve.then(() => {
@@ -13358,7 +13378,15 @@ class VueElement extends BaseClass {
13358
13378
  _setParent(parent = this._parent) {
13359
13379
  if (parent) {
13360
13380
  this._instance.parent = parent._instance;
13361
- this._instance.provides = parent._instance.provides;
13381
+ this._inheritParentContext(parent);
13382
+ }
13383
+ }
13384
+ _inheritParentContext(parent = this._parent) {
13385
+ if (parent && this._app) {
13386
+ Object.setPrototypeOf(
13387
+ this._app._context.provides,
13388
+ parent._instance.provides
13389
+ );
13362
13390
  }
13363
13391
  }
13364
13392
  disconnectedCallback() {
@@ -13408,9 +13436,7 @@ class VueElement extends BaseClass {
13408
13436
  }
13409
13437
  }
13410
13438
  this._numberProps = numberProps;
13411
- if (isAsync) {
13412
- this._resolveProps(def);
13413
- }
13439
+ this._resolveProps(def);
13414
13440
  if (this.shadowRoot) {
13415
13441
  this._applyStyles(styles);
13416
13442
  } else if (styles) {
@@ -13434,6 +13460,7 @@ class VueElement extends BaseClass {
13434
13460
  def.name = "VueElement";
13435
13461
  }
13436
13462
  this._app = this._createApp(def);
13463
+ this._inheritParentContext();
13437
13464
  if (def.configureApp) {
13438
13465
  def.configureApp(this._app);
13439
13466
  }
@@ -13518,7 +13545,9 @@ class VueElement extends BaseClass {
13518
13545
  }
13519
13546
  }
13520
13547
  _update() {
13521
- render(this._createVNode(), this._root);
13548
+ const vnode = this._createVNode();
13549
+ if (this._app) vnode.appContext = this._app._context;
13550
+ render(vnode, this._root);
13522
13551
  }
13523
13552
  _createVNode() {
13524
13553
  const baseProps = {};
@@ -19031,9 +19060,8 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
19031
19060
  hasDynamicKeys = true;
19032
19061
  if (exp) {
19033
19062
  if (isVBind) {
19034
- pushRefVForMarker();
19035
- pushMergeArg();
19036
19063
  {
19064
+ pushMergeArg();
19037
19065
  {
19038
19066
  const hasOverridableKeys = mergeArgs.some((arg2) => {
19039
19067
  if (arg2.type === 15) {
@@ -19063,6 +19091,8 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
19063
19091
  continue;
19064
19092
  }
19065
19093
  }
19094
+ pushRefVForMarker();
19095
+ pushMergeArg();
19066
19096
  mergeArgs.push(exp);
19067
19097
  } else {
19068
19098
  pushMergeArg({
@@ -20295,6 +20325,9 @@ const ignoreSideEffectTags = (node, context) => {
20295
20325
  };
20296
20326
 
20297
20327
  function isValidHTMLNesting(parent, child) {
20328
+ if (parent === "template") {
20329
+ return true;
20330
+ }
20298
20331
  if (parent in onlyValidChildren) {
20299
20332
  return onlyValidChildren[parent].has(child);
20300
20333
  }