vue 3.5.43 → 3.5.44

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 v3.5.43
2
+ * vue v3.5.44
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -1,5 +1,5 @@
1
1
  /**
2
- * vue v3.5.43
2
+ * vue v3.5.44
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -194,7 +194,7 @@ var Vue = (function (exports) {
194
194
  const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);
195
195
  const isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);
196
196
 
197
- const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
197
+ const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,playsinline,readonly`;
198
198
  const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);
199
199
  const isBooleanAttr = /* @__PURE__ */ makeMap(
200
200
  specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`
@@ -1242,19 +1242,41 @@ var Vue = (function (exports) {
1242
1242
  };
1243
1243
  function iterator(self, method, wrapValue) {
1244
1244
  const arr = shallowReadArray(self);
1245
- const iter = arr[method]();
1245
+ const methodFn = arr[method];
1246
+ const iter = methodFn.call(arr);
1246
1247
  if (arr !== self && !isShallow(self)) {
1247
- iter._next = iter.next;
1248
- iter.next = () => {
1249
- const result = iter._next();
1250
- if (!result.done) {
1251
- result.value = wrapValue(result.value);
1248
+ if (iter[Symbol.toStringTag] === "Array Iterator") {
1249
+ const wrapped = Object.create(Object.getPrototypeOf(iter));
1250
+ wrapped.next = () => wrapResult(iter.next(), wrapValue);
1251
+ if (methodFn !== arrayProto[method]) {
1252
+ Object.defineProperties(wrapped, {
1253
+ return: {
1254
+ get() {
1255
+ const fn = iter.return;
1256
+ return typeof fn === "function" ? fn.bind(iter) : fn;
1257
+ }
1258
+ },
1259
+ throw: {
1260
+ get() {
1261
+ const fn = iter.throw;
1262
+ return typeof fn === "function" ? fn.bind(iter) : fn;
1263
+ }
1264
+ }
1265
+ });
1252
1266
  }
1253
- return result;
1254
- };
1267
+ return wrapped;
1268
+ }
1269
+ iter._next = iter.next;
1270
+ iter.next = () => wrapResult(iter._next(), wrapValue);
1255
1271
  }
1256
1272
  return iter;
1257
1273
  }
1274
+ function wrapResult(result, wrapValue) {
1275
+ if (!result.done) {
1276
+ result.value = wrapValue(result.value);
1277
+ }
1278
+ return result;
1279
+ }
1258
1280
  const arrayProto = Array.prototype;
1259
1281
  function apply(self, method, fn, thisArg, wrappedRetFn, args) {
1260
1282
  const arr = shallowReadArray(self);
@@ -1677,6 +1699,8 @@ var Vue = (function (exports) {
1677
1699
  return !isReadonly2;
1678
1700
  } else if (key === "__v_isReadonly") {
1679
1701
  return isReadonly2;
1702
+ } else if (key === "__v_isShallow") {
1703
+ return shallow;
1680
1704
  } else if (key === "__v_raw") {
1681
1705
  return target;
1682
1706
  }
@@ -2222,9 +2246,11 @@ var Vue = (function (exports) {
2222
2246
  if (once && cb) {
2223
2247
  const _cb = cb;
2224
2248
  cb = (...args) => {
2225
- const res = _cb(...args);
2226
- watchHandle();
2227
- return res;
2249
+ try {
2250
+ return _cb(...args);
2251
+ } finally {
2252
+ watchHandle();
2253
+ }
2228
2254
  };
2229
2255
  }
2230
2256
  let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;
@@ -2235,12 +2261,13 @@ var Vue = (function (exports) {
2235
2261
  if (cb) {
2236
2262
  const newValue = effect.run();
2237
2263
  if (immediateFirstRun || deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {
2238
- if (cleanup) {
2239
- cleanup();
2240
- }
2241
2264
  const currentWatcher = activeWatcher;
2242
- activeWatcher = effect;
2265
+ pauseTracking();
2243
2266
  try {
2267
+ if (cleanup) {
2268
+ cleanup();
2269
+ }
2270
+ activeWatcher = effect;
2244
2271
  const args = [
2245
2272
  newValue,
2246
2273
  // pass undefined as the old value when it's changed for the first time
@@ -2254,6 +2281,7 @@ var Vue = (function (exports) {
2254
2281
  );
2255
2282
  } finally {
2256
2283
  activeWatcher = currentWatcher;
2284
+ resetTracking();
2257
2285
  }
2258
2286
  }
2259
2287
  } else {
@@ -2654,21 +2682,21 @@ var Vue = (function (exports) {
2654
2682
  }
2655
2683
  queueFlush();
2656
2684
  }
2657
- function flushPreFlushCbs(instance, seen, i = flushIndex + 1) {
2685
+ function flushPreFlushCbs(instance, minUid, seen, i = flushIndex + 1) {
2658
2686
  {
2659
2687
  seen = seen || /* @__PURE__ */ new Map();
2660
2688
  }
2661
2689
  for (; i < queue.length; i++) {
2662
2690
  const cb = queue[i];
2663
2691
  if (cb && cb.flags & 2) {
2664
- if (instance && cb.id !== instance.uid) {
2692
+ if (instance && cb.id !== instance.uid || minUid !== void 0 && !(cb.id >= minUid)) {
2665
2693
  continue;
2666
2694
  }
2667
2695
  if (checkRecursiveUpdates(seen, cb)) {
2668
2696
  continue;
2669
2697
  }
2670
2698
  queue.splice(i, 1);
2671
- i--;
2699
+ i = instance ? i - 1 : flushIndex;
2672
2700
  if (cb.flags & 4) {
2673
2701
  cb.flags &= -2;
2674
2702
  }
@@ -2679,12 +2707,23 @@ var Vue = (function (exports) {
2679
2707
  }
2680
2708
  }
2681
2709
  }
2682
- function flushPostFlushCbs(seen) {
2710
+ function flushPostFlushCbs(seen, skip, minUid = 0) {
2683
2711
  if (pendingPostFlushCbs.length) {
2684
- const deduped = [...new Set(pendingPostFlushCbs)].sort(
2685
- (a, b) => getId(a) - getId(b)
2686
- );
2687
- pendingPostFlushCbs.length = 0;
2712
+ let cbs = pendingPostFlushCbs;
2713
+ let kept = 0;
2714
+ if (skip) {
2715
+ cbs = [];
2716
+ for (let i = 0; i < pendingPostFlushCbs.length; i++) {
2717
+ const cb = pendingPostFlushCbs[i];
2718
+ if (cb.i !== void 0 ? !cb.i || cb.i.uid < minUid : skip.has(cb)) {
2719
+ pendingPostFlushCbs[kept++] = cb;
2720
+ } else {
2721
+ cbs.push(cb);
2722
+ }
2723
+ }
2724
+ }
2725
+ const deduped = [...new Set(cbs)].sort((a, b) => getId(a) - getId(b));
2726
+ pendingPostFlushCbs.length = kept;
2688
2727
  if (activePostFlushCbs) {
2689
2728
  for (let i = 0; i < deduped.length; i++) {
2690
2729
  activePostFlushCbs.push(deduped[i]);
@@ -2710,6 +2749,22 @@ var Vue = (function (exports) {
2710
2749
  postFlushIndex = 0;
2711
2750
  }
2712
2751
  }
2752
+ let isFlushing = false;
2753
+ function flushOnAppMount(fn, minUid) {
2754
+ if (isFlushing) {
2755
+ fn();
2756
+ return;
2757
+ }
2758
+ const queued = minUid === void 0 ? void 0 : new Set(pendingPostFlushCbs);
2759
+ fn();
2760
+ isFlushing = true;
2761
+ try {
2762
+ flushPreFlushCbs(void 0, minUid);
2763
+ flushPostFlushCbs(void 0, queued, minUid);
2764
+ } finally {
2765
+ isFlushing = false;
2766
+ }
2767
+ }
2713
2768
  const getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id;
2714
2769
  function flushJobs(seen) {
2715
2770
  {
@@ -3190,6 +3245,7 @@ var Vue = (function (exports) {
3190
3245
  let isPre = false;
3191
3246
  if (flush === "post") {
3192
3247
  baseWatchOptions.scheduler = (job) => {
3248
+ job.i = instance;
3193
3249
  queuePostRenderEffect(job, instance && instance.suspense);
3194
3250
  };
3195
3251
  } else if (flush !== "sync") {
@@ -3484,7 +3540,11 @@ var Vue = (function (exports) {
3484
3540
  };
3485
3541
  function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) {
3486
3542
  if (moveType === 0) {
3543
+ if (vnode.targetStart) {
3544
+ insert(vnode.targetStart, container, parentAnchor);
3545
+ }
3487
3546
  insert(vnode.targetAnchor, container, parentAnchor);
3547
+ parentAnchor = vnode.targetAnchor;
3488
3548
  }
3489
3549
  const { el, anchor, shapeFlag, children, props } = vnode;
3490
3550
  const isReorder = moveType === 2;
@@ -3653,10 +3713,6 @@ var Vue = (function (exports) {
3653
3713
  onAfterAppear: TransitionHookValidator,
3654
3714
  onAppearCancelled: TransitionHookValidator
3655
3715
  };
3656
- const recursiveGetSubtree = (instance) => {
3657
- const subTree = instance.subTree;
3658
- return subTree.component ? recursiveGetSubtree(subTree.component) : subTree;
3659
- };
3660
3716
  const BaseTransitionImpl = {
3661
3717
  name: `BaseTransition`,
3662
3718
  props: BaseTransitionPropsValidators,
@@ -3697,7 +3753,7 @@ var Vue = (function (exports) {
3697
3753
  setTransitionHooks(innerChild, enterHooks);
3698
3754
  }
3699
3755
  let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree);
3700
- if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(oldInnerChild, innerChild) && recursiveGetSubtree(instance).type !== Comment) {
3756
+ if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(oldInnerChild, innerChild) && getTransitionRoot(instance.subTree)) {
3701
3757
  let leavingHooks = resolveTransitionHooks(
3702
3758
  oldInnerChild,
3703
3759
  rawProps,
@@ -3830,8 +3886,15 @@ var Vue = (function (exports) {
3830
3886
  );
3831
3887
  }
3832
3888
  const leavingVNode = leavingVNodesCache[key];
3833
- if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {
3834
- leavingVNode.el[leaveCbKey]();
3889
+ if (leavingVNode && isSameVNodeType(vnode, leavingVNode)) {
3890
+ let leavingCb = leavingVNode.el[leaveCbKey];
3891
+ if (!leavingCb) {
3892
+ const leavingRoot = getTransitionRoot(leavingVNode);
3893
+ leavingCb = leavingRoot && leavingRoot.el[leaveCbKey];
3894
+ }
3895
+ if (leavingCb) {
3896
+ leavingCb();
3897
+ }
3835
3898
  }
3836
3899
  callHook(hook, [el]);
3837
3900
  },
@@ -3959,6 +4022,12 @@ var Vue = (function (exports) {
3959
4022
  vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);
3960
4023
  } else {
3961
4024
  vnode.transition = hooks;
4025
+ if (vnode.type === Fragment && isArray(vnode.children)) {
4026
+ const child = filterSingleRoot(vnode.children, false);
4027
+ if (child) {
4028
+ setTransitionHooks(child, hooks);
4029
+ }
4030
+ }
3962
4031
  }
3963
4032
  }
3964
4033
  function getTransitionRawChildren(children, keepComment = false, parentKey) {
@@ -3983,6 +4052,18 @@ var Vue = (function (exports) {
3983
4052
  }
3984
4053
  return ret;
3985
4054
  }
4055
+ function getTransitionRoot(vnode) {
4056
+ if (vnode.component) {
4057
+ return getTransitionRoot(vnode.component.subTree);
4058
+ }
4059
+ if (vnode.type === Fragment) {
4060
+ const child = isArray(vnode.children) && filterSingleRoot(vnode.children, false);
4061
+ return child ? getTransitionRoot(child) : void 0;
4062
+ }
4063
+ if (vnode.type !== Comment) {
4064
+ return vnode;
4065
+ }
4066
+ }
3986
4067
 
3987
4068
  // @__NO_SIDE_EFFECTS__
3988
4069
  function defineComponent(options, extraOptions) {
@@ -4888,14 +4969,22 @@ Server rendered element contains fewer child nodes than client vdom.`
4888
4969
  break;
4889
4970
  }
4890
4971
  }, opts);
4891
- forEach((el) => {
4892
- if (!(el instanceof Element)) return;
4972
+ const observe = (el) => {
4893
4973
  if (elementIsVisibleInViewport(el)) {
4894
4974
  hydrate();
4895
4975
  ob.disconnect();
4896
4976
  return false;
4897
4977
  }
4978
+ if (getComputedStyle(el).display === "contents") {
4979
+ for (let i = 0; i < el.children.length; i++) {
4980
+ if (observe(el.children[i]) === false) return false;
4981
+ }
4982
+ }
4898
4983
  ob.observe(el);
4984
+ };
4985
+ forEach((el) => {
4986
+ if (!(el instanceof Element)) return;
4987
+ return observe(el);
4899
4988
  });
4900
4989
  return () => ob.disconnect();
4901
4990
  };
@@ -5246,6 +5335,7 @@ Server rendered element contains fewer child nodes than client vdom.`
5246
5335
  unmount(cached);
5247
5336
  } else if (current) {
5248
5337
  resetShapeFlag(current);
5338
+ if (cached) resetShapeFlag(cached);
5249
5339
  }
5250
5340
  cache.delete(key);
5251
5341
  keys.delete(key);
@@ -5537,9 +5627,11 @@ If this is a native custom element, make sure to exclude it from component resol
5537
5627
  }
5538
5628
  } else if (typeof source === "number") {
5539
5629
  if (!Number.isInteger(source) || source < 0) {
5540
- warn$1(
5541
- `The v-for range expects a positive integer value but got ${source}.`
5542
- );
5630
+ {
5631
+ warn$1(
5632
+ `The v-for range expects a positive integer value but got ${source}.`
5633
+ );
5634
+ }
5543
5635
  ret = [];
5544
5636
  } else {
5545
5637
  ret = new Array(source);
@@ -7174,7 +7266,7 @@ If you want to remount the same app, move your app creation logic into a factory
7174
7266
  }
7175
7267
  for (let i = 0; i < nextKeys.length; i++) {
7176
7268
  const key = nextKeys[i];
7177
- if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) {
7269
+ if (!hasOwn(prevProps, key) || hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) {
7178
7270
  return true;
7179
7271
  }
7180
7272
  }
@@ -8213,15 +8305,16 @@ If you want to remount the same app, move your app creation logic into a factory
8213
8305
  for (let i = 0; i < newChildren.length; i++) {
8214
8306
  const oldVNode = oldChildren[i];
8215
8307
  const newVNode = newChildren[i];
8308
+ const oldEl = oldVNode.el || resolveAsyncComponentPlaceholder(oldVNode);
8216
8309
  const container = (
8217
8310
  // oldVNode may be an errored async setup() component inside Suspense
8218
8311
  // which will not have a mounted element
8219
- oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent
8312
+ oldEl && // - In the case of a Fragment, we need to provide the actual parent
8220
8313
  // of the Fragment itself so it can move its children.
8221
8314
  (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement
8222
8315
  // which also requires the correct parent container
8223
8316
  !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.
8224
- oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldVNode.el) : (
8317
+ oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldEl) : (
8225
8318
  // In other cases, the parent container is not actually used so we
8226
8319
  // just pass the block element here to avoid a DOM parentNode call.
8227
8320
  fallbackContainer
@@ -8385,7 +8478,12 @@ If you want to remount the same app, move your app creation logic into a factory
8385
8478
  }
8386
8479
  if (isHmrUpdating) initialVNode.el = null;
8387
8480
  if (instance.asyncDep) {
8388
- parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect, optimized);
8481
+ parentSuspense && parentSuspense.registerDep(
8482
+ instance,
8483
+ setupRenderEffect,
8484
+ optimized,
8485
+ namespace
8486
+ );
8389
8487
  if (!initialVNode.el) {
8390
8488
  const placeholder = instance.subTree = createVNode(Comment);
8391
8489
  processCommentNode(null, placeholder, container, anchor);
@@ -8415,6 +8513,7 @@ If you want to remount the same app, move your app creation logic into a factory
8415
8513
  pushWarningContext(n2);
8416
8514
  }
8417
8515
  n2.el = n1.el;
8516
+ n2.placeholder = n1.placeholder;
8418
8517
  updateComponentPreRender(instance, n2, optimized);
8419
8518
  {
8420
8519
  popWarningContext();
@@ -8426,6 +8525,7 @@ If you want to remount the same app, move your app creation logic into a factory
8426
8525
  }
8427
8526
  } else {
8428
8527
  n2.el = n1.el;
8528
+ n2.placeholder = n1.placeholder;
8429
8529
  instance.vnode = n2;
8430
8530
  }
8431
8531
  };
@@ -9079,18 +9179,9 @@ If you want to remount the same app, move your app creation logic into a factory
9079
9179
  };
9080
9180
  const remove = (vnode) => {
9081
9181
  const { type, el, anchor, transition } = vnode;
9082
- if (type === Fragment) {
9083
- if (vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) {
9084
- vnode.children.forEach((child) => {
9085
- if (child.type === Comment) {
9086
- hostRemove(child.el);
9087
- } else {
9088
- remove(child);
9089
- }
9090
- });
9091
- } else {
9092
- removeFragment(el, anchor);
9093
- }
9182
+ const isFragment = type === Fragment;
9183
+ if (isFragment && !transition) {
9184
+ removeFragment(el, anchor);
9094
9185
  return;
9095
9186
  }
9096
9187
  if (type === Static) {
@@ -9100,17 +9191,25 @@ If you want to remount the same app, move your app creation logic into a factory
9100
9191
  }
9101
9192
  return;
9102
9193
  }
9194
+ const leavingNode = isFragment ? getTransitionRoot(vnode) : vnode;
9103
9195
  const performRemove = () => {
9104
- hostRemove(el);
9196
+ if (isFragment) {
9197
+ if (hostParentNode(el)) {
9198
+ removeFragment(el, anchor);
9199
+ }
9200
+ } else {
9201
+ hostRemove(el);
9202
+ }
9105
9203
  if (transition && !transition.persisted && transition.afterLeave) {
9106
9204
  transition.afterLeave();
9107
9205
  }
9108
9206
  };
9109
- if (vnode.shapeFlag & 1 && transition && !transition.persisted) {
9207
+ if (leavingNode && leavingNode.shapeFlag & 1 && transition && !transition.persisted) {
9110
9208
  const { leave, delayLeave } = transition;
9111
- const performLeave = () => leave(el, performRemove);
9209
+ const leavingEl = leavingNode.el;
9210
+ const performLeave = () => leave(leavingEl, performRemove);
9112
9211
  if (delayLeave) {
9113
- delayLeave(vnode.el, performRemove, performLeave);
9212
+ delayLeave(leavingEl, performRemove, performLeave);
9114
9213
  } else {
9115
9214
  performLeave();
9116
9215
  }
@@ -9171,32 +9270,26 @@ If you want to remount the same app, move your app creation logic into a factory
9171
9270
  const teleportEnd = el && el[TeleportEndKey];
9172
9271
  return teleportEnd ? hostNextSibling(teleportEnd) : el;
9173
9272
  };
9174
- let isFlushing = false;
9175
9273
  const render = (vnode, container, namespace) => {
9176
- let instance;
9177
- if (vnode == null) {
9178
- if (container._vnode) {
9179
- unmount(container._vnode, null, null, true);
9180
- instance = container._vnode.component;
9274
+ const minUid = vnode && container._vnode ? void 0 : vnode && vnode.component ? vnode.component.uid : getNextUid();
9275
+ flushOnAppMount(() => {
9276
+ if (vnode == null) {
9277
+ if (container._vnode) {
9278
+ unmount(container._vnode, null, null, true);
9279
+ }
9280
+ } else {
9281
+ patch(
9282
+ container._vnode || null,
9283
+ vnode,
9284
+ container,
9285
+ null,
9286
+ null,
9287
+ null,
9288
+ namespace
9289
+ );
9181
9290
  }
9182
- } else {
9183
- patch(
9184
- container._vnode || null,
9185
- vnode,
9186
- container,
9187
- null,
9188
- null,
9189
- null,
9190
- namespace
9191
- );
9192
- }
9193
- container._vnode = vnode;
9194
- if (!isFlushing) {
9195
- isFlushing = true;
9196
- flushPreFlushCbs(instance);
9197
- flushPostFlushCbs();
9198
- isFlushing = false;
9199
- }
9291
+ container._vnode = vnode;
9292
+ }, minUid);
9200
9293
  };
9201
9294
  const internals = {
9202
9295
  p: patch,
@@ -9784,7 +9877,10 @@ If you want to remount the same app, move your app creation logic into a factory
9784
9877
  next() {
9785
9878
  return suspense.activeBranch && next(suspense.activeBranch);
9786
9879
  },
9787
- registerDep(instance, setupRenderEffect, optimized2) {
9880
+ // `namespace` intentionally shadows the boundary's own: the dep must be
9881
+ // mounted with the namespace of the position it was rendered at, which can
9882
+ // differ from the boundary's (e.g. a component nested inside an <svg>).
9883
+ registerDep(instance, setupRenderEffect, optimized2, namespace2) {
9788
9884
  const isInPendingSuspense = !!suspense.pendingBranch;
9789
9885
  if (isInPendingSuspense) {
9790
9886
  suspense.deps++;
@@ -9797,7 +9893,7 @@ If you want to remount the same app, move your app creation logic into a factory
9797
9893
  return;
9798
9894
  }
9799
9895
  unsetCurrentInstance();
9800
- if (hydratedEl && !instance.scope.active) {
9896
+ if (!instance.scope.active) {
9801
9897
  if (isInPendingSuspense && --suspense.deps === 0) {
9802
9898
  suspense.resolve();
9803
9899
  }
@@ -9824,7 +9920,7 @@ If you want to remount the same app, move your app creation logic into a factory
9824
9920
  // consider the comment placeholder case.
9825
9921
  hydratedEl ? null : next(instance.subTree),
9826
9922
  suspense,
9827
- namespace,
9923
+ namespace2,
9828
9924
  optimized2
9829
9925
  );
9830
9926
  if (placeholder) {
@@ -10358,6 +10454,9 @@ Component that was made reactive: `,
10358
10454
 
10359
10455
  const emptyAppContext = createAppContext();
10360
10456
  let uid = 0;
10457
+ function getNextUid() {
10458
+ return uid;
10459
+ }
10361
10460
  function createComponentInstance(vnode, parent, suspense) {
10362
10461
  const type = vnode.type;
10363
10462
  const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;
@@ -11016,7 +11115,7 @@ Component that was made reactive: `,
11016
11115
  return true;
11017
11116
  }
11018
11117
 
11019
- const version = "3.5.43";
11118
+ const version = "3.5.44";
11020
11119
  const warn = warn$1 ;
11021
11120
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
11022
11121
  const devtools = devtools$1 ;
@@ -11573,7 +11672,9 @@ Component that was made reactive: `,
11573
11672
  }
11574
11673
  }
11575
11674
  if (vShowOriginalDisplay in el) {
11576
- el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : "";
11675
+ if (!isCssString || prev !== next) {
11676
+ el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : "";
11677
+ }
11577
11678
  if (el[vShowHidden]) {
11578
11679
  style.display = "none";
11579
11680
  }
@@ -12055,7 +12156,9 @@ Expected function or array of functions, received type ${typeof value}.`
12055
12156
  "Custom element style injection is not supported when using shadowRoot: false"
12056
12157
  );
12057
12158
  }
12058
- this._mount(def);
12159
+ if (this._connected) {
12160
+ this._mount(def);
12161
+ }
12059
12162
  };
12060
12163
  const asyncDef = this._def.__asyncLoader;
12061
12164
  if (asyncDef) {
@@ -12413,6 +12516,7 @@ Expected function or array of functions, received type ${typeof value}.`
12413
12516
  const newPositionMap = /* @__PURE__ */ new WeakMap();
12414
12517
  const moveCbKey = /* @__PURE__ */ Symbol("_moveCb");
12415
12518
  const enterCbKey = /* @__PURE__ */ Symbol("_enterCb");
12519
+ const pendingGroups = /* @__PURE__ */ new WeakMap();
12416
12520
  const decorate = (t) => {
12417
12521
  delete t.props.mode;
12418
12522
  return t;
@@ -12428,21 +12532,30 @@ Expected function or array of functions, received type ${typeof value}.`
12428
12532
  const state = useTransitionState();
12429
12533
  let prevChildren;
12430
12534
  let children;
12431
- onUpdated(() => {
12432
- if (!prevChildren.length) {
12433
- return;
12535
+ let origins;
12536
+ let moves;
12537
+ const willMove = () => {
12538
+ if (moves === void 0) {
12539
+ moves = prevChildren.length > 0 && hasCSSTransform(
12540
+ prevChildren[0].el,
12541
+ instance.vnode.el,
12542
+ resolveMoveClass(props)
12543
+ );
12434
12544
  }
12435
- const moveClass = props.moveClass || `${props.name || "v"}-move`;
12436
- if (!hasCSSTransform(
12437
- prevChildren[0].el,
12438
- instance.vnode.el,
12439
- moveClass
12440
- )) {
12545
+ return moves;
12546
+ };
12547
+ onUpdated(() => {
12548
+ pendingGroups.delete(instance);
12549
+ if (!willMove()) {
12441
12550
  prevChildren = [];
12551
+ origins = void 0;
12442
12552
  return;
12443
12553
  }
12554
+ const moveClass = resolveMoveClass(props);
12444
12555
  prevChildren.forEach(callPendingCbs);
12445
- prevChildren.forEach(recordPosition);
12556
+ const shift = origins && getOriginShift(origins, instance.vnode.el);
12557
+ origins = void 0;
12558
+ prevChildren.forEach((c) => recordPosition(c, shift));
12446
12559
  const movedChildren = prevChildren.filter(applyTranslation);
12447
12560
  forceReflow(instance.vnode.el);
12448
12561
  movedChildren.forEach((c) => {
@@ -12469,6 +12582,7 @@ Expected function or array of functions, received type ${typeof value}.`
12469
12582
  const cssTransitionProps = resolveTransitionProps(rawProps);
12470
12583
  let tag = rawProps.tag || Fragment;
12471
12584
  prevChildren = [];
12585
+ moves = void 0;
12472
12586
  if (children) {
12473
12587
  for (let i = 0; i < children.length; i++) {
12474
12588
  const child = children[i];
@@ -12500,6 +12614,10 @@ Expected function or array of functions, received type ${typeof value}.`
12500
12614
  warn(`<TransitionGroup> children must be keyed.`);
12501
12615
  }
12502
12616
  }
12617
+ if (prevChildren.length) {
12618
+ origins = getOrigins(instance);
12619
+ pendingGroups.set(instance, willMove);
12620
+ }
12503
12621
  return createVNode(tag, null, children);
12504
12622
  };
12505
12623
  }
@@ -12514,8 +12632,11 @@ Expected function or array of functions, received type ${typeof value}.`
12514
12632
  el[enterCbKey]();
12515
12633
  }
12516
12634
  }
12517
- function recordPosition(c) {
12518
- newPositionMap.set(c, getPosition(c.el));
12635
+ function resolveMoveClass(props) {
12636
+ return props.moveClass || `${props.name || "v"}-move`;
12637
+ }
12638
+ function recordPosition(c, shift) {
12639
+ newPositionMap.set(c, getPosition(c.el, shift));
12519
12640
  }
12520
12641
  function applyTranslation(c) {
12521
12642
  const oldPos = positionMap.get(c);
@@ -12539,13 +12660,41 @@ Expected function or array of functions, received type ${typeof value}.`
12539
12660
  return c;
12540
12661
  }
12541
12662
  }
12542
- function getPosition(el) {
12663
+ function getPosition(el, shift) {
12543
12664
  const rect = el.getBoundingClientRect();
12544
12665
  return {
12545
- left: rect.left,
12546
- top: rect.top
12666
+ left: rect.left - (shift ? shift.left : 0),
12667
+ top: rect.top - (shift ? shift.top : 0)
12547
12668
  };
12548
12669
  }
12670
+ function getOrigins(instance) {
12671
+ let origins;
12672
+ for (let group = instance.parent; group; group = group.parent) {
12673
+ const willMove = pendingGroups.get(group);
12674
+ if (willMove) {
12675
+ const item = findItem(group.vnode.el, instance.vnode.el);
12676
+ if (item) {
12677
+ (origins || (origins = [])).push(
12678
+ extend(getPosition(item), { item, willMove })
12679
+ );
12680
+ }
12681
+ }
12682
+ }
12683
+ return origins;
12684
+ }
12685
+ function findItem(root, node) {
12686
+ const container = root.nodeType === 1 ? root : root.parentNode;
12687
+ while (node && node.parentNode !== container) {
12688
+ node = node.parentNode;
12689
+ }
12690
+ if (node && node.nodeType === 1) {
12691
+ return node;
12692
+ }
12693
+ }
12694
+ function getOriginShift(origins, root) {
12695
+ const origin = origins.find((o) => o.willMove() && o.item.contains(root));
12696
+ return origin && getPosition(origin.item, origin);
12697
+ }
12549
12698
  function hasCSSTransform(el, root, moveClass) {
12550
12699
  const clone = el.cloneNode();
12551
12700
  const _vtc = el[vtcKey];