@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
  **/
@@ -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(
@@ -3979,7 +3981,22 @@ function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }
3979
3981
  function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {
3980
3982
  o: { nextSibling, parentNode, querySelector, insert, createText }
3981
3983
  }, hydrateChildren) {
3982
- function hydrateDisabledTeleport(node2, vnode2, targetStart, targetAnchor) {
3984
+ function hydrateAnchor(target2, targetNode) {
3985
+ let targetAnchor = targetNode;
3986
+ while (targetAnchor) {
3987
+ if (targetAnchor && targetAnchor.nodeType === 8) {
3988
+ if (targetAnchor.data === "teleport start anchor") {
3989
+ vnode.targetStart = targetAnchor;
3990
+ } else if (targetAnchor.data === "teleport anchor") {
3991
+ vnode.targetAnchor = targetAnchor;
3992
+ target2._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
3993
+ break;
3994
+ }
3995
+ }
3996
+ targetAnchor = nextSibling(targetAnchor);
3997
+ }
3998
+ }
3999
+ function hydrateDisabledTeleport(node2, vnode2) {
3983
4000
  vnode2.anchor = hydrateChildren(
3984
4001
  nextSibling(node2),
3985
4002
  vnode2,
@@ -3989,8 +4006,6 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
3989
4006
  slotScopeIds,
3990
4007
  optimized
3991
4008
  );
3992
- vnode2.targetStart = targetStart;
3993
- vnode2.targetAnchor = targetAnchor;
3994
4009
  }
3995
4010
  const target = vnode.target = resolveTarget(
3996
4011
  vnode.props,
@@ -4001,27 +4016,22 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
4001
4016
  const targetNode = target._lpa || target.firstChild;
4002
4017
  if (vnode.shapeFlag & 16) {
4003
4018
  if (disabled) {
4004
- hydrateDisabledTeleport(
4005
- node,
4006
- vnode,
4007
- targetNode,
4008
- targetNode && nextSibling(targetNode)
4009
- );
4019
+ hydrateDisabledTeleport(node, vnode);
4020
+ hydrateAnchor(target, targetNode);
4021
+ if (!vnode.targetAnchor) {
4022
+ prepareAnchor(
4023
+ target,
4024
+ vnode,
4025
+ createText,
4026
+ insert,
4027
+ // if target is the same as the main view, insert anchors before current node
4028
+ // to avoid hydrating mismatch
4029
+ parentNode(node) === target ? node : null
4030
+ );
4031
+ }
4010
4032
  } else {
4011
4033
  vnode.anchor = nextSibling(node);
4012
- let targetAnchor = targetNode;
4013
- while (targetAnchor) {
4014
- if (targetAnchor && targetAnchor.nodeType === 8) {
4015
- if (targetAnchor.data === "teleport start anchor") {
4016
- vnode.targetStart = targetAnchor;
4017
- } else if (targetAnchor.data === "teleport anchor") {
4018
- vnode.targetAnchor = targetAnchor;
4019
- target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
4020
- break;
4021
- }
4022
- }
4023
- targetAnchor = nextSibling(targetAnchor);
4024
- }
4034
+ hydrateAnchor(target, targetNode);
4025
4035
  if (!vnode.targetAnchor) {
4026
4036
  prepareAnchor(target, vnode, createText, insert);
4027
4037
  }
@@ -4039,7 +4049,9 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
4039
4049
  updateCssVars(vnode, disabled);
4040
4050
  } else if (disabled) {
4041
4051
  if (vnode.shapeFlag & 16) {
4042
- hydrateDisabledTeleport(node, vnode, node, nextSibling(node));
4052
+ hydrateDisabledTeleport(node, vnode);
4053
+ vnode.targetStart = node;
4054
+ vnode.targetAnchor = nextSibling(node);
4043
4055
  }
4044
4056
  }
4045
4057
  return vnode.anchor && nextSibling(vnode.anchor);
@@ -4063,13 +4075,13 @@ function updateCssVars(vnode, isDisabled) {
4063
4075
  ctx.ut();
4064
4076
  }
4065
4077
  }
4066
- function prepareAnchor(target, vnode, createText, insert) {
4078
+ function prepareAnchor(target, vnode, createText, insert, anchor = null) {
4067
4079
  const targetStart = vnode.targetStart = createText("");
4068
4080
  const targetAnchor = vnode.targetAnchor = createText("");
4069
4081
  targetStart[TeleportEndKey] = targetAnchor;
4070
4082
  if (target) {
4071
- insert(targetStart, target);
4072
- insert(targetAnchor, target);
4083
+ insert(targetStart, target, anchor);
4084
+ insert(targetAnchor, target, anchor);
4073
4085
  }
4074
4086
  return targetAnchor;
4075
4087
  }
@@ -4294,6 +4306,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4294
4306
  callHook(hook, [el]);
4295
4307
  },
4296
4308
  enter(el) {
4309
+ if (leavingVNodesCache[key] === vnode) return;
4297
4310
  let hook = onEnter;
4298
4311
  let afterHook = onAfterEnter;
4299
4312
  let cancelHook = onEnterCancelled;
@@ -4307,7 +4320,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4307
4320
  }
4308
4321
  }
4309
4322
  let called = false;
4310
- const done = el[enterCbKey$1] = (cancelled) => {
4323
+ el[enterCbKey$1] = (cancelled) => {
4311
4324
  if (called) return;
4312
4325
  called = true;
4313
4326
  if (cancelled) {
@@ -4320,6 +4333,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4320
4333
  }
4321
4334
  el[enterCbKey$1] = void 0;
4322
4335
  };
4336
+ const done = el[enterCbKey$1].bind(null, false);
4323
4337
  if (hook) {
4324
4338
  callAsyncHook(hook, [el, done]);
4325
4339
  } else {
@@ -4339,7 +4353,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4339
4353
  }
4340
4354
  callHook(onBeforeLeave, [el]);
4341
4355
  let called = false;
4342
- const done = el[leaveCbKey] = (cancelled) => {
4356
+ el[leaveCbKey] = (cancelled) => {
4343
4357
  if (called) return;
4344
4358
  called = true;
4345
4359
  remove();
@@ -4353,6 +4367,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4353
4367
  delete leavingVNodesCache[key2];
4354
4368
  }
4355
4369
  };
4370
+ const done = el[leaveCbKey].bind(null, false);
4356
4371
  leavingVNodesCache[key2] = vnode;
4357
4372
  if (onLeave) {
4358
4373
  callAsyncHook(onLeave, [el, done]);
@@ -4465,8 +4480,7 @@ function useTemplateRef(key) {
4465
4480
  const r = shallowRef(null);
4466
4481
  if (i) {
4467
4482
  const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs;
4468
- let desc;
4469
- if ((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) {
4483
+ if (isTemplateRefKey(refs, key)) {
4470
4484
  warn$1(`useTemplateRef('${key}') already exists.`);
4471
4485
  } else {
4472
4486
  Object.defineProperty(refs, key, {
@@ -4486,6 +4500,10 @@ function useTemplateRef(key) {
4486
4500
  }
4487
4501
  return ret;
4488
4502
  }
4503
+ function isTemplateRefKey(refs, key) {
4504
+ let desc;
4505
+ return !!((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable);
4506
+ }
4489
4507
 
4490
4508
  const pendingSetRefMap = /* @__PURE__ */ new WeakMap();
4491
4509
  function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
@@ -4531,10 +4549,19 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4531
4549
  return false;
4532
4550
  }
4533
4551
  }
4552
+ if (isTemplateRefKey(refs, key)) {
4553
+ return false;
4554
+ }
4534
4555
  return hasOwn(rawSetupState, key);
4535
4556
  };
4536
- const canSetRef = (ref2) => {
4537
- return !knownTemplateRefs.has(ref2);
4557
+ const canSetRef = (ref2, key) => {
4558
+ if (knownTemplateRefs.has(ref2)) {
4559
+ return false;
4560
+ }
4561
+ if (key && isTemplateRefKey(refs, key)) {
4562
+ return false;
4563
+ }
4564
+ return true;
4538
4565
  };
4539
4566
  if (oldRef != null && oldRef !== ref) {
4540
4567
  invalidatePendingSetRef(oldRawRef);
@@ -4544,10 +4571,10 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4544
4571
  setupState[oldRef] = null;
4545
4572
  }
4546
4573
  } else if (isRef(oldRef)) {
4547
- if (canSetRef(oldRef)) {
4574
+ const oldRawRefAtom = oldRawRef;
4575
+ if (canSetRef(oldRef, oldRawRefAtom.k)) {
4548
4576
  oldRef.value = null;
4549
4577
  }
4550
- const oldRawRefAtom = oldRawRef;
4551
4578
  if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;
4552
4579
  }
4553
4580
  }
@@ -4571,7 +4598,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4571
4598
  }
4572
4599
  } else {
4573
4600
  const newVal = [refValue];
4574
- if (canSetRef(ref)) {
4601
+ if (canSetRef(ref, rawRef.k)) {
4575
4602
  ref.value = newVal;
4576
4603
  }
4577
4604
  if (rawRef.k) refs[rawRef.k] = newVal;
@@ -4586,7 +4613,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4586
4613
  setupState[ref] = value;
4587
4614
  }
4588
4615
  } else if (_isRef) {
4589
- if (canSetRef(ref)) {
4616
+ if (canSetRef(ref, rawRef.k)) {
4590
4617
  ref.value = value;
4591
4618
  }
4592
4619
  if (rawRef.k) refs[rawRef.k] = value;
@@ -6922,13 +6949,24 @@ function withAsyncContext(getAwaitable) {
6922
6949
  }
6923
6950
  let awaitable = getAwaitable();
6924
6951
  unsetCurrentInstance();
6952
+ const cleanup = () => {
6953
+ if (getCurrentInstance() !== ctx) ctx.scope.off();
6954
+ unsetCurrentInstance();
6955
+ };
6925
6956
  if (isPromise(awaitable)) {
6926
6957
  awaitable = awaitable.catch((e) => {
6927
6958
  setCurrentInstance(ctx);
6959
+ Promise.resolve().then(() => Promise.resolve().then(cleanup));
6928
6960
  throw e;
6929
6961
  });
6930
6962
  }
6931
- return [awaitable, () => setCurrentInstance(ctx)];
6963
+ return [
6964
+ awaitable,
6965
+ () => {
6966
+ setCurrentInstance(ctx);
6967
+ Promise.resolve().then(cleanup);
6968
+ }
6969
+ ];
6932
6970
  }
6933
6971
 
6934
6972
  function createDuplicateChecker() {
@@ -7449,7 +7487,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
7449
7487
  return vm;
7450
7488
  }
7451
7489
  }
7452
- Vue.version = `2.6.14-compat:${"3.5.27"}`;
7490
+ Vue.version = `2.6.14-compat:${"3.5.29"}`;
7453
7491
  Vue.config = singletonApp.config;
7454
7492
  Vue.use = (plugin, ...options) => {
7455
7493
  if (plugin && isFunction(plugin.install)) {
@@ -8563,7 +8601,7 @@ function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
8563
8601
  const dynamicProps = nextVNode.dynamicProps;
8564
8602
  for (let i = 0; i < dynamicProps.length; i++) {
8565
8603
  const key = dynamicProps[i];
8566
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {
8604
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emits, key)) {
8567
8605
  return true;
8568
8606
  }
8569
8607
  }
@@ -8594,12 +8632,20 @@ function hasPropsChanged(prevProps, nextProps, emitsOptions) {
8594
8632
  }
8595
8633
  for (let i = 0; i < nextKeys.length; i++) {
8596
8634
  const key = nextKeys[i];
8597
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {
8635
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) {
8598
8636
  return true;
8599
8637
  }
8600
8638
  }
8601
8639
  return false;
8602
8640
  }
8641
+ function hasPropValueChanged(nextProps, prevProps, key) {
8642
+ const nextProp = nextProps[key];
8643
+ const prevProp = prevProps[key];
8644
+ if (key === "style" && isObject(nextProp) && isObject(prevProp)) {
8645
+ return !looseEqual(nextProp, prevProp);
8646
+ }
8647
+ return nextProp !== prevProp;
8648
+ }
8603
8649
  function updateHOCHostEl({ vnode, parent }, el) {
8604
8650
  while (parent) {
8605
8651
  const root = parent.subTree;
@@ -9375,15 +9421,7 @@ function baseCreateRenderer(options, createHydrationFns) {
9375
9421
  } else {
9376
9422
  const el = n2.el = n1.el;
9377
9423
  if (n2.children !== n1.children) {
9378
- if (isHmrUpdating && n2.patchFlag === -1 && "__elIndex" in n1) {
9379
- const childNodes = container.childNodes;
9380
- const newChild = hostCreateText(n2.children);
9381
- const oldChild = childNodes[n2.__elIndex = n1.__elIndex];
9382
- hostInsert(newChild, container, oldChild);
9383
- hostRemove(oldChild);
9384
- } else {
9385
- hostSetText(el, n2.children);
9386
- }
9424
+ hostSetText(el, n2.children);
9387
9425
  }
9388
9426
  }
9389
9427
  };
@@ -9459,7 +9497,7 @@ function baseCreateRenderer(options, createHydrationFns) {
9459
9497
  optimized
9460
9498
  );
9461
9499
  } else {
9462
- const customElement = !!(n1.el && n1.el._isVueCE) ? n1.el : null;
9500
+ const customElement = n1.el && n1.el._isVueCE ? n1.el : null;
9463
9501
  try {
9464
9502
  if (customElement) {
9465
9503
  customElement._beginPatch();
@@ -9945,8 +9983,7 @@ function baseCreateRenderer(options, createHydrationFns) {
9945
9983
  hydrateSubTree();
9946
9984
  }
9947
9985
  } else {
9948
- if (root.ce && // @ts-expect-error _def is private
9949
- root.ce._def.shadowRoot !== false) {
9986
+ if (root.ce && root.ce._hasShadowRoot()) {
9950
9987
  root.ce._injectChildStyle(type);
9951
9988
  }
9952
9989
  {
@@ -10013,9 +10050,9 @@ function baseCreateRenderer(options, createHydrationFns) {
10013
10050
  updateComponentPreRender(instance, next, optimized);
10014
10051
  }
10015
10052
  nonHydratedAsyncRoot.asyncDep.then(() => {
10016
- if (!instance.isUnmounted) {
10017
- componentUpdateFn();
10018
- }
10053
+ queuePostRenderEffect(() => {
10054
+ if (!instance.isUnmounted) update();
10055
+ }, parentSuspense);
10019
10056
  });
10020
10057
  return;
10021
10058
  }
@@ -10730,12 +10767,10 @@ function traverseStaticChildren(n1, n2, shallow = false) {
10730
10767
  traverseStaticChildren(c1, c2);
10731
10768
  }
10732
10769
  if (c2.type === Text) {
10733
- if (c2.patchFlag !== -1) {
10734
- c2.el = c1.el;
10735
- } else {
10736
- c2.__elIndex = i + // take fragment start anchor into account
10737
- (n1.type === Fragment ? 1 : 0);
10770
+ if (c2.patchFlag === -1) {
10771
+ c2 = ch2[i] = cloneIfMounted(c2);
10738
10772
  }
10773
+ c2.el = c1.el;
10739
10774
  }
10740
10775
  if (c2.type === Comment && !c2.el) {
10741
10776
  c2.el = c1.el;
@@ -12540,7 +12575,7 @@ function isMemoSame(cached, memo) {
12540
12575
  return true;
12541
12576
  }
12542
12577
 
12543
- const version = "3.5.27";
12578
+ const version = "3.5.29";
12544
12579
  const warn = warn$1 ;
12545
12580
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
12546
12581
  const devtools = devtools$1 ;
@@ -13902,6 +13937,12 @@ class VueElement extends BaseClass {
13902
13937
  this._update();
13903
13938
  }
13904
13939
  }
13940
+ /**
13941
+ * @internal
13942
+ */
13943
+ _hasShadowRoot() {
13944
+ return this._def.shadowRoot !== false;
13945
+ }
13905
13946
  /**
13906
13947
  * @internal
13907
13948
  */
@@ -14045,10 +14086,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
14045
14086
  instance
14046
14087
  )
14047
14088
  );
14048
- positionMap.set(child, {
14049
- left: child.el.offsetLeft,
14050
- top: child.el.offsetTop
14051
- });
14089
+ positionMap.set(child, getPosition(child.el));
14052
14090
  }
14053
14091
  }
14054
14092
  }
@@ -14079,10 +14117,7 @@ function callPendingCbs(c) {
14079
14117
  }
14080
14118
  }
14081
14119
  function recordPosition(c) {
14082
- newPositionMap.set(c, {
14083
- left: c.el.offsetLeft,
14084
- top: c.el.offsetTop
14085
- });
14120
+ newPositionMap.set(c, getPosition(c.el));
14086
14121
  }
14087
14122
  function applyTranslation(c) {
14088
14123
  const oldPos = positionMap.get(c);
@@ -14090,12 +14125,29 @@ function applyTranslation(c) {
14090
14125
  const dx = oldPos.left - newPos.left;
14091
14126
  const dy = oldPos.top - newPos.top;
14092
14127
  if (dx || dy) {
14093
- const s = c.el.style;
14094
- s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;
14128
+ const el = c.el;
14129
+ const s = el.style;
14130
+ const rect = el.getBoundingClientRect();
14131
+ let scaleX = 1;
14132
+ let scaleY = 1;
14133
+ if (el.offsetWidth) scaleX = rect.width / el.offsetWidth;
14134
+ if (el.offsetHeight) scaleY = rect.height / el.offsetHeight;
14135
+ if (!Number.isFinite(scaleX) || scaleX === 0) scaleX = 1;
14136
+ if (!Number.isFinite(scaleY) || scaleY === 0) scaleY = 1;
14137
+ if (Math.abs(scaleX - 1) < 0.01) scaleX = 1;
14138
+ if (Math.abs(scaleY - 1) < 0.01) scaleY = 1;
14139
+ s.transform = s.webkitTransform = `translate(${dx / scaleX}px,${dy / scaleY}px)`;
14095
14140
  s.transitionDuration = "0s";
14096
14141
  return c;
14097
14142
  }
14098
14143
  }
14144
+ function getPosition(el) {
14145
+ const rect = el.getBoundingClientRect();
14146
+ return {
14147
+ left: rect.left,
14148
+ top: rect.top
14149
+ };
14150
+ }
14099
14151
  function hasCSSTransform(el, root, moveClass) {
14100
14152
  const clone = el.cloneNode();
14101
14153
  const _vtc = el[vtcKey];
@@ -14406,6 +14458,7 @@ const modifierGuards = {
14406
14458
  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))
14407
14459
  };
14408
14460
  const withModifiers = (fn, modifiers) => {
14461
+ if (!fn) return fn;
14409
14462
  const cache = fn._withMods || (fn._withMods = {});
14410
14463
  const cacheKey = modifiers.join(".");
14411
14464
  return cache[cacheKey] || (cache[cacheKey] = ((event, ...args) => {