vue 3.5.27 → 3.5.28

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 v3.5.27
2
+ * vue v3.5.28
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.28
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.28
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
  }
@@ -3835,7 +3847,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3835
3847
  }
3836
3848
  }
3837
3849
  let called = false;
3838
- const done = el[enterCbKey$1] = (cancelled) => {
3850
+ el[enterCbKey$1] = (cancelled) => {
3839
3851
  if (called) return;
3840
3852
  called = true;
3841
3853
  if (cancelled) {
@@ -3848,6 +3860,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3848
3860
  }
3849
3861
  el[enterCbKey$1] = void 0;
3850
3862
  };
3863
+ const done = el[enterCbKey$1].bind(null, false);
3851
3864
  if (hook) {
3852
3865
  callAsyncHook(hook, [el, done]);
3853
3866
  } else {
@@ -3867,7 +3880,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3867
3880
  }
3868
3881
  callHook(onBeforeLeave, [el]);
3869
3882
  let called = false;
3870
- const done = el[leaveCbKey] = (cancelled) => {
3883
+ el[leaveCbKey] = (cancelled) => {
3871
3884
  if (called) return;
3872
3885
  called = true;
3873
3886
  remove();
@@ -3881,6 +3894,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3881
3894
  delete leavingVNodesCache[key2];
3882
3895
  }
3883
3896
  };
3897
+ const done = el[leaveCbKey].bind(null, false);
3884
3898
  leavingVNodesCache[key2] = vnode;
3885
3899
  if (onLeave) {
3886
3900
  callAsyncHook(onLeave, [el, done]);
@@ -3993,8 +4007,7 @@ function useTemplateRef(key) {
3993
4007
  const r = shallowRef(null);
3994
4008
  if (i) {
3995
4009
  const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs;
3996
- let desc;
3997
- if ((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) {
4010
+ if (isTemplateRefKey(refs, key)) {
3998
4011
  warn$1(`useTemplateRef('${key}') already exists.`);
3999
4012
  } else {
4000
4013
  Object.defineProperty(refs, key, {
@@ -4014,6 +4027,10 @@ function useTemplateRef(key) {
4014
4027
  }
4015
4028
  return ret;
4016
4029
  }
4030
+ function isTemplateRefKey(refs, key) {
4031
+ let desc;
4032
+ return !!((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable);
4033
+ }
4017
4034
 
4018
4035
  const pendingSetRefMap = /* @__PURE__ */ new WeakMap();
4019
4036
  function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
@@ -4059,10 +4076,19 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4059
4076
  return false;
4060
4077
  }
4061
4078
  }
4079
+ if (isTemplateRefKey(refs, key)) {
4080
+ return false;
4081
+ }
4062
4082
  return hasOwn(rawSetupState, key);
4063
4083
  };
4064
- const canSetRef = (ref2) => {
4065
- return !knownTemplateRefs.has(ref2);
4084
+ const canSetRef = (ref2, key) => {
4085
+ if (knownTemplateRefs.has(ref2)) {
4086
+ return false;
4087
+ }
4088
+ if (key && isTemplateRefKey(refs, key)) {
4089
+ return false;
4090
+ }
4091
+ return true;
4066
4092
  };
4067
4093
  if (oldRef != null && oldRef !== ref) {
4068
4094
  invalidatePendingSetRef(oldRawRef);
@@ -4072,10 +4098,10 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4072
4098
  setupState[oldRef] = null;
4073
4099
  }
4074
4100
  } else if (isRef(oldRef)) {
4075
- if (canSetRef(oldRef)) {
4101
+ const oldRawRefAtom = oldRawRef;
4102
+ if (canSetRef(oldRef, oldRawRefAtom.k)) {
4076
4103
  oldRef.value = null;
4077
4104
  }
4078
- const oldRawRefAtom = oldRawRef;
4079
4105
  if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;
4080
4106
  }
4081
4107
  }
@@ -4099,7 +4125,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4099
4125
  }
4100
4126
  } else {
4101
4127
  const newVal = [refValue];
4102
- if (canSetRef(ref)) {
4128
+ if (canSetRef(ref, rawRef.k)) {
4103
4129
  ref.value = newVal;
4104
4130
  }
4105
4131
  if (rawRef.k) refs[rawRef.k] = newVal;
@@ -4114,7 +4140,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4114
4140
  setupState[ref] = value;
4115
4141
  }
4116
4142
  } else if (_isRef) {
4117
- if (canSetRef(ref)) {
4143
+ if (canSetRef(ref, rawRef.k)) {
4118
4144
  ref.value = value;
4119
4145
  }
4120
4146
  if (rawRef.k) refs[rawRef.k] = value;
@@ -6978,7 +7004,7 @@ function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
6978
7004
  const dynamicProps = nextVNode.dynamicProps;
6979
7005
  for (let i = 0; i < dynamicProps.length; i++) {
6980
7006
  const key = dynamicProps[i];
6981
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {
7007
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emits, key)) {
6982
7008
  return true;
6983
7009
  }
6984
7010
  }
@@ -7009,12 +7035,20 @@ function hasPropsChanged(prevProps, nextProps, emitsOptions) {
7009
7035
  }
7010
7036
  for (let i = 0; i < nextKeys.length; i++) {
7011
7037
  const key = nextKeys[i];
7012
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {
7038
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) {
7013
7039
  return true;
7014
7040
  }
7015
7041
  }
7016
7042
  return false;
7017
7043
  }
7044
+ function hasPropValueChanged(nextProps, prevProps, key) {
7045
+ const nextProp = nextProps[key];
7046
+ const prevProp = prevProps[key];
7047
+ if (key === "style" && isObject(nextProp) && isObject(prevProp)) {
7048
+ return !looseEqual(nextProp, prevProp);
7049
+ }
7050
+ return nextProp !== prevProp;
7051
+ }
7018
7052
  function updateHOCHostEl({ vnode, parent }, el) {
7019
7053
  while (parent) {
7020
7054
  const root = parent.subTree;
@@ -7718,15 +7752,7 @@ function baseCreateRenderer(options, createHydrationFns) {
7718
7752
  } else {
7719
7753
  const el = n2.el = n1.el;
7720
7754
  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
- }
7755
+ hostSetText(el, n2.children);
7730
7756
  }
7731
7757
  }
7732
7758
  };
@@ -7802,7 +7828,7 @@ function baseCreateRenderer(options, createHydrationFns) {
7802
7828
  optimized
7803
7829
  );
7804
7830
  } else {
7805
- const customElement = !!(n1.el && n1.el._isVueCE) ? n1.el : null;
7831
+ const customElement = n1.el && n1.el._isVueCE ? n1.el : null;
7806
7832
  try {
7807
7833
  if (customElement) {
7808
7834
  customElement._beginPatch();
@@ -8284,8 +8310,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8284
8310
  hydrateSubTree();
8285
8311
  }
8286
8312
  } else {
8287
- if (root.ce && // @ts-expect-error _def is private
8288
- root.ce._def.shadowRoot !== false) {
8313
+ if (root.ce && root.ce._hasShadowRoot()) {
8289
8314
  root.ce._injectChildStyle(type);
8290
8315
  }
8291
8316
  {
@@ -8340,9 +8365,9 @@ function baseCreateRenderer(options, createHydrationFns) {
8340
8365
  updateComponentPreRender(instance, next, optimized);
8341
8366
  }
8342
8367
  nonHydratedAsyncRoot.asyncDep.then(() => {
8343
- if (!instance.isUnmounted) {
8344
- componentUpdateFn();
8345
- }
8368
+ queuePostRenderEffect(() => {
8369
+ if (!instance.isUnmounted) update();
8370
+ }, parentSuspense);
8346
8371
  });
8347
8372
  return;
8348
8373
  }
@@ -9039,12 +9064,10 @@ function traverseStaticChildren(n1, n2, shallow = false) {
9039
9064
  traverseStaticChildren(c1, c2);
9040
9065
  }
9041
9066
  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);
9067
+ if (c2.patchFlag === -1) {
9068
+ c2 = ch2[i] = cloneIfMounted(c2);
9047
9069
  }
9070
+ c2.el = c1.el;
9048
9071
  }
9049
9072
  if (c2.type === Comment && !c2.el) {
9050
9073
  c2.el = c1.el;
@@ -10770,7 +10793,7 @@ function isMemoSame(cached, memo) {
10770
10793
  return true;
10771
10794
  }
10772
10795
 
10773
- const version = "3.5.27";
10796
+ const version = "3.5.28";
10774
10797
  const warn = warn$1 ;
10775
10798
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
10776
10799
  const devtools = devtools$1 ;
@@ -12044,6 +12067,12 @@ class VueElement extends BaseClass {
12044
12067
  this._update();
12045
12068
  }
12046
12069
  }
12070
+ /**
12071
+ * @internal
12072
+ */
12073
+ _hasShadowRoot() {
12074
+ return this._def.shadowRoot !== false;
12075
+ }
12047
12076
  /**
12048
12077
  * @internal
12049
12078
  */
@@ -12178,10 +12207,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
12178
12207
  instance
12179
12208
  )
12180
12209
  );
12181
- positionMap.set(child, {
12182
- left: child.el.offsetLeft,
12183
- top: child.el.offsetTop
12184
- });
12210
+ positionMap.set(child, getPosition(child.el));
12185
12211
  }
12186
12212
  }
12187
12213
  }
@@ -12212,10 +12238,7 @@ function callPendingCbs(c) {
12212
12238
  }
12213
12239
  }
12214
12240
  function recordPosition(c) {
12215
- newPositionMap.set(c, {
12216
- left: c.el.offsetLeft,
12217
- top: c.el.offsetTop
12218
- });
12241
+ newPositionMap.set(c, getPosition(c.el));
12219
12242
  }
12220
12243
  function applyTranslation(c) {
12221
12244
  const oldPos = positionMap.get(c);
@@ -12223,12 +12246,29 @@ function applyTranslation(c) {
12223
12246
  const dx = oldPos.left - newPos.left;
12224
12247
  const dy = oldPos.top - newPos.top;
12225
12248
  if (dx || dy) {
12226
- const s = c.el.style;
12227
- s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;
12249
+ const el = c.el;
12250
+ const s = el.style;
12251
+ const rect = el.getBoundingClientRect();
12252
+ let scaleX = 1;
12253
+ let scaleY = 1;
12254
+ if (el.offsetWidth) scaleX = rect.width / el.offsetWidth;
12255
+ if (el.offsetHeight) scaleY = rect.height / el.offsetHeight;
12256
+ if (!Number.isFinite(scaleX) || scaleX === 0) scaleX = 1;
12257
+ if (!Number.isFinite(scaleY) || scaleY === 0) scaleY = 1;
12258
+ if (Math.abs(scaleX - 1) < 0.01) scaleX = 1;
12259
+ if (Math.abs(scaleY - 1) < 0.01) scaleY = 1;
12260
+ s.transform = s.webkitTransform = `translate(${dx / scaleX}px,${dy / scaleY}px)`;
12228
12261
  s.transitionDuration = "0s";
12229
12262
  return c;
12230
12263
  }
12231
12264
  }
12265
+ function getPosition(el) {
12266
+ const rect = el.getBoundingClientRect();
12267
+ return {
12268
+ left: rect.left,
12269
+ top: rect.top
12270
+ };
12271
+ }
12232
12272
  function hasCSSTransform(el, root, moveClass) {
12233
12273
  const clone = el.cloneNode();
12234
12274
  const _vtc = el[vtcKey];
@@ -12539,6 +12579,7 @@ const modifierGuards = {
12539
12579
  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))
12540
12580
  };
12541
12581
  const withModifiers = (fn, modifiers) => {
12582
+ if (!fn) return fn;
12542
12583
  const cache = fn._withMods || (fn._withMods = {});
12543
12584
  const cacheKey = modifiers.join(".");
12544
12585
  return cache[cacheKey] || (cache[cacheKey] = ((event, ...args) => {