@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
  **/
@@ -311,9 +311,10 @@ const isVoidTag = /*@__PURE__*/ makeMap(VOID_TAGS);
311
311
  * - ismap -> isMap
312
312
  * - nomodule -> noModule
313
313
  * - novalidate -> noValidate
314
+ * - playsinline -> playsInline
314
315
  * - readonly -> readOnly
315
316
  */
316
- const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
317
+ const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,playsinline,readonly`;
317
318
  const isSpecialBooleanAttr = /*@__PURE__*/ makeMap(specialBooleanAttrs);
318
319
  /**
319
320
  * The full list is needed during SSR to produce the correct initial markup.
@@ -1004,17 +1005,33 @@ const arrayInstrumentations = {
1004
1005
  };
1005
1006
  function iterator(self, method, wrapValue) {
1006
1007
  const arr = shallowReadArray(self);
1007
- const iter = arr[method]();
1008
+ const methodFn = arr[method];
1009
+ const iter = methodFn.call(arr);
1008
1010
  if (arr !== self && !/* @__PURE__ */ isShallow(self)) {
1011
+ if (iter[Symbol.toStringTag] === "Array Iterator") {
1012
+ const wrapped = Object.create(Object.getPrototypeOf(iter));
1013
+ wrapped.next = () => wrapResult(iter.next(), wrapValue);
1014
+ if (methodFn !== arrayProto[method]) Object.defineProperties(wrapped, {
1015
+ return: { get() {
1016
+ const fn = iter.return;
1017
+ return typeof fn === "function" ? fn.bind(iter) : fn;
1018
+ } },
1019
+ throw: { get() {
1020
+ const fn = iter.throw;
1021
+ return typeof fn === "function" ? fn.bind(iter) : fn;
1022
+ } }
1023
+ });
1024
+ return wrapped;
1025
+ }
1009
1026
  iter._next = iter.next;
1010
- iter.next = () => {
1011
- const result = iter._next();
1012
- if (!result.done) result.value = wrapValue(result.value);
1013
- return result;
1014
- };
1027
+ iter.next = () => wrapResult(iter._next(), wrapValue);
1015
1028
  }
1016
1029
  return iter;
1017
1030
  }
1031
+ function wrapResult(result, wrapValue) {
1032
+ if (!result.done) result.value = wrapValue(result.value);
1033
+ return result;
1034
+ }
1018
1035
  const arrayProto = Array.prototype;
1019
1036
  function apply(self, method, fn, thisArg, wrappedRetFn, args) {
1020
1037
  const arr = shallowReadArray(self);
@@ -1332,6 +1349,7 @@ function createInstrumentationGetter(isReadonly, shallow) {
1332
1349
  return (target, key, receiver) => {
1333
1350
  if (key === "__v_isReactive") return !isReadonly;
1334
1351
  else if (key === "__v_isReadonly") return isReadonly;
1352
+ else if (key === "__v_isShallow") return shallow;
1335
1353
  else if (key === "__v_raw") return target;
1336
1354
  return Reflect.get(hasOwn(instrumentations, key) && key in target ? instrumentations : target, key, receiver);
1337
1355
  };
@@ -2241,8 +2259,9 @@ function getCurrentWatcher() {
2241
2259
  function onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) {
2242
2260
  if (owner) {
2243
2261
  const { call } = owner.options;
2244
- if (call) owner.cleanups[owner.cleanupsLength++] = () => call(cleanupFn, 4);
2245
- else owner.cleanups[owner.cleanupsLength++] = cleanupFn;
2262
+ const cleanup = call ? () => call(cleanupFn, 4) : cleanupFn;
2263
+ if (owner.cb) (owner.cbCleanups || (owner.cbCleanups = [])).push(cleanup);
2264
+ else owner.cleanups[owner.cleanupsLength++] = cleanup;
2246
2265
  } else if (!failSilently) warn$2("onWatcherCleanup() was called when there was no active watcher to associate with.");
2247
2266
  }
2248
2267
  var WatcherEffect = class extends ReactiveEffect {
@@ -2303,9 +2322,11 @@ var WatcherEffect = class extends ReactiveEffect {
2303
2322
  if (once && cb) {
2304
2323
  const _cb = cb;
2305
2324
  cb = (...args) => {
2306
- const res = _cb(...args);
2307
- this.stop();
2308
- return res;
2325
+ try {
2326
+ return _cb(...args);
2327
+ } finally {
2328
+ this.stop();
2329
+ }
2309
2330
  };
2310
2331
  }
2311
2332
  this.cb = cb;
@@ -2313,6 +2334,19 @@ var WatcherEffect = class extends ReactiveEffect {
2313
2334
  this.onTrack = options.onTrack;
2314
2335
  this.onTrigger = options.onTrigger;
2315
2336
  }
2337
+ cleanupCallback() {
2338
+ const cleanups = this.cbCleanups;
2339
+ if (cleanups) {
2340
+ this.cbCleanups = void 0;
2341
+ for (let i = 0, l = cleanups.length; i < l; i++) cleanups[i]();
2342
+ }
2343
+ }
2344
+ stop() {
2345
+ if (this.active) {
2346
+ super.stop();
2347
+ this.cleanupCallback();
2348
+ }
2349
+ }
2316
2350
  run(initialRun = false) {
2317
2351
  const oldValue = this.oldValue;
2318
2352
  const newValue = this.oldValue = super.run();
@@ -2320,10 +2354,11 @@ var WatcherEffect = class extends ReactiveEffect {
2320
2354
  const { immediate, deep, call } = this.options;
2321
2355
  if (initialRun && !immediate) return;
2322
2356
  if (initialRun || deep || this.forceTrigger || (this.isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {
2323
- cleanup(this);
2324
2357
  const currentWatcher = activeWatcher;
2325
- activeWatcher = this;
2358
+ const prevSub = setActiveSub();
2326
2359
  try {
2360
+ this.cleanupCallback();
2361
+ activeWatcher = this;
2327
2362
  const args = [
2328
2363
  newValue,
2329
2364
  oldValue === INITIAL_WATCHER_VALUE ? void 0 : this.isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,
@@ -2332,6 +2367,7 @@ var WatcherEffect = class extends ReactiveEffect {
2332
2367
  call ? call(this.cb, 3, args) : this.cb(...args);
2333
2368
  } finally {
2334
2369
  activeWatcher = currentWatcher;
2370
+ setActiveSub(prevSub);
2335
2371
  }
2336
2372
  }
2337
2373
  }
@@ -2662,15 +2698,15 @@ function queuePostFlushCb(jobs, id = Infinity) {
2662
2698
  } else for (let i = 0; i < jobs.length; i++) queueJobWorker(jobs[i], id, postJobs, postJobs.length, 0);
2663
2699
  queueFlush();
2664
2700
  }
2665
- function flushPreFlushCbs(instance, seen) {
2701
+ function flushPreFlushCbs(instance, minUid, seen) {
2666
2702
  seen = seen || /* @__PURE__ */ new Map();
2667
2703
  for (let i = flushIndex; i < jobsLength; i++) {
2668
2704
  const cb = jobs[i];
2669
2705
  if (cb.order & 1 || cb.order === Infinity) continue;
2670
- if (instance && cb.order !== instance.uid * 2) continue;
2706
+ if (instance && cb.order !== instance.uid * 2 || minUid !== void 0 && !(cb.order >= minUid * 2)) continue;
2671
2707
  if (checkRecursiveUpdates(seen, cb)) continue;
2672
2708
  jobs.splice(i, 1);
2673
- i--;
2709
+ i = instance ? i - 1 : flushIndex - 1;
2674
2710
  jobsLength--;
2675
2711
  if (cb.flags & 2) cb.flags &= -2;
2676
2712
  try {
@@ -2680,15 +2716,24 @@ function flushPreFlushCbs(instance, seen) {
2680
2716
  }
2681
2717
  }
2682
2718
  }
2683
- function flushPostFlushCbs(seen) {
2719
+ function flushPostFlushCbs(seen, skip, minUid = 0) {
2684
2720
  if (postJobs.length) {
2721
+ let cbs = postJobs;
2722
+ if (skip) {
2723
+ cbs = [];
2724
+ let kept = 0;
2725
+ for (let i = 0; i < postJobs.length; i++) {
2726
+ const cb = postJobs[i];
2727
+ if (cb.i !== void 0 ? !cb.i || cb.i.uid < minUid : skip.has(cb)) postJobs[kept++] = cb;
2728
+ else cbs.push(cb);
2729
+ }
2730
+ postJobs.length = kept;
2731
+ } else postJobs = [];
2685
2732
  if (activePostJobs) {
2686
- for (let i = 0; i < postJobs.length; i++) activePostJobs.push(postJobs[i]);
2687
- postJobs.length = 0;
2733
+ for (let i = 0; i < cbs.length; i++) activePostJobs.push(cbs[i]);
2688
2734
  return;
2689
2735
  }
2690
- activePostJobs = postJobs;
2691
- postJobs = [];
2736
+ activePostJobs = cbs;
2692
2737
  seen = seen || /* @__PURE__ */ new Map();
2693
2738
  try {
2694
2739
  while (postFlushIndex < activePostJobs.length) {
@@ -2710,17 +2755,28 @@ function flushPostFlushCbs(seen) {
2710
2755
  }
2711
2756
  let isFlushing = false;
2712
2757
  /**
2758
+ * Run a root render, then flush the jobs it is responsible for. A mount or
2759
+ * unmount (`minUid` given) only flushes the jobs of the components it created
2760
+ * and the post cbs it queued, so pre watchers triggered in setup run before
2761
+ * mounted (#5721) while the jobs of other components stay in the queue and
2762
+ * keep their order (#6728). A root update keeps flushing all pending pre jobs
2763
+ * and post cbs, as the jobs of the components it re-renders may predate it.
2764
+ *
2713
2765
  * @internal
2714
2766
  */
2715
- function flushOnAppMount(instance) {
2716
- if (!isFlushing) {
2717
- isFlushing = true;
2718
- try {
2719
- flushPreFlushCbs(instance);
2720
- flushPostFlushCbs();
2721
- } finally {
2722
- isFlushing = false;
2723
- }
2767
+ function flushOnAppMount(fn, minUid) {
2768
+ if (isFlushing) {
2769
+ fn();
2770
+ return;
2771
+ }
2772
+ const queued = minUid === void 0 ? void 0 : new Set(postJobs);
2773
+ fn();
2774
+ isFlushing = true;
2775
+ try {
2776
+ flushPreFlushCbs(void 0, minUid);
2777
+ flushPostFlushCbs(void 0, queued, minUid);
2778
+ } finally {
2779
+ isFlushing = false;
2724
2780
  }
2725
2781
  }
2726
2782
  function flushJobs(seen) {
@@ -3541,7 +3597,7 @@ var RenderWatcherEffect = class extends WatcherEffect {
3541
3597
  this.flags |= 128;
3542
3598
  job.flags |= 2;
3543
3599
  }
3544
- if (instance) job.i = instance;
3600
+ job.i = instance;
3545
3601
  this.job = job;
3546
3602
  }
3547
3603
  notify() {
@@ -3598,6 +3654,16 @@ function createPathGetter(ctx, path) {
3598
3654
  };
3599
3655
  }
3600
3656
  //#endregion
3657
+ //#region packages/runtime-core/src/vaporInteropState.ts
3658
+ /**
3659
+ * Set by `vaporInteropPlugin`. Stays false in apps that never import the
3660
+ * plugin, so bundlers drop the vapor-in-vdom branches of the renderer.
3661
+ */
3662
+ let isVaporInteropEnabled = false;
3663
+ function setVaporInteropEnabled() {
3664
+ isVaporInteropEnabled = true;
3665
+ }
3666
+ //#endregion
3601
3667
  //#region packages/runtime-core/src/components/Teleport.ts
3602
3668
  const pendingMounts = /* @__PURE__ */ new WeakMap();
3603
3669
  const TeleportEndKey = Symbol("_vte");
@@ -3734,7 +3800,11 @@ const TeleportImpl = {
3734
3800
  hydrate: hydrateTeleport
3735
3801
  };
3736
3802
  function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, parentComponent, moveType = 2) {
3737
- if (moveType === 0) insert(vnode.targetAnchor, container, parentAnchor);
3803
+ if (moveType === 0) {
3804
+ if (vnode.targetStart) insert(vnode.targetStart, container, parentAnchor);
3805
+ insert(vnode.targetAnchor, container, parentAnchor);
3806
+ parentAnchor = vnode.targetAnchor;
3807
+ }
3738
3808
  const { el, anchor, shapeFlag, children, props } = vnode;
3739
3809
  const isReorder = moveType === 2;
3740
3810
  if (isReorder) insert(el, container, parentAnchor);
@@ -3853,9 +3923,18 @@ const BaseTransitionPropsValidators = {
3853
3923
  onAfterAppear: TransitionHookValidator,
3854
3924
  onAppearCancelled: TransitionHookValidator
3855
3925
  };
3926
+ let isTransitionEnabled = false;
3927
+ function withTransitionEnabled(value) {
3928
+ isTransitionEnabled = true;
3929
+ return value;
3930
+ }
3856
3931
  function isEmptyTransitionChild(vnode, instance) {
3857
3932
  if (vnode.type === Comment) return true;
3858
- if (vnode.type === VaporSlot || isVaporComponent(vnode.type)) return !getVaporInterface(instance, vnode).hasTransitionChild(vnode);
3933
+ if (vnode.type === Fragment) {
3934
+ const child = isArray(vnode.children) && filterSingleRoot(vnode.children, false);
3935
+ return !child || isEmptyTransitionChild(child, instance);
3936
+ }
3937
+ if (isVaporInteropEnabled && (vnode.type === VaporSlot || isVaporComponent(vnode.type))) return !getVaporInterface(instance, vnode).hasTransitionChild(vnode);
3859
3938
  return !!vnode.component && isEmptyTransitionChild(vnode.component.subTree, instance);
3860
3939
  }
3861
3940
  const BaseTransitionImpl = {
@@ -3872,7 +3951,7 @@ const BaseTransitionImpl = {
3872
3951
  const { mode } = rawProps;
3873
3952
  checkTransitionMode(mode);
3874
3953
  return prepareTransitionSwitch(instance.subTree, child, rawProps, state, instance, mode === "out-in" ? resumeAfterLeave || (resumeAfterLeave = () => {
3875
- if (!(instance.job.flags & 4)) instance.update();
3954
+ if (!(instance.effect.flags & 1024)) instance.update();
3876
3955
  }) : NOOP);
3877
3956
  };
3878
3957
  }
@@ -3893,7 +3972,7 @@ function findNonCommentChild(children) {
3893
3972
  }
3894
3973
  return child;
3895
3974
  }
3896
- const BaseTransition = BaseTransitionImpl;
3975
+ const BaseTransition = /*@__PURE__*/ withTransitionEnabled(BaseTransitionImpl);
3897
3976
  function getLeavingNodesForType(state, vnode) {
3898
3977
  const { leavingNodes } = state;
3899
3978
  let leavingVNodesCache = leavingNodes.get(vnode.type);
@@ -3916,7 +3995,14 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3916
3995
  },
3917
3996
  earlyRemove: () => {
3918
3997
  const leavingVNode = leavingVNodesCache[key];
3919
- if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) leavingVNode.el[leaveCbKey]();
3998
+ if (leavingVNode && isSameVNodeType(vnode, leavingVNode)) {
3999
+ let leavingCb = leavingVNode.el[leaveCbKey];
4000
+ if (!leavingCb) {
4001
+ const leavingRoot = getTransitionRoot(leavingVNode);
4002
+ leavingCb = leavingRoot && leavingRoot.el[leaveCbKey];
4003
+ }
4004
+ if (leavingCb) leavingCb();
4005
+ }
3920
4006
  },
3921
4007
  cloneHooks: (vnode) => {
3922
4008
  const hooks = resolveTransitionHooks(vnode, props, state, instance, postClone);
@@ -3924,7 +4010,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
3924
4010
  return hooks;
3925
4011
  }
3926
4012
  }, props, state, instance);
3927
- if (vnode.type === VaporSlot) extend(hooks, {
4013
+ if (isVaporInteropEnabled && vnode.type === VaporSlot) extend(hooks, {
3928
4014
  __vapor: true,
3929
4015
  props,
3930
4016
  state,
@@ -4101,7 +4187,7 @@ function applyTransitionModeSwitch(leavingVNode, leavingHooks, getEnterHooks, pr
4101
4187
  function setTransitionHooks(vnode, hooks) {
4102
4188
  if (vnode.shapeFlag & 6 && vnode.component) {
4103
4189
  vnode.transition = hooks;
4104
- if (isVaporComponent(vnode.type)) getVaporInterface(vnode.component, vnode).setTransitionHooks(vnode.component, hooks);
4190
+ if (isVaporInteropEnabled && isVaporComponent(vnode.type)) getVaporInterface(vnode.component, vnode).setTransitionHooks(vnode.component, hooks);
4105
4191
  else {
4106
4192
  const subTree = vnode.component.subTree;
4107
4193
  return setTransitionHooks(isTeleport(subTree.type) ? getInnerChild$1(subTree) || subTree : subTree, hooks);
@@ -4110,7 +4196,13 @@ function setTransitionHooks(vnode, hooks) {
4110
4196
  const contentHooks = vnode.ssContent.transition = hooks.clone(vnode.ssContent);
4111
4197
  const fallbackHooks = vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);
4112
4198
  return vnode.suspense && vnode.suspense.activeBranch === vnode.ssFallback ? fallbackHooks : contentHooks;
4113
- } else vnode.transition = hooks;
4199
+ } else {
4200
+ vnode.transition = hooks;
4201
+ if (vnode.type === Fragment && isArray(vnode.children)) {
4202
+ const child = filterSingleRoot(vnode.children, false);
4203
+ if (child) setTransitionHooks(child, hooks);
4204
+ }
4205
+ }
4114
4206
  return hooks;
4115
4207
  }
4116
4208
  function getTransitionRawChildren(children, keepComment = false, parentKey) {
@@ -4133,6 +4225,14 @@ function getTransitionRawChildren(children, keepComment = false, parentKey) {
4133
4225
  function checkTransitionMode(mode) {
4134
4226
  if (mode && mode !== "in-out" && mode !== "out-in" && mode !== "default") warn$1(`invalid <transition> mode: ${mode}`);
4135
4227
  }
4228
+ function getTransitionRoot(vnode) {
4229
+ if (vnode.component && (!isVaporInteropEnabled || !isVaporComponent(vnode.type))) return getTransitionRoot(vnode.component.subTree);
4230
+ if (vnode.type === Fragment) {
4231
+ const child = isArray(vnode.children) && filterSingleRoot(vnode.children, false);
4232
+ return child ? getTransitionRoot(child) : void 0;
4233
+ }
4234
+ if (vnode.type !== Comment) return vnode;
4235
+ }
4136
4236
  //#endregion
4137
4237
  //#region packages/runtime-core/src/apiDefineComponent.ts
4138
4238
  /*@__NO_SIDE_EFFECTS__*/
@@ -4386,7 +4486,7 @@ function createHydrationFunctions(rendererInternals) {
4386
4486
  else nextNode = hydrateFragment(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);
4387
4487
  break;
4388
4488
  case VaporSlot:
4389
- nextNode = getVaporInterface(parentComponent, vnode).hydrateSlot(vnode, node, parentComponent, parentSuspense, slotScopeIds);
4489
+ if (isVaporInteropEnabled) nextNode = getVaporInterface(parentComponent, vnode).hydrateSlot(vnode, node, parentComponent, parentSuspense, slotScopeIds);
4390
4490
  break;
4391
4491
  default: if (shapeFlag & 1) {
4392
4492
  if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode$1(node)) nextNode = onMismatch();
@@ -4518,7 +4618,7 @@ function createHydrationFunctions(rendererInternals) {
4518
4618
  if (fragmentSlotScopeIds) slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;
4519
4619
  const container = parentNode(node);
4520
4620
  const first = nextSibling(node);
4521
- const next = vnode.vo && node.data === "(" ? getVaporInterface(parentComponent, vnode).hydrateSlotOutlet(vnode, node, parentComponent, parentSuspense, slotScopeIds) : hydrateChildren(first, vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized);
4621
+ const next = isVaporInteropEnabled && vnode.vo && node.data === "(" ? getVaporInterface(parentComponent, vnode).hydrateSlotOutlet(vnode, node, parentComponent, parentSuspense, slotScopeIds) : hydrateChildren(first, vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized);
4522
4622
  if (next && isComment(next) && next.data === (node.data === "(" ? ")" : "]")) return nextSibling(vnode.anchor = next);
4523
4623
  else {
4524
4624
  logMismatchError();
@@ -4762,14 +4862,20 @@ const hydrateOnVisible = (opts) => (hydrate, forEach) => {
4762
4862
  break;
4763
4863
  }
4764
4864
  }, opts);
4765
- forEach((el) => {
4766
- if (!(el instanceof Element)) return;
4865
+ const observe = (el) => {
4767
4866
  if (elementIsVisibleInViewport(el)) {
4768
4867
  hydrate();
4769
4868
  ob.disconnect();
4770
4869
  return false;
4771
4870
  }
4871
+ if (getComputedStyle(el).display === "contents") {
4872
+ for (let i = 0; i < el.children.length; i++) if (observe(el.children[i]) === false) return false;
4873
+ }
4772
4874
  ob.observe(el);
4875
+ };
4876
+ forEach((el) => {
4877
+ if (!(el instanceof Element)) return;
4878
+ return observe(el);
4773
4879
  });
4774
4880
  return () => ob.disconnect();
4775
4881
  };
@@ -4919,7 +5025,7 @@ function createAsyncComponentContext(source) {
4919
5025
  setPendingRequest: (request) => pendingRequest = request
4920
5026
  };
4921
5027
  }
4922
- const useAsyncComponentState = (delay, timeout, onError, instance = currentInstance) => {
5028
+ const useAsyncComponentState = (delay = 200, timeout, onError, instance = currentInstance) => {
4923
5029
  const loaded = /* @__PURE__ */ ref(false);
4924
5030
  const error = /* @__PURE__ */ ref();
4925
5031
  const delayed = /* @__PURE__ */ ref(!!delay);
@@ -4976,6 +5082,11 @@ function performAsyncHydrate(el, instance, hydrate, getResolvedComp, load, hydra
4976
5082
  //#endregion
4977
5083
  //#region packages/runtime-core/src/components/KeepAlive.ts
4978
5084
  const isKeepAlive = (vnode) => vnode.type.__isKeepAlive;
5085
+ let isKeepAliveEnabled = false;
5086
+ function withKeepAliveEnabled(value) {
5087
+ isKeepAliveEnabled = true;
5088
+ return value;
5089
+ }
4979
5090
  const KeepAliveImpl = {
4980
5091
  name: `KeepAlive`,
4981
5092
  __isKeepAlive: true,
@@ -5027,7 +5138,10 @@ const KeepAliveImpl = {
5027
5138
  function pruneCacheEntry(key) {
5028
5139
  const cached = cache.get(key);
5029
5140
  if (cached && (!current || !isSameVNodeType(cached, current))) unmount(cached);
5030
- else if (current) resetShapeFlag(current);
5141
+ else if (current) {
5142
+ resetShapeFlag(current);
5143
+ if (cached) resetShapeFlag(cached);
5144
+ }
5031
5145
  cache.delete(key);
5032
5146
  keys.delete(key);
5033
5147
  }
@@ -5117,7 +5231,7 @@ const decorate$2 = (t) => {
5117
5231
  t.__isBuiltIn = true;
5118
5232
  return t;
5119
5233
  };
5120
- const KeepAlive = /*@__PURE__*/ decorate$2(KeepAliveImpl);
5234
+ const KeepAlive = /*@__PURE__*/ withKeepAliveEnabled(/*@__PURE__*/ decorate$2(KeepAliveImpl));
5121
5235
  function matches(pattern, name) {
5122
5236
  if (isArray(pattern)) return pattern.some((p) => matches(p, name));
5123
5237
  else if (isString(pattern)) return pattern.split(",").includes(name);
@@ -5563,16 +5677,22 @@ const rawVaporSlotKey = Symbol(`rawVaporSlot`);
5563
5677
  function renderSlot(slots, name, props, fallback, noSlotted, branchKey) {
5564
5678
  if (props == null) props = {};
5565
5679
  let slot = slots[name];
5566
- const vaporSlot = slot && slot[rawVaporSlotKey];
5680
+ const vaporSlot = isVaporInteropEnabled && slot && slot[rawVaporSlotKey];
5567
5681
  if (vaporSlot) {
5568
5682
  const ret = (openBlock(), createBlock(VaporSlot, props));
5569
5683
  ret.vs = {
5570
5684
  slot: vaporSlot,
5685
+ name,
5571
5686
  outlets: fallback ? [{
5572
5687
  fallback,
5573
5688
  owner: currentRenderingInstance
5574
5689
  }] : void 0
5575
5690
  };
5691
+ if (branchKey != null && props.key == null) {
5692
+ ret.vs.props = ret.props;
5693
+ ret.props = extend({}, ret.props, { key: branchKey });
5694
+ ret.key = branchKey;
5695
+ }
5576
5696
  if (!noSlotted && ret.scopeId) ret.slotScopeIds = [ret.scopeId + "-s"];
5577
5697
  return ret;
5578
5698
  }
@@ -5593,7 +5713,7 @@ function renderSlot(slots, name, props, fallback, noSlotted, branchKey) {
5593
5713
  try {
5594
5714
  const validSlotContent = slot && ensureValidVNode(slot(props));
5595
5715
  let attached = false;
5596
- if (fallback && validSlotContent && currentRenderingInstance) {
5716
+ if (isVaporInteropEnabled && fallback && validSlotContent && currentRenderingInstance) {
5597
5717
  const interop = currentRenderingInstance.appContext.vapor;
5598
5718
  if (interop) attached = interop.attachSlotOutlet(validSlotContent, fallback, currentRenderingInstance);
5599
5719
  }
@@ -5776,6 +5896,7 @@ function installCompatInstanceProperties(map) {
5776
5896
  const privateAPIs = {
5777
5897
  $vnode: (i) => i.vnode,
5778
5898
  _self: (i) => i.proxy,
5899
+ _setupProxy: (i) => i.setupState,
5779
5900
  _uid: (i) => i.uid,
5780
5901
  _data: (i) => i.data,
5781
5902
  _isMounted: (i) => i.isMounted,
@@ -6551,7 +6672,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
6551
6672
  if (options.el) return vm.$mount(options.el);
6552
6673
  else return vm;
6553
6674
  }
6554
- Vue.version = `2.6.14-compat:3.6.0-rc.11`;
6675
+ Vue.version = `2.6.14-compat:3.6.0-rc.13`;
6555
6676
  Vue.config = singletonApp.config;
6556
6677
  Vue.use = (plugin, ...options) => {
6557
6678
  if (plugin && isFunction(plugin.install)) plugin.install(Vue, ...options);
@@ -7369,7 +7490,7 @@ function hasPropsChanged(prevProps, nextProps, emitsOptions) {
7369
7490
  if (nextKeys.length !== Object.keys(prevProps).length) return true;
7370
7491
  for (let i = 0; i < nextKeys.length; i++) {
7371
7492
  const key = nextKeys[i];
7372
- if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) return true;
7493
+ if (!hasOwn(prevProps, key) || hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) return true;
7373
7494
  }
7374
7495
  return false;
7375
7496
  }
@@ -7915,7 +8036,7 @@ function baseCreateRenderer(options, createHydrationFns) {
7915
8036
  processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
7916
8037
  break;
7917
8038
  case VaporSlot:
7918
- getVaporInterface(parentComponent, n2).slot(n1, n2, container, anchor, parentComponent, parentSuspense, slotScopeIds);
8039
+ if (isVaporInteropEnabled) getVaporInterface(parentComponent, n2).slot(n1, n2, container, anchor, parentComponent, parentSuspense, slotScopeIds);
7919
8040
  break;
7920
8041
  default: if (shapeFlag & 1) processElement(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
7921
8042
  else if (shapeFlag & 6) processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
@@ -8049,7 +8170,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8049
8170
  let vnodeHook;
8050
8171
  parentComponent && toggleRecurse(parentComponent, false);
8051
8172
  if (vnodeHook = newProps.onVnodeBeforeUpdate) invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
8052
- if (n2.ibu) n2.ibu();
8173
+ if (isVaporInteropEnabled && n2.ibu) n2.ibu();
8053
8174
  if (dirs) invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate");
8054
8175
  parentComponent && toggleRecurse(parentComponent, true);
8055
8176
  if (isHmrUpdating || dynamicChildren && (!n1.dynamicChildren || n1.dynamicChildren.length !== dynamicChildren.length)) {
@@ -8083,9 +8204,9 @@ function baseCreateRenderer(options, createHydrationFns) {
8083
8204
  if (n1.children !== n2.children) hostSetElementText(el, n2.children);
8084
8205
  }
8085
8206
  } else if (!optimized && dynamicChildren == null) patchProps(el, oldProps, newProps, parentComponent, namespace);
8086
- if ((vnodeHook = newProps.onVnodeUpdated) || dirs || n2.iu) queuePostRenderEffect(() => {
8207
+ if ((vnodeHook = newProps.onVnodeUpdated) || dirs || isVaporInteropEnabled && n2.iu) queuePostRenderEffect(() => {
8087
8208
  vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
8088
- n2.iu && n2.iu();
8209
+ isVaporInteropEnabled && n2.iu && n2.iu();
8089
8210
  dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated");
8090
8211
  }, void 0, parentSuspense);
8091
8212
  };
@@ -8093,7 +8214,8 @@ function baseCreateRenderer(options, createHydrationFns) {
8093
8214
  for (let i = 0; i < newChildren.length; i++) {
8094
8215
  const oldVNode = oldChildren[i];
8095
8216
  const newVNode = newChildren[i];
8096
- const container = oldVNode.el && (oldVNode.type === Fragment || !isSameVNodeType(oldVNode, newVNode) || oldVNode.shapeFlag & 198) ? hostParentNode(oldVNode.el) : fallbackContainer;
8217
+ const oldEl = oldVNode.el || resolveAsyncComponentPlaceholder(oldVNode);
8218
+ const container = oldEl && (oldVNode.type === Fragment || !isSameVNodeType(oldVNode, newVNode) || oldVNode.shapeFlag & 198) ? hostParentNode(oldEl) : fallbackContainer;
8097
8219
  patch(oldVNode, newVNode, container, null, parentComponent, parentSuspense, namespace, slotScopeIds, true);
8098
8220
  }
8099
8221
  };
@@ -8188,6 +8310,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8188
8310
  if (instance.asyncDep && !instance.asyncResolved) {
8189
8311
  pushWarningContext(n2);
8190
8312
  n2.el = n1.el;
8313
+ n2.placeholder = n1.placeholder;
8191
8314
  updateComponentPreRender(instance, n2, optimized);
8192
8315
  popWarningContext();
8193
8316
  return;
@@ -8197,6 +8320,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8197
8320
  }
8198
8321
  } else {
8199
8322
  n2.el = n1.el;
8323
+ n2.placeholder = n1.placeholder;
8200
8324
  instance.vnode = n2;
8201
8325
  }
8202
8326
  };
@@ -8298,7 +8422,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8298
8422
  } else next = vnode;
8299
8423
  if (bu) invokeArrayFns(bu);
8300
8424
  if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) invokeVNodeHook(vnodeHook, parent, next, vnode);
8301
- if (next.ibu) next.ibu();
8425
+ if (isVaporInteropEnabled && next.ibu) next.ibu();
8302
8426
  if (isCompatEnabled$1("INSTANCE_EVENT_HOOKS", instance)) instance.emit("hook:beforeUpdate");
8303
8427
  toggleRecurse(instance, true);
8304
8428
  startMeasure(instance, `render`);
@@ -8312,9 +8436,9 @@ function baseCreateRenderer(options, createHydrationFns) {
8312
8436
  next.el = nextTree.el;
8313
8437
  if (originNext === null) updateHOCHostEl(instance, nextTree.el);
8314
8438
  if (u) queuePostRenderEffect(u, void 0, parentSuspense);
8315
- if ((vnodeHook = next.props && next.props.onVnodeUpdated) || next.iu) queuePostRenderEffect(() => {
8439
+ if ((vnodeHook = next.props && next.props.onVnodeUpdated) || isVaporInteropEnabled && next.iu) queuePostRenderEffect(() => {
8316
8440
  vnodeHook && invokeVNodeHook(vnodeHook, parent, next, vnode);
8317
- next.iu && next.iu();
8441
+ isVaporInteropEnabled && next.iu && next.iu();
8318
8442
  }, void 0, parentSuspense);
8319
8443
  if (isCompatEnabled$1("INSTANCE_EVENT_HOOKS", instance)) queuePostRenderEffect(() => instance.emit("hook:updated"), void 0, parentSuspense);
8320
8444
  devtoolsComponentUpdated(instance);
@@ -8467,7 +8591,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8467
8591
  };
8468
8592
  const move = (vnode, container, anchor, moveType, parentComponent, parentSuspense = null) => {
8469
8593
  const { el, type, transition, children, shapeFlag } = vnode;
8470
- if (isVaporComponent(type) || type === VaporSlot) {
8594
+ if (isVaporInteropEnabled && (isVaporComponent(type) || type === VaporSlot)) {
8471
8595
  getVaporInterface(parentComponent, vnode).move(vnode, container, anchor, moveType, parentSuspense);
8472
8596
  return;
8473
8597
  }
@@ -8511,11 +8635,11 @@ function baseCreateRenderer(options, createHydrationFns) {
8511
8635
  }
8512
8636
  if (cacheIndex != null && (!vnode.ctx || vnode.ctx === parentComponent)) parentComponent.renderCache[cacheIndex] = void 0;
8513
8637
  if (shapeFlag & 256) {
8514
- if (isVaporComponent(vnode.type)) getVaporInterface(parentComponent, vnode).deactivate(vnode, parentComponent.ctx.getStorageContainer(), parentSuspense);
8638
+ if (isVaporInteropEnabled && isVaporComponent(vnode.type)) getVaporInterface(parentComponent, vnode).deactivate(vnode, parentComponent.ctx.getStorageContainer(), parentSuspense);
8515
8639
  else parentComponent.ctx.deactivate(vnode);
8516
8640
  return;
8517
8641
  }
8518
- if (shapeFlag & 6 && isVaporComponent(type)) {
8642
+ if (isVaporInteropEnabled && shapeFlag & 6 && isVaporComponent(type)) {
8519
8643
  getVaporInterface(parentComponent, vnode).unmount(vnode, doRemove, parentSuspense);
8520
8644
  return;
8521
8645
  }
@@ -8533,7 +8657,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8533
8657
  if (shapeFlag & 64) vnode.type.remove(vnode, parentComponent, parentSuspense, internals, doRemove);
8534
8658
  else if (dynamicChildren && !dynamicChildren.hasOnce && (type !== Fragment || patchFlag > 0 && patchFlag & 64)) unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true);
8535
8659
  else if (type === Fragment && patchFlag & 384 || !optimized && shapeFlag & 16) unmountChildren(children, parentComponent, parentSuspense);
8536
- if (type === VaporSlot) {
8660
+ if (isVaporInteropEnabled && type === VaporSlot) {
8537
8661
  getVaporInterface(parentComponent, vnode).unmount(vnode, doRemove, parentSuspense);
8538
8662
  return;
8539
8663
  }
@@ -8548,12 +8672,9 @@ function baseCreateRenderer(options, createHydrationFns) {
8548
8672
  };
8549
8673
  const remove = (vnode) => {
8550
8674
  const { type, el, anchor, transition } = vnode;
8551
- if (type === Fragment) {
8552
- if (vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) vnode.children.forEach((child) => {
8553
- if (child.type === Comment) hostRemove(child.el);
8554
- else remove(child);
8555
- });
8556
- else removeFragment(el, anchor);
8675
+ const isFragment = type === Fragment;
8676
+ if (isFragment && !transition) {
8677
+ removeFragment(el, anchor);
8557
8678
  return;
8558
8679
  }
8559
8680
  if (type === Static) {
@@ -8561,8 +8682,21 @@ function baseCreateRenderer(options, createHydrationFns) {
8561
8682
  if (transition && !transition.persisted && transition.afterLeave) transition.afterLeave();
8562
8683
  return;
8563
8684
  }
8564
- if (transition) performTransitionLeave(el, transition, () => hostRemove(el), !!(vnode.shapeFlag & 1));
8565
- else hostRemove(el);
8685
+ const leavingNode = isFragment ? getTransitionRoot(vnode) : vnode;
8686
+ const performRemove = () => {
8687
+ if (isFragment) {
8688
+ if (hostParentNode(el)) removeFragment(el, anchor);
8689
+ } else hostRemove(el);
8690
+ };
8691
+ if (transition) {
8692
+ let leavingEl = leavingNode && leavingNode.el;
8693
+ let isElement = !!(leavingNode && leavingNode.shapeFlag & 1);
8694
+ if (isVaporInteropEnabled && isFragment && leavingNode && isVaporComponent(leavingNode.type)) {
8695
+ leavingEl = getVaporInterface(leavingNode.component, leavingNode).getTransitionElement(leavingNode);
8696
+ isElement = !!leavingEl;
8697
+ }
8698
+ performTransitionLeave(leavingEl || el, transition, performRemove, isElement);
8699
+ } else performRemove();
8566
8700
  };
8567
8701
  const removeFragment = (cur, end) => {
8568
8702
  let next;
@@ -8598,7 +8732,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8598
8732
  };
8599
8733
  const getNextHostNode = (vnode) => {
8600
8734
  if (vnode.shapeFlag & 6) {
8601
- if (isVaporComponent(vnode.type)) return hostNextSibling(vnode.anchor);
8735
+ if (isVaporInteropEnabled && isVaporComponent(vnode.type)) return hostNextSibling(vnode.anchor);
8602
8736
  return getNextHostNode(vnode.component.subTree);
8603
8737
  }
8604
8738
  if (vnode.shapeFlag & 128) return vnode.suspense.next();
@@ -8607,15 +8741,12 @@ function baseCreateRenderer(options, createHydrationFns) {
8607
8741
  return teleportEnd ? hostNextSibling(teleportEnd) : el;
8608
8742
  };
8609
8743
  const render = (vnode, container, namespace) => {
8610
- let instance;
8611
- if (vnode == null) {
8612
- if (container._vnode) {
8613
- unmount(container._vnode, null, null, true);
8614
- instance = container._vnode.component;
8615
- }
8616
- } else patch(container._vnode || null, vnode, container, null, null, null, namespace);
8617
- container._vnode = vnode;
8618
- flushOnAppMount(instance);
8744
+ flushOnAppMount(() => {
8745
+ if (vnode == null) {
8746
+ if (container._vnode) unmount(container._vnode, null, null, true);
8747
+ } else patch(container._vnode || null, vnode, container, null, null, null, namespace);
8748
+ container._vnode = vnode;
8749
+ }, vnode && container._vnode ? void 0 : vnode && vnode.component ? vnode.component.uid : getNextUid());
8619
8750
  };
8620
8751
  const internals = {
8621
8752
  p: patch,
@@ -8662,7 +8793,7 @@ function resolveChildrenNamespace({ type, props }, currentNamespace) {
8662
8793
  return currentNamespace === "svg" && type === "foreignObject" || currentNamespace === "mathml" && type === "annotation-xml" && props && props.encoding && props.encoding.includes("html") ? void 0 : currentNamespace;
8663
8794
  }
8664
8795
  function toggleRecurse({ effect, job, vapor }, allowed) {
8665
- if (!vapor) {
8796
+ if (!isVaporInteropEnabled || !vapor) {
8666
8797
  if (allowed) {
8667
8798
  effect.flags |= 128;
8668
8799
  job.flags |= 2;
@@ -8774,7 +8905,7 @@ function getInheritedScopeIds(vnode, parentComponent, includeVaporRootIds = true
8774
8905
  currentParent = currentParent.parent;
8775
8906
  } else break;
8776
8907
  }
8777
- const vaporScopeIds = includeVaporRootIds && currentVNode.vaporScopeIds;
8908
+ const vaporScopeIds = isVaporInteropEnabled && includeVaporRootIds && currentVNode.vaporScopeIds;
8778
8909
  if (vaporScopeIds) inheritedScopeIds.push(...vaporScopeIds);
8779
8910
  return inheritedScopeIds;
8780
8911
  }
@@ -8787,8 +8918,13 @@ function resolveAsyncComponentPlaceholder(anchorVnode) {
8787
8918
  //#endregion
8788
8919
  //#region packages/runtime-core/src/components/Suspense.ts
8789
8920
  const isSuspense = (type) => type.__isSuspense;
8921
+ let isSuspenseEnabled = false;
8922
+ function withSuspenseEnabled(value) {
8923
+ isSuspenseEnabled = true;
8924
+ return value;
8925
+ }
8790
8926
  let suspenseId = 0;
8791
- const Suspense = {
8927
+ const Suspense = /*@__PURE__*/ withSuspenseEnabled({
8792
8928
  name: "Suspense",
8793
8929
  __isSuspense: true,
8794
8930
  process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {
@@ -8805,7 +8941,7 @@ const Suspense = {
8805
8941
  },
8806
8942
  hydrate: hydrateSuspense,
8807
8943
  normalize: normalizeSuspenseChildren
8808
- };
8944
+ });
8809
8945
  function triggerEvent(vnode, name) {
8810
8946
  const eventListener = vnode.props && vnode.props[name];
8811
8947
  if (isFunction(eventListener)) eventListener();
@@ -9008,13 +9144,12 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
9008
9144
  registerDep(instance, onResolve) {
9009
9145
  const isInPendingSuspense = !!suspense.pendingBranch;
9010
9146
  if (isInPendingSuspense) suspense.deps++;
9011
- const hydratedEl = instance.vnode && instance.vnode.el;
9012
9147
  instance.asyncDep.catch((err) => {
9013
9148
  handleError(err, instance, 0);
9014
9149
  }).then((asyncSetupResult) => {
9015
9150
  if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) return;
9016
9151
  setCurrentInstance(null, void 0);
9017
- if (hydratedEl && !instance.scope.active) {
9152
+ if (!instance.scope.active) {
9018
9153
  if (isInPendingSuspense && --suspense.deps === 0) suspense.resolve();
9019
9154
  return;
9020
9155
  }
@@ -9370,7 +9505,7 @@ function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false
9370
9505
  ctx: vnode.ctx,
9371
9506
  ce: vnode.ce,
9372
9507
  vi: vnode.vi,
9373
- vs: cloneVaporSlotMeta(vnode),
9508
+ vs: cloneVaporSlotMeta(vnode, extraProps),
9374
9509
  vb: vnode.vb,
9375
9510
  ibu: vnode.ibu,
9376
9511
  iu: vnode.iu,
@@ -9380,13 +9515,29 @@ function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false
9380
9515
  defineLegacyVNodeProperties(cloned);
9381
9516
  return cloned;
9382
9517
  }
9383
- function cloneVaporSlotMeta(vnode) {
9518
+ function cloneVaporSlotMeta(vnode, extraProps) {
9384
9519
  const vaporSlot = vnode.vs;
9385
9520
  if (!vaporSlot) return vaporSlot;
9386
9521
  const cloned = {
9387
9522
  slot: vaporSlot.slot,
9388
- outlets: vaporSlot.outlets
9523
+ name: vaporSlot.name,
9524
+ outlets: vaporSlot.outlets,
9525
+ props: vaporSlot.props,
9526
+ attrs: vaporSlot.attrs && vaporSlot.attrs === EMPTY_OBJ ? {} : vaporSlot.attrs,
9527
+ group: vaporSlot.group
9389
9528
  };
9529
+ const attrs = cloned.attrs;
9530
+ if (extraProps && vaporSlot.props) {
9531
+ let extraSlotProps;
9532
+ for (const key in extraProps) if (attrs ? !isReservedProp(key) : key !== "key") {
9533
+ if (!extraSlotProps) extraSlotProps = {};
9534
+ extraSlotProps[key] = extraProps[key];
9535
+ }
9536
+ if (extraSlotProps) {
9537
+ if (attrs) cloned.attrs = mergeProps(attrs, extraSlotProps);
9538
+ else cloned.props = mergeProps(vaporSlot.props, extraSlotProps);
9539
+ }
9540
+ }
9390
9541
  if (vnode.el) {
9391
9542
  cloned.state = vaporSlot.state;
9392
9543
  cloned.ref = vaporSlot.ref;
@@ -9569,6 +9720,9 @@ const useInstanceOption = (key, silent = false) => {
9569
9720
  //#region packages/runtime-core/src/component.ts
9570
9721
  const emptyAppContext = /*@__PURE__*/ createAppContext();
9571
9722
  let uid = 0;
9723
+ function getNextUid() {
9724
+ return uid;
9725
+ }
9572
9726
  function createComponentInstance(vnode, parent, suspense) {
9573
9727
  const type = vnode.type;
9574
9728
  const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;
@@ -9655,7 +9809,7 @@ function setupComponent(instance, isSSR = false, optimized = false) {
9655
9809
  isSSR && setInSSRSetupState(isSSR);
9656
9810
  const { props, children, vi } = instance.vnode;
9657
9811
  const isStateful = isStatefulComponent(instance);
9658
- if (vi) vi(instance);
9812
+ if (isVaporInteropEnabled && vi) vi(instance);
9659
9813
  else {
9660
9814
  initProps(instance, props, isStateful, isSSR);
9661
9815
  initSlots(instance, children, optimized || isSSR);
@@ -10077,7 +10231,7 @@ function isMemoSame(cached, memo) {
10077
10231
  }
10078
10232
  //#endregion
10079
10233
  //#region packages/runtime-core/src/index.ts
10080
- const version = "3.6.0-rc.11";
10234
+ const version = "3.6.0-rc.13";
10081
10235
  const warn = warn$1;
10082
10236
  /**
10083
10237
  * Runtime error messages. Only exposed in dev or esm builds.
@@ -10515,14 +10669,14 @@ function setVarsOnVNode(vnode, vars) {
10515
10669
  }
10516
10670
  while (vnode.component) {
10517
10671
  const component = vnode.component;
10518
- if (component.vapor) {
10672
+ if (isVaporInteropEnabled && component.vapor) {
10519
10673
  component.appContext.vapor.applyCssVars(vnode, vars);
10520
10674
  return;
10521
10675
  }
10522
10676
  vnode = vnode.component.subTree;
10523
10677
  }
10524
10678
  if (vnode.shapeFlag & 1 && vnode.el) setVarsOnNode(vnode.el, vars);
10525
- else if (vnode.vb) vnode.ctx.appContext.vapor.applyCssVars(vnode, vars);
10679
+ else if (isVaporInteropEnabled && vnode.vb) vnode.ctx.appContext.vapor.applyCssVars(vnode, vars);
10526
10680
  else if (vnode.type === Fragment) vnode.children.forEach((c) => setVarsOnVNode(c, vars));
10527
10681
  else if (vnode.type === Static) {
10528
10682
  let { el, anchor } = vnode;
@@ -10585,7 +10739,7 @@ function patchStyle(el, prev, next) {
10585
10739
  else el.removeAttribute("style");
10586
10740
  }
10587
10741
  if (vShowOriginalDisplay in el) {
10588
- el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : "";
10742
+ if (!isCssString || prev !== next) el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : "";
10589
10743
  if (el[vShowHidden]) style.display = "none";
10590
10744
  }
10591
10745
  }
@@ -10915,7 +11069,7 @@ var VueElementBase = class VueElementBase extends BaseClass {
10915
11069
  this._resolveProps(def);
10916
11070
  if (this.shadowRoot) this._applyStyles(styles);
10917
11071
  else if (styles) warn("Custom element style injection is not supported when using shadowRoot: false");
10918
- this._mountComponent(def);
11072
+ if (this._connected) this._mountComponent(def);
10919
11073
  };
10920
11074
  const asyncDef = this._def.__asyncLoader;
10921
11075
  if (asyncDef) {
@@ -11233,6 +11387,7 @@ const positionMap = /* @__PURE__ */ new WeakMap();
11233
11387
  const newPositionMap = /* @__PURE__ */ new WeakMap();
11234
11388
  const moveCbKey = Symbol("_moveCb");
11235
11389
  const enterCbKey = Symbol("_enterCb");
11390
+ const pendingGroups = /* @__PURE__ */ new WeakMap();
11236
11391
  /**
11237
11392
  * Wrap logic that modifies TransitionGroup properties in a function
11238
11393
  * so that it can be annotated as pure
@@ -11242,7 +11397,7 @@ const decorate = (t) => {
11242
11397
  t.__isBuiltIn = true;
11243
11398
  return t;
11244
11399
  };
11245
- const TransitionGroup = /* @__PURE__ */ decorate({
11400
+ const TransitionGroup = /*@__PURE__*/ withTransitionEnabled(/* @__PURE__ */ decorate({
11246
11401
  name: "TransitionGroup",
11247
11402
  props: /*@__PURE__*/ extend({}, TransitionPropsValidators, {
11248
11403
  tag: String,
@@ -11251,17 +11406,31 @@ const TransitionGroup = /* @__PURE__ */ decorate({
11251
11406
  setup(props, { slots }) {
11252
11407
  const instance = getCurrentInstance();
11253
11408
  const state = useTransitionState();
11409
+ const group = {
11410
+ props: {},
11411
+ state,
11412
+ instance
11413
+ };
11254
11414
  let prevChildren;
11255
11415
  let children;
11416
+ let origins;
11417
+ let moves;
11418
+ const willMove = () => {
11419
+ if (moves === void 0) moves = prevChildren.length > 0 && hasCSSTransform(prevChildren[0].el, instance.vnode.el, resolveMoveClass(props));
11420
+ return moves;
11421
+ };
11256
11422
  onUpdated(() => {
11257
- if (!prevChildren.length) return;
11258
- const moveClass = props.moveClass || `${props.name || "v"}-move`;
11259
- if (!hasCSSTransform(prevChildren[0].el, instance.vnode.el, moveClass)) {
11423
+ pendingGroups.delete(instance);
11424
+ if (!willMove()) {
11260
11425
  prevChildren = [];
11426
+ origins = void 0;
11261
11427
  return;
11262
11428
  }
11429
+ const moveClass = resolveMoveClass(props);
11263
11430
  prevChildren.forEach((vnode) => callPendingCbs(vnode.el));
11264
- prevChildren.forEach(recordPosition);
11431
+ const shift = origins && getOriginShift(origins, instance.vnode.el);
11432
+ origins = void 0;
11433
+ prevChildren.forEach((c) => recordPosition(c, shift));
11265
11434
  const movedChildren = prevChildren.filter(applyTranslation);
11266
11435
  forceReflow(instance.vnode.el);
11267
11436
  movedChildren.forEach((c) => {
@@ -11272,34 +11441,51 @@ const TransitionGroup = /* @__PURE__ */ decorate({
11272
11441
  });
11273
11442
  return () => {
11274
11443
  const rawProps = /* @__PURE__ */ toRaw(props);
11275
- const cssTransitionProps = resolveTransitionProps(rawProps);
11444
+ const cssTransitionProps = group.props = resolveTransitionProps(rawProps);
11276
11445
  let tag = rawProps.tag || Fragment;
11277
11446
  if (!rawProps.tag && compatUtils.checkCompatEnabled("TRANSITION_GROUP_ROOT", instance.parent)) tag = "span";
11278
11447
  prevChildren = [];
11448
+ moves = void 0;
11279
11449
  if (children) for (let i = 0; i < children.length; i++) {
11280
11450
  const child = children[i];
11281
11451
  if (child.el && child.el instanceof Element && !child.el[vShowHidden]) {
11282
11452
  prevChildren.push(child);
11283
11453
  setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
11284
11454
  positionMap.set(child, getPosition(child.el));
11285
- }
11455
+ } else if (isVaporInteropEnabled && child.vs && child.vb) instance.appContext.vapor.forEachGroupChild(child, (el) => {
11456
+ const row = { el };
11457
+ prevChildren.push(row);
11458
+ positionMap.set(row, getPosition(el));
11459
+ });
11286
11460
  }
11287
11461
  children = slots.default ? getTransitionRawChildren(slots.default()) : [];
11288
11462
  for (let i = 0; i < children.length; i++) {
11289
11463
  const child = children[i];
11290
- if (child.key != null) setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
11464
+ if (isVaporInteropEnabled && child.vs) child.vs.group = group;
11465
+ else if (child.key != null) setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
11291
11466
  else if (child.type !== Text) warn(`<TransitionGroup> children must be keyed.`);
11292
11467
  }
11468
+ if (prevChildren.length) {
11469
+ const root = instance.vnode.el;
11470
+ origins = getOrigins(instance, root);
11471
+ pendingGroups.set(instance, {
11472
+ root,
11473
+ willMove
11474
+ });
11475
+ }
11293
11476
  return createVNode(tag, null, children);
11294
11477
  };
11295
11478
  }
11296
- });
11479
+ }));
11297
11480
  function callPendingCbs(el) {
11298
11481
  if (el[moveCbKey]) el[moveCbKey]();
11299
11482
  if (el[enterCbKey]) el[enterCbKey]();
11300
11483
  }
11301
- function recordPosition(c) {
11302
- newPositionMap.set(c, getPosition(c.el));
11484
+ function resolveMoveClass(props) {
11485
+ return props.moveClass || `${props.name || "v"}-move`;
11486
+ }
11487
+ function recordPosition(c, shift) {
11488
+ newPositionMap.set(c, getPosition(c.el, shift));
11303
11489
  }
11304
11490
  function applyTranslation(c) {
11305
11491
  if (baseApplyTranslation(positionMap.get(c), newPositionMap.get(c), c.el)) return c;
@@ -11324,13 +11510,36 @@ function baseApplyTranslation(oldPos, newPos, el) {
11324
11510
  }
11325
11511
  return false;
11326
11512
  }
11327
- function getPosition(el) {
11513
+ function getPosition(el, shift) {
11328
11514
  const rect = el.getBoundingClientRect();
11329
11515
  return {
11330
- left: rect.left,
11331
- top: rect.top
11516
+ left: rect.left - (shift ? shift.left : 0),
11517
+ top: rect.top - (shift ? shift.top : 0)
11332
11518
  };
11333
11519
  }
11520
+ function getOrigins(instance, root) {
11521
+ let origins;
11522
+ for (let group = instance.parent; group; group = group.parent) {
11523
+ const pending = pendingGroups.get(group);
11524
+ if (pending) {
11525
+ const item = findItem(pending.root, root);
11526
+ if (item) (origins || (origins = [])).push(extend(getPosition(item), {
11527
+ item,
11528
+ willMove: pending.willMove
11529
+ }));
11530
+ }
11531
+ }
11532
+ return origins;
11533
+ }
11534
+ function findItem(root, node) {
11535
+ const container = root.nodeType === 1 ? root : root.parentNode;
11536
+ while (node && node.parentNode !== container) node = node.parentNode;
11537
+ if (node && node.nodeType === 1) return node;
11538
+ }
11539
+ function getOriginShift(origins, root) {
11540
+ const origin = origins.find((o) => o.willMove() && o.item.contains(root));
11541
+ return origin && getPosition(origin.item, origin);
11542
+ }
11334
11543
  function hasCSSTransform(el, root, moveClass) {
11335
11544
  const clone = el.cloneNode();
11336
11545
  const _vtc = el[vtcKey];
@@ -11411,7 +11620,7 @@ const vModelTextInit = (el, trim, number, lazy, set) => {
11411
11620
  if (e.target.composing) return;
11412
11621
  (set || el[assignKey])(castValue(el.value, trim, number || el.type === "number"));
11413
11622
  });
11414
- if (trim || number) addEventListener(el, "change", () => {
11623
+ if (trim || number || el.type === "number") addEventListener(el, "change", () => {
11415
11624
  el.value = castValue(el.value, trim, number || el.type === "number");
11416
11625
  });
11417
11626
  if (!lazy) {
@@ -11773,6 +11982,7 @@ var src_exports = /* @__PURE__ */ __exportAll({
11773
11982
  initCustomFormatter: () => initCustomFormatter,
11774
11983
  initDirectivesForSSR: () => initDirectivesForSSR,
11775
11984
  inject: () => inject,
11985
+ isKeepAliveEnabled: () => isKeepAliveEnabled,
11776
11986
  isMemoSame: () => isMemoSame,
11777
11987
  isProxy: () => isProxy,
11778
11988
  isReactive: () => isReactive,
@@ -11780,7 +11990,10 @@ var src_exports = /* @__PURE__ */ __exportAll({
11780
11990
  isRef: () => isRef,
11781
11991
  isRuntimeOnly: () => isRuntimeOnly,
11782
11992
  isShallow: () => isShallow,
11993
+ isSuspenseEnabled: () => isSuspenseEnabled,
11994
+ isTransitionEnabled: () => isTransitionEnabled,
11783
11995
  isVNode: () => isVNode,
11996
+ isVaporInteropEnabled: () => isVaporInteropEnabled,
11784
11997
  markRaw: () => markRaw,
11785
11998
  mergeDefaults: () => mergeDefaults,
11786
11999
  mergeModels: () => mergeModels,
@@ -11827,6 +12040,7 @@ var src_exports = /* @__PURE__ */ __exportAll({
11827
12040
  setDevtoolsHook: () => setDevtoolsHook,
11828
12041
  setIsHydratingEnabled: () => setIsHydratingEnabled,
11829
12042
  setTransitionHooks: () => setTransitionHooks,
12043
+ setVaporInteropEnabled: () => setVaporInteropEnabled,
11830
12044
  shallowReactive: () => shallowReactive,
11831
12045
  shallowReadonly: () => shallowReadonly,
11832
12046
  shallowRef: () => shallowRef,
@@ -11871,10 +12085,13 @@ var src_exports = /* @__PURE__ */ __exportAll({
11871
12085
  withCtx: () => withCtx,
11872
12086
  withDefaults: () => withDefaults,
11873
12087
  withDirectives: () => withDirectives,
12088
+ withKeepAliveEnabled: () => withKeepAliveEnabled,
11874
12089
  withKeys: () => withKeys,
11875
12090
  withMemo: () => withMemo,
11876
12091
  withModifiers: () => withModifiers,
11877
- withScopeId: () => withScopeId
12092
+ withScopeId: () => withScopeId,
12093
+ withSuspenseEnabled: () => withSuspenseEnabled,
12094
+ withTransitionEnabled: () => withTransitionEnabled
11878
12095
  });
11879
12096
  const rendererOptions = /*@__PURE__*/ extend({ patchProp }, nodeOps);
11880
12097
  let renderer;
@@ -13082,7 +13299,7 @@ const errorMessages = {
13082
13299
  [41]: `v-model is missing expression.`,
13083
13300
  [42]: `v-model value must be a valid JavaScript member expression.`,
13084
13301
  [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`,
13085
- [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.`,
13302
+ [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.`,
13086
13303
  [45]: `v-model cannot be used on a const binding because it is not writable.`,
13087
13304
  [46]: `Error parsing JavaScript expression: `,
13088
13305
  [47]: `<KeepAlive> expects exactly one child component.`,
@@ -14905,7 +15122,11 @@ const transformFor = createStructuralDirectiveTransform("for", (node, dir, conte
14905
15122
  ]),
14906
15123
  createCompoundExpression([
14907
15124
  `if (_cached && _cached.el`,
14908
- ...keyExp ? [` && _cached.key === `, keyExp] : [],
15125
+ ...keyExp ? [
15126
+ ` && _cached.key === (`,
15127
+ keyExp,
15128
+ `)`
15129
+ ] : [],
14909
15130
  ` && ${context.helperString(IS_MEMO_SAME)}(_cached, _memo)) return _cached`
14910
15131
  ]),
14911
15132
  createCompoundExpression([`const _item = `, childBlock]),
@@ -16327,7 +16548,11 @@ const validateHtmlNesting = (node, context) => {
16327
16548
  };
16328
16549
  //#endregion
16329
16550
  //#region packages/compiler-dom/src/index.ts
16330
- const DOMNodeTransforms = [transformStyle, ...[transformTransition, validateHtmlNesting]];
16551
+ const DOMNodeTransforms = [
16552
+ transformStyle,
16553
+ transformTransition,
16554
+ ...[validateHtmlNesting]
16555
+ ];
16331
16556
  const DOMDirectiveTransforms = {
16332
16557
  cloak: noopDirectiveTransform,
16333
16558
  html: transformVHtml,
@@ -16390,4 +16615,4 @@ Vue.compile = compileToFunction;
16390
16615
  var esm_index_default = Vue;
16391
16616
  const configureCompat = Vue.configureCompat;
16392
16617
  //#endregion
16393
- export { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, EffectScope, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, MoveType, NULL_DYNAMIC_COMPONENT, ReactiveEffect, Static, Suspense, Teleport, Text, TrackOpTypes, Transition, TransitionGroup, TriggerOpTypes, VueElement, VueElementBase, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, camelize, capitalize, cloneVNode, compatUtils, computed, configureCompat, createApp, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSSRApp, createSlots, createStaticVNode, createTextVNode, createVNode, customRef, esm_index_default as default, defineAsyncComponent, defineComponent, defineCustomElement, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSSRCustomElement, defineSlots, devtools, effect, effectScope, getCurrentInstance, getCurrentScope, getCurrentWatcher, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, hydrate, hydrateOnIdle, hydrateOnInteraction, hydrateOnMediaQuery, hydrateOnVisible, initCustomFormatter, initDirectivesForSSR, inject, isMemoSame, isProxy, isReactive, isReadonly, isRef, isRuntimeOnly, isShallow, isVNode, markRaw, mergeDefaults, mergeModels, mergeProps, nextTick, nodeOps, normalizeClass, normalizeProps, normalizeStyle, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, onWatcherCleanup, openBlock, patchProp, popScopeId, provide, proxyRefs, pushScopeId, queuePostFlushCb, reactive, readonly, ref, registerRuntimeCompiler, render, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setIsHydratingEnabled, setTransitionHooks, shallowReactive, shallowReadonly, shallowRef, ssrContextKey, ssrUtils, stop, toDisplayString, toHandlerKey, toHandlers, toRaw, toRef, toRefs, toValue, transformVNodeArgs, triggerRef, unref, useAttrs, useCssModule, useCssVars, useHost, useId, useInstanceOption, useModel, useSSRContext, useShadowRoot, useSlots, useTemplateRef, useTransitionState, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withKeys, withMemo, withModifiers, withScopeId };
16618
+ export { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, EffectScope, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, MoveType, NULL_DYNAMIC_COMPONENT, ReactiveEffect, Static, Suspense, Teleport, Text, TrackOpTypes, Transition, TransitionGroup, TriggerOpTypes, VueElement, VueElementBase, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, camelize, capitalize, cloneVNode, compatUtils, computed, configureCompat, createApp, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSSRApp, createSlots, createStaticVNode, createTextVNode, createVNode, customRef, esm_index_default as default, defineAsyncComponent, defineComponent, defineCustomElement, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSSRCustomElement, defineSlots, devtools, effect, effectScope, getCurrentInstance, getCurrentScope, getCurrentWatcher, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, hydrate, hydrateOnIdle, hydrateOnInteraction, hydrateOnMediaQuery, hydrateOnVisible, initCustomFormatter, initDirectivesForSSR, inject, isKeepAliveEnabled, isMemoSame, isProxy, isReactive, isReadonly, isRef, isRuntimeOnly, isShallow, isSuspenseEnabled, isTransitionEnabled, isVNode, isVaporInteropEnabled, markRaw, mergeDefaults, mergeModels, mergeProps, nextTick, nodeOps, normalizeClass, normalizeProps, normalizeStyle, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, onWatcherCleanup, openBlock, patchProp, popScopeId, provide, proxyRefs, pushScopeId, queuePostFlushCb, reactive, readonly, ref, registerRuntimeCompiler, render, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setIsHydratingEnabled, setTransitionHooks, setVaporInteropEnabled, shallowReactive, shallowReadonly, shallowRef, ssrContextKey, ssrUtils, stop, toDisplayString, toHandlerKey, toHandlers, toRaw, toRef, toRefs, toValue, transformVNodeArgs, triggerRef, unref, useAttrs, useCssModule, useCssVars, useHost, useId, useInstanceOption, useModel, useSSRContext, useShadowRoot, useSlots, useTemplateRef, useTransitionState, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withKeepAliveEnabled, withKeys, withMemo, withModifiers, withScopeId, withSuspenseEnabled, withTransitionEnabled };