@vue/compat 3.5.27 → 3.5.29

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.5.27
2
+ * @vue/compat v3.5.29
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -460,6 +460,7 @@ function warn$2(msg, ...args) {
460
460
 
461
461
  let activeEffectScope;
462
462
  class EffectScope {
463
+ // TODO isolatedDeclarations "__v_skip"
463
464
  constructor(detached = false) {
464
465
  this.detached = detached;
465
466
  /**
@@ -479,6 +480,7 @@ class EffectScope {
479
480
  */
480
481
  this.cleanups = [];
481
482
  this._isPaused = false;
483
+ this.__v_skip = true;
482
484
  this.parent = activeEffectScope;
483
485
  if (!detached && activeEffectScope) {
484
486
  this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(
@@ -4032,7 +4034,22 @@ function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }
4032
4034
  function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {
4033
4035
  o: { nextSibling, parentNode, querySelector, insert, createText }
4034
4036
  }, hydrateChildren) {
4035
- function hydrateDisabledTeleport(node2, vnode2, targetStart, targetAnchor) {
4037
+ function hydrateAnchor(target2, targetNode) {
4038
+ let targetAnchor = targetNode;
4039
+ while (targetAnchor) {
4040
+ if (targetAnchor && targetAnchor.nodeType === 8) {
4041
+ if (targetAnchor.data === "teleport start anchor") {
4042
+ vnode.targetStart = targetAnchor;
4043
+ } else if (targetAnchor.data === "teleport anchor") {
4044
+ vnode.targetAnchor = targetAnchor;
4045
+ target2._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
4046
+ break;
4047
+ }
4048
+ }
4049
+ targetAnchor = nextSibling(targetAnchor);
4050
+ }
4051
+ }
4052
+ function hydrateDisabledTeleport(node2, vnode2) {
4036
4053
  vnode2.anchor = hydrateChildren(
4037
4054
  nextSibling(node2),
4038
4055
  vnode2,
@@ -4042,8 +4059,6 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
4042
4059
  slotScopeIds,
4043
4060
  optimized
4044
4061
  );
4045
- vnode2.targetStart = targetStart;
4046
- vnode2.targetAnchor = targetAnchor;
4047
4062
  }
4048
4063
  const target = vnode.target = resolveTarget(
4049
4064
  vnode.props,
@@ -4054,27 +4069,22 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
4054
4069
  const targetNode = target._lpa || target.firstChild;
4055
4070
  if (vnode.shapeFlag & 16) {
4056
4071
  if (disabled) {
4057
- hydrateDisabledTeleport(
4058
- node,
4059
- vnode,
4060
- targetNode,
4061
- targetNode && nextSibling(targetNode)
4062
- );
4072
+ hydrateDisabledTeleport(node, vnode);
4073
+ hydrateAnchor(target, targetNode);
4074
+ if (!vnode.targetAnchor) {
4075
+ prepareAnchor(
4076
+ target,
4077
+ vnode,
4078
+ createText,
4079
+ insert,
4080
+ // if target is the same as the main view, insert anchors before current node
4081
+ // to avoid hydrating mismatch
4082
+ parentNode(node) === target ? node : null
4083
+ );
4084
+ }
4063
4085
  } else {
4064
4086
  vnode.anchor = nextSibling(node);
4065
- let targetAnchor = targetNode;
4066
- while (targetAnchor) {
4067
- if (targetAnchor && targetAnchor.nodeType === 8) {
4068
- if (targetAnchor.data === "teleport start anchor") {
4069
- vnode.targetStart = targetAnchor;
4070
- } else if (targetAnchor.data === "teleport anchor") {
4071
- vnode.targetAnchor = targetAnchor;
4072
- target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
4073
- break;
4074
- }
4075
- }
4076
- targetAnchor = nextSibling(targetAnchor);
4077
- }
4087
+ hydrateAnchor(target, targetNode);
4078
4088
  if (!vnode.targetAnchor) {
4079
4089
  prepareAnchor(target, vnode, createText, insert);
4080
4090
  }
@@ -4092,7 +4102,9 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
4092
4102
  updateCssVars(vnode, disabled);
4093
4103
  } else if (disabled) {
4094
4104
  if (vnode.shapeFlag & 16) {
4095
- hydrateDisabledTeleport(node, vnode, node, nextSibling(node));
4105
+ hydrateDisabledTeleport(node, vnode);
4106
+ vnode.targetStart = node;
4107
+ vnode.targetAnchor = nextSibling(node);
4096
4108
  }
4097
4109
  }
4098
4110
  return vnode.anchor && nextSibling(vnode.anchor);
@@ -4116,13 +4128,13 @@ function updateCssVars(vnode, isDisabled) {
4116
4128
  ctx.ut();
4117
4129
  }
4118
4130
  }
4119
- function prepareAnchor(target, vnode, createText, insert) {
4131
+ function prepareAnchor(target, vnode, createText, insert, anchor = null) {
4120
4132
  const targetStart = vnode.targetStart = createText("");
4121
4133
  const targetAnchor = vnode.targetAnchor = createText("");
4122
4134
  targetStart[TeleportEndKey] = targetAnchor;
4123
4135
  if (target) {
4124
- insert(targetStart, target);
4125
- insert(targetAnchor, target);
4136
+ insert(targetStart, target, anchor);
4137
+ insert(targetAnchor, target, anchor);
4126
4138
  }
4127
4139
  return targetAnchor;
4128
4140
  }
@@ -4347,6 +4359,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4347
4359
  callHook(hook, [el]);
4348
4360
  },
4349
4361
  enter(el) {
4362
+ if (leavingVNodesCache[key] === vnode) return;
4350
4363
  let hook = onEnter;
4351
4364
  let afterHook = onAfterEnter;
4352
4365
  let cancelHook = onEnterCancelled;
@@ -4360,7 +4373,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4360
4373
  }
4361
4374
  }
4362
4375
  let called = false;
4363
- const done = el[enterCbKey$1] = (cancelled) => {
4376
+ el[enterCbKey$1] = (cancelled) => {
4364
4377
  if (called) return;
4365
4378
  called = true;
4366
4379
  if (cancelled) {
@@ -4373,6 +4386,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4373
4386
  }
4374
4387
  el[enterCbKey$1] = void 0;
4375
4388
  };
4389
+ const done = el[enterCbKey$1].bind(null, false);
4376
4390
  if (hook) {
4377
4391
  callAsyncHook(hook, [el, done]);
4378
4392
  } else {
@@ -4392,7 +4406,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4392
4406
  }
4393
4407
  callHook(onBeforeLeave, [el]);
4394
4408
  let called = false;
4395
- const done = el[leaveCbKey] = (cancelled) => {
4409
+ el[leaveCbKey] = (cancelled) => {
4396
4410
  if (called) return;
4397
4411
  called = true;
4398
4412
  remove();
@@ -4406,6 +4420,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4406
4420
  delete leavingVNodesCache[key2];
4407
4421
  }
4408
4422
  };
4423
+ const done = el[leaveCbKey].bind(null, false);
4409
4424
  leavingVNodesCache[key2] = vnode;
4410
4425
  if (onLeave) {
4411
4426
  callAsyncHook(onLeave, [el, done]);
@@ -4518,8 +4533,7 @@ function useTemplateRef(key) {
4518
4533
  const r = shallowRef(null);
4519
4534
  if (i) {
4520
4535
  const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs;
4521
- let desc;
4522
- if ((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) {
4536
+ if (isTemplateRefKey(refs, key)) {
4523
4537
  warn$1(`useTemplateRef('${key}') already exists.`);
4524
4538
  } else {
4525
4539
  Object.defineProperty(refs, key, {
@@ -4539,6 +4553,10 @@ function useTemplateRef(key) {
4539
4553
  }
4540
4554
  return ret;
4541
4555
  }
4556
+ function isTemplateRefKey(refs, key) {
4557
+ let desc;
4558
+ return !!((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable);
4559
+ }
4542
4560
 
4543
4561
  const pendingSetRefMap = /* @__PURE__ */ new WeakMap();
4544
4562
  function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
@@ -4584,10 +4602,19 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4584
4602
  return false;
4585
4603
  }
4586
4604
  }
4605
+ if (isTemplateRefKey(refs, key)) {
4606
+ return false;
4607
+ }
4587
4608
  return hasOwn(rawSetupState, key);
4588
4609
  };
4589
- const canSetRef = (ref2) => {
4590
- return !knownTemplateRefs.has(ref2);
4610
+ const canSetRef = (ref2, key) => {
4611
+ if (knownTemplateRefs.has(ref2)) {
4612
+ return false;
4613
+ }
4614
+ if (key && isTemplateRefKey(refs, key)) {
4615
+ return false;
4616
+ }
4617
+ return true;
4591
4618
  };
4592
4619
  if (oldRef != null && oldRef !== ref) {
4593
4620
  invalidatePendingSetRef(oldRawRef);
@@ -4597,10 +4624,10 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4597
4624
  setupState[oldRef] = null;
4598
4625
  }
4599
4626
  } else if (isRef(oldRef)) {
4600
- if (canSetRef(oldRef)) {
4627
+ const oldRawRefAtom = oldRawRef;
4628
+ if (canSetRef(oldRef, oldRawRefAtom.k)) {
4601
4629
  oldRef.value = null;
4602
4630
  }
4603
- const oldRawRefAtom = oldRawRef;
4604
4631
  if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;
4605
4632
  }
4606
4633
  }
@@ -4624,7 +4651,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4624
4651
  }
4625
4652
  } else {
4626
4653
  const newVal = [refValue];
4627
- if (canSetRef(ref)) {
4654
+ if (canSetRef(ref, rawRef.k)) {
4628
4655
  ref.value = newVal;
4629
4656
  }
4630
4657
  if (rawRef.k) refs[rawRef.k] = newVal;
@@ -4639,7 +4666,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4639
4666
  setupState[ref] = value;
4640
4667
  }
4641
4668
  } else if (_isRef) {
4642
- if (canSetRef(ref)) {
4669
+ if (canSetRef(ref, rawRef.k)) {
4643
4670
  ref.value = value;
4644
4671
  }
4645
4672
  if (rawRef.k) refs[rawRef.k] = value;
@@ -6972,13 +6999,24 @@ function withAsyncContext(getAwaitable) {
6972
6999
  }
6973
7000
  let awaitable = getAwaitable();
6974
7001
  unsetCurrentInstance();
7002
+ const cleanup = () => {
7003
+ if (getCurrentInstance() !== ctx) ctx.scope.off();
7004
+ unsetCurrentInstance();
7005
+ };
6975
7006
  if (isPromise(awaitable)) {
6976
7007
  awaitable = awaitable.catch((e) => {
6977
7008
  setCurrentInstance(ctx);
7009
+ Promise.resolve().then(() => Promise.resolve().then(cleanup));
6978
7010
  throw e;
6979
7011
  });
6980
7012
  }
6981
- return [awaitable, () => setCurrentInstance(ctx)];
7013
+ return [
7014
+ awaitable,
7015
+ () => {
7016
+ setCurrentInstance(ctx);
7017
+ Promise.resolve().then(cleanup);
7018
+ }
7019
+ ];
6982
7020
  }
6983
7021
 
6984
7022
  function createDuplicateChecker() {
@@ -7499,7 +7537,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
7499
7537
  return vm;
7500
7538
  }
7501
7539
  }
7502
- Vue.version = `2.6.14-compat:${"3.5.27"}`;
7540
+ Vue.version = `2.6.14-compat:${"3.5.29"}`;
7503
7541
  Vue.config = singletonApp.config;
7504
7542
  Vue.use = (plugin, ...options) => {
7505
7543
  if (plugin && isFunction(plugin.install)) {
@@ -8613,7 +8651,7 @@ function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
8613
8651
  const dynamicProps = nextVNode.dynamicProps;
8614
8652
  for (let i = 0; i < dynamicProps.length; i++) {
8615
8653
  const key = dynamicProps[i];
8616
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {
8654
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emits, key)) {
8617
8655
  return true;
8618
8656
  }
8619
8657
  }
@@ -8644,12 +8682,20 @@ function hasPropsChanged(prevProps, nextProps, emitsOptions) {
8644
8682
  }
8645
8683
  for (let i = 0; i < nextKeys.length; i++) {
8646
8684
  const key = nextKeys[i];
8647
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {
8685
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) {
8648
8686
  return true;
8649
8687
  }
8650
8688
  }
8651
8689
  return false;
8652
8690
  }
8691
+ function hasPropValueChanged(nextProps, prevProps, key) {
8692
+ const nextProp = nextProps[key];
8693
+ const prevProp = prevProps[key];
8694
+ if (key === "style" && isObject(nextProp) && isObject(prevProp)) {
8695
+ return !looseEqual(nextProp, prevProp);
8696
+ }
8697
+ return nextProp !== prevProp;
8698
+ }
8653
8699
  function updateHOCHostEl({ vnode, parent }, el) {
8654
8700
  while (parent) {
8655
8701
  const root = parent.subTree;
@@ -9425,15 +9471,7 @@ function baseCreateRenderer(options, createHydrationFns) {
9425
9471
  } else {
9426
9472
  const el = n2.el = n1.el;
9427
9473
  if (n2.children !== n1.children) {
9428
- if (isHmrUpdating && n2.patchFlag === -1 && "__elIndex" in n1) {
9429
- const childNodes = container.childNodes;
9430
- const newChild = hostCreateText(n2.children);
9431
- const oldChild = childNodes[n2.__elIndex = n1.__elIndex];
9432
- hostInsert(newChild, container, oldChild);
9433
- hostRemove(oldChild);
9434
- } else {
9435
- hostSetText(el, n2.children);
9436
- }
9474
+ hostSetText(el, n2.children);
9437
9475
  }
9438
9476
  }
9439
9477
  };
@@ -9509,7 +9547,7 @@ function baseCreateRenderer(options, createHydrationFns) {
9509
9547
  optimized
9510
9548
  );
9511
9549
  } else {
9512
- const customElement = !!(n1.el && n1.el._isVueCE) ? n1.el : null;
9550
+ const customElement = n1.el && n1.el._isVueCE ? n1.el : null;
9513
9551
  try {
9514
9552
  if (customElement) {
9515
9553
  customElement._beginPatch();
@@ -9995,8 +10033,7 @@ function baseCreateRenderer(options, createHydrationFns) {
9995
10033
  hydrateSubTree();
9996
10034
  }
9997
10035
  } else {
9998
- if (root.ce && // @ts-expect-error _def is private
9999
- root.ce._def.shadowRoot !== false) {
10036
+ if (root.ce && root.ce._hasShadowRoot()) {
10000
10037
  root.ce._injectChildStyle(type);
10001
10038
  }
10002
10039
  {
@@ -10063,9 +10100,9 @@ function baseCreateRenderer(options, createHydrationFns) {
10063
10100
  updateComponentPreRender(instance, next, optimized);
10064
10101
  }
10065
10102
  nonHydratedAsyncRoot.asyncDep.then(() => {
10066
- if (!instance.isUnmounted) {
10067
- componentUpdateFn();
10068
- }
10103
+ queuePostRenderEffect(() => {
10104
+ if (!instance.isUnmounted) update();
10105
+ }, parentSuspense);
10069
10106
  });
10070
10107
  return;
10071
10108
  }
@@ -10780,12 +10817,10 @@ function traverseStaticChildren(n1, n2, shallow = false) {
10780
10817
  traverseStaticChildren(c1, c2);
10781
10818
  }
10782
10819
  if (c2.type === Text) {
10783
- if (c2.patchFlag !== -1) {
10784
- c2.el = c1.el;
10785
- } else {
10786
- c2.__elIndex = i + // take fragment start anchor into account
10787
- (n1.type === Fragment ? 1 : 0);
10820
+ if (c2.patchFlag === -1) {
10821
+ c2 = ch2[i] = cloneIfMounted(c2);
10788
10822
  }
10823
+ c2.el = c1.el;
10789
10824
  }
10790
10825
  if (c2.type === Comment && !c2.el) {
10791
10826
  c2.el = c1.el;
@@ -12590,7 +12625,7 @@ function isMemoSame(cached, memo) {
12590
12625
  return true;
12591
12626
  }
12592
12627
 
12593
- const version = "3.5.27";
12628
+ const version = "3.5.29";
12594
12629
  const warn = warn$1 ;
12595
12630
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
12596
12631
  const devtools = devtools$1 ;
@@ -13884,6 +13919,12 @@ class VueElement extends BaseClass {
13884
13919
  this._update();
13885
13920
  }
13886
13921
  }
13922
+ /**
13923
+ * @internal
13924
+ */
13925
+ _hasShadowRoot() {
13926
+ return this._def.shadowRoot !== false;
13927
+ }
13887
13928
  /**
13888
13929
  * @internal
13889
13930
  */
@@ -14027,10 +14068,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
14027
14068
  instance
14028
14069
  )
14029
14070
  );
14030
- positionMap.set(child, {
14031
- left: child.el.offsetLeft,
14032
- top: child.el.offsetTop
14033
- });
14071
+ positionMap.set(child, getPosition(child.el));
14034
14072
  }
14035
14073
  }
14036
14074
  }
@@ -14061,10 +14099,7 @@ function callPendingCbs(c) {
14061
14099
  }
14062
14100
  }
14063
14101
  function recordPosition(c) {
14064
- newPositionMap.set(c, {
14065
- left: c.el.offsetLeft,
14066
- top: c.el.offsetTop
14067
- });
14102
+ newPositionMap.set(c, getPosition(c.el));
14068
14103
  }
14069
14104
  function applyTranslation(c) {
14070
14105
  const oldPos = positionMap.get(c);
@@ -14072,12 +14107,29 @@ function applyTranslation(c) {
14072
14107
  const dx = oldPos.left - newPos.left;
14073
14108
  const dy = oldPos.top - newPos.top;
14074
14109
  if (dx || dy) {
14075
- const s = c.el.style;
14076
- s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;
14110
+ const el = c.el;
14111
+ const s = el.style;
14112
+ const rect = el.getBoundingClientRect();
14113
+ let scaleX = 1;
14114
+ let scaleY = 1;
14115
+ if (el.offsetWidth) scaleX = rect.width / el.offsetWidth;
14116
+ if (el.offsetHeight) scaleY = rect.height / el.offsetHeight;
14117
+ if (!Number.isFinite(scaleX) || scaleX === 0) scaleX = 1;
14118
+ if (!Number.isFinite(scaleY) || scaleY === 0) scaleY = 1;
14119
+ if (Math.abs(scaleX - 1) < 0.01) scaleX = 1;
14120
+ if (Math.abs(scaleY - 1) < 0.01) scaleY = 1;
14121
+ s.transform = s.webkitTransform = `translate(${dx / scaleX}px,${dy / scaleY}px)`;
14077
14122
  s.transitionDuration = "0s";
14078
14123
  return c;
14079
14124
  }
14080
14125
  }
14126
+ function getPosition(el) {
14127
+ const rect = el.getBoundingClientRect();
14128
+ return {
14129
+ left: rect.left,
14130
+ top: rect.top
14131
+ };
14132
+ }
14081
14133
  function hasCSSTransform(el, root, moveClass) {
14082
14134
  const clone = el.cloneNode();
14083
14135
  const _vtc = el[vtcKey];
@@ -14388,6 +14440,7 @@ const modifierGuards = {
14388
14440
  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))
14389
14441
  };
14390
14442
  const withModifiers = (fn, modifiers) => {
14443
+ if (!fn) return fn;
14391
14444
  const cache = fn._withMods || (fn._withMods = {});
14392
14445
  const cacheKey = modifiers.join(".");
14393
14446
  return cache[cacheKey] || (cache[cacheKey] = ((event, ...args) => {