@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(
@@ -3906,7 +3908,22 @@ function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }
3906
3908
  function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {
3907
3909
  o: { nextSibling, parentNode, querySelector, insert, createText }
3908
3910
  }, hydrateChildren) {
3909
- function hydrateDisabledTeleport(node2, vnode2, targetStart, targetAnchor) {
3911
+ function hydrateAnchor(target2, targetNode) {
3912
+ let targetAnchor = targetNode;
3913
+ while (targetAnchor) {
3914
+ if (targetAnchor && targetAnchor.nodeType === 8) {
3915
+ if (targetAnchor.data === "teleport start anchor") {
3916
+ vnode.targetStart = targetAnchor;
3917
+ } else if (targetAnchor.data === "teleport anchor") {
3918
+ vnode.targetAnchor = targetAnchor;
3919
+ target2._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
3920
+ break;
3921
+ }
3922
+ }
3923
+ targetAnchor = nextSibling(targetAnchor);
3924
+ }
3925
+ }
3926
+ function hydrateDisabledTeleport(node2, vnode2) {
3910
3927
  vnode2.anchor = hydrateChildren(
3911
3928
  nextSibling(node2),
3912
3929
  vnode2,
@@ -3916,8 +3933,6 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
3916
3933
  slotScopeIds,
3917
3934
  optimized
3918
3935
  );
3919
- vnode2.targetStart = targetStart;
3920
- vnode2.targetAnchor = targetAnchor;
3921
3936
  }
3922
3937
  const target = vnode.target = resolveTarget(
3923
3938
  vnode.props,
@@ -3928,27 +3943,22 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
3928
3943
  const targetNode = target._lpa || target.firstChild;
3929
3944
  if (vnode.shapeFlag & 16) {
3930
3945
  if (disabled) {
3931
- hydrateDisabledTeleport(
3932
- node,
3933
- vnode,
3934
- targetNode,
3935
- targetNode && nextSibling(targetNode)
3936
- );
3946
+ hydrateDisabledTeleport(node, vnode);
3947
+ hydrateAnchor(target, targetNode);
3948
+ if (!vnode.targetAnchor) {
3949
+ prepareAnchor(
3950
+ target,
3951
+ vnode,
3952
+ createText,
3953
+ insert,
3954
+ // if target is the same as the main view, insert anchors before current node
3955
+ // to avoid hydrating mismatch
3956
+ parentNode(node) === target ? node : null
3957
+ );
3958
+ }
3937
3959
  } else {
3938
3960
  vnode.anchor = nextSibling(node);
3939
- let targetAnchor = targetNode;
3940
- while (targetAnchor) {
3941
- if (targetAnchor && targetAnchor.nodeType === 8) {
3942
- if (targetAnchor.data === "teleport start anchor") {
3943
- vnode.targetStart = targetAnchor;
3944
- } else if (targetAnchor.data === "teleport anchor") {
3945
- vnode.targetAnchor = targetAnchor;
3946
- target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
3947
- break;
3948
- }
3949
- }
3950
- targetAnchor = nextSibling(targetAnchor);
3951
- }
3961
+ hydrateAnchor(target, targetNode);
3952
3962
  if (!vnode.targetAnchor) {
3953
3963
  prepareAnchor(target, vnode, createText, insert);
3954
3964
  }
@@ -3966,7 +3976,9 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
3966
3976
  updateCssVars(vnode, disabled);
3967
3977
  } else if (disabled) {
3968
3978
  if (vnode.shapeFlag & 16) {
3969
- hydrateDisabledTeleport(node, vnode, node, nextSibling(node));
3979
+ hydrateDisabledTeleport(node, vnode);
3980
+ vnode.targetStart = node;
3981
+ vnode.targetAnchor = nextSibling(node);
3970
3982
  }
3971
3983
  }
3972
3984
  return vnode.anchor && nextSibling(vnode.anchor);
@@ -3990,13 +4002,13 @@ function updateCssVars(vnode, isDisabled) {
3990
4002
  ctx.ut();
3991
4003
  }
3992
4004
  }
3993
- function prepareAnchor(target, vnode, createText, insert) {
4005
+ function prepareAnchor(target, vnode, createText, insert, anchor = null) {
3994
4006
  const targetStart = vnode.targetStart = createText("");
3995
4007
  const targetAnchor = vnode.targetAnchor = createText("");
3996
4008
  targetStart[TeleportEndKey] = targetAnchor;
3997
4009
  if (target) {
3998
- insert(targetStart, target);
3999
- insert(targetAnchor, target);
4010
+ insert(targetStart, target, anchor);
4011
+ insert(targetAnchor, target, anchor);
4000
4012
  }
4001
4013
  return targetAnchor;
4002
4014
  }
@@ -4221,6 +4233,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4221
4233
  callHook(hook, [el]);
4222
4234
  },
4223
4235
  enter(el) {
4236
+ if (leavingVNodesCache[key] === vnode) return;
4224
4237
  let hook = onEnter;
4225
4238
  let afterHook = onAfterEnter;
4226
4239
  let cancelHook = onEnterCancelled;
@@ -4234,7 +4247,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4234
4247
  }
4235
4248
  }
4236
4249
  let called = false;
4237
- const done = el[enterCbKey$1] = (cancelled) => {
4250
+ el[enterCbKey$1] = (cancelled) => {
4238
4251
  if (called) return;
4239
4252
  called = true;
4240
4253
  if (cancelled) {
@@ -4247,6 +4260,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4247
4260
  }
4248
4261
  el[enterCbKey$1] = void 0;
4249
4262
  };
4263
+ const done = el[enterCbKey$1].bind(null, false);
4250
4264
  if (hook) {
4251
4265
  callAsyncHook(hook, [el, done]);
4252
4266
  } else {
@@ -4266,7 +4280,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4266
4280
  }
4267
4281
  callHook(onBeforeLeave, [el]);
4268
4282
  let called = false;
4269
- const done = el[leaveCbKey] = (cancelled) => {
4283
+ el[leaveCbKey] = (cancelled) => {
4270
4284
  if (called) return;
4271
4285
  called = true;
4272
4286
  remove();
@@ -4280,6 +4294,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4280
4294
  delete leavingVNodesCache[key2];
4281
4295
  }
4282
4296
  };
4297
+ const done = el[leaveCbKey].bind(null, false);
4283
4298
  leavingVNodesCache[key2] = vnode;
4284
4299
  if (onLeave) {
4285
4300
  callAsyncHook(onLeave, [el, done]);
@@ -4392,8 +4407,7 @@ function useTemplateRef(key) {
4392
4407
  const r = shallowRef(null);
4393
4408
  if (i) {
4394
4409
  const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs;
4395
- let desc;
4396
- if ((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) {
4410
+ if (isTemplateRefKey(refs, key)) {
4397
4411
  warn$1(`useTemplateRef('${key}') already exists.`);
4398
4412
  } else {
4399
4413
  Object.defineProperty(refs, key, {
@@ -4413,6 +4427,10 @@ function useTemplateRef(key) {
4413
4427
  }
4414
4428
  return ret;
4415
4429
  }
4430
+ function isTemplateRefKey(refs, key) {
4431
+ let desc;
4432
+ return !!((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable);
4433
+ }
4416
4434
 
4417
4435
  const pendingSetRefMap = /* @__PURE__ */ new WeakMap();
4418
4436
  function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
@@ -4458,10 +4476,19 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4458
4476
  return false;
4459
4477
  }
4460
4478
  }
4479
+ if (isTemplateRefKey(refs, key)) {
4480
+ return false;
4481
+ }
4461
4482
  return hasOwn(rawSetupState, key);
4462
4483
  };
4463
- const canSetRef = (ref2) => {
4464
- return !knownTemplateRefs.has(ref2);
4484
+ const canSetRef = (ref2, key) => {
4485
+ if (knownTemplateRefs.has(ref2)) {
4486
+ return false;
4487
+ }
4488
+ if (key && isTemplateRefKey(refs, key)) {
4489
+ return false;
4490
+ }
4491
+ return true;
4465
4492
  };
4466
4493
  if (oldRef != null && oldRef !== ref) {
4467
4494
  invalidatePendingSetRef(oldRawRef);
@@ -4471,10 +4498,10 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4471
4498
  setupState[oldRef] = null;
4472
4499
  }
4473
4500
  } else if (isRef(oldRef)) {
4474
- if (canSetRef(oldRef)) {
4501
+ const oldRawRefAtom = oldRawRef;
4502
+ if (canSetRef(oldRef, oldRawRefAtom.k)) {
4475
4503
  oldRef.value = null;
4476
4504
  }
4477
- const oldRawRefAtom = oldRawRef;
4478
4505
  if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;
4479
4506
  }
4480
4507
  }
@@ -4498,7 +4525,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4498
4525
  }
4499
4526
  } else {
4500
4527
  const newVal = [refValue];
4501
- if (canSetRef(ref)) {
4528
+ if (canSetRef(ref, rawRef.k)) {
4502
4529
  ref.value = newVal;
4503
4530
  }
4504
4531
  if (rawRef.k) refs[rawRef.k] = newVal;
@@ -4513,7 +4540,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4513
4540
  setupState[ref] = value;
4514
4541
  }
4515
4542
  } else if (_isRef) {
4516
- if (canSetRef(ref)) {
4543
+ if (canSetRef(ref, rawRef.k)) {
4517
4544
  ref.value = value;
4518
4545
  }
4519
4546
  if (rawRef.k) refs[rawRef.k] = value;
@@ -6849,13 +6876,24 @@ function withAsyncContext(getAwaitable) {
6849
6876
  }
6850
6877
  let awaitable = getAwaitable();
6851
6878
  unsetCurrentInstance();
6879
+ const cleanup = () => {
6880
+ if (getCurrentInstance() !== ctx) ctx.scope.off();
6881
+ unsetCurrentInstance();
6882
+ };
6852
6883
  if (isPromise(awaitable)) {
6853
6884
  awaitable = awaitable.catch((e) => {
6854
6885
  setCurrentInstance(ctx);
6886
+ Promise.resolve().then(() => Promise.resolve().then(cleanup));
6855
6887
  throw e;
6856
6888
  });
6857
6889
  }
6858
- return [awaitable, () => setCurrentInstance(ctx)];
6890
+ return [
6891
+ awaitable,
6892
+ () => {
6893
+ setCurrentInstance(ctx);
6894
+ Promise.resolve().then(cleanup);
6895
+ }
6896
+ ];
6859
6897
  }
6860
6898
 
6861
6899
  function createDuplicateChecker() {
@@ -7376,7 +7414,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
7376
7414
  return vm;
7377
7415
  }
7378
7416
  }
7379
- Vue.version = `2.6.14-compat:${"3.5.27"}`;
7417
+ Vue.version = `2.6.14-compat:${"3.5.29"}`;
7380
7418
  Vue.config = singletonApp.config;
7381
7419
  Vue.use = (plugin, ...options) => {
7382
7420
  if (plugin && isFunction(plugin.install)) {
@@ -8490,7 +8528,7 @@ function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
8490
8528
  const dynamicProps = nextVNode.dynamicProps;
8491
8529
  for (let i = 0; i < dynamicProps.length; i++) {
8492
8530
  const key = dynamicProps[i];
8493
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {
8531
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emits, key)) {
8494
8532
  return true;
8495
8533
  }
8496
8534
  }
@@ -8521,12 +8559,20 @@ function hasPropsChanged(prevProps, nextProps, emitsOptions) {
8521
8559
  }
8522
8560
  for (let i = 0; i < nextKeys.length; i++) {
8523
8561
  const key = nextKeys[i];
8524
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {
8562
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) {
8525
8563
  return true;
8526
8564
  }
8527
8565
  }
8528
8566
  return false;
8529
8567
  }
8568
+ function hasPropValueChanged(nextProps, prevProps, key) {
8569
+ const nextProp = nextProps[key];
8570
+ const prevProp = prevProps[key];
8571
+ if (key === "style" && isObject(nextProp) && isObject(prevProp)) {
8572
+ return !looseEqual(nextProp, prevProp);
8573
+ }
8574
+ return nextProp !== prevProp;
8575
+ }
8530
8576
  function updateHOCHostEl({ vnode, parent }, el) {
8531
8577
  while (parent) {
8532
8578
  const root = parent.subTree;
@@ -9302,15 +9348,7 @@ function baseCreateRenderer(options, createHydrationFns) {
9302
9348
  } else {
9303
9349
  const el = n2.el = n1.el;
9304
9350
  if (n2.children !== n1.children) {
9305
- if (isHmrUpdating && n2.patchFlag === -1 && "__elIndex" in n1) {
9306
- const childNodes = container.childNodes;
9307
- const newChild = hostCreateText(n2.children);
9308
- const oldChild = childNodes[n2.__elIndex = n1.__elIndex];
9309
- hostInsert(newChild, container, oldChild);
9310
- hostRemove(oldChild);
9311
- } else {
9312
- hostSetText(el, n2.children);
9313
- }
9351
+ hostSetText(el, n2.children);
9314
9352
  }
9315
9353
  }
9316
9354
  };
@@ -9386,7 +9424,7 @@ function baseCreateRenderer(options, createHydrationFns) {
9386
9424
  optimized
9387
9425
  );
9388
9426
  } else {
9389
- const customElement = !!(n1.el && n1.el._isVueCE) ? n1.el : null;
9427
+ const customElement = n1.el && n1.el._isVueCE ? n1.el : null;
9390
9428
  try {
9391
9429
  if (customElement) {
9392
9430
  customElement._beginPatch();
@@ -9872,8 +9910,7 @@ function baseCreateRenderer(options, createHydrationFns) {
9872
9910
  hydrateSubTree();
9873
9911
  }
9874
9912
  } else {
9875
- if (root.ce && // @ts-expect-error _def is private
9876
- root.ce._def.shadowRoot !== false) {
9913
+ if (root.ce && root.ce._hasShadowRoot()) {
9877
9914
  root.ce._injectChildStyle(type);
9878
9915
  }
9879
9916
  {
@@ -9940,9 +9977,9 @@ function baseCreateRenderer(options, createHydrationFns) {
9940
9977
  updateComponentPreRender(instance, next, optimized);
9941
9978
  }
9942
9979
  nonHydratedAsyncRoot.asyncDep.then(() => {
9943
- if (!instance.isUnmounted) {
9944
- componentUpdateFn();
9945
- }
9980
+ queuePostRenderEffect(() => {
9981
+ if (!instance.isUnmounted) update();
9982
+ }, parentSuspense);
9946
9983
  });
9947
9984
  return;
9948
9985
  }
@@ -10657,12 +10694,10 @@ function traverseStaticChildren(n1, n2, shallow = false) {
10657
10694
  traverseStaticChildren(c1, c2);
10658
10695
  }
10659
10696
  if (c2.type === Text) {
10660
- if (c2.patchFlag !== -1) {
10661
- c2.el = c1.el;
10662
- } else {
10663
- c2.__elIndex = i + // take fragment start anchor into account
10664
- (n1.type === Fragment ? 1 : 0);
10697
+ if (c2.patchFlag === -1) {
10698
+ c2 = ch2[i] = cloneIfMounted(c2);
10665
10699
  }
10700
+ c2.el = c1.el;
10666
10701
  }
10667
10702
  if (c2.type === Comment && !c2.el) {
10668
10703
  c2.el = c1.el;
@@ -12467,7 +12502,7 @@ function isMemoSame(cached, memo) {
12467
12502
  return true;
12468
12503
  }
12469
12504
 
12470
- const version = "3.5.27";
12505
+ const version = "3.5.29";
12471
12506
  const warn = warn$1 ;
12472
12507
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
12473
12508
  const devtools = devtools$1 ;
@@ -13829,6 +13864,12 @@ class VueElement extends BaseClass {
13829
13864
  this._update();
13830
13865
  }
13831
13866
  }
13867
+ /**
13868
+ * @internal
13869
+ */
13870
+ _hasShadowRoot() {
13871
+ return this._def.shadowRoot !== false;
13872
+ }
13832
13873
  /**
13833
13874
  * @internal
13834
13875
  */
@@ -13972,10 +14013,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
13972
14013
  instance
13973
14014
  )
13974
14015
  );
13975
- positionMap.set(child, {
13976
- left: child.el.offsetLeft,
13977
- top: child.el.offsetTop
13978
- });
14016
+ positionMap.set(child, getPosition(child.el));
13979
14017
  }
13980
14018
  }
13981
14019
  }
@@ -14006,10 +14044,7 @@ function callPendingCbs(c) {
14006
14044
  }
14007
14045
  }
14008
14046
  function recordPosition(c) {
14009
- newPositionMap.set(c, {
14010
- left: c.el.offsetLeft,
14011
- top: c.el.offsetTop
14012
- });
14047
+ newPositionMap.set(c, getPosition(c.el));
14013
14048
  }
14014
14049
  function applyTranslation(c) {
14015
14050
  const oldPos = positionMap.get(c);
@@ -14017,12 +14052,29 @@ function applyTranslation(c) {
14017
14052
  const dx = oldPos.left - newPos.left;
14018
14053
  const dy = oldPos.top - newPos.top;
14019
14054
  if (dx || dy) {
14020
- const s = c.el.style;
14021
- s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;
14055
+ const el = c.el;
14056
+ const s = el.style;
14057
+ const rect = el.getBoundingClientRect();
14058
+ let scaleX = 1;
14059
+ let scaleY = 1;
14060
+ if (el.offsetWidth) scaleX = rect.width / el.offsetWidth;
14061
+ if (el.offsetHeight) scaleY = rect.height / el.offsetHeight;
14062
+ if (!Number.isFinite(scaleX) || scaleX === 0) scaleX = 1;
14063
+ if (!Number.isFinite(scaleY) || scaleY === 0) scaleY = 1;
14064
+ if (Math.abs(scaleX - 1) < 0.01) scaleX = 1;
14065
+ if (Math.abs(scaleY - 1) < 0.01) scaleY = 1;
14066
+ s.transform = s.webkitTransform = `translate(${dx / scaleX}px,${dy / scaleY}px)`;
14022
14067
  s.transitionDuration = "0s";
14023
14068
  return c;
14024
14069
  }
14025
14070
  }
14071
+ function getPosition(el) {
14072
+ const rect = el.getBoundingClientRect();
14073
+ return {
14074
+ left: rect.left,
14075
+ top: rect.top
14076
+ };
14077
+ }
14026
14078
  function hasCSSTransform(el, root, moveClass) {
14027
14079
  const clone = el.cloneNode();
14028
14080
  const _vtc = el[vtcKey];
@@ -14333,6 +14385,7 @@ const modifierGuards = {
14333
14385
  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))
14334
14386
  };
14335
14387
  const withModifiers = (fn, modifiers) => {
14388
+ if (!fn) return fn;
14336
14389
  const cache = fn._withMods || (fn._withMods = {});
14337
14390
  const cacheKey = modifiers.join(".");
14338
14391
  return cache[cacheKey] || (cache[cacheKey] = ((event, ...args) => {