@vue/runtime-core 3.6.0-beta.5 → 3.6.0-beta.7

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.6.0-beta.5
2
+ * @vue/runtime-core v3.6.0-beta.7
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -984,36 +984,44 @@ function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }
984
984
  if (isReorder) insert(anchor, container, parentAnchor);
985
985
  }
986
986
  function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { o: { nextSibling, parentNode, querySelector, insert, createText } }, hydrateChildren) {
987
- function hydrateDisabledTeleport(node, vnode, targetStart, targetAnchor) {
987
+ function hydrateAnchor(target, targetNode) {
988
+ let targetAnchor = targetNode;
989
+ while (targetAnchor) {
990
+ if (targetAnchor && targetAnchor.nodeType === 8) {
991
+ if (targetAnchor.data === "teleport start anchor") vnode.targetStart = targetAnchor;
992
+ else if (targetAnchor.data === "teleport anchor") {
993
+ vnode.targetAnchor = targetAnchor;
994
+ target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
995
+ break;
996
+ }
997
+ }
998
+ targetAnchor = nextSibling(targetAnchor);
999
+ }
1000
+ }
1001
+ function hydrateDisabledTeleport(node, vnode) {
988
1002
  vnode.anchor = hydrateChildren(nextSibling(node), vnode, parentNode(node), parentComponent, parentSuspense, slotScopeIds, optimized);
989
- vnode.targetStart = targetStart;
990
- vnode.targetAnchor = targetAnchor;
991
1003
  }
992
1004
  const target = vnode.target = resolveTarget(vnode.props, querySelector);
993
1005
  const disabled = isTeleportDisabled(vnode.props);
994
1006
  if (target) {
995
1007
  const targetNode = target._lpa || target.firstChild;
996
- if (vnode.shapeFlag & 16) if (disabled) hydrateDisabledTeleport(node, vnode, targetNode, targetNode && nextSibling(targetNode));
997
- else {
1008
+ if (vnode.shapeFlag & 16) if (disabled) {
1009
+ hydrateDisabledTeleport(node, vnode);
1010
+ hydrateAnchor(target, targetNode);
1011
+ if (!vnode.targetAnchor) prepareAnchor(target, vnode, createText, insert, parentNode(node) === target ? node : null);
1012
+ } else {
998
1013
  vnode.anchor = nextSibling(node);
999
- let targetAnchor = targetNode;
1000
- while (targetAnchor) {
1001
- if (targetAnchor && targetAnchor.nodeType === 8) {
1002
- if (targetAnchor.data === "teleport start anchor") vnode.targetStart = targetAnchor;
1003
- else if (targetAnchor.data === "teleport anchor") {
1004
- vnode.targetAnchor = targetAnchor;
1005
- target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
1006
- break;
1007
- }
1008
- }
1009
- targetAnchor = nextSibling(targetAnchor);
1010
- }
1014
+ hydrateAnchor(target, targetNode);
1011
1015
  if (!vnode.targetAnchor) prepareAnchor(target, vnode, createText, insert);
1012
1016
  hydrateChildren(targetNode && nextSibling(targetNode), vnode, target, parentComponent, parentSuspense, slotScopeIds, optimized);
1013
1017
  }
1014
1018
  updateCssVars(vnode, disabled);
1015
1019
  } else if (disabled) {
1016
- if (vnode.shapeFlag & 16) hydrateDisabledTeleport(node, vnode, node, nextSibling(node));
1020
+ if (vnode.shapeFlag & 16) {
1021
+ hydrateDisabledTeleport(node, vnode);
1022
+ vnode.targetStart = node;
1023
+ vnode.targetAnchor = nextSibling(node);
1024
+ }
1017
1025
  }
1018
1026
  return vnode.anchor && nextSibling(vnode.anchor);
1019
1027
  }
@@ -1036,13 +1044,13 @@ function updateCssVars(vnode, isDisabled) {
1036
1044
  ctx.ut();
1037
1045
  }
1038
1046
  }
1039
- function prepareAnchor(target, vnode, createText, insert) {
1047
+ function prepareAnchor(target, vnode, createText, insert, anchor = null) {
1040
1048
  const targetStart = vnode.targetStart = createText("");
1041
1049
  const targetAnchor = vnode.targetAnchor = createText("");
1042
1050
  targetStart[TeleportEndKey] = targetAnchor;
1043
1051
  if (target) {
1044
- insert(targetStart, target);
1045
- insert(targetAnchor, target);
1052
+ insert(targetStart, target, anchor);
1053
+ insert(targetAnchor, target, anchor);
1046
1054
  }
1047
1055
  return targetAnchor;
1048
1056
  }
@@ -1169,6 +1177,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
1169
1177
  const key = String(vnode.key);
1170
1178
  const leavingVNodesCache = getLeavingNodesForType(state, vnode);
1171
1179
  return baseResolveTransitionHooks({
1180
+ isLeaving: () => leavingVNodesCache[key] === vnode,
1172
1181
  setLeavingNodeCache: () => {
1173
1182
  leavingVNodesCache[key] = vnode;
1174
1183
  },
@@ -1187,7 +1196,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
1187
1196
  }, props, state, instance);
1188
1197
  }
1189
1198
  function baseResolveTransitionHooks(context, props, state, instance) {
1190
- const { setLeavingNodeCache, unsetLeavingNodeCache, earlyRemove, cloneHooks } = context;
1199
+ const { isLeaving, setLeavingNodeCache, unsetLeavingNodeCache, earlyRemove, cloneHooks } = context;
1191
1200
  const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;
1192
1201
  const callHook = (hook, args) => {
1193
1202
  hook && callWithAsyncErrorHandling(hook, instance, 9, args);
@@ -1211,6 +1220,7 @@ function baseResolveTransitionHooks(context, props, state, instance) {
1211
1220
  callHook(hook, [el]);
1212
1221
  },
1213
1222
  enter(el) {
1223
+ if (isLeaving()) return;
1214
1224
  let hook = onEnter;
1215
1225
  let afterHook = onAfterEnter;
1216
1226
  let cancelHook = onEnterCancelled;
@@ -1220,7 +1230,7 @@ function baseResolveTransitionHooks(context, props, state, instance) {
1220
1230
  cancelHook = onAppearCancelled || onEnterCancelled;
1221
1231
  } else return;
1222
1232
  let called = false;
1223
- const done = el[enterCbKey] = (cancelled) => {
1233
+ el[enterCbKey] = (cancelled) => {
1224
1234
  if (called) return;
1225
1235
  called = true;
1226
1236
  if (cancelled) callHook(cancelHook, [el]);
@@ -1228,6 +1238,7 @@ function baseResolveTransitionHooks(context, props, state, instance) {
1228
1238
  if (hooks.delayedLeave) hooks.delayedLeave();
1229
1239
  el[enterCbKey] = void 0;
1230
1240
  };
1241
+ const done = el[enterCbKey].bind(null, false);
1231
1242
  if (hook) callAsyncHook(hook, [el, done]);
1232
1243
  else done();
1233
1244
  },
@@ -1236,7 +1247,7 @@ function baseResolveTransitionHooks(context, props, state, instance) {
1236
1247
  if (state.isUnmounting) return remove();
1237
1248
  callHook(onBeforeLeave, [el]);
1238
1249
  let called = false;
1239
- const done = el[leaveCbKey] = (cancelled) => {
1250
+ el[leaveCbKey] = (cancelled) => {
1240
1251
  if (called) return;
1241
1252
  called = true;
1242
1253
  remove();
@@ -1246,6 +1257,7 @@ function baseResolveTransitionHooks(context, props, state, instance) {
1246
1257
  unsetLeavingNodeCache(el);
1247
1258
  };
1248
1259
  setLeavingNodeCache(el);
1260
+ const done = el[leaveCbKey].bind(null, false);
1249
1261
  if (onLeave) callAsyncHook(onLeave, [el, done]);
1250
1262
  else done();
1251
1263
  },
@@ -1343,8 +1355,7 @@ function useTemplateRef(key) {
1343
1355
  const r = (0, _vue_reactivity.shallowRef)(null);
1344
1356
  if (i) {
1345
1357
  const refs = i.refs === _vue_shared.EMPTY_OBJ ? i.refs = {} : i.refs;
1346
- let desc;
1347
- if ((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) warn$1(`useTemplateRef('${key}') already exists.`);
1358
+ if (isTemplateRefKey(refs, key)) warn$1(`useTemplateRef('${key}') already exists.`);
1348
1359
  else Object.defineProperty(refs, key, {
1349
1360
  enumerable: true,
1350
1361
  get: () => r.value,
@@ -1355,6 +1366,10 @@ function useTemplateRef(key) {
1355
1366
  knownTemplateRefs.add(ret);
1356
1367
  return ret;
1357
1368
  }
1369
+ function isTemplateRefKey(refs, key) {
1370
+ let desc;
1371
+ return !!((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable);
1372
+ }
1358
1373
 
1359
1374
  //#endregion
1360
1375
  //#region packages/runtime-core/src/rendererTemplateRef.ts
@@ -1381,9 +1396,11 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1381
1396
  const oldRef = oldRawRef && oldRawRef.r;
1382
1397
  const refs = owner.refs === _vue_shared.EMPTY_OBJ ? owner.refs = {} : owner.refs;
1383
1398
  const setupState = owner.setupState;
1384
- const canSetSetupRef = createCanSetSetupRefChecker(setupState);
1385
- const canSetRef = (ref) => {
1386
- return !knownTemplateRefs.has(ref);
1399
+ const canSetSetupRef = createCanSetSetupRefChecker(setupState, refs);
1400
+ const canSetRef = (ref, key) => {
1401
+ if (knownTemplateRefs.has(ref)) return false;
1402
+ if (key && isTemplateRefKey(refs, key)) return false;
1403
+ return true;
1387
1404
  };
1388
1405
  if (oldRef != null && oldRef !== ref) {
1389
1406
  invalidatePendingSetRef(oldRawRef);
@@ -1391,8 +1408,8 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1391
1408
  refs[oldRef] = null;
1392
1409
  if (canSetSetupRef(oldRef)) setupState[oldRef] = null;
1393
1410
  } else if ((0, _vue_reactivity.isRef)(oldRef)) {
1394
- if (canSetRef(oldRef)) oldRef.value = null;
1395
1411
  const oldRawRefAtom = oldRawRef;
1412
+ if (canSetRef(oldRef, oldRawRefAtom.k)) oldRef.value = null;
1396
1413
  if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;
1397
1414
  }
1398
1415
  }
@@ -1410,7 +1427,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1410
1427
  if (canSetSetupRef(ref)) setupState[ref] = refs[ref];
1411
1428
  } else {
1412
1429
  const newVal = [refValue];
1413
- if (canSetRef(ref)) ref.value = newVal;
1430
+ if (canSetRef(ref, rawRef.k)) ref.value = newVal;
1414
1431
  if (rawRef.k) refs[rawRef.k] = newVal;
1415
1432
  }
1416
1433
  else if (!existing.includes(refValue)) existing.push(refValue);
@@ -1418,7 +1435,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1418
1435
  refs[ref] = value;
1419
1436
  if (canSetSetupRef(ref)) setupState[ref] = value;
1420
1437
  } else if (_isRef) {
1421
- if (canSetRef(ref)) ref.value = value;
1438
+ if (canSetRef(ref, rawRef.k)) ref.value = value;
1422
1439
  if (rawRef.k) refs[rawRef.k] = value;
1423
1440
  } else warn$1("Invalid template ref type:", ref, `(${typeof ref})`);
1424
1441
  };
@@ -1436,11 +1453,12 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1436
1453
  } else warn$1("Invalid template ref type:", ref, `(${typeof ref})`);
1437
1454
  }
1438
1455
  }
1439
- function createCanSetSetupRefChecker(setupState) {
1456
+ function createCanSetSetupRefChecker(setupState, refs) {
1440
1457
  const rawSetupState = (0, _vue_reactivity.toRaw)(setupState);
1441
1458
  return setupState === void 0 || setupState === _vue_shared.EMPTY_OBJ ? _vue_shared.NO : (key) => {
1442
1459
  if ((0, _vue_shared.hasOwn)(rawSetupState, key) && !(0, _vue_reactivity.isRef)(rawSetupState[key])) warn$1(`Template ref "${key}" used on a non-ref value. It will not work in the production build.`);
1443
1460
  if (knownTemplateRefs.has(rawSetupState[key])) return false;
1461
+ if (isTemplateRefKey(refs, key)) return false;
1444
1462
  return (0, _vue_shared.hasOwn)(rawSetupState, key);
1445
1463
  };
1446
1464
  }
@@ -2851,11 +2869,16 @@ function withAsyncContext(getAwaitable) {
2851
2869
  if (!ctx) warn$1("withAsyncContext called without active current instance. This is likely a bug.");
2852
2870
  let awaitable = getAwaitable();
2853
2871
  setCurrentInstance(null, void 0);
2872
+ const cleanup = () => setCurrentInstance(null, void 0);
2854
2873
  if ((0, _vue_shared.isPromise)(awaitable)) awaitable = awaitable.catch((e) => {
2855
2874
  setCurrentInstance(ctx);
2875
+ Promise.resolve().then(() => Promise.resolve().then(cleanup));
2856
2876
  throw e;
2857
2877
  });
2858
- return [awaitable, () => setCurrentInstance(ctx)];
2878
+ return [awaitable, () => {
2879
+ setCurrentInstance(ctx);
2880
+ Promise.resolve().then(cleanup);
2881
+ }];
2859
2882
  }
2860
2883
 
2861
2884
  //#endregion
@@ -3551,7 +3574,7 @@ function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
3551
3574
  const dynamicProps = nextVNode.dynamicProps;
3552
3575
  for (let i = 0; i < dynamicProps.length; i++) {
3553
3576
  const key = dynamicProps[i];
3554
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) return true;
3577
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emits, key)) return true;
3555
3578
  }
3556
3579
  }
3557
3580
  } else {
@@ -3570,10 +3593,16 @@ function hasPropsChanged(prevProps, nextProps, emitsOptions) {
3570
3593
  if (nextKeys.length !== Object.keys(prevProps).length) return true;
3571
3594
  for (let i = 0; i < nextKeys.length; i++) {
3572
3595
  const key = nextKeys[i];
3573
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) return true;
3596
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) return true;
3574
3597
  }
3575
3598
  return false;
3576
3599
  }
3600
+ function hasPropValueChanged(nextProps, prevProps, key) {
3601
+ const nextProp = nextProps[key];
3602
+ const prevProp = prevProps[key];
3603
+ if (key === "style" && (0, _vue_shared.isObject)(nextProp) && (0, _vue_shared.isObject)(prevProp)) return !(0, _vue_shared.looseEqual)(nextProp, prevProp);
3604
+ return nextProp !== prevProp;
3605
+ }
3577
3606
  function updateHOCHostEl({ vnode, parent }, el) {
3578
3607
  while (parent && !parent.vapor) {
3579
3608
  const root = parent.subTree;
@@ -4065,7 +4094,7 @@ function baseCreateRenderer(options, createHydrationFns) {
4065
4094
  processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
4066
4095
  break;
4067
4096
  case VaporSlot:
4068
- getVaporInterface(parentComponent, n2).slot(n1, n2, container, anchor, parentComponent);
4097
+ getVaporInterface(parentComponent, n2).slot(n1, n2, container, anchor, parentComponent, parentSuspense);
4069
4098
  break;
4070
4099
  default: if (shapeFlag & 1) processElement(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
4071
4100
  else if (shapeFlag & 6) processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
@@ -4080,13 +4109,7 @@ function baseCreateRenderer(options, createHydrationFns) {
4080
4109
  if (n1 == null) hostInsert(n2.el = hostCreateText(n2.children), container, anchor);
4081
4110
  else {
4082
4111
  const el = n2.el = n1.el;
4083
- if (n2.children !== n1.children) if (isHmrUpdating && n2.patchFlag === -1 && "__elIndex" in n1) {
4084
- const childNodes = container.childNodes;
4085
- const newChild = hostCreateText(n2.children);
4086
- const oldChild = childNodes[n2.__elIndex = n1.__elIndex];
4087
- hostInsert(newChild, container, oldChild);
4088
- hostRemove(oldChild);
4089
- } else hostSetText(el, n2.children);
4112
+ if (n2.children !== n1.children) hostSetText(el, n2.children);
4090
4113
  }
4091
4114
  };
4092
4115
  const processCommentNode = (n1, n2, container, anchor) => {
@@ -4422,7 +4445,9 @@ function baseCreateRenderer(options, createHydrationFns) {
4422
4445
  updateComponentPreRender(instance, next, optimized);
4423
4446
  }
4424
4447
  nonHydratedAsyncRoot.asyncDep.then(() => {
4425
- if (!instance.isUnmounted) this.fn();
4448
+ queuePostRenderEffect(() => {
4449
+ if (!instance.isUnmounted) instance.update();
4450
+ }, void 0, parentSuspense);
4426
4451
  });
4427
4452
  return;
4428
4453
  }
@@ -4831,8 +4856,10 @@ function traverseStaticChildren(n1, n2, shallow = false) {
4831
4856
  }
4832
4857
  if (!shallow && c2.patchFlag !== -2) traverseStaticChildren(c1, c2);
4833
4858
  }
4834
- if (c2.type === Text) if (c2.patchFlag !== -1) c2.el = c1.el;
4835
- else c2.__elIndex = i + (n1.type === Fragment ? 1 : 0);
4859
+ if (c2.type === Text) {
4860
+ if (c2.patchFlag === -1) c2 = ch2[i] = cloneIfMounted(c2);
4861
+ c2.el = c1.el;
4862
+ }
4836
4863
  if (c2.type === Comment && !c2.el) c2.el = c1.el;
4837
4864
  c2.el && (c2.el.__vnode = c2);
4838
4865
  }
@@ -6082,7 +6109,7 @@ function isMemoSame(cached, memo) {
6082
6109
 
6083
6110
  //#endregion
6084
6111
  //#region packages/runtime-core/src/index.ts
6085
- const version = "3.6.0-beta.5";
6112
+ const version = "3.6.0-beta.7";
6086
6113
  const warn = warn$1;
6087
6114
  /**
6088
6115
  * Runtime error messages. Only exposed in dev or esm builds.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/runtime-core v3.6.0-beta.5
2
+ * @vue/runtime-core v3.6.0-beta.7
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -642,36 +642,44 @@ function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }
642
642
  if (isReorder) insert(anchor, container, parentAnchor);
643
643
  }
644
644
  function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { o: { nextSibling, parentNode, querySelector, insert, createText } }, hydrateChildren) {
645
- function hydrateDisabledTeleport(node, vnode, targetStart, targetAnchor) {
645
+ function hydrateAnchor(target, targetNode) {
646
+ let targetAnchor = targetNode;
647
+ while (targetAnchor) {
648
+ if (targetAnchor && targetAnchor.nodeType === 8) {
649
+ if (targetAnchor.data === "teleport start anchor") vnode.targetStart = targetAnchor;
650
+ else if (targetAnchor.data === "teleport anchor") {
651
+ vnode.targetAnchor = targetAnchor;
652
+ target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
653
+ break;
654
+ }
655
+ }
656
+ targetAnchor = nextSibling(targetAnchor);
657
+ }
658
+ }
659
+ function hydrateDisabledTeleport(node, vnode) {
646
660
  vnode.anchor = hydrateChildren(nextSibling(node), vnode, parentNode(node), parentComponent, parentSuspense, slotScopeIds, optimized);
647
- vnode.targetStart = targetStart;
648
- vnode.targetAnchor = targetAnchor;
649
661
  }
650
662
  const target = vnode.target = resolveTarget(vnode.props, querySelector);
651
663
  const disabled = isTeleportDisabled(vnode.props);
652
664
  if (target) {
653
665
  const targetNode = target._lpa || target.firstChild;
654
- if (vnode.shapeFlag & 16) if (disabled) hydrateDisabledTeleport(node, vnode, targetNode, targetNode && nextSibling(targetNode));
655
- else {
666
+ if (vnode.shapeFlag & 16) if (disabled) {
667
+ hydrateDisabledTeleport(node, vnode);
668
+ hydrateAnchor(target, targetNode);
669
+ if (!vnode.targetAnchor) prepareAnchor(target, vnode, createText, insert, parentNode(node) === target ? node : null);
670
+ } else {
656
671
  vnode.anchor = nextSibling(node);
657
- let targetAnchor = targetNode;
658
- while (targetAnchor) {
659
- if (targetAnchor && targetAnchor.nodeType === 8) {
660
- if (targetAnchor.data === "teleport start anchor") vnode.targetStart = targetAnchor;
661
- else if (targetAnchor.data === "teleport anchor") {
662
- vnode.targetAnchor = targetAnchor;
663
- target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
664
- break;
665
- }
666
- }
667
- targetAnchor = nextSibling(targetAnchor);
668
- }
672
+ hydrateAnchor(target, targetNode);
669
673
  if (!vnode.targetAnchor) prepareAnchor(target, vnode, createText, insert);
670
674
  hydrateChildren(targetNode && nextSibling(targetNode), vnode, target, parentComponent, parentSuspense, slotScopeIds, optimized);
671
675
  }
672
676
  updateCssVars(vnode, disabled);
673
677
  } else if (disabled) {
674
- if (vnode.shapeFlag & 16) hydrateDisabledTeleport(node, vnode, node, nextSibling(node));
678
+ if (vnode.shapeFlag & 16) {
679
+ hydrateDisabledTeleport(node, vnode);
680
+ vnode.targetStart = node;
681
+ vnode.targetAnchor = nextSibling(node);
682
+ }
675
683
  }
676
684
  return vnode.anchor && nextSibling(vnode.anchor);
677
685
  }
@@ -694,13 +702,13 @@ function updateCssVars(vnode, isDisabled) {
694
702
  ctx.ut();
695
703
  }
696
704
  }
697
- function prepareAnchor(target, vnode, createText, insert) {
705
+ function prepareAnchor(target, vnode, createText, insert, anchor = null) {
698
706
  const targetStart = vnode.targetStart = createText("");
699
707
  const targetAnchor = vnode.targetAnchor = createText("");
700
708
  targetStart[TeleportEndKey] = targetAnchor;
701
709
  if (target) {
702
- insert(targetStart, target);
703
- insert(targetAnchor, target);
710
+ insert(targetStart, target, anchor);
711
+ insert(targetAnchor, target, anchor);
704
712
  }
705
713
  return targetAnchor;
706
714
  }
@@ -822,6 +830,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
822
830
  const key = String(vnode.key);
823
831
  const leavingVNodesCache = getLeavingNodesForType(state, vnode);
824
832
  return baseResolveTransitionHooks({
833
+ isLeaving: () => leavingVNodesCache[key] === vnode,
825
834
  setLeavingNodeCache: () => {
826
835
  leavingVNodesCache[key] = vnode;
827
836
  },
@@ -840,7 +849,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
840
849
  }, props, state, instance);
841
850
  }
842
851
  function baseResolveTransitionHooks(context, props, state, instance) {
843
- const { setLeavingNodeCache, unsetLeavingNodeCache, earlyRemove, cloneHooks } = context;
852
+ const { isLeaving, setLeavingNodeCache, unsetLeavingNodeCache, earlyRemove, cloneHooks } = context;
844
853
  const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;
845
854
  const callHook = (hook, args) => {
846
855
  hook && callWithAsyncErrorHandling(hook, instance, 9, args);
@@ -864,6 +873,7 @@ function baseResolveTransitionHooks(context, props, state, instance) {
864
873
  callHook(hook, [el]);
865
874
  },
866
875
  enter(el) {
876
+ if (isLeaving()) return;
867
877
  let hook = onEnter;
868
878
  let afterHook = onAfterEnter;
869
879
  let cancelHook = onEnterCancelled;
@@ -873,7 +883,7 @@ function baseResolveTransitionHooks(context, props, state, instance) {
873
883
  cancelHook = onAppearCancelled || onEnterCancelled;
874
884
  } else return;
875
885
  let called = false;
876
- const done = el[enterCbKey] = (cancelled) => {
886
+ el[enterCbKey] = (cancelled) => {
877
887
  if (called) return;
878
888
  called = true;
879
889
  if (cancelled) callHook(cancelHook, [el]);
@@ -881,6 +891,7 @@ function baseResolveTransitionHooks(context, props, state, instance) {
881
891
  if (hooks.delayedLeave) hooks.delayedLeave();
882
892
  el[enterCbKey] = void 0;
883
893
  };
894
+ const done = el[enterCbKey].bind(null, false);
884
895
  if (hook) callAsyncHook(hook, [el, done]);
885
896
  else done();
886
897
  },
@@ -889,7 +900,7 @@ function baseResolveTransitionHooks(context, props, state, instance) {
889
900
  if (state.isUnmounting) return remove();
890
901
  callHook(onBeforeLeave, [el]);
891
902
  let called = false;
892
- const done = el[leaveCbKey] = (cancelled) => {
903
+ el[leaveCbKey] = (cancelled) => {
893
904
  if (called) return;
894
905
  called = true;
895
906
  remove();
@@ -899,6 +910,7 @@ function baseResolveTransitionHooks(context, props, state, instance) {
899
910
  unsetLeavingNodeCache(el);
900
911
  };
901
912
  setLeavingNodeCache(el);
913
+ const done = el[leaveCbKey].bind(null, false);
902
914
  if (onLeave) callAsyncHook(onLeave, [el, done]);
903
915
  else done();
904
916
  },
@@ -1000,6 +1012,10 @@ function useTemplateRef(key) {
1000
1012
  }
1001
1013
  return r;
1002
1014
  }
1015
+ function isTemplateRefKey(refs, key) {
1016
+ let desc;
1017
+ return !!((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable);
1018
+ }
1003
1019
 
1004
1020
  //#endregion
1005
1021
  //#region packages/runtime-core/src/rendererTemplateRef.ts
@@ -1022,8 +1038,9 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1022
1038
  const oldRef = oldRawRef && oldRawRef.r;
1023
1039
  const refs = owner.refs === _vue_shared.EMPTY_OBJ ? owner.refs = {} : owner.refs;
1024
1040
  const setupState = owner.setupState;
1025
- const canSetSetupRef = createCanSetSetupRefChecker(setupState);
1026
- const canSetRef = (ref) => {
1041
+ const canSetSetupRef = createCanSetSetupRefChecker(setupState, refs);
1042
+ const canSetRef = (ref, key) => {
1043
+ if (key && isTemplateRefKey(refs, key)) return false;
1027
1044
  return true;
1028
1045
  };
1029
1046
  if (oldRef != null && oldRef !== ref) {
@@ -1032,8 +1049,8 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1032
1049
  refs[oldRef] = null;
1033
1050
  if (canSetSetupRef(oldRef)) setupState[oldRef] = null;
1034
1051
  } else if ((0, _vue_reactivity.isRef)(oldRef)) {
1035
- if (canSetRef(oldRef)) oldRef.value = null;
1036
1052
  const oldRawRefAtom = oldRawRef;
1053
+ if (canSetRef(oldRef, oldRawRefAtom.k)) oldRef.value = null;
1037
1054
  if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;
1038
1055
  }
1039
1056
  }
@@ -1051,7 +1068,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1051
1068
  if (canSetSetupRef(ref)) setupState[ref] = refs[ref];
1052
1069
  } else {
1053
1070
  const newVal = [refValue];
1054
- if (canSetRef(ref)) ref.value = newVal;
1071
+ if (canSetRef(ref, rawRef.k)) ref.value = newVal;
1055
1072
  if (rawRef.k) refs[rawRef.k] = newVal;
1056
1073
  }
1057
1074
  else if (!existing.includes(refValue)) existing.push(refValue);
@@ -1059,7 +1076,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1059
1076
  refs[ref] = value;
1060
1077
  if (canSetSetupRef(ref)) setupState[ref] = value;
1061
1078
  } else if (_isRef) {
1062
- if (canSetRef(ref)) ref.value = value;
1079
+ if (canSetRef(ref, rawRef.k)) ref.value = value;
1063
1080
  if (rawRef.k) refs[rawRef.k] = value;
1064
1081
  }
1065
1082
  };
@@ -1077,9 +1094,10 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1077
1094
  }
1078
1095
  }
1079
1096
  }
1080
- function createCanSetSetupRefChecker(setupState) {
1097
+ function createCanSetSetupRefChecker(setupState, refs) {
1081
1098
  const rawSetupState = (0, _vue_reactivity.toRaw)(setupState);
1082
1099
  return setupState === void 0 || setupState === _vue_shared.EMPTY_OBJ ? _vue_shared.NO : (key) => {
1100
+ if (isTemplateRefKey(refs, key)) return false;
1083
1101
  return (0, _vue_shared.hasOwn)(rawSetupState, key);
1084
1102
  };
1085
1103
  }
@@ -2248,11 +2266,16 @@ function withAsyncContext(getAwaitable) {
2248
2266
  const ctx = getCurrentGenericInstance();
2249
2267
  let awaitable = getAwaitable();
2250
2268
  setCurrentInstance(null, void 0);
2269
+ const cleanup = () => setCurrentInstance(null, void 0);
2251
2270
  if ((0, _vue_shared.isPromise)(awaitable)) awaitable = awaitable.catch((e) => {
2252
2271
  setCurrentInstance(ctx);
2272
+ Promise.resolve().then(() => Promise.resolve().then(cleanup));
2253
2273
  throw e;
2254
2274
  });
2255
- return [awaitable, () => setCurrentInstance(ctx)];
2275
+ return [awaitable, () => {
2276
+ setCurrentInstance(ctx);
2277
+ Promise.resolve().then(cleanup);
2278
+ }];
2256
2279
  }
2257
2280
 
2258
2281
  //#endregion
@@ -2792,7 +2815,7 @@ function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
2792
2815
  const dynamicProps = nextVNode.dynamicProps;
2793
2816
  for (let i = 0; i < dynamicProps.length; i++) {
2794
2817
  const key = dynamicProps[i];
2795
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) return true;
2818
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emits, key)) return true;
2796
2819
  }
2797
2820
  }
2798
2821
  } else {
@@ -2811,10 +2834,16 @@ function hasPropsChanged(prevProps, nextProps, emitsOptions) {
2811
2834
  if (nextKeys.length !== Object.keys(prevProps).length) return true;
2812
2835
  for (let i = 0; i < nextKeys.length; i++) {
2813
2836
  const key = nextKeys[i];
2814
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) return true;
2837
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) return true;
2815
2838
  }
2816
2839
  return false;
2817
2840
  }
2841
+ function hasPropValueChanged(nextProps, prevProps, key) {
2842
+ const nextProp = nextProps[key];
2843
+ const prevProp = prevProps[key];
2844
+ if (key === "style" && (0, _vue_shared.isObject)(nextProp) && (0, _vue_shared.isObject)(prevProp)) return !(0, _vue_shared.looseEqual)(nextProp, prevProp);
2845
+ return nextProp !== prevProp;
2846
+ }
2818
2847
  function updateHOCHostEl({ vnode, parent }, el) {
2819
2848
  while (parent && !parent.vapor) {
2820
2849
  const root = parent.subTree;
@@ -3143,7 +3172,7 @@ function baseCreateRenderer(options, createHydrationFns) {
3143
3172
  processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
3144
3173
  break;
3145
3174
  case VaporSlot:
3146
- getVaporInterface(parentComponent, n2).slot(n1, n2, container, anchor, parentComponent);
3175
+ getVaporInterface(parentComponent, n2).slot(n1, n2, container, anchor, parentComponent, parentSuspense);
3147
3176
  break;
3148
3177
  default: if (shapeFlag & 1) processElement(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
3149
3178
  else if (shapeFlag & 6) processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
@@ -3442,7 +3471,9 @@ function baseCreateRenderer(options, createHydrationFns) {
3442
3471
  updateComponentPreRender(instance, next, optimized);
3443
3472
  }
3444
3473
  nonHydratedAsyncRoot.asyncDep.then(() => {
3445
- if (!instance.isUnmounted) this.fn();
3474
+ queuePostRenderEffect(() => {
3475
+ if (!instance.isUnmounted) instance.update();
3476
+ }, void 0, parentSuspense);
3446
3477
  });
3447
3478
  return;
3448
3479
  }
@@ -3830,8 +3861,10 @@ function traverseStaticChildren(n1, n2, shallow = false) {
3830
3861
  }
3831
3862
  if (!shallow && c2.patchFlag !== -2) traverseStaticChildren(c1, c2);
3832
3863
  }
3833
- if (c2.type === Text) if (c2.patchFlag !== -1) c2.el = c1.el;
3834
- else c2.__elIndex = i + (n1.type === Fragment ? 1 : 0);
3864
+ if (c2.type === Text) {
3865
+ if (c2.patchFlag === -1) c2 = ch2[i] = cloneIfMounted(c2);
3866
+ c2.el = c1.el;
3867
+ }
3835
3868
  if (c2.type === Comment && !c2.el) c2.el = c1.el;
3836
3869
  }
3837
3870
  }
@@ -4787,7 +4820,7 @@ function isMemoSame(cached, memo) {
4787
4820
 
4788
4821
  //#endregion
4789
4822
  //#region packages/runtime-core/src/index.ts
4790
- const version = "3.6.0-beta.5";
4823
+ const version = "3.6.0-beta.7";
4791
4824
  const warn = _vue_shared.NOOP;
4792
4825
  /**
4793
4826
  * Runtime error messages. Only exposed in dev or esm builds.
@@ -593,6 +593,7 @@ export declare const BaseTransition: {
593
593
  };
594
594
  };
595
595
  export interface TransitionHooksContext {
596
+ isLeaving: () => boolean;
596
597
  setLeavingNodeCache: (node: any) => void;
597
598
  unsetLeavingNodeCache: (node: any) => void;
598
599
  earlyRemove: () => void;
@@ -1,10 +1,10 @@
1
1
  /**
2
- * @vue/runtime-core v3.6.0-beta.5
2
+ * @vue/runtime-core v3.6.0-beta.7
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
6
6
  import { EffectScope, EffectScope as EffectScope$1, ReactiveEffect, ReactiveEffect as ReactiveEffect$1, TrackOpTypes, TriggerOpTypes, WatcherEffect, computed as computed$1, customRef, customRef as customRef$1, effect, effectScope, getCurrentScope, getCurrentWatcher, isProxy, isProxy as isProxy$1, isReactive, isReactive as isReactive$1, isReadonly, isReadonly as isReadonly$1, isRef, isRef as isRef$1, isShallow, isShallow as isShallow$1, markRaw, markRaw as markRaw$1, onScopeDispose, onWatcherCleanup, proxyRefs, proxyRefs as proxyRefs$1, reactive, reactive as reactive$1, readonly, readonly as readonly$1, ref, ref as ref$1, setActiveSub, setCurrentScope, shallowReactive, shallowReactive as shallowReactive$1, shallowReadArray, shallowReadonly, shallowReadonly as shallowReadonly$1, shallowRef, shallowRef as shallowRef$1, stop, toRaw, toRaw as toRaw$1, toReactive, toReadonly, toRef, toRefs, toValue, track, traverse, trigger, triggerRef, unref } from "@vue/reactivity";
7
- import { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, camelize, camelize as camelize$1, capitalize, capitalize as capitalize$1, def, extend, getEscapedCssVarName, getGlobalThis, getModifierPropName, getSequence, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isBuiltInTag, isFunction, isGloballyAllowed, isKnownHtmlAttr, isKnownSvgAttr, isModelListener, isObject, isOn, isPromise, isRegExp, isRenderableAttrValue, isReservedProp, isString, isSymbol, looseToNumber, makeMap, normalizeClass, normalizeClass as normalizeClass$1, normalizeCssVarValue, normalizeProps, normalizeStyle, normalizeStyle as normalizeStyle$1, remove, stringifyStyle, toDisplayString, toHandlerKey, toHandlerKey as toHandlerKey$1, toNumber, toRawType } from "@vue/shared";
7
+ import { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, camelize, camelize as camelize$1, capitalize, capitalize as capitalize$1, def, extend, getEscapedCssVarName, getGlobalThis, getModifierPropName, getSequence, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isBuiltInTag, isFunction, isGloballyAllowed, isKnownHtmlAttr, isKnownSvgAttr, isModelListener, isObject, isOn, isPromise, isRegExp, isRenderableAttrValue, isReservedProp, isString, isSymbol, looseEqual, looseToNumber, makeMap, normalizeClass, normalizeClass as normalizeClass$1, normalizeCssVarValue, normalizeProps, normalizeStyle, normalizeStyle as normalizeStyle$1, remove, stringifyStyle, toDisplayString, toHandlerKey, toHandlerKey as toHandlerKey$1, toNumber, toRawType } from "@vue/shared";
8
8
 
9
9
  //#region packages/runtime-core/src/warning.ts
10
10
  const stack = [];
@@ -250,6 +250,14 @@ function logError(err, type, instance, throwInDev = true, throwInProd = false) {
250
250
 
251
251
  //#endregion
252
252
  //#region packages/runtime-core/src/scheduler.ts
253
+ const SchedulerJobFlags = {
254
+ "QUEUED": 1,
255
+ "1": "QUEUED",
256
+ "ALLOW_RECURSE": 2,
257
+ "2": "ALLOW_RECURSE",
258
+ "DISPOSED": 4,
259
+ "4": "DISPOSED"
260
+ };
253
261
  const jobs = [];
254
262
  let postJobs = [];
255
263
  let activePostJobs = null;
@@ -987,36 +995,44 @@ function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }
987
995
  if (isReorder) insert(anchor, container, parentAnchor);
988
996
  }
989
997
  function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { o: { nextSibling, parentNode, querySelector, insert, createText } }, hydrateChildren) {
990
- function hydrateDisabledTeleport(node, vnode, targetStart, targetAnchor) {
998
+ function hydrateAnchor(target, targetNode) {
999
+ let targetAnchor = targetNode;
1000
+ while (targetAnchor) {
1001
+ if (targetAnchor && targetAnchor.nodeType === 8) {
1002
+ if (targetAnchor.data === "teleport start anchor") vnode.targetStart = targetAnchor;
1003
+ else if (targetAnchor.data === "teleport anchor") {
1004
+ vnode.targetAnchor = targetAnchor;
1005
+ target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
1006
+ break;
1007
+ }
1008
+ }
1009
+ targetAnchor = nextSibling(targetAnchor);
1010
+ }
1011
+ }
1012
+ function hydrateDisabledTeleport(node, vnode) {
991
1013
  vnode.anchor = hydrateChildren(nextSibling(node), vnode, parentNode(node), parentComponent, parentSuspense, slotScopeIds, optimized);
992
- vnode.targetStart = targetStart;
993
- vnode.targetAnchor = targetAnchor;
994
1014
  }
995
1015
  const target = vnode.target = resolveTarget(vnode.props, querySelector);
996
1016
  const disabled = isTeleportDisabled(vnode.props);
997
1017
  if (target) {
998
1018
  const targetNode = target._lpa || target.firstChild;
999
- if (vnode.shapeFlag & 16) if (disabled) hydrateDisabledTeleport(node, vnode, targetNode, targetNode && nextSibling(targetNode));
1000
- else {
1019
+ if (vnode.shapeFlag & 16) if (disabled) {
1020
+ hydrateDisabledTeleport(node, vnode);
1021
+ hydrateAnchor(target, targetNode);
1022
+ if (!vnode.targetAnchor) prepareAnchor(target, vnode, createText, insert, parentNode(node) === target ? node : null);
1023
+ } else {
1001
1024
  vnode.anchor = nextSibling(node);
1002
- let targetAnchor = targetNode;
1003
- while (targetAnchor) {
1004
- if (targetAnchor && targetAnchor.nodeType === 8) {
1005
- if (targetAnchor.data === "teleport start anchor") vnode.targetStart = targetAnchor;
1006
- else if (targetAnchor.data === "teleport anchor") {
1007
- vnode.targetAnchor = targetAnchor;
1008
- target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
1009
- break;
1010
- }
1011
- }
1012
- targetAnchor = nextSibling(targetAnchor);
1013
- }
1025
+ hydrateAnchor(target, targetNode);
1014
1026
  if (!vnode.targetAnchor) prepareAnchor(target, vnode, createText, insert);
1015
1027
  hydrateChildren(targetNode && nextSibling(targetNode), vnode, target, parentComponent, parentSuspense, slotScopeIds, optimized);
1016
1028
  }
1017
1029
  updateCssVars(vnode, disabled);
1018
1030
  } else if (disabled) {
1019
- if (vnode.shapeFlag & 16) hydrateDisabledTeleport(node, vnode, node, nextSibling(node));
1031
+ if (vnode.shapeFlag & 16) {
1032
+ hydrateDisabledTeleport(node, vnode);
1033
+ vnode.targetStart = node;
1034
+ vnode.targetAnchor = nextSibling(node);
1035
+ }
1020
1036
  }
1021
1037
  return vnode.anchor && nextSibling(vnode.anchor);
1022
1038
  }
@@ -1039,13 +1055,13 @@ function updateCssVars(vnode, isDisabled) {
1039
1055
  ctx.ut();
1040
1056
  }
1041
1057
  }
1042
- function prepareAnchor(target, vnode, createText, insert) {
1058
+ function prepareAnchor(target, vnode, createText, insert, anchor = null) {
1043
1059
  const targetStart = vnode.targetStart = createText("");
1044
1060
  const targetAnchor = vnode.targetAnchor = createText("");
1045
1061
  targetStart[TeleportEndKey] = targetAnchor;
1046
1062
  if (target) {
1047
- insert(targetStart, target);
1048
- insert(targetAnchor, target);
1063
+ insert(targetStart, target, anchor);
1064
+ insert(targetAnchor, target, anchor);
1049
1065
  }
1050
1066
  return targetAnchor;
1051
1067
  }
@@ -1173,6 +1189,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
1173
1189
  const key = String(vnode.key);
1174
1190
  const leavingVNodesCache = getLeavingNodesForType(state, vnode);
1175
1191
  return baseResolveTransitionHooks({
1192
+ isLeaving: () => leavingVNodesCache[key] === vnode,
1176
1193
  setLeavingNodeCache: () => {
1177
1194
  leavingVNodesCache[key] = vnode;
1178
1195
  },
@@ -1191,7 +1208,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
1191
1208
  }, props, state, instance);
1192
1209
  }
1193
1210
  function baseResolveTransitionHooks(context, props, state, instance) {
1194
- const { setLeavingNodeCache, unsetLeavingNodeCache, earlyRemove, cloneHooks } = context;
1211
+ const { isLeaving, setLeavingNodeCache, unsetLeavingNodeCache, earlyRemove, cloneHooks } = context;
1195
1212
  const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;
1196
1213
  const callHook = (hook, args) => {
1197
1214
  hook && callWithAsyncErrorHandling(hook, instance, 9, args);
@@ -1215,6 +1232,7 @@ function baseResolveTransitionHooks(context, props, state, instance) {
1215
1232
  callHook(hook, [el]);
1216
1233
  },
1217
1234
  enter(el) {
1235
+ if (isLeaving()) return;
1218
1236
  let hook = onEnter;
1219
1237
  let afterHook = onAfterEnter;
1220
1238
  let cancelHook = onEnterCancelled;
@@ -1224,7 +1242,7 @@ function baseResolveTransitionHooks(context, props, state, instance) {
1224
1242
  cancelHook = onAppearCancelled || onEnterCancelled;
1225
1243
  } else return;
1226
1244
  let called = false;
1227
- const done = el[enterCbKey] = (cancelled) => {
1245
+ el[enterCbKey] = (cancelled) => {
1228
1246
  if (called) return;
1229
1247
  called = true;
1230
1248
  if (cancelled) callHook(cancelHook, [el]);
@@ -1232,6 +1250,7 @@ function baseResolveTransitionHooks(context, props, state, instance) {
1232
1250
  if (hooks.delayedLeave) hooks.delayedLeave();
1233
1251
  el[enterCbKey] = void 0;
1234
1252
  };
1253
+ const done = el[enterCbKey].bind(null, false);
1235
1254
  if (hook) callAsyncHook(hook, [el, done]);
1236
1255
  else done();
1237
1256
  },
@@ -1240,7 +1259,7 @@ function baseResolveTransitionHooks(context, props, state, instance) {
1240
1259
  if (state.isUnmounting) return remove();
1241
1260
  callHook(onBeforeLeave, [el]);
1242
1261
  let called = false;
1243
- const done = el[leaveCbKey] = (cancelled) => {
1262
+ el[leaveCbKey] = (cancelled) => {
1244
1263
  if (called) return;
1245
1264
  called = true;
1246
1265
  remove();
@@ -1250,6 +1269,7 @@ function baseResolveTransitionHooks(context, props, state, instance) {
1250
1269
  unsetLeavingNodeCache(el);
1251
1270
  };
1252
1271
  setLeavingNodeCache(el);
1272
+ const done = el[leaveCbKey].bind(null, false);
1253
1273
  if (onLeave) callAsyncHook(onLeave, [el, done]);
1254
1274
  else done();
1255
1275
  },
@@ -1347,8 +1367,7 @@ function useTemplateRef(key) {
1347
1367
  const r = shallowRef$1(null);
1348
1368
  if (i) {
1349
1369
  const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs;
1350
- let desc;
1351
- if (!!(process.env.NODE_ENV !== "production") && (desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) warn$1(`useTemplateRef('${key}') already exists.`);
1370
+ if (!!(process.env.NODE_ENV !== "production") && isTemplateRefKey(refs, key)) warn$1(`useTemplateRef('${key}') already exists.`);
1352
1371
  else Object.defineProperty(refs, key, {
1353
1372
  enumerable: true,
1354
1373
  get: () => r.value,
@@ -1359,6 +1378,10 @@ function useTemplateRef(key) {
1359
1378
  if (!!(process.env.NODE_ENV !== "production")) knownTemplateRefs.add(ret);
1360
1379
  return ret;
1361
1380
  }
1381
+ function isTemplateRefKey(refs, key) {
1382
+ let desc;
1383
+ return !!((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable);
1384
+ }
1362
1385
 
1363
1386
  //#endregion
1364
1387
  //#region packages/runtime-core/src/rendererTemplateRef.ts
@@ -1385,9 +1408,11 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1385
1408
  const oldRef = oldRawRef && oldRawRef.r;
1386
1409
  const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;
1387
1410
  const setupState = owner.setupState;
1388
- const canSetSetupRef = createCanSetSetupRefChecker(setupState);
1389
- const canSetRef = (ref) => {
1390
- return !!!(process.env.NODE_ENV !== "production") || !knownTemplateRefs.has(ref);
1411
+ const canSetSetupRef = createCanSetSetupRefChecker(setupState, refs);
1412
+ const canSetRef = (ref, key) => {
1413
+ if (!!(process.env.NODE_ENV !== "production") && knownTemplateRefs.has(ref)) return false;
1414
+ if (key && isTemplateRefKey(refs, key)) return false;
1415
+ return true;
1391
1416
  };
1392
1417
  if (oldRef != null && oldRef !== ref) {
1393
1418
  invalidatePendingSetRef(oldRawRef);
@@ -1395,8 +1420,8 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1395
1420
  refs[oldRef] = null;
1396
1421
  if (canSetSetupRef(oldRef)) setupState[oldRef] = null;
1397
1422
  } else if (isRef$1(oldRef)) {
1398
- if (canSetRef(oldRef)) oldRef.value = null;
1399
1423
  const oldRawRefAtom = oldRawRef;
1424
+ if (canSetRef(oldRef, oldRawRefAtom.k)) oldRef.value = null;
1400
1425
  if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;
1401
1426
  }
1402
1427
  }
@@ -1414,7 +1439,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1414
1439
  if (canSetSetupRef(ref)) setupState[ref] = refs[ref];
1415
1440
  } else {
1416
1441
  const newVal = [refValue];
1417
- if (canSetRef(ref)) ref.value = newVal;
1442
+ if (canSetRef(ref, rawRef.k)) ref.value = newVal;
1418
1443
  if (rawRef.k) refs[rawRef.k] = newVal;
1419
1444
  }
1420
1445
  else if (!existing.includes(refValue)) existing.push(refValue);
@@ -1422,7 +1447,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1422
1447
  refs[ref] = value;
1423
1448
  if (canSetSetupRef(ref)) setupState[ref] = value;
1424
1449
  } else if (_isRef) {
1425
- if (canSetRef(ref)) ref.value = value;
1450
+ if (canSetRef(ref, rawRef.k)) ref.value = value;
1426
1451
  if (rawRef.k) refs[rawRef.k] = value;
1427
1452
  } else if (!!(process.env.NODE_ENV !== "production")) warn$1("Invalid template ref type:", ref, `(${typeof ref})`);
1428
1453
  };
@@ -1440,13 +1465,14 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
1440
1465
  } else if (!!(process.env.NODE_ENV !== "production")) warn$1("Invalid template ref type:", ref, `(${typeof ref})`);
1441
1466
  }
1442
1467
  }
1443
- function createCanSetSetupRefChecker(setupState) {
1468
+ function createCanSetSetupRefChecker(setupState, refs) {
1444
1469
  const rawSetupState = toRaw$1(setupState);
1445
1470
  return setupState === void 0 || setupState === EMPTY_OBJ ? NO : (key) => {
1446
1471
  if (!!(process.env.NODE_ENV !== "production")) {
1447
1472
  if (hasOwn(rawSetupState, key) && !isRef$1(rawSetupState[key])) warn$1(`Template ref "${key}" used on a non-ref value. It will not work in the production build.`);
1448
1473
  if (knownTemplateRefs.has(rawSetupState[key])) return false;
1449
1474
  }
1475
+ if (isTemplateRefKey(refs, key)) return false;
1450
1476
  return hasOwn(rawSetupState, key);
1451
1477
  };
1452
1478
  }
@@ -2331,7 +2357,6 @@ function deactivate(vnode, container, { m: move }, parentComponent, parentSuspen
2331
2357
  instance.isDeactivated = true;
2332
2358
  }, void 0, parentSuspense);
2333
2359
  if (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_DEVTOOLS__) devtoolsComponentAdded(instance);
2334
- if (!!(process.env.NODE_ENV !== "production") && true) instance.__keepAliveStorageContainer = container;
2335
2360
  }
2336
2361
 
2337
2362
  //#endregion
@@ -2875,11 +2900,16 @@ function withAsyncContext(getAwaitable) {
2875
2900
  if (!!(process.env.NODE_ENV !== "production") && !ctx) warn$1("withAsyncContext called without active current instance. This is likely a bug.");
2876
2901
  let awaitable = getAwaitable();
2877
2902
  setCurrentInstance(null, void 0);
2903
+ const cleanup = () => setCurrentInstance(null, void 0);
2878
2904
  if (isPromise(awaitable)) awaitable = awaitable.catch((e) => {
2879
2905
  setCurrentInstance(ctx);
2906
+ Promise.resolve().then(() => Promise.resolve().then(cleanup));
2880
2907
  throw e;
2881
2908
  });
2882
- return [awaitable, () => setCurrentInstance(ctx)];
2909
+ return [awaitable, () => {
2910
+ setCurrentInstance(ctx);
2911
+ Promise.resolve().then(cleanup);
2912
+ }];
2883
2913
  }
2884
2914
 
2885
2915
  //#endregion
@@ -3586,7 +3616,7 @@ function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
3586
3616
  const dynamicProps = nextVNode.dynamicProps;
3587
3617
  for (let i = 0; i < dynamicProps.length; i++) {
3588
3618
  const key = dynamicProps[i];
3589
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) return true;
3619
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emits, key)) return true;
3590
3620
  }
3591
3621
  }
3592
3622
  } else {
@@ -3605,10 +3635,16 @@ function hasPropsChanged(prevProps, nextProps, emitsOptions) {
3605
3635
  if (nextKeys.length !== Object.keys(prevProps).length) return true;
3606
3636
  for (let i = 0; i < nextKeys.length; i++) {
3607
3637
  const key = nextKeys[i];
3608
- if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) return true;
3638
+ if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) return true;
3609
3639
  }
3610
3640
  return false;
3611
3641
  }
3642
+ function hasPropValueChanged(nextProps, prevProps, key) {
3643
+ const nextProp = nextProps[key];
3644
+ const prevProp = prevProps[key];
3645
+ if (key === "style" && isObject(nextProp) && isObject(prevProp)) return !looseEqual(nextProp, prevProp);
3646
+ return nextProp !== prevProp;
3647
+ }
3612
3648
  function updateHOCHostEl({ vnode, parent }, el) {
3613
3649
  while (parent && !parent.vapor) {
3614
3650
  const root = parent.subTree;
@@ -4131,7 +4167,7 @@ function baseCreateRenderer(options, createHydrationFns) {
4131
4167
  processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
4132
4168
  break;
4133
4169
  case VaporSlot:
4134
- getVaporInterface(parentComponent, n2).slot(n1, n2, container, anchor, parentComponent);
4170
+ getVaporInterface(parentComponent, n2).slot(n1, n2, container, anchor, parentComponent, parentSuspense);
4135
4171
  break;
4136
4172
  default: if (shapeFlag & 1) processElement(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
4137
4173
  else if (shapeFlag & 6) processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
@@ -4146,13 +4182,7 @@ function baseCreateRenderer(options, createHydrationFns) {
4146
4182
  if (n1 == null) hostInsert(n2.el = hostCreateText(n2.children), container, anchor);
4147
4183
  else {
4148
4184
  const el = n2.el = n1.el;
4149
- if (n2.children !== n1.children) if (!!(process.env.NODE_ENV !== "production") && isHmrUpdating && n2.patchFlag === -1 && "__elIndex" in n1) {
4150
- const childNodes = container.childNodes;
4151
- const newChild = hostCreateText(n2.children);
4152
- const oldChild = childNodes[n2.__elIndex = n1.__elIndex];
4153
- hostInsert(newChild, container, oldChild);
4154
- hostRemove(oldChild);
4155
- } else hostSetText(el, n2.children);
4185
+ if (n2.children !== n1.children) hostSetText(el, n2.children);
4156
4186
  }
4157
4187
  };
4158
4188
  const processCommentNode = (n1, n2, container, anchor) => {
@@ -4497,7 +4527,9 @@ function baseCreateRenderer(options, createHydrationFns) {
4497
4527
  updateComponentPreRender(instance, next, optimized);
4498
4528
  }
4499
4529
  nonHydratedAsyncRoot.asyncDep.then(() => {
4500
- if (!instance.isUnmounted) this.fn();
4530
+ queuePostRenderEffect(() => {
4531
+ if (!instance.isUnmounted) instance.update();
4532
+ }, void 0, parentSuspense);
4501
4533
  });
4502
4534
  return;
4503
4535
  }
@@ -4906,8 +4938,10 @@ function traverseStaticChildren(n1, n2, shallow = false) {
4906
4938
  }
4907
4939
  if (!shallow && c2.patchFlag !== -2) traverseStaticChildren(c1, c2);
4908
4940
  }
4909
- if (c2.type === Text) if (c2.patchFlag !== -1) c2.el = c1.el;
4910
- else c2.__elIndex = i + (n1.type === Fragment ? 1 : 0);
4941
+ if (c2.type === Text) {
4942
+ if (c2.patchFlag === -1) c2 = ch2[i] = cloneIfMounted(c2);
4943
+ c2.el = c1.el;
4944
+ }
4911
4945
  if (c2.type === Comment && !c2.el) c2.el = c1.el;
4912
4946
  if (!!(process.env.NODE_ENV !== "production")) c2.el && (c2.el.__vnode = c2);
4913
4947
  }
@@ -6178,7 +6212,7 @@ function isMemoSame(cached, memo) {
6178
6212
 
6179
6213
  //#endregion
6180
6214
  //#region packages/runtime-core/src/index.ts
6181
- const version = "3.6.0-beta.5";
6215
+ const version = "3.6.0-beta.7";
6182
6216
  const warn = !!(process.env.NODE_ENV !== "production") ? warn$1 : NOOP;
6183
6217
  /**
6184
6218
  * Runtime error messages. Only exposed in dev or esm builds.
@@ -6215,4 +6249,4 @@ const compatUtils = null;
6215
6249
  const DeprecationTypes = null;
6216
6250
 
6217
6251
  //#endregion
6218
- export { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, EffectScope, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, MismatchTypes, MoveType, NULL_DYNAMIC_COMPONENT, ReactiveEffect, Static, Suspense, Teleport, Text, TrackOpTypes, TriggerOpTypes, activate, assertNumber, baseEmit, baseNormalizePropsOptions, baseResolveTransitionHooks, callWithAsyncErrorHandling, callWithErrorHandling, camelize, capitalize, checkTransitionMode, cloneVNode, compatUtils, computed, createAppAPI, createAsyncComponentContext, createBlock, createCanSetSetupRefChecker, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createInternalObject, createPropsRestProxy, createRenderer, createSlots, createStaticVNode, createTextVNode, createVNode, currentInstance, customRef, deactivate, defineAsyncComponent, defineComponent, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSlots, devtools, devtoolsComponentAdded, effect, effectScope, endMeasure, ensureVaporSlotFallback, expose, flushOnAppMount, getAttributeMismatch, getComponentName, getCurrentInstance, getCurrentScope, getCurrentWatcher, getFunctionalFallthrough, getInheritedScopeIds, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, hydrateOnIdle, hydrateOnInteraction, hydrateOnMediaQuery, hydrateOnVisible, initCustomFormatter, initFeatureFlags, inject, isAsyncWrapper, isEmitListener, isHydrating, isKeepAlive, isMapEqual, isMemoSame, isMismatchAllowed, isProxy, isReactive, isReadonly, isRef, isRuntimeOnly, isSetEqual, isShallow, isTeleportDeferred, isTeleportDisabled, isTemplateNode, isVNode, isValidHtmlOrSvgAttribute, leaveCbKey, markAsyncBoundary, markRaw, matches, mergeDefaults, mergeModels, mergeProps, nextTick, nextUid, normalizeClass, normalizeProps, normalizeRef, normalizeStyle, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, onWatcherCleanup, openBlock, performAsyncHydrate, performTransitionEnter, performTransitionLeave, popScopeId, popWarningContext, provide, proxyRefs, pushScopeId, pushWarningContext, queueJob, queuePostFlushCb, reactive, readonly, ref, registerHMR, registerRuntimeCompiler, renderList, renderSlot, resetShapeFlag, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolvePropValue, resolveTarget as resolveTeleportTarget, resolveTransitionHooks, setBlockTracking, setCurrentInstance, setDevtoolsHook, setIsHydratingEnabled, setRef, setTransitionHooks, shallowReactive, shallowReadonly, shallowRef, simpleSetCurrentInstance, ssrContextKey, ssrUtils, startMeasure, stop, toClassSet, toDisplayString, toHandlerKey, toHandlers, toRaw, toRef, toRefs, toStyleMap, toValue, transformVNodeArgs, triggerRef, unref, unregisterHMR, useAsyncComponentState, useAttrs, useId, useInstanceOption, useModel, useSSRContext, useSlots, useTemplateRef, useTransitionState, validateComponentName, validateProps, version, warn, warnExtraneousAttributes, warnPropMismatch, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withMemo, withScopeId };
6252
+ export { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, EffectScope, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, MismatchTypes, MoveType, NULL_DYNAMIC_COMPONENT, ReactiveEffect, SchedulerJobFlags, Static, Suspense, Teleport, Text, TrackOpTypes, TriggerOpTypes, activate, assertNumber, baseEmit, baseNormalizePropsOptions, baseResolveTransitionHooks, callWithAsyncErrorHandling, callWithErrorHandling, camelize, capitalize, checkTransitionMode, cloneVNode, compatUtils, computed, createAppAPI, createAsyncComponentContext, createBlock, createCanSetSetupRefChecker, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createInternalObject, createPropsRestProxy, createRenderer, createSlots, createStaticVNode, createTextVNode, createVNode, currentInstance, customRef, deactivate, defineAsyncComponent, defineComponent, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSlots, devtools, devtoolsComponentAdded, effect, effectScope, endMeasure, ensureVaporSlotFallback, expose, flushOnAppMount, getAttributeMismatch, getComponentName, getCurrentInstance, getCurrentScope, getCurrentWatcher, getFunctionalFallthrough, getInheritedScopeIds, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, hydrateOnIdle, hydrateOnInteraction, hydrateOnMediaQuery, hydrateOnVisible, initCustomFormatter, initFeatureFlags, inject, isAsyncWrapper, isEmitListener, isHydrating, isKeepAlive, isMapEqual, isMemoSame, isMismatchAllowed, isProxy, isReactive, isReadonly, isRef, isRuntimeOnly, isSetEqual, isShallow, isTeleportDeferred, isTeleportDisabled, isTemplateNode, isTemplateRefKey, isVNode, isValidHtmlOrSvgAttribute, knownTemplateRefs, leaveCbKey, markAsyncBoundary, markRaw, matches, mergeDefaults, mergeModels, mergeProps, nextTick, nextUid, normalizeClass, normalizeProps, normalizeRef, normalizeStyle, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, onWatcherCleanup, openBlock, performAsyncHydrate, performTransitionEnter, performTransitionLeave, popScopeId, popWarningContext, provide, proxyRefs, pushScopeId, pushWarningContext, queueJob, queuePostFlushCb, reactive, readonly, ref, registerHMR, registerRuntimeCompiler, renderList, renderSlot, resetShapeFlag, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolvePropValue, resolveTarget as resolveTeleportTarget, resolveTransitionHooks, setBlockTracking, setCurrentInstance, setCurrentRenderingInstance, setDevtoolsHook, setIsHydratingEnabled, setRef, setTransitionHooks, shallowReactive, shallowReadonly, shallowRef, simpleSetCurrentInstance, ssrContextKey, ssrUtils, startMeasure, stop, toClassSet, toDisplayString, toHandlerKey, toHandlers, toRaw, toRef, toRefs, toStyleMap, toValue, transformVNodeArgs, triggerRef, unref, unregisterHMR, useAsyncComponentState, useAttrs, useId, useInstanceOption, useModel, useSSRContext, useSlots, useTemplateRef, useTransitionState, validateComponentName, validateProps, version, warn, warnExtraneousAttributes, warnPropMismatch, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withMemo, withScopeId };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vue/runtime-core",
3
- "version": "3.6.0-beta.5",
3
+ "version": "3.6.0-beta.7",
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.6.0-beta.5",
50
- "@vue/reactivity": "3.6.0-beta.5"
49
+ "@vue/shared": "3.6.0-beta.7",
50
+ "@vue/reactivity": "3.6.0-beta.7"
51
51
  }
52
52
  }