@vue/runtime-core 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-core v3.5.27
2
+ * @vue/runtime-core v3.5.29
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -1203,7 +1203,22 @@ function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }
1203
1203
  function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {
1204
1204
  o: { nextSibling, parentNode, querySelector, insert, createText }
1205
1205
  }, hydrateChildren) {
1206
- function hydrateDisabledTeleport(node2, vnode2, targetStart, targetAnchor) {
1206
+ function hydrateAnchor(target2, targetNode) {
1207
+ let targetAnchor = targetNode;
1208
+ while (targetAnchor) {
1209
+ if (targetAnchor && targetAnchor.nodeType === 8) {
1210
+ if (targetAnchor.data === "teleport start anchor") {
1211
+ vnode.targetStart = targetAnchor;
1212
+ } else if (targetAnchor.data === "teleport anchor") {
1213
+ vnode.targetAnchor = targetAnchor;
1214
+ target2._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
1215
+ break;
1216
+ }
1217
+ }
1218
+ targetAnchor = nextSibling(targetAnchor);
1219
+ }
1220
+ }
1221
+ function hydrateDisabledTeleport(node2, vnode2) {
1207
1222
  vnode2.anchor = hydrateChildren(
1208
1223
  nextSibling(node2),
1209
1224
  vnode2,
@@ -1213,8 +1228,6 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
1213
1228
  slotScopeIds,
1214
1229
  optimized
1215
1230
  );
1216
- vnode2.targetStart = targetStart;
1217
- vnode2.targetAnchor = targetAnchor;
1218
1231
  }
1219
1232
  const target = vnode.target = resolveTarget(
1220
1233
  vnode.props,
@@ -1225,27 +1238,22 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
1225
1238
  const targetNode = target._lpa || target.firstChild;
1226
1239
  if (vnode.shapeFlag & 16) {
1227
1240
  if (disabled) {
1228
- hydrateDisabledTeleport(
1229
- node,
1230
- vnode,
1231
- targetNode,
1232
- targetNode && nextSibling(targetNode)
1233
- );
1241
+ hydrateDisabledTeleport(node, vnode);
1242
+ hydrateAnchor(target, targetNode);
1243
+ if (!vnode.targetAnchor) {
1244
+ prepareAnchor(
1245
+ target,
1246
+ vnode,
1247
+ createText,
1248
+ insert,
1249
+ // if target is the same as the main view, insert anchors before current node
1250
+ // to avoid hydrating mismatch
1251
+ parentNode(node) === target ? node : null
1252
+ );
1253
+ }
1234
1254
  } else {
1235
1255
  vnode.anchor = nextSibling(node);
1236
- let targetAnchor = targetNode;
1237
- while (targetAnchor) {
1238
- if (targetAnchor && targetAnchor.nodeType === 8) {
1239
- if (targetAnchor.data === "teleport start anchor") {
1240
- vnode.targetStart = targetAnchor;
1241
- } else if (targetAnchor.data === "teleport anchor") {
1242
- vnode.targetAnchor = targetAnchor;
1243
- target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
1244
- break;
1245
- }
1246
- }
1247
- targetAnchor = nextSibling(targetAnchor);
1248
- }
1256
+ hydrateAnchor(target, targetNode);
1249
1257
  if (!vnode.targetAnchor) {
1250
1258
  prepareAnchor(target, vnode, createText, insert);
1251
1259
  }
@@ -1263,7 +1271,9 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
1263
1271
  updateCssVars(vnode, disabled);
1264
1272
  } else if (disabled) {
1265
1273
  if (vnode.shapeFlag & 16) {
1266
- hydrateDisabledTeleport(node, vnode, node, nextSibling(node));
1274
+ hydrateDisabledTeleport(node, vnode);
1275
+ vnode.targetStart = node;
1276
+ vnode.targetAnchor = nextSibling(node);
1267
1277
  }
1268
1278
  }
1269
1279
  return vnode.anchor && nextSibling(vnode.anchor);
@@ -1287,13 +1297,13 @@ function updateCssVars(vnode, isDisabled) {
1287
1297
  ctx.ut();
1288
1298
  }
1289
1299
  }
1290
- function prepareAnchor(target, vnode, createText, insert) {
1300
+ function prepareAnchor(target, vnode, createText, insert, anchor = null) {
1291
1301
  const targetStart = vnode.targetStart = createText("");
1292
1302
  const targetAnchor = vnode.targetAnchor = createText("");
1293
1303
  targetStart[TeleportEndKey] = targetAnchor;
1294
1304
  if (target) {
1295
- insert(targetStart, target);
1296
- insert(targetAnchor, target);
1305
+ insert(targetStart, target, anchor);
1306
+ insert(targetAnchor, target, anchor);
1297
1307
  }
1298
1308
  return targetAnchor;
1299
1309
  }
@@ -1515,6 +1525,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
1515
1525
  callHook(hook, [el]);
1516
1526
  },
1517
1527
  enter(el) {
1528
+ if (leavingVNodesCache[key] === vnode) return;
1518
1529
  let hook = onEnter;
1519
1530
  let afterHook = onAfterEnter;
1520
1531
  let cancelHook = onEnterCancelled;
@@ -1528,7 +1539,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
1528
1539
  }
1529
1540
  }
1530
1541
  let called = false;
1531
- const done = el[enterCbKey] = (cancelled) => {
1542
+ el[enterCbKey] = (cancelled) => {
1532
1543
  if (called) return;
1533
1544
  called = true;
1534
1545
  if (cancelled) {
@@ -1541,6 +1552,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
1541
1552
  }
1542
1553
  el[enterCbKey] = void 0;
1543
1554
  };
1555
+ const done = el[enterCbKey].bind(null, false);
1544
1556
  if (hook) {
1545
1557
  callAsyncHook(hook, [el, done]);
1546
1558
  } else {
@@ -1560,7 +1572,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
1560
1572
  }
1561
1573
  callHook(onBeforeLeave, [el]);
1562
1574
  let called = false;
1563
- const done = el[leaveCbKey] = (cancelled) => {
1575
+ el[leaveCbKey] = (cancelled) => {
1564
1576
  if (called) return;
1565
1577
  called = true;
1566
1578
  remove();
@@ -1574,6 +1586,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
1574
1586
  delete leavingVNodesCache[key2];
1575
1587
  }
1576
1588
  };
1589
+ const done = el[leaveCbKey].bind(null, false);
1577
1590
  leavingVNodesCache[key2] = vnode;
1578
1591
  if (onLeave) {
1579
1592
  callAsyncHook(onLeave, [el, done]);
@@ -1686,8 +1699,7 @@ function useTemplateRef(key) {
1686
1699
  const r = reactivity.shallowRef(null);
1687
1700
  if (i) {
1688
1701
  const refs = i.refs === shared.EMPTY_OBJ ? i.refs = {} : i.refs;
1689
- let desc;
1690
- if ((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) {
1702
+ if (isTemplateRefKey(refs, key)) {
1691
1703
  warn$1(`useTemplateRef('${key}') already exists.`);
1692
1704
  } else {
1693
1705
  Object.defineProperty(refs, key, {
@@ -1707,6 +1719,10 @@ function useTemplateRef(key) {
1707
1719
  }
1708
1720
  return ret;
1709
1721
  }
1722
+ function isTemplateRefKey(refs, key) {
1723
+ let desc;
1724
+ return !!((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable);
1725
+ }
1710
1726
 
1711
1727
  const pendingSetRefMap = /* @__PURE__ */ new WeakMap();
1712
1728
  function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
@@ -1752,10 +1768,19 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1752
1768
  return false;
1753
1769
  }
1754
1770
  }
1771
+ if (isTemplateRefKey(refs, key)) {
1772
+ return false;
1773
+ }
1755
1774
  return shared.hasOwn(rawSetupState, key);
1756
1775
  };
1757
- const canSetRef = (ref2) => {
1758
- return !knownTemplateRefs.has(ref2);
1776
+ const canSetRef = (ref2, key) => {
1777
+ if (knownTemplateRefs.has(ref2)) {
1778
+ return false;
1779
+ }
1780
+ if (key && isTemplateRefKey(refs, key)) {
1781
+ return false;
1782
+ }
1783
+ return true;
1759
1784
  };
1760
1785
  if (oldRef != null && oldRef !== ref) {
1761
1786
  invalidatePendingSetRef(oldRawRef);
@@ -1765,10 +1790,10 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1765
1790
  setupState[oldRef] = null;
1766
1791
  }
1767
1792
  } else if (reactivity.isRef(oldRef)) {
1768
- if (canSetRef(oldRef)) {
1793
+ const oldRawRefAtom = oldRawRef;
1794
+ if (canSetRef(oldRef, oldRawRefAtom.k)) {
1769
1795
  oldRef.value = null;
1770
1796
  }
1771
- const oldRawRefAtom = oldRawRef;
1772
1797
  if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;
1773
1798
  }
1774
1799
  }
@@ -1792,7 +1817,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1792
1817
  }
1793
1818
  } else {
1794
1819
  const newVal = [refValue];
1795
- if (canSetRef(ref)) {
1820
+ if (canSetRef(ref, rawRef.k)) {
1796
1821
  ref.value = newVal;
1797
1822
  }
1798
1823
  if (rawRef.k) refs[rawRef.k] = newVal;
@@ -1807,7 +1832,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1807
1832
  setupState[ref] = value;
1808
1833
  }
1809
1834
  } else if (_isRef) {
1810
- if (canSetRef(ref)) {
1835
+ if (canSetRef(ref, rawRef.k)) {
1811
1836
  ref.value = value;
1812
1837
  }
1813
1838
  if (rawRef.k) refs[rawRef.k] = value;
@@ -3597,13 +3622,24 @@ function withAsyncContext(getAwaitable) {
3597
3622
  }
3598
3623
  let awaitable = getAwaitable();
3599
3624
  unsetCurrentInstance();
3625
+ const cleanup = () => {
3626
+ if (getCurrentInstance() !== ctx) ctx.scope.off();
3627
+ unsetCurrentInstance();
3628
+ };
3600
3629
  if (shared.isPromise(awaitable)) {
3601
3630
  awaitable = awaitable.catch((e) => {
3602
3631
  setCurrentInstance(ctx);
3632
+ Promise.resolve().then(() => Promise.resolve().then(cleanup));
3603
3633
  throw e;
3604
3634
  });
3605
3635
  }
3606
- return [awaitable, () => setCurrentInstance(ctx)];
3636
+ return [
3637
+ awaitable,
3638
+ () => {
3639
+ setCurrentInstance(ctx);
3640
+ Promise.resolve().then(cleanup);
3641
+ }
3642
+ ];
3607
3643
  }
3608
3644
 
3609
3645
  function createDuplicateChecker() {
@@ -4668,7 +4704,7 @@ function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
4668
4704
  const dynamicProps = nextVNode.dynamicProps;
4669
4705
  for (let i = 0; i < dynamicProps.length; i++) {
4670
4706
  const key = dynamicProps[i];
4671
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {
4707
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emits, key)) {
4672
4708
  return true;
4673
4709
  }
4674
4710
  }
@@ -4699,12 +4735,20 @@ function hasPropsChanged(prevProps, nextProps, emitsOptions) {
4699
4735
  }
4700
4736
  for (let i = 0; i < nextKeys.length; i++) {
4701
4737
  const key = nextKeys[i];
4702
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {
4738
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) {
4703
4739
  return true;
4704
4740
  }
4705
4741
  }
4706
4742
  return false;
4707
4743
  }
4744
+ function hasPropValueChanged(nextProps, prevProps, key) {
4745
+ const nextProp = nextProps[key];
4746
+ const prevProp = prevProps[key];
4747
+ if (key === "style" && shared.isObject(nextProp) && shared.isObject(prevProp)) {
4748
+ return !shared.looseEqual(nextProp, prevProp);
4749
+ }
4750
+ return nextProp !== prevProp;
4751
+ }
4708
4752
  function updateHOCHostEl({ vnode, parent }, el) {
4709
4753
  while (parent) {
4710
4754
  const root = parent.subTree;
@@ -5408,15 +5452,7 @@ function baseCreateRenderer(options, createHydrationFns) {
5408
5452
  } else {
5409
5453
  const el = n2.el = n1.el;
5410
5454
  if (n2.children !== n1.children) {
5411
- if (isHmrUpdating && n2.patchFlag === -1 && "__elIndex" in n1) {
5412
- const childNodes = container.childNodes;
5413
- const newChild = hostCreateText(n2.children);
5414
- const oldChild = childNodes[n2.__elIndex = n1.__elIndex];
5415
- hostInsert(newChild, container, oldChild);
5416
- hostRemove(oldChild);
5417
- } else {
5418
- hostSetText(el, n2.children);
5419
- }
5455
+ hostSetText(el, n2.children);
5420
5456
  }
5421
5457
  }
5422
5458
  };
@@ -5492,7 +5528,7 @@ function baseCreateRenderer(options, createHydrationFns) {
5492
5528
  optimized
5493
5529
  );
5494
5530
  } else {
5495
- const customElement = !!(n1.el && n1.el._isVueCE) ? n1.el : null;
5531
+ const customElement = n1.el && n1.el._isVueCE ? n1.el : null;
5496
5532
  try {
5497
5533
  if (customElement) {
5498
5534
  customElement._beginPatch();
@@ -5974,8 +6010,7 @@ function baseCreateRenderer(options, createHydrationFns) {
5974
6010
  hydrateSubTree();
5975
6011
  }
5976
6012
  } else {
5977
- if (root.ce && // @ts-expect-error _def is private
5978
- root.ce._def.shadowRoot !== false) {
6013
+ if (root.ce && root.ce._hasShadowRoot()) {
5979
6014
  root.ce._injectChildStyle(type);
5980
6015
  }
5981
6016
  {
@@ -6030,9 +6065,9 @@ function baseCreateRenderer(options, createHydrationFns) {
6030
6065
  updateComponentPreRender(instance, next, optimized);
6031
6066
  }
6032
6067
  nonHydratedAsyncRoot.asyncDep.then(() => {
6033
- if (!instance.isUnmounted) {
6034
- componentUpdateFn();
6035
- }
6068
+ queuePostRenderEffect(() => {
6069
+ if (!instance.isUnmounted) update();
6070
+ }, parentSuspense);
6036
6071
  });
6037
6072
  return;
6038
6073
  }
@@ -6729,12 +6764,10 @@ function traverseStaticChildren(n1, n2, shallow = false) {
6729
6764
  traverseStaticChildren(c1, c2);
6730
6765
  }
6731
6766
  if (c2.type === Text) {
6732
- if (c2.patchFlag !== -1) {
6733
- c2.el = c1.el;
6734
- } else {
6735
- c2.__elIndex = i + // take fragment start anchor into account
6736
- (n1.type === Fragment ? 1 : 0);
6767
+ if (c2.patchFlag === -1) {
6768
+ c2 = ch2[i] = cloneIfMounted(c2);
6737
6769
  }
6770
+ c2.el = c1.el;
6738
6771
  }
6739
6772
  if (c2.type === Comment && !c2.el) {
6740
6773
  c2.el = c1.el;
@@ -8460,7 +8493,7 @@ function isMemoSame(cached, memo) {
8460
8493
  return true;
8461
8494
  }
8462
8495
 
8463
- const version = "3.5.27";
8496
+ const version = "3.5.29";
8464
8497
  const warn = warn$1 ;
8465
8498
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
8466
8499
  const devtools = devtools$1 ;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/runtime-core v3.5.27
2
+ * @vue/runtime-core v3.5.29
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -750,7 +750,22 @@ function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }
750
750
  function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {
751
751
  o: { nextSibling, parentNode, querySelector, insert, createText }
752
752
  }, hydrateChildren) {
753
- function hydrateDisabledTeleport(node2, vnode2, targetStart, targetAnchor) {
753
+ function hydrateAnchor(target2, targetNode) {
754
+ let targetAnchor = targetNode;
755
+ while (targetAnchor) {
756
+ if (targetAnchor && targetAnchor.nodeType === 8) {
757
+ if (targetAnchor.data === "teleport start anchor") {
758
+ vnode.targetStart = targetAnchor;
759
+ } else if (targetAnchor.data === "teleport anchor") {
760
+ vnode.targetAnchor = targetAnchor;
761
+ target2._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
762
+ break;
763
+ }
764
+ }
765
+ targetAnchor = nextSibling(targetAnchor);
766
+ }
767
+ }
768
+ function hydrateDisabledTeleport(node2, vnode2) {
754
769
  vnode2.anchor = hydrateChildren(
755
770
  nextSibling(node2),
756
771
  vnode2,
@@ -760,8 +775,6 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
760
775
  slotScopeIds,
761
776
  optimized
762
777
  );
763
- vnode2.targetStart = targetStart;
764
- vnode2.targetAnchor = targetAnchor;
765
778
  }
766
779
  const target = vnode.target = resolveTarget(
767
780
  vnode.props,
@@ -772,27 +785,22 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
772
785
  const targetNode = target._lpa || target.firstChild;
773
786
  if (vnode.shapeFlag & 16) {
774
787
  if (disabled) {
775
- hydrateDisabledTeleport(
776
- node,
777
- vnode,
778
- targetNode,
779
- targetNode && nextSibling(targetNode)
780
- );
788
+ hydrateDisabledTeleport(node, vnode);
789
+ hydrateAnchor(target, targetNode);
790
+ if (!vnode.targetAnchor) {
791
+ prepareAnchor(
792
+ target,
793
+ vnode,
794
+ createText,
795
+ insert,
796
+ // if target is the same as the main view, insert anchors before current node
797
+ // to avoid hydrating mismatch
798
+ parentNode(node) === target ? node : null
799
+ );
800
+ }
781
801
  } else {
782
802
  vnode.anchor = nextSibling(node);
783
- let targetAnchor = targetNode;
784
- while (targetAnchor) {
785
- if (targetAnchor && targetAnchor.nodeType === 8) {
786
- if (targetAnchor.data === "teleport start anchor") {
787
- vnode.targetStart = targetAnchor;
788
- } else if (targetAnchor.data === "teleport anchor") {
789
- vnode.targetAnchor = targetAnchor;
790
- target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
791
- break;
792
- }
793
- }
794
- targetAnchor = nextSibling(targetAnchor);
795
- }
803
+ hydrateAnchor(target, targetNode);
796
804
  if (!vnode.targetAnchor) {
797
805
  prepareAnchor(target, vnode, createText, insert);
798
806
  }
@@ -810,7 +818,9 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
810
818
  updateCssVars(vnode, disabled);
811
819
  } else if (disabled) {
812
820
  if (vnode.shapeFlag & 16) {
813
- hydrateDisabledTeleport(node, vnode, node, nextSibling(node));
821
+ hydrateDisabledTeleport(node, vnode);
822
+ vnode.targetStart = node;
823
+ vnode.targetAnchor = nextSibling(node);
814
824
  }
815
825
  }
816
826
  return vnode.anchor && nextSibling(vnode.anchor);
@@ -834,13 +844,13 @@ function updateCssVars(vnode, isDisabled) {
834
844
  ctx.ut();
835
845
  }
836
846
  }
837
- function prepareAnchor(target, vnode, createText, insert) {
847
+ function prepareAnchor(target, vnode, createText, insert, anchor = null) {
838
848
  const targetStart = vnode.targetStart = createText("");
839
849
  const targetAnchor = vnode.targetAnchor = createText("");
840
850
  targetStart[TeleportEndKey] = targetAnchor;
841
851
  if (target) {
842
- insert(targetStart, target);
843
- insert(targetAnchor, target);
852
+ insert(targetStart, target, anchor);
853
+ insert(targetAnchor, target, anchor);
844
854
  }
845
855
  return targetAnchor;
846
856
  }
@@ -1052,6 +1062,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
1052
1062
  callHook(hook, [el]);
1053
1063
  },
1054
1064
  enter(el) {
1065
+ if (leavingVNodesCache[key] === vnode) return;
1055
1066
  let hook = onEnter;
1056
1067
  let afterHook = onAfterEnter;
1057
1068
  let cancelHook = onEnterCancelled;
@@ -1065,7 +1076,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
1065
1076
  }
1066
1077
  }
1067
1078
  let called = false;
1068
- const done = el[enterCbKey] = (cancelled) => {
1079
+ el[enterCbKey] = (cancelled) => {
1069
1080
  if (called) return;
1070
1081
  called = true;
1071
1082
  if (cancelled) {
@@ -1078,6 +1089,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
1078
1089
  }
1079
1090
  el[enterCbKey] = void 0;
1080
1091
  };
1092
+ const done = el[enterCbKey].bind(null, false);
1081
1093
  if (hook) {
1082
1094
  callAsyncHook(hook, [el, done]);
1083
1095
  } else {
@@ -1097,7 +1109,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
1097
1109
  }
1098
1110
  callHook(onBeforeLeave, [el]);
1099
1111
  let called = false;
1100
- const done = el[leaveCbKey] = (cancelled) => {
1112
+ el[leaveCbKey] = (cancelled) => {
1101
1113
  if (called) return;
1102
1114
  called = true;
1103
1115
  remove();
@@ -1111,6 +1123,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
1111
1123
  delete leavingVNodesCache[key2];
1112
1124
  }
1113
1125
  };
1126
+ const done = el[leaveCbKey].bind(null, false);
1114
1127
  leavingVNodesCache[key2] = vnode;
1115
1128
  if (onLeave) {
1116
1129
  callAsyncHook(onLeave, [el, done]);
@@ -1229,6 +1242,10 @@ function useTemplateRef(key) {
1229
1242
  const ret = r;
1230
1243
  return ret;
1231
1244
  }
1245
+ function isTemplateRefKey(refs, key) {
1246
+ let desc;
1247
+ return !!((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable);
1248
+ }
1232
1249
 
1233
1250
  const pendingSetRefMap = /* @__PURE__ */ new WeakMap();
1234
1251
  function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
@@ -1258,8 +1275,17 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1258
1275
  const setupState = owner.setupState;
1259
1276
  const rawSetupState = reactivity.toRaw(setupState);
1260
1277
  const canSetSetupRef = setupState === shared.EMPTY_OBJ ? shared.NO : (key) => {
1278
+ if (isTemplateRefKey(refs, key)) {
1279
+ return false;
1280
+ }
1261
1281
  return shared.hasOwn(rawSetupState, key);
1262
1282
  };
1283
+ const canSetRef = (ref2, key) => {
1284
+ if (key && isTemplateRefKey(refs, key)) {
1285
+ return false;
1286
+ }
1287
+ return true;
1288
+ };
1263
1289
  if (oldRef != null && oldRef !== ref) {
1264
1290
  invalidatePendingSetRef(oldRawRef);
1265
1291
  if (shared.isString(oldRef)) {
@@ -1268,10 +1294,10 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1268
1294
  setupState[oldRef] = null;
1269
1295
  }
1270
1296
  } else if (reactivity.isRef(oldRef)) {
1271
- {
1297
+ const oldRawRefAtom = oldRawRef;
1298
+ if (canSetRef(oldRef, oldRawRefAtom.k)) {
1272
1299
  oldRef.value = null;
1273
1300
  }
1274
- const oldRawRefAtom = oldRawRef;
1275
1301
  if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;
1276
1302
  }
1277
1303
  }
@@ -1283,7 +1309,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1283
1309
  if (_isString || _isRef) {
1284
1310
  const doSet = () => {
1285
1311
  if (rawRef.f) {
1286
- const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : ref.value ;
1312
+ const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : canSetRef() || !rawRef.k ? ref.value : refs[rawRef.k];
1287
1313
  if (isUnmount) {
1288
1314
  shared.isArray(existing) && shared.remove(existing, refValue);
1289
1315
  } else {
@@ -1295,7 +1321,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1295
1321
  }
1296
1322
  } else {
1297
1323
  const newVal = [refValue];
1298
- {
1324
+ if (canSetRef(ref, rawRef.k)) {
1299
1325
  ref.value = newVal;
1300
1326
  }
1301
1327
  if (rawRef.k) refs[rawRef.k] = newVal;
@@ -1310,7 +1336,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1310
1336
  setupState[ref] = value;
1311
1337
  }
1312
1338
  } else if (_isRef) {
1313
- {
1339
+ if (canSetRef(ref, rawRef.k)) {
1314
1340
  ref.value = value;
1315
1341
  }
1316
1342
  if (rawRef.k) refs[rawRef.k] = value;
@@ -2734,13 +2760,24 @@ function withAsyncContext(getAwaitable) {
2734
2760
  const ctx = getCurrentInstance();
2735
2761
  let awaitable = getAwaitable();
2736
2762
  unsetCurrentInstance();
2763
+ const cleanup = () => {
2764
+ if (getCurrentInstance() !== ctx) ctx.scope.off();
2765
+ unsetCurrentInstance();
2766
+ };
2737
2767
  if (shared.isPromise(awaitable)) {
2738
2768
  awaitable = awaitable.catch((e) => {
2739
2769
  setCurrentInstance(ctx);
2770
+ Promise.resolve().then(() => Promise.resolve().then(cleanup));
2740
2771
  throw e;
2741
2772
  });
2742
2773
  }
2743
- return [awaitable, () => setCurrentInstance(ctx)];
2774
+ return [
2775
+ awaitable,
2776
+ () => {
2777
+ setCurrentInstance(ctx);
2778
+ Promise.resolve().then(cleanup);
2779
+ }
2780
+ ];
2744
2781
  }
2745
2782
 
2746
2783
  let shouldCacheAccess = true;
@@ -3527,7 +3564,7 @@ function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
3527
3564
  const dynamicProps = nextVNode.dynamicProps;
3528
3565
  for (let i = 0; i < dynamicProps.length; i++) {
3529
3566
  const key = dynamicProps[i];
3530
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {
3567
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emits, key)) {
3531
3568
  return true;
3532
3569
  }
3533
3570
  }
@@ -3558,12 +3595,20 @@ function hasPropsChanged(prevProps, nextProps, emitsOptions) {
3558
3595
  }
3559
3596
  for (let i = 0; i < nextKeys.length; i++) {
3560
3597
  const key = nextKeys[i];
3561
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {
3598
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) {
3562
3599
  return true;
3563
3600
  }
3564
3601
  }
3565
3602
  return false;
3566
3603
  }
3604
+ function hasPropValueChanged(nextProps, prevProps, key) {
3605
+ const nextProp = nextProps[key];
3606
+ const prevProp = prevProps[key];
3607
+ if (key === "style" && shared.isObject(nextProp) && shared.isObject(prevProp)) {
3608
+ return !shared.looseEqual(nextProp, prevProp);
3609
+ }
3610
+ return nextProp !== prevProp;
3611
+ }
3567
3612
  function updateHOCHostEl({ vnode, parent }, el) {
3568
3613
  while (parent) {
3569
3614
  const root = parent.subTree;
@@ -4070,9 +4115,7 @@ function baseCreateRenderer(options, createHydrationFns) {
4070
4115
  } else {
4071
4116
  const el = n2.el = n1.el;
4072
4117
  if (n2.children !== n1.children) {
4073
- {
4074
- hostSetText(el, n2.children);
4075
- }
4118
+ hostSetText(el, n2.children);
4076
4119
  }
4077
4120
  }
4078
4121
  };
@@ -4133,7 +4176,7 @@ function baseCreateRenderer(options, createHydrationFns) {
4133
4176
  optimized
4134
4177
  );
4135
4178
  } else {
4136
- const customElement = !!(n1.el && n1.el._isVueCE) ? n1.el : null;
4179
+ const customElement = n1.el && n1.el._isVueCE ? n1.el : null;
4137
4180
  try {
4138
4181
  if (customElement) {
4139
4182
  customElement._beginPatch();
@@ -4564,8 +4607,7 @@ function baseCreateRenderer(options, createHydrationFns) {
4564
4607
  hydrateSubTree();
4565
4608
  }
4566
4609
  } else {
4567
- if (root.ce && // @ts-expect-error _def is private
4568
- root.ce._def.shadowRoot !== false) {
4610
+ if (root.ce && root.ce._hasShadowRoot()) {
4569
4611
  root.ce._injectChildStyle(type);
4570
4612
  }
4571
4613
  const subTree = instance.subTree = renderComponentRoot(instance);
@@ -4605,9 +4647,9 @@ function baseCreateRenderer(options, createHydrationFns) {
4605
4647
  updateComponentPreRender(instance, next, optimized);
4606
4648
  }
4607
4649
  nonHydratedAsyncRoot.asyncDep.then(() => {
4608
- if (!instance.isUnmounted) {
4609
- componentUpdateFn();
4610
- }
4650
+ queuePostRenderEffect(() => {
4651
+ if (!instance.isUnmounted) update();
4652
+ }, parentSuspense);
4611
4653
  });
4612
4654
  return;
4613
4655
  }
@@ -5258,12 +5300,10 @@ function traverseStaticChildren(n1, n2, shallow = false) {
5258
5300
  traverseStaticChildren(c1, c2);
5259
5301
  }
5260
5302
  if (c2.type === Text) {
5261
- if (c2.patchFlag !== -1) {
5262
- c2.el = c1.el;
5263
- } else {
5264
- c2.__elIndex = i + // take fragment start anchor into account
5265
- (n1.type === Fragment ? 1 : 0);
5303
+ if (c2.patchFlag === -1) {
5304
+ c2 = ch2[i] = cloneIfMounted(c2);
5266
5305
  }
5306
+ c2.el = c1.el;
5267
5307
  }
5268
5308
  if (c2.type === Comment && !c2.el) {
5269
5309
  c2.el = c1.el;
@@ -6600,7 +6640,7 @@ function isMemoSame(cached, memo) {
6600
6640
  return true;
6601
6641
  }
6602
6642
 
6603
- const version = "3.5.27";
6643
+ const version = "3.5.29";
6604
6644
  const warn$1 = shared.NOOP;
6605
6645
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
6606
6646
  const devtools = void 0;
@@ -1,6 +1,6 @@
1
1
  import { computed as computed$1, Ref, OnCleanup, WatchStopHandle, ShallowUnwrapRef, UnwrapNestedRefs, DebuggerEvent, ComputedGetter, WritableComputedOptions, WatchCallback, ReactiveEffect, DebuggerOptions, WatchSource, WatchHandle, ReactiveMarker, WatchEffect, ShallowRef, WatchErrorCodes, reactive } from '@vue/reactivity';
2
2
  export { ComputedGetter, ComputedRef, ComputedSetter, CustomRefFactory, DebuggerEvent, DebuggerEventExtraInfo, DebuggerOptions, DeepReadonly, EffectScheduler, EffectScope, MaybeRef, MaybeRefOrGetter, Raw, Reactive, ReactiveEffect, ReactiveEffectOptions, ReactiveEffectRunner, ReactiveFlags, Ref, ShallowReactive, ShallowRef, ShallowUnwrapRef, ToRef, ToRefs, TrackOpTypes, TriggerOpTypes, UnwrapNestedRefs, UnwrapRef, WatchCallback, WatchEffect, WatchHandle, WatchSource, WatchStopHandle, WritableComputedOptions, WritableComputedRef, customRef, effect, effectScope, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, onWatcherCleanup, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity';
3
- import { IfAny, Prettify, LooseRequired, UnionToIntersection, OverloadParameters, IsKeyValues } from '@vue/shared';
3
+ import { IfAny, Prettify, UnionToIntersection, LooseRequired, OverloadParameters, IsKeyValues } from '@vue/shared';
4
4
  export { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';
5
5
 
6
6
  export declare const computed: typeof computed$1;
@@ -1,11 +1,11 @@
1
1
  /**
2
- * @vue/runtime-core v3.5.27
2
+ * @vue/runtime-core v3.5.29
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
6
6
  import { pauseTracking, resetTracking, isRef, toRaw, traverse, watch as watch$1, shallowRef, readonly, isReactive, ref, isShallow, isReadonly, shallowReadArray, toReadonly, toReactive, shallowReadonly, track, reactive, customRef, shallowReactive, trigger, ReactiveEffect, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1 } from '@vue/reactivity';
7
7
  export { EffectScope, ReactiveEffect, TrackOpTypes, TriggerOpTypes, customRef, effect, effectScope, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, onWatcherCleanup, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity';
8
- import { isString, isFunction, EMPTY_OBJ, isPromise, isArray, NOOP, getGlobalThis, extend, isBuiltInDirective, NO, hasOwn, remove, def, isOn, isReservedProp, normalizeClass, stringifyStyle, normalizeStyle, isKnownSvgAttr, isBooleanAttr, isKnownHtmlAttr, includeBooleanAttr, isRenderableAttrValue, normalizeCssVarValue, getEscapedCssVarName, isObject, isRegExp, invokeArrayFns, toHandlerKey, camelize, capitalize, isSymbol, isGloballyAllowed, hyphenate, hasChanged, looseToNumber, isModelListener, EMPTY_ARR, makeMap, toRawType, toNumber } from '@vue/shared';
8
+ import { isString, isFunction, EMPTY_OBJ, isPromise, isArray, NOOP, getGlobalThis, extend, isBuiltInDirective, NO, hasOwn, remove, def, isOn, isReservedProp, normalizeClass, stringifyStyle, normalizeStyle, isKnownSvgAttr, isBooleanAttr, isKnownHtmlAttr, includeBooleanAttr, isRenderableAttrValue, normalizeCssVarValue, getEscapedCssVarName, isObject, isRegExp, invokeArrayFns, toHandlerKey, camelize, capitalize, isSymbol, isGloballyAllowed, hyphenate, hasChanged, looseToNumber, isModelListener, looseEqual, EMPTY_ARR, toRawType, makeMap, toNumber } from '@vue/shared';
9
9
  export { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';
10
10
 
11
11
  const stack = [];
@@ -1206,7 +1206,22 @@ function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }
1206
1206
  function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {
1207
1207
  o: { nextSibling, parentNode, querySelector, insert, createText }
1208
1208
  }, hydrateChildren) {
1209
- function hydrateDisabledTeleport(node2, vnode2, targetStart, targetAnchor) {
1209
+ function hydrateAnchor(target2, targetNode) {
1210
+ let targetAnchor = targetNode;
1211
+ while (targetAnchor) {
1212
+ if (targetAnchor && targetAnchor.nodeType === 8) {
1213
+ if (targetAnchor.data === "teleport start anchor") {
1214
+ vnode.targetStart = targetAnchor;
1215
+ } else if (targetAnchor.data === "teleport anchor") {
1216
+ vnode.targetAnchor = targetAnchor;
1217
+ target2._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
1218
+ break;
1219
+ }
1220
+ }
1221
+ targetAnchor = nextSibling(targetAnchor);
1222
+ }
1223
+ }
1224
+ function hydrateDisabledTeleport(node2, vnode2) {
1210
1225
  vnode2.anchor = hydrateChildren(
1211
1226
  nextSibling(node2),
1212
1227
  vnode2,
@@ -1216,8 +1231,6 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
1216
1231
  slotScopeIds,
1217
1232
  optimized
1218
1233
  );
1219
- vnode2.targetStart = targetStart;
1220
- vnode2.targetAnchor = targetAnchor;
1221
1234
  }
1222
1235
  const target = vnode.target = resolveTarget(
1223
1236
  vnode.props,
@@ -1228,27 +1241,22 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
1228
1241
  const targetNode = target._lpa || target.firstChild;
1229
1242
  if (vnode.shapeFlag & 16) {
1230
1243
  if (disabled) {
1231
- hydrateDisabledTeleport(
1232
- node,
1233
- vnode,
1234
- targetNode,
1235
- targetNode && nextSibling(targetNode)
1236
- );
1244
+ hydrateDisabledTeleport(node, vnode);
1245
+ hydrateAnchor(target, targetNode);
1246
+ if (!vnode.targetAnchor) {
1247
+ prepareAnchor(
1248
+ target,
1249
+ vnode,
1250
+ createText,
1251
+ insert,
1252
+ // if target is the same as the main view, insert anchors before current node
1253
+ // to avoid hydrating mismatch
1254
+ parentNode(node) === target ? node : null
1255
+ );
1256
+ }
1237
1257
  } else {
1238
1258
  vnode.anchor = nextSibling(node);
1239
- let targetAnchor = targetNode;
1240
- while (targetAnchor) {
1241
- if (targetAnchor && targetAnchor.nodeType === 8) {
1242
- if (targetAnchor.data === "teleport start anchor") {
1243
- vnode.targetStart = targetAnchor;
1244
- } else if (targetAnchor.data === "teleport anchor") {
1245
- vnode.targetAnchor = targetAnchor;
1246
- target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
1247
- break;
1248
- }
1249
- }
1250
- targetAnchor = nextSibling(targetAnchor);
1251
- }
1259
+ hydrateAnchor(target, targetNode);
1252
1260
  if (!vnode.targetAnchor) {
1253
1261
  prepareAnchor(target, vnode, createText, insert);
1254
1262
  }
@@ -1266,7 +1274,9 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
1266
1274
  updateCssVars(vnode, disabled);
1267
1275
  } else if (disabled) {
1268
1276
  if (vnode.shapeFlag & 16) {
1269
- hydrateDisabledTeleport(node, vnode, node, nextSibling(node));
1277
+ hydrateDisabledTeleport(node, vnode);
1278
+ vnode.targetStart = node;
1279
+ vnode.targetAnchor = nextSibling(node);
1270
1280
  }
1271
1281
  }
1272
1282
  return vnode.anchor && nextSibling(vnode.anchor);
@@ -1290,13 +1300,13 @@ function updateCssVars(vnode, isDisabled) {
1290
1300
  ctx.ut();
1291
1301
  }
1292
1302
  }
1293
- function prepareAnchor(target, vnode, createText, insert) {
1303
+ function prepareAnchor(target, vnode, createText, insert, anchor = null) {
1294
1304
  const targetStart = vnode.targetStart = createText("");
1295
1305
  const targetAnchor = vnode.targetAnchor = createText("");
1296
1306
  targetStart[TeleportEndKey] = targetAnchor;
1297
1307
  if (target) {
1298
- insert(targetStart, target);
1299
- insert(targetAnchor, target);
1308
+ insert(targetStart, target, anchor);
1309
+ insert(targetAnchor, target, anchor);
1300
1310
  }
1301
1311
  return targetAnchor;
1302
1312
  }
@@ -1519,6 +1529,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
1519
1529
  callHook(hook, [el]);
1520
1530
  },
1521
1531
  enter(el) {
1532
+ if (leavingVNodesCache[key] === vnode) return;
1522
1533
  let hook = onEnter;
1523
1534
  let afterHook = onAfterEnter;
1524
1535
  let cancelHook = onEnterCancelled;
@@ -1532,7 +1543,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
1532
1543
  }
1533
1544
  }
1534
1545
  let called = false;
1535
- const done = el[enterCbKey] = (cancelled) => {
1546
+ el[enterCbKey] = (cancelled) => {
1536
1547
  if (called) return;
1537
1548
  called = true;
1538
1549
  if (cancelled) {
@@ -1545,6 +1556,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
1545
1556
  }
1546
1557
  el[enterCbKey] = void 0;
1547
1558
  };
1559
+ const done = el[enterCbKey].bind(null, false);
1548
1560
  if (hook) {
1549
1561
  callAsyncHook(hook, [el, done]);
1550
1562
  } else {
@@ -1564,7 +1576,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
1564
1576
  }
1565
1577
  callHook(onBeforeLeave, [el]);
1566
1578
  let called = false;
1567
- const done = el[leaveCbKey] = (cancelled) => {
1579
+ el[leaveCbKey] = (cancelled) => {
1568
1580
  if (called) return;
1569
1581
  called = true;
1570
1582
  remove();
@@ -1578,6 +1590,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
1578
1590
  delete leavingVNodesCache[key2];
1579
1591
  }
1580
1592
  };
1593
+ const done = el[leaveCbKey].bind(null, false);
1581
1594
  leavingVNodesCache[key2] = vnode;
1582
1595
  if (onLeave) {
1583
1596
  callAsyncHook(onLeave, [el, done]);
@@ -1690,8 +1703,7 @@ function useTemplateRef(key) {
1690
1703
  const r = shallowRef(null);
1691
1704
  if (i) {
1692
1705
  const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs;
1693
- let desc;
1694
- if (!!(process.env.NODE_ENV !== "production") && (desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) {
1706
+ if (!!(process.env.NODE_ENV !== "production") && isTemplateRefKey(refs, key)) {
1695
1707
  warn$1(`useTemplateRef('${key}') already exists.`);
1696
1708
  } else {
1697
1709
  Object.defineProperty(refs, key, {
@@ -1711,6 +1723,10 @@ function useTemplateRef(key) {
1711
1723
  }
1712
1724
  return ret;
1713
1725
  }
1726
+ function isTemplateRefKey(refs, key) {
1727
+ let desc;
1728
+ return !!((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable);
1729
+ }
1714
1730
 
1715
1731
  const pendingSetRefMap = /* @__PURE__ */ new WeakMap();
1716
1732
  function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
@@ -1756,10 +1772,19 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1756
1772
  return false;
1757
1773
  }
1758
1774
  }
1775
+ if (isTemplateRefKey(refs, key)) {
1776
+ return false;
1777
+ }
1759
1778
  return hasOwn(rawSetupState, key);
1760
1779
  };
1761
- const canSetRef = (ref2) => {
1762
- return !!!(process.env.NODE_ENV !== "production") || !knownTemplateRefs.has(ref2);
1780
+ const canSetRef = (ref2, key) => {
1781
+ if (!!(process.env.NODE_ENV !== "production") && knownTemplateRefs.has(ref2)) {
1782
+ return false;
1783
+ }
1784
+ if (key && isTemplateRefKey(refs, key)) {
1785
+ return false;
1786
+ }
1787
+ return true;
1763
1788
  };
1764
1789
  if (oldRef != null && oldRef !== ref) {
1765
1790
  invalidatePendingSetRef(oldRawRef);
@@ -1769,10 +1794,10 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1769
1794
  setupState[oldRef] = null;
1770
1795
  }
1771
1796
  } else if (isRef(oldRef)) {
1772
- if (canSetRef(oldRef)) {
1797
+ const oldRawRefAtom = oldRawRef;
1798
+ if (canSetRef(oldRef, oldRawRefAtom.k)) {
1773
1799
  oldRef.value = null;
1774
1800
  }
1775
- const oldRawRefAtom = oldRawRef;
1776
1801
  if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;
1777
1802
  }
1778
1803
  }
@@ -1796,7 +1821,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1796
1821
  }
1797
1822
  } else {
1798
1823
  const newVal = [refValue];
1799
- if (canSetRef(ref)) {
1824
+ if (canSetRef(ref, rawRef.k)) {
1800
1825
  ref.value = newVal;
1801
1826
  }
1802
1827
  if (rawRef.k) refs[rawRef.k] = newVal;
@@ -1811,7 +1836,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1811
1836
  setupState[ref] = value;
1812
1837
  }
1813
1838
  } else if (_isRef) {
1814
- if (canSetRef(ref)) {
1839
+ if (canSetRef(ref, rawRef.k)) {
1815
1840
  ref.value = value;
1816
1841
  }
1817
1842
  if (rawRef.k) refs[rawRef.k] = value;
@@ -3615,13 +3640,24 @@ function withAsyncContext(getAwaitable) {
3615
3640
  }
3616
3641
  let awaitable = getAwaitable();
3617
3642
  unsetCurrentInstance();
3643
+ const cleanup = () => {
3644
+ if (getCurrentInstance() !== ctx) ctx.scope.off();
3645
+ unsetCurrentInstance();
3646
+ };
3618
3647
  if (isPromise(awaitable)) {
3619
3648
  awaitable = awaitable.catch((e) => {
3620
3649
  setCurrentInstance(ctx);
3650
+ Promise.resolve().then(() => Promise.resolve().then(cleanup));
3621
3651
  throw e;
3622
3652
  });
3623
3653
  }
3624
- return [awaitable, () => setCurrentInstance(ctx)];
3654
+ return [
3655
+ awaitable,
3656
+ () => {
3657
+ setCurrentInstance(ctx);
3658
+ Promise.resolve().then(cleanup);
3659
+ }
3660
+ ];
3625
3661
  }
3626
3662
 
3627
3663
  function createDuplicateChecker() {
@@ -4690,7 +4726,7 @@ function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
4690
4726
  const dynamicProps = nextVNode.dynamicProps;
4691
4727
  for (let i = 0; i < dynamicProps.length; i++) {
4692
4728
  const key = dynamicProps[i];
4693
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {
4729
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emits, key)) {
4694
4730
  return true;
4695
4731
  }
4696
4732
  }
@@ -4721,12 +4757,20 @@ function hasPropsChanged(prevProps, nextProps, emitsOptions) {
4721
4757
  }
4722
4758
  for (let i = 0; i < nextKeys.length; i++) {
4723
4759
  const key = nextKeys[i];
4724
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {
4760
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) {
4725
4761
  return true;
4726
4762
  }
4727
4763
  }
4728
4764
  return false;
4729
4765
  }
4766
+ function hasPropValueChanged(nextProps, prevProps, key) {
4767
+ const nextProp = nextProps[key];
4768
+ const prevProp = prevProps[key];
4769
+ if (key === "style" && isObject(nextProp) && isObject(prevProp)) {
4770
+ return !looseEqual(nextProp, prevProp);
4771
+ }
4772
+ return nextProp !== prevProp;
4773
+ }
4730
4774
  function updateHOCHostEl({ vnode, parent }, el) {
4731
4775
  while (parent) {
4732
4776
  const root = parent.subTree;
@@ -5457,15 +5501,7 @@ function baseCreateRenderer(options, createHydrationFns) {
5457
5501
  } else {
5458
5502
  const el = n2.el = n1.el;
5459
5503
  if (n2.children !== n1.children) {
5460
- if (!!(process.env.NODE_ENV !== "production") && isHmrUpdating && n2.patchFlag === -1 && "__elIndex" in n1) {
5461
- const childNodes = container.childNodes;
5462
- const newChild = hostCreateText(n2.children);
5463
- const oldChild = childNodes[n2.__elIndex = n1.__elIndex];
5464
- hostInsert(newChild, container, oldChild);
5465
- hostRemove(oldChild);
5466
- } else {
5467
- hostSetText(el, n2.children);
5468
- }
5504
+ hostSetText(el, n2.children);
5469
5505
  }
5470
5506
  }
5471
5507
  };
@@ -5541,7 +5577,7 @@ function baseCreateRenderer(options, createHydrationFns) {
5541
5577
  optimized
5542
5578
  );
5543
5579
  } else {
5544
- const customElement = !!(n1.el && n1.el._isVueCE) ? n1.el : null;
5580
+ const customElement = n1.el && n1.el._isVueCE ? n1.el : null;
5545
5581
  try {
5546
5582
  if (customElement) {
5547
5583
  customElement._beginPatch();
@@ -6034,8 +6070,7 @@ function baseCreateRenderer(options, createHydrationFns) {
6034
6070
  hydrateSubTree();
6035
6071
  }
6036
6072
  } else {
6037
- if (root.ce && // @ts-expect-error _def is private
6038
- root.ce._def.shadowRoot !== false) {
6073
+ if (root.ce && root.ce._hasShadowRoot()) {
6039
6074
  root.ce._injectChildStyle(type);
6040
6075
  }
6041
6076
  if (!!(process.env.NODE_ENV !== "production")) {
@@ -6090,9 +6125,9 @@ function baseCreateRenderer(options, createHydrationFns) {
6090
6125
  updateComponentPreRender(instance, next, optimized);
6091
6126
  }
6092
6127
  nonHydratedAsyncRoot.asyncDep.then(() => {
6093
- if (!instance.isUnmounted) {
6094
- componentUpdateFn();
6095
- }
6128
+ queuePostRenderEffect(() => {
6129
+ if (!instance.isUnmounted) update();
6130
+ }, parentSuspense);
6096
6131
  });
6097
6132
  return;
6098
6133
  }
@@ -6789,12 +6824,10 @@ function traverseStaticChildren(n1, n2, shallow = false) {
6789
6824
  traverseStaticChildren(c1, c2);
6790
6825
  }
6791
6826
  if (c2.type === Text) {
6792
- if (c2.patchFlag !== -1) {
6793
- c2.el = c1.el;
6794
- } else {
6795
- c2.__elIndex = i + // take fragment start anchor into account
6796
- (n1.type === Fragment ? 1 : 0);
6827
+ if (c2.patchFlag === -1) {
6828
+ c2 = ch2[i] = cloneIfMounted(c2);
6797
6829
  }
6830
+ c2.el = c1.el;
6798
6831
  }
6799
6832
  if (c2.type === Comment && !c2.el) {
6800
6833
  c2.el = c1.el;
@@ -8534,7 +8567,7 @@ function isMemoSame(cached, memo) {
8534
8567
  return true;
8535
8568
  }
8536
8569
 
8537
- const version = "3.5.27";
8570
+ const version = "3.5.29";
8538
8571
  const warn = !!(process.env.NODE_ENV !== "production") ? warn$1 : NOOP;
8539
8572
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
8540
8573
  const devtools = !!(process.env.NODE_ENV !== "production") || true ? devtools$1 : void 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vue/runtime-core",
3
- "version": "3.5.27",
3
+ "version": "3.5.29",
4
4
  "description": "@vue/runtime-core",
5
5
  "main": "index.js",
6
6
  "module": "dist/runtime-core.esm-bundler.js",
@@ -46,7 +46,7 @@
46
46
  },
47
47
  "homepage": "https://github.com/vuejs/core/tree/main/packages/runtime-core#readme",
48
48
  "dependencies": {
49
- "@vue/shared": "3.5.27",
50
- "@vue/reactivity": "3.5.27"
49
+ "@vue/reactivity": "3.5.29",
50
+ "@vue/shared": "3.5.29"
51
51
  }
52
52
  }