@vue/runtime-dom 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/runtime-dom v3.5.27
2
+ * @vue/runtime-dom v3.5.29
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -1194,6 +1194,12 @@ class VueElement extends BaseClass {
1194
1194
  this._update();
1195
1195
  }
1196
1196
  }
1197
+ /**
1198
+ * @internal
1199
+ */
1200
+ _hasShadowRoot() {
1201
+ return this._def.shadowRoot !== false;
1202
+ }
1197
1203
  /**
1198
1204
  * @internal
1199
1205
  */
@@ -1328,10 +1334,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
1328
1334
  instance
1329
1335
  )
1330
1336
  );
1331
- positionMap.set(child, {
1332
- left: child.el.offsetLeft,
1333
- top: child.el.offsetTop
1334
- });
1337
+ positionMap.set(child, getPosition(child.el));
1335
1338
  }
1336
1339
  }
1337
1340
  }
@@ -1362,10 +1365,7 @@ function callPendingCbs(c) {
1362
1365
  }
1363
1366
  }
1364
1367
  function recordPosition(c) {
1365
- newPositionMap.set(c, {
1366
- left: c.el.offsetLeft,
1367
- top: c.el.offsetTop
1368
- });
1368
+ newPositionMap.set(c, getPosition(c.el));
1369
1369
  }
1370
1370
  function applyTranslation(c) {
1371
1371
  const oldPos = positionMap.get(c);
@@ -1373,12 +1373,29 @@ function applyTranslation(c) {
1373
1373
  const dx = oldPos.left - newPos.left;
1374
1374
  const dy = oldPos.top - newPos.top;
1375
1375
  if (dx || dy) {
1376
- const s = c.el.style;
1377
- s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;
1376
+ const el = c.el;
1377
+ const s = el.style;
1378
+ const rect = el.getBoundingClientRect();
1379
+ let scaleX = 1;
1380
+ let scaleY = 1;
1381
+ if (el.offsetWidth) scaleX = rect.width / el.offsetWidth;
1382
+ if (el.offsetHeight) scaleY = rect.height / el.offsetHeight;
1383
+ if (!Number.isFinite(scaleX) || scaleX === 0) scaleX = 1;
1384
+ if (!Number.isFinite(scaleY) || scaleY === 0) scaleY = 1;
1385
+ if (Math.abs(scaleX - 1) < 0.01) scaleX = 1;
1386
+ if (Math.abs(scaleY - 1) < 0.01) scaleY = 1;
1387
+ s.transform = s.webkitTransform = `translate(${dx / scaleX}px,${dy / scaleY}px)`;
1378
1388
  s.transitionDuration = "0s";
1379
1389
  return c;
1380
1390
  }
1381
1391
  }
1392
+ function getPosition(el) {
1393
+ const rect = el.getBoundingClientRect();
1394
+ return {
1395
+ left: rect.left,
1396
+ top: rect.top
1397
+ };
1398
+ }
1382
1399
  function hasCSSTransform(el, root, moveClass) {
1383
1400
  const clone = el.cloneNode();
1384
1401
  const _vtc = el[vtcKey];
@@ -1689,6 +1706,7 @@ const modifierGuards = {
1689
1706
  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))
1690
1707
  };
1691
1708
  const withModifiers = (fn, modifiers) => {
1709
+ if (!fn) return fn;
1692
1710
  const cache = fn._withMods || (fn._withMods = {});
1693
1711
  const cacheKey = modifiers.join(".");
1694
1712
  return cache[cacheKey] || (cache[cacheKey] = ((event, ...args) => {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/runtime-dom v3.5.27
2
+ * @vue/runtime-dom v3.5.29
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -1127,6 +1127,12 @@ class VueElement extends BaseClass {
1127
1127
  this._update();
1128
1128
  }
1129
1129
  }
1130
+ /**
1131
+ * @internal
1132
+ */
1133
+ _hasShadowRoot() {
1134
+ return this._def.shadowRoot !== false;
1135
+ }
1130
1136
  /**
1131
1137
  * @internal
1132
1138
  */
@@ -1238,10 +1244,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
1238
1244
  instance
1239
1245
  )
1240
1246
  );
1241
- positionMap.set(child, {
1242
- left: child.el.offsetLeft,
1243
- top: child.el.offsetTop
1244
- });
1247
+ positionMap.set(child, getPosition(child.el));
1245
1248
  }
1246
1249
  }
1247
1250
  }
@@ -1270,10 +1273,7 @@ function callPendingCbs(c) {
1270
1273
  }
1271
1274
  }
1272
1275
  function recordPosition(c) {
1273
- newPositionMap.set(c, {
1274
- left: c.el.offsetLeft,
1275
- top: c.el.offsetTop
1276
- });
1276
+ newPositionMap.set(c, getPosition(c.el));
1277
1277
  }
1278
1278
  function applyTranslation(c) {
1279
1279
  const oldPos = positionMap.get(c);
@@ -1281,12 +1281,29 @@ function applyTranslation(c) {
1281
1281
  const dx = oldPos.left - newPos.left;
1282
1282
  const dy = oldPos.top - newPos.top;
1283
1283
  if (dx || dy) {
1284
- const s = c.el.style;
1285
- s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;
1284
+ const el = c.el;
1285
+ const s = el.style;
1286
+ const rect = el.getBoundingClientRect();
1287
+ let scaleX = 1;
1288
+ let scaleY = 1;
1289
+ if (el.offsetWidth) scaleX = rect.width / el.offsetWidth;
1290
+ if (el.offsetHeight) scaleY = rect.height / el.offsetHeight;
1291
+ if (!Number.isFinite(scaleX) || scaleX === 0) scaleX = 1;
1292
+ if (!Number.isFinite(scaleY) || scaleY === 0) scaleY = 1;
1293
+ if (Math.abs(scaleX - 1) < 0.01) scaleX = 1;
1294
+ if (Math.abs(scaleY - 1) < 0.01) scaleY = 1;
1295
+ s.transform = s.webkitTransform = `translate(${dx / scaleX}px,${dy / scaleY}px)`;
1286
1296
  s.transitionDuration = "0s";
1287
1297
  return c;
1288
1298
  }
1289
1299
  }
1300
+ function getPosition(el) {
1301
+ const rect = el.getBoundingClientRect();
1302
+ return {
1303
+ left: rect.left,
1304
+ top: rect.top
1305
+ };
1306
+ }
1290
1307
  function hasCSSTransform(el, root, moveClass) {
1291
1308
  const clone = el.cloneNode();
1292
1309
  const _vtc = el[vtcKey];
@@ -1594,6 +1611,7 @@ const modifierGuards = {
1594
1611
  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))
1595
1612
  };
1596
1613
  const withModifiers = (fn, modifiers) => {
1614
+ if (!fn) return fn;
1597
1615
  const cache = fn._withMods || (fn._withMods = {});
1598
1616
  const cacheKey = modifiers.join(".");
1599
1617
  return cache[cacheKey] || (cache[cacheKey] = ((event, ...args) => {
@@ -1,4 +1,4 @@
1
- import { RendererOptions, BaseTransitionProps, FunctionalComponent, ObjectDirective, Directive, SetupContext, RenderFunction, ComponentOptions, App, ComponentCustomElementInterface, ConcreteComponent, CreateAppFunction, ComponentObjectPropsOptions, EmitsOptions, ComputedOptions, MethodOptions, ComponentOptionsMixin, ComponentInjectOptions, SlotsType, Component, ComponentProvideOptions, ExtractPropTypes, EmitsToProps, ComponentOptionsBase, CreateComponentPublicInstanceWithMixins, ComponentPublicInstance, DefineComponent, VNodeRef, RootRenderFunction, RootHydrateFunction } from '@vue/runtime-core';
1
+ import { RendererOptions, BaseTransitionProps, FunctionalComponent, ObjectDirective, Directive, App, ComponentCustomElementInterface, ConcreteComponent, CreateAppFunction, SetupContext, RenderFunction, ComponentOptions, ComponentObjectPropsOptions, EmitsOptions, ComputedOptions, MethodOptions, ComponentOptionsMixin, ComponentInjectOptions, SlotsType, Component, ComponentProvideOptions, ExtractPropTypes, EmitsToProps, ComponentOptionsBase, CreateComponentPublicInstanceWithMixins, ComponentPublicInstance, DefineComponent, VNodeRef, RootHydrateFunction, RootRenderFunction } from '@vue/runtime-core';
2
2
  export * from '@vue/runtime-core';
3
3
  import * as CSS from 'csstype';
4
4
 
@@ -391,9 +391,10 @@ export interface AriaAttributes {
391
391
  'aria-valuetext'?: string | undefined;
392
392
  }
393
393
  export type StyleValue = false | null | undefined | string | CSSProperties | Array<StyleValue>;
394
+ export type ClassValue = false | null | undefined | string | Record<string, any> | Array<ClassValue>;
394
395
  export interface HTMLAttributes extends AriaAttributes, EventHandlers<Events> {
395
396
  innerHTML?: string | undefined;
396
- class?: any;
397
+ class?: ClassValue | undefined;
397
398
  style?: StyleValue | undefined;
398
399
  accesskey?: string | undefined;
399
400
  contenteditable?: Booleanish | 'inherit' | 'plaintext-only' | undefined;
@@ -867,7 +868,7 @@ export interface SVGAttributes extends AriaAttributes, EventHandlers<Events> {
867
868
  * SVG Styling Attributes
868
869
  * @see https://www.w3.org/TR/SVG/styling.html#ElementSpecificStyling
869
870
  */
870
- class?: any;
871
+ class?: ClassValue | undefined;
871
872
  style?: StyleValue | undefined;
872
873
  color?: string | undefined;
873
874
  height?: Numberish | undefined;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/runtime-dom v3.5.27
2
+ * @vue/runtime-dom 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(
@@ -3437,7 +3439,22 @@ function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }
3437
3439
  function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {
3438
3440
  o: { nextSibling, parentNode, querySelector, insert, createText }
3439
3441
  }, hydrateChildren) {
3440
- function hydrateDisabledTeleport(node2, vnode2, targetStart, targetAnchor) {
3442
+ function hydrateAnchor(target2, targetNode) {
3443
+ let targetAnchor = targetNode;
3444
+ while (targetAnchor) {
3445
+ if (targetAnchor && targetAnchor.nodeType === 8) {
3446
+ if (targetAnchor.data === "teleport start anchor") {
3447
+ vnode.targetStart = targetAnchor;
3448
+ } else if (targetAnchor.data === "teleport anchor") {
3449
+ vnode.targetAnchor = targetAnchor;
3450
+ target2._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
3451
+ break;
3452
+ }
3453
+ }
3454
+ targetAnchor = nextSibling(targetAnchor);
3455
+ }
3456
+ }
3457
+ function hydrateDisabledTeleport(node2, vnode2) {
3441
3458
  vnode2.anchor = hydrateChildren(
3442
3459
  nextSibling(node2),
3443
3460
  vnode2,
@@ -3447,8 +3464,6 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
3447
3464
  slotScopeIds,
3448
3465
  optimized
3449
3466
  );
3450
- vnode2.targetStart = targetStart;
3451
- vnode2.targetAnchor = targetAnchor;
3452
3467
  }
3453
3468
  const target = vnode.target = resolveTarget(
3454
3469
  vnode.props,
@@ -3459,27 +3474,22 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
3459
3474
  const targetNode = target._lpa || target.firstChild;
3460
3475
  if (vnode.shapeFlag & 16) {
3461
3476
  if (disabled) {
3462
- hydrateDisabledTeleport(
3463
- node,
3464
- vnode,
3465
- targetNode,
3466
- targetNode && nextSibling(targetNode)
3467
- );
3477
+ hydrateDisabledTeleport(node, vnode);
3478
+ hydrateAnchor(target, targetNode);
3479
+ if (!vnode.targetAnchor) {
3480
+ prepareAnchor(
3481
+ target,
3482
+ vnode,
3483
+ createText,
3484
+ insert,
3485
+ // if target is the same as the main view, insert anchors before current node
3486
+ // to avoid hydrating mismatch
3487
+ parentNode(node) === target ? node : null
3488
+ );
3489
+ }
3468
3490
  } else {
3469
3491
  vnode.anchor = nextSibling(node);
3470
- let targetAnchor = targetNode;
3471
- while (targetAnchor) {
3472
- if (targetAnchor && targetAnchor.nodeType === 8) {
3473
- if (targetAnchor.data === "teleport start anchor") {
3474
- vnode.targetStart = targetAnchor;
3475
- } else if (targetAnchor.data === "teleport anchor") {
3476
- vnode.targetAnchor = targetAnchor;
3477
- target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
3478
- break;
3479
- }
3480
- }
3481
- targetAnchor = nextSibling(targetAnchor);
3482
- }
3492
+ hydrateAnchor(target, targetNode);
3483
3493
  if (!vnode.targetAnchor) {
3484
3494
  prepareAnchor(target, vnode, createText, insert);
3485
3495
  }
@@ -3497,7 +3507,9 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
3497
3507
  updateCssVars(vnode, disabled);
3498
3508
  } else if (disabled) {
3499
3509
  if (vnode.shapeFlag & 16) {
3500
- hydrateDisabledTeleport(node, vnode, node, nextSibling(node));
3510
+ hydrateDisabledTeleport(node, vnode);
3511
+ vnode.targetStart = node;
3512
+ vnode.targetAnchor = nextSibling(node);
3501
3513
  }
3502
3514
  }
3503
3515
  return vnode.anchor && nextSibling(vnode.anchor);
@@ -3521,13 +3533,13 @@ function updateCssVars(vnode, isDisabled) {
3521
3533
  ctx.ut();
3522
3534
  }
3523
3535
  }
3524
- function prepareAnchor(target, vnode, createText, insert) {
3536
+ function prepareAnchor(target, vnode, createText, insert, anchor = null) {
3525
3537
  const targetStart = vnode.targetStart = createText("");
3526
3538
  const targetAnchor = vnode.targetAnchor = createText("");
3527
3539
  targetStart[TeleportEndKey] = targetAnchor;
3528
3540
  if (target) {
3529
- insert(targetStart, target);
3530
- insert(targetAnchor, target);
3541
+ insert(targetStart, target, anchor);
3542
+ insert(targetAnchor, target, anchor);
3531
3543
  }
3532
3544
  return targetAnchor;
3533
3545
  }
@@ -3749,6 +3761,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3749
3761
  callHook(hook, [el]);
3750
3762
  },
3751
3763
  enter(el) {
3764
+ if (leavingVNodesCache[key] === vnode) return;
3752
3765
  let hook = onEnter;
3753
3766
  let afterHook = onAfterEnter;
3754
3767
  let cancelHook = onEnterCancelled;
@@ -3762,7 +3775,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3762
3775
  }
3763
3776
  }
3764
3777
  let called = false;
3765
- const done = el[enterCbKey$1] = (cancelled) => {
3778
+ el[enterCbKey$1] = (cancelled) => {
3766
3779
  if (called) return;
3767
3780
  called = true;
3768
3781
  if (cancelled) {
@@ -3775,6 +3788,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3775
3788
  }
3776
3789
  el[enterCbKey$1] = void 0;
3777
3790
  };
3791
+ const done = el[enterCbKey$1].bind(null, false);
3778
3792
  if (hook) {
3779
3793
  callAsyncHook(hook, [el, done]);
3780
3794
  } else {
@@ -3794,7 +3808,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3794
3808
  }
3795
3809
  callHook(onBeforeLeave, [el]);
3796
3810
  let called = false;
3797
- const done = el[leaveCbKey] = (cancelled) => {
3811
+ el[leaveCbKey] = (cancelled) => {
3798
3812
  if (called) return;
3799
3813
  called = true;
3800
3814
  remove();
@@ -3808,6 +3822,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3808
3822
  delete leavingVNodesCache[key2];
3809
3823
  }
3810
3824
  };
3825
+ const done = el[leaveCbKey].bind(null, false);
3811
3826
  leavingVNodesCache[key2] = vnode;
3812
3827
  if (onLeave) {
3813
3828
  callAsyncHook(onLeave, [el, done]);
@@ -3920,8 +3935,7 @@ function useTemplateRef(key) {
3920
3935
  const r = shallowRef(null);
3921
3936
  if (i) {
3922
3937
  const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs;
3923
- let desc;
3924
- if ((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) {
3938
+ if (isTemplateRefKey(refs, key)) {
3925
3939
  warn$1(`useTemplateRef('${key}') already exists.`);
3926
3940
  } else {
3927
3941
  Object.defineProperty(refs, key, {
@@ -3941,6 +3955,10 @@ function useTemplateRef(key) {
3941
3955
  }
3942
3956
  return ret;
3943
3957
  }
3958
+ function isTemplateRefKey(refs, key) {
3959
+ let desc;
3960
+ return !!((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable);
3961
+ }
3944
3962
 
3945
3963
  const pendingSetRefMap = /* @__PURE__ */ new WeakMap();
3946
3964
  function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
@@ -3986,10 +4004,19 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
3986
4004
  return false;
3987
4005
  }
3988
4006
  }
4007
+ if (isTemplateRefKey(refs, key)) {
4008
+ return false;
4009
+ }
3989
4010
  return hasOwn(rawSetupState, key);
3990
4011
  };
3991
- const canSetRef = (ref2) => {
3992
- return !knownTemplateRefs.has(ref2);
4012
+ const canSetRef = (ref2, key) => {
4013
+ if (knownTemplateRefs.has(ref2)) {
4014
+ return false;
4015
+ }
4016
+ if (key && isTemplateRefKey(refs, key)) {
4017
+ return false;
4018
+ }
4019
+ return true;
3993
4020
  };
3994
4021
  if (oldRef != null && oldRef !== ref) {
3995
4022
  invalidatePendingSetRef(oldRawRef);
@@ -3999,10 +4026,10 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
3999
4026
  setupState[oldRef] = null;
4000
4027
  }
4001
4028
  } else if (isRef(oldRef)) {
4002
- if (canSetRef(oldRef)) {
4029
+ const oldRawRefAtom = oldRawRef;
4030
+ if (canSetRef(oldRef, oldRawRefAtom.k)) {
4003
4031
  oldRef.value = null;
4004
4032
  }
4005
- const oldRawRefAtom = oldRawRef;
4006
4033
  if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;
4007
4034
  }
4008
4035
  }
@@ -4026,7 +4053,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4026
4053
  }
4027
4054
  } else {
4028
4055
  const newVal = [refValue];
4029
- if (canSetRef(ref)) {
4056
+ if (canSetRef(ref, rawRef.k)) {
4030
4057
  ref.value = newVal;
4031
4058
  }
4032
4059
  if (rawRef.k) refs[rawRef.k] = newVal;
@@ -4041,7 +4068,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4041
4068
  setupState[ref] = value;
4042
4069
  }
4043
4070
  } else if (_isRef) {
4044
- if (canSetRef(ref)) {
4071
+ if (canSetRef(ref, rawRef.k)) {
4045
4072
  ref.value = value;
4046
4073
  }
4047
4074
  if (rawRef.k) refs[rawRef.k] = value;
@@ -5834,13 +5861,24 @@ function withAsyncContext(getAwaitable) {
5834
5861
  }
5835
5862
  let awaitable = getAwaitable();
5836
5863
  unsetCurrentInstance();
5864
+ const cleanup = () => {
5865
+ if (getCurrentInstance() !== ctx) ctx.scope.off();
5866
+ unsetCurrentInstance();
5867
+ };
5837
5868
  if (isPromise(awaitable)) {
5838
5869
  awaitable = awaitable.catch((e) => {
5839
5870
  setCurrentInstance(ctx);
5871
+ Promise.resolve().then(() => Promise.resolve().then(cleanup));
5840
5872
  throw e;
5841
5873
  });
5842
5874
  }
5843
- return [awaitable, () => setCurrentInstance(ctx)];
5875
+ return [
5876
+ awaitable,
5877
+ () => {
5878
+ setCurrentInstance(ctx);
5879
+ Promise.resolve().then(cleanup);
5880
+ }
5881
+ ];
5844
5882
  }
5845
5883
 
5846
5884
  function createDuplicateChecker() {
@@ -6905,7 +6943,7 @@ function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
6905
6943
  const dynamicProps = nextVNode.dynamicProps;
6906
6944
  for (let i = 0; i < dynamicProps.length; i++) {
6907
6945
  const key = dynamicProps[i];
6908
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {
6946
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emits, key)) {
6909
6947
  return true;
6910
6948
  }
6911
6949
  }
@@ -6936,12 +6974,20 @@ function hasPropsChanged(prevProps, nextProps, emitsOptions) {
6936
6974
  }
6937
6975
  for (let i = 0; i < nextKeys.length; i++) {
6938
6976
  const key = nextKeys[i];
6939
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {
6977
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) {
6940
6978
  return true;
6941
6979
  }
6942
6980
  }
6943
6981
  return false;
6944
6982
  }
6983
+ function hasPropValueChanged(nextProps, prevProps, key) {
6984
+ const nextProp = nextProps[key];
6985
+ const prevProp = prevProps[key];
6986
+ if (key === "style" && isObject(nextProp) && isObject(prevProp)) {
6987
+ return !looseEqual(nextProp, prevProp);
6988
+ }
6989
+ return nextProp !== prevProp;
6990
+ }
6945
6991
  function updateHOCHostEl({ vnode, parent }, el) {
6946
6992
  while (parent) {
6947
6993
  const root = parent.subTree;
@@ -7645,15 +7691,7 @@ function baseCreateRenderer(options, createHydrationFns) {
7645
7691
  } else {
7646
7692
  const el = n2.el = n1.el;
7647
7693
  if (n2.children !== n1.children) {
7648
- if (isHmrUpdating && n2.patchFlag === -1 && "__elIndex" in n1) {
7649
- const childNodes = container.childNodes;
7650
- const newChild = hostCreateText(n2.children);
7651
- const oldChild = childNodes[n2.__elIndex = n1.__elIndex];
7652
- hostInsert(newChild, container, oldChild);
7653
- hostRemove(oldChild);
7654
- } else {
7655
- hostSetText(el, n2.children);
7656
- }
7694
+ hostSetText(el, n2.children);
7657
7695
  }
7658
7696
  }
7659
7697
  };
@@ -7729,7 +7767,7 @@ function baseCreateRenderer(options, createHydrationFns) {
7729
7767
  optimized
7730
7768
  );
7731
7769
  } else {
7732
- const customElement = !!(n1.el && n1.el._isVueCE) ? n1.el : null;
7770
+ const customElement = n1.el && n1.el._isVueCE ? n1.el : null;
7733
7771
  try {
7734
7772
  if (customElement) {
7735
7773
  customElement._beginPatch();
@@ -8211,8 +8249,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8211
8249
  hydrateSubTree();
8212
8250
  }
8213
8251
  } else {
8214
- if (root.ce && // @ts-expect-error _def is private
8215
- root.ce._def.shadowRoot !== false) {
8252
+ if (root.ce && root.ce._hasShadowRoot()) {
8216
8253
  root.ce._injectChildStyle(type);
8217
8254
  }
8218
8255
  {
@@ -8267,9 +8304,9 @@ function baseCreateRenderer(options, createHydrationFns) {
8267
8304
  updateComponentPreRender(instance, next, optimized);
8268
8305
  }
8269
8306
  nonHydratedAsyncRoot.asyncDep.then(() => {
8270
- if (!instance.isUnmounted) {
8271
- componentUpdateFn();
8272
- }
8307
+ queuePostRenderEffect(() => {
8308
+ if (!instance.isUnmounted) update();
8309
+ }, parentSuspense);
8273
8310
  });
8274
8311
  return;
8275
8312
  }
@@ -8966,12 +9003,10 @@ function traverseStaticChildren(n1, n2, shallow = false) {
8966
9003
  traverseStaticChildren(c1, c2);
8967
9004
  }
8968
9005
  if (c2.type === Text) {
8969
- if (c2.patchFlag !== -1) {
8970
- c2.el = c1.el;
8971
- } else {
8972
- c2.__elIndex = i + // take fragment start anchor into account
8973
- (n1.type === Fragment ? 1 : 0);
9006
+ if (c2.patchFlag === -1) {
9007
+ c2 = ch2[i] = cloneIfMounted(c2);
8974
9008
  }
9009
+ c2.el = c1.el;
8975
9010
  }
8976
9011
  if (c2.type === Comment && !c2.el) {
8977
9012
  c2.el = c1.el;
@@ -10697,7 +10732,7 @@ function isMemoSame(cached, memo) {
10697
10732
  return true;
10698
10733
  }
10699
10734
 
10700
- const version = "3.5.27";
10735
+ const version = "3.5.29";
10701
10736
  const warn = warn$1 ;
10702
10737
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
10703
10738
  const devtools = devtools$1 ;
@@ -11971,6 +12006,12 @@ class VueElement extends BaseClass {
11971
12006
  this._update();
11972
12007
  }
11973
12008
  }
12009
+ /**
12010
+ * @internal
12011
+ */
12012
+ _hasShadowRoot() {
12013
+ return this._def.shadowRoot !== false;
12014
+ }
11974
12015
  /**
11975
12016
  * @internal
11976
12017
  */
@@ -12105,10 +12146,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
12105
12146
  instance
12106
12147
  )
12107
12148
  );
12108
- positionMap.set(child, {
12109
- left: child.el.offsetLeft,
12110
- top: child.el.offsetTop
12111
- });
12149
+ positionMap.set(child, getPosition(child.el));
12112
12150
  }
12113
12151
  }
12114
12152
  }
@@ -12139,10 +12177,7 @@ function callPendingCbs(c) {
12139
12177
  }
12140
12178
  }
12141
12179
  function recordPosition(c) {
12142
- newPositionMap.set(c, {
12143
- left: c.el.offsetLeft,
12144
- top: c.el.offsetTop
12145
- });
12180
+ newPositionMap.set(c, getPosition(c.el));
12146
12181
  }
12147
12182
  function applyTranslation(c) {
12148
12183
  const oldPos = positionMap.get(c);
@@ -12150,12 +12185,29 @@ function applyTranslation(c) {
12150
12185
  const dx = oldPos.left - newPos.left;
12151
12186
  const dy = oldPos.top - newPos.top;
12152
12187
  if (dx || dy) {
12153
- const s = c.el.style;
12154
- s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;
12188
+ const el = c.el;
12189
+ const s = el.style;
12190
+ const rect = el.getBoundingClientRect();
12191
+ let scaleX = 1;
12192
+ let scaleY = 1;
12193
+ if (el.offsetWidth) scaleX = rect.width / el.offsetWidth;
12194
+ if (el.offsetHeight) scaleY = rect.height / el.offsetHeight;
12195
+ if (!Number.isFinite(scaleX) || scaleX === 0) scaleX = 1;
12196
+ if (!Number.isFinite(scaleY) || scaleY === 0) scaleY = 1;
12197
+ if (Math.abs(scaleX - 1) < 0.01) scaleX = 1;
12198
+ if (Math.abs(scaleY - 1) < 0.01) scaleY = 1;
12199
+ s.transform = s.webkitTransform = `translate(${dx / scaleX}px,${dy / scaleY}px)`;
12155
12200
  s.transitionDuration = "0s";
12156
12201
  return c;
12157
12202
  }
12158
12203
  }
12204
+ function getPosition(el) {
12205
+ const rect = el.getBoundingClientRect();
12206
+ return {
12207
+ left: rect.left,
12208
+ top: rect.top
12209
+ };
12210
+ }
12159
12211
  function hasCSSTransform(el, root, moveClass) {
12160
12212
  const clone = el.cloneNode();
12161
12213
  const _vtc = el[vtcKey];
@@ -12466,6 +12518,7 @@ const modifierGuards = {
12466
12518
  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))
12467
12519
  };
12468
12520
  const withModifiers = (fn, modifiers) => {
12521
+ if (!fn) return fn;
12469
12522
  const cache = fn._withMods || (fn._withMods = {});
12470
12523
  const cacheKey = modifiers.join(".");
12471
12524
  return cache[cacheKey] || (cache[cacheKey] = ((event, ...args) => {