@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.
@@ -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
  **/
@@ -359,6 +359,7 @@ const stringifySymbol = (v, i = "") => {
359
359
 
360
360
  let activeEffectScope;
361
361
  class EffectScope {
362
+ // TODO isolatedDeclarations "__v_skip"
362
363
  constructor(detached = false) {
363
364
  this.detached = detached;
364
365
  /**
@@ -378,6 +379,7 @@ class EffectScope {
378
379
  */
379
380
  this.cleanups = [];
380
381
  this._isPaused = false;
382
+ this.__v_skip = true;
381
383
  this.parent = activeEffectScope;
382
384
  if (!detached && activeEffectScope) {
383
385
  this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(
@@ -3067,7 +3069,22 @@ function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }
3067
3069
  function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {
3068
3070
  o: { nextSibling, parentNode, querySelector, insert, createText }
3069
3071
  }, hydrateChildren) {
3070
- function hydrateDisabledTeleport(node2, vnode2, targetStart, targetAnchor) {
3072
+ function hydrateAnchor(target2, targetNode) {
3073
+ let targetAnchor = targetNode;
3074
+ while (targetAnchor) {
3075
+ if (targetAnchor && targetAnchor.nodeType === 8) {
3076
+ if (targetAnchor.data === "teleport start anchor") {
3077
+ vnode.targetStart = targetAnchor;
3078
+ } else if (targetAnchor.data === "teleport anchor") {
3079
+ vnode.targetAnchor = targetAnchor;
3080
+ target2._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
3081
+ break;
3082
+ }
3083
+ }
3084
+ targetAnchor = nextSibling(targetAnchor);
3085
+ }
3086
+ }
3087
+ function hydrateDisabledTeleport(node2, vnode2) {
3071
3088
  vnode2.anchor = hydrateChildren(
3072
3089
  nextSibling(node2),
3073
3090
  vnode2,
@@ -3077,8 +3094,6 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
3077
3094
  slotScopeIds,
3078
3095
  optimized
3079
3096
  );
3080
- vnode2.targetStart = targetStart;
3081
- vnode2.targetAnchor = targetAnchor;
3082
3097
  }
3083
3098
  const target = vnode.target = resolveTarget(
3084
3099
  vnode.props,
@@ -3089,27 +3104,22 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
3089
3104
  const targetNode = target._lpa || target.firstChild;
3090
3105
  if (vnode.shapeFlag & 16) {
3091
3106
  if (disabled) {
3092
- hydrateDisabledTeleport(
3093
- node,
3094
- vnode,
3095
- targetNode,
3096
- targetNode && nextSibling(targetNode)
3097
- );
3107
+ hydrateDisabledTeleport(node, vnode);
3108
+ hydrateAnchor(target, targetNode);
3109
+ if (!vnode.targetAnchor) {
3110
+ prepareAnchor(
3111
+ target,
3112
+ vnode,
3113
+ createText,
3114
+ insert,
3115
+ // if target is the same as the main view, insert anchors before current node
3116
+ // to avoid hydrating mismatch
3117
+ parentNode(node) === target ? node : null
3118
+ );
3119
+ }
3098
3120
  } else {
3099
3121
  vnode.anchor = nextSibling(node);
3100
- let targetAnchor = targetNode;
3101
- while (targetAnchor) {
3102
- if (targetAnchor && targetAnchor.nodeType === 8) {
3103
- if (targetAnchor.data === "teleport start anchor") {
3104
- vnode.targetStart = targetAnchor;
3105
- } else if (targetAnchor.data === "teleport anchor") {
3106
- vnode.targetAnchor = targetAnchor;
3107
- target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
3108
- break;
3109
- }
3110
- }
3111
- targetAnchor = nextSibling(targetAnchor);
3112
- }
3122
+ hydrateAnchor(target, targetNode);
3113
3123
  if (!vnode.targetAnchor) {
3114
3124
  prepareAnchor(target, vnode, createText, insert);
3115
3125
  }
@@ -3127,7 +3137,9 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
3127
3137
  updateCssVars(vnode, disabled);
3128
3138
  } else if (disabled) {
3129
3139
  if (vnode.shapeFlag & 16) {
3130
- hydrateDisabledTeleport(node, vnode, node, nextSibling(node));
3140
+ hydrateDisabledTeleport(node, vnode);
3141
+ vnode.targetStart = node;
3142
+ vnode.targetAnchor = nextSibling(node);
3131
3143
  }
3132
3144
  }
3133
3145
  return vnode.anchor && nextSibling(vnode.anchor);
@@ -3151,13 +3163,13 @@ function updateCssVars(vnode, isDisabled) {
3151
3163
  ctx.ut();
3152
3164
  }
3153
3165
  }
3154
- function prepareAnchor(target, vnode, createText, insert) {
3166
+ function prepareAnchor(target, vnode, createText, insert, anchor = null) {
3155
3167
  const targetStart = vnode.targetStart = createText("");
3156
3168
  const targetAnchor = vnode.targetAnchor = createText("");
3157
3169
  targetStart[TeleportEndKey] = targetAnchor;
3158
3170
  if (target) {
3159
- insert(targetStart, target);
3160
- insert(targetAnchor, target);
3171
+ insert(targetStart, target, anchor);
3172
+ insert(targetAnchor, target, anchor);
3161
3173
  }
3162
3174
  return targetAnchor;
3163
3175
  }
@@ -3372,6 +3384,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3372
3384
  callHook(hook, [el]);
3373
3385
  },
3374
3386
  enter(el) {
3387
+ if (leavingVNodesCache[key] === vnode) return;
3375
3388
  let hook = onEnter;
3376
3389
  let afterHook = onAfterEnter;
3377
3390
  let cancelHook = onEnterCancelled;
@@ -3385,7 +3398,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3385
3398
  }
3386
3399
  }
3387
3400
  let called = false;
3388
- const done = el[enterCbKey$1] = (cancelled) => {
3401
+ el[enterCbKey$1] = (cancelled) => {
3389
3402
  if (called) return;
3390
3403
  called = true;
3391
3404
  if (cancelled) {
@@ -3398,6 +3411,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3398
3411
  }
3399
3412
  el[enterCbKey$1] = void 0;
3400
3413
  };
3414
+ const done = el[enterCbKey$1].bind(null, false);
3401
3415
  if (hook) {
3402
3416
  callAsyncHook(hook, [el, done]);
3403
3417
  } else {
@@ -3417,7 +3431,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3417
3431
  }
3418
3432
  callHook(onBeforeLeave, [el]);
3419
3433
  let called = false;
3420
- const done = el[leaveCbKey] = (cancelled) => {
3434
+ el[leaveCbKey] = (cancelled) => {
3421
3435
  if (called) return;
3422
3436
  called = true;
3423
3437
  remove();
@@ -3431,6 +3445,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3431
3445
  delete leavingVNodesCache[key2];
3432
3446
  }
3433
3447
  };
3448
+ const done = el[leaveCbKey].bind(null, false);
3434
3449
  leavingVNodesCache[key2] = vnode;
3435
3450
  if (onLeave) {
3436
3451
  callAsyncHook(onLeave, [el, done]);
@@ -3549,6 +3564,10 @@ function useTemplateRef(key) {
3549
3564
  const ret = r;
3550
3565
  return ret;
3551
3566
  }
3567
+ function isTemplateRefKey(refs, key) {
3568
+ let desc;
3569
+ return !!((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable);
3570
+ }
3552
3571
 
3553
3572
  const pendingSetRefMap = /* @__PURE__ */ new WeakMap();
3554
3573
  function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
@@ -3578,8 +3597,17 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
3578
3597
  const setupState = owner.setupState;
3579
3598
  const rawSetupState = toRaw(setupState);
3580
3599
  const canSetSetupRef = setupState === EMPTY_OBJ ? NO : (key) => {
3600
+ if (isTemplateRefKey(refs, key)) {
3601
+ return false;
3602
+ }
3581
3603
  return hasOwn(rawSetupState, key);
3582
3604
  };
3605
+ const canSetRef = (ref2, key) => {
3606
+ if (key && isTemplateRefKey(refs, key)) {
3607
+ return false;
3608
+ }
3609
+ return true;
3610
+ };
3583
3611
  if (oldRef != null && oldRef !== ref) {
3584
3612
  invalidatePendingSetRef(oldRawRef);
3585
3613
  if (isString(oldRef)) {
@@ -3588,10 +3616,10 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
3588
3616
  setupState[oldRef] = null;
3589
3617
  }
3590
3618
  } else if (isRef(oldRef)) {
3591
- {
3619
+ const oldRawRefAtom = oldRawRef;
3620
+ if (canSetRef(oldRef, oldRawRefAtom.k)) {
3592
3621
  oldRef.value = null;
3593
3622
  }
3594
- const oldRawRefAtom = oldRawRef;
3595
3623
  if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;
3596
3624
  }
3597
3625
  }
@@ -3603,7 +3631,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
3603
3631
  if (_isString || _isRef) {
3604
3632
  const doSet = () => {
3605
3633
  if (rawRef.f) {
3606
- const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : ref.value ;
3634
+ const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : canSetRef() || !rawRef.k ? ref.value : refs[rawRef.k];
3607
3635
  if (isUnmount) {
3608
3636
  isArray(existing) && remove(existing, refValue);
3609
3637
  } else {
@@ -3615,7 +3643,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
3615
3643
  }
3616
3644
  } else {
3617
3645
  const newVal = [refValue];
3618
- {
3646
+ if (canSetRef(ref, rawRef.k)) {
3619
3647
  ref.value = newVal;
3620
3648
  }
3621
3649
  if (rawRef.k) refs[rawRef.k] = newVal;
@@ -3630,7 +3658,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
3630
3658
  setupState[ref] = value;
3631
3659
  }
3632
3660
  } else if (_isRef) {
3633
- {
3661
+ if (canSetRef(ref, rawRef.k)) {
3634
3662
  ref.value = value;
3635
3663
  }
3636
3664
  if (rawRef.k) refs[rawRef.k] = value;
@@ -5590,13 +5618,24 @@ function withAsyncContext(getAwaitable) {
5590
5618
  const ctx = getCurrentInstance();
5591
5619
  let awaitable = getAwaitable();
5592
5620
  unsetCurrentInstance();
5621
+ const cleanup = () => {
5622
+ if (getCurrentInstance() !== ctx) ctx.scope.off();
5623
+ unsetCurrentInstance();
5624
+ };
5593
5625
  if (isPromise(awaitable)) {
5594
5626
  awaitable = awaitable.catch((e) => {
5595
5627
  setCurrentInstance(ctx);
5628
+ Promise.resolve().then(() => Promise.resolve().then(cleanup));
5596
5629
  throw e;
5597
5630
  });
5598
5631
  }
5599
- return [awaitable, () => setCurrentInstance(ctx)];
5632
+ return [
5633
+ awaitable,
5634
+ () => {
5635
+ setCurrentInstance(ctx);
5636
+ Promise.resolve().then(cleanup);
5637
+ }
5638
+ ];
5600
5639
  }
5601
5640
 
5602
5641
  let shouldCacheAccess = true;
@@ -6014,7 +6053,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
6014
6053
  return vm;
6015
6054
  }
6016
6055
  }
6017
- Vue.version = `2.6.14-compat:${"3.5.27"}`;
6056
+ Vue.version = `2.6.14-compat:${"3.5.29"}`;
6018
6057
  Vue.config = singletonApp.config;
6019
6058
  Vue.use = (plugin, ...options) => {
6020
6059
  if (plugin && isFunction(plugin.install)) {
@@ -6869,7 +6908,7 @@ function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
6869
6908
  const dynamicProps = nextVNode.dynamicProps;
6870
6909
  for (let i = 0; i < dynamicProps.length; i++) {
6871
6910
  const key = dynamicProps[i];
6872
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {
6911
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emits, key)) {
6873
6912
  return true;
6874
6913
  }
6875
6914
  }
@@ -6900,12 +6939,20 @@ function hasPropsChanged(prevProps, nextProps, emitsOptions) {
6900
6939
  }
6901
6940
  for (let i = 0; i < nextKeys.length; i++) {
6902
6941
  const key = nextKeys[i];
6903
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {
6942
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) {
6904
6943
  return true;
6905
6944
  }
6906
6945
  }
6907
6946
  return false;
6908
6947
  }
6948
+ function hasPropValueChanged(nextProps, prevProps, key) {
6949
+ const nextProp = nextProps[key];
6950
+ const prevProp = prevProps[key];
6951
+ if (key === "style" && isObject(nextProp) && isObject(prevProp)) {
6952
+ return !looseEqual(nextProp, prevProp);
6953
+ }
6954
+ return nextProp !== prevProp;
6955
+ }
6909
6956
  function updateHOCHostEl({ vnode, parent }, el) {
6910
6957
  while (parent) {
6911
6958
  const root = parent.subTree;
@@ -7483,9 +7530,7 @@ function baseCreateRenderer(options, createHydrationFns) {
7483
7530
  } else {
7484
7531
  const el = n2.el = n1.el;
7485
7532
  if (n2.children !== n1.children) {
7486
- {
7487
- hostSetText(el, n2.children);
7488
- }
7533
+ hostSetText(el, n2.children);
7489
7534
  }
7490
7535
  }
7491
7536
  };
@@ -7546,7 +7591,7 @@ function baseCreateRenderer(options, createHydrationFns) {
7546
7591
  optimized
7547
7592
  );
7548
7593
  } else {
7549
- const customElement = !!(n1.el && n1.el._isVueCE) ? n1.el : null;
7594
+ const customElement = n1.el && n1.el._isVueCE ? n1.el : null;
7550
7595
  try {
7551
7596
  if (customElement) {
7552
7597
  customElement._beginPatch();
@@ -7981,8 +8026,7 @@ function baseCreateRenderer(options, createHydrationFns) {
7981
8026
  hydrateSubTree();
7982
8027
  }
7983
8028
  } else {
7984
- if (root.ce && // @ts-expect-error _def is private
7985
- root.ce._def.shadowRoot !== false) {
8029
+ if (root.ce && root.ce._hasShadowRoot()) {
7986
8030
  root.ce._injectChildStyle(type);
7987
8031
  }
7988
8032
  const subTree = instance.subTree = renderComponentRoot(instance);
@@ -8034,9 +8078,9 @@ function baseCreateRenderer(options, createHydrationFns) {
8034
8078
  updateComponentPreRender(instance, next, optimized);
8035
8079
  }
8036
8080
  nonHydratedAsyncRoot.asyncDep.then(() => {
8037
- if (!instance.isUnmounted) {
8038
- componentUpdateFn();
8039
- }
8081
+ queuePostRenderEffect(() => {
8082
+ if (!instance.isUnmounted) update();
8083
+ }, parentSuspense);
8040
8084
  });
8041
8085
  return;
8042
8086
  }
@@ -8705,12 +8749,10 @@ function traverseStaticChildren(n1, n2, shallow = false) {
8705
8749
  traverseStaticChildren(c1, c2);
8706
8750
  }
8707
8751
  if (c2.type === Text) {
8708
- if (c2.patchFlag !== -1) {
8709
- c2.el = c1.el;
8710
- } else {
8711
- c2.__elIndex = i + // take fragment start anchor into account
8712
- (n1.type === Fragment ? 1 : 0);
8752
+ if (c2.patchFlag === -1) {
8753
+ c2 = ch2[i] = cloneIfMounted(c2);
8713
8754
  }
8755
+ c2.el = c1.el;
8714
8756
  }
8715
8757
  if (c2.type === Comment && !c2.el) {
8716
8758
  c2.el = c1.el;
@@ -10123,7 +10165,7 @@ function isMemoSame(cached, memo) {
10123
10165
  return true;
10124
10166
  }
10125
10167
 
10126
- const version = "3.5.27";
10168
+ const version = "3.5.29";
10127
10169
  const warn$1 = NOOP;
10128
10170
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
10129
10171
  const devtools = void 0;
@@ -11345,6 +11387,12 @@ class VueElement extends BaseClass {
11345
11387
  this._update();
11346
11388
  }
11347
11389
  }
11390
+ /**
11391
+ * @internal
11392
+ */
11393
+ _hasShadowRoot() {
11394
+ return this._def.shadowRoot !== false;
11395
+ }
11348
11396
  /**
11349
11397
  * @internal
11350
11398
  */
@@ -11465,10 +11513,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
11465
11513
  instance
11466
11514
  )
11467
11515
  );
11468
- positionMap.set(child, {
11469
- left: child.el.offsetLeft,
11470
- top: child.el.offsetTop
11471
- });
11516
+ positionMap.set(child, getPosition(child.el));
11472
11517
  }
11473
11518
  }
11474
11519
  }
@@ -11497,10 +11542,7 @@ function callPendingCbs(c) {
11497
11542
  }
11498
11543
  }
11499
11544
  function recordPosition(c) {
11500
- newPositionMap.set(c, {
11501
- left: c.el.offsetLeft,
11502
- top: c.el.offsetTop
11503
- });
11545
+ newPositionMap.set(c, getPosition(c.el));
11504
11546
  }
11505
11547
  function applyTranslation(c) {
11506
11548
  const oldPos = positionMap.get(c);
@@ -11508,12 +11550,29 @@ function applyTranslation(c) {
11508
11550
  const dx = oldPos.left - newPos.left;
11509
11551
  const dy = oldPos.top - newPos.top;
11510
11552
  if (dx || dy) {
11511
- const s = c.el.style;
11512
- s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;
11553
+ const el = c.el;
11554
+ const s = el.style;
11555
+ const rect = el.getBoundingClientRect();
11556
+ let scaleX = 1;
11557
+ let scaleY = 1;
11558
+ if (el.offsetWidth) scaleX = rect.width / el.offsetWidth;
11559
+ if (el.offsetHeight) scaleY = rect.height / el.offsetHeight;
11560
+ if (!Number.isFinite(scaleX) || scaleX === 0) scaleX = 1;
11561
+ if (!Number.isFinite(scaleY) || scaleY === 0) scaleY = 1;
11562
+ if (Math.abs(scaleX - 1) < 0.01) scaleX = 1;
11563
+ if (Math.abs(scaleY - 1) < 0.01) scaleY = 1;
11564
+ s.transform = s.webkitTransform = `translate(${dx / scaleX}px,${dy / scaleY}px)`;
11513
11565
  s.transitionDuration = "0s";
11514
11566
  return c;
11515
11567
  }
11516
11568
  }
11569
+ function getPosition(el) {
11570
+ const rect = el.getBoundingClientRect();
11571
+ return {
11572
+ left: rect.left,
11573
+ top: rect.top
11574
+ };
11575
+ }
11517
11576
  function hasCSSTransform(el, root, moveClass) {
11518
11577
  const clone = el.cloneNode();
11519
11578
  const _vtc = el[vtcKey];
@@ -11821,6 +11880,7 @@ const modifierGuards = {
11821
11880
  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))
11822
11881
  };
11823
11882
  const withModifiers = (fn, modifiers) => {
11883
+ if (!fn) return fn;
11824
11884
  const cache = fn._withMods || (fn._withMods = {});
11825
11885
  const cacheKey = modifiers.join(".");
11826
11886
  return cache[cacheKey] || (cache[cacheKey] = ((event, ...args) => {