@vue/runtime-dom 3.6.0-beta.5 → 3.6.0-beta.6

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.6.0-beta.5
2
+ * @vue/runtime-dom v3.6.0-beta.6
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -1029,10 +1029,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
1029
1029
  if (child.el && child.el instanceof Element) {
1030
1030
  prevChildren.push(child);
1031
1031
  (0, _vue_runtime_core.setTransitionHooks)(child, (0, _vue_runtime_core.resolveTransitionHooks)(child, cssTransitionProps, state, instance));
1032
- positionMap.set(child, {
1033
- left: child.el.offsetLeft,
1034
- top: child.el.offsetTop
1035
- });
1032
+ positionMap.set(child, getPosition(child.el));
1036
1033
  }
1037
1034
  }
1038
1035
  children = slots.default ? (0, _vue_runtime_core.getTransitionRawChildren)(slots.default()) : [];
@@ -1051,10 +1048,7 @@ function callPendingCbs(el) {
1051
1048
  if (el[enterCbKey]) el[enterCbKey]();
1052
1049
  }
1053
1050
  function recordPosition(c) {
1054
- newPositionMap.set(c, {
1055
- left: c.el.offsetLeft,
1056
- top: c.el.offsetTop
1057
- });
1051
+ newPositionMap.set(c, getPosition(c.el));
1058
1052
  }
1059
1053
  function applyTranslation(c) {
1060
1054
  if (baseApplyTranslation(positionMap.get(c), newPositionMap.get(c), c.el)) return c;
@@ -1064,12 +1058,28 @@ function baseApplyTranslation(oldPos, newPos, el) {
1064
1058
  const dy = oldPos.top - newPos.top;
1065
1059
  if (dx || dy) {
1066
1060
  const s = el.style;
1067
- s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;
1061
+ const rect = el.getBoundingClientRect();
1062
+ let scaleX = 1;
1063
+ let scaleY = 1;
1064
+ if (el.offsetWidth) scaleX = rect.width / el.offsetWidth;
1065
+ if (el.offsetHeight) scaleY = rect.height / el.offsetHeight;
1066
+ if (!Number.isFinite(scaleX) || scaleX === 0) scaleX = 1;
1067
+ if (!Number.isFinite(scaleY) || scaleY === 0) scaleY = 1;
1068
+ if (Math.abs(scaleX - 1) < .01) scaleX = 1;
1069
+ if (Math.abs(scaleY - 1) < .01) scaleY = 1;
1070
+ s.transform = s.webkitTransform = `translate(${dx / scaleX}px,${dy / scaleY}px)`;
1068
1071
  s.transitionDuration = "0s";
1069
1072
  return true;
1070
1073
  }
1071
1074
  return false;
1072
1075
  }
1076
+ function getPosition(el) {
1077
+ const rect = el.getBoundingClientRect();
1078
+ return {
1079
+ left: rect.left,
1080
+ top: rect.top
1081
+ };
1082
+ }
1073
1083
  function hasCSSTransform(el, root, moveClass) {
1074
1084
  const clone = el.cloneNode();
1075
1085
  const _vtc = el[vtcKey];
@@ -1374,6 +1384,7 @@ const modifierGuards = {
1374
1384
  * @private
1375
1385
  */
1376
1386
  const withModifiers = (fn, modifiers) => {
1387
+ if (!fn) return fn;
1377
1388
  const cache = fn._withMods || (fn._withMods = {});
1378
1389
  const cacheKey = modifiers.join(".");
1379
1390
  return cache[cacheKey] || (cache[cacheKey] = ((event, ...args) => {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/runtime-dom v3.6.0-beta.5
2
+ * @vue/runtime-dom v3.6.0-beta.6
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -975,10 +975,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
975
975
  if (child.el && child.el instanceof Element) {
976
976
  prevChildren.push(child);
977
977
  (0, _vue_runtime_core.setTransitionHooks)(child, (0, _vue_runtime_core.resolveTransitionHooks)(child, cssTransitionProps, state, instance));
978
- positionMap.set(child, {
979
- left: child.el.offsetLeft,
980
- top: child.el.offsetTop
981
- });
978
+ positionMap.set(child, getPosition(child.el));
982
979
  }
983
980
  }
984
981
  children = slots.default ? (0, _vue_runtime_core.getTransitionRawChildren)(slots.default()) : [];
@@ -996,10 +993,7 @@ function callPendingCbs(el) {
996
993
  if (el[enterCbKey]) el[enterCbKey]();
997
994
  }
998
995
  function recordPosition(c) {
999
- newPositionMap.set(c, {
1000
- left: c.el.offsetLeft,
1001
- top: c.el.offsetTop
1002
- });
996
+ newPositionMap.set(c, getPosition(c.el));
1003
997
  }
1004
998
  function applyTranslation(c) {
1005
999
  if (baseApplyTranslation(positionMap.get(c), newPositionMap.get(c), c.el)) return c;
@@ -1009,12 +1003,28 @@ function baseApplyTranslation(oldPos, newPos, el) {
1009
1003
  const dy = oldPos.top - newPos.top;
1010
1004
  if (dx || dy) {
1011
1005
  const s = el.style;
1012
- s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;
1006
+ const rect = el.getBoundingClientRect();
1007
+ let scaleX = 1;
1008
+ let scaleY = 1;
1009
+ if (el.offsetWidth) scaleX = rect.width / el.offsetWidth;
1010
+ if (el.offsetHeight) scaleY = rect.height / el.offsetHeight;
1011
+ if (!Number.isFinite(scaleX) || scaleX === 0) scaleX = 1;
1012
+ if (!Number.isFinite(scaleY) || scaleY === 0) scaleY = 1;
1013
+ if (Math.abs(scaleX - 1) < .01) scaleX = 1;
1014
+ if (Math.abs(scaleY - 1) < .01) scaleY = 1;
1015
+ s.transform = s.webkitTransform = `translate(${dx / scaleX}px,${dy / scaleY}px)`;
1013
1016
  s.transitionDuration = "0s";
1014
1017
  return true;
1015
1018
  }
1016
1019
  return false;
1017
1020
  }
1021
+ function getPosition(el) {
1022
+ const rect = el.getBoundingClientRect();
1023
+ return {
1024
+ left: rect.left,
1025
+ top: rect.top
1026
+ };
1027
+ }
1018
1028
  function hasCSSTransform(el, root, moveClass) {
1019
1029
  const clone = el.cloneNode();
1020
1030
  const _vtc = el[vtcKey];
@@ -1316,6 +1326,7 @@ const modifierGuards = {
1316
1326
  * @private
1317
1327
  */
1318
1328
  const withModifiers = (fn, modifiers) => {
1329
+ if (!fn) return fn;
1319
1330
  const cache = fn._withMods || (fn._withMods = {});
1320
1331
  const cacheKey = modifiers.join(".");
1321
1332
  return cache[cacheKey] || (cache[cacheKey] = ((event, ...args) => {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/runtime-dom v3.6.0-beta.5
2
+ * @vue/runtime-dom v3.6.0-beta.6
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -3202,36 +3202,44 @@ function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }
3202
3202
  if (isReorder) insert(anchor, container, parentAnchor);
3203
3203
  }
3204
3204
  function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { o: { nextSibling, parentNode, querySelector, insert, createText } }, hydrateChildren) {
3205
- function hydrateDisabledTeleport(node, vnode, targetStart, targetAnchor) {
3205
+ function hydrateAnchor(target, targetNode) {
3206
+ let targetAnchor = targetNode;
3207
+ while (targetAnchor) {
3208
+ if (targetAnchor && targetAnchor.nodeType === 8) {
3209
+ if (targetAnchor.data === "teleport start anchor") vnode.targetStart = targetAnchor;
3210
+ else if (targetAnchor.data === "teleport anchor") {
3211
+ vnode.targetAnchor = targetAnchor;
3212
+ target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
3213
+ break;
3214
+ }
3215
+ }
3216
+ targetAnchor = nextSibling(targetAnchor);
3217
+ }
3218
+ }
3219
+ function hydrateDisabledTeleport(node, vnode) {
3206
3220
  vnode.anchor = hydrateChildren(nextSibling(node), vnode, parentNode(node), parentComponent, parentSuspense, slotScopeIds, optimized);
3207
- vnode.targetStart = targetStart;
3208
- vnode.targetAnchor = targetAnchor;
3209
3221
  }
3210
3222
  const target = vnode.target = resolveTarget(vnode.props, querySelector);
3211
3223
  const disabled = isTeleportDisabled(vnode.props);
3212
3224
  if (target) {
3213
3225
  const targetNode = target._lpa || target.firstChild;
3214
- if (vnode.shapeFlag & 16) if (disabled) hydrateDisabledTeleport(node, vnode, targetNode, targetNode && nextSibling(targetNode));
3215
- else {
3226
+ if (vnode.shapeFlag & 16) if (disabled) {
3227
+ hydrateDisabledTeleport(node, vnode);
3228
+ hydrateAnchor(target, targetNode);
3229
+ if (!vnode.targetAnchor) prepareAnchor(target, vnode, createText, insert, parentNode(node) === target ? node : null);
3230
+ } else {
3216
3231
  vnode.anchor = nextSibling(node);
3217
- let targetAnchor = targetNode;
3218
- while (targetAnchor) {
3219
- if (targetAnchor && targetAnchor.nodeType === 8) {
3220
- if (targetAnchor.data === "teleport start anchor") vnode.targetStart = targetAnchor;
3221
- else if (targetAnchor.data === "teleport anchor") {
3222
- vnode.targetAnchor = targetAnchor;
3223
- target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
3224
- break;
3225
- }
3226
- }
3227
- targetAnchor = nextSibling(targetAnchor);
3228
- }
3232
+ hydrateAnchor(target, targetNode);
3229
3233
  if (!vnode.targetAnchor) prepareAnchor(target, vnode, createText, insert);
3230
3234
  hydrateChildren(targetNode && nextSibling(targetNode), vnode, target, parentComponent, parentSuspense, slotScopeIds, optimized);
3231
3235
  }
3232
3236
  updateCssVars(vnode, disabled);
3233
3237
  } else if (disabled) {
3234
- if (vnode.shapeFlag & 16) hydrateDisabledTeleport(node, vnode, node, nextSibling(node));
3238
+ if (vnode.shapeFlag & 16) {
3239
+ hydrateDisabledTeleport(node, vnode);
3240
+ vnode.targetStart = node;
3241
+ vnode.targetAnchor = nextSibling(node);
3242
+ }
3235
3243
  }
3236
3244
  return vnode.anchor && nextSibling(vnode.anchor);
3237
3245
  }
@@ -3254,13 +3262,13 @@ function updateCssVars(vnode, isDisabled) {
3254
3262
  ctx.ut();
3255
3263
  }
3256
3264
  }
3257
- function prepareAnchor(target, vnode, createText, insert) {
3265
+ function prepareAnchor(target, vnode, createText, insert, anchor = null) {
3258
3266
  const targetStart = vnode.targetStart = createText("");
3259
3267
  const targetAnchor = vnode.targetAnchor = createText("");
3260
3268
  targetStart[TeleportEndKey] = targetAnchor;
3261
3269
  if (target) {
3262
- insert(targetStart, target);
3263
- insert(targetAnchor, target);
3270
+ insert(targetStart, target, anchor);
3271
+ insert(targetAnchor, target, anchor);
3264
3272
  }
3265
3273
  return targetAnchor;
3266
3274
  }
@@ -3438,7 +3446,7 @@ function baseResolveTransitionHooks(context, props, state, instance) {
3438
3446
  cancelHook = onAppearCancelled || onEnterCancelled;
3439
3447
  } else return;
3440
3448
  let called = false;
3441
- const done = el[enterCbKey$1] = (cancelled) => {
3449
+ el[enterCbKey$1] = (cancelled) => {
3442
3450
  if (called) return;
3443
3451
  called = true;
3444
3452
  if (cancelled) callHook(cancelHook, [el]);
@@ -3446,6 +3454,7 @@ function baseResolveTransitionHooks(context, props, state, instance) {
3446
3454
  if (hooks.delayedLeave) hooks.delayedLeave();
3447
3455
  el[enterCbKey$1] = void 0;
3448
3456
  };
3457
+ const done = el[enterCbKey$1].bind(null, false);
3449
3458
  if (hook) callAsyncHook(hook, [el, done]);
3450
3459
  else done();
3451
3460
  },
@@ -3454,7 +3463,7 @@ function baseResolveTransitionHooks(context, props, state, instance) {
3454
3463
  if (state.isUnmounting) return remove();
3455
3464
  callHook(onBeforeLeave, [el]);
3456
3465
  let called = false;
3457
- const done = el[leaveCbKey] = (cancelled) => {
3466
+ el[leaveCbKey] = (cancelled) => {
3458
3467
  if (called) return;
3459
3468
  called = true;
3460
3469
  remove();
@@ -3464,6 +3473,7 @@ function baseResolveTransitionHooks(context, props, state, instance) {
3464
3473
  unsetLeavingNodeCache(el);
3465
3474
  };
3466
3475
  setLeavingNodeCache(el);
3476
+ const done = el[leaveCbKey].bind(null, false);
3467
3477
  if (onLeave) callAsyncHook(onLeave, [el, done]);
3468
3478
  else done();
3469
3479
  },
@@ -3561,8 +3571,7 @@ function useTemplateRef(key) {
3561
3571
  const r = /* @__PURE__ */ shallowRef(null);
3562
3572
  if (i) {
3563
3573
  const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs;
3564
- let desc;
3565
- if ((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) warn$1(`useTemplateRef('${key}') already exists.`);
3574
+ if (isTemplateRefKey(refs, key)) warn$1(`useTemplateRef('${key}') already exists.`);
3566
3575
  else Object.defineProperty(refs, key, {
3567
3576
  enumerable: true,
3568
3577
  get: () => r.value,
@@ -3573,6 +3582,10 @@ function useTemplateRef(key) {
3573
3582
  knownTemplateRefs.add(ret);
3574
3583
  return ret;
3575
3584
  }
3585
+ function isTemplateRefKey(refs, key) {
3586
+ let desc;
3587
+ return !!((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable);
3588
+ }
3576
3589
 
3577
3590
  //#endregion
3578
3591
  //#region packages/runtime-core/src/rendererTemplateRef.ts
@@ -3599,9 +3612,11 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
3599
3612
  const oldRef = oldRawRef && oldRawRef.r;
3600
3613
  const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;
3601
3614
  const setupState = owner.setupState;
3602
- const canSetSetupRef = createCanSetSetupRefChecker(setupState);
3603
- const canSetRef = (ref) => {
3604
- return !knownTemplateRefs.has(ref);
3615
+ const canSetSetupRef = createCanSetSetupRefChecker(setupState, refs);
3616
+ const canSetRef = (ref, key) => {
3617
+ if (knownTemplateRefs.has(ref)) return false;
3618
+ if (key && isTemplateRefKey(refs, key)) return false;
3619
+ return true;
3605
3620
  };
3606
3621
  if (oldRef != null && oldRef !== ref) {
3607
3622
  invalidatePendingSetRef(oldRawRef);
@@ -3609,8 +3624,8 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
3609
3624
  refs[oldRef] = null;
3610
3625
  if (canSetSetupRef(oldRef)) setupState[oldRef] = null;
3611
3626
  } else if (/* @__PURE__ */ isRef(oldRef)) {
3612
- if (canSetRef(oldRef)) oldRef.value = null;
3613
3627
  const oldRawRefAtom = oldRawRef;
3628
+ if (canSetRef(oldRef, oldRawRefAtom.k)) oldRef.value = null;
3614
3629
  if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;
3615
3630
  }
3616
3631
  }
@@ -3628,7 +3643,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
3628
3643
  if (canSetSetupRef(ref)) setupState[ref] = refs[ref];
3629
3644
  } else {
3630
3645
  const newVal = [refValue];
3631
- if (canSetRef(ref)) ref.value = newVal;
3646
+ if (canSetRef(ref, rawRef.k)) ref.value = newVal;
3632
3647
  if (rawRef.k) refs[rawRef.k] = newVal;
3633
3648
  }
3634
3649
  else if (!existing.includes(refValue)) existing.push(refValue);
@@ -3636,7 +3651,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
3636
3651
  refs[ref] = value;
3637
3652
  if (canSetSetupRef(ref)) setupState[ref] = value;
3638
3653
  } else if (_isRef) {
3639
- if (canSetRef(ref)) ref.value = value;
3654
+ if (canSetRef(ref, rawRef.k)) ref.value = value;
3640
3655
  if (rawRef.k) refs[rawRef.k] = value;
3641
3656
  } else warn$1("Invalid template ref type:", ref, `(${typeof ref})`);
3642
3657
  };
@@ -3654,11 +3669,12 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
3654
3669
  } else warn$1("Invalid template ref type:", ref, `(${typeof ref})`);
3655
3670
  }
3656
3671
  }
3657
- function createCanSetSetupRefChecker(setupState) {
3672
+ function createCanSetSetupRefChecker(setupState, refs) {
3658
3673
  const rawSetupState = /* @__PURE__ */ toRaw(setupState);
3659
3674
  return setupState === void 0 || setupState === EMPTY_OBJ ? NO : (key) => {
3660
3675
  if (hasOwn(rawSetupState, key) && !/* @__PURE__ */ isRef(rawSetupState[key])) warn$1(`Template ref "${key}" used on a non-ref value. It will not work in the production build.`);
3661
3676
  if (knownTemplateRefs.has(rawSetupState[key])) return false;
3677
+ if (isTemplateRefKey(refs, key)) return false;
3662
3678
  return hasOwn(rawSetupState, key);
3663
3679
  };
3664
3680
  }
@@ -5765,7 +5781,7 @@ function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
5765
5781
  const dynamicProps = nextVNode.dynamicProps;
5766
5782
  for (let i = 0; i < dynamicProps.length; i++) {
5767
5783
  const key = dynamicProps[i];
5768
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) return true;
5784
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emits, key)) return true;
5769
5785
  }
5770
5786
  }
5771
5787
  } else {
@@ -5784,10 +5800,16 @@ function hasPropsChanged(prevProps, nextProps, emitsOptions) {
5784
5800
  if (nextKeys.length !== Object.keys(prevProps).length) return true;
5785
5801
  for (let i = 0; i < nextKeys.length; i++) {
5786
5802
  const key = nextKeys[i];
5787
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) return true;
5803
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) return true;
5788
5804
  }
5789
5805
  return false;
5790
5806
  }
5807
+ function hasPropValueChanged(nextProps, prevProps, key) {
5808
+ const nextProp = nextProps[key];
5809
+ const prevProp = prevProps[key];
5810
+ if (key === "style" && isObject(nextProp) && isObject(prevProp)) return !looseEqual(nextProp, prevProp);
5811
+ return nextProp !== prevProp;
5812
+ }
5791
5813
  function updateHOCHostEl({ vnode, parent }, el) {
5792
5814
  while (parent && !parent.vapor) {
5793
5815
  const root = parent.subTree;
@@ -6294,13 +6316,7 @@ function baseCreateRenderer(options, createHydrationFns) {
6294
6316
  if (n1 == null) hostInsert(n2.el = hostCreateText(n2.children), container, anchor);
6295
6317
  else {
6296
6318
  const el = n2.el = n1.el;
6297
- if (n2.children !== n1.children) if (isHmrUpdating && n2.patchFlag === -1 && "__elIndex" in n1) {
6298
- const childNodes = container.childNodes;
6299
- const newChild = hostCreateText(n2.children);
6300
- const oldChild = childNodes[n2.__elIndex = n1.__elIndex];
6301
- hostInsert(newChild, container, oldChild);
6302
- hostRemove(oldChild);
6303
- } else hostSetText(el, n2.children);
6319
+ if (n2.children !== n1.children) hostSetText(el, n2.children);
6304
6320
  }
6305
6321
  };
6306
6322
  const processCommentNode = (n1, n2, container, anchor) => {
@@ -6636,7 +6652,9 @@ function baseCreateRenderer(options, createHydrationFns) {
6636
6652
  updateComponentPreRender(instance, next, optimized);
6637
6653
  }
6638
6654
  nonHydratedAsyncRoot.asyncDep.then(() => {
6639
- if (!instance.isUnmounted) this.fn();
6655
+ queuePostRenderEffect(() => {
6656
+ if (!instance.isUnmounted) instance.update();
6657
+ }, void 0, parentSuspense);
6640
6658
  });
6641
6659
  return;
6642
6660
  }
@@ -7045,8 +7063,10 @@ function traverseStaticChildren(n1, n2, shallow = false) {
7045
7063
  }
7046
7064
  if (!shallow && c2.patchFlag !== -2) traverseStaticChildren(c1, c2);
7047
7065
  }
7048
- if (c2.type === Text) if (c2.patchFlag !== -1) c2.el = c1.el;
7049
- else c2.__elIndex = i + (n1.type === Fragment ? 1 : 0);
7066
+ if (c2.type === Text) {
7067
+ if (c2.patchFlag === -1) c2 = ch2[i] = cloneIfMounted(c2);
7068
+ c2.el = c1.el;
7069
+ }
7050
7070
  if (c2.type === Comment && !c2.el) c2.el = c1.el;
7051
7071
  c2.el && (c2.el.__vnode = c2);
7052
7072
  }
@@ -8287,7 +8307,7 @@ function isMemoSame(cached, memo) {
8287
8307
 
8288
8308
  //#endregion
8289
8309
  //#region packages/runtime-core/src/index.ts
8290
- const version = "3.6.0-beta.5";
8310
+ const version = "3.6.0-beta.6";
8291
8311
  const warn = warn$1;
8292
8312
  /**
8293
8313
  * Runtime error messages. Only exposed in dev or esm builds.
@@ -9405,10 +9425,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
9405
9425
  if (child.el && child.el instanceof Element) {
9406
9426
  prevChildren.push(child);
9407
9427
  setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
9408
- positionMap.set(child, {
9409
- left: child.el.offsetLeft,
9410
- top: child.el.offsetTop
9411
- });
9428
+ positionMap.set(child, getPosition(child.el));
9412
9429
  }
9413
9430
  }
9414
9431
  children = slots.default ? getTransitionRawChildren(slots.default()) : [];
@@ -9427,10 +9444,7 @@ function callPendingCbs(el) {
9427
9444
  if (el[enterCbKey]) el[enterCbKey]();
9428
9445
  }
9429
9446
  function recordPosition(c) {
9430
- newPositionMap.set(c, {
9431
- left: c.el.offsetLeft,
9432
- top: c.el.offsetTop
9433
- });
9447
+ newPositionMap.set(c, getPosition(c.el));
9434
9448
  }
9435
9449
  function applyTranslation(c) {
9436
9450
  if (baseApplyTranslation(positionMap.get(c), newPositionMap.get(c), c.el)) return c;
@@ -9440,12 +9454,28 @@ function baseApplyTranslation(oldPos, newPos, el) {
9440
9454
  const dy = oldPos.top - newPos.top;
9441
9455
  if (dx || dy) {
9442
9456
  const s = el.style;
9443
- s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;
9457
+ const rect = el.getBoundingClientRect();
9458
+ let scaleX = 1;
9459
+ let scaleY = 1;
9460
+ if (el.offsetWidth) scaleX = rect.width / el.offsetWidth;
9461
+ if (el.offsetHeight) scaleY = rect.height / el.offsetHeight;
9462
+ if (!Number.isFinite(scaleX) || scaleX === 0) scaleX = 1;
9463
+ if (!Number.isFinite(scaleY) || scaleY === 0) scaleY = 1;
9464
+ if (Math.abs(scaleX - 1) < .01) scaleX = 1;
9465
+ if (Math.abs(scaleY - 1) < .01) scaleY = 1;
9466
+ s.transform = s.webkitTransform = `translate(${dx / scaleX}px,${dy / scaleY}px)`;
9444
9467
  s.transitionDuration = "0s";
9445
9468
  return true;
9446
9469
  }
9447
9470
  return false;
9448
9471
  }
9472
+ function getPosition(el) {
9473
+ const rect = el.getBoundingClientRect();
9474
+ return {
9475
+ left: rect.left,
9476
+ top: rect.top
9477
+ };
9478
+ }
9449
9479
  function hasCSSTransform(el, root, moveClass) {
9450
9480
  const clone = el.cloneNode();
9451
9481
  const _vtc = el[vtcKey];
@@ -9732,6 +9762,7 @@ const modifierGuards = {
9732
9762
  * @private
9733
9763
  */
9734
9764
  const withModifiers = (fn, modifiers) => {
9765
+ if (!fn) return fn;
9735
9766
  const cache = fn._withMods || (fn._withMods = {});
9736
9767
  const cacheKey = modifiers.join(".");
9737
9768
  return cache[cacheKey] || (cache[cacheKey] = ((event, ...args) => {