@vue/compat 3.6.0-alpha.2 → 3.6.0-alpha.4

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,9 +1,8 @@
1
1
  /**
2
- * @vue/compat v3.6.0-alpha.2
2
+ * @vue/compat v3.6.0-alpha.4
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
6
- /*! #__NO_SIDE_EFFECTS__ */
7
6
  // @__NO_SIDE_EFFECTS__
8
7
  function makeMap(str) {
9
8
  const map = /* @__PURE__ */ Object.create(null);
@@ -59,10 +58,10 @@ const isBuiltInDirective = /* @__PURE__ */ makeMap(
59
58
  );
60
59
  const cacheStringFunction = (fn) => {
61
60
  const cache = /* @__PURE__ */ Object.create(null);
62
- return (str) => {
61
+ return ((str) => {
63
62
  const hit = cache[str];
64
63
  return hit || (cache[str] = fn(str));
65
- };
64
+ });
66
65
  };
67
66
  const camelizeRE = /-(\w)/g;
68
67
  const camelizeReplacer = (_, c) => c ? c.toUpperCase() : "";
@@ -82,6 +81,9 @@ const toHandlerKey = cacheStringFunction(
82
81
  return s;
83
82
  }
84
83
  );
84
+ const getModifierPropName = (name) => {
85
+ return `${name === "modelValue" || name === "model-value" ? "model" : name}Modifiers${name === "model" ? "$" : ""}`;
86
+ };
85
87
  const hasChanged = (value, oldValue) => !Object.is(value, oldValue);
86
88
  const invokeArrayFns = (fns, ...arg) => {
87
89
  for (let i = 0; i < fns.length; i++) {
@@ -308,6 +310,9 @@ function shouldSetAsAttr(tagName, key) {
308
310
  if ((key === "width" || key === "height") && (tagName === "IMG" || tagName === "VIDEO" || tagName === "CANVAS" || tagName === "SOURCE")) {
309
311
  return true;
310
312
  }
313
+ if (key === "sandbox" && tagName === "IFRAME") {
314
+ return true;
315
+ }
311
316
  return false;
312
317
  }
313
318
 
@@ -497,6 +502,7 @@ var ReactiveFlags = /* @__PURE__ */ ((ReactiveFlags2) => {
497
502
  const notifyBuffer = [];
498
503
  let batchDepth = 0;
499
504
  let activeSub = void 0;
505
+ let globalVersion = 0;
500
506
  let notifyIndex = 0;
501
507
  let notifyBufferLength = 0;
502
508
  function setActiveSub(sub) {
@@ -519,17 +525,18 @@ function link(dep, sub) {
519
525
  if (prevDep !== void 0 && prevDep.dep === dep) {
520
526
  return;
521
527
  }
522
- let nextDep = void 0;
523
- const recursedCheck = sub.flags & 4 /* RecursedCheck */;
524
- if (recursedCheck) {
525
- nextDep = prevDep !== void 0 ? prevDep.nextDep : sub.deps;
526
- if (nextDep !== void 0 && nextDep.dep === dep) {
527
- sub.depsTail = nextDep;
528
- return;
529
- }
528
+ const nextDep = prevDep !== void 0 ? prevDep.nextDep : sub.deps;
529
+ if (nextDep !== void 0 && nextDep.dep === dep) {
530
+ nextDep.version = globalVersion;
531
+ sub.depsTail = nextDep;
532
+ return;
530
533
  }
531
534
  const prevSub = dep.subsTail;
535
+ if (prevSub !== void 0 && prevSub.version === globalVersion && prevSub.sub === sub) {
536
+ return;
537
+ }
532
538
  const newLink = sub.depsTail = dep.subsTail = {
539
+ version: globalVersion,
533
540
  dep,
534
541
  sub,
535
542
  prevDep,
@@ -635,6 +642,7 @@ function propagate(link2) {
635
642
  } while (true);
636
643
  }
637
644
  function startTracking(sub) {
645
+ ++globalVersion;
638
646
  sub.depsTail = void 0;
639
647
  sub.flags = sub.flags & -57 | 4 /* RecursedCheck */;
640
648
  return setActiveSub(sub);
@@ -735,18 +743,12 @@ function shallowPropagate(link2) {
735
743
  } while (link2 !== void 0);
736
744
  }
737
745
  function isValidLink(checkLink, sub) {
738
- const depsTail = sub.depsTail;
739
- if (depsTail !== void 0) {
740
- let link2 = sub.deps;
741
- do {
742
- if (link2 === checkLink) {
743
- return true;
744
- }
745
- if (link2 === depsTail) {
746
- break;
747
- }
748
- link2 = link2.nextDep;
749
- } while (link2 !== void 0);
746
+ let link2 = sub.depsTail;
747
+ while (link2 !== void 0) {
748
+ if (link2 === checkLink) {
749
+ return true;
750
+ }
751
+ link2 = link2.prevDep;
750
752
  }
751
753
  return false;
752
754
  }
@@ -986,7 +988,7 @@ const arrayInstrumentations = {
986
988
  join(separator) {
987
989
  return reactiveReadArray(this).join(separator);
988
990
  },
989
- // keys() iterator only reads `length`, no optimisation required
991
+ // keys() iterator only reads `length`, no optimization required
990
992
  lastIndexOf(...args) {
991
993
  return searchProxy(this, "lastIndexOf", args);
992
994
  },
@@ -1038,7 +1040,7 @@ function iterator(self, method, wrapValue) {
1038
1040
  iter._next = iter.next;
1039
1041
  iter.next = () => {
1040
1042
  const result = iter._next();
1041
- if (result.value) {
1043
+ if (!result.done) {
1042
1044
  result.value = wrapValue(result.value);
1043
1045
  }
1044
1046
  return result;
@@ -1169,7 +1171,8 @@ class BaseReactiveHandler {
1169
1171
  return res;
1170
1172
  }
1171
1173
  if (isRef(res)) {
1172
- return targetIsArray && isIntegerKey(key) ? res : res.value;
1174
+ const value = targetIsArray && isIntegerKey(key) ? res : res.value;
1175
+ return isReadonly2 && isObject(value) ? readonly(value) : value;
1173
1176
  }
1174
1177
  if (isObject(res)) {
1175
1178
  return isReadonly2 ? readonly(res) : reactive(res);
@@ -1191,7 +1194,13 @@ class MutableReactiveHandler extends BaseReactiveHandler {
1191
1194
  }
1192
1195
  if (!isArray(target) && isRef(oldValue) && !isRef(value)) {
1193
1196
  if (isOldValueReadonly) {
1194
- return false;
1197
+ {
1198
+ warn$2(
1199
+ `Set operation on key "${String(key)}" failed: target is readonly.`,
1200
+ target[key]
1201
+ );
1202
+ }
1203
+ return true;
1195
1204
  } else {
1196
1205
  oldValue.value = value;
1197
1206
  return true;
@@ -1336,7 +1345,7 @@ function createInstrumentations(readonly, shallow) {
1336
1345
  get size() {
1337
1346
  const target = this["__v_raw"];
1338
1347
  !readonly && track(toRaw(target), "iterate", ITERATE_KEY);
1339
- return Reflect.get(target, "size", target);
1348
+ return target.size;
1340
1349
  },
1341
1350
  has(key) {
1342
1351
  const target = this["__v_raw"];
@@ -2339,11 +2348,11 @@ function traverse(value, depth = Infinity, seen) {
2339
2348
  if (depth <= 0 || !isObject(value) || value["__v_skip"]) {
2340
2349
  return value;
2341
2350
  }
2342
- seen = seen || /* @__PURE__ */ new Set();
2343
- if (seen.has(value)) {
2351
+ seen = seen || /* @__PURE__ */ new Map();
2352
+ if ((seen.get(value) || 0) >= depth) {
2344
2353
  return value;
2345
2354
  }
2346
- seen.add(value);
2355
+ seen.set(value, depth);
2347
2356
  depth--;
2348
2357
  if (isRef(value)) {
2349
2358
  traverse(value.value, depth, seen);
@@ -2889,8 +2898,10 @@ function rerender(id, newRender) {
2889
2898
  instance.hmrRerender();
2890
2899
  } else {
2891
2900
  const i = instance;
2892
- i.renderCache = [];
2893
- i.effect.run();
2901
+ if (!(i.effect.flags & 1024)) {
2902
+ i.renderCache = [];
2903
+ i.effect.run();
2904
+ }
2894
2905
  }
2895
2906
  nextTick(() => {
2896
2907
  isHmrUpdating = false;
@@ -2903,7 +2914,12 @@ function reload(id, newComp) {
2903
2914
  newComp = normalizeClassComponent(newComp);
2904
2915
  updateComponentDef(record.initialDef, newComp);
2905
2916
  const instances = [...record.instances];
2906
- if (newComp.__vapor) {
2917
+ if (newComp.__vapor && !instances.some((i) => i.ceReload)) {
2918
+ for (const instance of instances) {
2919
+ if (instance.root && instance.root.ce && instance !== instance.root) {
2920
+ instance.root.ce._removeChildStyle(instance.type);
2921
+ }
2922
+ }
2907
2923
  for (const instance of instances) {
2908
2924
  instance.hmrReload(newComp);
2909
2925
  }
@@ -2932,7 +2948,10 @@ function reload(id, newComp) {
2932
2948
  if (parent.vapor) {
2933
2949
  parent.hmrRerender();
2934
2950
  } else {
2935
- parent.effect.run();
2951
+ if (!(parent.effect.flags & 1024)) {
2952
+ parent.renderCache = [];
2953
+ parent.effect.run();
2954
+ }
2936
2955
  }
2937
2956
  nextTick(() => {
2938
2957
  isHmrUpdating = false;
@@ -3042,7 +3061,6 @@ const devtoolsComponentRemoved = (component) => {
3042
3061
  _devtoolsComponentRemoved(component);
3043
3062
  }
3044
3063
  };
3045
- /*! #__NO_SIDE_EFFECTS__ */
3046
3064
  // @__NO_SIDE_EFFECTS__
3047
3065
  function createDevtoolsComponentHook(hook) {
3048
3066
  return (component) => {
@@ -3756,9 +3774,6 @@ const TeleportImpl = {
3756
3774
  insert(mainAnchor, container, anchor);
3757
3775
  const mount = (container2, anchor2) => {
3758
3776
  if (shapeFlag & 16) {
3759
- if (parentComponent && parentComponent.isCE) {
3760
- parentComponent.ce._teleportTarget = container2;
3761
- }
3762
3777
  mountChildren(
3763
3778
  children,
3764
3779
  container2,
@@ -3780,6 +3795,9 @@ const TeleportImpl = {
3780
3795
  } else if (namespace !== "mathml" && isTargetMathML(target)) {
3781
3796
  namespace = "mathml";
3782
3797
  }
3798
+ if (parentComponent && parentComponent.isCE) {
3799
+ (parentComponent.ce._teleportTargets || (parentComponent.ce._teleportTargets = /* @__PURE__ */ new Set())).add(target);
3800
+ }
3783
3801
  if (!disabled) {
3784
3802
  mount(target, targetAnchor);
3785
3803
  updateCssVars(n2, false);
@@ -3980,26 +3998,34 @@ function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }
3980
3998
  function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {
3981
3999
  o: { nextSibling, parentNode, querySelector, insert, createText }
3982
4000
  }, hydrateChildren) {
4001
+ function hydrateDisabledTeleport(node2, vnode2, targetStart, targetAnchor) {
4002
+ vnode2.anchor = hydrateChildren(
4003
+ nextSibling(node2),
4004
+ vnode2,
4005
+ parentNode(node2),
4006
+ parentComponent,
4007
+ parentSuspense,
4008
+ slotScopeIds,
4009
+ optimized
4010
+ );
4011
+ vnode2.targetStart = targetStart;
4012
+ vnode2.targetAnchor = targetAnchor;
4013
+ }
3983
4014
  const target = vnode.target = resolveTarget(
3984
4015
  vnode.props,
3985
4016
  querySelector
3986
4017
  );
4018
+ const disabled = isTeleportDisabled(vnode.props);
3987
4019
  if (target) {
3988
- const disabled = isTeleportDisabled(vnode.props);
3989
4020
  const targetNode = target._lpa || target.firstChild;
3990
4021
  if (vnode.shapeFlag & 16) {
3991
4022
  if (disabled) {
3992
- vnode.anchor = hydrateChildren(
3993
- nextSibling(node),
4023
+ hydrateDisabledTeleport(
4024
+ node,
3994
4025
  vnode,
3995
- parentNode(node),
3996
- parentComponent,
3997
- parentSuspense,
3998
- slotScopeIds,
3999
- optimized
4026
+ targetNode,
4027
+ targetNode && nextSibling(targetNode)
4000
4028
  );
4001
- vnode.targetStart = targetNode;
4002
- vnode.targetAnchor = targetNode && nextSibling(targetNode);
4003
4029
  } else {
4004
4030
  vnode.anchor = nextSibling(node);
4005
4031
  let targetAnchor = targetNode;
@@ -4030,6 +4056,10 @@ function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScope
4030
4056
  }
4031
4057
  }
4032
4058
  updateCssVars(vnode, disabled);
4059
+ } else if (disabled) {
4060
+ if (vnode.shapeFlag & 16) {
4061
+ hydrateDisabledTeleport(node, vnode, node, nextSibling(node));
4062
+ }
4033
4063
  }
4034
4064
  return vnode.anchor && nextSibling(vnode.anchor);
4035
4065
  }
@@ -4070,7 +4100,7 @@ function useTransitionState() {
4070
4100
  isMounted: false,
4071
4101
  isLeaving: false,
4072
4102
  isUnmounting: false,
4073
- leavingVNodes: /* @__PURE__ */ new Map()
4103
+ leavingNodes: /* @__PURE__ */ new Map()
4074
4104
  };
4075
4105
  onMounted(() => {
4076
4106
  state.isMounted = true;
@@ -4102,7 +4132,7 @@ const BaseTransitionPropsValidators = {
4102
4132
  onAppearCancelled: TransitionHookValidator
4103
4133
  };
4104
4134
  const recursiveGetSubtree = (instance) => {
4105
- const subTree = instance.subTree;
4135
+ const subTree = instance.type.__vapor ? instance.block : instance.subTree;
4106
4136
  return subTree.component ? recursiveGetSubtree(subTree.component) : subTree;
4107
4137
  };
4108
4138
  const BaseTransitionImpl = {
@@ -4119,9 +4149,7 @@ const BaseTransitionImpl = {
4119
4149
  const child = findNonCommentChild(children);
4120
4150
  const rawProps = toRaw(props);
4121
4151
  const { mode } = rawProps;
4122
- if (mode && mode !== "in-out" && mode !== "out-in" && mode !== "default") {
4123
- warn$1(`invalid <transition> mode: ${mode}`);
4124
- }
4152
+ checkTransitionMode(mode);
4125
4153
  if (state.isLeaving) {
4126
4154
  return emptyPlaceholder(child);
4127
4155
  }
@@ -4141,7 +4169,7 @@ const BaseTransitionImpl = {
4141
4169
  setTransitionHooks(innerChild, enterHooks);
4142
4170
  }
4143
4171
  let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree);
4144
- if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild) && recursiveGetSubtree(instance).type !== Comment) {
4172
+ if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(oldInnerChild, innerChild) && recursiveGetSubtree(instance).type !== Comment) {
4145
4173
  let leavingHooks = resolveTransitionHooks(
4146
4174
  oldInnerChild,
4147
4175
  rawProps,
@@ -4213,15 +4241,53 @@ function findNonCommentChild(children) {
4213
4241
  }
4214
4242
  const BaseTransition = BaseTransitionImpl;
4215
4243
  function getLeavingNodesForType(state, vnode) {
4216
- const { leavingVNodes } = state;
4217
- let leavingVNodesCache = leavingVNodes.get(vnode.type);
4244
+ const { leavingNodes } = state;
4245
+ let leavingVNodesCache = leavingNodes.get(vnode.type);
4218
4246
  if (!leavingVNodesCache) {
4219
4247
  leavingVNodesCache = /* @__PURE__ */ Object.create(null);
4220
- leavingVNodes.set(vnode.type, leavingVNodesCache);
4248
+ leavingNodes.set(vnode.type, leavingVNodesCache);
4221
4249
  }
4222
4250
  return leavingVNodesCache;
4223
4251
  }
4224
4252
  function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4253
+ const key = String(vnode.key);
4254
+ const leavingVNodesCache = getLeavingNodesForType(state, vnode);
4255
+ const context = {
4256
+ setLeavingNodeCache: () => {
4257
+ leavingVNodesCache[key] = vnode;
4258
+ },
4259
+ unsetLeavingNodeCache: () => {
4260
+ if (leavingVNodesCache[key] === vnode) {
4261
+ delete leavingVNodesCache[key];
4262
+ }
4263
+ },
4264
+ earlyRemove: () => {
4265
+ const leavingVNode = leavingVNodesCache[key];
4266
+ if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {
4267
+ leavingVNode.el[leaveCbKey]();
4268
+ }
4269
+ },
4270
+ cloneHooks: (vnode2) => {
4271
+ const hooks = resolveTransitionHooks(
4272
+ vnode2,
4273
+ props,
4274
+ state,
4275
+ instance,
4276
+ postClone
4277
+ );
4278
+ if (postClone) postClone(hooks);
4279
+ return hooks;
4280
+ }
4281
+ };
4282
+ return baseResolveTransitionHooks(context, props, state, instance);
4283
+ }
4284
+ function baseResolveTransitionHooks(context, props, state, instance) {
4285
+ const {
4286
+ setLeavingNodeCache,
4287
+ unsetLeavingNodeCache,
4288
+ earlyRemove,
4289
+ cloneHooks
4290
+ } = context;
4225
4291
  const {
4226
4292
  appear,
4227
4293
  mode,
@@ -4239,8 +4305,6 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4239
4305
  onAfterAppear,
4240
4306
  onAppearCancelled
4241
4307
  } = props;
4242
- const key = String(vnode.key);
4243
- const leavingVNodesCache = getLeavingNodesForType(state, vnode);
4244
4308
  const callHook = (hook, args) => {
4245
4309
  hook && callWithAsyncErrorHandling(
4246
4310
  hook,
@@ -4276,10 +4340,7 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4276
4340
  /* cancelled */
4277
4341
  );
4278
4342
  }
4279
- const leavingVNode = leavingVNodesCache[key];
4280
- if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {
4281
- leavingVNode.el[leaveCbKey]();
4282
- }
4343
+ earlyRemove();
4283
4344
  callHook(hook, [el]);
4284
4345
  },
4285
4346
  enter(el) {
@@ -4316,7 +4377,6 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4316
4377
  }
4317
4378
  },
4318
4379
  leave(el, remove) {
4319
- const key2 = String(vnode.key);
4320
4380
  if (el[enterCbKey$1]) {
4321
4381
  el[enterCbKey$1](
4322
4382
  true
@@ -4338,27 +4398,17 @@ function resolveTransitionHooks(vnode, props, state, instance, postClone) {
4338
4398
  callHook(onAfterLeave, [el]);
4339
4399
  }
4340
4400
  el[leaveCbKey] = void 0;
4341
- if (leavingVNodesCache[key2] === vnode) {
4342
- delete leavingVNodesCache[key2];
4343
- }
4401
+ unsetLeavingNodeCache(el);
4344
4402
  };
4345
- leavingVNodesCache[key2] = vnode;
4403
+ setLeavingNodeCache(el);
4346
4404
  if (onLeave) {
4347
4405
  callAsyncHook(onLeave, [el, done]);
4348
4406
  } else {
4349
4407
  done();
4350
4408
  }
4351
4409
  },
4352
- clone(vnode2) {
4353
- const hooks2 = resolveTransitionHooks(
4354
- vnode2,
4355
- props,
4356
- state,
4357
- instance,
4358
- postClone
4359
- );
4360
- if (postClone) postClone(hooks2);
4361
- return hooks2;
4410
+ clone(node) {
4411
+ return cloneHooks(node);
4362
4412
  }
4363
4413
  };
4364
4414
  return hooks;
@@ -4392,8 +4442,15 @@ function getInnerChild$1(vnode) {
4392
4442
  }
4393
4443
  function setTransitionHooks(vnode, hooks) {
4394
4444
  if (vnode.shapeFlag & 6 && vnode.component) {
4395
- vnode.transition = hooks;
4396
- setTransitionHooks(vnode.component.subTree, hooks);
4445
+ if (vnode.type.__vapor) {
4446
+ getVaporInterface(vnode.component, vnode).setTransitionHooks(
4447
+ vnode.component,
4448
+ hooks
4449
+ );
4450
+ } else {
4451
+ vnode.transition = hooks;
4452
+ setTransitionHooks(vnode.component.subTree, hooks);
4453
+ }
4397
4454
  } else if (vnode.shapeFlag & 128) {
4398
4455
  vnode.ssContent.transition = hooks.clone(vnode.ssContent);
4399
4456
  vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);
@@ -4423,8 +4480,12 @@ function getTransitionRawChildren(children, keepComment = false, parentKey) {
4423
4480
  }
4424
4481
  return ret;
4425
4482
  }
4483
+ function checkTransitionMode(mode) {
4484
+ if (mode && mode !== "in-out" && mode !== "out-in" && mode !== "default") {
4485
+ warn$1(`invalid <transition> mode: ${mode}`);
4486
+ }
4487
+ }
4426
4488
 
4427
- /*! #__NO_SIDE_EFFECTS__ */
4428
4489
  // @__NO_SIDE_EFFECTS__
4429
4490
  function defineComponent(options, extraOptions) {
4430
4491
  return isFunction(options) ? (
@@ -4477,6 +4538,7 @@ function useTemplateRef(key) {
4477
4538
  return ret;
4478
4539
  }
4479
4540
 
4541
+ const pendingSetRefMap = /* @__PURE__ */ new WeakMap();
4480
4542
  function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4481
4543
  if (isArray(rawRef)) {
4482
4544
  rawRef.forEach(
@@ -4508,28 +4570,23 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4508
4570
  const oldRef = oldRawRef && oldRawRef.r;
4509
4571
  const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;
4510
4572
  const setupState = owner.setupState;
4511
- const rawSetupState = toRaw(setupState);
4512
- const canSetSetupRef = setupState === EMPTY_OBJ ? () => false : (key) => {
4513
- {
4514
- if (hasOwn(rawSetupState, key) && !isRef(rawSetupState[key])) {
4515
- warn$1(
4516
- `Template ref "${key}" used on a non-ref value. It will not work in the production build.`
4517
- );
4518
- }
4519
- if (knownTemplateRefs.has(rawSetupState[key])) {
4520
- return false;
4521
- }
4522
- }
4523
- return hasOwn(rawSetupState, key);
4573
+ const canSetSetupRef = createCanSetSetupRefChecker(setupState);
4574
+ const canSetRef = (ref2) => {
4575
+ return !knownTemplateRefs.has(ref2);
4524
4576
  };
4525
4577
  if (oldRef != null && oldRef !== ref) {
4578
+ invalidatePendingSetRef(oldRawRef);
4526
4579
  if (isString(oldRef)) {
4527
4580
  refs[oldRef] = null;
4528
4581
  if (canSetSetupRef(oldRef)) {
4529
4582
  setupState[oldRef] = null;
4530
4583
  }
4531
4584
  } else if (isRef(oldRef)) {
4532
- oldRef.value = null;
4585
+ if (canSetRef(oldRef)) {
4586
+ oldRef.value = null;
4587
+ }
4588
+ const oldRawRefAtom = oldRawRef;
4589
+ if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null;
4533
4590
  }
4534
4591
  }
4535
4592
  if (isFunction(ref)) {
@@ -4540,7 +4597,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4540
4597
  if (_isString || _isRef) {
4541
4598
  const doSet = () => {
4542
4599
  if (rawRef.f) {
4543
- const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : ref.value;
4600
+ const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : canSetRef(ref) || !rawRef.k ? ref.value : refs[rawRef.k];
4544
4601
  if (isUnmount) {
4545
4602
  isArray(existing) && remove(existing, refValue);
4546
4603
  } else {
@@ -4551,8 +4608,11 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4551
4608
  setupState[ref] = refs[ref];
4552
4609
  }
4553
4610
  } else {
4554
- ref.value = [refValue];
4555
- if (rawRef.k) refs[rawRef.k] = ref.value;
4611
+ const newVal = [refValue];
4612
+ if (canSetRef(ref)) {
4613
+ ref.value = newVal;
4614
+ }
4615
+ if (rawRef.k) refs[rawRef.k] = newVal;
4556
4616
  }
4557
4617
  } else if (!existing.includes(refValue)) {
4558
4618
  existing.push(refValue);
@@ -4564,15 +4624,23 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4564
4624
  setupState[ref] = value;
4565
4625
  }
4566
4626
  } else if (_isRef) {
4567
- ref.value = value;
4627
+ if (canSetRef(ref)) {
4628
+ ref.value = value;
4629
+ }
4568
4630
  if (rawRef.k) refs[rawRef.k] = value;
4569
4631
  } else {
4570
4632
  warn$1("Invalid template ref type:", ref, `(${typeof ref})`);
4571
4633
  }
4572
4634
  };
4573
4635
  if (value) {
4574
- queuePostRenderEffect(doSet, -1, parentSuspense);
4636
+ const job = () => {
4637
+ doSet();
4638
+ pendingSetRefMap.delete(rawRef);
4639
+ };
4640
+ pendingSetRefMap.set(rawRef, job);
4641
+ queuePostRenderEffect(job, -1, parentSuspense);
4575
4642
  } else {
4643
+ invalidatePendingSetRef(rawRef);
4576
4644
  doSet();
4577
4645
  }
4578
4646
  } else {
@@ -4580,6 +4648,29 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4580
4648
  }
4581
4649
  }
4582
4650
  }
4651
+ function createCanSetSetupRefChecker(setupState) {
4652
+ const rawSetupState = toRaw(setupState);
4653
+ return setupState === void 0 || setupState === EMPTY_OBJ ? NO : (key) => {
4654
+ {
4655
+ if (hasOwn(rawSetupState, key) && !isRef(rawSetupState[key])) {
4656
+ warn$1(
4657
+ `Template ref "${key}" used on a non-ref value. It will not work in the production build.`
4658
+ );
4659
+ }
4660
+ if (knownTemplateRefs.has(rawSetupState[key])) {
4661
+ return false;
4662
+ }
4663
+ }
4664
+ return hasOwn(rawSetupState, key);
4665
+ };
4666
+ }
4667
+ function invalidatePendingSetRef(rawRef) {
4668
+ const pendingSetRef = pendingSetRefMap.get(rawRef);
4669
+ if (pendingSetRef) {
4670
+ pendingSetRef.flags |= 4;
4671
+ pendingSetRefMap.delete(rawRef);
4672
+ }
4673
+ }
4583
4674
 
4584
4675
  let hasLoggedMismatchError = false;
4585
4676
  const logMismatchError = () => {
@@ -4676,7 +4767,7 @@ function createHydrationFunctions(rendererInternals) {
4676
4767
  }
4677
4768
  break;
4678
4769
  case Comment:
4679
- if (isTemplateNode(node)) {
4770
+ if (isTemplateNode$1(node)) {
4680
4771
  nextNode = nextSibling(node);
4681
4772
  replaceNode(
4682
4773
  vnode.el = node.content.firstChild,
@@ -4724,9 +4815,15 @@ function createHydrationFunctions(rendererInternals) {
4724
4815
  );
4725
4816
  }
4726
4817
  break;
4818
+ case VaporSlot:
4819
+ nextNode = getVaporInterface(parentComponent, vnode).hydrateSlot(
4820
+ vnode,
4821
+ node
4822
+ );
4823
+ break;
4727
4824
  default:
4728
4825
  if (shapeFlag & 1) {
4729
- if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) {
4826
+ if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode$1(node)) {
4730
4827
  nextNode = onMismatch();
4731
4828
  } else {
4732
4829
  nextNode = hydrateElement(
@@ -4739,9 +4836,6 @@ function createHydrationFunctions(rendererInternals) {
4739
4836
  );
4740
4837
  }
4741
4838
  } else if (shapeFlag & 6) {
4742
- if (vnode.type.__vapor) {
4743
- throw new Error("Vapor component hydration is not supported yet.");
4744
- }
4745
4839
  vnode.slotScopeIds = slotScopeIds;
4746
4840
  const container = parentNode(node);
4747
4841
  if (isFragmentStart) {
@@ -4751,15 +4845,25 @@ function createHydrationFunctions(rendererInternals) {
4751
4845
  } else {
4752
4846
  nextNode = nextSibling(node);
4753
4847
  }
4754
- mountComponent(
4755
- vnode,
4756
- container,
4757
- null,
4758
- parentComponent,
4759
- parentSuspense,
4760
- getContainerType(container),
4761
- optimized
4762
- );
4848
+ if (vnode.type.__vapor) {
4849
+ getVaporInterface(parentComponent, vnode).hydrate(
4850
+ vnode,
4851
+ node,
4852
+ container,
4853
+ null,
4854
+ parentComponent
4855
+ );
4856
+ } else {
4857
+ mountComponent(
4858
+ vnode,
4859
+ container,
4860
+ null,
4861
+ parentComponent,
4862
+ parentSuspense,
4863
+ getContainerType(container),
4864
+ optimized
4865
+ );
4866
+ }
4763
4867
  if (isAsyncWrapper(vnode) && !vnode.type.__asyncResolved) {
4764
4868
  let subTree;
4765
4869
  if (isFragmentStart) {
@@ -4816,7 +4920,7 @@ function createHydrationFunctions(rendererInternals) {
4816
4920
  invokeDirectiveHook(vnode, null, parentComponent, "created");
4817
4921
  }
4818
4922
  let needCallTransitionHooks = false;
4819
- if (isTemplateNode(el)) {
4923
+ if (isTemplateNode$1(el)) {
4820
4924
  needCallTransitionHooks = needTransition(
4821
4925
  null,
4822
4926
  // no need check parentSuspense in hydration
@@ -4844,7 +4948,7 @@ function createHydrationFunctions(rendererInternals) {
4844
4948
  );
4845
4949
  let hasWarned = false;
4846
4950
  while (next) {
4847
- if (!isMismatchAllowed(el, 1 /* CHILDREN */)) {
4951
+ if (!isMismatchAllowed(el, 1)) {
4848
4952
  if (!hasWarned) {
4849
4953
  warn$1(
4850
4954
  `Hydration children mismatch on`,
@@ -4865,14 +4969,16 @@ Server rendered element contains more child nodes than client vdom.`
4865
4969
  if (clientText[0] === "\n" && (el.tagName === "PRE" || el.tagName === "TEXTAREA")) {
4866
4970
  clientText = clientText.slice(1);
4867
4971
  }
4868
- if (el.textContent !== clientText) {
4869
- if (!isMismatchAllowed(el, 0 /* TEXT */)) {
4972
+ const { textContent } = el;
4973
+ if (textContent !== clientText && // innerHTML normalize \r\n or \r into a single \n in the DOM
4974
+ textContent !== clientText.replace(/\r\n|\r/g, "\n")) {
4975
+ if (!isMismatchAllowed(el, 0)) {
4870
4976
  warn$1(
4871
4977
  `Hydration text content mismatch on`,
4872
4978
  el,
4873
4979
  `
4874
- - rendered on server: ${el.textContent}
4875
- - expected on client: ${vnode.children}`
4980
+ - rendered on server: ${textContent}
4981
+ - expected on client: ${clientText}`
4876
4982
  );
4877
4983
  logMismatchError();
4878
4984
  }
@@ -4948,7 +5054,7 @@ Server rendered element contains more child nodes than client vdom.`
4948
5054
  } else if (isText && !vnode.children) {
4949
5055
  insert(vnode.el = createText(""), container);
4950
5056
  } else {
4951
- if (!isMismatchAllowed(container, 1 /* CHILDREN */)) {
5057
+ if (!isMismatchAllowed(container, 1)) {
4952
5058
  if (!hasWarned) {
4953
5059
  warn$1(
4954
5060
  `Hydration children mismatch on`,
@@ -4998,7 +5104,7 @@ Server rendered element contains fewer child nodes than client vdom.`
4998
5104
  }
4999
5105
  };
5000
5106
  const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {
5001
- if (!isMismatchAllowed(node.parentElement, 1 /* CHILDREN */)) {
5107
+ if (!isMismatchAllowed(node.parentElement, 1)) {
5002
5108
  warn$1(
5003
5109
  `Hydration node mismatch:
5004
5110
  - rendered on server:`,
@@ -5071,11 +5177,11 @@ Server rendered element contains fewer child nodes than client vdom.`
5071
5177
  parent = parent.parent;
5072
5178
  }
5073
5179
  };
5074
- const isTemplateNode = (node) => {
5075
- return node.nodeType === 1 && node.tagName === "TEMPLATE";
5076
- };
5077
5180
  return [hydrate, hydrateNode];
5078
5181
  }
5182
+ const isTemplateNode$1 = (node) => {
5183
+ return node.nodeType === 1 && node.tagName === "TEMPLATE";
5184
+ };
5079
5185
  function propHasMismatch(el, key, clientValue, vnode, instance) {
5080
5186
  let mismatchType;
5081
5187
  let mismatchKey;
@@ -5090,7 +5196,7 @@ function propHasMismatch(el, key, clientValue, vnode, instance) {
5090
5196
  }
5091
5197
  expected = normalizeClass(clientValue);
5092
5198
  if (!isSetEqual(toClassSet(actual || ""), toClassSet(expected))) {
5093
- mismatchType = 2 /* CLASS */;
5199
+ mismatchType = 2;
5094
5200
  mismatchKey = `class`;
5095
5201
  }
5096
5202
  } else if (key === "style") {
@@ -5109,31 +5215,43 @@ function propHasMismatch(el, key, clientValue, vnode, instance) {
5109
5215
  resolveCssVars(instance, vnode, expectedMap);
5110
5216
  }
5111
5217
  if (!isMapEqual(actualMap, expectedMap)) {
5112
- mismatchType = 3 /* STYLE */;
5218
+ mismatchType = 3;
5113
5219
  mismatchKey = "style";
5114
5220
  }
5115
- } else if (el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key))) {
5116
- if (isBooleanAttr(key)) {
5117
- actual = el.hasAttribute(key);
5118
- expected = includeBooleanAttr(clientValue);
5119
- } else if (clientValue == null) {
5120
- actual = el.hasAttribute(key);
5121
- expected = false;
5122
- } else {
5123
- if (el.hasAttribute(key)) {
5124
- actual = el.getAttribute(key);
5125
- } else if (key === "value" && el.tagName === "TEXTAREA") {
5126
- actual = el.value;
5127
- } else {
5128
- actual = false;
5129
- }
5130
- expected = isRenderableAttrValue(clientValue) ? String(clientValue) : false;
5131
- }
5221
+ } else if (isValidHtmlOrSvgAttribute(el, key)) {
5222
+ ({ actual, expected } = getAttributeMismatch(el, key, clientValue));
5132
5223
  if (actual !== expected) {
5133
- mismatchType = 4 /* ATTRIBUTE */;
5224
+ mismatchType = 4;
5134
5225
  mismatchKey = key;
5135
5226
  }
5136
5227
  }
5228
+ return warnPropMismatch(el, mismatchKey, mismatchType, actual, expected);
5229
+ }
5230
+ function getAttributeMismatch(el, key, clientValue) {
5231
+ let actual;
5232
+ let expected;
5233
+ if (isBooleanAttr(key)) {
5234
+ actual = el.hasAttribute(key);
5235
+ expected = includeBooleanAttr(clientValue);
5236
+ } else if (clientValue == null) {
5237
+ actual = el.hasAttribute(key);
5238
+ expected = false;
5239
+ } else {
5240
+ if (el.hasAttribute(key)) {
5241
+ actual = el.getAttribute(key);
5242
+ } else if (key === "value" && el.tagName === "TEXTAREA") {
5243
+ actual = el.value;
5244
+ } else {
5245
+ actual = false;
5246
+ }
5247
+ expected = isRenderableAttrValue(clientValue) ? String(clientValue) : false;
5248
+ }
5249
+ return { actual, expected };
5250
+ }
5251
+ function isValidHtmlOrSvgAttribute(el, key) {
5252
+ return el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key));
5253
+ }
5254
+ function warnPropMismatch(el, mismatchKey, mismatchType, actual, expected) {
5137
5255
  if (mismatchType != null && !isMismatchAllowed(el, mismatchType)) {
5138
5256
  const format = (v) => v === false ? `(not rendered)` : `${mismatchKey}="${v}"`;
5139
5257
  const preSegment = `Hydration ${MismatchTypeString[mismatchType]} mismatch on`;
@@ -5205,14 +5323,14 @@ function resolveCssVars(instance, vnode, expectedMap) {
5205
5323
  }
5206
5324
  const allowMismatchAttr = "data-allow-mismatch";
5207
5325
  const MismatchTypeString = {
5208
- [0 /* TEXT */]: "text",
5209
- [1 /* CHILDREN */]: "children",
5210
- [2 /* CLASS */]: "class",
5211
- [3 /* STYLE */]: "style",
5212
- [4 /* ATTRIBUTE */]: "attribute"
5326
+ [0]: "text",
5327
+ [1]: "children",
5328
+ [2]: "class",
5329
+ [3]: "style",
5330
+ [4]: "attribute"
5213
5331
  };
5214
5332
  function isMismatchAllowed(el, allowedType) {
5215
- if (allowedType === 0 /* TEXT */ || allowedType === 1 /* CHILDREN */) {
5333
+ if (allowedType === 0 || allowedType === 1) {
5216
5334
  while (el && !el.hasAttribute(allowMismatchAttr)) {
5217
5335
  el = el.parentElement;
5218
5336
  }
@@ -5224,7 +5342,7 @@ function isMismatchAllowed(el, allowedType) {
5224
5342
  return true;
5225
5343
  } else {
5226
5344
  const list = allowedAttr.split(",");
5227
- if (allowedType === 0 /* TEXT */ && list.includes("children")) {
5345
+ if (allowedType === 0 && list.includes("children")) {
5228
5346
  return true;
5229
5347
  }
5230
5348
  return list.includes(MismatchTypeString[allowedType]);
@@ -5281,7 +5399,9 @@ const hydrateOnInteraction = (interactions = []) => (hydrate, forEach) => {
5281
5399
  hasHydrated = true;
5282
5400
  teardown();
5283
5401
  hydrate();
5284
- e.target.dispatchEvent(new e.constructor(e.type, e));
5402
+ if (!(`$evt${e.type}` in e.target)) {
5403
+ e.target.dispatchEvent(new e.constructor(e.type, e));
5404
+ }
5285
5405
  }
5286
5406
  };
5287
5407
  const teardown = () => {
@@ -5323,104 +5443,46 @@ function forEachElement(node, cb) {
5323
5443
  }
5324
5444
 
5325
5445
  const isAsyncWrapper = (i) => !!i.type.__asyncLoader;
5326
- /*! #__NO_SIDE_EFFECTS__ */
5327
5446
  // @__NO_SIDE_EFFECTS__
5328
5447
  function defineAsyncComponent(source) {
5329
- if (isFunction(source)) {
5330
- source = { loader: source };
5331
- }
5332
5448
  const {
5333
- loader,
5334
- loadingComponent,
5335
- errorComponent,
5336
- delay = 200,
5337
- hydrate: hydrateStrategy,
5338
- timeout,
5339
- // undefined = never times out
5340
- suspensible = true,
5341
- onError: userOnError
5342
- } = source;
5343
- let pendingRequest = null;
5344
- let resolvedComp;
5345
- let retries = 0;
5346
- const retry = () => {
5347
- retries++;
5348
- pendingRequest = null;
5349
- return load();
5350
- };
5351
- const load = () => {
5352
- let thisRequest;
5353
- return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {
5354
- err = err instanceof Error ? err : new Error(String(err));
5355
- if (userOnError) {
5356
- return new Promise((resolve, reject) => {
5357
- const userRetry = () => resolve(retry());
5358
- const userFail = () => reject(err);
5359
- userOnError(err, userRetry, userFail, retries + 1);
5360
- });
5361
- } else {
5362
- throw err;
5363
- }
5364
- }).then((comp) => {
5365
- if (thisRequest !== pendingRequest && pendingRequest) {
5366
- return pendingRequest;
5367
- }
5368
- if (!comp) {
5369
- warn$1(
5370
- `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`
5371
- );
5372
- }
5373
- if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) {
5374
- comp = comp.default;
5375
- }
5376
- if (comp && !isObject(comp) && !isFunction(comp)) {
5377
- throw new Error(`Invalid async component load result: ${comp}`);
5378
- }
5379
- resolvedComp = comp;
5380
- return comp;
5381
- }));
5382
- };
5449
+ load,
5450
+ getResolvedComp,
5451
+ setPendingRequest,
5452
+ source: {
5453
+ loadingComponent,
5454
+ errorComponent,
5455
+ delay,
5456
+ hydrate: hydrateStrategy,
5457
+ timeout,
5458
+ suspensible = true
5459
+ }
5460
+ } = createAsyncComponentContext(source);
5383
5461
  return defineComponent({
5384
5462
  name: "AsyncComponentWrapper",
5385
5463
  __asyncLoader: load,
5386
5464
  __asyncHydrate(el, instance, hydrate) {
5387
- let patched = false;
5388
- const doHydrate = hydrateStrategy ? () => {
5389
- const performHydrate = () => {
5390
- if (patched) {
5391
- warn$1(
5392
- `Skipping lazy hydration for component '${getComponentName(resolvedComp)}': it was updated before lazy hydration performed.`
5393
- );
5394
- return;
5395
- }
5396
- hydrate();
5397
- };
5398
- const teardown = hydrateStrategy(
5399
- performHydrate,
5400
- (cb) => forEachElement(el, cb)
5401
- );
5402
- if (teardown) {
5403
- (instance.bum || (instance.bum = [])).push(teardown);
5404
- }
5405
- (instance.u || (instance.u = [])).push(() => patched = true);
5406
- } : hydrate;
5407
- if (resolvedComp) {
5408
- doHydrate();
5409
- } else {
5410
- load().then(() => !instance.isUnmounted && doHydrate());
5411
- }
5465
+ performAsyncHydrate(
5466
+ el,
5467
+ instance,
5468
+ hydrate,
5469
+ getResolvedComp,
5470
+ load,
5471
+ hydrateStrategy
5472
+ );
5412
5473
  },
5413
5474
  get __asyncResolved() {
5414
- return resolvedComp;
5475
+ return getResolvedComp();
5415
5476
  },
5416
5477
  setup() {
5417
5478
  const instance = currentInstance;
5418
5479
  markAsyncBoundary(instance);
5480
+ let resolvedComp = getResolvedComp();
5419
5481
  if (resolvedComp) {
5420
5482
  return () => createInnerComp(resolvedComp, instance);
5421
5483
  }
5422
5484
  const onError = (err) => {
5423
- pendingRequest = null;
5485
+ setPendingRequest(null);
5424
5486
  handleError(
5425
5487
  err,
5426
5488
  instance,
@@ -5438,25 +5500,11 @@ function defineAsyncComponent(source) {
5438
5500
  }) : null;
5439
5501
  });
5440
5502
  }
5441
- const loaded = ref(false);
5442
- const error = ref();
5443
- const delayed = ref(!!delay);
5444
- if (delay) {
5445
- setTimeout(() => {
5446
- delayed.value = false;
5447
- }, delay);
5448
- }
5449
- if (timeout != null) {
5450
- setTimeout(() => {
5451
- if (!loaded.value && !error.value) {
5452
- const err = new Error(
5453
- `Async component timed out after ${timeout}ms.`
5454
- );
5455
- onError(err);
5456
- error.value = err;
5457
- }
5458
- }, timeout);
5459
- }
5503
+ const { loaded, error, delayed } = useAsyncComponentState(
5504
+ delay,
5505
+ timeout,
5506
+ onError
5507
+ );
5460
5508
  load().then(() => {
5461
5509
  loaded.value = true;
5462
5510
  if (instance.parent && instance.parent.vnode && isKeepAlive(instance.parent.vnode)) {
@@ -5467,6 +5515,7 @@ function defineAsyncComponent(source) {
5467
5515
  error.value = err;
5468
5516
  });
5469
5517
  return () => {
5518
+ resolvedComp = getResolvedComp();
5470
5519
  if (loaded.value && resolvedComp) {
5471
5520
  return createInnerComp(resolvedComp, instance);
5472
5521
  } else if (error.value && errorComponent) {
@@ -5474,7 +5523,10 @@ function defineAsyncComponent(source) {
5474
5523
  error: error.value
5475
5524
  });
5476
5525
  } else if (loadingComponent && !delayed.value) {
5477
- return createVNode(loadingComponent);
5526
+ return createInnerComp(
5527
+ loadingComponent,
5528
+ instance
5529
+ );
5478
5530
  }
5479
5531
  };
5480
5532
  }
@@ -5488,6 +5540,108 @@ function createInnerComp(comp, parent) {
5488
5540
  delete parent.vnode.ce;
5489
5541
  return vnode;
5490
5542
  }
5543
+ function createAsyncComponentContext(source) {
5544
+ if (isFunction(source)) {
5545
+ source = { loader: source };
5546
+ }
5547
+ const { loader, onError: userOnError } = source;
5548
+ let pendingRequest = null;
5549
+ let resolvedComp;
5550
+ let retries = 0;
5551
+ const retry = () => {
5552
+ retries++;
5553
+ pendingRequest = null;
5554
+ return load();
5555
+ };
5556
+ const load = () => {
5557
+ let thisRequest;
5558
+ return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {
5559
+ err = err instanceof Error ? err : new Error(String(err));
5560
+ if (userOnError) {
5561
+ return new Promise((resolve, reject) => {
5562
+ const userRetry = () => resolve(retry());
5563
+ const userFail = () => reject(err);
5564
+ userOnError(err, userRetry, userFail, retries + 1);
5565
+ });
5566
+ } else {
5567
+ throw err;
5568
+ }
5569
+ }).then((comp) => {
5570
+ if (thisRequest !== pendingRequest && pendingRequest) {
5571
+ return pendingRequest;
5572
+ }
5573
+ if (!comp) {
5574
+ warn$1(
5575
+ `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`
5576
+ );
5577
+ }
5578
+ if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) {
5579
+ comp = comp.default;
5580
+ }
5581
+ if (comp && !isObject(comp) && !isFunction(comp)) {
5582
+ throw new Error(`Invalid async component load result: ${comp}`);
5583
+ }
5584
+ resolvedComp = comp;
5585
+ return comp;
5586
+ }));
5587
+ };
5588
+ return {
5589
+ load,
5590
+ source,
5591
+ getResolvedComp: () => resolvedComp,
5592
+ setPendingRequest: (request) => pendingRequest = request
5593
+ };
5594
+ }
5595
+ const useAsyncComponentState = (delay, timeout, onError) => {
5596
+ const loaded = ref(false);
5597
+ const error = ref();
5598
+ const delayed = ref(!!delay);
5599
+ if (delay) {
5600
+ setTimeout(() => {
5601
+ delayed.value = false;
5602
+ }, delay);
5603
+ }
5604
+ if (timeout != null) {
5605
+ setTimeout(() => {
5606
+ if (!loaded.value && !error.value) {
5607
+ const err = new Error(`Async component timed out after ${timeout}ms.`);
5608
+ onError(err);
5609
+ error.value = err;
5610
+ }
5611
+ }, timeout);
5612
+ }
5613
+ return { loaded, error, delayed };
5614
+ };
5615
+ function performAsyncHydrate(el, instance, hydrate, getResolvedComp, load, hydrateStrategy) {
5616
+ let patched = false;
5617
+ (instance.bu || (instance.bu = [])).push(() => patched = true);
5618
+ const performHydrate = () => {
5619
+ if (patched) {
5620
+ {
5621
+ const resolvedComp = getResolvedComp();
5622
+ warn$1(
5623
+ `Skipping lazy hydration for component '${getComponentName(resolvedComp) || resolvedComp.__file}': it was updated before lazy hydration performed.`
5624
+ );
5625
+ }
5626
+ return;
5627
+ }
5628
+ hydrate();
5629
+ };
5630
+ const doHydrate = hydrateStrategy ? () => {
5631
+ const teardown = hydrateStrategy(
5632
+ performHydrate,
5633
+ (cb) => forEachElement(el, cb)
5634
+ );
5635
+ if (teardown) {
5636
+ (instance.bum || (instance.bum = [])).push(teardown);
5637
+ }
5638
+ } : performHydrate;
5639
+ if (getResolvedComp()) {
5640
+ doHydrate();
5641
+ } else {
5642
+ load().then(() => !instance.isUnmounted && doHydrate());
5643
+ }
5644
+ }
5491
5645
 
5492
5646
  const isKeepAlive = (vnode) => vnode.type.__isKeepAlive;
5493
5647
  const KeepAliveImpl = {
@@ -5517,86 +5671,37 @@ const KeepAliveImpl = {
5517
5671
  keepAliveInstance.__v_cache = cache;
5518
5672
  }
5519
5673
  const parentSuspense = keepAliveInstance.suspense;
5674
+ const { renderer } = sharedContext;
5520
5675
  const {
5521
- renderer: {
5522
- p: patch,
5523
- m: move,
5524
- um: _unmount,
5525
- o: { createElement }
5526
- }
5527
- } = sharedContext;
5676
+ um: _unmount,
5677
+ o: { createElement }
5678
+ } = renderer;
5528
5679
  const storageContainer = createElement("div");
5680
+ sharedContext.getStorageContainer = () => storageContainer;
5681
+ sharedContext.getCachedComponent = (vnode) => {
5682
+ const key = vnode.key == null ? vnode.type : vnode.key;
5683
+ return cache.get(key);
5684
+ };
5529
5685
  sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {
5530
- const instance = vnode.component;
5531
- move(
5686
+ activate(
5532
5687
  vnode,
5533
5688
  container,
5534
5689
  anchor,
5535
- 0,
5690
+ renderer,
5536
5691
  keepAliveInstance,
5537
- parentSuspense
5538
- );
5539
- patch(
5540
- instance.vnode,
5541
- vnode,
5542
- container,
5543
- anchor,
5544
- instance,
5545
5692
  parentSuspense,
5546
5693
  namespace,
5547
- vnode.slotScopeIds,
5548
5694
  optimized
5549
5695
  );
5550
- queuePostRenderEffect(
5551
- () => {
5552
- instance.isDeactivated = false;
5553
- if (instance.a) {
5554
- invokeArrayFns(instance.a);
5555
- }
5556
- const vnodeHook = vnode.props && vnode.props.onVnodeMounted;
5557
- if (vnodeHook) {
5558
- invokeVNodeHook(vnodeHook, instance.parent, vnode);
5559
- }
5560
- },
5561
- void 0,
5562
- parentSuspense
5563
- );
5564
- {
5565
- devtoolsComponentAdded(instance);
5566
- }
5567
5696
  };
5568
5697
  sharedContext.deactivate = (vnode) => {
5569
- const instance = vnode.component;
5570
- invalidateMount(instance.m);
5571
- invalidateMount(instance.a);
5572
- move(
5698
+ deactivate(
5573
5699
  vnode,
5574
5700
  storageContainer,
5575
- null,
5576
- 1,
5701
+ renderer,
5577
5702
  keepAliveInstance,
5578
5703
  parentSuspense
5579
5704
  );
5580
- queuePostRenderEffect(
5581
- () => {
5582
- if (instance.da) {
5583
- invokeArrayFns(instance.da);
5584
- }
5585
- const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;
5586
- if (vnodeHook) {
5587
- invokeVNodeHook(vnodeHook, instance.parent, vnode);
5588
- }
5589
- instance.isDeactivated = true;
5590
- },
5591
- void 0,
5592
- parentSuspense
5593
- );
5594
- {
5595
- devtoolsComponentAdded(instance);
5596
- }
5597
- {
5598
- instance.__keepAliveStorageContainer = storageContainer;
5599
- }
5600
5705
  };
5601
5706
  function unmount(vnode) {
5602
5707
  resetShapeFlag(vnode);
@@ -5747,7 +5852,7 @@ function onActivated(hook, target) {
5747
5852
  function onDeactivated(hook, target) {
5748
5853
  registerKeepAliveHook(hook, "da", target);
5749
5854
  }
5750
- function registerKeepAliveHook(hook, type, target = getCurrentInstance()) {
5855
+ function registerKeepAliveHook(hook, type, target = getCurrentGenericInstance()) {
5751
5856
  const wrappedHook = hook.__wdc || (hook.__wdc = () => {
5752
5857
  let current = target;
5753
5858
  while (current) {
@@ -5761,32 +5866,98 @@ function registerKeepAliveHook(hook, type, target = getCurrentInstance()) {
5761
5866
  injectHook(type, wrappedHook, target);
5762
5867
  if (target) {
5763
5868
  let current = target.parent;
5764
- while (current && current.parent && current.parent.vnode) {
5765
- if (isKeepAlive(current.parent.vnode)) {
5869
+ while (current && current.parent) {
5870
+ let parent = current.parent;
5871
+ if (isKeepAlive(parent.vapor ? parent : parent.vnode)) {
5766
5872
  injectToKeepAliveRoot(wrappedHook, type, target, current);
5767
5873
  }
5768
5874
  current = current.parent;
5769
5875
  }
5770
5876
  }
5771
5877
  }
5772
- function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {
5773
- const injected = injectHook(
5774
- type,
5775
- hook,
5776
- keepAliveRoot,
5777
- true
5778
- /* prepend */
5878
+ function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {
5879
+ const injected = injectHook(
5880
+ type,
5881
+ hook,
5882
+ keepAliveRoot,
5883
+ true
5884
+ /* prepend */
5885
+ );
5886
+ onUnmounted(() => {
5887
+ remove(keepAliveRoot[type], injected);
5888
+ }, target);
5889
+ }
5890
+ function resetShapeFlag(vnode) {
5891
+ vnode.shapeFlag &= -257;
5892
+ vnode.shapeFlag &= -513;
5893
+ }
5894
+ function getInnerChild(vnode) {
5895
+ return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;
5896
+ }
5897
+ function activate(vnode, container, anchor, { p: patch, m: move }, parentComponent, parentSuspense, namespace, optimized) {
5898
+ const instance = vnode.component;
5899
+ move(
5900
+ vnode,
5901
+ container,
5902
+ anchor,
5903
+ 0,
5904
+ parentComponent,
5905
+ parentSuspense
5906
+ );
5907
+ patch(
5908
+ instance.vnode,
5909
+ vnode,
5910
+ container,
5911
+ anchor,
5912
+ instance,
5913
+ parentSuspense,
5914
+ namespace,
5915
+ vnode.slotScopeIds,
5916
+ optimized
5917
+ );
5918
+ queuePostRenderEffect(
5919
+ () => {
5920
+ instance.isDeactivated = false;
5921
+ if (instance.a) {
5922
+ invokeArrayFns(instance.a);
5923
+ }
5924
+ const vnodeHook = vnode.props && vnode.props.onVnodeMounted;
5925
+ if (vnodeHook) {
5926
+ invokeVNodeHook(vnodeHook, instance.parent, vnode);
5927
+ }
5928
+ },
5929
+ void 0,
5930
+ parentSuspense
5931
+ );
5932
+ {
5933
+ devtoolsComponentAdded(instance);
5934
+ }
5935
+ }
5936
+ function deactivate(vnode, container, { m: move }, parentComponent, parentSuspense) {
5937
+ const instance = vnode.component;
5938
+ invalidateMount(instance.m);
5939
+ invalidateMount(instance.a);
5940
+ move(vnode, container, null, 1, parentComponent, parentSuspense);
5941
+ queuePostRenderEffect(
5942
+ () => {
5943
+ if (instance.da) {
5944
+ invokeArrayFns(instance.da);
5945
+ }
5946
+ const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;
5947
+ if (vnodeHook) {
5948
+ invokeVNodeHook(vnodeHook, instance.parent, vnode);
5949
+ }
5950
+ instance.isDeactivated = true;
5951
+ },
5952
+ void 0,
5953
+ parentSuspense
5779
5954
  );
5780
- onUnmounted(() => {
5781
- remove(keepAliveRoot[type], injected);
5782
- }, target);
5783
- }
5784
- function resetShapeFlag(vnode) {
5785
- vnode.shapeFlag &= -257;
5786
- vnode.shapeFlag &= -513;
5787
- }
5788
- function getInnerChild(vnode) {
5789
- return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;
5955
+ {
5956
+ devtoolsComponentAdded(instance);
5957
+ }
5958
+ {
5959
+ instance.__keepAliveStorageContainer = container;
5960
+ }
5790
5961
  }
5791
5962
 
5792
5963
  function injectHook(type, hook, target = currentInstance, prepend = false) {
@@ -6263,12 +6434,13 @@ function renderSlot(slots, name, props = {}, fallback, noSlotted) {
6263
6434
  return ret;
6264
6435
  }
6265
6436
  if (currentRenderingInstance && (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce)) {
6437
+ const hasProps = Object.keys(props).length > 0;
6266
6438
  if (name !== "default") props.name = name;
6267
6439
  return openBlock(), createBlock(
6268
6440
  Fragment,
6269
6441
  null,
6270
6442
  [createVNode("slot", props, fallback && fallback())],
6271
- 64
6443
+ hasProps ? -2 : 64
6272
6444
  );
6273
6445
  }
6274
6446
  if (slot && slot.length > 1) {
@@ -6282,6 +6454,7 @@ function renderSlot(slots, name, props = {}, fallback, noSlotted) {
6282
6454
  }
6283
6455
  openBlock();
6284
6456
  const validSlotContent = slot && ensureValidVNode(slot(props));
6457
+ ensureVaporSlotFallback(validSlotContent, fallback);
6285
6458
  const slotKey = props.key || // slot content array of a dynamic conditional slot may have a branch
6286
6459
  // key attached in the `createSlots` helper, respect that
6287
6460
  validSlotContent && validSlotContent.key;
@@ -6311,6 +6484,14 @@ function ensureValidVNode(vnodes) {
6311
6484
  return true;
6312
6485
  }) ? vnodes : null;
6313
6486
  }
6487
+ function ensureVaporSlotFallback(vnodes, fallback) {
6488
+ let vaporSlot;
6489
+ if (vnodes && vnodes.length === 1 && isVNode(vnodes[0]) && (vaporSlot = vnodes[0].vs)) {
6490
+ if (!vaporSlot.fallback && fallback) {
6491
+ vaporSlot.fallback = fallback;
6492
+ }
6493
+ }
6494
+ }
6314
6495
 
6315
6496
  function toHandlers(obj, preserveCaseIfNecessary) {
6316
6497
  const ret = {};
@@ -6372,7 +6553,7 @@ function legacyRenderSlot(instance, name, fallback, props, bindObject) {
6372
6553
  }
6373
6554
  return renderSlot(instance.slots, name, props, fallback && (() => fallback));
6374
6555
  }
6375
- function legacyresolveScopedSlots(fns, raw, hasDynamicKeys) {
6556
+ function legacyResolveScopedSlots(fns, raw, hasDynamicKeys) {
6376
6557
  return createSlots(
6377
6558
  raw || { $stable: !hasDynamicKeys },
6378
6559
  mapKeyToName(fns)
@@ -6539,7 +6720,7 @@ function installCompatInstanceProperties(map) {
6539
6720
  _b: () => legacyBindObjectProps,
6540
6721
  _v: () => createTextVNode,
6541
6722
  _e: () => createCommentVNode,
6542
- _u: () => legacyresolveScopedSlots,
6723
+ _u: () => legacyResolveScopedSlots,
6543
6724
  _g: () => legacyBindObjectListeners,
6544
6725
  _d: () => legacyBindDynamicKeys,
6545
6726
  _p: () => legacyPrependModifier
@@ -6711,10 +6892,10 @@ const PublicInstanceProxyHandlers = {
6711
6892
  return true;
6712
6893
  },
6713
6894
  has({
6714
- _: { data, setupState, accessCache, ctx, appContext, propsOptions }
6895
+ _: { data, setupState, accessCache, ctx, appContext, propsOptions, type }
6715
6896
  }, key) {
6716
- let normalizedProps;
6717
- return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key);
6897
+ let normalizedProps, cssModules;
6898
+ return !!(accessCache[key] || data !== EMPTY_OBJ && key[0] !== "$" && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key) || (cssModules = type.__cssModules) && cssModules[key]);
6718
6899
  },
6719
6900
  defineProperty(target, key, descriptor) {
6720
6901
  if (descriptor.get != null) {
@@ -6866,15 +7047,15 @@ function withDefaults(props, defaults) {
6866
7047
  return null;
6867
7048
  }
6868
7049
  function useSlots() {
6869
- return getContext().slots;
7050
+ return getContext("useSlots").slots;
6870
7051
  }
6871
7052
  function useAttrs() {
6872
- return getContext().attrs;
7053
+ return getContext("useAttrs").attrs;
6873
7054
  }
6874
- function getContext() {
7055
+ function getContext(calledFunctionName) {
6875
7056
  const i = getCurrentGenericInstance();
6876
7057
  if (!i) {
6877
- warn$1(`useContext() called without active instance.`);
7058
+ warn$1(`${calledFunctionName}() called without active instance.`);
6878
7059
  }
6879
7060
  if (i.vapor) {
6880
7061
  return i;
@@ -7138,7 +7319,8 @@ function applyOptions(instance) {
7138
7319
  expose.forEach((key) => {
7139
7320
  Object.defineProperty(exposed, key, {
7140
7321
  get: () => publicThis[key],
7141
- set: (val) => publicThis[key] = val
7322
+ set: (val) => publicThis[key] = val,
7323
+ enumerable: true
7142
7324
  });
7143
7325
  });
7144
7326
  } else if (!instance.exposed) {
@@ -7464,7 +7646,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
7464
7646
  return vm;
7465
7647
  }
7466
7648
  }
7467
- Vue.version = `2.6.14-compat:${"3.6.0-alpha.2"}`;
7649
+ Vue.version = `2.6.14-compat:${"3.6.0-alpha.4"}`;
7468
7650
  Vue.config = singletonApp.config;
7469
7651
  Vue.use = (plugin, ...options) => {
7470
7652
  if (plugin && isFunction(plugin.install)) {
@@ -7478,22 +7660,22 @@ function createCompatVue$1(createApp, createSingletonApp) {
7478
7660
  singletonApp.mixin(m);
7479
7661
  return Vue;
7480
7662
  };
7481
- Vue.component = (name, comp) => {
7663
+ Vue.component = ((name, comp) => {
7482
7664
  if (comp) {
7483
7665
  singletonApp.component(name, comp);
7484
7666
  return Vue;
7485
7667
  } else {
7486
7668
  return singletonApp.component(name);
7487
7669
  }
7488
- };
7489
- Vue.directive = (name, dir) => {
7670
+ });
7671
+ Vue.directive = ((name, dir) => {
7490
7672
  if (dir) {
7491
7673
  singletonApp.directive(name, dir);
7492
7674
  return Vue;
7493
7675
  } else {
7494
7676
  return singletonApp.directive(name);
7495
7677
  }
7496
- };
7678
+ });
7497
7679
  Vue.options = { _base: Vue };
7498
7680
  let cid = 1;
7499
7681
  Vue.cid = cid;
@@ -7556,14 +7738,14 @@ function createCompatVue$1(createApp, createSingletonApp) {
7556
7738
  assertCompatEnabled("GLOBAL_OBSERVABLE", null);
7557
7739
  return reactive(target);
7558
7740
  };
7559
- Vue.filter = (name, filter) => {
7741
+ Vue.filter = ((name, filter) => {
7560
7742
  if (filter) {
7561
7743
  singletonApp.filter(name, filter);
7562
7744
  return Vue;
7563
7745
  } else {
7564
7746
  return singletonApp.filter(name);
7565
7747
  }
7566
- };
7748
+ });
7567
7749
  const util = {
7568
7750
  warn: warn$1 ,
7569
7751
  extend,
@@ -7722,7 +7904,7 @@ function installCompatMount(app, context, render) {
7722
7904
  {
7723
7905
  for (let i = 0; i < container.attributes.length; i++) {
7724
7906
  const attr = container.attributes[i];
7725
- if (attr.name !== "v-cloak" && /^(v-|:|@)/.test(attr.name)) {
7907
+ if (attr.name !== "v-cloak" && /^(?:v-|:|@)/.test(attr.name)) {
7726
7908
  warnDeprecation$1("GLOBAL_MOUNT_CONTAINER", null);
7727
7909
  break;
7728
7910
  }
@@ -8556,7 +8738,7 @@ function isBoolean(...args) {
8556
8738
  return args.some((elem) => elem.toLowerCase() === "boolean");
8557
8739
  }
8558
8740
 
8559
- const isInternalKey = (key) => key[0] === "_" || key === "$stable";
8741
+ const isInternalKey = (key) => key === "_" || key === "_ctx" || key === "$stable";
8560
8742
  const normalizeSlotValue = (value) => isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)];
8561
8743
  const normalizeSlot = (key, rawSlot, ctx) => {
8562
8744
  if (rawSlot._n) {
@@ -8610,8 +8792,6 @@ const assignSlots = (slots, children, optimized) => {
8610
8792
  const initSlots = (instance, children, optimized) => {
8611
8793
  const slots = instance.slots = createInternalObject();
8612
8794
  if (instance.vnode.shapeFlag & 32) {
8613
- const cacheIndexes = children.__;
8614
- if (cacheIndexes) def(slots, "__", cacheIndexes, true);
8615
8795
  const type = children._;
8616
8796
  if (type) {
8617
8797
  assignSlots(slots, children, optimized);
@@ -8675,12 +8855,10 @@ function endMeasure(instance, type) {
8675
8855
  if (instance.appContext.config.performance && isSupported()) {
8676
8856
  const startTag = `vue-${type}-${instance.uid}`;
8677
8857
  const endTag = startTag + `:end`;
8858
+ const measureName = `<${formatComponentName(instance, instance.type)}> ${type}`;
8678
8859
  perf.mark(endTag);
8679
- perf.measure(
8680
- `<${formatComponentName(instance, instance.type)}> ${type}`,
8681
- startTag,
8682
- endTag
8683
- );
8860
+ perf.measure(measureName, startTag, endTag);
8861
+ perf.clearMeasures(measureName);
8684
8862
  perf.clearMarks(startTag);
8685
8863
  perf.clearMarks(endTag);
8686
8864
  }
@@ -8919,15 +9097,25 @@ function baseCreateRenderer(options, createHydrationFns) {
8919
9097
  optimized
8920
9098
  );
8921
9099
  } else {
8922
- patchElement(
8923
- n1,
8924
- n2,
8925
- parentComponent,
8926
- parentSuspense,
8927
- namespace,
8928
- slotScopeIds,
8929
- optimized
8930
- );
9100
+ const customElement = !!(n1.el && n1.el._isVueCE) ? n1.el : null;
9101
+ try {
9102
+ if (customElement) {
9103
+ customElement._beginPatch();
9104
+ }
9105
+ patchElement(
9106
+ n1,
9107
+ n2,
9108
+ parentComponent,
9109
+ parentSuspense,
9110
+ namespace,
9111
+ slotScopeIds,
9112
+ optimized
9113
+ );
9114
+ } finally {
9115
+ if (customElement) {
9116
+ customElement._endPatch();
9117
+ }
9118
+ }
8931
9119
  }
8932
9120
  };
8933
9121
  const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
@@ -8978,16 +9166,20 @@ function baseCreateRenderer(options, createHydrationFns) {
8978
9166
  if (dirs) {
8979
9167
  invokeDirectiveHook(vnode, null, parentComponent, "beforeMount");
8980
9168
  }
8981
- const needCallTransitionHooks = needTransition(parentSuspense, transition);
8982
- if (needCallTransitionHooks) {
8983
- transition.beforeEnter(el);
9169
+ if (transition) {
9170
+ performTransitionEnter(
9171
+ el,
9172
+ transition,
9173
+ () => hostInsert(el, container, anchor),
9174
+ parentSuspense
9175
+ );
9176
+ } else {
9177
+ hostInsert(el, container, anchor);
8984
9178
  }
8985
- hostInsert(el, container, anchor);
8986
- if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) {
9179
+ if ((vnodeHook = props && props.onVnodeMounted) || dirs) {
8987
9180
  queuePostRenderEffect(
8988
9181
  () => {
8989
9182
  vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);
8990
- needCallTransitionHooks && transition.enter(el);
8991
9183
  dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted");
8992
9184
  },
8993
9185
  void 0,
@@ -9004,21 +9196,9 @@ function baseCreateRenderer(options, createHydrationFns) {
9004
9196
  hostSetScopeId(el, slotScopeIds[i]);
9005
9197
  }
9006
9198
  }
9007
- let subTree = parentComponent && parentComponent.subTree;
9008
- if (subTree) {
9009
- if (subTree.patchFlag > 0 && subTree.patchFlag & 2048) {
9010
- subTree = filterSingleRoot(subTree.children) || subTree;
9011
- }
9012
- if (vnode === subTree || isSuspense(subTree.type) && (subTree.ssContent === vnode || subTree.ssFallback === vnode)) {
9013
- const parentVNode = parentComponent.vnode;
9014
- setScopeId(
9015
- el,
9016
- parentVNode,
9017
- parentVNode.scopeId,
9018
- parentVNode.slotScopeIds,
9019
- parentComponent.parent
9020
- );
9021
- }
9199
+ const inheritedScopeIds = getInheritedScopeIds(vnode, parentComponent);
9200
+ for (let i = 0; i < inheritedScopeIds.length; i++) {
9201
+ hostSetScopeId(el, inheritedScopeIds[i]);
9022
9202
  }
9023
9203
  };
9024
9204
  const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => {
@@ -9259,12 +9439,21 @@ function baseCreateRenderer(options, createHydrationFns) {
9259
9439
  n2.slotScopeIds = slotScopeIds;
9260
9440
  if (n2.type.__vapor) {
9261
9441
  if (n1 == null) {
9262
- getVaporInterface(parentComponent, n2).mount(
9263
- n2,
9264
- container,
9265
- anchor,
9266
- parentComponent
9267
- );
9442
+ if (n2.shapeFlag & 512) {
9443
+ getVaporInterface(parentComponent, n2).activate(
9444
+ n2,
9445
+ container,
9446
+ anchor,
9447
+ parentComponent
9448
+ );
9449
+ } else {
9450
+ getVaporInterface(parentComponent, n2).mount(
9451
+ n2,
9452
+ container,
9453
+ anchor,
9454
+ parentComponent
9455
+ );
9456
+ }
9268
9457
  } else {
9269
9458
  getVaporInterface(parentComponent, n2).update(
9270
9459
  n1,
@@ -9328,6 +9517,7 @@ function baseCreateRenderer(options, createHydrationFns) {
9328
9517
  if (!initialVNode.el) {
9329
9518
  const placeholder = instance.subTree = createVNode(Comment);
9330
9519
  processCommentNode(null, placeholder, container, anchor);
9520
+ initialVNode.placeholder = placeholder.el;
9331
9521
  }
9332
9522
  } else {
9333
9523
  setupRenderEffect(
@@ -9895,7 +10085,11 @@ function baseCreateRenderer(options, createHydrationFns) {
9895
10085
  for (i = toBePatched - 1; i >= 0; i--) {
9896
10086
  const nextIndex = s2 + i;
9897
10087
  const nextChild = c2[nextIndex];
9898
- const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;
10088
+ const anchorVNode = c2[nextIndex + 1];
10089
+ const anchor = nextIndex + 1 < l2 ? (
10090
+ // #13559, fallback to el placeholder for unresolved async component
10091
+ anchorVNode.el || anchorVNode.placeholder
10092
+ ) : parentAnchor;
9899
10093
  if (newIndexToOldIndexMap[i] === 0) {
9900
10094
  patch(
9901
10095
  null,
@@ -9975,12 +10169,12 @@ function baseCreateRenderer(options, createHydrationFns) {
9975
10169
  const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition;
9976
10170
  if (needTransition2) {
9977
10171
  if (moveType === 0) {
9978
- transition.beforeEnter(el);
9979
- hostInsert(el, container, anchor);
9980
- queuePostRenderEffect(
9981
- () => transition.enter(el),
9982
- void 0,
9983
- parentSuspense
10172
+ performTransitionEnter(
10173
+ el,
10174
+ transition,
10175
+ () => hostInsert(el, container, anchor),
10176
+ parentSuspense,
10177
+ true
9984
10178
  );
9985
10179
  } else {
9986
10180
  const { leave, delayLeave, afterLeave } = transition;
@@ -9992,6 +10186,12 @@ function baseCreateRenderer(options, createHydrationFns) {
9992
10186
  }
9993
10187
  };
9994
10188
  const performLeave = () => {
10189
+ if (el._isLeaving) {
10190
+ el[leaveCbKey](
10191
+ true
10192
+ /* cancelled */
10193
+ );
10194
+ }
9995
10195
  leave(el, () => {
9996
10196
  remove2();
9997
10197
  afterLeave && afterLeave();
@@ -10031,7 +10231,14 @@ function baseCreateRenderer(options, createHydrationFns) {
10031
10231
  parentComponent.renderCache[cacheIndex] = void 0;
10032
10232
  }
10033
10233
  if (shapeFlag & 256) {
10034
- parentComponent.ctx.deactivate(vnode);
10234
+ if (vnode.type.__vapor) {
10235
+ getVaporInterface(parentComponent, vnode).deactivate(
10236
+ vnode,
10237
+ parentComponent.ctx.getStorageContainer()
10238
+ );
10239
+ } else {
10240
+ parentComponent.ctx.deactivate(vnode);
10241
+ }
10035
10242
  return;
10036
10243
  }
10037
10244
  const shouldInvokeDirs = shapeFlag & 1 && dirs;
@@ -10119,22 +10326,15 @@ function baseCreateRenderer(options, createHydrationFns) {
10119
10326
  removeStaticNode(vnode);
10120
10327
  return;
10121
10328
  }
10122
- const performRemove = () => {
10123
- hostRemove(el);
10124
- if (transition && !transition.persisted && transition.afterLeave) {
10125
- transition.afterLeave();
10126
- }
10127
- };
10128
- if (vnode.shapeFlag & 1 && transition && !transition.persisted) {
10129
- const { leave, delayLeave } = transition;
10130
- const performLeave = () => leave(el, performRemove);
10131
- if (delayLeave) {
10132
- delayLeave(vnode.el, performRemove, performLeave);
10133
- } else {
10134
- performLeave();
10135
- }
10329
+ if (transition) {
10330
+ performTransitionLeave(
10331
+ el,
10332
+ transition,
10333
+ () => hostRemove(el),
10334
+ !!(vnode.shapeFlag & 1)
10335
+ );
10136
10336
  } else {
10137
- performRemove();
10337
+ hostRemove(el);
10138
10338
  }
10139
10339
  };
10140
10340
  const removeFragment = (cur, end) => {
@@ -10150,27 +10350,12 @@ function baseCreateRenderer(options, createHydrationFns) {
10150
10350
  if (instance.type.__hmrId) {
10151
10351
  unregisterHMR(instance);
10152
10352
  }
10153
- const {
10154
- bum,
10155
- scope,
10156
- effect,
10157
- subTree,
10158
- um,
10159
- m,
10160
- a,
10161
- parent,
10162
- slots: { __: slotCacheKeys }
10163
- } = instance;
10353
+ const { bum, scope, effect, subTree, um, m, a } = instance;
10164
10354
  invalidateMount(m);
10165
10355
  invalidateMount(a);
10166
10356
  if (bum) {
10167
10357
  invokeArrayFns(bum);
10168
10358
  }
10169
- if (parent && isArray(slotCacheKeys)) {
10170
- slotCacheKeys.forEach((v) => {
10171
- parent.renderCache[v] = void 0;
10172
- });
10173
- }
10174
10359
  if (isCompatEnabled$1("INSTANCE_EVENT_HOOKS", instance)) {
10175
10360
  instance.emit("hook:beforeDestroy");
10176
10361
  }
@@ -10194,12 +10379,6 @@ function baseCreateRenderer(options, createHydrationFns) {
10194
10379
  void 0,
10195
10380
  parentSuspense
10196
10381
  );
10197
- if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) {
10198
- parentSuspense.deps--;
10199
- if (parentSuspense.deps === 0) {
10200
- parentSuspense.resolve();
10201
- }
10202
- }
10203
10382
  {
10204
10383
  devtoolsComponentRemoved(instance);
10205
10384
  }
@@ -10212,7 +10391,7 @@ function baseCreateRenderer(options, createHydrationFns) {
10212
10391
  const getNextHostNode = (vnode) => {
10213
10392
  if (vnode.shapeFlag & 6) {
10214
10393
  if (vnode.type.__vapor) {
10215
- return hostNextSibling(vnode.component.block);
10394
+ return hostNextSibling(vnode.anchor);
10216
10395
  }
10217
10396
  return getNextHostNode(vnode.component.subTree);
10218
10397
  }
@@ -10290,6 +10469,7 @@ function baseCreateRenderer(options, createHydrationFns) {
10290
10469
  return {
10291
10470
  render,
10292
10471
  hydrate,
10472
+ hydrateNode,
10293
10473
  internals,
10294
10474
  createApp: createAppAPI(
10295
10475
  mountApp,
@@ -10331,7 +10511,8 @@ function traverseStaticChildren(n1, n2, shallow = false) {
10331
10511
  if (!shallow && c2.patchFlag !== -2)
10332
10512
  traverseStaticChildren(c1, c2);
10333
10513
  }
10334
- if (c2.type === Text) {
10514
+ if (c2.type === Text && // avoid cached text nodes retaining detached dom nodes
10515
+ c2.patchFlag !== -1) {
10335
10516
  c2.el = c1.el;
10336
10517
  }
10337
10518
  if (c2.type === Comment && !c2.el) {
@@ -10344,7 +10525,7 @@ function traverseStaticChildren(n1, n2, shallow = false) {
10344
10525
  }
10345
10526
  }
10346
10527
  function locateNonHydratedAsyncRoot(instance) {
10347
- const subComponent = instance.vapor ? null : instance.subTree.component;
10528
+ const subComponent = instance.subTree && instance.subTree.component;
10348
10529
  if (subComponent) {
10349
10530
  if (subComponent.asyncDep && !subComponent.asyncResolved) {
10350
10531
  return subComponent;
@@ -10359,6 +10540,34 @@ function invalidateMount(hooks) {
10359
10540
  hooks[i].flags |= 4;
10360
10541
  }
10361
10542
  }
10543
+ function performTransitionEnter(el, transition, insert, parentSuspense, force = false) {
10544
+ if (force || needTransition(parentSuspense, transition)) {
10545
+ transition.beforeEnter(el);
10546
+ insert();
10547
+ queuePostRenderEffect(() => transition.enter(el), void 0, parentSuspense);
10548
+ } else {
10549
+ insert();
10550
+ }
10551
+ }
10552
+ function performTransitionLeave(el, transition, remove, isElement = true) {
10553
+ const performRemove = () => {
10554
+ remove();
10555
+ if (transition && !transition.persisted && transition.afterLeave) {
10556
+ transition.afterLeave();
10557
+ }
10558
+ };
10559
+ if (isElement && transition && !transition.persisted) {
10560
+ const { leave, delayLeave } = transition;
10561
+ const performLeave = () => leave(el, performRemove);
10562
+ if (delayLeave) {
10563
+ delayLeave(el, performRemove, performLeave);
10564
+ } else {
10565
+ performLeave();
10566
+ }
10567
+ } else {
10568
+ performRemove();
10569
+ }
10570
+ }
10362
10571
  function getVaporInterface(instance, vnode) {
10363
10572
  const ctx = instance ? instance.appContext : vnode.appContext;
10364
10573
  const res = ctx && ctx.vapor;
@@ -10373,6 +10582,32 @@ app.use(vaporInteropPlugin)
10373
10582
  }
10374
10583
  return res;
10375
10584
  }
10585
+ function getInheritedScopeIds(vnode, parentComponent) {
10586
+ const inheritedScopeIds = [];
10587
+ let currentParent = parentComponent;
10588
+ let currentVNode = vnode;
10589
+ while (currentParent) {
10590
+ let subTree = currentParent.subTree;
10591
+ if (!subTree) break;
10592
+ if (subTree.patchFlag > 0 && subTree.patchFlag & 2048) {
10593
+ subTree = filterSingleRoot(subTree.children) || subTree;
10594
+ }
10595
+ if (currentVNode === subTree || isSuspense(subTree.type) && (subTree.ssContent === currentVNode || subTree.ssFallback === currentVNode)) {
10596
+ const parentVNode = currentParent.vnode;
10597
+ if (parentVNode.scopeId) {
10598
+ inheritedScopeIds.push(parentVNode.scopeId);
10599
+ }
10600
+ if (parentVNode.slotScopeIds) {
10601
+ inheritedScopeIds.push(...parentVNode.slotScopeIds);
10602
+ }
10603
+ currentVNode = parentVNode;
10604
+ currentParent = currentParent.parent;
10605
+ } else {
10606
+ break;
10607
+ }
10608
+ }
10609
+ return inheritedScopeIds;
10610
+ }
10376
10611
 
10377
10612
  const ssrContextKey = Symbol.for("v-scx");
10378
10613
  const useSSRContext = () => {
@@ -10616,7 +10851,7 @@ function useModel(props, name, options = EMPTY_OBJ) {
10616
10851
  return res;
10617
10852
  }
10618
10853
  const getModelModifiers = (props, modelName, getter) => {
10619
- return modelName === "modelValue" || modelName === "model-value" ? getter(props, "modelModifiers") : getter(props, `${modelName}Modifiers`) || getter(props, `${camelize(modelName)}Modifiers`) || getter(props, `${hyphenate(modelName)}Modifiers`);
10854
+ return getter(props, getModifierPropName(modelName)) || getter(props, `${camelize(modelName)}Modifiers`) || getter(props, `${hyphenate(modelName)}Modifiers`);
10620
10855
  };
10621
10856
 
10622
10857
  function emit(instance, event, ...rawArgs) {
@@ -10721,8 +10956,9 @@ function baseEmit(instance, props, getter, event, ...rawArgs) {
10721
10956
  function defaultPropGetter(props, key) {
10722
10957
  return props[key];
10723
10958
  }
10959
+ const mixinEmitsCache = /* @__PURE__ */ new WeakMap();
10724
10960
  function normalizeEmitsOptions(comp, appContext, asMixin = false) {
10725
- const cache = appContext.emitsCache;
10961
+ const cache = asMixin ? mixinEmitsCache : appContext.emitsCache;
10726
10962
  const cached = cache.get(comp);
10727
10963
  if (cached !== void 0) {
10728
10964
  return cached;
@@ -11194,7 +11430,7 @@ function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, sl
11194
11430
  const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;
11195
11431
  if (pendingBranch) {
11196
11432
  suspense.pendingBranch = newBranch;
11197
- if (isSameVNodeType(newBranch, pendingBranch)) {
11433
+ if (isSameVNodeType(pendingBranch, newBranch)) {
11198
11434
  patch(
11199
11435
  pendingBranch,
11200
11436
  newBranch,
@@ -11265,7 +11501,7 @@ function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, sl
11265
11501
  );
11266
11502
  setActiveBranch(suspense, newFallback);
11267
11503
  }
11268
- } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {
11504
+ } else if (activeBranch && isSameVNodeType(activeBranch, newBranch)) {
11269
11505
  patch(
11270
11506
  activeBranch,
11271
11507
  newBranch,
@@ -11296,7 +11532,7 @@ function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, sl
11296
11532
  }
11297
11533
  }
11298
11534
  } else {
11299
- if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {
11535
+ if (activeBranch && isSameVNodeType(activeBranch, newBranch)) {
11300
11536
  patch(
11301
11537
  activeBranch,
11302
11538
  newBranch,
@@ -11409,7 +11645,8 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
11409
11645
  pendingId,
11410
11646
  effects,
11411
11647
  parentComponent: parentComponent2,
11412
- container: container2
11648
+ container: container2,
11649
+ isInFallback
11413
11650
  } = suspense;
11414
11651
  let delayEnter = false;
11415
11652
  if (suspense.isHydrating) {
@@ -11427,6 +11664,9 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
11427
11664
  parentComponent2
11428
11665
  );
11429
11666
  queuePostFlushCb(effects);
11667
+ if (isInFallback && vnode2.ssFallback) {
11668
+ vnode2.ssFallback.el = null;
11669
+ }
11430
11670
  }
11431
11671
  };
11432
11672
  }
@@ -11435,6 +11675,9 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
11435
11675
  anchor = next(activeBranch);
11436
11676
  }
11437
11677
  unmount(activeBranch, parentComponent2, suspense, true);
11678
+ if (!delayEnter && isInFallback && vnode2.ssFallback) {
11679
+ vnode2.ssFallback.el = null;
11680
+ }
11438
11681
  }
11439
11682
  if (!delayEnter) {
11440
11683
  move(
@@ -11559,6 +11802,7 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
11559
11802
  optimized2
11560
11803
  );
11561
11804
  if (placeholder) {
11805
+ vnode2.placeholder = null;
11562
11806
  remove(placeholder);
11563
11807
  }
11564
11808
  updateHOCHostEl(instance, vnode2.el);
@@ -11821,15 +12065,11 @@ const createVNodeWithArgsTransform = (...args) => {
11821
12065
  );
11822
12066
  };
11823
12067
  const normalizeKey = ({ key }) => key != null ? key : null;
11824
- const normalizeRef = ({
11825
- ref,
11826
- ref_key,
11827
- ref_for
11828
- }) => {
12068
+ const normalizeRef = ({ ref, ref_key, ref_for }, i = currentRenderingInstance) => {
11829
12069
  if (typeof ref === "number") {
11830
12070
  ref = "" + ref;
11831
12071
  }
11832
- return ref != null ? isString(ref) || isRef(ref) || isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null;
12072
+ return ref != null ? isString(ref) || isRef(ref) || isFunction(ref) ? { i, r: ref, k: ref_key, f: !!ref_for } : ref : null;
11833
12073
  };
11834
12074
  function createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) {
11835
12075
  const vnode = {
@@ -12002,6 +12242,7 @@ function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false
12002
12242
  suspense: vnode.suspense,
12003
12243
  ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),
12004
12244
  ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),
12245
+ placeholder: vnode.placeholder,
12005
12246
  el: vnode.el,
12006
12247
  anchor: vnode.anchor,
12007
12248
  ctx: vnode.ctx,
@@ -12164,6 +12405,25 @@ const setCurrentInstance = (instance, scope = instance !== null ? instance.scope
12164
12405
  simpleSetCurrentInstance(instance);
12165
12406
  }
12166
12407
  };
12408
+ const internalOptions = ["ce", "type"];
12409
+ const useInstanceOption = (key, silent = false) => {
12410
+ const instance = getCurrentGenericInstance();
12411
+ if (!instance) {
12412
+ if (!silent) {
12413
+ warn$1(`useInstanceOption called without an active component instance.`);
12414
+ }
12415
+ return { hasInstance: false, value: void 0 };
12416
+ }
12417
+ if (!internalOptions.includes(key)) {
12418
+ {
12419
+ warn$1(
12420
+ `useInstanceOption only accepts ${internalOptions.map((k) => `'${k}'`).join(", ")} as key, got '${key}'.`
12421
+ );
12422
+ }
12423
+ return { hasInstance: true, value: void 0 };
12424
+ }
12425
+ return { hasInstance: true, value: instance[key] };
12426
+ };
12167
12427
 
12168
12428
  const emptyAppContext = createAppContext();
12169
12429
  let uid = 0;
@@ -12543,7 +12803,7 @@ function getComponentPublicInstance(instance) {
12543
12803
  return instance.proxy;
12544
12804
  }
12545
12805
  }
12546
- const classifyRE = /(?:^|[-_])(\w)/g;
12806
+ const classifyRE = /(?:^|[-_])\w/g;
12547
12807
  const classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, "");
12548
12808
  function getComponentName(Component, includeInferred = true) {
12549
12809
  return isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;
@@ -12579,23 +12839,28 @@ const computed = (getterOrOptions, debugOptions) => {
12579
12839
  };
12580
12840
 
12581
12841
  function h(type, propsOrChildren, children) {
12582
- const l = arguments.length;
12583
- if (l === 2) {
12584
- if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {
12585
- if (isVNode(propsOrChildren)) {
12586
- return createVNode(type, null, [propsOrChildren]);
12842
+ try {
12843
+ setBlockTracking(-1);
12844
+ const l = arguments.length;
12845
+ if (l === 2) {
12846
+ if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {
12847
+ if (isVNode(propsOrChildren)) {
12848
+ return createVNode(type, null, [propsOrChildren]);
12849
+ }
12850
+ return createVNode(type, propsOrChildren);
12851
+ } else {
12852
+ return createVNode(type, null, propsOrChildren);
12587
12853
  }
12588
- return createVNode(type, propsOrChildren);
12589
12854
  } else {
12590
- return createVNode(type, null, propsOrChildren);
12591
- }
12592
- } else {
12593
- if (l > 3) {
12594
- children = Array.prototype.slice.call(arguments, 2);
12595
- } else if (l === 3 && isVNode(children)) {
12596
- children = [children];
12855
+ if (l > 3) {
12856
+ children = Array.prototype.slice.call(arguments, 2);
12857
+ } else if (l === 3 && isVNode(children)) {
12858
+ children = [children];
12859
+ }
12860
+ return createVNode(type, propsOrChildren, children);
12597
12861
  }
12598
- return createVNode(type, propsOrChildren, children);
12862
+ } finally {
12863
+ setBlockTracking(1);
12599
12864
  }
12600
12865
  }
12601
12866
 
@@ -12805,7 +13070,7 @@ function isMemoSame(cached, memo) {
12805
13070
  return true;
12806
13071
  }
12807
13072
 
12808
- const version = "3.6.0-alpha.2";
13073
+ const version = "3.6.0-alpha.4";
12809
13074
  const warn = warn$1 ;
12810
13075
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
12811
13076
  const devtools = devtools$1 ;
@@ -13075,11 +13340,11 @@ function resolveTransitionProps(rawProps) {
13075
13340
  addTransitionClass(el, legacyLeaveFromClass);
13076
13341
  }
13077
13342
  if (!el._enterCancelled) {
13078
- forceReflow();
13343
+ forceReflow(el);
13079
13344
  addTransitionClass(el, leaveActiveClass);
13080
13345
  } else {
13081
13346
  addTransitionClass(el, leaveActiveClass);
13082
- forceReflow();
13347
+ forceReflow(el);
13083
13348
  }
13084
13349
  nextFrame(() => {
13085
13350
  if (!el._isLeaving) {
@@ -13208,7 +13473,7 @@ function getTransitionInfo(el, expectedType) {
13208
13473
  type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION$1 : ANIMATION : null;
13209
13474
  propCount = type ? type === TRANSITION$1 ? transitionDurations.length : animationDurations.length : 0;
13210
13475
  }
13211
- const hasTransform = type === TRANSITION$1 && /\b(transform|all)(,|$)/.test(
13476
+ const hasTransform = type === TRANSITION$1 && /\b(?:transform|all)(?:,|$)/.test(
13212
13477
  getStyleProperties(`${TRANSITION$1}Property`).toString()
13213
13478
  );
13214
13479
  return {
@@ -13228,8 +13493,9 @@ function toMs(s) {
13228
13493
  if (s === "auto") return 0;
13229
13494
  return Number(s.slice(0, -1).replace(",", ".")) * 1e3;
13230
13495
  }
13231
- function forceReflow() {
13232
- return document.body.offsetHeight;
13496
+ function forceReflow(el) {
13497
+ const targetDocument = el ? el.ownerDocument : document;
13498
+ return targetDocument.body.offsetHeight;
13233
13499
  }
13234
13500
 
13235
13501
  function patchClass(el, value, isSVG) {
@@ -13249,6 +13515,8 @@ function patchClass(el, value, isSVG) {
13249
13515
  const vShowOriginalDisplay = Symbol("_vod");
13250
13516
  const vShowHidden = Symbol("_vsh");
13251
13517
  const vShow = {
13518
+ // used for prop mismatch check during hydration
13519
+ name: "show",
13252
13520
  beforeMount(el, { value }, { transition }) {
13253
13521
  el[vShowOriginalDisplay] = el.style.display === "none" ? "" : el.style.display;
13254
13522
  if (transition && value) {
@@ -13282,9 +13550,6 @@ const vShow = {
13282
13550
  setDisplay(el, value);
13283
13551
  }
13284
13552
  };
13285
- {
13286
- vShow.name = "show";
13287
- }
13288
13553
  function setDisplay(el, value) {
13289
13554
  el.style.display = value ? el[vShowOriginalDisplay] : "none";
13290
13555
  el[vShowHidden] = !value;
@@ -13370,7 +13635,7 @@ function setVarsOnNode(el, vars) {
13370
13635
  }
13371
13636
  }
13372
13637
 
13373
- const displayRE = /(^|;)\s*display\s*:/;
13638
+ const displayRE = /(?:^|;)\s*display\s*:/;
13374
13639
  function patchStyle(el, prev, next) {
13375
13640
  const style = el.style;
13376
13641
  const isCssString = isString(next);
@@ -13719,11 +13984,10 @@ function shouldSetAsProp(el, key, value, isSVG) {
13719
13984
  }
13720
13985
 
13721
13986
  const REMOVAL = {};
13722
- /*! #__NO_SIDE_EFFECTS__ */
13723
13987
  // @__NO_SIDE_EFFECTS__
13724
13988
  function defineCustomElement(options, extraOptions, _createApp) {
13725
- const Comp = defineComponent(options, extraOptions);
13726
- if (isPlainObject(Comp)) extend(Comp, extraOptions);
13989
+ let Comp = defineComponent(options, extraOptions);
13990
+ if (isPlainObject(Comp)) Comp = extend({}, Comp, extraOptions);
13727
13991
  class VueCustomElement extends VueElement {
13728
13992
  constructor(initialProps) {
13729
13993
  super(Comp, initialProps, _createApp);
@@ -13732,18 +13996,14 @@ function defineCustomElement(options, extraOptions, _createApp) {
13732
13996
  VueCustomElement.def = Comp;
13733
13997
  return VueCustomElement;
13734
13998
  }
13735
- /*! #__NO_SIDE_EFFECTS__ */
13736
- const defineSSRCustomElement = /* @__NO_SIDE_EFFECTS__ */ (options, extraOptions) => {
13999
+ const defineSSRCustomElement = (/* @__NO_SIDE_EFFECTS__ */ (options, extraOptions) => {
13737
14000
  return /* @__PURE__ */ defineCustomElement(options, extraOptions, createSSRApp);
13738
- };
14001
+ });
13739
14002
  const BaseClass = typeof HTMLElement !== "undefined" ? HTMLElement : class {
13740
14003
  };
13741
- class VueElement extends BaseClass {
13742
- constructor(_def, _props = {}, _createApp = createApp) {
14004
+ class VueElementBase extends BaseClass {
14005
+ constructor(def, props = {}, createAppFn) {
13743
14006
  super();
13744
- this._def = _def;
13745
- this._props = _props;
13746
- this._createApp = _createApp;
13747
14007
  this._isVueCE = true;
13748
14008
  /**
13749
14009
  * @internal
@@ -13753,25 +14013,26 @@ class VueElement extends BaseClass {
13753
14013
  * @internal
13754
14014
  */
13755
14015
  this._app = null;
13756
- /**
13757
- * @internal
13758
- */
13759
- this._nonce = this._def.nonce;
13760
14016
  this._connected = false;
13761
14017
  this._resolved = false;
13762
14018
  this._numberProps = null;
13763
14019
  this._styleChildren = /* @__PURE__ */ new WeakSet();
14020
+ this._patching = false;
14021
+ this._dirty = false;
13764
14022
  this._ob = null;
13765
- if (this.shadowRoot && _createApp !== createApp) {
14023
+ this._def = def;
14024
+ this._props = props;
14025
+ this._createApp = createAppFn;
14026
+ this._nonce = def.nonce;
14027
+ if (this._needsHydration()) {
13766
14028
  this._root = this.shadowRoot;
13767
14029
  } else {
13768
- if (this.shadowRoot) {
13769
- warn(
13770
- `Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use \`defineSSRCustomElement\`.`
14030
+ if (def.shadowRoot !== false) {
14031
+ this.attachShadow(
14032
+ extend({}, def.shadowRootOptions, {
14033
+ mode: "open"
14034
+ })
13771
14035
  );
13772
- }
13773
- if (_def.shadowRoot !== false) {
13774
- this.attachShadow({ mode: "open" });
13775
14036
  this._root = this.shadowRoot;
13776
14037
  } else {
13777
14038
  this._root = this;
@@ -13786,14 +14047,14 @@ class VueElement extends BaseClass {
13786
14047
  this._connected = true;
13787
14048
  let parent = this;
13788
14049
  while (parent = parent && (parent.parentNode || parent.host)) {
13789
- if (parent instanceof VueElement) {
14050
+ if (parent instanceof VueElementBase) {
13790
14051
  this._parent = parent;
13791
14052
  break;
13792
14053
  }
13793
14054
  }
13794
14055
  if (!this._instance) {
13795
14056
  if (this._resolved) {
13796
- this._mount(this._def);
14057
+ this._mountComponent(this._def);
13797
14058
  } else {
13798
14059
  if (parent && parent._pendingResolve) {
13799
14060
  this._pendingResolve = parent._pendingResolve.then(() => {
@@ -13806,8 +14067,24 @@ class VueElement extends BaseClass {
13806
14067
  }
13807
14068
  }
13808
14069
  }
14070
+ disconnectedCallback() {
14071
+ this._connected = false;
14072
+ nextTick(() => {
14073
+ if (!this._connected) {
14074
+ if (this._ob) {
14075
+ this._ob.disconnect();
14076
+ this._ob = null;
14077
+ }
14078
+ this._unmount();
14079
+ if (this._teleportTargets) {
14080
+ this._teleportTargets.clear();
14081
+ this._teleportTargets = void 0;
14082
+ }
14083
+ }
14084
+ });
14085
+ }
13809
14086
  _setParent(parent = this._parent) {
13810
- if (parent) {
14087
+ if (parent && this._instance) {
13811
14088
  this._instance.parent = parent._instance;
13812
14089
  this._inheritParentContext(parent);
13813
14090
  }
@@ -13820,19 +14097,10 @@ class VueElement extends BaseClass {
13820
14097
  );
13821
14098
  }
13822
14099
  }
13823
- disconnectedCallback() {
13824
- this._connected = false;
13825
- nextTick(() => {
13826
- if (!this._connected) {
13827
- if (this._ob) {
13828
- this._ob.disconnect();
13829
- this._ob = null;
13830
- }
13831
- this._app && this._app.unmount();
13832
- if (this._instance) this._instance.ce = void 0;
13833
- this._app = this._instance = null;
13834
- }
13835
- });
14100
+ _processMutations(mutations) {
14101
+ for (const m of mutations) {
14102
+ this._setAttr(m.attributeName);
14103
+ }
13836
14104
  }
13837
14105
  /**
13838
14106
  * resolve inner component definition (handle possible async component)
@@ -13844,13 +14112,9 @@ class VueElement extends BaseClass {
13844
14112
  for (let i = 0; i < this.attributes.length; i++) {
13845
14113
  this._setAttr(this.attributes[i].name);
13846
14114
  }
13847
- this._ob = new MutationObserver((mutations) => {
13848
- for (const m of mutations) {
13849
- this._setAttr(m.attributeName);
13850
- }
13851
- });
14115
+ this._ob = new MutationObserver(this._processMutations.bind(this));
13852
14116
  this._ob.observe(this, { attributes: true });
13853
- const resolve = (def, isAsync = false) => {
14117
+ const resolve = (def) => {
13854
14118
  this._resolved = true;
13855
14119
  this._pendingResolve = void 0;
13856
14120
  const { props, styles } = def;
@@ -13875,29 +14139,25 @@ class VueElement extends BaseClass {
13875
14139
  "Custom element style injection is not supported when using shadowRoot: false"
13876
14140
  );
13877
14141
  }
13878
- this._mount(def);
14142
+ this._mountComponent(def);
13879
14143
  };
13880
14144
  const asyncDef = this._def.__asyncLoader;
13881
14145
  if (asyncDef) {
14146
+ const { configureApp } = this._def;
13882
14147
  this._pendingResolve = asyncDef().then((def) => {
13883
- def.configureApp = this._def.configureApp;
13884
- resolve(this._def = def, true);
14148
+ def.configureApp = configureApp;
14149
+ this._def = def;
14150
+ resolve(def);
13885
14151
  });
13886
14152
  } else {
13887
14153
  resolve(this._def);
13888
14154
  }
13889
14155
  }
13890
- _mount(def) {
13891
- if (!def.name) {
13892
- def.name = "VueElement";
13893
- }
13894
- this._app = this._createApp(def);
13895
- this._inheritParentContext();
13896
- if (def.configureApp) {
13897
- def.configureApp(this._app);
13898
- }
13899
- this._app._ceVNode = this._createVNode();
13900
- this._app.mount(this._root);
14156
+ _mountComponent(def) {
14157
+ this._mount(def);
14158
+ this._processExposed();
14159
+ }
14160
+ _processExposed() {
13901
14161
  const exposed = this._instance && this._instance.exposed;
13902
14162
  if (!exposed) return;
13903
14163
  for (const key in exposed) {
@@ -13911,6 +14171,38 @@ class VueElement extends BaseClass {
13911
14171
  }
13912
14172
  }
13913
14173
  }
14174
+ _processInstance() {
14175
+ this._instance.ce = this;
14176
+ this._instance.isCE = true;
14177
+ {
14178
+ this._instance.ceReload = (newStyles) => {
14179
+ if (this._styles) {
14180
+ this._styles.forEach((s) => this._root.removeChild(s));
14181
+ this._styles.length = 0;
14182
+ }
14183
+ this._applyStyles(newStyles);
14184
+ if (!this._instance.vapor) {
14185
+ this._instance = null;
14186
+ }
14187
+ this._update();
14188
+ };
14189
+ }
14190
+ const dispatch = (event, args) => {
14191
+ this.dispatchEvent(
14192
+ new CustomEvent(
14193
+ event,
14194
+ isPlainObject(args[0]) ? extend({ detail: args }, args[0]) : { detail: args }
14195
+ )
14196
+ );
14197
+ };
14198
+ this._instance.emit = (event, ...args) => {
14199
+ dispatch(event, args);
14200
+ if (hyphenate(event) !== event) {
14201
+ dispatch(hyphenate(event), args);
14202
+ }
14203
+ };
14204
+ this._setParent();
14205
+ }
13914
14206
  _resolveProps(def) {
13915
14207
  const { props } = def;
13916
14208
  const declaredPropKeys = isArray(props) ? props : Object.keys(props || {});
@@ -13925,7 +14217,7 @@ class VueElement extends BaseClass {
13925
14217
  return this._getProp(key);
13926
14218
  },
13927
14219
  set(val) {
13928
- this._setProp(key, val, true, true);
14220
+ this._setProp(key, val, true, !this._patching);
13929
14221
  }
13930
14222
  });
13931
14223
  }
@@ -13951,11 +14243,12 @@ class VueElement extends BaseClass {
13951
14243
  */
13952
14244
  _setProp(key, val, shouldReflect = true, shouldUpdate = false) {
13953
14245
  if (val !== this._props[key]) {
14246
+ this._dirty = true;
13954
14247
  if (val === REMOVAL) {
13955
14248
  delete this._props[key];
13956
14249
  } else {
13957
14250
  this._props[key] = val;
13958
- if (key === "key" && this._app) {
14251
+ if (key === "key" && this._app && this._app._ceVNode) {
13959
14252
  this._app._ceVNode.key = val;
13960
14253
  }
13961
14254
  }
@@ -13964,7 +14257,10 @@ class VueElement extends BaseClass {
13964
14257
  }
13965
14258
  if (shouldReflect) {
13966
14259
  const ob = this._ob;
13967
- ob && ob.disconnect();
14260
+ if (ob) {
14261
+ this._processMutations(ob.takeRecords());
14262
+ ob.disconnect();
14263
+ }
13968
14264
  if (val === true) {
13969
14265
  this.setAttribute(hyphenate(key), "");
13970
14266
  } else if (typeof val === "string" || typeof val === "number") {
@@ -13976,52 +14272,6 @@ class VueElement extends BaseClass {
13976
14272
  }
13977
14273
  }
13978
14274
  }
13979
- _update() {
13980
- const vnode = this._createVNode();
13981
- if (this._app) vnode.appContext = this._app._context;
13982
- render(vnode, this._root);
13983
- }
13984
- _createVNode() {
13985
- const baseProps = {};
13986
- if (!this.shadowRoot) {
13987
- baseProps.onVnodeMounted = baseProps.onVnodeUpdated = this._renderSlots.bind(this);
13988
- }
13989
- const vnode = createVNode(this._def, extend(baseProps, this._props));
13990
- if (!this._instance) {
13991
- vnode.ce = (instance) => {
13992
- this._instance = instance;
13993
- instance.ce = this;
13994
- instance.isCE = true;
13995
- {
13996
- instance.ceReload = (newStyles) => {
13997
- if (this._styles) {
13998
- this._styles.forEach((s) => this._root.removeChild(s));
13999
- this._styles.length = 0;
14000
- }
14001
- this._applyStyles(newStyles);
14002
- this._instance = null;
14003
- this._update();
14004
- };
14005
- }
14006
- const dispatch = (event, args) => {
14007
- this.dispatchEvent(
14008
- new CustomEvent(
14009
- event,
14010
- isPlainObject(args[0]) ? extend({ detail: args }, args[0]) : { detail: args }
14011
- )
14012
- );
14013
- };
14014
- instance.emit = (event, ...args) => {
14015
- dispatch(event, args);
14016
- if (hyphenate(event) !== event) {
14017
- dispatch(hyphenate(event), args);
14018
- }
14019
- };
14020
- this._setParent();
14021
- };
14022
- }
14023
- return vnode;
14024
- }
14025
14275
  _applyStyles(styles, owner) {
14026
14276
  if (!styles) return;
14027
14277
  if (owner) {
@@ -14068,13 +14318,15 @@ class VueElement extends BaseClass {
14068
14318
  * Only called when shadowRoot is false
14069
14319
  */
14070
14320
  _renderSlots() {
14071
- const outlets = (this._teleportTarget || this).querySelectorAll("slot");
14321
+ const outlets = this._getSlots();
14072
14322
  const scopeId = this._instance.type.__scopeId;
14323
+ const slotReplacements = /* @__PURE__ */ new Map();
14073
14324
  for (let i = 0; i < outlets.length; i++) {
14074
14325
  const o = outlets[i];
14075
14326
  const slotName = o.getAttribute("name") || "default";
14076
14327
  const content = this._slots[slotName];
14077
14328
  const parent = o.parentNode;
14329
+ const replacementNodes = [];
14078
14330
  if (content) {
14079
14331
  for (const n of content) {
14080
14332
  if (scopeId && n.nodeType === 1) {
@@ -14087,18 +14339,58 @@ class VueElement extends BaseClass {
14087
14339
  }
14088
14340
  }
14089
14341
  parent.insertBefore(n, o);
14342
+ replacementNodes.push(n);
14090
14343
  }
14091
14344
  } else {
14092
- while (o.firstChild) parent.insertBefore(o.firstChild, o);
14345
+ while (o.firstChild) {
14346
+ const child = o.firstChild;
14347
+ parent.insertBefore(child, o);
14348
+ replacementNodes.push(child);
14349
+ }
14093
14350
  }
14094
14351
  parent.removeChild(o);
14352
+ slotReplacements.set(o, replacementNodes);
14353
+ }
14354
+ this._updateSlotNodes(slotReplacements);
14355
+ }
14356
+ /**
14357
+ * @internal
14358
+ */
14359
+ _getSlots() {
14360
+ const roots = [this];
14361
+ if (this._teleportTargets) {
14362
+ roots.push(...this._teleportTargets);
14363
+ }
14364
+ const slots = /* @__PURE__ */ new Set();
14365
+ for (const root of roots) {
14366
+ const found = root.querySelectorAll("slot");
14367
+ for (let i = 0; i < found.length; i++) {
14368
+ slots.add(found[i]);
14369
+ }
14095
14370
  }
14371
+ return Array.from(slots);
14372
+ }
14373
+ /**
14374
+ * @internal
14375
+ */
14376
+ _injectChildStyle(comp) {
14377
+ this._applyStyles(comp.styles, comp);
14378
+ }
14379
+ /**
14380
+ * @internal
14381
+ */
14382
+ _beginPatch() {
14383
+ this._patching = true;
14384
+ this._dirty = false;
14096
14385
  }
14097
14386
  /**
14098
14387
  * @internal
14099
14388
  */
14100
- _injectChildStyle(comp) {
14101
- this._applyStyles(comp.styles, comp);
14389
+ _endPatch() {
14390
+ this._patching = false;
14391
+ if (this._dirty && this._instance) {
14392
+ this._update();
14393
+ }
14102
14394
  }
14103
14395
  /**
14104
14396
  * @internal
@@ -14116,13 +14408,76 @@ class VueElement extends BaseClass {
14116
14408
  }
14117
14409
  }
14118
14410
  }
14411
+ class VueElement extends VueElementBase {
14412
+ constructor(def, props = {}, createAppFn = createApp) {
14413
+ super(def, props, createAppFn);
14414
+ }
14415
+ _needsHydration() {
14416
+ if (this.shadowRoot && this._createApp !== createApp) {
14417
+ return true;
14418
+ } else {
14419
+ if (this.shadowRoot) {
14420
+ warn(
14421
+ `Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use \`defineSSRCustomElement\`.`
14422
+ );
14423
+ }
14424
+ }
14425
+ return false;
14426
+ }
14427
+ _mount(def) {
14428
+ if (!def.name) {
14429
+ def.name = "VueElement";
14430
+ }
14431
+ this._app = this._createApp(def);
14432
+ this._inheritParentContext();
14433
+ if (def.configureApp) {
14434
+ def.configureApp(this._app);
14435
+ }
14436
+ this._app._ceVNode = this._createVNode();
14437
+ this._app.mount(this._root);
14438
+ }
14439
+ _update() {
14440
+ if (!this._app) return;
14441
+ const vnode = this._createVNode();
14442
+ vnode.appContext = this._app._context;
14443
+ render(vnode, this._root);
14444
+ }
14445
+ _unmount() {
14446
+ if (this._app) {
14447
+ this._app.unmount();
14448
+ }
14449
+ if (this._instance && this._instance.ce) {
14450
+ this._instance.ce = void 0;
14451
+ }
14452
+ this._app = this._instance = null;
14453
+ }
14454
+ /**
14455
+ * Only called when shadowRoot is false
14456
+ */
14457
+ _updateSlotNodes(replacements) {
14458
+ }
14459
+ _createVNode() {
14460
+ const baseProps = {};
14461
+ if (!this.shadowRoot) {
14462
+ baseProps.onVnodeMounted = baseProps.onVnodeUpdated = this._renderSlots.bind(this);
14463
+ }
14464
+ const vnode = createVNode(this._def, extend(baseProps, this._props));
14465
+ if (!this._instance) {
14466
+ vnode.ce = (instance) => {
14467
+ this._instance = instance;
14468
+ this._processInstance();
14469
+ };
14470
+ }
14471
+ return vnode;
14472
+ }
14473
+ }
14119
14474
  function useHost(caller) {
14120
- const instance = getCurrentInstance();
14121
- const el = instance && instance.ce;
14475
+ const { hasInstance, value } = useInstanceOption("ce", true);
14476
+ const el = value;
14122
14477
  if (el) {
14123
14478
  return el;
14124
14479
  } else {
14125
- if (!instance) {
14480
+ if (!hasInstance) {
14126
14481
  warn(
14127
14482
  `${caller || "useHost"} called without an active component instance.`
14128
14483
  );
@@ -14141,12 +14496,12 @@ function useShadowRoot() {
14141
14496
 
14142
14497
  function useCssModule(name = "$style") {
14143
14498
  {
14144
- const instance = getCurrentInstance();
14145
- if (!instance) {
14499
+ const { hasInstance, value: type } = useInstanceOption("type", true);
14500
+ if (!hasInstance) {
14146
14501
  warn(`useCssModule must be called inside setup()`);
14147
14502
  return EMPTY_OBJ;
14148
14503
  }
14149
- const modules = instance.type.__cssModules;
14504
+ const modules = type.__cssModules;
14150
14505
  if (!modules) {
14151
14506
  warn(`Current instance does not have CSS modules injected.`);
14152
14507
  return EMPTY_OBJ;
@@ -14195,26 +14550,13 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
14195
14550
  prevChildren = [];
14196
14551
  return;
14197
14552
  }
14198
- prevChildren.forEach(callPendingCbs);
14553
+ prevChildren.forEach((vnode) => callPendingCbs(vnode.el));
14199
14554
  prevChildren.forEach(recordPosition);
14200
14555
  const movedChildren = prevChildren.filter(applyTranslation);
14201
- forceReflow();
14556
+ forceReflow(instance.vnode.el);
14202
14557
  movedChildren.forEach((c) => {
14203
14558
  const el = c.el;
14204
- const style = el.style;
14205
- addTransitionClass(el, moveClass);
14206
- style.transform = style.webkitTransform = style.transitionDuration = "";
14207
- const cb = el[moveCbKey] = (e) => {
14208
- if (e && e.target !== el) {
14209
- return;
14210
- }
14211
- if (!e || /transform$/.test(e.propertyName)) {
14212
- el.removeEventListener("transitionend", cb);
14213
- el[moveCbKey] = null;
14214
- removeTransitionClass(el, moveClass);
14215
- }
14216
- };
14217
- el.addEventListener("transitionend", cb);
14559
+ handleMovedChildren(el, moveClass);
14218
14560
  });
14219
14561
  prevChildren = [];
14220
14562
  });
@@ -14243,10 +14585,10 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
14243
14585
  instance
14244
14586
  )
14245
14587
  );
14246
- positionMap.set(
14247
- child,
14248
- child.el.getBoundingClientRect()
14249
- );
14588
+ positionMap.set(child, {
14589
+ left: child.el.offsetLeft,
14590
+ top: child.el.offsetTop
14591
+ });
14250
14592
  }
14251
14593
  }
14252
14594
  }
@@ -14267,8 +14609,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
14267
14609
  }
14268
14610
  });
14269
14611
  const TransitionGroup = TransitionGroupImpl;
14270
- function callPendingCbs(c) {
14271
- const el = c.el;
14612
+ function callPendingCbs(el) {
14272
14613
  if (el[moveCbKey]) {
14273
14614
  el[moveCbKey]();
14274
14615
  }
@@ -14277,19 +14618,30 @@ function callPendingCbs(c) {
14277
14618
  }
14278
14619
  }
14279
14620
  function recordPosition(c) {
14280
- newPositionMap.set(c, c.el.getBoundingClientRect());
14621
+ newPositionMap.set(c, {
14622
+ left: c.el.offsetLeft,
14623
+ top: c.el.offsetTop
14624
+ });
14281
14625
  }
14282
14626
  function applyTranslation(c) {
14283
- const oldPos = positionMap.get(c);
14284
- const newPos = newPositionMap.get(c);
14627
+ if (baseApplyTranslation(
14628
+ positionMap.get(c),
14629
+ newPositionMap.get(c),
14630
+ c.el
14631
+ )) {
14632
+ return c;
14633
+ }
14634
+ }
14635
+ function baseApplyTranslation(oldPos, newPos, el) {
14285
14636
  const dx = oldPos.left - newPos.left;
14286
14637
  const dy = oldPos.top - newPos.top;
14287
14638
  if (dx || dy) {
14288
- const s = c.el.style;
14639
+ const s = el.style;
14289
14640
  s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;
14290
14641
  s.transitionDuration = "0s";
14291
- return c;
14642
+ return true;
14292
14643
  }
14644
+ return false;
14293
14645
  }
14294
14646
  function hasCSSTransform(el, root, moveClass) {
14295
14647
  const clone = el.cloneNode();
@@ -14307,6 +14659,22 @@ function hasCSSTransform(el, root, moveClass) {
14307
14659
  container.removeChild(clone);
14308
14660
  return hasTransform;
14309
14661
  }
14662
+ const handleMovedChildren = (el, moveClass) => {
14663
+ const style = el.style;
14664
+ addTransitionClass(el, moveClass);
14665
+ style.transform = style.webkitTransform = style.transitionDuration = "";
14666
+ const cb = el[moveCbKey] = (e) => {
14667
+ if (e && e.target !== el) {
14668
+ return;
14669
+ }
14670
+ if (!e || e.propertyName.endsWith("transform")) {
14671
+ el.removeEventListener("transitionend", cb);
14672
+ el[moveCbKey] = null;
14673
+ removeTransitionClass(el, moveClass);
14674
+ }
14675
+ };
14676
+ el.addEventListener("transitionend", cb);
14677
+ };
14310
14678
 
14311
14679
  const getModelAssigner = (vnode) => {
14312
14680
  const fn = vnode.props["onUpdate:modelValue"] || vnode.props["onModelCompat:input"];
@@ -14342,21 +14710,21 @@ const vModelText = {
14342
14710
  vModelTextUpdate(el, oldValue, value, trim, number, lazy);
14343
14711
  }
14344
14712
  };
14713
+ function castValue(value, trim, number) {
14714
+ if (trim) value = value.trim();
14715
+ if (number) value = looseToNumber(value);
14716
+ return value;
14717
+ }
14345
14718
  const vModelTextInit = (el, trim, number, lazy, set) => {
14346
14719
  addEventListener(el, lazy ? "change" : "input", (e) => {
14347
14720
  if (e.target.composing) return;
14348
- let domValue = el.value;
14349
- if (trim) {
14350
- domValue = domValue.trim();
14351
- }
14352
- if (number || el.type === "number") {
14353
- domValue = looseToNumber(domValue);
14354
- }
14355
- (0, el[assignKey])(domValue);
14721
+ (0, el[assignKey])(
14722
+ castValue(el.value, trim, number || el.type === "number")
14723
+ );
14356
14724
  });
14357
- if (trim) {
14725
+ if (trim || number) {
14358
14726
  addEventListener(el, "change", () => {
14359
- el.value = el.value.trim();
14727
+ el.value = castValue(el.value, trim, number || el.type === "number");
14360
14728
  });
14361
14729
  }
14362
14730
  if (!lazy) {
@@ -14639,13 +15007,13 @@ const modifierGuards = {
14639
15007
  const withModifiers = (fn, modifiers) => {
14640
15008
  const cache = fn._withMods || (fn._withMods = {});
14641
15009
  const cacheKey = modifiers.join(".");
14642
- return cache[cacheKey] || (cache[cacheKey] = (event, ...args) => {
15010
+ return cache[cacheKey] || (cache[cacheKey] = ((event, ...args) => {
14643
15011
  for (let i = 0; i < modifiers.length; i++) {
14644
15012
  const guard = modifierGuards[modifiers[i]];
14645
15013
  if (guard && guard(event, modifiers)) return;
14646
15014
  }
14647
15015
  return fn(event, ...args);
14648
- });
15016
+ }));
14649
15017
  };
14650
15018
  const keyNames = {
14651
15019
  esc: "escape",
@@ -14675,7 +15043,7 @@ const withKeys = (fn, modifiers) => {
14675
15043
  }
14676
15044
  const cache = fn._withKeys || (fn._withKeys = {});
14677
15045
  const cacheKey = modifiers.join(".");
14678
- return cache[cacheKey] || (cache[cacheKey] = (event) => {
15046
+ return cache[cacheKey] || (cache[cacheKey] = ((event) => {
14679
15047
  if (!("key" in event)) {
14680
15048
  return;
14681
15049
  }
@@ -14705,7 +15073,7 @@ const withKeys = (fn, modifiers) => {
14705
15073
  }
14706
15074
  }
14707
15075
  }
14708
- });
15076
+ }));
14709
15077
  };
14710
15078
 
14711
15079
  const rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps);
@@ -14719,13 +15087,13 @@ function ensureHydrationRenderer() {
14719
15087
  enabledHydration = true;
14720
15088
  return renderer;
14721
15089
  }
14722
- const render = (...args) => {
15090
+ const render = ((...args) => {
14723
15091
  ensureRenderer().render(...args);
14724
- };
14725
- const hydrate = (...args) => {
15092
+ });
15093
+ const hydrate = ((...args) => {
14726
15094
  ensureHydrationRenderer().hydrate(...args);
14727
- };
14728
- const createApp = (...args) => {
15095
+ });
15096
+ const createApp = ((...args) => {
14729
15097
  const app = ensureRenderer().createApp(...args);
14730
15098
  {
14731
15099
  injectNativeTagCheck(app);
@@ -14741,7 +15109,7 @@ const createApp = (...args) => {
14741
15109
  if (container.nodeType === 1) {
14742
15110
  for (let i = 0; i < container.attributes.length; i++) {
14743
15111
  const attr = container.attributes[i];
14744
- if (attr.name !== "v-cloak" && /^(v-|:|@)/.test(attr.name)) {
15112
+ if (attr.name !== "v-cloak" && /^(?:v-|:|@)/.test(attr.name)) {
14745
15113
  compatUtils.warnDeprecation(
14746
15114
  "GLOBAL_MOUNT_CONTAINER",
14747
15115
  null
@@ -14762,8 +15130,8 @@ const createApp = (...args) => {
14762
15130
  return proxy;
14763
15131
  };
14764
15132
  return app;
14765
- };
14766
- const createSSRApp = (...args) => {
15133
+ });
15134
+ const createSSRApp = ((...args) => {
14767
15135
  const app = ensureHydrationRenderer().createApp(...args);
14768
15136
  {
14769
15137
  injectNativeTagCheck(app);
@@ -14777,7 +15145,7 @@ const createSSRApp = (...args) => {
14777
15145
  }
14778
15146
  };
14779
15147
  return app;
14780
- };
15148
+ });
14781
15149
  function resolveRootNamespace(container) {
14782
15150
  if (container instanceof SVGElement) {
14783
15151
  return "svg";
@@ -14868,6 +15236,7 @@ var runtimeDom = /*#__PURE__*/Object.freeze({
14868
15236
  TransitionGroup: TransitionGroup,
14869
15237
  TriggerOpTypes: TriggerOpTypes,
14870
15238
  VueElement: VueElement,
15239
+ VueElementBase: VueElementBase,
14871
15240
  assertNumber: assertNumber,
14872
15241
  callWithAsyncErrorHandling: callWithAsyncErrorHandling,
14873
15242
  callWithErrorHandling: callWithErrorHandling,
@@ -14932,6 +15301,7 @@ var runtimeDom = /*#__PURE__*/Object.freeze({
14932
15301
  mergeModels: mergeModels,
14933
15302
  mergeProps: mergeProps,
14934
15303
  nextTick: nextTick,
15304
+ nodeOps: nodeOps,
14935
15305
  normalizeClass: normalizeClass,
14936
15306
  normalizeProps: normalizeProps,
14937
15307
  normalizeStyle: normalizeStyle,
@@ -14950,6 +15320,7 @@ var runtimeDom = /*#__PURE__*/Object.freeze({
14950
15320
  onUpdated: onUpdated,
14951
15321
  onWatcherCleanup: onWatcherCleanup,
14952
15322
  openBlock: openBlock,
15323
+ patchProp: patchProp,
14953
15324
  popScopeId: popScopeId,
14954
15325
  provide: provide,
14955
15326
  proxyRefs: proxyRefs,
@@ -14991,6 +15362,7 @@ var runtimeDom = /*#__PURE__*/Object.freeze({
14991
15362
  useCssVars: useCssVars,
14992
15363
  useHost: useHost,
14993
15364
  useId: useId,
15365
+ useInstanceOption: useInstanceOption,
14994
15366
  useModel: useModel,
14995
15367
  useSSRContext: useSSRContext,
14996
15368
  useShadowRoot: useShadowRoot,
@@ -16283,7 +16655,7 @@ function isCoreComponent(tag) {
16283
16655
  return BASE_TRANSITION;
16284
16656
  }
16285
16657
  }
16286
- const nonIdentifierRE = /^\d|[^\$\w\xA0-\uFFFF]/;
16658
+ const nonIdentifierRE = /^$|^\d|[^\$\w\xA0-\uFFFF]/;
16287
16659
  const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name);
16288
16660
  const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/;
16289
16661
  const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/;
@@ -16352,7 +16724,7 @@ const isMemberExpressionBrowser = (exp) => {
16352
16724
  return !currentOpenBracketCount && !currentOpenParensCount;
16353
16725
  };
16354
16726
  const isMemberExpression = isMemberExpressionBrowser ;
16355
- const fnExpRE = /^\s*(async\s*)?(\([^)]*?\)|[\w$_]+)\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/;
16727
+ const fnExpRE = /^\s*(?:async\s*)?(?:\([^)]*?\)|[\w$_]+)\s*(?::[^=]+)?=>|^\s*(?:async\s+)?function(?:\s+[\w$]+)?\s*\(/;
16356
16728
  const isFnExpressionBrowser = (exp) => fnExpRE.test(getExpSource(exp));
16357
16729
  const isFnExpression = isFnExpressionBrowser ;
16358
16730
  function assert(condition, msg) {
@@ -16395,6 +16767,9 @@ function hasDynamicKeyVBind(node) {
16395
16767
  function isText$1(node) {
16396
16768
  return node.type === 5 || node.type === 2;
16397
16769
  }
16770
+ function isVPre(p) {
16771
+ return p.type === 7 && p.name === "pre";
16772
+ }
16398
16773
  function isVSlot(p) {
16399
16774
  return p.type === 7 && p.name === "slot";
16400
16775
  }
@@ -16653,7 +17028,7 @@ const tokenizer = new Tokenizer(stack, {
16653
17028
  ondirarg(start, end) {
16654
17029
  if (start === end) return;
16655
17030
  const arg = getSlice(start, end);
16656
- if (inVPre) {
17031
+ if (inVPre && !isVPre(currentProp)) {
16657
17032
  currentProp.name += arg;
16658
17033
  setLocEnd(currentProp.nameLoc, end);
16659
17034
  } else {
@@ -16668,7 +17043,7 @@ const tokenizer = new Tokenizer(stack, {
16668
17043
  },
16669
17044
  ondirmodifier(start, end) {
16670
17045
  const mod = getSlice(start, end);
16671
- if (inVPre) {
17046
+ if (inVPre && !isVPre(currentProp)) {
16672
17047
  currentProp.name += "." + mod;
16673
17048
  setLocEnd(currentProp.nameLoc, end);
16674
17049
  } else if (currentProp.name === "slot") {
@@ -17296,6 +17671,11 @@ function walk(node, parent, context, doNotHoistNode = false, inFor = false) {
17296
17671
  } else if (child.type === 12) {
17297
17672
  const constantType = doNotHoistNode ? 0 : getConstantType(child, context);
17298
17673
  if (constantType >= 2) {
17674
+ if (child.codegenNode.type === 14 && child.codegenNode.arguments.length > 0) {
17675
+ child.codegenNode.arguments.push(
17676
+ -1 + (` /* ${PatchFlagNames[-1]} */` )
17677
+ );
17678
+ }
17299
17679
  toCache.push(child);
17300
17680
  continue;
17301
17681
  }
@@ -17324,7 +17704,6 @@ function walk(node, parent, context, doNotHoistNode = false, inFor = false) {
17324
17704
  }
17325
17705
  }
17326
17706
  let cachedAsArray = false;
17327
- const slotCacheKeys = [];
17328
17707
  if (toCache.length === children.length && node.type === 1) {
17329
17708
  if (node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && isArray(node.codegenNode.children)) {
17330
17709
  node.codegenNode.children = getCacheExpression(
@@ -17334,7 +17713,6 @@ function walk(node, parent, context, doNotHoistNode = false, inFor = false) {
17334
17713
  } else if (node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !isArray(node.codegenNode.children) && node.codegenNode.children.type === 15) {
17335
17714
  const slot = getSlotNode(node.codegenNode, "default");
17336
17715
  if (slot) {
17337
- slotCacheKeys.push(context.cached.length);
17338
17716
  slot.returns = getCacheExpression(
17339
17717
  createArrayExpression(slot.returns)
17340
17718
  );
@@ -17344,7 +17722,6 @@ function walk(node, parent, context, doNotHoistNode = false, inFor = false) {
17344
17722
  const slotName = findDir(node, "slot", true);
17345
17723
  const slot = slotName && slotName.arg && getSlotNode(parent.codegenNode, slotName.arg);
17346
17724
  if (slot) {
17347
- slotCacheKeys.push(context.cached.length);
17348
17725
  slot.returns = getCacheExpression(
17349
17726
  createArrayExpression(slot.returns)
17350
17727
  );
@@ -17354,23 +17731,12 @@ function walk(node, parent, context, doNotHoistNode = false, inFor = false) {
17354
17731
  }
17355
17732
  if (!cachedAsArray) {
17356
17733
  for (const child of toCache) {
17357
- slotCacheKeys.push(context.cached.length);
17358
17734
  child.codegenNode = context.cache(child.codegenNode);
17359
17735
  }
17360
17736
  }
17361
- if (slotCacheKeys.length && node.type === 1 && node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !isArray(node.codegenNode.children) && node.codegenNode.children.type === 15) {
17362
- node.codegenNode.children.properties.push(
17363
- createObjectProperty(
17364
- `__`,
17365
- createSimpleExpression(JSON.stringify(slotCacheKeys), false)
17366
- )
17367
- );
17368
- }
17369
17737
  function getCacheExpression(value) {
17370
17738
  const exp = context.cache(value);
17371
- if (inFor && context.hmr) {
17372
- exp.needArraySpread = true;
17373
- }
17739
+ exp.needArraySpread = true;
17374
17740
  return exp;
17375
17741
  }
17376
17742
  function getSlotNode(node2, name) {
@@ -18501,7 +18867,7 @@ function processExpression(node, context, asParams = false, asRawStatements = fa
18501
18867
  }
18502
18868
 
18503
18869
  const transformIf = createStructuralDirectiveTransform(
18504
- /^(if|else|else-if)$/,
18870
+ /^(?:if|else|else-if)$/,
18505
18871
  (node, dir, context) => {
18506
18872
  return processIf(node, dir, context, (ifNode, branch, isRoot) => {
18507
18873
  const siblings = context.parent.children;
@@ -18570,7 +18936,7 @@ function processIf(node, dir, context, processCodegen) {
18570
18936
  continue;
18571
18937
  }
18572
18938
  if (sibling && sibling.type === 9) {
18573
- if (dir.name === "else-if" && sibling.branches[sibling.branches.length - 1].condition === void 0) {
18939
+ if ((dir.name === "else-if" || dir.name === "else") && sibling.branches[sibling.branches.length - 1].condition === void 0) {
18574
18940
  context.onError(
18575
18941
  createCompilerError(30, node.loc)
18576
18942
  );
@@ -18719,80 +19085,6 @@ function getParentCondition(node) {
18719
19085
  }
18720
19086
  }
18721
19087
 
18722
- const transformBind = (dir, _node, context) => {
18723
- const { modifiers, loc } = dir;
18724
- const arg = dir.arg;
18725
- let { exp } = dir;
18726
- if (exp && exp.type === 4 && !exp.content.trim()) {
18727
- {
18728
- exp = void 0;
18729
- }
18730
- }
18731
- if (!exp) {
18732
- if (arg.type !== 4 || !arg.isStatic) {
18733
- context.onError(
18734
- createCompilerError(
18735
- 52,
18736
- arg.loc
18737
- )
18738
- );
18739
- return {
18740
- props: [
18741
- createObjectProperty(arg, createSimpleExpression("", true, loc))
18742
- ]
18743
- };
18744
- }
18745
- transformBindShorthand(dir);
18746
- exp = dir.exp;
18747
- }
18748
- if (arg.type !== 4) {
18749
- arg.children.unshift(`(`);
18750
- arg.children.push(`) || ""`);
18751
- } else if (!arg.isStatic) {
18752
- arg.content = `${arg.content} || ""`;
18753
- }
18754
- if (modifiers.some((mod) => mod.content === "camel")) {
18755
- if (arg.type === 4) {
18756
- if (arg.isStatic) {
18757
- arg.content = camelize(arg.content);
18758
- } else {
18759
- arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`;
18760
- }
18761
- } else {
18762
- arg.children.unshift(`${context.helperString(CAMELIZE)}(`);
18763
- arg.children.push(`)`);
18764
- }
18765
- }
18766
- if (!context.inSSR) {
18767
- if (modifiers.some((mod) => mod.content === "prop")) {
18768
- injectPrefix(arg, ".");
18769
- }
18770
- if (modifiers.some((mod) => mod.content === "attr")) {
18771
- injectPrefix(arg, "^");
18772
- }
18773
- }
18774
- return {
18775
- props: [createObjectProperty(arg, exp)]
18776
- };
18777
- };
18778
- const transformBindShorthand = (dir, context) => {
18779
- const arg = dir.arg;
18780
- const propName = camelize(arg.content);
18781
- dir.exp = createSimpleExpression(propName, false, arg.loc);
18782
- };
18783
- const injectPrefix = (arg, prefix) => {
18784
- if (arg.type === 4) {
18785
- if (arg.isStatic) {
18786
- arg.content = prefix + arg.content;
18787
- } else {
18788
- arg.content = `\`${prefix}\${${arg.content}}\``;
18789
- }
18790
- } else {
18791
- arg.children.unshift(`'${prefix}' + (`);
18792
- arg.children.push(`)`);
18793
- }
18794
- };
18795
-
18796
19088
  const transformFor = createStructuralDirectiveTransform(
18797
19089
  "for",
18798
19090
  (node, dir, context) => {
@@ -18804,10 +19096,7 @@ const transformFor = createStructuralDirectiveTransform(
18804
19096
  const isTemplate = isTemplateNode(node);
18805
19097
  const memo = findDir(node, "memo");
18806
19098
  const keyProp = findProp(node, `key`, false, true);
18807
- const isDirKey = keyProp && keyProp.type === 7;
18808
- if (isDirKey && !keyProp.exp) {
18809
- transformBindShorthand(keyProp);
18810
- }
19099
+ keyProp && keyProp.type === 7;
18811
19100
  let keyExp = keyProp && (keyProp.type === 6 ? keyProp.value ? createSimpleExpression(keyProp.value.content, true) : void 0 : keyProp.exp);
18812
19101
  const keyProperty = keyProp && keyExp ? createObjectProperty(`key`, keyExp) : null;
18813
19102
  const isStableFragment = forNode.source.type === 4 && forNode.source.constType > 0;
@@ -19088,7 +19377,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {
19088
19377
  );
19089
19378
  } else if (vElse = findDir(
19090
19379
  slotElement,
19091
- /^else(-if)?$/,
19380
+ /^else(?:-if)?$/,
19092
19381
  true
19093
19382
  /* allowEmpty */
19094
19383
  )) {
@@ -19100,7 +19389,7 @@ function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {
19100
19389
  break;
19101
19390
  }
19102
19391
  }
19103
- if (prev && isTemplateNode(prev) && findDir(prev, /^(else-)?if$/)) {
19392
+ if (prev && isTemplateNode(prev) && findDir(prev, /^(?:else-)?if$/)) {
19104
19393
  let conditional = dynamicSlots[dynamicSlots.length - 1];
19105
19394
  while (conditional.alternate.type === 19) {
19106
19395
  conditional = conditional.alternate;
@@ -19960,6 +20249,58 @@ const transformOn$1 = (dir, node, context, augmentor) => {
19960
20249
  return ret;
19961
20250
  };
19962
20251
 
20252
+ const transformBind = (dir, _node, context) => {
20253
+ const { modifiers, loc } = dir;
20254
+ const arg = dir.arg;
20255
+ let { exp } = dir;
20256
+ if (exp && exp.type === 4 && !exp.content.trim()) {
20257
+ {
20258
+ exp = void 0;
20259
+ }
20260
+ }
20261
+ if (arg.type !== 4) {
20262
+ arg.children.unshift(`(`);
20263
+ arg.children.push(`) || ""`);
20264
+ } else if (!arg.isStatic) {
20265
+ arg.content = arg.content ? `${arg.content} || ""` : `""`;
20266
+ }
20267
+ if (modifiers.some((mod) => mod.content === "camel")) {
20268
+ if (arg.type === 4) {
20269
+ if (arg.isStatic) {
20270
+ arg.content = camelize(arg.content);
20271
+ } else {
20272
+ arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`;
20273
+ }
20274
+ } else {
20275
+ arg.children.unshift(`${context.helperString(CAMELIZE)}(`);
20276
+ arg.children.push(`)`);
20277
+ }
20278
+ }
20279
+ if (!context.inSSR) {
20280
+ if (modifiers.some((mod) => mod.content === "prop")) {
20281
+ injectPrefix(arg, ".");
20282
+ }
20283
+ if (modifiers.some((mod) => mod.content === "attr")) {
20284
+ injectPrefix(arg, "^");
20285
+ }
20286
+ }
20287
+ return {
20288
+ props: [createObjectProperty(arg, exp)]
20289
+ };
20290
+ };
20291
+ const injectPrefix = (arg, prefix) => {
20292
+ if (arg.type === 4) {
20293
+ if (arg.isStatic) {
20294
+ arg.content = prefix + arg.content;
20295
+ } else {
20296
+ arg.content = `\`${prefix}\${${arg.content}}\``;
20297
+ }
20298
+ } else {
20299
+ arg.children.unshift(`'${prefix}' + (`);
20300
+ arg.children.push(`)`);
20301
+ }
20302
+ };
20303
+
19963
20304
  const transformText = (node, context) => {
19964
20305
  if (node.type === 0 || node.type === 1 || node.type === 11 || node.type === 10) {
19965
20306
  return () => {
@@ -20096,7 +20437,7 @@ const transformModel$1 = (dir, node, context) => {
20096
20437
  ];
20097
20438
  if (dir.modifiers.length && node.tagType === 1) {
20098
20439
  const modifiers = dir.modifiers.map((m) => m.content).map((m) => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`).join(`, `);
20099
- const modifiersKey = arg ? isStaticExp(arg) ? `${arg.content}Modifiers` : createCompoundExpression([arg, ' + "Modifiers"']) : `modelModifiers`;
20440
+ const modifiersKey = arg ? isStaticExp(arg) ? getModifierPropName(arg.content) : createCompoundExpression([arg, ' + "Modifiers"']) : `modelModifiers`;
20100
20441
  props.push(
20101
20442
  createObjectProperty(
20102
20443
  modifiersKey,
@@ -20268,7 +20609,7 @@ const seen = /* @__PURE__ */ new WeakSet();
20268
20609
  const transformMemo = (node, context) => {
20269
20610
  if (node.type === 1) {
20270
20611
  const dir = findDir(node, "memo");
20271
- if (!dir || seen.has(node)) {
20612
+ if (!dir || seen.has(node) || context.inSSR) {
20272
20613
  return;
20273
20614
  }
20274
20615
  seen.add(node);
@@ -20290,9 +20631,36 @@ const transformMemo = (node, context) => {
20290
20631
  }
20291
20632
  };
20292
20633
 
20634
+ const transformVBindShorthand = (node, context) => {
20635
+ if (node.type === 1) {
20636
+ for (const prop of node.props) {
20637
+ if (prop.type === 7 && prop.name === "bind" && (!prop.exp || // #13930 :foo in in-DOM templates will be parsed into :foo="" by browser
20638
+ prop.exp.type === 4 && !prop.exp.content.trim()) && prop.arg) {
20639
+ const arg = prop.arg;
20640
+ if (arg.type !== 4 || !arg.isStatic) {
20641
+ context.onError(
20642
+ createCompilerError(
20643
+ 52,
20644
+ arg.loc
20645
+ )
20646
+ );
20647
+ prop.exp = createSimpleExpression("", true, arg.loc);
20648
+ } else {
20649
+ const propName = camelize(arg.content);
20650
+ if (validFirstIdentCharRE.test(propName[0]) || // allow hyphen first char for https://github.com/vuejs/language-tools/pull/3424
20651
+ propName[0] === "-") {
20652
+ prop.exp = createSimpleExpression(propName, false, arg.loc);
20653
+ }
20654
+ }
20655
+ }
20656
+ }
20657
+ }
20658
+ };
20659
+
20293
20660
  function getBaseTransformPreset(prefixIdentifiers) {
20294
20661
  return [
20295
20662
  [
20663
+ transformVBindShorthand,
20296
20664
  transformOnce,
20297
20665
  transformIf,
20298
20666
  transformMemo,
@@ -20422,7 +20790,7 @@ const parserOptions = {
20422
20790
  let ns = parent ? parent.ns : rootNamespace;
20423
20791
  if (parent && ns === 2) {
20424
20792
  if (parent.tag === "annotation-xml") {
20425
- if (tag === "svg") {
20793
+ if (isSVGTag(tag)) {
20426
20794
  return 1;
20427
20795
  }
20428
20796
  if (parent.props.some(
@@ -20439,10 +20807,10 @@ const parserOptions = {
20439
20807
  }
20440
20808
  }
20441
20809
  if (ns === 0) {
20442
- if (tag === "svg") {
20810
+ if (isSVGTag(tag)) {
20443
20811
  return 1;
20444
20812
  }
20445
- if (tag === "math") {
20813
+ if (isMathMLTag(tag)) {
20446
20814
  return 2;
20447
20815
  }
20448
20816
  }
@@ -20743,46 +21111,46 @@ const transformTransition = (node, context) => {
20743
21111
  if (node.type === 1 && node.tagType === 1) {
20744
21112
  const component = context.isBuiltInComponent(node.tag);
20745
21113
  if (component === TRANSITION) {
20746
- return () => {
20747
- if (!node.children.length) {
20748
- return;
20749
- }
20750
- if (hasMultipleChildren(node)) {
20751
- context.onError(
20752
- createDOMCompilerError(
20753
- 62,
20754
- {
20755
- start: node.children[0].loc.start,
20756
- end: node.children[node.children.length - 1].loc.end,
20757
- source: ""
20758
- }
20759
- )
20760
- );
20761
- }
20762
- const child = node.children[0];
20763
- if (child.type === 1) {
20764
- for (const p of child.props) {
20765
- if (p.type === 7 && p.name === "show") {
20766
- node.props.push({
20767
- type: 6,
20768
- name: "persisted",
20769
- nameLoc: node.loc,
20770
- value: void 0,
20771
- loc: node.loc
20772
- });
20773
- }
20774
- }
20775
- }
20776
- };
21114
+ return postTransformTransition(node, context.onError);
20777
21115
  }
20778
21116
  }
20779
21117
  };
20780
- function hasMultipleChildren(node) {
21118
+ function postTransformTransition(node, onError, hasMultipleChildren = defaultHasMultipleChildren) {
21119
+ return () => {
21120
+ if (!node.children.length) {
21121
+ return;
21122
+ }
21123
+ if (hasMultipleChildren(node)) {
21124
+ onError(
21125
+ createDOMCompilerError(62, {
21126
+ start: node.children[0].loc.start,
21127
+ end: node.children[node.children.length - 1].loc.end,
21128
+ source: ""
21129
+ })
21130
+ );
21131
+ }
21132
+ const child = node.children[0];
21133
+ if (child.type === 1) {
21134
+ for (const p of child.props) {
21135
+ if (p.type === 7 && p.name === "show") {
21136
+ node.props.push({
21137
+ type: 6,
21138
+ name: "persisted",
21139
+ nameLoc: node.loc,
21140
+ value: void 0,
21141
+ loc: node.loc
21142
+ });
21143
+ }
21144
+ }
21145
+ }
21146
+ };
21147
+ }
21148
+ function defaultHasMultipleChildren(node) {
20781
21149
  const children = node.children = node.children.filter(
20782
21150
  (c) => c.type !== 3 && !(c.type === 2 && !c.content.trim())
20783
21151
  );
20784
21152
  const child = children[0];
20785
- return children.length !== 1 || child.type === 11 || child.type === 9 && child.branches.some(hasMultipleChildren);
21153
+ return children.length !== 1 || child.type === 11 || child.type === 9 && child.branches.some(defaultHasMultipleChildren);
20786
21154
  }
20787
21155
 
20788
21156
  const ignoreSideEffectTags = (node, context) => {
@@ -21065,4 +21433,4 @@ Vue.compile = compileToFunction;
21065
21433
 
21066
21434
  const configureCompat = Vue.configureCompat;
21067
21435
 
21068
- export { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, EffectScope, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, ReactiveEffect, Static, Suspense, Teleport, Text, TrackOpTypes, Transition, TransitionGroup, TriggerOpTypes, VueElement, 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, Vue 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, normalizeClass, normalizeProps, normalizeStyle, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, onWatcherCleanup, openBlock, popScopeId, provide, proxyRefs, pushScopeId, queuePostFlushCb, reactive, readonly, ref, registerRuntimeCompiler, render, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, shallowReactive, shallowReadonly, shallowRef, ssrContextKey, ssrUtils, stop, toDisplayString, toHandlerKey, toHandlers, toRaw, toRef, toRefs, toValue, transformVNodeArgs, triggerRef, unref, useAttrs, useCssModule, useCssVars, useHost, useId, 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 };
21436
+ export { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, EffectScope, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, 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, Vue 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, 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 };