vue 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/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  - **`vue(.runtime).global(.prod).js`**:
8
8
  - For direct use via `<script src="...">` in the browser. Exposes the `Vue` global.
9
- - Note that global builds are not [UMD](https://github.com/umdjs/umd) builds. They are built as [IIFEs](https://developer.mozilla.org/en-US/docs/Glossary/IIFE) and is only meant for direct use via `<script src="...">`.
9
+ - Note that global builds are not [UMD](https://github.com/umdjs/umd) builds. They are built as [IIFEs](https://developer.mozilla.org/en-US/docs/Glossary/IIFE) and are only meant for direct use via `<script src="...">`.
10
10
  - In-browser template compilation:
11
11
  - **`vue.global.js`** is the "full" build that includes both the compiler and the runtime so it supports compiling templates on the fly.
12
12
  - **`vue.runtime.global.js`** contains only the runtime and requires templates to be pre-compiled during a build step.
package/dist/vue.cjs.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * vue v3.5.27
2
+ * vue v3.5.29
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -1,5 +1,5 @@
1
1
  /**
2
- * vue v3.5.27
2
+ * vue v3.5.29
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -1,5 +1,5 @@
1
1
  /**
2
- * vue v3.5.27
2
+ * vue v3.5.29
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -407,6 +407,7 @@ function warn$2(msg, ...args) {
407
407
 
408
408
  let activeEffectScope;
409
409
  class EffectScope {
410
+ // TODO isolatedDeclarations "__v_skip"
410
411
  constructor(detached = false) {
411
412
  this.detached = detached;
412
413
  /**
@@ -426,6 +427,7 @@ class EffectScope {
426
427
  */
427
428
  this.cleanups = [];
428
429
  this._isPaused = false;
430
+ this.__v_skip = true;
429
431
  this.parent = activeEffectScope;
430
432
  if (!detached && activeEffectScope) {
431
433
  this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(
@@ -3510,7 +3512,22 @@ function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }
3510
3512
  function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {
3511
3513
  o: { nextSibling, parentNode, querySelector, insert, createText }
3512
3514
  }, hydrateChildren) {
3513
- function hydrateDisabledTeleport(node2, vnode2, targetStart, targetAnchor) {
3515
+ function hydrateAnchor(target2, targetNode) {
3516
+ let targetAnchor = targetNode;
3517
+ while (targetAnchor) {
3518
+ if (targetAnchor && targetAnchor.nodeType === 8) {
3519
+ if (targetAnchor.data === "teleport start anchor") {
3520
+ vnode.targetStart = targetAnchor;
3521
+ } else if (targetAnchor.data === "teleport anchor") {
3522
+ vnode.targetAnchor = targetAnchor;
3523
+ target2._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
3524
+ break;
3525
+ }
3526
+ }
3527
+ targetAnchor = nextSibling(targetAnchor);
3528
+ }
3529
+ }
3530
+ function hydrateDisabledTeleport(node2, vnode2) {
3514
3531
  vnode2.anchor = hydrateChildren(
3515
3532
  nextSibling(node2),
3516
3533
  vnode2,
@@ -3520,8 +3537,6 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
3520
3537
  slotScopeIds,
3521
3538
  optimized
3522
3539
  );
3523
- vnode2.targetStart = targetStart;
3524
- vnode2.targetAnchor = targetAnchor;
3525
3540
  }
3526
3541
  const target = vnode.target = resolveTarget(
3527
3542
  vnode.props,
@@ -3532,27 +3547,22 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
3532
3547
  const targetNode = target._lpa || target.firstChild;
3533
3548
  if (vnode.shapeFlag & 16) {
3534
3549
  if (disabled) {
3535
- hydrateDisabledTeleport(
3536
- node,
3537
- vnode,
3538
- targetNode,
3539
- targetNode && nextSibling(targetNode)
3540
- );
3550
+ hydrateDisabledTeleport(node, vnode);
3551
+ hydrateAnchor(target, targetNode);
3552
+ if (!vnode.targetAnchor) {
3553
+ prepareAnchor(
3554
+ target,
3555
+ vnode,
3556
+ createText,
3557
+ insert,
3558
+ // if target is the same as the main view, insert anchors before current node
3559
+ // to avoid hydrating mismatch
3560
+ parentNode(node) === target ? node : null
3561
+ );
3562
+ }
3541
3563
  } else {
3542
3564
  vnode.anchor = nextSibling(node);
3543
- let targetAnchor = targetNode;
3544
- while (targetAnchor) {
3545
- if (targetAnchor && targetAnchor.nodeType === 8) {
3546
- if (targetAnchor.data === "teleport start anchor") {
3547
- vnode.targetStart = targetAnchor;
3548
- } else if (targetAnchor.data === "teleport anchor") {
3549
- vnode.targetAnchor = targetAnchor;
3550
- target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
3551
- break;
3552
- }
3553
- }
3554
- targetAnchor = nextSibling(targetAnchor);
3555
- }
3565
+ hydrateAnchor(target, targetNode);
3556
3566
  if (!vnode.targetAnchor) {
3557
3567
  prepareAnchor(target, vnode, createText, insert);
3558
3568
  }
@@ -3570,7 +3580,9 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
3570
3580
  updateCssVars(vnode, disabled);
3571
3581
  } else if (disabled) {
3572
3582
  if (vnode.shapeFlag & 16) {
3573
- hydrateDisabledTeleport(node, vnode, node, nextSibling(node));
3583
+ hydrateDisabledTeleport(node, vnode);
3584
+ vnode.targetStart = node;
3585
+ vnode.targetAnchor = nextSibling(node);
3574
3586
  }
3575
3587
  }
3576
3588
  return vnode.anchor && nextSibling(vnode.anchor);
@@ -3594,13 +3606,13 @@ function updateCssVars(vnode, isDisabled) {
3594
3606
  ctx.ut();
3595
3607
  }
3596
3608
  }
3597
- function prepareAnchor(target, vnode, createText, insert) {
3609
+ function prepareAnchor(target, vnode, createText, insert, anchor = null) {
3598
3610
  const targetStart = vnode.targetStart = createText("");
3599
3611
  const targetAnchor = vnode.targetAnchor = createText("");
3600
3612
  targetStart[TeleportEndKey] = targetAnchor;
3601
3613
  if (target) {
3602
- insert(targetStart, target);
3603
- insert(targetAnchor, target);
3614
+ insert(targetStart, target, anchor);
3615
+ insert(targetAnchor, target, anchor);
3604
3616
  }
3605
3617
  return targetAnchor;
3606
3618
  }
@@ -3822,6 +3834,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3822
3834
  callHook(hook, [el]);
3823
3835
  },
3824
3836
  enter(el) {
3837
+ if (leavingVNodesCache[key] === vnode) return;
3825
3838
  let hook = onEnter;
3826
3839
  let afterHook = onAfterEnter;
3827
3840
  let cancelHook = onEnterCancelled;
@@ -3835,7 +3848,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3835
3848
  }
3836
3849
  }
3837
3850
  let called = false;
3838
- const done = el[enterCbKey$1] = (cancelled) => {
3851
+ el[enterCbKey$1] = (cancelled) => {
3839
3852
  if (called) return;
3840
3853
  called = true;
3841
3854
  if (cancelled) {
@@ -3848,6 +3861,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3848
3861
  }
3849
3862
  el[enterCbKey$1] = void 0;
3850
3863
  };
3864
+ const done = el[enterCbKey$1].bind(null, false);
3851
3865
  if (hook) {
3852
3866
  callAsyncHook(hook, [el, done]);
3853
3867
  } else {
@@ -3867,7 +3881,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3867
3881
  }
3868
3882
  callHook(onBeforeLeave, [el]);
3869
3883
  let called = false;
3870
- const done = el[leaveCbKey] = (cancelled) => {
3884
+ el[leaveCbKey] = (cancelled) => {
3871
3885
  if (called) return;
3872
3886
  called = true;
3873
3887
  remove();
@@ -3881,6 +3895,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3881
3895
  delete leavingVNodesCache[key2];
3882
3896
  }
3883
3897
  };
3898
+ const done = el[leaveCbKey].bind(null, false);
3884
3899
  leavingVNodesCache[key2] = vnode;
3885
3900
  if (onLeave) {
3886
3901
  callAsyncHook(onLeave, [el, done]);
@@ -3993,8 +4008,7 @@ function useTemplateRef(key) {
3993
4008
  const r = shallowRef(null);
3994
4009
  if (i) {
3995
4010
  const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs;
3996
- let desc;
3997
- if ((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) {
4011
+ if (isTemplateRefKey(refs, key)) {
3998
4012
  warn$1(`useTemplateRef('${key}') already exists.`);
3999
4013
  } else {
4000
4014
  Object.defineProperty(refs, key, {
@@ -4014,6 +4028,10 @@ function useTemplateRef(key) {
4014
4028
  }
4015
4029
  return ret;
4016
4030
  }
4031
+ function isTemplateRefKey(refs, key) {
4032
+ let desc;
4033
+ return !!((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable);
4034
+ }
4017
4035
 
4018
4036
  const pendingSetRefMap = /* @__PURE__ */ new WeakMap();
4019
4037
  function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
@@ -4059,10 +4077,19 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4059
4077
  return false;
4060
4078
  }
4061
4079
  }
4080
+ if (isTemplateRefKey(refs, key)) {
4081
+ return false;
4082
+ }
4062
4083
  return hasOwn(rawSetupState, key);
4063
4084
  };
4064
- const canSetRef = (ref2) => {
4065
- return !knownTemplateRefs.has(ref2);
4085
+ const canSetRef = (ref2, key) => {
4086
+ if (knownTemplateRefs.has(ref2)) {
4087
+ return false;
4088
+ }
4089
+ if (key && isTemplateRefKey(refs, key)) {
4090
+ return false;
4091
+ }
4092
+ return true;
4066
4093
  };
4067
4094
  if (oldRef != null && oldRef !== ref) {
4068
4095
  invalidatePendingSetRef(oldRawRef);
@@ -4072,10 +4099,10 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4072
4099
  setupState[oldRef] = null;
4073
4100
  }
4074
4101
  } else if (isRef(oldRef)) {
4075
- if (canSetRef(oldRef)) {
4102
+ const oldRawRefAtom = oldRawRef;
4103
+ if (canSetRef(oldRef, oldRawRefAtom.k)) {
4076
4104
  oldRef.value = null;
4077
4105
  }
4078
- const oldRawRefAtom = oldRawRef;
4079
4106
  if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;
4080
4107
  }
4081
4108
  }
@@ -4099,7 +4126,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4099
4126
  }
4100
4127
  } else {
4101
4128
  const newVal = [refValue];
4102
- if (canSetRef(ref)) {
4129
+ if (canSetRef(ref, rawRef.k)) {
4103
4130
  ref.value = newVal;
4104
4131
  }
4105
4132
  if (rawRef.k) refs[rawRef.k] = newVal;
@@ -4114,7 +4141,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4114
4141
  setupState[ref] = value;
4115
4142
  }
4116
4143
  } else if (_isRef) {
4117
- if (canSetRef(ref)) {
4144
+ if (canSetRef(ref, rawRef.k)) {
4118
4145
  ref.value = value;
4119
4146
  }
4120
4147
  if (rawRef.k) refs[rawRef.k] = value;
@@ -5907,13 +5934,24 @@ function withAsyncContext(getAwaitable) {
5907
5934
  }
5908
5935
  let awaitable = getAwaitable();
5909
5936
  unsetCurrentInstance();
5937
+ const cleanup = () => {
5938
+ if (getCurrentInstance() !== ctx) ctx.scope.off();
5939
+ unsetCurrentInstance();
5940
+ };
5910
5941
  if (isPromise(awaitable)) {
5911
5942
  awaitable = awaitable.catch((e) => {
5912
5943
  setCurrentInstance(ctx);
5944
+ Promise.resolve().then(() => Promise.resolve().then(cleanup));
5913
5945
  throw e;
5914
5946
  });
5915
5947
  }
5916
- return [awaitable, () => setCurrentInstance(ctx)];
5948
+ return [
5949
+ awaitable,
5950
+ () => {
5951
+ setCurrentInstance(ctx);
5952
+ Promise.resolve().then(cleanup);
5953
+ }
5954
+ ];
5917
5955
  }
5918
5956
 
5919
5957
  function createDuplicateChecker() {
@@ -6978,7 +7016,7 @@ function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
6978
7016
  const dynamicProps = nextVNode.dynamicProps;
6979
7017
  for (let i = 0; i < dynamicProps.length; i++) {
6980
7018
  const key = dynamicProps[i];
6981
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {
7019
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emits, key)) {
6982
7020
  return true;
6983
7021
  }
6984
7022
  }
@@ -7009,12 +7047,20 @@ function hasPropsChanged(prevProps, nextProps, emitsOptions) {
7009
7047
  }
7010
7048
  for (let i = 0; i < nextKeys.length; i++) {
7011
7049
  const key = nextKeys[i];
7012
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {
7050
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) {
7013
7051
  return true;
7014
7052
  }
7015
7053
  }
7016
7054
  return false;
7017
7055
  }
7056
+ function hasPropValueChanged(nextProps, prevProps, key) {
7057
+ const nextProp = nextProps[key];
7058
+ const prevProp = prevProps[key];
7059
+ if (key === "style" && isObject(nextProp) && isObject(prevProp)) {
7060
+ return !looseEqual(nextProp, prevProp);
7061
+ }
7062
+ return nextProp !== prevProp;
7063
+ }
7018
7064
  function updateHOCHostEl({ vnode, parent }, el) {
7019
7065
  while (parent) {
7020
7066
  const root = parent.subTree;
@@ -7718,15 +7764,7 @@ function baseCreateRenderer(options, createHydrationFns) {
7718
7764
  } else {
7719
7765
  const el = n2.el = n1.el;
7720
7766
  if (n2.children !== n1.children) {
7721
- if (isHmrUpdating && n2.patchFlag === -1 && "__elIndex" in n1) {
7722
- const childNodes = container.childNodes;
7723
- const newChild = hostCreateText(n2.children);
7724
- const oldChild = childNodes[n2.__elIndex = n1.__elIndex];
7725
- hostInsert(newChild, container, oldChild);
7726
- hostRemove(oldChild);
7727
- } else {
7728
- hostSetText(el, n2.children);
7729
- }
7767
+ hostSetText(el, n2.children);
7730
7768
  }
7731
7769
  }
7732
7770
  };
@@ -7802,7 +7840,7 @@ function baseCreateRenderer(options, createHydrationFns) {
7802
7840
  optimized
7803
7841
  );
7804
7842
  } else {
7805
- const customElement = !!(n1.el && n1.el._isVueCE) ? n1.el : null;
7843
+ const customElement = n1.el && n1.el._isVueCE ? n1.el : null;
7806
7844
  try {
7807
7845
  if (customElement) {
7808
7846
  customElement._beginPatch();
@@ -8284,8 +8322,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8284
8322
  hydrateSubTree();
8285
8323
  }
8286
8324
  } else {
8287
- if (root.ce && // @ts-expect-error _def is private
8288
- root.ce._def.shadowRoot !== false) {
8325
+ if (root.ce && root.ce._hasShadowRoot()) {
8289
8326
  root.ce._injectChildStyle(type);
8290
8327
  }
8291
8328
  {
@@ -8340,9 +8377,9 @@ function baseCreateRenderer(options, createHydrationFns) {
8340
8377
  updateComponentPreRender(instance, next, optimized);
8341
8378
  }
8342
8379
  nonHydratedAsyncRoot.asyncDep.then(() => {
8343
- if (!instance.isUnmounted) {
8344
- componentUpdateFn();
8345
- }
8380
+ queuePostRenderEffect(() => {
8381
+ if (!instance.isUnmounted) update();
8382
+ }, parentSuspense);
8346
8383
  });
8347
8384
  return;
8348
8385
  }
@@ -9039,12 +9076,10 @@ function traverseStaticChildren(n1, n2, shallow = false) {
9039
9076
  traverseStaticChildren(c1, c2);
9040
9077
  }
9041
9078
  if (c2.type === Text) {
9042
- if (c2.patchFlag !== -1) {
9043
- c2.el = c1.el;
9044
- } else {
9045
- c2.__elIndex = i + // take fragment start anchor into account
9046
- (n1.type === Fragment ? 1 : 0);
9079
+ if (c2.patchFlag === -1) {
9080
+ c2 = ch2[i] = cloneIfMounted(c2);
9047
9081
  }
9082
+ c2.el = c1.el;
9048
9083
  }
9049
9084
  if (c2.type === Comment && !c2.el) {
9050
9085
  c2.el = c1.el;
@@ -10770,7 +10805,7 @@ function isMemoSame(cached, memo) {
10770
10805
  return true;
10771
10806
  }
10772
10807
 
10773
- const version = "3.5.27";
10808
+ const version = "3.5.29";
10774
10809
  const warn = warn$1 ;
10775
10810
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
10776
10811
  const devtools = devtools$1 ;
@@ -12044,6 +12079,12 @@ class VueElement extends BaseClass {
12044
12079
  this._update();
12045
12080
  }
12046
12081
  }
12082
+ /**
12083
+ * @internal
12084
+ */
12085
+ _hasShadowRoot() {
12086
+ return this._def.shadowRoot !== false;
12087
+ }
12047
12088
  /**
12048
12089
  * @internal
12049
12090
  */
@@ -12178,10 +12219,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
12178
12219
  instance
12179
12220
  )
12180
12221
  );
12181
- positionMap.set(child, {
12182
- left: child.el.offsetLeft,
12183
- top: child.el.offsetTop
12184
- });
12222
+ positionMap.set(child, getPosition(child.el));
12185
12223
  }
12186
12224
  }
12187
12225
  }
@@ -12212,10 +12250,7 @@ function callPendingCbs(c) {
12212
12250
  }
12213
12251
  }
12214
12252
  function recordPosition(c) {
12215
- newPositionMap.set(c, {
12216
- left: c.el.offsetLeft,
12217
- top: c.el.offsetTop
12218
- });
12253
+ newPositionMap.set(c, getPosition(c.el));
12219
12254
  }
12220
12255
  function applyTranslation(c) {
12221
12256
  const oldPos = positionMap.get(c);
@@ -12223,12 +12258,29 @@ function applyTranslation(c) {
12223
12258
  const dx = oldPos.left - newPos.left;
12224
12259
  const dy = oldPos.top - newPos.top;
12225
12260
  if (dx || dy) {
12226
- const s = c.el.style;
12227
- s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;
12261
+ const el = c.el;
12262
+ const s = el.style;
12263
+ const rect = el.getBoundingClientRect();
12264
+ let scaleX = 1;
12265
+ let scaleY = 1;
12266
+ if (el.offsetWidth) scaleX = rect.width / el.offsetWidth;
12267
+ if (el.offsetHeight) scaleY = rect.height / el.offsetHeight;
12268
+ if (!Number.isFinite(scaleX) || scaleX === 0) scaleX = 1;
12269
+ if (!Number.isFinite(scaleY) || scaleY === 0) scaleY = 1;
12270
+ if (Math.abs(scaleX - 1) < 0.01) scaleX = 1;
12271
+ if (Math.abs(scaleY - 1) < 0.01) scaleY = 1;
12272
+ s.transform = s.webkitTransform = `translate(${dx / scaleX}px,${dy / scaleY}px)`;
12228
12273
  s.transitionDuration = "0s";
12229
12274
  return c;
12230
12275
  }
12231
12276
  }
12277
+ function getPosition(el) {
12278
+ const rect = el.getBoundingClientRect();
12279
+ return {
12280
+ left: rect.left,
12281
+ top: rect.top
12282
+ };
12283
+ }
12232
12284
  function hasCSSTransform(el, root, moveClass) {
12233
12285
  const clone = el.cloneNode();
12234
12286
  const _vtc = el[vtcKey];
@@ -12539,6 +12591,7 @@ const modifierGuards = {
12539
12591
  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))
12540
12592
  };
12541
12593
  const withModifiers = (fn, modifiers) => {
12594
+ if (!fn) return fn;
12542
12595
  const cache = fn._withMods || (fn._withMods = {});
12543
12596
  const cacheKey = modifiers.join(".");
12544
12597
  return cache[cacheKey] || (cache[cacheKey] = ((event, ...args) => {