@vue/compat 3.6.0-rc.11 → 3.6.0-rc.13

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.11
2
+ * @vue/compat v3.6.0-rc.13
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() {
@@ -3595,6 +3651,16 @@ var Vue = (function() {
3595
3651
  };
3596
3652
  }
3597
3653
  //#endregion
3654
+ //#region packages/runtime-core/src/vaporInteropState.ts
3655
+ /**
3656
+ * Set by `vaporInteropPlugin`. Stays false in apps that never import the
3657
+ * plugin, so bundlers drop the vapor-in-vdom branches of the renderer.
3658
+ */
3659
+ let isVaporInteropEnabled = false;
3660
+ function setVaporInteropEnabled() {
3661
+ isVaporInteropEnabled = true;
3662
+ }
3663
+ //#endregion
3598
3664
  //#region packages/runtime-core/src/components/Teleport.ts
3599
3665
  const pendingMounts = /* @__PURE__ */ new WeakMap();
3600
3666
  const TeleportEndKey = Symbol("_vte");
@@ -3731,7 +3797,11 @@ var Vue = (function() {
3731
3797
  hydrate: hydrateTeleport
3732
3798
  };
3733
3799
  function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, parentComponent, moveType = 2) {
3734
- if (moveType === 0) insert(vnode.targetAnchor, container, parentAnchor);
3800
+ if (moveType === 0) {
3801
+ if (vnode.targetStart) insert(vnode.targetStart, container, parentAnchor);
3802
+ insert(vnode.targetAnchor, container, parentAnchor);
3803
+ parentAnchor = vnode.targetAnchor;
3804
+ }
3735
3805
  const { el, anchor, shapeFlag, children, props } = vnode;
3736
3806
  const isReorder = moveType === 2;
3737
3807
  if (isReorder) insert(el, container, parentAnchor);
@@ -3850,9 +3920,18 @@ var Vue = (function() {
3850
3920
  onAfterAppear: TransitionHookValidator,
3851
3921
  onAppearCancelled: TransitionHookValidator
3852
3922
  };
3923
+ let isTransitionEnabled = false;
3924
+ function withTransitionEnabled(value) {
3925
+ isTransitionEnabled = true;
3926
+ return value;
3927
+ }
3853
3928
  function isEmptyTransitionChild(vnode, instance) {
3854
3929
  if (vnode.type === Comment) return true;
3855
- if (vnode.type === VaporSlot || isVaporComponent(vnode.type)) return !getVaporInterface(instance, vnode).hasTransitionChild(vnode);
3930
+ if (vnode.type === Fragment) {
3931
+ const child = isArray(vnode.children) && filterSingleRoot(vnode.children, false);
3932
+ return !child || isEmptyTransitionChild(child, instance);
3933
+ }
3934
+ if (isVaporInteropEnabled && (vnode.type === VaporSlot || isVaporComponent(vnode.type))) return !getVaporInterface(instance, vnode).hasTransitionChild(vnode);
3856
3935
  return !!vnode.component && isEmptyTransitionChild(vnode.component.subTree, instance);
3857
3936
  }
3858
3937
  const BaseTransitionImpl = {
@@ -3869,7 +3948,7 @@ var Vue = (function() {
3869
3948
  const { mode } = rawProps;
3870
3949
  checkTransitionMode(mode);
3871
3950
  return prepareTransitionSwitch(instance.subTree, child, rawProps, state, instance, mode === "out-in" ? resumeAfterLeave || (resumeAfterLeave = () => {
3872
- if (!(instance.job.flags & 4)) instance.update();
3951
+ if (!(instance.effect.flags & 1024)) instance.update();
3873
3952
  }) : NOOP);
3874
3953
  };
3875
3954
  }
@@ -3890,7 +3969,7 @@ var Vue = (function() {
3890
3969
  }
3891
3970
  return child;
3892
3971
  }
3893
- const BaseTransition = BaseTransitionImpl;
3972
+ const BaseTransition = /*@__PURE__*/ withTransitionEnabled(BaseTransitionImpl);
3894
3973
  function getLeavingNodesForType(state, vnode) {
3895
3974
  const { leavingNodes } = state;
3896
3975
  let leavingVNodesCache = leavingNodes.get(vnode.type);
@@ -3913,7 +3992,14 @@ var Vue = (function() {
3913
3992
  },
3914
3993
  earlyRemove: () => {
3915
3994
  const leavingVNode = leavingVNodesCache[key];
3916
- if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) leavingVNode.el[leaveCbKey]();
3995
+ if (leavingVNode && isSameVNodeType(vnode, leavingVNode)) {
3996
+ let leavingCb = leavingVNode.el[leaveCbKey];
3997
+ if (!leavingCb) {
3998
+ const leavingRoot = getTransitionRoot(leavingVNode);
3999
+ leavingCb = leavingRoot && leavingRoot.el[leaveCbKey];
4000
+ }
4001
+ if (leavingCb) leavingCb();
4002
+ }
3917
4003
  },
3918
4004
  cloneHooks: (vnode) => {
3919
4005
  const hooks = resolveTransitionHooks(vnode, props, state, instance, postClone);
@@ -3921,7 +4007,7 @@ var Vue = (function() {
3921
4007
  return hooks;
3922
4008
  }
3923
4009
  }, props, state, instance);
3924
- if (vnode.type === VaporSlot) extend(hooks, {
4010
+ if (isVaporInteropEnabled && vnode.type === VaporSlot) extend(hooks, {
3925
4011
  __vapor: true,
3926
4012
  props,
3927
4013
  state,
@@ -4098,7 +4184,7 @@ var Vue = (function() {
4098
4184
  function setTransitionHooks(vnode, hooks) {
4099
4185
  if (vnode.shapeFlag & 6 && vnode.component) {
4100
4186
  vnode.transition = hooks;
4101
- if (isVaporComponent(vnode.type)) getVaporInterface(vnode.component, vnode).setTransitionHooks(vnode.component, hooks);
4187
+ if (isVaporInteropEnabled && isVaporComponent(vnode.type)) getVaporInterface(vnode.component, vnode).setTransitionHooks(vnode.component, hooks);
4102
4188
  else {
4103
4189
  const subTree = vnode.component.subTree;
4104
4190
  return setTransitionHooks(isTeleport(subTree.type) ? getInnerChild$1(subTree) || subTree : subTree, hooks);
@@ -4107,7 +4193,13 @@ var Vue = (function() {
4107
4193
  const contentHooks = vnode.ssContent.transition = hooks.clone(vnode.ssContent);
4108
4194
  const fallbackHooks = vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);
4109
4195
  return vnode.suspense && vnode.suspense.activeBranch === vnode.ssFallback ? fallbackHooks : contentHooks;
4110
- } else vnode.transition = hooks;
4196
+ } else {
4197
+ vnode.transition = hooks;
4198
+ if (vnode.type === Fragment && isArray(vnode.children)) {
4199
+ const child = filterSingleRoot(vnode.children, false);
4200
+ if (child) setTransitionHooks(child, hooks);
4201
+ }
4202
+ }
4111
4203
  return hooks;
4112
4204
  }
4113
4205
  function getTransitionRawChildren(children, keepComment = false, parentKey) {
@@ -4130,6 +4222,14 @@ var Vue = (function() {
4130
4222
  function checkTransitionMode(mode) {
4131
4223
  if (mode && mode !== "in-out" && mode !== "out-in" && mode !== "default") warn$1(`invalid <transition> mode: ${mode}`);
4132
4224
  }
4225
+ function getTransitionRoot(vnode) {
4226
+ if (vnode.component && (!isVaporInteropEnabled || !isVaporComponent(vnode.type))) return getTransitionRoot(vnode.component.subTree);
4227
+ if (vnode.type === Fragment) {
4228
+ const child = isArray(vnode.children) && filterSingleRoot(vnode.children, false);
4229
+ return child ? getTransitionRoot(child) : void 0;
4230
+ }
4231
+ if (vnode.type !== Comment) return vnode;
4232
+ }
4133
4233
  //#endregion
4134
4234
  //#region packages/runtime-core/src/apiDefineComponent.ts
4135
4235
  /*@__NO_SIDE_EFFECTS__*/
@@ -4383,7 +4483,7 @@ var Vue = (function() {
4383
4483
  else nextNode = hydrateFragment(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);
4384
4484
  break;
4385
4485
  case VaporSlot:
4386
- nextNode = getVaporInterface(parentComponent, vnode).hydrateSlot(vnode, node, parentComponent, parentSuspense, slotScopeIds);
4486
+ if (isVaporInteropEnabled) nextNode = getVaporInterface(parentComponent, vnode).hydrateSlot(vnode, node, parentComponent, parentSuspense, slotScopeIds);
4387
4487
  break;
4388
4488
  default: if (shapeFlag & 1) {
4389
4489
  if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode$1(node)) nextNode = onMismatch();
@@ -4515,7 +4615,7 @@ var Vue = (function() {
4515
4615
  if (fragmentSlotScopeIds) slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;
4516
4616
  const container = parentNode(node);
4517
4617
  const first = nextSibling(node);
4518
- const next = vnode.vo && node.data === "(" ? getVaporInterface(parentComponent, vnode).hydrateSlotOutlet(vnode, node, parentComponent, parentSuspense, slotScopeIds) : hydrateChildren(first, vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized);
4618
+ const next = isVaporInteropEnabled && vnode.vo && node.data === "(" ? getVaporInterface(parentComponent, vnode).hydrateSlotOutlet(vnode, node, parentComponent, parentSuspense, slotScopeIds) : hydrateChildren(first, vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized);
4519
4619
  if (next && isComment(next) && next.data === (node.data === "(" ? ")" : "]")) return nextSibling(vnode.anchor = next);
4520
4620
  else {
4521
4621
  logMismatchError();
@@ -4759,14 +4859,20 @@ var Vue = (function() {
4759
4859
  break;
4760
4860
  }
4761
4861
  }, opts);
4762
- forEach((el) => {
4763
- if (!(el instanceof Element)) return;
4862
+ const observe = (el) => {
4764
4863
  if (elementIsVisibleInViewport(el)) {
4765
4864
  hydrate();
4766
4865
  ob.disconnect();
4767
4866
  return false;
4768
4867
  }
4868
+ if (getComputedStyle(el).display === "contents") {
4869
+ for (let i = 0; i < el.children.length; i++) if (observe(el.children[i]) === false) return false;
4870
+ }
4769
4871
  ob.observe(el);
4872
+ };
4873
+ forEach((el) => {
4874
+ if (!(el instanceof Element)) return;
4875
+ return observe(el);
4770
4876
  });
4771
4877
  return () => ob.disconnect();
4772
4878
  };
@@ -4916,7 +5022,7 @@ var Vue = (function() {
4916
5022
  setPendingRequest: (request) => pendingRequest = request
4917
5023
  };
4918
5024
  }
4919
- const useAsyncComponentState = (delay, timeout, onError, instance = currentInstance) => {
5025
+ const useAsyncComponentState = (delay = 200, timeout, onError, instance = currentInstance) => {
4920
5026
  const loaded = /* @__PURE__ */ ref(false);
4921
5027
  const error = /* @__PURE__ */ ref();
4922
5028
  const delayed = /* @__PURE__ */ ref(!!delay);
@@ -4973,6 +5079,11 @@ var Vue = (function() {
4973
5079
  //#endregion
4974
5080
  //#region packages/runtime-core/src/components/KeepAlive.ts
4975
5081
  const isKeepAlive = (vnode) => vnode.type.__isKeepAlive;
5082
+ let isKeepAliveEnabled = false;
5083
+ function withKeepAliveEnabled(value) {
5084
+ isKeepAliveEnabled = true;
5085
+ return value;
5086
+ }
4976
5087
  const KeepAliveImpl = {
4977
5088
  name: `KeepAlive`,
4978
5089
  __isKeepAlive: true,
@@ -5024,7 +5135,10 @@ var Vue = (function() {
5024
5135
  function pruneCacheEntry(key) {
5025
5136
  const cached = cache.get(key);
5026
5137
  if (cached && (!current || !isSameVNodeType(cached, current))) unmount(cached);
5027
- else if (current) resetShapeFlag(current);
5138
+ else if (current) {
5139
+ resetShapeFlag(current);
5140
+ if (cached) resetShapeFlag(cached);
5141
+ }
5028
5142
  cache.delete(key);
5029
5143
  keys.delete(key);
5030
5144
  }
@@ -5114,7 +5228,7 @@ var Vue = (function() {
5114
5228
  t.__isBuiltIn = true;
5115
5229
  return t;
5116
5230
  };
5117
- const KeepAlive = /*@__PURE__*/ decorate$2(KeepAliveImpl);
5231
+ const KeepAlive = /*@__PURE__*/ withKeepAliveEnabled(/*@__PURE__*/ decorate$2(KeepAliveImpl));
5118
5232
  function matches(pattern, name) {
5119
5233
  if (isArray(pattern)) return pattern.some((p) => matches(p, name));
5120
5234
  else if (isString(pattern)) return pattern.split(",").includes(name);
@@ -5560,16 +5674,22 @@ var Vue = (function() {
5560
5674
  function renderSlot(slots, name, props, fallback, noSlotted, branchKey) {
5561
5675
  if (props == null) props = {};
5562
5676
  let slot = slots[name];
5563
- const vaporSlot = slot && slot[rawVaporSlotKey];
5677
+ const vaporSlot = isVaporInteropEnabled && slot && slot[rawVaporSlotKey];
5564
5678
  if (vaporSlot) {
5565
5679
  const ret = (openBlock(), createBlock(VaporSlot, props));
5566
5680
  ret.vs = {
5567
5681
  slot: vaporSlot,
5682
+ name,
5568
5683
  outlets: fallback ? [{
5569
5684
  fallback,
5570
5685
  owner: currentRenderingInstance
5571
5686
  }] : void 0
5572
5687
  };
5688
+ if (branchKey != null && props.key == null) {
5689
+ ret.vs.props = ret.props;
5690
+ ret.props = extend({}, ret.props, { key: branchKey });
5691
+ ret.key = branchKey;
5692
+ }
5573
5693
  if (!noSlotted && ret.scopeId) ret.slotScopeIds = [ret.scopeId + "-s"];
5574
5694
  return ret;
5575
5695
  }
@@ -5590,7 +5710,7 @@ var Vue = (function() {
5590
5710
  try {
5591
5711
  const validSlotContent = slot && ensureValidVNode(slot(props));
5592
5712
  let attached = false;
5593
- if (fallback && validSlotContent && currentRenderingInstance) {
5713
+ if (isVaporInteropEnabled && fallback && validSlotContent && currentRenderingInstance) {
5594
5714
  const interop = currentRenderingInstance.appContext.vapor;
5595
5715
  if (interop) attached = interop.attachSlotOutlet(validSlotContent, fallback, currentRenderingInstance);
5596
5716
  }
@@ -5773,6 +5893,7 @@ var Vue = (function() {
5773
5893
  const privateAPIs = {
5774
5894
  $vnode: (i) => i.vnode,
5775
5895
  _self: (i) => i.proxy,
5896
+ _setupProxy: (i) => i.setupState,
5776
5897
  _uid: (i) => i.uid,
5777
5898
  _data: (i) => i.data,
5778
5899
  _isMounted: (i) => i.isMounted,
@@ -6548,7 +6669,7 @@ var Vue = (function() {
6548
6669
  if (options.el) return vm.$mount(options.el);
6549
6670
  else return vm;
6550
6671
  }
6551
- Vue.version = `2.6.14-compat:3.6.0-rc.11`;
6672
+ Vue.version = `2.6.14-compat:3.6.0-rc.13`;
6552
6673
  Vue.config = singletonApp.config;
6553
6674
  Vue.use = (plugin, ...options) => {
6554
6675
  if (plugin && isFunction(plugin.install)) plugin.install(Vue, ...options);
@@ -7366,7 +7487,7 @@ var Vue = (function() {
7366
7487
  if (nextKeys.length !== Object.keys(prevProps).length) return true;
7367
7488
  for (let i = 0; i < nextKeys.length; i++) {
7368
7489
  const key = nextKeys[i];
7369
- if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) return true;
7490
+ if (!hasOwn(prevProps, key) || hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) return true;
7370
7491
  }
7371
7492
  return false;
7372
7493
  }
@@ -7912,7 +8033,7 @@ var Vue = (function() {
7912
8033
  processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
7913
8034
  break;
7914
8035
  case VaporSlot:
7915
- getVaporInterface(parentComponent, n2).slot(n1, n2, container, anchor, parentComponent, parentSuspense, slotScopeIds);
8036
+ if (isVaporInteropEnabled) getVaporInterface(parentComponent, n2).slot(n1, n2, container, anchor, parentComponent, parentSuspense, slotScopeIds);
7916
8037
  break;
7917
8038
  default: if (shapeFlag & 1) processElement(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
7918
8039
  else if (shapeFlag & 6) processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
@@ -8046,7 +8167,7 @@ var Vue = (function() {
8046
8167
  let vnodeHook;
8047
8168
  parentComponent && toggleRecurse(parentComponent, false);
8048
8169
  if (vnodeHook = newProps.onVnodeBeforeUpdate) invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
8049
- if (n2.ibu) n2.ibu();
8170
+ if (isVaporInteropEnabled && n2.ibu) n2.ibu();
8050
8171
  if (dirs) invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate");
8051
8172
  parentComponent && toggleRecurse(parentComponent, true);
8052
8173
  if (isHmrUpdating || dynamicChildren && (!n1.dynamicChildren || n1.dynamicChildren.length !== dynamicChildren.length)) {
@@ -8080,9 +8201,9 @@ var Vue = (function() {
8080
8201
  if (n1.children !== n2.children) hostSetElementText(el, n2.children);
8081
8202
  }
8082
8203
  } else if (!optimized && dynamicChildren == null) patchProps(el, oldProps, newProps, parentComponent, namespace);
8083
- if ((vnodeHook = newProps.onVnodeUpdated) || dirs || n2.iu) queuePostRenderEffect(() => {
8204
+ if ((vnodeHook = newProps.onVnodeUpdated) || dirs || isVaporInteropEnabled && n2.iu) queuePostRenderEffect(() => {
8084
8205
  vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
8085
- n2.iu && n2.iu();
8206
+ isVaporInteropEnabled && n2.iu && n2.iu();
8086
8207
  dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated");
8087
8208
  }, void 0, parentSuspense);
8088
8209
  };
@@ -8090,7 +8211,8 @@ var Vue = (function() {
8090
8211
  for (let i = 0; i < newChildren.length; i++) {
8091
8212
  const oldVNode = oldChildren[i];
8092
8213
  const newVNode = newChildren[i];
8093
- const container = oldVNode.el && (oldVNode.type === Fragment || !isSameVNodeType(oldVNode, newVNode) || oldVNode.shapeFlag & 198) ? hostParentNode(oldVNode.el) : fallbackContainer;
8214
+ const oldEl = oldVNode.el || resolveAsyncComponentPlaceholder(oldVNode);
8215
+ const container = oldEl && (oldVNode.type === Fragment || !isSameVNodeType(oldVNode, newVNode) || oldVNode.shapeFlag & 198) ? hostParentNode(oldEl) : fallbackContainer;
8094
8216
  patch(oldVNode, newVNode, container, null, parentComponent, parentSuspense, namespace, slotScopeIds, true);
8095
8217
  }
8096
8218
  };
@@ -8185,6 +8307,7 @@ var Vue = (function() {
8185
8307
  if (instance.asyncDep && !instance.asyncResolved) {
8186
8308
  pushWarningContext(n2);
8187
8309
  n2.el = n1.el;
8310
+ n2.placeholder = n1.placeholder;
8188
8311
  updateComponentPreRender(instance, n2, optimized);
8189
8312
  popWarningContext();
8190
8313
  return;
@@ -8194,6 +8317,7 @@ var Vue = (function() {
8194
8317
  }
8195
8318
  } else {
8196
8319
  n2.el = n1.el;
8320
+ n2.placeholder = n1.placeholder;
8197
8321
  instance.vnode = n2;
8198
8322
  }
8199
8323
  };
@@ -8295,7 +8419,7 @@ var Vue = (function() {
8295
8419
  } else next = vnode;
8296
8420
  if (bu) invokeArrayFns(bu);
8297
8421
  if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) invokeVNodeHook(vnodeHook, parent, next, vnode);
8298
- if (next.ibu) next.ibu();
8422
+ if (isVaporInteropEnabled && next.ibu) next.ibu();
8299
8423
  if (isCompatEnabled$1("INSTANCE_EVENT_HOOKS", instance)) instance.emit("hook:beforeUpdate");
8300
8424
  toggleRecurse(instance, true);
8301
8425
  startMeasure(instance, `render`);
@@ -8309,9 +8433,9 @@ var Vue = (function() {
8309
8433
  next.el = nextTree.el;
8310
8434
  if (originNext === null) updateHOCHostEl(instance, nextTree.el);
8311
8435
  if (u) queuePostRenderEffect(u, void 0, parentSuspense);
8312
- if ((vnodeHook = next.props && next.props.onVnodeUpdated) || next.iu) queuePostRenderEffect(() => {
8436
+ if ((vnodeHook = next.props && next.props.onVnodeUpdated) || isVaporInteropEnabled && next.iu) queuePostRenderEffect(() => {
8313
8437
  vnodeHook && invokeVNodeHook(vnodeHook, parent, next, vnode);
8314
- next.iu && next.iu();
8438
+ isVaporInteropEnabled && next.iu && next.iu();
8315
8439
  }, void 0, parentSuspense);
8316
8440
  if (isCompatEnabled$1("INSTANCE_EVENT_HOOKS", instance)) queuePostRenderEffect(() => instance.emit("hook:updated"), void 0, parentSuspense);
8317
8441
  devtoolsComponentUpdated(instance);
@@ -8464,7 +8588,7 @@ var Vue = (function() {
8464
8588
  };
8465
8589
  const move = (vnode, container, anchor, moveType, parentComponent, parentSuspense = null) => {
8466
8590
  const { el, type, transition, children, shapeFlag } = vnode;
8467
- if (isVaporComponent(type) || type === VaporSlot) {
8591
+ if (isVaporInteropEnabled && (isVaporComponent(type) || type === VaporSlot)) {
8468
8592
  getVaporInterface(parentComponent, vnode).move(vnode, container, anchor, moveType, parentSuspense);
8469
8593
  return;
8470
8594
  }
@@ -8508,11 +8632,11 @@ var Vue = (function() {
8508
8632
  }
8509
8633
  if (cacheIndex != null && (!vnode.ctx || vnode.ctx === parentComponent)) parentComponent.renderCache[cacheIndex] = void 0;
8510
8634
  if (shapeFlag & 256) {
8511
- if (isVaporComponent(vnode.type)) getVaporInterface(parentComponent, vnode).deactivate(vnode, parentComponent.ctx.getStorageContainer(), parentSuspense);
8635
+ if (isVaporInteropEnabled && isVaporComponent(vnode.type)) getVaporInterface(parentComponent, vnode).deactivate(vnode, parentComponent.ctx.getStorageContainer(), parentSuspense);
8512
8636
  else parentComponent.ctx.deactivate(vnode);
8513
8637
  return;
8514
8638
  }
8515
- if (shapeFlag & 6 && isVaporComponent(type)) {
8639
+ if (isVaporInteropEnabled && shapeFlag & 6 && isVaporComponent(type)) {
8516
8640
  getVaporInterface(parentComponent, vnode).unmount(vnode, doRemove, parentSuspense);
8517
8641
  return;
8518
8642
  }
@@ -8530,7 +8654,7 @@ var Vue = (function() {
8530
8654
  if (shapeFlag & 64) vnode.type.remove(vnode, parentComponent, parentSuspense, internals, doRemove);
8531
8655
  else if (dynamicChildren && !dynamicChildren.hasOnce && (type !== Fragment || patchFlag > 0 && patchFlag & 64)) unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true);
8532
8656
  else if (type === Fragment && patchFlag & 384 || !optimized && shapeFlag & 16) unmountChildren(children, parentComponent, parentSuspense);
8533
- if (type === VaporSlot) {
8657
+ if (isVaporInteropEnabled && type === VaporSlot) {
8534
8658
  getVaporInterface(parentComponent, vnode).unmount(vnode, doRemove, parentSuspense);
8535
8659
  return;
8536
8660
  }
@@ -8545,12 +8669,9 @@ var Vue = (function() {
8545
8669
  };
8546
8670
  const remove = (vnode) => {
8547
8671
  const { type, el, anchor, transition } = vnode;
8548
- if (type === Fragment) {
8549
- if (vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) vnode.children.forEach((child) => {
8550
- if (child.type === Comment) hostRemove(child.el);
8551
- else remove(child);
8552
- });
8553
- else removeFragment(el, anchor);
8672
+ const isFragment = type === Fragment;
8673
+ if (isFragment && !transition) {
8674
+ removeFragment(el, anchor);
8554
8675
  return;
8555
8676
  }
8556
8677
  if (type === Static) {
@@ -8558,8 +8679,21 @@ var Vue = (function() {
8558
8679
  if (transition && !transition.persisted && transition.afterLeave) transition.afterLeave();
8559
8680
  return;
8560
8681
  }
8561
- if (transition) performTransitionLeave(el, transition, () => hostRemove(el), !!(vnode.shapeFlag & 1));
8562
- else hostRemove(el);
8682
+ const leavingNode = isFragment ? getTransitionRoot(vnode) : vnode;
8683
+ const performRemove = () => {
8684
+ if (isFragment) {
8685
+ if (hostParentNode(el)) removeFragment(el, anchor);
8686
+ } else hostRemove(el);
8687
+ };
8688
+ if (transition) {
8689
+ let leavingEl = leavingNode && leavingNode.el;
8690
+ let isElement = !!(leavingNode && leavingNode.shapeFlag & 1);
8691
+ if (isVaporInteropEnabled && isFragment && leavingNode && isVaporComponent(leavingNode.type)) {
8692
+ leavingEl = getVaporInterface(leavingNode.component, leavingNode).getTransitionElement(leavingNode);
8693
+ isElement = !!leavingEl;
8694
+ }
8695
+ performTransitionLeave(leavingEl || el, transition, performRemove, isElement);
8696
+ } else performRemove();
8563
8697
  };
8564
8698
  const removeFragment = (cur, end) => {
8565
8699
  let next;
@@ -8595,7 +8729,7 @@ var Vue = (function() {
8595
8729
  };
8596
8730
  const getNextHostNode = (vnode) => {
8597
8731
  if (vnode.shapeFlag & 6) {
8598
- if (isVaporComponent(vnode.type)) return hostNextSibling(vnode.anchor);
8732
+ if (isVaporInteropEnabled && isVaporComponent(vnode.type)) return hostNextSibling(vnode.anchor);
8599
8733
  return getNextHostNode(vnode.component.subTree);
8600
8734
  }
8601
8735
  if (vnode.shapeFlag & 128) return vnode.suspense.next();
@@ -8604,15 +8738,12 @@ var Vue = (function() {
8604
8738
  return teleportEnd ? hostNextSibling(teleportEnd) : el;
8605
8739
  };
8606
8740
  const render = (vnode, container, namespace) => {
8607
- let instance;
8608
- if (vnode == null) {
8609
- if (container._vnode) {
8610
- unmount(container._vnode, null, null, true);
8611
- instance = container._vnode.component;
8612
- }
8613
- } else patch(container._vnode || null, vnode, container, null, null, null, namespace);
8614
- container._vnode = vnode;
8615
- flushOnAppMount(instance);
8741
+ flushOnAppMount(() => {
8742
+ if (vnode == null) {
8743
+ if (container._vnode) unmount(container._vnode, null, null, true);
8744
+ } else patch(container._vnode || null, vnode, container, null, null, null, namespace);
8745
+ container._vnode = vnode;
8746
+ }, vnode && container._vnode ? void 0 : vnode && vnode.component ? vnode.component.uid : getNextUid());
8616
8747
  };
8617
8748
  const internals = {
8618
8749
  p: patch,
@@ -8659,7 +8790,7 @@ var Vue = (function() {
8659
8790
  return currentNamespace === "svg" && type === "foreignObject" || currentNamespace === "mathml" && type === "annotation-xml" && props && props.encoding && props.encoding.includes("html") ? void 0 : currentNamespace;
8660
8791
  }
8661
8792
  function toggleRecurse({ effect, job, vapor }, allowed) {
8662
- if (!vapor) {
8793
+ if (!isVaporInteropEnabled || !vapor) {
8663
8794
  if (allowed) {
8664
8795
  effect.flags |= 128;
8665
8796
  job.flags |= 2;
@@ -8771,7 +8902,7 @@ var Vue = (function() {
8771
8902
  currentParent = currentParent.parent;
8772
8903
  } else break;
8773
8904
  }
8774
- const vaporScopeIds = includeVaporRootIds && currentVNode.vaporScopeIds;
8905
+ const vaporScopeIds = isVaporInteropEnabled && includeVaporRootIds && currentVNode.vaporScopeIds;
8775
8906
  if (vaporScopeIds) inheritedScopeIds.push(...vaporScopeIds);
8776
8907
  return inheritedScopeIds;
8777
8908
  }
@@ -8784,8 +8915,13 @@ var Vue = (function() {
8784
8915
  //#endregion
8785
8916
  //#region packages/runtime-core/src/components/Suspense.ts
8786
8917
  const isSuspense = (type) => type.__isSuspense;
8918
+ let isSuspenseEnabled = false;
8919
+ function withSuspenseEnabled(value) {
8920
+ isSuspenseEnabled = true;
8921
+ return value;
8922
+ }
8787
8923
  let suspenseId = 0;
8788
- const Suspense = {
8924
+ const Suspense = /*@__PURE__*/ withSuspenseEnabled({
8789
8925
  name: "Suspense",
8790
8926
  __isSuspense: true,
8791
8927
  process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {
@@ -8802,7 +8938,7 @@ var Vue = (function() {
8802
8938
  },
8803
8939
  hydrate: hydrateSuspense,
8804
8940
  normalize: normalizeSuspenseChildren
8805
- };
8941
+ });
8806
8942
  function triggerEvent(vnode, name) {
8807
8943
  const eventListener = vnode.props && vnode.props[name];
8808
8944
  if (isFunction(eventListener)) eventListener();
@@ -9005,13 +9141,12 @@ var Vue = (function() {
9005
9141
  registerDep(instance, onResolve) {
9006
9142
  const isInPendingSuspense = !!suspense.pendingBranch;
9007
9143
  if (isInPendingSuspense) suspense.deps++;
9008
- const hydratedEl = instance.vnode && instance.vnode.el;
9009
9144
  instance.asyncDep.catch((err) => {
9010
9145
  handleError(err, instance, 0);
9011
9146
  }).then((asyncSetupResult) => {
9012
9147
  if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) return;
9013
9148
  setCurrentInstance(null, void 0);
9014
- if (hydratedEl && !instance.scope.active) {
9149
+ if (!instance.scope.active) {
9015
9150
  if (isInPendingSuspense && --suspense.deps === 0) suspense.resolve();
9016
9151
  return;
9017
9152
  }
@@ -9367,7 +9502,7 @@ var Vue = (function() {
9367
9502
  ctx: vnode.ctx,
9368
9503
  ce: vnode.ce,
9369
9504
  vi: vnode.vi,
9370
- vs: cloneVaporSlotMeta(vnode),
9505
+ vs: cloneVaporSlotMeta(vnode, extraProps),
9371
9506
  vb: vnode.vb,
9372
9507
  ibu: vnode.ibu,
9373
9508
  iu: vnode.iu,
@@ -9377,13 +9512,29 @@ var Vue = (function() {
9377
9512
  defineLegacyVNodeProperties(cloned);
9378
9513
  return cloned;
9379
9514
  }
9380
- function cloneVaporSlotMeta(vnode) {
9515
+ function cloneVaporSlotMeta(vnode, extraProps) {
9381
9516
  const vaporSlot = vnode.vs;
9382
9517
  if (!vaporSlot) return vaporSlot;
9383
9518
  const cloned = {
9384
9519
  slot: vaporSlot.slot,
9385
- outlets: vaporSlot.outlets
9520
+ name: vaporSlot.name,
9521
+ outlets: vaporSlot.outlets,
9522
+ props: vaporSlot.props,
9523
+ attrs: vaporSlot.attrs && vaporSlot.attrs === EMPTY_OBJ ? {} : vaporSlot.attrs,
9524
+ group: vaporSlot.group
9386
9525
  };
9526
+ const attrs = cloned.attrs;
9527
+ if (extraProps && vaporSlot.props) {
9528
+ let extraSlotProps;
9529
+ for (const key in extraProps) if (attrs ? !isReservedProp(key) : key !== "key") {
9530
+ if (!extraSlotProps) extraSlotProps = {};
9531
+ extraSlotProps[key] = extraProps[key];
9532
+ }
9533
+ if (extraSlotProps) {
9534
+ if (attrs) cloned.attrs = mergeProps(attrs, extraSlotProps);
9535
+ else cloned.props = mergeProps(vaporSlot.props, extraSlotProps);
9536
+ }
9537
+ }
9387
9538
  if (vnode.el) {
9388
9539
  cloned.state = vaporSlot.state;
9389
9540
  cloned.ref = vaporSlot.ref;
@@ -9566,6 +9717,9 @@ var Vue = (function() {
9566
9717
  //#region packages/runtime-core/src/component.ts
9567
9718
  const emptyAppContext = /*@__PURE__*/ createAppContext();
9568
9719
  let uid = 0;
9720
+ function getNextUid() {
9721
+ return uid;
9722
+ }
9569
9723
  function createComponentInstance(vnode, parent, suspense) {
9570
9724
  const type = vnode.type;
9571
9725
  const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;
@@ -9652,7 +9806,7 @@ var Vue = (function() {
9652
9806
  isSSR && setInSSRSetupState(isSSR);
9653
9807
  const { props, children, vi } = instance.vnode;
9654
9808
  const isStateful = isStatefulComponent(instance);
9655
- if (vi) vi(instance);
9809
+ if (isVaporInteropEnabled && vi) vi(instance);
9656
9810
  else {
9657
9811
  initProps(instance, props, isStateful, isSSR);
9658
9812
  initSlots(instance, children, optimized || isSSR);
@@ -10074,7 +10228,7 @@ var Vue = (function() {
10074
10228
  }
10075
10229
  //#endregion
10076
10230
  //#region packages/runtime-core/src/index.ts
10077
- const version = "3.6.0-rc.11";
10231
+ const version = "3.6.0-rc.13";
10078
10232
  const warn = warn$1;
10079
10233
  /**
10080
10234
  * Runtime error messages. Only exposed in dev or esm builds.
@@ -10507,14 +10661,14 @@ var Vue = (function() {
10507
10661
  }
10508
10662
  while (vnode.component) {
10509
10663
  const component = vnode.component;
10510
- if (component.vapor) {
10664
+ if (isVaporInteropEnabled && component.vapor) {
10511
10665
  component.appContext.vapor.applyCssVars(vnode, vars);
10512
10666
  return;
10513
10667
  }
10514
10668
  vnode = vnode.component.subTree;
10515
10669
  }
10516
10670
  if (vnode.shapeFlag & 1 && vnode.el) setVarsOnNode(vnode.el, vars);
10517
- else if (vnode.vb) vnode.ctx.appContext.vapor.applyCssVars(vnode, vars);
10671
+ else if (isVaporInteropEnabled && vnode.vb) vnode.ctx.appContext.vapor.applyCssVars(vnode, vars);
10518
10672
  else if (vnode.type === Fragment) vnode.children.forEach((c) => setVarsOnVNode(c, vars));
10519
10673
  else if (vnode.type === Static) {
10520
10674
  let { el, anchor } = vnode;
@@ -10577,7 +10731,7 @@ var Vue = (function() {
10577
10731
  else el.removeAttribute("style");
10578
10732
  }
10579
10733
  if (vShowOriginalDisplay in el) {
10580
- el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : "";
10734
+ if (!isCssString || prev !== next) el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : "";
10581
10735
  if (el[vShowHidden]) style.display = "none";
10582
10736
  }
10583
10737
  }
@@ -10907,7 +11061,7 @@ var Vue = (function() {
10907
11061
  this._resolveProps(def);
10908
11062
  if (this.shadowRoot) this._applyStyles(styles);
10909
11063
  else if (styles) warn("Custom element style injection is not supported when using shadowRoot: false");
10910
- this._mountComponent(def);
11064
+ if (this._connected) this._mountComponent(def);
10911
11065
  };
10912
11066
  const asyncDef = this._def.__asyncLoader;
10913
11067
  if (asyncDef) {
@@ -11209,6 +11363,7 @@ var Vue = (function() {
11209
11363
  const newPositionMap = /* @__PURE__ */ new WeakMap();
11210
11364
  const moveCbKey = Symbol("_moveCb");
11211
11365
  const enterCbKey = Symbol("_enterCb");
11366
+ const pendingGroups = /* @__PURE__ */ new WeakMap();
11212
11367
  /**
11213
11368
  * Wrap logic that modifies TransitionGroup properties in a function
11214
11369
  * so that it can be annotated as pure
@@ -11218,7 +11373,7 @@ var Vue = (function() {
11218
11373
  t.__isBuiltIn = true;
11219
11374
  return t;
11220
11375
  };
11221
- const TransitionGroup = /* @__PURE__ */ decorate({
11376
+ const TransitionGroup = /*@__PURE__*/ withTransitionEnabled(/* @__PURE__ */ decorate({
11222
11377
  name: "TransitionGroup",
11223
11378
  props: /*@__PURE__*/ extend({}, TransitionPropsValidators, {
11224
11379
  tag: String,
@@ -11227,17 +11382,31 @@ var Vue = (function() {
11227
11382
  setup(props, { slots }) {
11228
11383
  const instance = getCurrentInstance();
11229
11384
  const state = useTransitionState();
11385
+ const group = {
11386
+ props: {},
11387
+ state,
11388
+ instance
11389
+ };
11230
11390
  let prevChildren;
11231
11391
  let children;
11392
+ let origins;
11393
+ let moves;
11394
+ const willMove = () => {
11395
+ if (moves === void 0) moves = prevChildren.length > 0 && hasCSSTransform(prevChildren[0].el, instance.vnode.el, resolveMoveClass(props));
11396
+ return moves;
11397
+ };
11232
11398
  onUpdated(() => {
11233
- if (!prevChildren.length) return;
11234
- const moveClass = props.moveClass || `${props.name || "v"}-move`;
11235
- if (!hasCSSTransform(prevChildren[0].el, instance.vnode.el, moveClass)) {
11399
+ pendingGroups.delete(instance);
11400
+ if (!willMove()) {
11236
11401
  prevChildren = [];
11402
+ origins = void 0;
11237
11403
  return;
11238
11404
  }
11405
+ const moveClass = resolveMoveClass(props);
11239
11406
  prevChildren.forEach((vnode) => callPendingCbs(vnode.el));
11240
- prevChildren.forEach(recordPosition);
11407
+ const shift = origins && getOriginShift(origins, instance.vnode.el);
11408
+ origins = void 0;
11409
+ prevChildren.forEach((c) => recordPosition(c, shift));
11241
11410
  const movedChildren = prevChildren.filter(applyTranslation);
11242
11411
  forceReflow(instance.vnode.el);
11243
11412
  movedChildren.forEach((c) => {
@@ -11248,34 +11417,51 @@ var Vue = (function() {
11248
11417
  });
11249
11418
  return () => {
11250
11419
  const rawProps = /* @__PURE__ */ toRaw(props);
11251
- const cssTransitionProps = resolveTransitionProps(rawProps);
11420
+ const cssTransitionProps = group.props = resolveTransitionProps(rawProps);
11252
11421
  let tag = rawProps.tag || Fragment;
11253
11422
  if (!rawProps.tag && compatUtils.checkCompatEnabled("TRANSITION_GROUP_ROOT", instance.parent)) tag = "span";
11254
11423
  prevChildren = [];
11424
+ moves = void 0;
11255
11425
  if (children) for (let i = 0; i < children.length; i++) {
11256
11426
  const child = children[i];
11257
11427
  if (child.el && child.el instanceof Element && !child.el[vShowHidden]) {
11258
11428
  prevChildren.push(child);
11259
11429
  setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
11260
11430
  positionMap.set(child, getPosition(child.el));
11261
- }
11431
+ } else if (isVaporInteropEnabled && child.vs && child.vb) instance.appContext.vapor.forEachGroupChild(child, (el) => {
11432
+ const row = { el };
11433
+ prevChildren.push(row);
11434
+ positionMap.set(row, getPosition(el));
11435
+ });
11262
11436
  }
11263
11437
  children = slots.default ? getTransitionRawChildren(slots.default()) : [];
11264
11438
  for (let i = 0; i < children.length; i++) {
11265
11439
  const child = children[i];
11266
- if (child.key != null) setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
11440
+ if (isVaporInteropEnabled && child.vs) child.vs.group = group;
11441
+ else if (child.key != null) setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
11267
11442
  else if (child.type !== Text) warn(`<TransitionGroup> children must be keyed.`);
11268
11443
  }
11444
+ if (prevChildren.length) {
11445
+ const root = instance.vnode.el;
11446
+ origins = getOrigins(instance, root);
11447
+ pendingGroups.set(instance, {
11448
+ root,
11449
+ willMove
11450
+ });
11451
+ }
11269
11452
  return createVNode(tag, null, children);
11270
11453
  };
11271
11454
  }
11272
- });
11455
+ }));
11273
11456
  function callPendingCbs(el) {
11274
11457
  if (el[moveCbKey]) el[moveCbKey]();
11275
11458
  if (el[enterCbKey]) el[enterCbKey]();
11276
11459
  }
11277
- function recordPosition(c) {
11278
- newPositionMap.set(c, getPosition(c.el));
11460
+ function resolveMoveClass(props) {
11461
+ return props.moveClass || `${props.name || "v"}-move`;
11462
+ }
11463
+ function recordPosition(c, shift) {
11464
+ newPositionMap.set(c, getPosition(c.el, shift));
11279
11465
  }
11280
11466
  function applyTranslation(c) {
11281
11467
  if (baseApplyTranslation(positionMap.get(c), newPositionMap.get(c), c.el)) return c;
@@ -11300,13 +11486,36 @@ var Vue = (function() {
11300
11486
  }
11301
11487
  return false;
11302
11488
  }
11303
- function getPosition(el) {
11489
+ function getPosition(el, shift) {
11304
11490
  const rect = el.getBoundingClientRect();
11305
11491
  return {
11306
- left: rect.left,
11307
- top: rect.top
11492
+ left: rect.left - (shift ? shift.left : 0),
11493
+ top: rect.top - (shift ? shift.top : 0)
11308
11494
  };
11309
11495
  }
11496
+ function getOrigins(instance, root) {
11497
+ let origins;
11498
+ for (let group = instance.parent; group; group = group.parent) {
11499
+ const pending = pendingGroups.get(group);
11500
+ if (pending) {
11501
+ const item = findItem(pending.root, root);
11502
+ if (item) (origins || (origins = [])).push(extend(getPosition(item), {
11503
+ item,
11504
+ willMove: pending.willMove
11505
+ }));
11506
+ }
11507
+ }
11508
+ return origins;
11509
+ }
11510
+ function findItem(root, node) {
11511
+ const container = root.nodeType === 1 ? root : root.parentNode;
11512
+ while (node && node.parentNode !== container) node = node.parentNode;
11513
+ if (node && node.nodeType === 1) return node;
11514
+ }
11515
+ function getOriginShift(origins, root) {
11516
+ const origin = origins.find((o) => o.willMove() && o.item.contains(root));
11517
+ return origin && getPosition(origin.item, origin);
11518
+ }
11310
11519
  function hasCSSTransform(el, root, moveClass) {
11311
11520
  const clone = el.cloneNode();
11312
11521
  const _vtc = el[vtcKey];
@@ -11387,7 +11596,7 @@ var Vue = (function() {
11387
11596
  if (e.target.composing) return;
11388
11597
  (set || el[assignKey])(castValue(el.value, trim, number || el.type === "number"));
11389
11598
  });
11390
- if (trim || number) addEventListener(el, "change", () => {
11599
+ if (trim || number || el.type === "number") addEventListener(el, "change", () => {
11391
11600
  el.value = castValue(el.value, trim, number || el.type === "number");
11392
11601
  });
11393
11602
  if (!lazy) {
@@ -11749,6 +11958,7 @@ var Vue = (function() {
11749
11958
  initCustomFormatter: () => initCustomFormatter,
11750
11959
  initDirectivesForSSR: () => initDirectivesForSSR,
11751
11960
  inject: () => inject,
11961
+ isKeepAliveEnabled: () => isKeepAliveEnabled,
11752
11962
  isMemoSame: () => isMemoSame,
11753
11963
  isProxy: () => isProxy,
11754
11964
  isReactive: () => isReactive,
@@ -11756,7 +11966,10 @@ var Vue = (function() {
11756
11966
  isRef: () => isRef,
11757
11967
  isRuntimeOnly: () => isRuntimeOnly,
11758
11968
  isShallow: () => isShallow,
11969
+ isSuspenseEnabled: () => isSuspenseEnabled,
11970
+ isTransitionEnabled: () => isTransitionEnabled,
11759
11971
  isVNode: () => isVNode,
11972
+ isVaporInteropEnabled: () => isVaporInteropEnabled,
11760
11973
  markRaw: () => markRaw,
11761
11974
  mergeDefaults: () => mergeDefaults,
11762
11975
  mergeModels: () => mergeModels,
@@ -11803,6 +12016,7 @@ var Vue = (function() {
11803
12016
  setDevtoolsHook: () => setDevtoolsHook,
11804
12017
  setIsHydratingEnabled: () => setIsHydratingEnabled,
11805
12018
  setTransitionHooks: () => setTransitionHooks,
12019
+ setVaporInteropEnabled: () => setVaporInteropEnabled,
11806
12020
  shallowReactive: () => shallowReactive,
11807
12021
  shallowReadonly: () => shallowReadonly,
11808
12022
  shallowRef: () => shallowRef,
@@ -11847,10 +12061,13 @@ var Vue = (function() {
11847
12061
  withCtx: () => withCtx,
11848
12062
  withDefaults: () => withDefaults,
11849
12063
  withDirectives: () => withDirectives,
12064
+ withKeepAliveEnabled: () => withKeepAliveEnabled,
11850
12065
  withKeys: () => withKeys,
11851
12066
  withMemo: () => withMemo,
11852
12067
  withModifiers: () => withModifiers,
11853
- withScopeId: () => withScopeId
12068
+ withScopeId: () => withScopeId,
12069
+ withSuspenseEnabled: () => withSuspenseEnabled,
12070
+ withTransitionEnabled: () => withTransitionEnabled
11854
12071
  });
11855
12072
  const rendererOptions = /*@__PURE__*/ extend({ patchProp }, nodeOps);
11856
12073
  let renderer;
@@ -13058,7 +13275,7 @@ var Vue = (function() {
13058
13275
  [41]: `v-model is missing expression.`,
13059
13276
  [42]: `v-model value must be a valid JavaScript member expression.`,
13060
13277
  [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`,
13061
- [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.`,
13278
+ [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.`,
13062
13279
  [45]: `v-model cannot be used on a const binding because it is not writable.`,
13063
13280
  [46]: `Error parsing JavaScript expression: `,
13064
13281
  [47]: `<KeepAlive> expects exactly one child component.`,
@@ -14881,7 +15098,11 @@ var Vue = (function() {
14881
15098
  ]),
14882
15099
  createCompoundExpression([
14883
15100
  `if (_cached && _cached.el`,
14884
- ...keyExp ? [` && _cached.key === `, keyExp] : [],
15101
+ ...keyExp ? [
15102
+ ` && _cached.key === (`,
15103
+ keyExp,
15104
+ `)`
15105
+ ] : [],
14885
15106
  ` && ${context.helperString(IS_MEMO_SAME)}(_cached, _memo)) return _cached`
14886
15107
  ]),
14887
15108
  createCompoundExpression([`const _item = `, childBlock]),
@@ -16303,7 +16524,11 @@ var Vue = (function() {
16303
16524
  };
16304
16525
  //#endregion
16305
16526
  //#region packages/compiler-dom/src/index.ts
16306
- const DOMNodeTransforms = [transformStyle, ...[transformTransition, validateHtmlNesting]];
16527
+ const DOMNodeTransforms = [
16528
+ transformStyle,
16529
+ transformTransition,
16530
+ ...[validateHtmlNesting]
16531
+ ];
16307
16532
  const DOMDirectiveTransforms = {
16308
16533
  cloak: noopDirectiveTransform,
16309
16534
  html: transformVHtml,