@vue/compat 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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compat v3.5.27
2
+ * @vue/compat v3.5.28
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
  }
@@ -3385,7 +3397,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3385
3397
  }
3386
3398
  }
3387
3399
  let called = false;
3388
- const done = el[enterCbKey$1] = (cancelled) => {
3400
+ el[enterCbKey$1] = (cancelled) => {
3389
3401
  if (called) return;
3390
3402
  called = true;
3391
3403
  if (cancelled) {
@@ -3398,6 +3410,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3398
3410
  }
3399
3411
  el[enterCbKey$1] = void 0;
3400
3412
  };
3413
+ const done = el[enterCbKey$1].bind(null, false);
3401
3414
  if (hook) {
3402
3415
  callAsyncHook(hook, [el, done]);
3403
3416
  } else {
@@ -3417,7 +3430,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3417
3430
  }
3418
3431
  callHook(onBeforeLeave, [el]);
3419
3432
  let called = false;
3420
- const done = el[leaveCbKey] = (cancelled) => {
3433
+ el[leaveCbKey] = (cancelled) => {
3421
3434
  if (called) return;
3422
3435
  called = true;
3423
3436
  remove();
@@ -3431,6 +3444,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3431
3444
  delete leavingVNodesCache[key2];
3432
3445
  }
3433
3446
  };
3447
+ const done = el[leaveCbKey].bind(null, false);
3434
3448
  leavingVNodesCache[key2] = vnode;
3435
3449
  if (onLeave) {
3436
3450
  callAsyncHook(onLeave, [el, done]);
@@ -3549,6 +3563,10 @@ function useTemplateRef(key) {
3549
3563
  const ret = r;
3550
3564
  return ret;
3551
3565
  }
3566
+ function isTemplateRefKey(refs, key) {
3567
+ let desc;
3568
+ return !!((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable);
3569
+ }
3552
3570
 
3553
3571
  const pendingSetRefMap = /* @__PURE__ */ new WeakMap();
3554
3572
  function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
@@ -3578,8 +3596,17 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
3578
3596
  const setupState = owner.setupState;
3579
3597
  const rawSetupState = toRaw(setupState);
3580
3598
  const canSetSetupRef = setupState === EMPTY_OBJ ? NO : (key) => {
3599
+ if (isTemplateRefKey(refs, key)) {
3600
+ return false;
3601
+ }
3581
3602
  return hasOwn(rawSetupState, key);
3582
3603
  };
3604
+ const canSetRef = (ref2, key) => {
3605
+ if (key && isTemplateRefKey(refs, key)) {
3606
+ return false;
3607
+ }
3608
+ return true;
3609
+ };
3583
3610
  if (oldRef != null && oldRef !== ref) {
3584
3611
  invalidatePendingSetRef(oldRawRef);
3585
3612
  if (isString(oldRef)) {
@@ -3588,10 +3615,10 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
3588
3615
  setupState[oldRef] = null;
3589
3616
  }
3590
3617
  } else if (isRef(oldRef)) {
3591
- {
3618
+ const oldRawRefAtom = oldRawRef;
3619
+ if (canSetRef(oldRef, oldRawRefAtom.k)) {
3592
3620
  oldRef.value = null;
3593
3621
  }
3594
- const oldRawRefAtom = oldRawRef;
3595
3622
  if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;
3596
3623
  }
3597
3624
  }
@@ -3603,7 +3630,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
3603
3630
  if (_isString || _isRef) {
3604
3631
  const doSet = () => {
3605
3632
  if (rawRef.f) {
3606
- const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : ref.value ;
3633
+ const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : canSetRef() || !rawRef.k ? ref.value : refs[rawRef.k];
3607
3634
  if (isUnmount) {
3608
3635
  isArray(existing) && remove(existing, refValue);
3609
3636
  } else {
@@ -3615,7 +3642,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
3615
3642
  }
3616
3643
  } else {
3617
3644
  const newVal = [refValue];
3618
- {
3645
+ if (canSetRef(ref, rawRef.k)) {
3619
3646
  ref.value = newVal;
3620
3647
  }
3621
3648
  if (rawRef.k) refs[rawRef.k] = newVal;
@@ -3630,7 +3657,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
3630
3657
  setupState[ref] = value;
3631
3658
  }
3632
3659
  } else if (_isRef) {
3633
- {
3660
+ if (canSetRef(ref, rawRef.k)) {
3634
3661
  ref.value = value;
3635
3662
  }
3636
3663
  if (rawRef.k) refs[rawRef.k] = value;
@@ -6014,7 +6041,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
6014
6041
  return vm;
6015
6042
  }
6016
6043
  }
6017
- Vue.version = `2.6.14-compat:${"3.5.27"}`;
6044
+ Vue.version = `2.6.14-compat:${"3.5.28"}`;
6018
6045
  Vue.config = singletonApp.config;
6019
6046
  Vue.use = (plugin, ...options) => {
6020
6047
  if (plugin && isFunction(plugin.install)) {
@@ -6869,7 +6896,7 @@ function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
6869
6896
  const dynamicProps = nextVNode.dynamicProps;
6870
6897
  for (let i = 0; i < dynamicProps.length; i++) {
6871
6898
  const key = dynamicProps[i];
6872
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {
6899
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emits, key)) {
6873
6900
  return true;
6874
6901
  }
6875
6902
  }
@@ -6900,12 +6927,20 @@ function hasPropsChanged(prevProps, nextProps, emitsOptions) {
6900
6927
  }
6901
6928
  for (let i = 0; i < nextKeys.length; i++) {
6902
6929
  const key = nextKeys[i];
6903
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {
6930
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) {
6904
6931
  return true;
6905
6932
  }
6906
6933
  }
6907
6934
  return false;
6908
6935
  }
6936
+ function hasPropValueChanged(nextProps, prevProps, key) {
6937
+ const nextProp = nextProps[key];
6938
+ const prevProp = prevProps[key];
6939
+ if (key === "style" && isObject(nextProp) && isObject(prevProp)) {
6940
+ return !looseEqual(nextProp, prevProp);
6941
+ }
6942
+ return nextProp !== prevProp;
6943
+ }
6909
6944
  function updateHOCHostEl({ vnode, parent }, el) {
6910
6945
  while (parent) {
6911
6946
  const root = parent.subTree;
@@ -7483,9 +7518,7 @@ function baseCreateRenderer(options, createHydrationFns) {
7483
7518
  } else {
7484
7519
  const el = n2.el = n1.el;
7485
7520
  if (n2.children !== n1.children) {
7486
- {
7487
- hostSetText(el, n2.children);
7488
- }
7521
+ hostSetText(el, n2.children);
7489
7522
  }
7490
7523
  }
7491
7524
  };
@@ -7546,7 +7579,7 @@ function baseCreateRenderer(options, createHydrationFns) {
7546
7579
  optimized
7547
7580
  );
7548
7581
  } else {
7549
- const customElement = !!(n1.el && n1.el._isVueCE) ? n1.el : null;
7582
+ const customElement = n1.el && n1.el._isVueCE ? n1.el : null;
7550
7583
  try {
7551
7584
  if (customElement) {
7552
7585
  customElement._beginPatch();
@@ -7981,8 +8014,7 @@ function baseCreateRenderer(options, createHydrationFns) {
7981
8014
  hydrateSubTree();
7982
8015
  }
7983
8016
  } else {
7984
- if (root.ce && // @ts-expect-error _def is private
7985
- root.ce._def.shadowRoot !== false) {
8017
+ if (root.ce && root.ce._hasShadowRoot()) {
7986
8018
  root.ce._injectChildStyle(type);
7987
8019
  }
7988
8020
  const subTree = instance.subTree = renderComponentRoot(instance);
@@ -8034,9 +8066,9 @@ function baseCreateRenderer(options, createHydrationFns) {
8034
8066
  updateComponentPreRender(instance, next, optimized);
8035
8067
  }
8036
8068
  nonHydratedAsyncRoot.asyncDep.then(() => {
8037
- if (!instance.isUnmounted) {
8038
- componentUpdateFn();
8039
- }
8069
+ queuePostRenderEffect(() => {
8070
+ if (!instance.isUnmounted) update();
8071
+ }, parentSuspense);
8040
8072
  });
8041
8073
  return;
8042
8074
  }
@@ -8705,12 +8737,10 @@ function traverseStaticChildren(n1, n2, shallow = false) {
8705
8737
  traverseStaticChildren(c1, c2);
8706
8738
  }
8707
8739
  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);
8740
+ if (c2.patchFlag === -1) {
8741
+ c2 = ch2[i] = cloneIfMounted(c2);
8713
8742
  }
8743
+ c2.el = c1.el;
8714
8744
  }
8715
8745
  if (c2.type === Comment && !c2.el) {
8716
8746
  c2.el = c1.el;
@@ -10123,7 +10153,7 @@ function isMemoSame(cached, memo) {
10123
10153
  return true;
10124
10154
  }
10125
10155
 
10126
- const version = "3.5.27";
10156
+ const version = "3.5.28";
10127
10157
  const warn$1 = NOOP;
10128
10158
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
10129
10159
  const devtools = void 0;
@@ -11345,6 +11375,12 @@ class VueElement extends BaseClass {
11345
11375
  this._update();
11346
11376
  }
11347
11377
  }
11378
+ /**
11379
+ * @internal
11380
+ */
11381
+ _hasShadowRoot() {
11382
+ return this._def.shadowRoot !== false;
11383
+ }
11348
11384
  /**
11349
11385
  * @internal
11350
11386
  */
@@ -11465,10 +11501,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
11465
11501
  instance
11466
11502
  )
11467
11503
  );
11468
- positionMap.set(child, {
11469
- left: child.el.offsetLeft,
11470
- top: child.el.offsetTop
11471
- });
11504
+ positionMap.set(child, getPosition(child.el));
11472
11505
  }
11473
11506
  }
11474
11507
  }
@@ -11497,10 +11530,7 @@ function callPendingCbs(c) {
11497
11530
  }
11498
11531
  }
11499
11532
  function recordPosition(c) {
11500
- newPositionMap.set(c, {
11501
- left: c.el.offsetLeft,
11502
- top: c.el.offsetTop
11503
- });
11533
+ newPositionMap.set(c, getPosition(c.el));
11504
11534
  }
11505
11535
  function applyTranslation(c) {
11506
11536
  const oldPos = positionMap.get(c);
@@ -11508,12 +11538,29 @@ function applyTranslation(c) {
11508
11538
  const dx = oldPos.left - newPos.left;
11509
11539
  const dy = oldPos.top - newPos.top;
11510
11540
  if (dx || dy) {
11511
- const s = c.el.style;
11512
- s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;
11541
+ const el = c.el;
11542
+ const s = el.style;
11543
+ const rect = el.getBoundingClientRect();
11544
+ let scaleX = 1;
11545
+ let scaleY = 1;
11546
+ if (el.offsetWidth) scaleX = rect.width / el.offsetWidth;
11547
+ if (el.offsetHeight) scaleY = rect.height / el.offsetHeight;
11548
+ if (!Number.isFinite(scaleX) || scaleX === 0) scaleX = 1;
11549
+ if (!Number.isFinite(scaleY) || scaleY === 0) scaleY = 1;
11550
+ if (Math.abs(scaleX - 1) < 0.01) scaleX = 1;
11551
+ if (Math.abs(scaleY - 1) < 0.01) scaleY = 1;
11552
+ s.transform = s.webkitTransform = `translate(${dx / scaleX}px,${dy / scaleY}px)`;
11513
11553
  s.transitionDuration = "0s";
11514
11554
  return c;
11515
11555
  }
11516
11556
  }
11557
+ function getPosition(el) {
11558
+ const rect = el.getBoundingClientRect();
11559
+ return {
11560
+ left: rect.left,
11561
+ top: rect.top
11562
+ };
11563
+ }
11517
11564
  function hasCSSTransform(el, root, moveClass) {
11518
11565
  const clone = el.cloneNode();
11519
11566
  const _vtc = el[vtcKey];
@@ -11821,6 +11868,7 @@ const modifierGuards = {
11821
11868
  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))
11822
11869
  };
11823
11870
  const withModifiers = (fn, modifiers) => {
11871
+ if (!fn) return fn;
11824
11872
  const cache = fn._withMods || (fn._withMods = {});
11825
11873
  const cacheKey = modifiers.join(".");
11826
11874
  return cache[cacheKey] || (cache[cacheKey] = ((event, ...args) => {