@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
  **/
@@ -334,6 +334,7 @@ function warn$2(msg, ...args) {
334
334
 
335
335
  let activeEffectScope;
336
336
  class EffectScope {
337
+ // TODO isolatedDeclarations "__v_skip"
337
338
  constructor(detached = false) {
338
339
  this.detached = detached;
339
340
  /**
@@ -353,6 +354,7 @@ class EffectScope {
353
354
  */
354
355
  this.cleanups = [];
355
356
  this._isPaused = false;
357
+ this.__v_skip = true;
356
358
  this.parent = activeEffectScope;
357
359
  if (!detached && activeEffectScope) {
358
360
  this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(
@@ -3924,7 +3926,22 @@ function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }
3924
3926
  function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {
3925
3927
  o: { nextSibling, parentNode, querySelector, insert, createText }
3926
3928
  }, hydrateChildren) {
3927
- function hydrateDisabledTeleport(node2, vnode2, targetStart, targetAnchor) {
3929
+ function hydrateAnchor(target2, targetNode) {
3930
+ let targetAnchor = targetNode;
3931
+ while (targetAnchor) {
3932
+ if (targetAnchor && targetAnchor.nodeType === 8) {
3933
+ if (targetAnchor.data === "teleport start anchor") {
3934
+ vnode.targetStart = targetAnchor;
3935
+ } else if (targetAnchor.data === "teleport anchor") {
3936
+ vnode.targetAnchor = targetAnchor;
3937
+ target2._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
3938
+ break;
3939
+ }
3940
+ }
3941
+ targetAnchor = nextSibling(targetAnchor);
3942
+ }
3943
+ }
3944
+ function hydrateDisabledTeleport(node2, vnode2) {
3928
3945
  vnode2.anchor = hydrateChildren(
3929
3946
  nextSibling(node2),
3930
3947
  vnode2,
@@ -3934,8 +3951,6 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
3934
3951
  slotScopeIds,
3935
3952
  optimized
3936
3953
  );
3937
- vnode2.targetStart = targetStart;
3938
- vnode2.targetAnchor = targetAnchor;
3939
3954
  }
3940
3955
  const target = vnode.target = resolveTarget(
3941
3956
  vnode.props,
@@ -3946,27 +3961,22 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
3946
3961
  const targetNode = target._lpa || target.firstChild;
3947
3962
  if (vnode.shapeFlag & 16) {
3948
3963
  if (disabled) {
3949
- hydrateDisabledTeleport(
3950
- node,
3951
- vnode,
3952
- targetNode,
3953
- targetNode && nextSibling(targetNode)
3954
- );
3964
+ hydrateDisabledTeleport(node, vnode);
3965
+ hydrateAnchor(target, targetNode);
3966
+ if (!vnode.targetAnchor) {
3967
+ prepareAnchor(
3968
+ target,
3969
+ vnode,
3970
+ createText,
3971
+ insert,
3972
+ // if target is the same as the main view, insert anchors before current node
3973
+ // to avoid hydrating mismatch
3974
+ parentNode(node) === target ? node : null
3975
+ );
3976
+ }
3955
3977
  } else {
3956
3978
  vnode.anchor = nextSibling(node);
3957
- let targetAnchor = targetNode;
3958
- while (targetAnchor) {
3959
- if (targetAnchor && targetAnchor.nodeType === 8) {
3960
- if (targetAnchor.data === "teleport start anchor") {
3961
- vnode.targetStart = targetAnchor;
3962
- } else if (targetAnchor.data === "teleport anchor") {
3963
- vnode.targetAnchor = targetAnchor;
3964
- target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
3965
- break;
3966
- }
3967
- }
3968
- targetAnchor = nextSibling(targetAnchor);
3969
- }
3979
+ hydrateAnchor(target, targetNode);
3970
3980
  if (!vnode.targetAnchor) {
3971
3981
  prepareAnchor(target, vnode, createText, insert);
3972
3982
  }
@@ -3984,7 +3994,9 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
3984
3994
  updateCssVars(vnode, disabled);
3985
3995
  } else if (disabled) {
3986
3996
  if (vnode.shapeFlag & 16) {
3987
- hydrateDisabledTeleport(node, vnode, node, nextSibling(node));
3997
+ hydrateDisabledTeleport(node, vnode);
3998
+ vnode.targetStart = node;
3999
+ vnode.targetAnchor = nextSibling(node);
3988
4000
  }
3989
4001
  }
3990
4002
  return vnode.anchor && nextSibling(vnode.anchor);
@@ -4008,13 +4020,13 @@ function updateCssVars(vnode, isDisabled) {
4008
4020
  ctx.ut();
4009
4021
  }
4010
4022
  }
4011
- function prepareAnchor(target, vnode, createText, insert) {
4023
+ function prepareAnchor(target, vnode, createText, insert, anchor = null) {
4012
4024
  const targetStart = vnode.targetStart = createText("");
4013
4025
  const targetAnchor = vnode.targetAnchor = createText("");
4014
4026
  targetStart[TeleportEndKey] = targetAnchor;
4015
4027
  if (target) {
4016
- insert(targetStart, target);
4017
- insert(targetAnchor, target);
4028
+ insert(targetStart, target, anchor);
4029
+ insert(targetAnchor, target, anchor);
4018
4030
  }
4019
4031
  return targetAnchor;
4020
4032
  }
@@ -4240,6 +4252,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4240
4252
  callHook(hook, [el]);
4241
4253
  },
4242
4254
  enter(el) {
4255
+ if (leavingVNodesCache[key] === vnode) return;
4243
4256
  let hook = onEnter;
4244
4257
  let afterHook = onAfterEnter;
4245
4258
  let cancelHook = onEnterCancelled;
@@ -4253,7 +4266,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4253
4266
  }
4254
4267
  }
4255
4268
  let called = false;
4256
- const done = el[enterCbKey$1] = (cancelled) => {
4269
+ el[enterCbKey$1] = (cancelled) => {
4257
4270
  if (called) return;
4258
4271
  called = true;
4259
4272
  if (cancelled) {
@@ -4266,6 +4279,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4266
4279
  }
4267
4280
  el[enterCbKey$1] = void 0;
4268
4281
  };
4282
+ const done = el[enterCbKey$1].bind(null, false);
4269
4283
  if (hook) {
4270
4284
  callAsyncHook(hook, [el, done]);
4271
4285
  } else {
@@ -4285,7 +4299,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4285
4299
  }
4286
4300
  callHook(onBeforeLeave, [el]);
4287
4301
  let called = false;
4288
- const done = el[leaveCbKey] = (cancelled) => {
4302
+ el[leaveCbKey] = (cancelled) => {
4289
4303
  if (called) return;
4290
4304
  called = true;
4291
4305
  remove();
@@ -4299,6 +4313,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4299
4313
  delete leavingVNodesCache[key2];
4300
4314
  }
4301
4315
  };
4316
+ const done = el[leaveCbKey].bind(null, false);
4302
4317
  leavingVNodesCache[key2] = vnode;
4303
4318
  if (onLeave) {
4304
4319
  callAsyncHook(onLeave, [el, done]);
@@ -4411,8 +4426,7 @@ function useTemplateRef(key) {
4411
4426
  const r = shallowRef(null);
4412
4427
  if (i) {
4413
4428
  const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs;
4414
- let desc;
4415
- if (!!(process.env.NODE_ENV !== "production") && (desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) {
4429
+ if (!!(process.env.NODE_ENV !== "production") && isTemplateRefKey(refs, key)) {
4416
4430
  warn$1(`useTemplateRef('${key}') already exists.`);
4417
4431
  } else {
4418
4432
  Object.defineProperty(refs, key, {
@@ -4432,6 +4446,10 @@ function useTemplateRef(key) {
4432
4446
  }
4433
4447
  return ret;
4434
4448
  }
4449
+ function isTemplateRefKey(refs, key) {
4450
+ let desc;
4451
+ return !!((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable);
4452
+ }
4435
4453
 
4436
4454
  const pendingSetRefMap = /* @__PURE__ */ new WeakMap();
4437
4455
  function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
@@ -4477,10 +4495,19 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4477
4495
  return false;
4478
4496
  }
4479
4497
  }
4498
+ if (isTemplateRefKey(refs, key)) {
4499
+ return false;
4500
+ }
4480
4501
  return hasOwn(rawSetupState, key);
4481
4502
  };
4482
- const canSetRef = (ref2) => {
4483
- return !!!(process.env.NODE_ENV !== "production") || !knownTemplateRefs.has(ref2);
4503
+ const canSetRef = (ref2, key) => {
4504
+ if (!!(process.env.NODE_ENV !== "production") && knownTemplateRefs.has(ref2)) {
4505
+ return false;
4506
+ }
4507
+ if (key && isTemplateRefKey(refs, key)) {
4508
+ return false;
4509
+ }
4510
+ return true;
4484
4511
  };
4485
4512
  if (oldRef != null && oldRef !== ref) {
4486
4513
  invalidatePendingSetRef(oldRawRef);
@@ -4490,10 +4517,10 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4490
4517
  setupState[oldRef] = null;
4491
4518
  }
4492
4519
  } else if (isRef(oldRef)) {
4493
- if (canSetRef(oldRef)) {
4520
+ const oldRawRefAtom = oldRawRef;
4521
+ if (canSetRef(oldRef, oldRawRefAtom.k)) {
4494
4522
  oldRef.value = null;
4495
4523
  }
4496
- const oldRawRefAtom = oldRawRef;
4497
4524
  if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;
4498
4525
  }
4499
4526
  }
@@ -4517,7 +4544,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4517
4544
  }
4518
4545
  } else {
4519
4546
  const newVal = [refValue];
4520
- if (canSetRef(ref)) {
4547
+ if (canSetRef(ref, rawRef.k)) {
4521
4548
  ref.value = newVal;
4522
4549
  }
4523
4550
  if (rawRef.k) refs[rawRef.k] = newVal;
@@ -4532,7 +4559,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4532
4559
  setupState[ref] = value;
4533
4560
  }
4534
4561
  } else if (_isRef) {
4535
- if (canSetRef(ref)) {
4562
+ if (canSetRef(ref, rawRef.k)) {
4536
4563
  ref.value = value;
4537
4564
  }
4538
4565
  if (rawRef.k) refs[rawRef.k] = value;
@@ -6879,13 +6906,24 @@ function withAsyncContext(getAwaitable) {
6879
6906
  }
6880
6907
  let awaitable = getAwaitable();
6881
6908
  unsetCurrentInstance();
6909
+ const cleanup = () => {
6910
+ if (getCurrentInstance() !== ctx) ctx.scope.off();
6911
+ unsetCurrentInstance();
6912
+ };
6882
6913
  if (isPromise(awaitable)) {
6883
6914
  awaitable = awaitable.catch((e) => {
6884
6915
  setCurrentInstance(ctx);
6916
+ Promise.resolve().then(() => Promise.resolve().then(cleanup));
6885
6917
  throw e;
6886
6918
  });
6887
6919
  }
6888
- return [awaitable, () => setCurrentInstance(ctx)];
6920
+ return [
6921
+ awaitable,
6922
+ () => {
6923
+ setCurrentInstance(ctx);
6924
+ Promise.resolve().then(cleanup);
6925
+ }
6926
+ ];
6889
6927
  }
6890
6928
 
6891
6929
  function createDuplicateChecker() {
@@ -7408,7 +7446,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
7408
7446
  return vm;
7409
7447
  }
7410
7448
  }
7411
- Vue.version = `2.6.14-compat:${"3.5.27"}`;
7449
+ Vue.version = `2.6.14-compat:${"3.5.29"}`;
7412
7450
  Vue.config = singletonApp.config;
7413
7451
  Vue.use = (plugin, ...options) => {
7414
7452
  if (plugin && isFunction(plugin.install)) {
@@ -8524,7 +8562,7 @@ function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
8524
8562
  const dynamicProps = nextVNode.dynamicProps;
8525
8563
  for (let i = 0; i < dynamicProps.length; i++) {
8526
8564
  const key = dynamicProps[i];
8527
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {
8565
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emits, key)) {
8528
8566
  return true;
8529
8567
  }
8530
8568
  }
@@ -8555,12 +8593,20 @@ function hasPropsChanged(prevProps, nextProps, emitsOptions) {
8555
8593
  }
8556
8594
  for (let i = 0; i < nextKeys.length; i++) {
8557
8595
  const key = nextKeys[i];
8558
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {
8596
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) {
8559
8597
  return true;
8560
8598
  }
8561
8599
  }
8562
8600
  return false;
8563
8601
  }
8602
+ function hasPropValueChanged(nextProps, prevProps, key) {
8603
+ const nextProp = nextProps[key];
8604
+ const prevProp = prevProps[key];
8605
+ if (key === "style" && isObject(nextProp) && isObject(prevProp)) {
8606
+ return !looseEqual(nextProp, prevProp);
8607
+ }
8608
+ return nextProp !== prevProp;
8609
+ }
8564
8610
  function updateHOCHostEl({ vnode, parent }, el) {
8565
8611
  while (parent) {
8566
8612
  const root = parent.subTree;
@@ -9363,15 +9409,7 @@ function baseCreateRenderer(options, createHydrationFns) {
9363
9409
  } else {
9364
9410
  const el = n2.el = n1.el;
9365
9411
  if (n2.children !== n1.children) {
9366
- if (!!(process.env.NODE_ENV !== "production") && isHmrUpdating && n2.patchFlag === -1 && "__elIndex" in n1) {
9367
- const childNodes = container.childNodes;
9368
- const newChild = hostCreateText(n2.children);
9369
- const oldChild = childNodes[n2.__elIndex = n1.__elIndex];
9370
- hostInsert(newChild, container, oldChild);
9371
- hostRemove(oldChild);
9372
- } else {
9373
- hostSetText(el, n2.children);
9374
- }
9412
+ hostSetText(el, n2.children);
9375
9413
  }
9376
9414
  }
9377
9415
  };
@@ -9447,7 +9485,7 @@ function baseCreateRenderer(options, createHydrationFns) {
9447
9485
  optimized
9448
9486
  );
9449
9487
  } else {
9450
- const customElement = !!(n1.el && n1.el._isVueCE) ? n1.el : null;
9488
+ const customElement = n1.el && n1.el._isVueCE ? n1.el : null;
9451
9489
  try {
9452
9490
  if (customElement) {
9453
9491
  customElement._beginPatch();
@@ -9944,8 +9982,7 @@ function baseCreateRenderer(options, createHydrationFns) {
9944
9982
  hydrateSubTree();
9945
9983
  }
9946
9984
  } else {
9947
- if (root.ce && // @ts-expect-error _def is private
9948
- root.ce._def.shadowRoot !== false) {
9985
+ if (root.ce && root.ce._hasShadowRoot()) {
9949
9986
  root.ce._injectChildStyle(type);
9950
9987
  }
9951
9988
  if (!!(process.env.NODE_ENV !== "production")) {
@@ -10012,9 +10049,9 @@ function baseCreateRenderer(options, createHydrationFns) {
10012
10049
  updateComponentPreRender(instance, next, optimized);
10013
10050
  }
10014
10051
  nonHydratedAsyncRoot.asyncDep.then(() => {
10015
- if (!instance.isUnmounted) {
10016
- componentUpdateFn();
10017
- }
10052
+ queuePostRenderEffect(() => {
10053
+ if (!instance.isUnmounted) update();
10054
+ }, parentSuspense);
10018
10055
  });
10019
10056
  return;
10020
10057
  }
@@ -10729,12 +10766,10 @@ function traverseStaticChildren(n1, n2, shallow = false) {
10729
10766
  traverseStaticChildren(c1, c2);
10730
10767
  }
10731
10768
  if (c2.type === Text) {
10732
- if (c2.patchFlag !== -1) {
10733
- c2.el = c1.el;
10734
- } else {
10735
- c2.__elIndex = i + // take fragment start anchor into account
10736
- (n1.type === Fragment ? 1 : 0);
10769
+ if (c2.patchFlag === -1) {
10770
+ c2 = ch2[i] = cloneIfMounted(c2);
10737
10771
  }
10772
+ c2.el = c1.el;
10738
10773
  }
10739
10774
  if (c2.type === Comment && !c2.el) {
10740
10775
  c2.el = c1.el;
@@ -12553,7 +12588,7 @@ function isMemoSame(cached, memo) {
12553
12588
  return true;
12554
12589
  }
12555
12590
 
12556
- const version = "3.5.27";
12591
+ const version = "3.5.29";
12557
12592
  const warn = !!(process.env.NODE_ENV !== "production") ? warn$1 : NOOP;
12558
12593
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
12559
12594
  const devtools = !!(process.env.NODE_ENV !== "production") || true ? devtools$1 : void 0;
@@ -13915,6 +13950,12 @@ class VueElement extends BaseClass {
13915
13950
  this._update();
13916
13951
  }
13917
13952
  }
13953
+ /**
13954
+ * @internal
13955
+ */
13956
+ _hasShadowRoot() {
13957
+ return this._def.shadowRoot !== false;
13958
+ }
13918
13959
  /**
13919
13960
  * @internal
13920
13961
  */
@@ -14058,10 +14099,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
14058
14099
  instance
14059
14100
  )
14060
14101
  );
14061
- positionMap.set(child, {
14062
- left: child.el.offsetLeft,
14063
- top: child.el.offsetTop
14064
- });
14102
+ positionMap.set(child, getPosition(child.el));
14065
14103
  }
14066
14104
  }
14067
14105
  }
@@ -14092,10 +14130,7 @@ function callPendingCbs(c) {
14092
14130
  }
14093
14131
  }
14094
14132
  function recordPosition(c) {
14095
- newPositionMap.set(c, {
14096
- left: c.el.offsetLeft,
14097
- top: c.el.offsetTop
14098
- });
14133
+ newPositionMap.set(c, getPosition(c.el));
14099
14134
  }
14100
14135
  function applyTranslation(c) {
14101
14136
  const oldPos = positionMap.get(c);
@@ -14103,12 +14138,29 @@ function applyTranslation(c) {
14103
14138
  const dx = oldPos.left - newPos.left;
14104
14139
  const dy = oldPos.top - newPos.top;
14105
14140
  if (dx || dy) {
14106
- const s = c.el.style;
14107
- s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;
14141
+ const el = c.el;
14142
+ const s = el.style;
14143
+ const rect = el.getBoundingClientRect();
14144
+ let scaleX = 1;
14145
+ let scaleY = 1;
14146
+ if (el.offsetWidth) scaleX = rect.width / el.offsetWidth;
14147
+ if (el.offsetHeight) scaleY = rect.height / el.offsetHeight;
14148
+ if (!Number.isFinite(scaleX) || scaleX === 0) scaleX = 1;
14149
+ if (!Number.isFinite(scaleY) || scaleY === 0) scaleY = 1;
14150
+ if (Math.abs(scaleX - 1) < 0.01) scaleX = 1;
14151
+ if (Math.abs(scaleY - 1) < 0.01) scaleY = 1;
14152
+ s.transform = s.webkitTransform = `translate(${dx / scaleX}px,${dy / scaleY}px)`;
14108
14153
  s.transitionDuration = "0s";
14109
14154
  return c;
14110
14155
  }
14111
14156
  }
14157
+ function getPosition(el) {
14158
+ const rect = el.getBoundingClientRect();
14159
+ return {
14160
+ left: rect.left,
14161
+ top: rect.top
14162
+ };
14163
+ }
14112
14164
  function hasCSSTransform(el, root, moveClass) {
14113
14165
  const clone = el.cloneNode();
14114
14166
  const _vtc = el[vtcKey];
@@ -14419,6 +14471,7 @@ const modifierGuards = {
14419
14471
  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))
14420
14472
  };
14421
14473
  const withModifiers = (fn, modifiers) => {
14474
+ if (!fn) return fn;
14422
14475
  const cache = fn._withMods || (fn._withMods = {});
14423
14476
  const cacheKey = modifiers.join(".");
14424
14477
  return cache[cacheKey] || (cache[cacheKey] = ((event, ...args) => {