@vue/compat 3.6.0-rc.10 → 3.6.0-rc.12

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/compat v3.6.0-rc.10
2
+ * @vue/compat v3.6.0-rc.12
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -312,9 +312,10 @@ var Vue = (function() {
312
312
  * - ismap -> isMap
313
313
  * - nomodule -> noModule
314
314
  * - novalidate -> noValidate
315
+ * - playsinline -> playsInline
315
316
  * - readonly -> readOnly
316
317
  */
317
- const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
318
+ const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,playsinline,readonly`;
318
319
  const isSpecialBooleanAttr = /*@__PURE__*/ makeMap(specialBooleanAttrs);
319
320
  /**
320
321
  * The full list is needed during SSR to produce the correct initial markup.
@@ -1005,17 +1006,33 @@ var Vue = (function() {
1005
1006
  };
1006
1007
  function iterator(self, method, wrapValue) {
1007
1008
  const arr = shallowReadArray(self);
1008
- const iter = arr[method]();
1009
+ const methodFn = arr[method];
1010
+ const iter = methodFn.call(arr);
1009
1011
  if (arr !== self && !/* @__PURE__ */ isShallow(self)) {
1012
+ if (iter[Symbol.toStringTag] === "Array Iterator") {
1013
+ const wrapped = Object.create(Object.getPrototypeOf(iter));
1014
+ wrapped.next = () => wrapResult(iter.next(), wrapValue);
1015
+ if (methodFn !== arrayProto[method]) Object.defineProperties(wrapped, {
1016
+ return: { get() {
1017
+ const fn = iter.return;
1018
+ return typeof fn === "function" ? fn.bind(iter) : fn;
1019
+ } },
1020
+ throw: { get() {
1021
+ const fn = iter.throw;
1022
+ return typeof fn === "function" ? fn.bind(iter) : fn;
1023
+ } }
1024
+ });
1025
+ return wrapped;
1026
+ }
1010
1027
  iter._next = iter.next;
1011
- iter.next = () => {
1012
- const result = iter._next();
1013
- if (!result.done) result.value = wrapValue(result.value);
1014
- return result;
1015
- };
1028
+ iter.next = () => wrapResult(iter._next(), wrapValue);
1016
1029
  }
1017
1030
  return iter;
1018
1031
  }
1032
+ function wrapResult(result, wrapValue) {
1033
+ if (!result.done) result.value = wrapValue(result.value);
1034
+ return result;
1035
+ }
1019
1036
  const arrayProto = Array.prototype;
1020
1037
  function apply(self, method, fn, thisArg, wrappedRetFn, args) {
1021
1038
  const arr = shallowReadArray(self);
@@ -1333,6 +1350,7 @@ var Vue = (function() {
1333
1350
  return (target, key, receiver) => {
1334
1351
  if (key === "__v_isReactive") return !isReadonly;
1335
1352
  else if (key === "__v_isReadonly") return isReadonly;
1353
+ else if (key === "__v_isShallow") return shallow;
1336
1354
  else if (key === "__v_raw") return target;
1337
1355
  return Reflect.get(hasOwn(instrumentations, key) && key in target ? instrumentations : target, key, receiver);
1338
1356
  };
@@ -2242,8 +2260,9 @@ var Vue = (function() {
2242
2260
  function onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) {
2243
2261
  if (owner) {
2244
2262
  const { call } = owner.options;
2245
- if (call) owner.cleanups[owner.cleanupsLength++] = () => call(cleanupFn, 4);
2246
- else owner.cleanups[owner.cleanupsLength++] = cleanupFn;
2263
+ const cleanup = call ? () => call(cleanupFn, 4) : cleanupFn;
2264
+ if (owner.cb) (owner.cbCleanups || (owner.cbCleanups = [])).push(cleanup);
2265
+ else owner.cleanups[owner.cleanupsLength++] = cleanup;
2247
2266
  } else if (!failSilently) warn$2("onWatcherCleanup() was called when there was no active watcher to associate with.");
2248
2267
  }
2249
2268
  var WatcherEffect = class extends ReactiveEffect {
@@ -2304,9 +2323,11 @@ var Vue = (function() {
2304
2323
  if (once && cb) {
2305
2324
  const _cb = cb;
2306
2325
  cb = (...args) => {
2307
- const res = _cb(...args);
2308
- this.stop();
2309
- return res;
2326
+ try {
2327
+ return _cb(...args);
2328
+ } finally {
2329
+ this.stop();
2330
+ }
2310
2331
  };
2311
2332
  }
2312
2333
  this.cb = cb;
@@ -2314,6 +2335,19 @@ var Vue = (function() {
2314
2335
  this.onTrack = options.onTrack;
2315
2336
  this.onTrigger = options.onTrigger;
2316
2337
  }
2338
+ cleanupCallback() {
2339
+ const cleanups = this.cbCleanups;
2340
+ if (cleanups) {
2341
+ this.cbCleanups = void 0;
2342
+ for (let i = 0, l = cleanups.length; i < l; i++) cleanups[i]();
2343
+ }
2344
+ }
2345
+ stop() {
2346
+ if (this.active) {
2347
+ super.stop();
2348
+ this.cleanupCallback();
2349
+ }
2350
+ }
2317
2351
  run(initialRun = false) {
2318
2352
  const oldValue = this.oldValue;
2319
2353
  const newValue = this.oldValue = super.run();
@@ -2321,10 +2355,11 @@ var Vue = (function() {
2321
2355
  const { immediate, deep, call } = this.options;
2322
2356
  if (initialRun && !immediate) return;
2323
2357
  if (initialRun || deep || this.forceTrigger || (this.isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {
2324
- cleanup(this);
2325
2358
  const currentWatcher = activeWatcher;
2326
- activeWatcher = this;
2359
+ const prevSub = setActiveSub();
2327
2360
  try {
2361
+ this.cleanupCallback();
2362
+ activeWatcher = this;
2328
2363
  const args = [
2329
2364
  newValue,
2330
2365
  oldValue === INITIAL_WATCHER_VALUE ? void 0 : this.isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,
@@ -2333,6 +2368,7 @@ var Vue = (function() {
2333
2368
  call ? call(this.cb, 3, args) : this.cb(...args);
2334
2369
  } finally {
2335
2370
  activeWatcher = currentWatcher;
2371
+ setActiveSub(prevSub);
2336
2372
  }
2337
2373
  }
2338
2374
  }
@@ -2663,15 +2699,15 @@ var Vue = (function() {
2663
2699
  } else for (let i = 0; i < jobs.length; i++) queueJobWorker(jobs[i], id, postJobs, postJobs.length, 0);
2664
2700
  queueFlush();
2665
2701
  }
2666
- function flushPreFlushCbs(instance, seen) {
2702
+ function flushPreFlushCbs(instance, minUid, seen) {
2667
2703
  seen = seen || /* @__PURE__ */ new Map();
2668
2704
  for (let i = flushIndex; i < jobsLength; i++) {
2669
2705
  const cb = jobs[i];
2670
2706
  if (cb.order & 1 || cb.order === Infinity) continue;
2671
- if (instance && cb.order !== instance.uid * 2) continue;
2707
+ if (instance && cb.order !== instance.uid * 2 || minUid !== void 0 && !(cb.order >= minUid * 2)) continue;
2672
2708
  if (checkRecursiveUpdates(seen, cb)) continue;
2673
2709
  jobs.splice(i, 1);
2674
- i--;
2710
+ i = instance ? i - 1 : flushIndex - 1;
2675
2711
  jobsLength--;
2676
2712
  if (cb.flags & 2) cb.flags &= -2;
2677
2713
  try {
@@ -2681,15 +2717,24 @@ var Vue = (function() {
2681
2717
  }
2682
2718
  }
2683
2719
  }
2684
- function flushPostFlushCbs(seen) {
2720
+ function flushPostFlushCbs(seen, skip, minUid = 0) {
2685
2721
  if (postJobs.length) {
2722
+ let cbs = postJobs;
2723
+ if (skip) {
2724
+ cbs = [];
2725
+ let kept = 0;
2726
+ for (let i = 0; i < postJobs.length; i++) {
2727
+ const cb = postJobs[i];
2728
+ if (cb.i !== void 0 ? !cb.i || cb.i.uid < minUid : skip.has(cb)) postJobs[kept++] = cb;
2729
+ else cbs.push(cb);
2730
+ }
2731
+ postJobs.length = kept;
2732
+ } else postJobs = [];
2686
2733
  if (activePostJobs) {
2687
- for (let i = 0; i < postJobs.length; i++) activePostJobs.push(postJobs[i]);
2688
- postJobs.length = 0;
2734
+ for (let i = 0; i < cbs.length; i++) activePostJobs.push(cbs[i]);
2689
2735
  return;
2690
2736
  }
2691
- activePostJobs = postJobs;
2692
- postJobs = [];
2737
+ activePostJobs = cbs;
2693
2738
  seen = seen || /* @__PURE__ */ new Map();
2694
2739
  try {
2695
2740
  while (postFlushIndex < activePostJobs.length) {
@@ -2711,17 +2756,28 @@ var Vue = (function() {
2711
2756
  }
2712
2757
  let isFlushing = false;
2713
2758
  /**
2759
+ * Run a root render, then flush the jobs it is responsible for. A mount or
2760
+ * unmount (`minUid` given) only flushes the jobs of the components it created
2761
+ * and the post cbs it queued, so pre watchers triggered in setup run before
2762
+ * mounted (#5721) while the jobs of other components stay in the queue and
2763
+ * keep their order (#6728). A root update keeps flushing all pending pre jobs
2764
+ * and post cbs, as the jobs of the components it re-renders may predate it.
2765
+ *
2714
2766
  * @internal
2715
2767
  */
2716
- function flushOnAppMount(instance) {
2717
- if (!isFlushing) {
2718
- isFlushing = true;
2719
- try {
2720
- flushPreFlushCbs(instance);
2721
- flushPostFlushCbs();
2722
- } finally {
2723
- isFlushing = false;
2724
- }
2768
+ function flushOnAppMount(fn, minUid) {
2769
+ if (isFlushing) {
2770
+ fn();
2771
+ return;
2772
+ }
2773
+ const queued = minUid === void 0 ? void 0 : new Set(postJobs);
2774
+ fn();
2775
+ isFlushing = true;
2776
+ try {
2777
+ flushPreFlushCbs(void 0, minUid);
2778
+ flushPostFlushCbs(void 0, queued, minUid);
2779
+ } finally {
2780
+ isFlushing = false;
2725
2781
  }
2726
2782
  }
2727
2783
  function flushJobs(seen) {
@@ -3538,7 +3594,7 @@ var Vue = (function() {
3538
3594
  this.flags |= 128;
3539
3595
  job.flags |= 2;
3540
3596
  }
3541
- if (instance) job.i = instance;
3597
+ job.i = instance;
3542
3598
  this.job = job;
3543
3599
  }
3544
3600
  notify() {
@@ -3731,7 +3787,11 @@ var Vue = (function() {
3731
3787
  hydrate: hydrateTeleport
3732
3788
  };
3733
3789
  function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, parentComponent, moveType = 2) {
3734
- if (moveType === 0) insert(vnode.targetAnchor, container, parentAnchor);
3790
+ if (moveType === 0) {
3791
+ if (vnode.targetStart) insert(vnode.targetStart, container, parentAnchor);
3792
+ insert(vnode.targetAnchor, container, parentAnchor);
3793
+ parentAnchor = vnode.targetAnchor;
3794
+ }
3735
3795
  const { el, anchor, shapeFlag, children, props } = vnode;
3736
3796
  const isReorder = moveType === 2;
3737
3797
  if (isReorder) insert(el, container, parentAnchor);
@@ -3850,10 +3910,15 @@ var Vue = (function() {
3850
3910
  onAfterAppear: TransitionHookValidator,
3851
3911
  onAppearCancelled: TransitionHookValidator
3852
3912
  };
3853
- const recursiveGetSubtree = (instance) => {
3854
- const subTree = isVaporComponent(instance.type) ? instance.block : instance.subTree;
3855
- return subTree.component ? recursiveGetSubtree(subTree.component) : subTree;
3856
- };
3913
+ function isEmptyTransitionChild(vnode, instance) {
3914
+ if (vnode.type === Comment) return true;
3915
+ if (vnode.type === Fragment) {
3916
+ const child = isArray(vnode.children) && filterSingleRoot(vnode.children, false);
3917
+ return !child || isEmptyTransitionChild(child, instance);
3918
+ }
3919
+ if (vnode.type === VaporSlot || isVaporComponent(vnode.type)) return !getVaporInterface(instance, vnode).hasTransitionChild(vnode);
3920
+ return !!vnode.component && isEmptyTransitionChild(vnode.component.subTree, instance);
3921
+ }
3857
3922
  const BaseTransitionImpl = {
3858
3923
  name: `BaseTransition`,
3859
3924
  props: BaseTransitionPropsValidators,
@@ -3902,7 +3967,7 @@ var Vue = (function() {
3902
3967
  function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3903
3968
  const key = String(vnode.key);
3904
3969
  const leavingVNodesCache = getLeavingNodesForType(state, vnode);
3905
- return baseResolveTransitionHooks({
3970
+ const hooks = baseResolveTransitionHooks({
3906
3971
  isLeaving: () => leavingVNodesCache[key] === vnode,
3907
3972
  setLeavingNodeCache: () => {
3908
3973
  leavingVNodesCache[key] = vnode;
@@ -3912,7 +3977,14 @@ var Vue = (function() {
3912
3977
  },
3913
3978
  earlyRemove: () => {
3914
3979
  const leavingVNode = leavingVNodesCache[key];
3915
- if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) leavingVNode.el[leaveCbKey]();
3980
+ if (leavingVNode && isSameVNodeType(vnode, leavingVNode)) {
3981
+ let leavingCb = leavingVNode.el[leaveCbKey];
3982
+ if (!leavingCb) {
3983
+ const leavingRoot = getTransitionRoot(leavingVNode);
3984
+ leavingCb = leavingRoot && leavingRoot.el[leaveCbKey];
3985
+ }
3986
+ if (leavingCb) leavingCb();
3987
+ }
3916
3988
  },
3917
3989
  cloneHooks: (vnode) => {
3918
3990
  const hooks = resolveTransitionHooks(vnode, props, state, instance, postClone);
@@ -3920,6 +3992,13 @@ var Vue = (function() {
3920
3992
  return hooks;
3921
3993
  }
3922
3994
  }, props, state, instance);
3995
+ if (vnode.type === VaporSlot) extend(hooks, {
3996
+ __vapor: true,
3997
+ props,
3998
+ state,
3999
+ instance
4000
+ });
4001
+ return hooks;
3923
4002
  }
3924
4003
  function baseResolveTransitionHooks(context, props, state, instance) {
3925
4004
  const { isLeaving, setLeavingNodeCache, unsetLeavingNodeCache, earlyRemove, cloneHooks } = context;
@@ -4035,7 +4114,7 @@ var Vue = (function() {
4035
4114
  if (nextInner.type !== Comment) setTransitionHooks(nextInner, enterHooks);
4036
4115
  const mode = props.mode;
4037
4116
  const previousInner = previous && getInnerChild$1(previous);
4038
- if (previous && previousInner && previousInner.type !== Comment && !isSameVNodeType(previousInner, nextInner) && (!previous.component || recursiveGetSubtree(previous.component).type !== Comment)) {
4117
+ if (previous && previousInner && !isSameVNodeType(previousInner, nextInner) && !isEmptyTransitionChild(previousInner, instance)) {
4039
4118
  const leavingHooks = prepareLeavingTransitionHooks(previousInner, props, state, instance);
4040
4119
  if (nextInner.type !== Comment && (mode === "out-in" || mode === "in-out") && applyTransitionModeSwitch(previousInner, leavingHooks, mode === "in-out" ? () => enterHooks : void 0, props, state, resumeAfterLeave)) return emptyPlaceholder(next);
4041
4120
  }
@@ -4099,7 +4178,13 @@ var Vue = (function() {
4099
4178
  const contentHooks = vnode.ssContent.transition = hooks.clone(vnode.ssContent);
4100
4179
  const fallbackHooks = vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);
4101
4180
  return vnode.suspense && vnode.suspense.activeBranch === vnode.ssFallback ? fallbackHooks : contentHooks;
4102
- } else vnode.transition = hooks;
4181
+ } else {
4182
+ vnode.transition = hooks;
4183
+ if (vnode.type === Fragment && isArray(vnode.children)) {
4184
+ const child = filterSingleRoot(vnode.children, false);
4185
+ if (child) setTransitionHooks(child, hooks);
4186
+ }
4187
+ }
4103
4188
  return hooks;
4104
4189
  }
4105
4190
  function getTransitionRawChildren(children, keepComment = false, parentKey) {
@@ -4122,6 +4207,14 @@ var Vue = (function() {
4122
4207
  function checkTransitionMode(mode) {
4123
4208
  if (mode && mode !== "in-out" && mode !== "out-in" && mode !== "default") warn$1(`invalid <transition> mode: ${mode}`);
4124
4209
  }
4210
+ function getTransitionRoot(vnode) {
4211
+ if (vnode.component && !isVaporComponent(vnode.type)) return getTransitionRoot(vnode.component.subTree);
4212
+ if (vnode.type === Fragment) {
4213
+ const child = isArray(vnode.children) && filterSingleRoot(vnode.children, false);
4214
+ return child ? getTransitionRoot(child) : void 0;
4215
+ }
4216
+ if (vnode.type !== Comment) return vnode;
4217
+ }
4125
4218
  //#endregion
4126
4219
  //#region packages/runtime-core/src/apiDefineComponent.ts
4127
4220
  /*@__NO_SIDE_EFFECTS__*/
@@ -4751,14 +4844,20 @@ var Vue = (function() {
4751
4844
  break;
4752
4845
  }
4753
4846
  }, opts);
4754
- forEach((el) => {
4755
- if (!(el instanceof Element)) return;
4847
+ const observe = (el) => {
4756
4848
  if (elementIsVisibleInViewport(el)) {
4757
4849
  hydrate();
4758
4850
  ob.disconnect();
4759
4851
  return false;
4760
4852
  }
4853
+ if (getComputedStyle(el).display === "contents") {
4854
+ for (let i = 0; i < el.children.length; i++) if (observe(el.children[i]) === false) return false;
4855
+ }
4761
4856
  ob.observe(el);
4857
+ };
4858
+ forEach((el) => {
4859
+ if (!(el instanceof Element)) return;
4860
+ return observe(el);
4762
4861
  });
4763
4862
  return () => ob.disconnect();
4764
4863
  };
@@ -5016,7 +5115,10 @@ var Vue = (function() {
5016
5115
  function pruneCacheEntry(key) {
5017
5116
  const cached = cache.get(key);
5018
5117
  if (cached && (!current || !isSameVNodeType(cached, current))) unmount(cached);
5019
- else if (current) resetShapeFlag(current);
5118
+ else if (current) {
5119
+ resetShapeFlag(current);
5120
+ if (cached) resetShapeFlag(cached);
5121
+ }
5020
5122
  cache.delete(key);
5021
5123
  keys.delete(key);
5022
5124
  }
@@ -5562,6 +5664,11 @@ var Vue = (function() {
5562
5664
  owner: currentRenderingInstance
5563
5665
  }] : void 0
5564
5666
  };
5667
+ if (branchKey != null && props.key == null) {
5668
+ ret.vs.props = ret.props;
5669
+ ret.props = extend({}, ret.props, { key: branchKey });
5670
+ ret.key = branchKey;
5671
+ }
5565
5672
  if (!noSlotted && ret.scopeId) ret.slotScopeIds = [ret.scopeId + "-s"];
5566
5673
  return ret;
5567
5674
  }
@@ -5765,6 +5872,7 @@ var Vue = (function() {
5765
5872
  const privateAPIs = {
5766
5873
  $vnode: (i) => i.vnode,
5767
5874
  _self: (i) => i.proxy,
5875
+ _setupProxy: (i) => i.setupState,
5768
5876
  _uid: (i) => i.uid,
5769
5877
  _data: (i) => i.data,
5770
5878
  _isMounted: (i) => i.isMounted,
@@ -6540,7 +6648,7 @@ var Vue = (function() {
6540
6648
  if (options.el) return vm.$mount(options.el);
6541
6649
  else return vm;
6542
6650
  }
6543
- Vue.version = `2.6.14-compat:3.6.0-rc.10`;
6651
+ Vue.version = `2.6.14-compat:3.6.0-rc.12`;
6544
6652
  Vue.config = singletonApp.config;
6545
6653
  Vue.use = (plugin, ...options) => {
6546
6654
  if (plugin && isFunction(plugin.install)) plugin.install(Vue, ...options);
@@ -7358,7 +7466,7 @@ var Vue = (function() {
7358
7466
  if (nextKeys.length !== Object.keys(prevProps).length) return true;
7359
7467
  for (let i = 0; i < nextKeys.length; i++) {
7360
7468
  const key = nextKeys[i];
7361
- if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) return true;
7469
+ if (!hasOwn(prevProps, key) || hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) return true;
7362
7470
  }
7363
7471
  return false;
7364
7472
  }
@@ -8082,7 +8190,8 @@ var Vue = (function() {
8082
8190
  for (let i = 0; i < newChildren.length; i++) {
8083
8191
  const oldVNode = oldChildren[i];
8084
8192
  const newVNode = newChildren[i];
8085
- const container = oldVNode.el && (oldVNode.type === Fragment || !isSameVNodeType(oldVNode, newVNode) || oldVNode.shapeFlag & 198) ? hostParentNode(oldVNode.el) : fallbackContainer;
8193
+ const oldEl = oldVNode.el || resolveAsyncComponentPlaceholder(oldVNode);
8194
+ const container = oldEl && (oldVNode.type === Fragment || !isSameVNodeType(oldVNode, newVNode) || oldVNode.shapeFlag & 198) ? hostParentNode(oldEl) : fallbackContainer;
8086
8195
  patch(oldVNode, newVNode, container, null, parentComponent, parentSuspense, namespace, slotScopeIds, true);
8087
8196
  }
8088
8197
  };
@@ -8177,6 +8286,7 @@ var Vue = (function() {
8177
8286
  if (instance.asyncDep && !instance.asyncResolved) {
8178
8287
  pushWarningContext(n2);
8179
8288
  n2.el = n1.el;
8289
+ n2.placeholder = n1.placeholder;
8180
8290
  updateComponentPreRender(instance, n2, optimized);
8181
8291
  popWarningContext();
8182
8292
  return;
@@ -8186,6 +8296,7 @@ var Vue = (function() {
8186
8296
  }
8187
8297
  } else {
8188
8298
  n2.el = n1.el;
8299
+ n2.placeholder = n1.placeholder;
8189
8300
  instance.vnode = n2;
8190
8301
  }
8191
8302
  };
@@ -8537,12 +8648,9 @@ var Vue = (function() {
8537
8648
  };
8538
8649
  const remove = (vnode) => {
8539
8650
  const { type, el, anchor, transition } = vnode;
8540
- if (type === Fragment) {
8541
- if (vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) vnode.children.forEach((child) => {
8542
- if (child.type === Comment) hostRemove(child.el);
8543
- else remove(child);
8544
- });
8545
- else removeFragment(el, anchor);
8651
+ const isFragment = type === Fragment;
8652
+ if (isFragment && !transition) {
8653
+ removeFragment(el, anchor);
8546
8654
  return;
8547
8655
  }
8548
8656
  if (type === Static) {
@@ -8550,8 +8658,21 @@ var Vue = (function() {
8550
8658
  if (transition && !transition.persisted && transition.afterLeave) transition.afterLeave();
8551
8659
  return;
8552
8660
  }
8553
- if (transition) performTransitionLeave(el, transition, () => hostRemove(el), !!(vnode.shapeFlag & 1));
8554
- else hostRemove(el);
8661
+ const leavingNode = isFragment ? getTransitionRoot(vnode) : vnode;
8662
+ const performRemove = () => {
8663
+ if (isFragment) {
8664
+ if (hostParentNode(el)) removeFragment(el, anchor);
8665
+ } else hostRemove(el);
8666
+ };
8667
+ if (transition) {
8668
+ let leavingEl = leavingNode && leavingNode.el;
8669
+ let isElement = !!(leavingNode && leavingNode.shapeFlag & 1);
8670
+ if (isFragment && leavingNode && isVaporComponent(leavingNode.type)) {
8671
+ leavingEl = getVaporInterface(leavingNode.component, leavingNode).getTransitionElement(leavingNode);
8672
+ isElement = !!leavingEl;
8673
+ }
8674
+ performTransitionLeave(leavingEl || el, transition, performRemove, isElement);
8675
+ } else performRemove();
8555
8676
  };
8556
8677
  const removeFragment = (cur, end) => {
8557
8678
  let next;
@@ -8596,15 +8717,12 @@ var Vue = (function() {
8596
8717
  return teleportEnd ? hostNextSibling(teleportEnd) : el;
8597
8718
  };
8598
8719
  const render = (vnode, container, namespace) => {
8599
- let instance;
8600
- if (vnode == null) {
8601
- if (container._vnode) {
8602
- unmount(container._vnode, null, null, true);
8603
- instance = container._vnode.component;
8604
- }
8605
- } else patch(container._vnode || null, vnode, container, null, null, null, namespace);
8606
- container._vnode = vnode;
8607
- flushOnAppMount(instance);
8720
+ flushOnAppMount(() => {
8721
+ if (vnode == null) {
8722
+ if (container._vnode) unmount(container._vnode, null, null, true);
8723
+ } else patch(container._vnode || null, vnode, container, null, null, null, namespace);
8724
+ container._vnode = vnode;
8725
+ }, vnode && container._vnode ? void 0 : vnode && vnode.component ? vnode.component.uid : getNextUid());
8608
8726
  };
8609
8727
  const internals = {
8610
8728
  p: patch,
@@ -8997,13 +9115,12 @@ var Vue = (function() {
8997
9115
  registerDep(instance, onResolve) {
8998
9116
  const isInPendingSuspense = !!suspense.pendingBranch;
8999
9117
  if (isInPendingSuspense) suspense.deps++;
9000
- const hydratedEl = instance.vnode && instance.vnode.el;
9001
9118
  instance.asyncDep.catch((err) => {
9002
9119
  handleError(err, instance, 0);
9003
9120
  }).then((asyncSetupResult) => {
9004
9121
  if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) return;
9005
9122
  setCurrentInstance(null, void 0);
9006
- if (hydratedEl && !instance.scope.active) {
9123
+ if (!instance.scope.active) {
9007
9124
  if (isInPendingSuspense && --suspense.deps === 0) suspense.resolve();
9008
9125
  return;
9009
9126
  }
@@ -9359,7 +9476,7 @@ var Vue = (function() {
9359
9476
  ctx: vnode.ctx,
9360
9477
  ce: vnode.ce,
9361
9478
  vi: vnode.vi,
9362
- vs: cloneVaporSlotMeta(vnode),
9479
+ vs: cloneVaporSlotMeta(vnode, extraProps),
9363
9480
  vb: vnode.vb,
9364
9481
  ibu: vnode.ibu,
9365
9482
  iu: vnode.iu,
@@ -9369,13 +9486,22 @@ var Vue = (function() {
9369
9486
  defineLegacyVNodeProperties(cloned);
9370
9487
  return cloned;
9371
9488
  }
9372
- function cloneVaporSlotMeta(vnode) {
9489
+ function cloneVaporSlotMeta(vnode, extraProps) {
9373
9490
  const vaporSlot = vnode.vs;
9374
9491
  if (!vaporSlot) return vaporSlot;
9375
9492
  const cloned = {
9376
9493
  slot: vaporSlot.slot,
9377
- outlets: vaporSlot.outlets
9494
+ outlets: vaporSlot.outlets,
9495
+ props: vaporSlot.props
9378
9496
  };
9497
+ if (vaporSlot.props && extraProps) {
9498
+ let extraSlotProps;
9499
+ for (const key in extraProps) if (key !== "key") {
9500
+ if (!extraSlotProps) extraSlotProps = {};
9501
+ extraSlotProps[key] = extraProps[key];
9502
+ }
9503
+ if (extraSlotProps) cloned.props = mergeProps(vaporSlot.props, extraSlotProps);
9504
+ }
9379
9505
  if (vnode.el) {
9380
9506
  cloned.state = vaporSlot.state;
9381
9507
  cloned.ref = vaporSlot.ref;
@@ -9558,6 +9684,9 @@ var Vue = (function() {
9558
9684
  //#region packages/runtime-core/src/component.ts
9559
9685
  const emptyAppContext = /*@__PURE__*/ createAppContext();
9560
9686
  let uid = 0;
9687
+ function getNextUid() {
9688
+ return uid;
9689
+ }
9561
9690
  function createComponentInstance(vnode, parent, suspense) {
9562
9691
  const type = vnode.type;
9563
9692
  const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;
@@ -10066,7 +10195,7 @@ var Vue = (function() {
10066
10195
  }
10067
10196
  //#endregion
10068
10197
  //#region packages/runtime-core/src/index.ts
10069
- const version = "3.6.0-rc.10";
10198
+ const version = "3.6.0-rc.12";
10070
10199
  const warn = warn$1;
10071
10200
  /**
10072
10201
  * Runtime error messages. Only exposed in dev or esm builds.
@@ -10569,7 +10698,7 @@ var Vue = (function() {
10569
10698
  else el.removeAttribute("style");
10570
10699
  }
10571
10700
  if (vShowOriginalDisplay in el) {
10572
- el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : "";
10701
+ if (!isCssString || prev !== next) el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : "";
10573
10702
  if (el[vShowHidden]) style.display = "none";
10574
10703
  }
10575
10704
  }
@@ -10899,7 +11028,7 @@ var Vue = (function() {
10899
11028
  this._resolveProps(def);
10900
11029
  if (this.shadowRoot) this._applyStyles(styles);
10901
11030
  else if (styles) warn("Custom element style injection is not supported when using shadowRoot: false");
10902
- this._mountComponent(def);
11031
+ if (this._connected) this._mountComponent(def);
10903
11032
  };
10904
11033
  const asyncDef = this._def.__asyncLoader;
10905
11034
  if (asyncDef) {
@@ -11201,6 +11330,7 @@ var Vue = (function() {
11201
11330
  const newPositionMap = /* @__PURE__ */ new WeakMap();
11202
11331
  const moveCbKey = Symbol("_moveCb");
11203
11332
  const enterCbKey = Symbol("_enterCb");
11333
+ const pendingGroups = /* @__PURE__ */ new WeakMap();
11204
11334
  /**
11205
11335
  * Wrap logic that modifies TransitionGroup properties in a function
11206
11336
  * so that it can be annotated as pure
@@ -11221,15 +11351,24 @@ var Vue = (function() {
11221
11351
  const state = useTransitionState();
11222
11352
  let prevChildren;
11223
11353
  let children;
11354
+ let origins;
11355
+ let moves;
11356
+ const willMove = () => {
11357
+ if (moves === void 0) moves = prevChildren.length > 0 && hasCSSTransform(prevChildren[0].el, instance.vnode.el, resolveMoveClass(props));
11358
+ return moves;
11359
+ };
11224
11360
  onUpdated(() => {
11225
- if (!prevChildren.length) return;
11226
- const moveClass = props.moveClass || `${props.name || "v"}-move`;
11227
- if (!hasCSSTransform(prevChildren[0].el, instance.vnode.el, moveClass)) {
11361
+ pendingGroups.delete(instance);
11362
+ if (!willMove()) {
11228
11363
  prevChildren = [];
11364
+ origins = void 0;
11229
11365
  return;
11230
11366
  }
11367
+ const moveClass = resolveMoveClass(props);
11231
11368
  prevChildren.forEach((vnode) => callPendingCbs(vnode.el));
11232
- prevChildren.forEach(recordPosition);
11369
+ const shift = origins && getOriginShift(origins, instance.vnode.el);
11370
+ origins = void 0;
11371
+ prevChildren.forEach((c) => recordPosition(c, shift));
11233
11372
  const movedChildren = prevChildren.filter(applyTranslation);
11234
11373
  forceReflow(instance.vnode.el);
11235
11374
  movedChildren.forEach((c) => {
@@ -11244,6 +11383,7 @@ var Vue = (function() {
11244
11383
  let tag = rawProps.tag || Fragment;
11245
11384
  if (!rawProps.tag && compatUtils.checkCompatEnabled("TRANSITION_GROUP_ROOT", instance.parent)) tag = "span";
11246
11385
  prevChildren = [];
11386
+ moves = void 0;
11247
11387
  if (children) for (let i = 0; i < children.length; i++) {
11248
11388
  const child = children[i];
11249
11389
  if (child.el && child.el instanceof Element && !child.el[vShowHidden]) {
@@ -11258,6 +11398,14 @@ var Vue = (function() {
11258
11398
  if (child.key != null) setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
11259
11399
  else if (child.type !== Text) warn(`<TransitionGroup> children must be keyed.`);
11260
11400
  }
11401
+ if (prevChildren.length) {
11402
+ const root = instance.vnode.el;
11403
+ origins = getOrigins(instance, root);
11404
+ pendingGroups.set(instance, {
11405
+ root,
11406
+ willMove
11407
+ });
11408
+ }
11261
11409
  return createVNode(tag, null, children);
11262
11410
  };
11263
11411
  }
@@ -11266,8 +11414,11 @@ var Vue = (function() {
11266
11414
  if (el[moveCbKey]) el[moveCbKey]();
11267
11415
  if (el[enterCbKey]) el[enterCbKey]();
11268
11416
  }
11269
- function recordPosition(c) {
11270
- newPositionMap.set(c, getPosition(c.el));
11417
+ function resolveMoveClass(props) {
11418
+ return props.moveClass || `${props.name || "v"}-move`;
11419
+ }
11420
+ function recordPosition(c, shift) {
11421
+ newPositionMap.set(c, getPosition(c.el, shift));
11271
11422
  }
11272
11423
  function applyTranslation(c) {
11273
11424
  if (baseApplyTranslation(positionMap.get(c), newPositionMap.get(c), c.el)) return c;
@@ -11292,13 +11443,36 @@ var Vue = (function() {
11292
11443
  }
11293
11444
  return false;
11294
11445
  }
11295
- function getPosition(el) {
11446
+ function getPosition(el, shift) {
11296
11447
  const rect = el.getBoundingClientRect();
11297
11448
  return {
11298
- left: rect.left,
11299
- top: rect.top
11449
+ left: rect.left - (shift ? shift.left : 0),
11450
+ top: rect.top - (shift ? shift.top : 0)
11300
11451
  };
11301
11452
  }
11453
+ function getOrigins(instance, root) {
11454
+ let origins;
11455
+ for (let group = instance.parent; group; group = group.parent) {
11456
+ const pending = pendingGroups.get(group);
11457
+ if (pending) {
11458
+ const item = findItem(pending.root, root);
11459
+ if (item) (origins || (origins = [])).push(extend(getPosition(item), {
11460
+ item,
11461
+ willMove: pending.willMove
11462
+ }));
11463
+ }
11464
+ }
11465
+ return origins;
11466
+ }
11467
+ function findItem(root, node) {
11468
+ const container = root.nodeType === 1 ? root : root.parentNode;
11469
+ while (node && node.parentNode !== container) node = node.parentNode;
11470
+ if (node && node.nodeType === 1) return node;
11471
+ }
11472
+ function getOriginShift(origins, root) {
11473
+ const origin = origins.find((o) => o.willMove() && o.item.contains(root));
11474
+ return origin && getPosition(origin.item, origin);
11475
+ }
11302
11476
  function hasCSSTransform(el, root, moveClass) {
11303
11477
  const clone = el.cloneNode();
11304
11478
  const _vtc = el[vtcKey];
@@ -13050,7 +13224,7 @@ var Vue = (function() {
13050
13224
  [41]: `v-model is missing expression.`,
13051
13225
  [42]: `v-model value must be a valid JavaScript member expression.`,
13052
13226
  [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`,
13053
- [44]: `v-model cannot be used on a prop, because local prop bindings are not writable.\nUse a v-bind binding combined with a v-on listener that emits update:x event instead.`,
13227
+ [44]: `v-model cannot be used on a prop, because local prop bindings are not writable.\nUse a v-bind binding combined with a v-on listener that emits update:x event instead.\nFor props declared with defineModel(), assign the returned ref to a variable and use v-model on that variable.`,
13054
13228
  [45]: `v-model cannot be used on a const binding because it is not writable.`,
13055
13229
  [46]: `Error parsing JavaScript expression: `,
13056
13230
  [47]: `<KeepAlive> expects exactly one child component.`,
@@ -14873,7 +15047,11 @@ var Vue = (function() {
14873
15047
  ]),
14874
15048
  createCompoundExpression([
14875
15049
  `if (_cached && _cached.el`,
14876
- ...keyExp ? [` && _cached.key === `, keyExp] : [],
15050
+ ...keyExp ? [
15051
+ ` && _cached.key === (`,
15052
+ keyExp,
15053
+ `)`
15054
+ ] : [],
14877
15055
  ` && ${context.helperString(IS_MEMO_SAME)}(_cached, _memo)) return _cached`
14878
15056
  ]),
14879
15057
  createCompoundExpression([`const _item = `, childBlock]),
@@ -16295,7 +16473,11 @@ var Vue = (function() {
16295
16473
  };
16296
16474
  //#endregion
16297
16475
  //#region packages/compiler-dom/src/index.ts
16298
- const DOMNodeTransforms = [transformStyle, ...[transformTransition, validateHtmlNesting]];
16476
+ const DOMNodeTransforms = [
16477
+ transformStyle,
16478
+ transformTransition,
16479
+ ...[validateHtmlNesting]
16480
+ ];
16299
16481
  const DOMDirectiveTransforms = {
16300
16482
  cloak: noopDirectiveTransform,
16301
16483
  html: transformVHtml,