@vue/compat 3.3.4 → 3.3.5

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.
@@ -34,7 +34,7 @@ const isString = (val) => typeof val === "string";
34
34
  const isSymbol = (val) => typeof val === "symbol";
35
35
  const isObject = (val) => val !== null && typeof val === "object";
36
36
  const isPromise = (val) => {
37
- return isObject(val) && isFunction(val.then) && isFunction(val.catch);
37
+ return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);
38
38
  };
39
39
  const objectToString = Object.prototype.toString;
40
40
  const toTypeString = (value) => objectToString.call(value);
@@ -65,12 +65,13 @@ const hyphenateRE = /\B([A-Z])/g;
65
65
  const hyphenate = cacheStringFunction(
66
66
  (str) => str.replace(hyphenateRE, "-$1").toLowerCase()
67
67
  );
68
- const capitalize = cacheStringFunction(
69
- (str) => str.charAt(0).toUpperCase() + str.slice(1)
70
- );
71
- const toHandlerKey = cacheStringFunction(
72
- (str) => str ? `on${capitalize(str)}` : ``
73
- );
68
+ const capitalize = cacheStringFunction((str) => {
69
+ return str.charAt(0).toUpperCase() + str.slice(1);
70
+ });
71
+ const toHandlerKey = cacheStringFunction((str) => {
72
+ const s = str ? `on${capitalize(str)}` : ``;
73
+ return s;
74
+ });
74
75
  const hasChanged = (value, oldValue) => !Object.is(value, oldValue);
75
76
  const invokeArrayFns = (fns, arg) => {
76
77
  for (let i = 0; i < fns.length; i++) {
@@ -120,8 +121,8 @@ const slotFlagsText = {
120
121
  [3]: "FORWARDED"
121
122
  };
122
123
 
123
- const GLOBALS_WHITE_LISTED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console";
124
- const isGloballyWhitelisted = /* @__PURE__ */ makeMap(GLOBALS_WHITE_LISTED);
124
+ const GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console";
125
+ const isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);
125
126
 
126
127
  const range = 2;
127
128
  function generateCodeFrame(source, start = 0, end = source.length) {
@@ -176,9 +177,7 @@ function normalizeStyle(value) {
176
177
  }
177
178
  }
178
179
  return res;
179
- } else if (isString(value)) {
180
- return value;
181
- } else if (isObject(value)) {
180
+ } else if (isString(value) || isObject(value)) {
182
181
  return value;
183
182
  }
184
183
  }
@@ -527,7 +526,7 @@ function cleanupEffect(effect2) {
527
526
  }
528
527
  }
529
528
  function effect(fn, options) {
530
- if (fn.effect) {
529
+ if (fn.effect instanceof ReactiveEffect) {
531
530
  fn = fn.effect.fn;
532
531
  }
533
532
  const _effect = new ReactiveEffect(fn);
@@ -693,10 +692,6 @@ const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`
693
692
  const builtInSymbols = new Set(
694
693
  /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol)
695
694
  );
696
- const get$1 = /* @__PURE__ */ createGetter();
697
- const shallowGet = /* @__PURE__ */ createGetter(false, true);
698
- const readonlyGet = /* @__PURE__ */ createGetter(true);
699
- const shallowReadonlyGet = /* @__PURE__ */ createGetter(true, true);
700
695
  const arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();
701
696
  function createArrayInstrumentations() {
702
697
  const instrumentations = {};
@@ -729,8 +724,13 @@ function hasOwnProperty(key) {
729
724
  track(obj, "has", key);
730
725
  return obj.hasOwnProperty(key);
731
726
  }
732
- function createGetter(isReadonly2 = false, shallow = false) {
733
- return function get2(target, key, receiver) {
727
+ class BaseReactiveHandler {
728
+ constructor(_isReadonly = false, _shallow = false) {
729
+ this._isReadonly = _isReadonly;
730
+ this._shallow = _shallow;
731
+ }
732
+ get(target, key, receiver) {
733
+ const isReadonly2 = this._isReadonly, shallow = this._shallow;
734
734
  if (key === "__v_isReactive") {
735
735
  return !isReadonly2;
736
736
  } else if (key === "__v_isReadonly") {
@@ -766,17 +766,18 @@ function createGetter(isReadonly2 = false, shallow = false) {
766
766
  return isReadonly2 ? readonly(res) : reactive(res);
767
767
  }
768
768
  return res;
769
- };
769
+ }
770
770
  }
771
- const set$1 = /* @__PURE__ */ createSetter();
772
- const shallowSet = /* @__PURE__ */ createSetter(true);
773
- function createSetter(shallow = false) {
774
- return function set2(target, key, value, receiver) {
771
+ class MutableReactiveHandler extends BaseReactiveHandler {
772
+ constructor(shallow = false) {
773
+ super(false, shallow);
774
+ }
775
+ set(target, key, value, receiver) {
775
776
  let oldValue = target[key];
776
777
  if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {
777
778
  return false;
778
779
  }
779
- if (!shallow) {
780
+ if (!this._shallow) {
780
781
  if (!isShallow(value) && !isReadonly(value)) {
781
782
  oldValue = toRaw(oldValue);
782
783
  value = toRaw(value);
@@ -796,37 +797,36 @@ function createSetter(shallow = false) {
796
797
  }
797
798
  }
798
799
  return result;
799
- };
800
- }
801
- function deleteProperty(target, key) {
802
- const hadKey = hasOwn(target, key);
803
- const oldValue = target[key];
804
- const result = Reflect.deleteProperty(target, key);
805
- if (result && hadKey) {
806
- trigger(target, "delete", key, void 0, oldValue);
807
800
  }
808
- return result;
809
- }
810
- function has$1(target, key) {
811
- const result = Reflect.has(target, key);
812
- if (!isSymbol(key) || !builtInSymbols.has(key)) {
813
- track(target, "has", key);
801
+ deleteProperty(target, key) {
802
+ const hadKey = hasOwn(target, key);
803
+ const oldValue = target[key];
804
+ const result = Reflect.deleteProperty(target, key);
805
+ if (result && hadKey) {
806
+ trigger(target, "delete", key, void 0, oldValue);
807
+ }
808
+ return result;
809
+ }
810
+ has(target, key) {
811
+ const result = Reflect.has(target, key);
812
+ if (!isSymbol(key) || !builtInSymbols.has(key)) {
813
+ track(target, "has", key);
814
+ }
815
+ return result;
816
+ }
817
+ ownKeys(target) {
818
+ track(
819
+ target,
820
+ "iterate",
821
+ isArray(target) ? "length" : ITERATE_KEY
822
+ );
823
+ return Reflect.ownKeys(target);
814
824
  }
815
- return result;
816
- }
817
- function ownKeys(target) {
818
- track(target, "iterate", isArray(target) ? "length" : ITERATE_KEY);
819
- return Reflect.ownKeys(target);
820
825
  }
821
- const mutableHandlers = {
822
- get: get$1,
823
- set: set$1,
824
- deleteProperty,
825
- has: has$1,
826
- ownKeys
827
- };
828
- const readonlyHandlers = {
829
- get: readonlyGet,
826
+ class ReadonlyReactiveHandler extends BaseReactiveHandler {
827
+ constructor(shallow = false) {
828
+ super(true, shallow);
829
+ }
830
830
  set(target, key) {
831
831
  {
832
832
  warn$1(
@@ -835,7 +835,7 @@ const readonlyHandlers = {
835
835
  );
836
836
  }
837
837
  return true;
838
- },
838
+ }
839
839
  deleteProperty(target, key) {
840
840
  {
841
841
  warn$1(
@@ -845,22 +845,13 @@ const readonlyHandlers = {
845
845
  }
846
846
  return true;
847
847
  }
848
- };
849
- const shallowReactiveHandlers = /* @__PURE__ */ extend(
850
- {},
851
- mutableHandlers,
852
- {
853
- get: shallowGet,
854
- set: shallowSet
855
- }
856
- );
857
- const shallowReadonlyHandlers = /* @__PURE__ */ extend(
858
- {},
859
- readonlyHandlers,
860
- {
861
- get: shallowReadonlyGet
862
- }
848
+ }
849
+ const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();
850
+ const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();
851
+ const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(
852
+ true
863
853
  );
854
+ const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);
864
855
 
865
856
  const toShallow = (value) => value;
866
857
  const getProto = (v) => Reflect.getPrototypeOf(v);
@@ -869,7 +860,7 @@ function get(target, key, isReadonly = false, isShallow = false) {
869
860
  const rawTarget = toRaw(target);
870
861
  const rawKey = toRaw(key);
871
862
  if (!isReadonly) {
872
- if (key !== rawKey) {
863
+ if (hasChanged(key, rawKey)) {
873
864
  track(rawTarget, "get", key);
874
865
  }
875
866
  track(rawTarget, "get", rawKey);
@@ -889,7 +880,7 @@ function has(key, isReadonly = false) {
889
880
  const rawTarget = toRaw(target);
890
881
  const rawKey = toRaw(key);
891
882
  if (!isReadonly) {
892
- if (key !== rawKey) {
883
+ if (hasChanged(key, rawKey)) {
893
884
  track(rawTarget, "has", key);
894
885
  }
895
886
  track(rawTarget, "has", rawKey);
@@ -1419,11 +1410,7 @@ function toRef(source, key, defaultValue) {
1419
1410
  }
1420
1411
  function propertyToRef(source, key, defaultValue) {
1421
1412
  const val = source[key];
1422
- return isRef(val) ? val : new ObjectRefImpl(
1423
- source,
1424
- key,
1425
- defaultValue
1426
- );
1413
+ return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);
1427
1414
  }
1428
1415
 
1429
1416
  class ComputedRefImpl {
@@ -3717,9 +3704,7 @@ function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EM
3717
3704
  }
3718
3705
  if (cb) {
3719
3706
  const newValue = effect.run();
3720
- if (deep || forceTrigger || (isMultiSource ? newValue.some(
3721
- (v, i) => hasChanged(v, oldValue[i])
3722
- ) : hasChanged(newValue, oldValue)) || isArray(newValue) && isCompatEnabled$1("WATCH_ARRAY", instance)) {
3707
+ if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || isArray(newValue) && isCompatEnabled$1("WATCH_ARRAY", instance)) {
3723
3708
  if (cleanup) {
3724
3709
  cleanup();
3725
3710
  }
@@ -3893,6 +3878,8 @@ function invokeDirectiveHook(vnode, prevVNode, instance, name) {
3893
3878
  }
3894
3879
  }
3895
3880
 
3881
+ const leaveCbKey = Symbol("_leaveCb");
3882
+ const enterCbKey$1 = Symbol("_enterCb");
3896
3883
  function useTransitionState() {
3897
3884
  const state = {
3898
3885
  isMounted: false,
@@ -4013,9 +4000,9 @@ const BaseTransitionImpl = {
4013
4000
  oldInnerChild
4014
4001
  );
4015
4002
  leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;
4016
- el._leaveCb = () => {
4003
+ el[leaveCbKey] = () => {
4017
4004
  earlyRemove();
4018
- el._leaveCb = void 0;
4005
+ el[leaveCbKey] = void 0;
4019
4006
  delete enterHooks.delayedLeave;
4020
4007
  };
4021
4008
  enterHooks.delayedLeave = delayedLeave;
@@ -4089,15 +4076,15 @@ function resolveTransitionHooks(vnode, props, state, instance) {
4089
4076
  return;
4090
4077
  }
4091
4078
  }
4092
- if (el._leaveCb) {
4093
- el._leaveCb(
4079
+ if (el[leaveCbKey]) {
4080
+ el[leaveCbKey](
4094
4081
  true
4095
4082
  /* cancelled */
4096
4083
  );
4097
4084
  }
4098
4085
  const leavingVNode = leavingVNodesCache[key];
4099
- if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el._leaveCb) {
4100
- leavingVNode.el._leaveCb();
4086
+ if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {
4087
+ leavingVNode.el[leaveCbKey]();
4101
4088
  }
4102
4089
  callHook(hook, [el]);
4103
4090
  },
@@ -4115,7 +4102,7 @@ function resolveTransitionHooks(vnode, props, state, instance) {
4115
4102
  }
4116
4103
  }
4117
4104
  let called = false;
4118
- const done = el._enterCb = (cancelled) => {
4105
+ const done = el[enterCbKey$1] = (cancelled) => {
4119
4106
  if (called)
4120
4107
  return;
4121
4108
  called = true;
@@ -4127,7 +4114,7 @@ function resolveTransitionHooks(vnode, props, state, instance) {
4127
4114
  if (hooks.delayedLeave) {
4128
4115
  hooks.delayedLeave();
4129
4116
  }
4130
- el._enterCb = void 0;
4117
+ el[enterCbKey$1] = void 0;
4131
4118
  };
4132
4119
  if (hook) {
4133
4120
  callAsyncHook(hook, [el, done]);
@@ -4137,8 +4124,8 @@ function resolveTransitionHooks(vnode, props, state, instance) {
4137
4124
  },
4138
4125
  leave(el, remove) {
4139
4126
  const key2 = String(vnode.key);
4140
- if (el._enterCb) {
4141
- el._enterCb(
4127
+ if (el[enterCbKey$1]) {
4128
+ el[enterCbKey$1](
4142
4129
  true
4143
4130
  /* cancelled */
4144
4131
  );
@@ -4148,7 +4135,7 @@ function resolveTransitionHooks(vnode, props, state, instance) {
4148
4135
  }
4149
4136
  callHook(onBeforeLeave, [el]);
4150
4137
  let called = false;
4151
- const done = el._leaveCb = (cancelled) => {
4138
+ const done = el[leaveCbKey] = (cancelled) => {
4152
4139
  if (called)
4153
4140
  return;
4154
4141
  called = true;
@@ -4158,7 +4145,7 @@ function resolveTransitionHooks(vnode, props, state, instance) {
4158
4145
  } else {
4159
4146
  callHook(onAfterLeave, [el]);
4160
4147
  }
4161
- el._leaveCb = void 0;
4148
+ el[leaveCbKey] = void 0;
4162
4149
  if (leavingVNodesCache[key2] === vnode) {
4163
4150
  delete leavingVNodesCache[key2];
4164
4151
  }
@@ -4220,6 +4207,8 @@ function getTransitionRawChildren(children, keepComment = false, parentKey) {
4220
4207
  return ret;
4221
4208
  }
4222
4209
 
4210
+ /*! #__NO_SIDE_EFFECTS__ */
4211
+ // @__NO_SIDE_EFFECTS__
4223
4212
  function defineComponent(options, extraOptions) {
4224
4213
  return isFunction(options) ? (
4225
4214
  // #8326: extend call and options.name access are considered side-effects
@@ -4229,6 +4218,8 @@ function defineComponent(options, extraOptions) {
4229
4218
  }
4230
4219
 
4231
4220
  const isAsyncWrapper = (i) => !!i.type.__asyncLoader;
4221
+ /*! #__NO_SIDE_EFFECTS__ */
4222
+ // @__NO_SIDE_EFFECTS__
4232
4223
  function defineAsyncComponent(source) {
4233
4224
  if (isFunction(source)) {
4234
4225
  source = { loader: source };
@@ -5241,6 +5232,7 @@ function legacyPrependModifier(value, symbol) {
5241
5232
  function installCompatInstanceProperties(map) {
5242
5233
  const set = (target, key, val) => {
5243
5234
  target[key] = val;
5235
+ return target[key];
5244
5236
  };
5245
5237
  const del = (target, key) => {
5246
5238
  delete target[key];
@@ -5518,7 +5510,7 @@ const RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ extend(
5518
5510
  return PublicInstanceProxyHandlers.get(target, key, target);
5519
5511
  },
5520
5512
  has(_, key) {
5521
- const has = key[0] !== "_" && !isGloballyWhitelisted(key);
5513
+ const has = key[0] !== "_" && !isGloballyAllowed(key);
5522
5514
  if (!has && PublicInstanceProxyHandlers.has(_, key)) {
5523
5515
  warn(
5524
5516
  `Property ${JSON.stringify(
@@ -6255,7 +6247,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
6255
6247
  return vm;
6256
6248
  }
6257
6249
  }
6258
- Vue.version = `2.6.14-compat:${"3.3.4"}`;
6250
+ Vue.version = `2.6.14-compat:${"3.3.5"}`;
6259
6251
  Vue.config = singletonApp.config;
6260
6252
  Vue.use = (p, ...options) => {
6261
6253
  if (p && isFunction(p.install)) {
@@ -6663,7 +6655,7 @@ function createAppAPI(render, hydrate) {
6663
6655
  },
6664
6656
  set() {
6665
6657
  warn(
6666
- `app.config.unwrapInjectedRef has been deprecated. 3.3 now alawys unwraps injected refs in Options API.`
6658
+ `app.config.unwrapInjectedRef has been deprecated. 3.3 now always unwraps injected refs in Options API.`
6667
6659
  );
6668
6660
  }
6669
6661
  });
@@ -6750,10 +6742,7 @@ function createAppAPI(render, hydrate) {
6750
6742
  If you want to mount another app on the same host container, you need to unmount the previous app by calling \`app.unmount()\` first.`
6751
6743
  );
6752
6744
  }
6753
- const vnode = createVNode(
6754
- rootComponent,
6755
- rootProps
6756
- );
6745
+ const vnode = createVNode(rootComponent, rootProps);
6757
6746
  vnode.appContext = context;
6758
6747
  {
6759
6748
  context.reload = () => {
@@ -7576,8 +7565,10 @@ function createHydrationFunctions(rendererInternals) {
7576
7565
  hasMismatch = true;
7577
7566
  warn(
7578
7567
  `Hydration text mismatch:
7579
- - Client: ${JSON.stringify(node.data)}
7580
- - Server: ${JSON.stringify(vnode.children)}`
7568
+ - Server rendered: ${JSON.stringify(
7569
+ node.data
7570
+ )}
7571
+ - Client rendered: ${JSON.stringify(vnode.children)}`
7581
7572
  );
7582
7573
  node.data = vnode.children;
7583
7574
  }
@@ -7780,8 +7771,8 @@ function createHydrationFunctions(rendererInternals) {
7780
7771
  hasMismatch = true;
7781
7772
  warn(
7782
7773
  `Hydration text content mismatch in <${vnode.type}>:
7783
- - Client: ${el.textContent}
7784
- - Server: ${vnode.children}`
7774
+ - Server rendered: ${el.textContent}
7775
+ - Client rendered: ${vnode.children}`
7785
7776
  );
7786
7777
  el.textContent = vnode.children;
7787
7778
  }
@@ -9563,6 +9554,10 @@ const TeleportImpl = {
9563
9554
  internals,
9564
9555
  1
9565
9556
  );
9557
+ } else {
9558
+ if (n2.props && n1.props && n2.props.to !== n1.props.to) {
9559
+ n2.props.to = n1.props.to;
9560
+ }
9566
9561
  }
9567
9562
  } else {
9568
9563
  if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {
@@ -10416,9 +10411,12 @@ function finishComponentSetup(instance, isSSR, skipOptions) {
10416
10411
  if (!skipOptions) {
10417
10412
  setCurrentInstance(instance);
10418
10413
  pauseTracking();
10419
- applyOptions(instance);
10420
- resetTracking();
10421
- unsetCurrentInstance();
10414
+ try {
10415
+ applyOptions(instance);
10416
+ } finally {
10417
+ resetTracking();
10418
+ unsetCurrentInstance();
10419
+ }
10422
10420
  }
10423
10421
  if (!Component.render && instance.render === NOOP && !isSSR) {
10424
10422
  if (!compile$1 && Component.template) {
@@ -10784,7 +10782,7 @@ function isMemoSame(cached, memo) {
10784
10782
  return true;
10785
10783
  }
10786
10784
 
10787
- const version = "3.3.4";
10785
+ const version = "3.3.5";
10788
10786
  const ssrUtils = null;
10789
10787
  const resolveFilter = resolveFilter$1 ;
10790
10788
  const _compatUtils = {
@@ -10863,934 +10861,989 @@ const nodeOps = {
10863
10861
  }
10864
10862
  };
10865
10863
 
10866
- function patchClass(el, value, isSVG) {
10867
- const transitionClasses = el._vtc;
10868
- if (transitionClasses) {
10869
- value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(" ");
10870
- }
10871
- if (value == null) {
10872
- el.removeAttribute("class");
10873
- } else if (isSVG) {
10874
- el.setAttribute("class", value);
10875
- } else {
10876
- el.className = value;
10877
- }
10864
+ const TRANSITION$1 = "transition";
10865
+ const ANIMATION = "animation";
10866
+ const vtcKey = Symbol("_vtc");
10867
+ const Transition = (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots);
10868
+ Transition.displayName = "Transition";
10869
+ {
10870
+ Transition.__isBuiltIn = true;
10878
10871
  }
10879
-
10880
- function patchStyle(el, prev, next) {
10881
- const style = el.style;
10882
- const isCssString = isString(next);
10883
- if (next && !isCssString) {
10884
- if (prev && !isString(prev)) {
10885
- for (const key in prev) {
10886
- if (next[key] == null) {
10887
- setStyle(style, key, "");
10888
- }
10889
- }
10890
- }
10891
- for (const key in next) {
10892
- setStyle(style, key, next[key]);
10893
- }
10894
- } else {
10895
- const currentDisplay = style.display;
10896
- if (isCssString) {
10897
- if (prev !== next) {
10898
- style.cssText = next;
10899
- }
10900
- } else if (prev) {
10901
- el.removeAttribute("style");
10902
- }
10903
- if ("_vod" in el) {
10904
- style.display = currentDisplay;
10905
- }
10872
+ const DOMTransitionPropsValidators = {
10873
+ name: String,
10874
+ type: String,
10875
+ css: {
10876
+ type: Boolean,
10877
+ default: true
10878
+ },
10879
+ duration: [String, Number, Object],
10880
+ enterFromClass: String,
10881
+ enterActiveClass: String,
10882
+ enterToClass: String,
10883
+ appearFromClass: String,
10884
+ appearActiveClass: String,
10885
+ appearToClass: String,
10886
+ leaveFromClass: String,
10887
+ leaveActiveClass: String,
10888
+ leaveToClass: String
10889
+ };
10890
+ const TransitionPropsValidators = Transition.props = /* @__PURE__ */ extend(
10891
+ {},
10892
+ BaseTransitionPropsValidators,
10893
+ DOMTransitionPropsValidators
10894
+ );
10895
+ const callHook = (hook, args = []) => {
10896
+ if (isArray(hook)) {
10897
+ hook.forEach((h2) => h2(...args));
10898
+ } else if (hook) {
10899
+ hook(...args);
10906
10900
  }
10907
- }
10908
- const semicolonRE = /[^\\];\s*$/;
10909
- const importantRE = /\s*!important$/;
10910
- function setStyle(style, name, val) {
10911
- if (isArray(val)) {
10912
- val.forEach((v) => setStyle(style, name, v));
10913
- } else {
10914
- if (val == null)
10915
- val = "";
10916
- {
10917
- if (semicolonRE.test(val)) {
10918
- warn(
10919
- `Unexpected semicolon at the end of '${name}' style value: '${val}'`
10920
- );
10921
- }
10922
- }
10923
- if (name.startsWith("--")) {
10924
- style.setProperty(name, val);
10925
- } else {
10926
- const prefixed = autoPrefix(style, name);
10927
- if (importantRE.test(val)) {
10928
- style.setProperty(
10929
- hyphenate(prefixed),
10930
- val.replace(importantRE, ""),
10931
- "important"
10932
- );
10933
- } else {
10934
- style[prefixed] = val;
10935
- }
10901
+ };
10902
+ const hasExplicitCallback = (hook) => {
10903
+ return hook ? isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false;
10904
+ };
10905
+ function resolveTransitionProps(rawProps) {
10906
+ const baseProps = {};
10907
+ for (const key in rawProps) {
10908
+ if (!(key in DOMTransitionPropsValidators)) {
10909
+ baseProps[key] = rawProps[key];
10936
10910
  }
10937
10911
  }
10938
- }
10939
- const prefixes = ["Webkit", "Moz", "ms"];
10940
- const prefixCache = {};
10941
- function autoPrefix(style, rawName) {
10942
- const cached = prefixCache[rawName];
10943
- if (cached) {
10944
- return cached;
10945
- }
10946
- let name = camelize(rawName);
10947
- if (name !== "filter" && name in style) {
10948
- return prefixCache[rawName] = name;
10949
- }
10950
- name = capitalize(name);
10951
- for (let i = 0; i < prefixes.length; i++) {
10952
- const prefixed = prefixes[i] + name;
10953
- if (prefixed in style) {
10954
- return prefixCache[rawName] = prefixed;
10955
- }
10912
+ if (rawProps.css === false) {
10913
+ return baseProps;
10956
10914
  }
10957
- return rawName;
10958
- }
10959
-
10960
- const xlinkNS = "http://www.w3.org/1999/xlink";
10961
- function patchAttr(el, key, value, isSVG, instance) {
10962
- if (isSVG && key.startsWith("xlink:")) {
10963
- if (value == null) {
10964
- el.removeAttributeNS(xlinkNS, key.slice(6, key.length));
10965
- } else {
10966
- el.setAttributeNS(xlinkNS, key, value);
10967
- }
10968
- } else {
10969
- if (compatCoerceAttr(el, key, value, instance)) {
10970
- return;
10915
+ const {
10916
+ name = "v",
10917
+ type,
10918
+ duration,
10919
+ enterFromClass = `${name}-enter-from`,
10920
+ enterActiveClass = `${name}-enter-active`,
10921
+ enterToClass = `${name}-enter-to`,
10922
+ appearFromClass = enterFromClass,
10923
+ appearActiveClass = enterActiveClass,
10924
+ appearToClass = enterToClass,
10925
+ leaveFromClass = `${name}-leave-from`,
10926
+ leaveActiveClass = `${name}-leave-active`,
10927
+ leaveToClass = `${name}-leave-to`
10928
+ } = rawProps;
10929
+ const legacyClassEnabled = compatUtils.isCompatEnabled("TRANSITION_CLASSES", null);
10930
+ let legacyEnterFromClass;
10931
+ let legacyAppearFromClass;
10932
+ let legacyLeaveFromClass;
10933
+ if (legacyClassEnabled) {
10934
+ const toLegacyClass = (cls) => cls.replace(/-from$/, "");
10935
+ if (!rawProps.enterFromClass) {
10936
+ legacyEnterFromClass = toLegacyClass(enterFromClass);
10971
10937
  }
10972
- const isBoolean = isSpecialBooleanAttr(key);
10973
- if (value == null || isBoolean && !includeBooleanAttr(value)) {
10974
- el.removeAttribute(key);
10975
- } else {
10976
- el.setAttribute(key, isBoolean ? "" : value);
10938
+ if (!rawProps.appearFromClass) {
10939
+ legacyAppearFromClass = toLegacyClass(appearFromClass);
10977
10940
  }
10978
- }
10979
- }
10980
- const isEnumeratedAttr = /* @__PURE__ */ makeMap("contenteditable,draggable,spellcheck") ;
10981
- function compatCoerceAttr(el, key, value, instance = null) {
10982
- if (isEnumeratedAttr(key)) {
10983
- const v2CoercedValue = value === null ? "false" : typeof value !== "boolean" && value !== void 0 ? "true" : null;
10984
- if (v2CoercedValue && compatUtils.softAssertCompatEnabled(
10985
- "ATTR_ENUMERATED_COERCION",
10986
- instance,
10987
- key,
10988
- value,
10989
- v2CoercedValue
10990
- )) {
10991
- el.setAttribute(key, v2CoercedValue);
10992
- return true;
10941
+ if (!rawProps.leaveFromClass) {
10942
+ legacyLeaveFromClass = toLegacyClass(leaveFromClass);
10993
10943
  }
10994
- } else if (value === false && !isSpecialBooleanAttr(key) && compatUtils.softAssertCompatEnabled(
10995
- "ATTR_FALSE_VALUE",
10996
- instance,
10997
- key
10998
- )) {
10999
- el.removeAttribute(key);
11000
- return true;
11001
10944
  }
11002
- return false;
11003
- }
11004
-
11005
- function patchDOMProp(el, key, value, prevChildren, parentComponent, parentSuspense, unmountChildren) {
11006
- if (key === "innerHTML" || key === "textContent") {
11007
- if (prevChildren) {
11008
- unmountChildren(prevChildren, parentComponent, parentSuspense);
11009
- }
11010
- el[key] = value == null ? "" : value;
11011
- return;
11012
- }
11013
- const tag = el.tagName;
11014
- if (key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally
11015
- !tag.includes("-")) {
11016
- el._value = value;
11017
- const oldValue = tag === "OPTION" ? el.getAttribute("value") : el.value;
11018
- const newValue = value == null ? "" : value;
11019
- if (oldValue !== newValue) {
11020
- el.value = newValue;
11021
- }
11022
- if (value == null) {
11023
- el.removeAttribute(key);
11024
- }
11025
- return;
11026
- }
11027
- let needRemove = false;
11028
- if (value === "" || value == null) {
11029
- const type = typeof el[key];
11030
- if (type === "boolean") {
11031
- value = includeBooleanAttr(value);
11032
- } else if (value == null && type === "string") {
11033
- value = "";
11034
- needRemove = true;
11035
- } else if (type === "number") {
11036
- value = 0;
11037
- needRemove = true;
11038
- }
11039
- } else {
11040
- if (value === false && compatUtils.isCompatEnabled(
11041
- "ATTR_FALSE_VALUE",
11042
- parentComponent
11043
- )) {
11044
- const type = typeof el[key];
11045
- if (type === "string" || type === "number") {
11046
- compatUtils.warnDeprecation(
11047
- "ATTR_FALSE_VALUE",
11048
- parentComponent,
11049
- key
11050
- );
11051
- value = type === "number" ? 0 : "";
11052
- needRemove = true;
10945
+ const durations = normalizeDuration(duration);
10946
+ const enterDuration = durations && durations[0];
10947
+ const leaveDuration = durations && durations[1];
10948
+ const {
10949
+ onBeforeEnter,
10950
+ onEnter,
10951
+ onEnterCancelled,
10952
+ onLeave,
10953
+ onLeaveCancelled,
10954
+ onBeforeAppear = onBeforeEnter,
10955
+ onAppear = onEnter,
10956
+ onAppearCancelled = onEnterCancelled
10957
+ } = baseProps;
10958
+ const finishEnter = (el, isAppear, done) => {
10959
+ removeTransitionClass(el, isAppear ? appearToClass : enterToClass);
10960
+ removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);
10961
+ done && done();
10962
+ };
10963
+ const finishLeave = (el, done) => {
10964
+ el._isLeaving = false;
10965
+ removeTransitionClass(el, leaveFromClass);
10966
+ removeTransitionClass(el, leaveToClass);
10967
+ removeTransitionClass(el, leaveActiveClass);
10968
+ done && done();
10969
+ };
10970
+ const makeEnterHook = (isAppear) => {
10971
+ return (el, done) => {
10972
+ const hook = isAppear ? onAppear : onEnter;
10973
+ const resolve = () => finishEnter(el, isAppear, done);
10974
+ callHook(hook, [el, resolve]);
10975
+ nextFrame(() => {
10976
+ removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);
10977
+ if (legacyClassEnabled) {
10978
+ const legacyClass = isAppear ? legacyAppearFromClass : legacyEnterFromClass;
10979
+ if (legacyClass) {
10980
+ removeTransitionClass(el, legacyClass);
10981
+ }
10982
+ }
10983
+ addTransitionClass(el, isAppear ? appearToClass : enterToClass);
10984
+ if (!hasExplicitCallback(hook)) {
10985
+ whenTransitionEnds(el, type, enterDuration, resolve);
10986
+ }
10987
+ });
10988
+ };
10989
+ };
10990
+ return extend(baseProps, {
10991
+ onBeforeEnter(el) {
10992
+ callHook(onBeforeEnter, [el]);
10993
+ addTransitionClass(el, enterFromClass);
10994
+ if (legacyClassEnabled && legacyEnterFromClass) {
10995
+ addTransitionClass(el, legacyEnterFromClass);
11053
10996
  }
10997
+ addTransitionClass(el, enterActiveClass);
10998
+ },
10999
+ onBeforeAppear(el) {
11000
+ callHook(onBeforeAppear, [el]);
11001
+ addTransitionClass(el, appearFromClass);
11002
+ if (legacyClassEnabled && legacyAppearFromClass) {
11003
+ addTransitionClass(el, legacyAppearFromClass);
11004
+ }
11005
+ addTransitionClass(el, appearActiveClass);
11006
+ },
11007
+ onEnter: makeEnterHook(false),
11008
+ onAppear: makeEnterHook(true),
11009
+ onLeave(el, done) {
11010
+ el._isLeaving = true;
11011
+ const resolve = () => finishLeave(el, done);
11012
+ addTransitionClass(el, leaveFromClass);
11013
+ if (legacyClassEnabled && legacyLeaveFromClass) {
11014
+ addTransitionClass(el, legacyLeaveFromClass);
11015
+ }
11016
+ forceReflow();
11017
+ addTransitionClass(el, leaveActiveClass);
11018
+ nextFrame(() => {
11019
+ if (!el._isLeaving) {
11020
+ return;
11021
+ }
11022
+ removeTransitionClass(el, leaveFromClass);
11023
+ if (legacyClassEnabled && legacyLeaveFromClass) {
11024
+ removeTransitionClass(el, legacyLeaveFromClass);
11025
+ }
11026
+ addTransitionClass(el, leaveToClass);
11027
+ if (!hasExplicitCallback(onLeave)) {
11028
+ whenTransitionEnds(el, type, leaveDuration, resolve);
11029
+ }
11030
+ });
11031
+ callHook(onLeave, [el, resolve]);
11032
+ },
11033
+ onEnterCancelled(el) {
11034
+ finishEnter(el, false);
11035
+ callHook(onEnterCancelled, [el]);
11036
+ },
11037
+ onAppearCancelled(el) {
11038
+ finishEnter(el, true);
11039
+ callHook(onAppearCancelled, [el]);
11040
+ },
11041
+ onLeaveCancelled(el) {
11042
+ finishLeave(el);
11043
+ callHook(onLeaveCancelled, [el]);
11054
11044
  }
11045
+ });
11046
+ }
11047
+ function normalizeDuration(duration) {
11048
+ if (duration == null) {
11049
+ return null;
11050
+ } else if (isObject(duration)) {
11051
+ return [NumberOf(duration.enter), NumberOf(duration.leave)];
11052
+ } else {
11053
+ const n = NumberOf(duration);
11054
+ return [n, n];
11055
11055
  }
11056
- try {
11057
- el[key] = value;
11058
- } catch (e) {
11059
- if (!needRemove) {
11060
- warn(
11061
- `Failed setting prop "${key}" on <${tag.toLowerCase()}>: value ${value} is invalid.`,
11062
- e
11063
- );
11064
- }
11065
- }
11066
- needRemove && el.removeAttribute(key);
11067
11056
  }
11068
-
11069
- function addEventListener(el, event, handler, options) {
11070
- el.addEventListener(event, handler, options);
11057
+ function NumberOf(val) {
11058
+ const res = toNumber(val);
11059
+ {
11060
+ assertNumber(res, "<transition> explicit duration");
11061
+ }
11062
+ return res;
11071
11063
  }
11072
- function removeEventListener(el, event, handler, options) {
11073
- el.removeEventListener(event, handler, options);
11064
+ function addTransitionClass(el, cls) {
11065
+ cls.split(/\s+/).forEach((c) => c && el.classList.add(c));
11066
+ (el[vtcKey] || (el[vtcKey] = /* @__PURE__ */ new Set())).add(cls);
11074
11067
  }
11075
- function patchEvent(el, rawName, prevValue, nextValue, instance = null) {
11076
- const invokers = el._vei || (el._vei = {});
11077
- const existingInvoker = invokers[rawName];
11078
- if (nextValue && existingInvoker) {
11079
- existingInvoker.value = nextValue;
11080
- } else {
11081
- const [name, options] = parseName(rawName);
11082
- if (nextValue) {
11083
- const invoker = invokers[rawName] = createInvoker(nextValue, instance);
11084
- addEventListener(el, name, invoker, options);
11085
- } else if (existingInvoker) {
11086
- removeEventListener(el, name, existingInvoker, options);
11087
- invokers[rawName] = void 0;
11068
+ function removeTransitionClass(el, cls) {
11069
+ cls.split(/\s+/).forEach((c) => c && el.classList.remove(c));
11070
+ const _vtc = el[vtcKey];
11071
+ if (_vtc) {
11072
+ _vtc.delete(cls);
11073
+ if (!_vtc.size) {
11074
+ el[vtcKey] = void 0;
11088
11075
  }
11089
11076
  }
11090
11077
  }
11091
- const optionsModifierRE = /(?:Once|Passive|Capture)$/;
11092
- function parseName(name) {
11093
- let options;
11094
- if (optionsModifierRE.test(name)) {
11095
- options = {};
11096
- let m;
11097
- while (m = name.match(optionsModifierRE)) {
11098
- name = name.slice(0, name.length - m[0].length);
11099
- options[m[0].toLowerCase()] = true;
11100
- }
11101
- }
11102
- const event = name[2] === ":" ? name.slice(3) : hyphenate(name.slice(2));
11103
- return [event, options];
11078
+ function nextFrame(cb) {
11079
+ requestAnimationFrame(() => {
11080
+ requestAnimationFrame(cb);
11081
+ });
11104
11082
  }
11105
- let cachedNow = 0;
11106
- const p = /* @__PURE__ */ Promise.resolve();
11107
- const getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now());
11108
- function createInvoker(initialValue, instance) {
11109
- const invoker = (e) => {
11110
- if (!e._vts) {
11111
- e._vts = Date.now();
11112
- } else if (e._vts <= invoker.attached) {
11113
- return;
11083
+ let endId = 0;
11084
+ function whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {
11085
+ const id = el._endId = ++endId;
11086
+ const resolveIfNotStale = () => {
11087
+ if (id === el._endId) {
11088
+ resolve();
11114
11089
  }
11115
- callWithAsyncErrorHandling(
11116
- patchStopImmediatePropagation(e, invoker.value),
11117
- instance,
11118
- 5,
11119
- [e]
11120
- );
11121
11090
  };
11122
- invoker.value = initialValue;
11123
- invoker.attached = getNow();
11124
- return invoker;
11125
- }
11126
- function patchStopImmediatePropagation(e, value) {
11127
- if (isArray(value)) {
11128
- const originalStop = e.stopImmediatePropagation;
11129
- e.stopImmediatePropagation = () => {
11130
- originalStop.call(e);
11131
- e._stopped = true;
11132
- };
11133
- return value.map((fn) => (e2) => !e2._stopped && fn && fn(e2));
11134
- } else {
11135
- return value;
11091
+ if (explicitTimeout) {
11092
+ return setTimeout(resolveIfNotStale, explicitTimeout);
11136
11093
  }
11137
- }
11138
-
11139
- const nativeOnRE = /^on[a-z]/;
11140
- const patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {
11141
- if (key === "class") {
11142
- patchClass(el, nextValue, isSVG);
11143
- } else if (key === "style") {
11144
- patchStyle(el, prevValue, nextValue);
11145
- } else if (isOn(key)) {
11146
- if (!isModelListener(key)) {
11147
- patchEvent(el, key, prevValue, nextValue, parentComponent);
11094
+ const { type, timeout, propCount } = getTransitionInfo(el, expectedType);
11095
+ if (!type) {
11096
+ return resolve();
11097
+ }
11098
+ const endEvent = type + "end";
11099
+ let ended = 0;
11100
+ const end = () => {
11101
+ el.removeEventListener(endEvent, onEnd);
11102
+ resolveIfNotStale();
11103
+ };
11104
+ const onEnd = (e) => {
11105
+ if (e.target === el && ++ended >= propCount) {
11106
+ end();
11148
11107
  }
11149
- } else if (key[0] === "." ? (key = key.slice(1), true) : key[0] === "^" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) {
11150
- patchDOMProp(
11151
- el,
11152
- key,
11153
- nextValue,
11154
- prevChildren,
11155
- parentComponent,
11156
- parentSuspense,
11157
- unmountChildren
11158
- );
11159
- } else {
11160
- if (key === "true-value") {
11161
- el._trueValue = nextValue;
11162
- } else if (key === "false-value") {
11163
- el._falseValue = nextValue;
11108
+ };
11109
+ setTimeout(() => {
11110
+ if (ended < propCount) {
11111
+ end();
11164
11112
  }
11165
- patchAttr(el, key, nextValue, isSVG, parentComponent);
11166
- }
11167
- };
11168
- function shouldSetAsProp(el, key, value, isSVG) {
11169
- if (isSVG) {
11170
- if (key === "innerHTML" || key === "textContent") {
11171
- return true;
11113
+ }, timeout + 1);
11114
+ el.addEventListener(endEvent, onEnd);
11115
+ }
11116
+ function getTransitionInfo(el, expectedType) {
11117
+ const styles = window.getComputedStyle(el);
11118
+ const getStyleProperties = (key) => (styles[key] || "").split(", ");
11119
+ const transitionDelays = getStyleProperties(`${TRANSITION$1}Delay`);
11120
+ const transitionDurations = getStyleProperties(`${TRANSITION$1}Duration`);
11121
+ const transitionTimeout = getTimeout(transitionDelays, transitionDurations);
11122
+ const animationDelays = getStyleProperties(`${ANIMATION}Delay`);
11123
+ const animationDurations = getStyleProperties(`${ANIMATION}Duration`);
11124
+ const animationTimeout = getTimeout(animationDelays, animationDurations);
11125
+ let type = null;
11126
+ let timeout = 0;
11127
+ let propCount = 0;
11128
+ if (expectedType === TRANSITION$1) {
11129
+ if (transitionTimeout > 0) {
11130
+ type = TRANSITION$1;
11131
+ timeout = transitionTimeout;
11132
+ propCount = transitionDurations.length;
11172
11133
  }
11173
- if (key in el && nativeOnRE.test(key) && isFunction(value)) {
11174
- return true;
11134
+ } else if (expectedType === ANIMATION) {
11135
+ if (animationTimeout > 0) {
11136
+ type = ANIMATION;
11137
+ timeout = animationTimeout;
11138
+ propCount = animationDurations.length;
11175
11139
  }
11176
- return false;
11177
- }
11178
- if (key === "spellcheck" || key === "draggable" || key === "translate") {
11179
- return false;
11140
+ } else {
11141
+ timeout = Math.max(transitionTimeout, animationTimeout);
11142
+ type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION$1 : ANIMATION : null;
11143
+ propCount = type ? type === TRANSITION$1 ? transitionDurations.length : animationDurations.length : 0;
11180
11144
  }
11181
- if (key === "form") {
11182
- return false;
11145
+ const hasTransform = type === TRANSITION$1 && /\b(transform|all)(,|$)/.test(
11146
+ getStyleProperties(`${TRANSITION$1}Property`).toString()
11147
+ );
11148
+ return {
11149
+ type,
11150
+ timeout,
11151
+ propCount,
11152
+ hasTransform
11153
+ };
11154
+ }
11155
+ function getTimeout(delays, durations) {
11156
+ while (delays.length < durations.length) {
11157
+ delays = delays.concat(delays);
11183
11158
  }
11184
- if (key === "list" && el.tagName === "INPUT") {
11185
- return false;
11159
+ return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));
11160
+ }
11161
+ function toMs(s) {
11162
+ if (s === "auto")
11163
+ return 0;
11164
+ return Number(s.slice(0, -1).replace(",", ".")) * 1e3;
11165
+ }
11166
+ function forceReflow() {
11167
+ return document.body.offsetHeight;
11168
+ }
11169
+
11170
+ function patchClass(el, value, isSVG) {
11171
+ const transitionClasses = el[vtcKey];
11172
+ if (transitionClasses) {
11173
+ value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(" ");
11186
11174
  }
11187
- if (key === "type" && el.tagName === "TEXTAREA") {
11188
- return false;
11175
+ if (value == null) {
11176
+ el.removeAttribute("class");
11177
+ } else if (isSVG) {
11178
+ el.setAttribute("class", value);
11179
+ } else {
11180
+ el.className = value;
11189
11181
  }
11190
- if (nativeOnRE.test(key) && isString(value)) {
11191
- return false;
11182
+ }
11183
+
11184
+ const vShowOldKey = Symbol("_vod");
11185
+ const vShow = {
11186
+ beforeMount(el, { value }, { transition }) {
11187
+ el[vShowOldKey] = el.style.display === "none" ? "" : el.style.display;
11188
+ if (transition && value) {
11189
+ transition.beforeEnter(el);
11190
+ } else {
11191
+ setDisplay(el, value);
11192
+ }
11193
+ },
11194
+ mounted(el, { value }, { transition }) {
11195
+ if (transition && value) {
11196
+ transition.enter(el);
11197
+ }
11198
+ },
11199
+ updated(el, { value, oldValue }, { transition }) {
11200
+ if (!value === !oldValue)
11201
+ return;
11202
+ if (transition) {
11203
+ if (value) {
11204
+ transition.beforeEnter(el);
11205
+ setDisplay(el, true);
11206
+ transition.enter(el);
11207
+ } else {
11208
+ transition.leave(el, () => {
11209
+ setDisplay(el, false);
11210
+ });
11211
+ }
11212
+ } else {
11213
+ setDisplay(el, value);
11214
+ }
11215
+ },
11216
+ beforeUnmount(el, { value }) {
11217
+ setDisplay(el, value);
11192
11218
  }
11193
- return key in el;
11219
+ };
11220
+ function setDisplay(el, value) {
11221
+ el.style.display = value ? el[vShowOldKey] : "none";
11194
11222
  }
11195
11223
 
11196
- function defineCustomElement(options, hydrate2) {
11197
- const Comp = defineComponent(options);
11198
- class VueCustomElement extends VueElement {
11199
- constructor(initialProps) {
11200
- super(Comp, initialProps, hydrate2);
11224
+ function patchStyle(el, prev, next) {
11225
+ const style = el.style;
11226
+ const isCssString = isString(next);
11227
+ if (next && !isCssString) {
11228
+ if (prev && !isString(prev)) {
11229
+ for (const key in prev) {
11230
+ if (next[key] == null) {
11231
+ setStyle(style, key, "");
11232
+ }
11233
+ }
11234
+ }
11235
+ for (const key in next) {
11236
+ setStyle(style, key, next[key]);
11237
+ }
11238
+ } else {
11239
+ const currentDisplay = style.display;
11240
+ if (isCssString) {
11241
+ if (prev !== next) {
11242
+ style.cssText = next;
11243
+ }
11244
+ } else if (prev) {
11245
+ el.removeAttribute("style");
11246
+ }
11247
+ if (vShowOldKey in el) {
11248
+ style.display = currentDisplay;
11201
11249
  }
11202
11250
  }
11203
- VueCustomElement.def = Comp;
11204
- return VueCustomElement;
11205
11251
  }
11206
- const defineSSRCustomElement = (options) => {
11207
- return defineCustomElement(options, hydrate);
11208
- };
11209
- const BaseClass = typeof HTMLElement !== "undefined" ? HTMLElement : class {
11210
- };
11211
- class VueElement extends BaseClass {
11212
- constructor(_def, _props = {}, hydrate2) {
11213
- super();
11214
- this._def = _def;
11215
- this._props = _props;
11216
- /**
11217
- * @internal
11218
- */
11219
- this._instance = null;
11220
- this._connected = false;
11221
- this._resolved = false;
11222
- this._numberProps = null;
11223
- if (this.shadowRoot && hydrate2) {
11224
- hydrate2(this._createVNode(), this.shadowRoot);
11225
- } else {
11226
- if (this.shadowRoot) {
11252
+ const semicolonRE = /[^\\];\s*$/;
11253
+ const importantRE = /\s*!important$/;
11254
+ function setStyle(style, name, val) {
11255
+ if (isArray(val)) {
11256
+ val.forEach((v) => setStyle(style, name, v));
11257
+ } else {
11258
+ if (val == null)
11259
+ val = "";
11260
+ {
11261
+ if (semicolonRE.test(val)) {
11227
11262
  warn(
11228
- `Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use \`defineSSRCustomElement\`.`
11263
+ `Unexpected semicolon at the end of '${name}' style value: '${val}'`
11229
11264
  );
11230
11265
  }
11231
- this.attachShadow({ mode: "open" });
11232
- if (!this._def.__asyncLoader) {
11233
- this._resolveProps(this._def);
11234
- }
11235
11266
  }
11236
- }
11237
- connectedCallback() {
11238
- this._connected = true;
11239
- if (!this._instance) {
11240
- if (this._resolved) {
11241
- this._update();
11267
+ if (name.startsWith("--")) {
11268
+ style.setProperty(name, val);
11269
+ } else {
11270
+ const prefixed = autoPrefix(style, name);
11271
+ if (importantRE.test(val)) {
11272
+ style.setProperty(
11273
+ hyphenate(prefixed),
11274
+ val.replace(importantRE, ""),
11275
+ "important"
11276
+ );
11242
11277
  } else {
11243
- this._resolveDef();
11278
+ style[prefixed] = val;
11244
11279
  }
11245
11280
  }
11246
11281
  }
11247
- disconnectedCallback() {
11248
- this._connected = false;
11249
- nextTick(() => {
11250
- if (!this._connected) {
11251
- render(null, this.shadowRoot);
11252
- this._instance = null;
11253
- }
11254
- });
11282
+ }
11283
+ const prefixes = ["Webkit", "Moz", "ms"];
11284
+ const prefixCache = {};
11285
+ function autoPrefix(style, rawName) {
11286
+ const cached = prefixCache[rawName];
11287
+ if (cached) {
11288
+ return cached;
11255
11289
  }
11256
- /**
11257
- * resolve inner component definition (handle possible async component)
11258
- */
11259
- _resolveDef() {
11260
- this._resolved = true;
11261
- for (let i = 0; i < this.attributes.length; i++) {
11262
- this._setAttr(this.attributes[i].name);
11290
+ let name = camelize(rawName);
11291
+ if (name !== "filter" && name in style) {
11292
+ return prefixCache[rawName] = name;
11293
+ }
11294
+ name = capitalize(name);
11295
+ for (let i = 0; i < prefixes.length; i++) {
11296
+ const prefixed = prefixes[i] + name;
11297
+ if (prefixed in style) {
11298
+ return prefixCache[rawName] = prefixed;
11263
11299
  }
11264
- new MutationObserver((mutations) => {
11265
- for (const m of mutations) {
11266
- this._setAttr(m.attributeName);
11267
- }
11268
- }).observe(this, { attributes: true });
11269
- const resolve = (def, isAsync = false) => {
11270
- const { props, styles } = def;
11271
- let numberProps;
11272
- if (props && !isArray(props)) {
11273
- for (const key in props) {
11274
- const opt = props[key];
11275
- if (opt === Number || opt && opt.type === Number) {
11276
- if (key in this._props) {
11277
- this._props[key] = toNumber(this._props[key]);
11278
- }
11279
- (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[camelize(key)] = true;
11280
- }
11281
- }
11282
- }
11283
- this._numberProps = numberProps;
11284
- if (isAsync) {
11285
- this._resolveProps(def);
11286
- }
11287
- this._applyStyles(styles);
11288
- this._update();
11289
- };
11290
- const asyncDef = this._def.__asyncLoader;
11291
- if (asyncDef) {
11292
- asyncDef().then((def) => resolve(def, true));
11300
+ }
11301
+ return rawName;
11302
+ }
11303
+
11304
+ const xlinkNS = "http://www.w3.org/1999/xlink";
11305
+ function patchAttr(el, key, value, isSVG, instance) {
11306
+ if (isSVG && key.startsWith("xlink:")) {
11307
+ if (value == null) {
11308
+ el.removeAttributeNS(xlinkNS, key.slice(6, key.length));
11293
11309
  } else {
11294
- resolve(this._def);
11310
+ el.setAttributeNS(xlinkNS, key, value);
11295
11311
  }
11296
- }
11297
- _resolveProps(def) {
11298
- const { props } = def;
11299
- const declaredPropKeys = isArray(props) ? props : Object.keys(props || {});
11300
- for (const key of Object.keys(this)) {
11301
- if (key[0] !== "_" && declaredPropKeys.includes(key)) {
11302
- this._setProp(key, this[key], true, false);
11303
- }
11312
+ } else {
11313
+ if (compatCoerceAttr(el, key, value, instance)) {
11314
+ return;
11304
11315
  }
11305
- for (const key of declaredPropKeys.map(camelize)) {
11306
- Object.defineProperty(this, key, {
11307
- get() {
11308
- return this._getProp(key);
11309
- },
11310
- set(val) {
11311
- this._setProp(key, val);
11312
- }
11313
- });
11316
+ const isBoolean = isSpecialBooleanAttr(key);
11317
+ if (value == null || isBoolean && !includeBooleanAttr(value)) {
11318
+ el.removeAttribute(key);
11319
+ } else {
11320
+ el.setAttribute(key, isBoolean ? "" : value);
11314
11321
  }
11315
11322
  }
11316
- _setAttr(key) {
11317
- let value = this.getAttribute(key);
11318
- const camelKey = camelize(key);
11319
- if (this._numberProps && this._numberProps[camelKey]) {
11320
- value = toNumber(value);
11323
+ }
11324
+ const isEnumeratedAttr = /* @__PURE__ */ makeMap("contenteditable,draggable,spellcheck") ;
11325
+ function compatCoerceAttr(el, key, value, instance = null) {
11326
+ if (isEnumeratedAttr(key)) {
11327
+ const v2CoercedValue = value === null ? "false" : typeof value !== "boolean" && value !== void 0 ? "true" : null;
11328
+ if (v2CoercedValue && compatUtils.softAssertCompatEnabled(
11329
+ "ATTR_ENUMERATED_COERCION",
11330
+ instance,
11331
+ key,
11332
+ value,
11333
+ v2CoercedValue
11334
+ )) {
11335
+ el.setAttribute(key, v2CoercedValue);
11336
+ return true;
11321
11337
  }
11322
- this._setProp(camelKey, value, false);
11323
- }
11324
- /**
11325
- * @internal
11326
- */
11327
- _getProp(key) {
11328
- return this._props[key];
11338
+ } else if (value === false && !isSpecialBooleanAttr(key) && compatUtils.softAssertCompatEnabled(
11339
+ "ATTR_FALSE_VALUE",
11340
+ instance,
11341
+ key
11342
+ )) {
11343
+ el.removeAttribute(key);
11344
+ return true;
11329
11345
  }
11330
- /**
11331
- * @internal
11332
- */
11333
- _setProp(key, val, shouldReflect = true, shouldUpdate = true) {
11334
- if (val !== this._props[key]) {
11335
- this._props[key] = val;
11336
- if (shouldUpdate && this._instance) {
11337
- this._update();
11338
- }
11339
- if (shouldReflect) {
11340
- if (val === true) {
11341
- this.setAttribute(hyphenate(key), "");
11342
- } else if (typeof val === "string" || typeof val === "number") {
11343
- this.setAttribute(hyphenate(key), val + "");
11344
- } else if (!val) {
11345
- this.removeAttribute(hyphenate(key));
11346
- }
11347
- }
11346
+ return false;
11347
+ }
11348
+
11349
+ function patchDOMProp(el, key, value, prevChildren, parentComponent, parentSuspense, unmountChildren) {
11350
+ if (key === "innerHTML" || key === "textContent") {
11351
+ if (prevChildren) {
11352
+ unmountChildren(prevChildren, parentComponent, parentSuspense);
11348
11353
  }
11354
+ el[key] = value == null ? "" : value;
11355
+ return;
11349
11356
  }
11350
- _update() {
11351
- render(this._createVNode(), this.shadowRoot);
11352
- }
11353
- _createVNode() {
11354
- const vnode = createVNode(this._def, extend({}, this._props));
11355
- if (!this._instance) {
11356
- vnode.ce = (instance) => {
11357
- this._instance = instance;
11358
- instance.isCE = true;
11359
- {
11360
- instance.ceReload = (newStyles) => {
11361
- if (this._styles) {
11362
- this._styles.forEach((s) => this.shadowRoot.removeChild(s));
11363
- this._styles.length = 0;
11364
- }
11365
- this._applyStyles(newStyles);
11366
- this._instance = null;
11367
- this._update();
11368
- };
11369
- }
11370
- const dispatch = (event, args) => {
11371
- this.dispatchEvent(
11372
- new CustomEvent(event, {
11373
- detail: args
11374
- })
11375
- );
11376
- };
11377
- instance.emit = (event, ...args) => {
11378
- dispatch(event, args);
11379
- if (hyphenate(event) !== event) {
11380
- dispatch(hyphenate(event), args);
11381
- }
11382
- };
11383
- let parent = this;
11384
- while (parent = parent && (parent.parentNode || parent.host)) {
11385
- if (parent instanceof VueElement) {
11386
- instance.parent = parent._instance;
11387
- instance.provides = parent._instance.provides;
11388
- break;
11389
- }
11390
- }
11391
- };
11357
+ const tag = el.tagName;
11358
+ if (key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally
11359
+ !tag.includes("-")) {
11360
+ el._value = value;
11361
+ const oldValue = tag === "OPTION" ? el.getAttribute("value") : el.value;
11362
+ const newValue = value == null ? "" : value;
11363
+ if (oldValue !== newValue) {
11364
+ el.value = newValue;
11392
11365
  }
11393
- return vnode;
11394
- }
11395
- _applyStyles(styles) {
11396
- if (styles) {
11397
- styles.forEach((css) => {
11398
- const s = document.createElement("style");
11399
- s.textContent = css;
11400
- this.shadowRoot.appendChild(s);
11401
- {
11402
- (this._styles || (this._styles = [])).push(s);
11403
- }
11404
- });
11366
+ if (value == null) {
11367
+ el.removeAttribute(key);
11405
11368
  }
11369
+ return;
11406
11370
  }
11407
- }
11408
-
11409
- function useCssModule(name = "$style") {
11410
- {
11411
- const instance = getCurrentInstance();
11412
- if (!instance) {
11413
- warn(`useCssModule must be called inside setup()`);
11414
- return EMPTY_OBJ;
11371
+ let needRemove = false;
11372
+ if (value === "" || value == null) {
11373
+ const type = typeof el[key];
11374
+ if (type === "boolean") {
11375
+ value = includeBooleanAttr(value);
11376
+ } else if (value == null && type === "string") {
11377
+ value = "";
11378
+ needRemove = true;
11379
+ } else if (type === "number") {
11380
+ value = 0;
11381
+ needRemove = true;
11415
11382
  }
11416
- const modules = instance.type.__cssModules;
11417
- if (!modules) {
11418
- warn(`Current instance does not have CSS modules injected.`);
11419
- return EMPTY_OBJ;
11383
+ } else {
11384
+ if (value === false && compatUtils.isCompatEnabled(
11385
+ "ATTR_FALSE_VALUE",
11386
+ parentComponent
11387
+ )) {
11388
+ const type = typeof el[key];
11389
+ if (type === "string" || type === "number") {
11390
+ compatUtils.warnDeprecation(
11391
+ "ATTR_FALSE_VALUE",
11392
+ parentComponent,
11393
+ key
11394
+ );
11395
+ value = type === "number" ? 0 : "";
11396
+ needRemove = true;
11397
+ }
11420
11398
  }
11421
- const mod = modules[name];
11422
- if (!mod) {
11423
- warn(`Current instance does not have CSS module named "${name}".`);
11424
- return EMPTY_OBJ;
11399
+ }
11400
+ try {
11401
+ el[key] = value;
11402
+ } catch (e) {
11403
+ if (!needRemove) {
11404
+ warn(
11405
+ `Failed setting prop "${key}" on <${tag.toLowerCase()}>: value ${value} is invalid.`,
11406
+ e
11407
+ );
11425
11408
  }
11426
- return mod;
11427
11409
  }
11410
+ needRemove && el.removeAttribute(key);
11428
11411
  }
11429
11412
 
11430
- function useCssVars(getter) {
11431
- const instance = getCurrentInstance();
11432
- if (!instance) {
11433
- warn(`useCssVars is called without current active component instance.`);
11434
- return;
11435
- }
11436
- const updateTeleports = instance.ut = (vars = getter(instance.proxy)) => {
11437
- Array.from(
11438
- document.querySelectorAll(`[data-v-owner="${instance.uid}"]`)
11439
- ).forEach((node) => setVarsOnNode(node, vars));
11440
- };
11441
- const setVars = () => {
11442
- const vars = getter(instance.proxy);
11443
- setVarsOnVNode(instance.subTree, vars);
11444
- updateTeleports(vars);
11445
- };
11446
- watchPostEffect(setVars);
11447
- onMounted(() => {
11448
- const ob = new MutationObserver(setVars);
11449
- ob.observe(instance.subTree.el.parentNode, { childList: true });
11450
- onUnmounted(() => ob.disconnect());
11451
- });
11413
+ function addEventListener(el, event, handler, options) {
11414
+ el.addEventListener(event, handler, options);
11452
11415
  }
11453
- function setVarsOnVNode(vnode, vars) {
11454
- if (vnode.shapeFlag & 128) {
11455
- const suspense = vnode.suspense;
11456
- vnode = suspense.activeBranch;
11457
- if (suspense.pendingBranch && !suspense.isHydrating) {
11458
- suspense.effects.push(() => {
11459
- setVarsOnVNode(suspense.activeBranch, vars);
11460
- });
11416
+ function removeEventListener(el, event, handler, options) {
11417
+ el.removeEventListener(event, handler, options);
11418
+ }
11419
+ const veiKey = Symbol("_vei");
11420
+ function patchEvent(el, rawName, prevValue, nextValue, instance = null) {
11421
+ const invokers = el[veiKey] || (el[veiKey] = {});
11422
+ const existingInvoker = invokers[rawName];
11423
+ if (nextValue && existingInvoker) {
11424
+ existingInvoker.value = nextValue;
11425
+ } else {
11426
+ const [name, options] = parseName(rawName);
11427
+ if (nextValue) {
11428
+ const invoker = invokers[rawName] = createInvoker(nextValue, instance);
11429
+ addEventListener(el, name, invoker, options);
11430
+ } else if (existingInvoker) {
11431
+ removeEventListener(el, name, existingInvoker, options);
11432
+ invokers[rawName] = void 0;
11461
11433
  }
11462
11434
  }
11463
- while (vnode.component) {
11464
- vnode = vnode.component.subTree;
11465
- }
11466
- if (vnode.shapeFlag & 1 && vnode.el) {
11467
- setVarsOnNode(vnode.el, vars);
11468
- } else if (vnode.type === Fragment) {
11469
- vnode.children.forEach((c) => setVarsOnVNode(c, vars));
11470
- } else if (vnode.type === Static) {
11471
- let { el, anchor } = vnode;
11472
- while (el) {
11473
- setVarsOnNode(el, vars);
11474
- if (el === anchor)
11475
- break;
11476
- el = el.nextSibling;
11435
+ }
11436
+ const optionsModifierRE = /(?:Once|Passive|Capture)$/;
11437
+ function parseName(name) {
11438
+ let options;
11439
+ if (optionsModifierRE.test(name)) {
11440
+ options = {};
11441
+ let m;
11442
+ while (m = name.match(optionsModifierRE)) {
11443
+ name = name.slice(0, name.length - m[0].length);
11444
+ options[m[0].toLowerCase()] = true;
11477
11445
  }
11478
11446
  }
11447
+ const event = name[2] === ":" ? name.slice(3) : hyphenate(name.slice(2));
11448
+ return [event, options];
11479
11449
  }
11480
- function setVarsOnNode(el, vars) {
11481
- if (el.nodeType === 1) {
11482
- const style = el.style;
11483
- for (const key in vars) {
11484
- style.setProperty(`--${key}`, vars[key]);
11450
+ let cachedNow = 0;
11451
+ const p = /* @__PURE__ */ Promise.resolve();
11452
+ const getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now());
11453
+ function createInvoker(initialValue, instance) {
11454
+ const invoker = (e) => {
11455
+ if (!e._vts) {
11456
+ e._vts = Date.now();
11457
+ } else if (e._vts <= invoker.attached) {
11458
+ return;
11485
11459
  }
11460
+ callWithAsyncErrorHandling(
11461
+ patchStopImmediatePropagation(e, invoker.value),
11462
+ instance,
11463
+ 5,
11464
+ [e]
11465
+ );
11466
+ };
11467
+ invoker.value = initialValue;
11468
+ invoker.attached = getNow();
11469
+ return invoker;
11470
+ }
11471
+ function patchStopImmediatePropagation(e, value) {
11472
+ if (isArray(value)) {
11473
+ const originalStop = e.stopImmediatePropagation;
11474
+ e.stopImmediatePropagation = () => {
11475
+ originalStop.call(e);
11476
+ e._stopped = true;
11477
+ };
11478
+ return value.map((fn) => (e2) => !e2._stopped && fn && fn(e2));
11479
+ } else {
11480
+ return value;
11486
11481
  }
11487
11482
  }
11488
11483
 
11489
- const TRANSITION$1 = "transition";
11490
- const ANIMATION = "animation";
11491
- const Transition = (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots);
11492
- Transition.displayName = "Transition";
11493
- {
11494
- Transition.__isBuiltIn = true;
11495
- }
11496
- const DOMTransitionPropsValidators = {
11497
- name: String,
11498
- type: String,
11499
- css: {
11500
- type: Boolean,
11501
- default: true
11502
- },
11503
- duration: [String, Number, Object],
11504
- enterFromClass: String,
11505
- enterActiveClass: String,
11506
- enterToClass: String,
11507
- appearFromClass: String,
11508
- appearActiveClass: String,
11509
- appearToClass: String,
11510
- leaveFromClass: String,
11511
- leaveActiveClass: String,
11512
- leaveToClass: String
11513
- };
11514
- const TransitionPropsValidators = Transition.props = /* @__PURE__ */ extend(
11515
- {},
11516
- BaseTransitionPropsValidators,
11517
- DOMTransitionPropsValidators
11518
- );
11519
- const callHook = (hook, args = []) => {
11520
- if (isArray(hook)) {
11521
- hook.forEach((h2) => h2(...args));
11522
- } else if (hook) {
11523
- hook(...args);
11484
+ const nativeOnRE = /^on[a-z]/;
11485
+ const patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {
11486
+ if (key === "class") {
11487
+ patchClass(el, nextValue, isSVG);
11488
+ } else if (key === "style") {
11489
+ patchStyle(el, prevValue, nextValue);
11490
+ } else if (isOn(key)) {
11491
+ if (!isModelListener(key)) {
11492
+ patchEvent(el, key, prevValue, nextValue, parentComponent);
11493
+ }
11494
+ } else if (key[0] === "." ? (key = key.slice(1), true) : key[0] === "^" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) {
11495
+ patchDOMProp(
11496
+ el,
11497
+ key,
11498
+ nextValue,
11499
+ prevChildren,
11500
+ parentComponent,
11501
+ parentSuspense,
11502
+ unmountChildren
11503
+ );
11504
+ } else {
11505
+ if (key === "true-value") {
11506
+ el._trueValue = nextValue;
11507
+ } else if (key === "false-value") {
11508
+ el._falseValue = nextValue;
11509
+ }
11510
+ patchAttr(el, key, nextValue, isSVG, parentComponent);
11524
11511
  }
11525
11512
  };
11526
- const hasExplicitCallback = (hook) => {
11527
- return hook ? isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false;
11528
- };
11529
- function resolveTransitionProps(rawProps) {
11530
- const baseProps = {};
11531
- for (const key in rawProps) {
11532
- if (!(key in DOMTransitionPropsValidators)) {
11533
- baseProps[key] = rawProps[key];
11513
+ function shouldSetAsProp(el, key, value, isSVG) {
11514
+ if (isSVG) {
11515
+ if (key === "innerHTML" || key === "textContent") {
11516
+ return true;
11534
11517
  }
11518
+ if (key in el && nativeOnRE.test(key) && isFunction(value)) {
11519
+ return true;
11520
+ }
11521
+ return false;
11535
11522
  }
11536
- if (rawProps.css === false) {
11537
- return baseProps;
11523
+ if (key === "spellcheck" || key === "draggable" || key === "translate") {
11524
+ return false;
11538
11525
  }
11539
- const {
11540
- name = "v",
11541
- type,
11542
- duration,
11543
- enterFromClass = `${name}-enter-from`,
11544
- enterActiveClass = `${name}-enter-active`,
11545
- enterToClass = `${name}-enter-to`,
11546
- appearFromClass = enterFromClass,
11547
- appearActiveClass = enterActiveClass,
11548
- appearToClass = enterToClass,
11549
- leaveFromClass = `${name}-leave-from`,
11550
- leaveActiveClass = `${name}-leave-active`,
11551
- leaveToClass = `${name}-leave-to`
11552
- } = rawProps;
11553
- const legacyClassEnabled = compatUtils.isCompatEnabled("TRANSITION_CLASSES", null);
11554
- let legacyEnterFromClass;
11555
- let legacyAppearFromClass;
11556
- let legacyLeaveFromClass;
11557
- if (legacyClassEnabled) {
11558
- const toLegacyClass = (cls) => cls.replace(/-from$/, "");
11559
- if (!rawProps.enterFromClass) {
11560
- legacyEnterFromClass = toLegacyClass(enterFromClass);
11526
+ if (key === "form") {
11527
+ return false;
11528
+ }
11529
+ if (key === "list" && el.tagName === "INPUT") {
11530
+ return false;
11531
+ }
11532
+ if (key === "type" && el.tagName === "TEXTAREA") {
11533
+ return false;
11534
+ }
11535
+ if (nativeOnRE.test(key) && isString(value)) {
11536
+ return false;
11537
+ }
11538
+ return key in el;
11539
+ }
11540
+
11541
+ /*! #__NO_SIDE_EFFECTS__ */
11542
+ // @__NO_SIDE_EFFECTS__
11543
+ function defineCustomElement(options, hydrate2) {
11544
+ const Comp = defineComponent(options);
11545
+ class VueCustomElement extends VueElement {
11546
+ constructor(initialProps) {
11547
+ super(Comp, initialProps, hydrate2);
11561
11548
  }
11562
- if (!rawProps.appearFromClass) {
11563
- legacyAppearFromClass = toLegacyClass(appearFromClass);
11549
+ }
11550
+ VueCustomElement.def = Comp;
11551
+ return VueCustomElement;
11552
+ }
11553
+ /*! #__NO_SIDE_EFFECTS__ */
11554
+ const defineSSRCustomElement = /* @__NO_SIDE_EFFECTS__ */ (options) => {
11555
+ return /* @__PURE__ */ defineCustomElement(options, hydrate);
11556
+ };
11557
+ const BaseClass = typeof HTMLElement !== "undefined" ? HTMLElement : class {
11558
+ };
11559
+ class VueElement extends BaseClass {
11560
+ constructor(_def, _props = {}, hydrate2) {
11561
+ super();
11562
+ this._def = _def;
11563
+ this._props = _props;
11564
+ /**
11565
+ * @internal
11566
+ */
11567
+ this._instance = null;
11568
+ this._connected = false;
11569
+ this._resolved = false;
11570
+ this._numberProps = null;
11571
+ this._ob = null;
11572
+ if (this.shadowRoot && hydrate2) {
11573
+ hydrate2(this._createVNode(), this.shadowRoot);
11574
+ } else {
11575
+ if (this.shadowRoot) {
11576
+ warn(
11577
+ `Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use \`defineSSRCustomElement\`.`
11578
+ );
11579
+ }
11580
+ this.attachShadow({ mode: "open" });
11581
+ if (!this._def.__asyncLoader) {
11582
+ this._resolveProps(this._def);
11583
+ }
11564
11584
  }
11565
- if (!rawProps.leaveFromClass) {
11566
- legacyLeaveFromClass = toLegacyClass(leaveFromClass);
11585
+ }
11586
+ connectedCallback() {
11587
+ this._connected = true;
11588
+ if (!this._instance) {
11589
+ if (this._resolved) {
11590
+ this._update();
11591
+ } else {
11592
+ this._resolveDef();
11593
+ }
11567
11594
  }
11568
11595
  }
11569
- const durations = normalizeDuration(duration);
11570
- const enterDuration = durations && durations[0];
11571
- const leaveDuration = durations && durations[1];
11572
- const {
11573
- onBeforeEnter,
11574
- onEnter,
11575
- onEnterCancelled,
11576
- onLeave,
11577
- onLeaveCancelled,
11578
- onBeforeAppear = onBeforeEnter,
11579
- onAppear = onEnter,
11580
- onAppearCancelled = onEnterCancelled
11581
- } = baseProps;
11582
- const finishEnter = (el, isAppear, done) => {
11583
- removeTransitionClass(el, isAppear ? appearToClass : enterToClass);
11584
- removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);
11585
- done && done();
11586
- };
11587
- const finishLeave = (el, done) => {
11588
- el._isLeaving = false;
11589
- removeTransitionClass(el, leaveFromClass);
11590
- removeTransitionClass(el, leaveToClass);
11591
- removeTransitionClass(el, leaveActiveClass);
11592
- done && done();
11593
- };
11594
- const makeEnterHook = (isAppear) => {
11595
- return (el, done) => {
11596
- const hook = isAppear ? onAppear : onEnter;
11597
- const resolve = () => finishEnter(el, isAppear, done);
11598
- callHook(hook, [el, resolve]);
11599
- nextFrame(() => {
11600
- removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);
11601
- if (legacyClassEnabled) {
11602
- const legacyClass = isAppear ? legacyAppearFromClass : legacyEnterFromClass;
11603
- if (legacyClass) {
11604
- removeTransitionClass(el, legacyClass);
11596
+ disconnectedCallback() {
11597
+ this._connected = false;
11598
+ if (this._ob) {
11599
+ this._ob.disconnect();
11600
+ this._ob = null;
11601
+ }
11602
+ nextTick(() => {
11603
+ if (!this._connected) {
11604
+ render(null, this.shadowRoot);
11605
+ this._instance = null;
11606
+ }
11607
+ });
11608
+ }
11609
+ /**
11610
+ * resolve inner component definition (handle possible async component)
11611
+ */
11612
+ _resolveDef() {
11613
+ this._resolved = true;
11614
+ for (let i = 0; i < this.attributes.length; i++) {
11615
+ this._setAttr(this.attributes[i].name);
11616
+ }
11617
+ this._ob = new MutationObserver((mutations) => {
11618
+ for (const m of mutations) {
11619
+ this._setAttr(m.attributeName);
11620
+ }
11621
+ });
11622
+ this._ob.observe(this, { attributes: true });
11623
+ const resolve = (def, isAsync = false) => {
11624
+ const { props, styles } = def;
11625
+ let numberProps;
11626
+ if (props && !isArray(props)) {
11627
+ for (const key in props) {
11628
+ const opt = props[key];
11629
+ if (opt === Number || opt && opt.type === Number) {
11630
+ if (key in this._props) {
11631
+ this._props[key] = toNumber(this._props[key]);
11632
+ }
11633
+ (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[camelize(key)] = true;
11605
11634
  }
11606
11635
  }
11607
- addTransitionClass(el, isAppear ? appearToClass : enterToClass);
11608
- if (!hasExplicitCallback(hook)) {
11609
- whenTransitionEnds(el, type, enterDuration, resolve);
11610
- }
11611
- });
11612
- };
11613
- };
11614
- return extend(baseProps, {
11615
- onBeforeEnter(el) {
11616
- callHook(onBeforeEnter, [el]);
11617
- addTransitionClass(el, enterFromClass);
11618
- if (legacyClassEnabled && legacyEnterFromClass) {
11619
- addTransitionClass(el, legacyEnterFromClass);
11620
11636
  }
11621
- addTransitionClass(el, enterActiveClass);
11622
- },
11623
- onBeforeAppear(el) {
11624
- callHook(onBeforeAppear, [el]);
11625
- addTransitionClass(el, appearFromClass);
11626
- if (legacyClassEnabled && legacyAppearFromClass) {
11627
- addTransitionClass(el, legacyAppearFromClass);
11637
+ this._numberProps = numberProps;
11638
+ if (isAsync) {
11639
+ this._resolveProps(def);
11628
11640
  }
11629
- addTransitionClass(el, appearActiveClass);
11630
- },
11631
- onEnter: makeEnterHook(false),
11632
- onAppear: makeEnterHook(true),
11633
- onLeave(el, done) {
11634
- el._isLeaving = true;
11635
- const resolve = () => finishLeave(el, done);
11636
- addTransitionClass(el, leaveFromClass);
11637
- if (legacyClassEnabled && legacyLeaveFromClass) {
11638
- addTransitionClass(el, legacyLeaveFromClass);
11641
+ this._applyStyles(styles);
11642
+ this._update();
11643
+ };
11644
+ const asyncDef = this._def.__asyncLoader;
11645
+ if (asyncDef) {
11646
+ asyncDef().then((def) => resolve(def, true));
11647
+ } else {
11648
+ resolve(this._def);
11649
+ }
11650
+ }
11651
+ _resolveProps(def) {
11652
+ const { props } = def;
11653
+ const declaredPropKeys = isArray(props) ? props : Object.keys(props || {});
11654
+ for (const key of Object.keys(this)) {
11655
+ if (key[0] !== "_" && declaredPropKeys.includes(key)) {
11656
+ this._setProp(key, this[key], true, false);
11639
11657
  }
11640
- forceReflow();
11641
- addTransitionClass(el, leaveActiveClass);
11642
- nextFrame(() => {
11643
- if (!el._isLeaving) {
11644
- return;
11658
+ }
11659
+ for (const key of declaredPropKeys.map(camelize)) {
11660
+ Object.defineProperty(this, key, {
11661
+ get() {
11662
+ return this._getProp(key);
11663
+ },
11664
+ set(val) {
11665
+ this._setProp(key, val);
11645
11666
  }
11646
- removeTransitionClass(el, leaveFromClass);
11647
- if (legacyClassEnabled && legacyLeaveFromClass) {
11648
- removeTransitionClass(el, legacyLeaveFromClass);
11667
+ });
11668
+ }
11669
+ }
11670
+ _setAttr(key) {
11671
+ let value = this.getAttribute(key);
11672
+ const camelKey = camelize(key);
11673
+ if (this._numberProps && this._numberProps[camelKey]) {
11674
+ value = toNumber(value);
11675
+ }
11676
+ this._setProp(camelKey, value, false);
11677
+ }
11678
+ /**
11679
+ * @internal
11680
+ */
11681
+ _getProp(key) {
11682
+ return this._props[key];
11683
+ }
11684
+ /**
11685
+ * @internal
11686
+ */
11687
+ _setProp(key, val, shouldReflect = true, shouldUpdate = true) {
11688
+ if (val !== this._props[key]) {
11689
+ this._props[key] = val;
11690
+ if (shouldUpdate && this._instance) {
11691
+ this._update();
11692
+ }
11693
+ if (shouldReflect) {
11694
+ if (val === true) {
11695
+ this.setAttribute(hyphenate(key), "");
11696
+ } else if (typeof val === "string" || typeof val === "number") {
11697
+ this.setAttribute(hyphenate(key), val + "");
11698
+ } else if (!val) {
11699
+ this.removeAttribute(hyphenate(key));
11700
+ }
11701
+ }
11702
+ }
11703
+ }
11704
+ _update() {
11705
+ render(this._createVNode(), this.shadowRoot);
11706
+ }
11707
+ _createVNode() {
11708
+ const vnode = createVNode(this._def, extend({}, this._props));
11709
+ if (!this._instance) {
11710
+ vnode.ce = (instance) => {
11711
+ this._instance = instance;
11712
+ instance.isCE = true;
11713
+ {
11714
+ instance.ceReload = (newStyles) => {
11715
+ if (this._styles) {
11716
+ this._styles.forEach((s) => this.shadowRoot.removeChild(s));
11717
+ this._styles.length = 0;
11718
+ }
11719
+ this._applyStyles(newStyles);
11720
+ this._instance = null;
11721
+ this._update();
11722
+ };
11649
11723
  }
11650
- addTransitionClass(el, leaveToClass);
11651
- if (!hasExplicitCallback(onLeave)) {
11652
- whenTransitionEnds(el, type, leaveDuration, resolve);
11724
+ const dispatch = (event, args) => {
11725
+ this.dispatchEvent(
11726
+ new CustomEvent(event, {
11727
+ detail: args
11728
+ })
11729
+ );
11730
+ };
11731
+ instance.emit = (event, ...args) => {
11732
+ dispatch(event, args);
11733
+ if (hyphenate(event) !== event) {
11734
+ dispatch(hyphenate(event), args);
11735
+ }
11736
+ };
11737
+ let parent = this;
11738
+ while (parent = parent && (parent.parentNode || parent.host)) {
11739
+ if (parent instanceof VueElement) {
11740
+ instance.parent = parent._instance;
11741
+ instance.provides = parent._instance.provides;
11742
+ break;
11743
+ }
11744
+ }
11745
+ };
11746
+ }
11747
+ return vnode;
11748
+ }
11749
+ _applyStyles(styles) {
11750
+ if (styles) {
11751
+ styles.forEach((css) => {
11752
+ const s = document.createElement("style");
11753
+ s.textContent = css;
11754
+ this.shadowRoot.appendChild(s);
11755
+ {
11756
+ (this._styles || (this._styles = [])).push(s);
11653
11757
  }
11654
11758
  });
11655
- callHook(onLeave, [el, resolve]);
11656
- },
11657
- onEnterCancelled(el) {
11658
- finishEnter(el, false);
11659
- callHook(onEnterCancelled, [el]);
11660
- },
11661
- onAppearCancelled(el) {
11662
- finishEnter(el, true);
11663
- callHook(onAppearCancelled, [el]);
11664
- },
11665
- onLeaveCancelled(el) {
11666
- finishLeave(el);
11667
- callHook(onLeaveCancelled, [el]);
11668
11759
  }
11669
- });
11670
- }
11671
- function normalizeDuration(duration) {
11672
- if (duration == null) {
11673
- return null;
11674
- } else if (isObject(duration)) {
11675
- return [NumberOf(duration.enter), NumberOf(duration.leave)];
11676
- } else {
11677
- const n = NumberOf(duration);
11678
- return [n, n];
11679
11760
  }
11680
11761
  }
11681
- function NumberOf(val) {
11682
- const res = toNumber(val);
11762
+
11763
+ function useCssModule(name = "$style") {
11683
11764
  {
11684
- assertNumber(res, "<transition> explicit duration");
11685
- }
11686
- return res;
11687
- }
11688
- function addTransitionClass(el, cls) {
11689
- cls.split(/\s+/).forEach((c) => c && el.classList.add(c));
11690
- (el._vtc || (el._vtc = /* @__PURE__ */ new Set())).add(cls);
11691
- }
11692
- function removeTransitionClass(el, cls) {
11693
- cls.split(/\s+/).forEach((c) => c && el.classList.remove(c));
11694
- const { _vtc } = el;
11695
- if (_vtc) {
11696
- _vtc.delete(cls);
11697
- if (!_vtc.size) {
11698
- el._vtc = void 0;
11765
+ const instance = getCurrentInstance();
11766
+ if (!instance) {
11767
+ warn(`useCssModule must be called inside setup()`);
11768
+ return EMPTY_OBJ;
11699
11769
  }
11700
- }
11701
- }
11702
- function nextFrame(cb) {
11703
- requestAnimationFrame(() => {
11704
- requestAnimationFrame(cb);
11705
- });
11706
- }
11707
- let endId = 0;
11708
- function whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {
11709
- const id = el._endId = ++endId;
11710
- const resolveIfNotStale = () => {
11711
- if (id === el._endId) {
11712
- resolve();
11770
+ const modules = instance.type.__cssModules;
11771
+ if (!modules) {
11772
+ warn(`Current instance does not have CSS modules injected.`);
11773
+ return EMPTY_OBJ;
11713
11774
  }
11714
- };
11715
- if (explicitTimeout) {
11716
- return setTimeout(resolveIfNotStale, explicitTimeout);
11775
+ const mod = modules[name];
11776
+ if (!mod) {
11777
+ warn(`Current instance does not have CSS module named "${name}".`);
11778
+ return EMPTY_OBJ;
11779
+ }
11780
+ return mod;
11717
11781
  }
11718
- const { type, timeout, propCount } = getTransitionInfo(el, expectedType);
11719
- if (!type) {
11720
- return resolve();
11782
+ }
11783
+
11784
+ function useCssVars(getter) {
11785
+ const instance = getCurrentInstance();
11786
+ if (!instance) {
11787
+ warn(`useCssVars is called without current active component instance.`);
11788
+ return;
11721
11789
  }
11722
- const endEvent = type + "end";
11723
- let ended = 0;
11724
- const end = () => {
11725
- el.removeEventListener(endEvent, onEnd);
11726
- resolveIfNotStale();
11790
+ const updateTeleports = instance.ut = (vars = getter(instance.proxy)) => {
11791
+ Array.from(
11792
+ document.querySelectorAll(`[data-v-owner="${instance.uid}"]`)
11793
+ ).forEach((node) => setVarsOnNode(node, vars));
11727
11794
  };
11728
- const onEnd = (e) => {
11729
- if (e.target === el && ++ended >= propCount) {
11730
- end();
11731
- }
11795
+ const setVars = () => {
11796
+ const vars = getter(instance.proxy);
11797
+ setVarsOnVNode(instance.subTree, vars);
11798
+ updateTeleports(vars);
11732
11799
  };
11733
- setTimeout(() => {
11734
- if (ended < propCount) {
11735
- end();
11736
- }
11737
- }, timeout + 1);
11738
- el.addEventListener(endEvent, onEnd);
11800
+ watchPostEffect(setVars);
11801
+ onMounted(() => {
11802
+ const ob = new MutationObserver(setVars);
11803
+ ob.observe(instance.subTree.el.parentNode, { childList: true });
11804
+ onUnmounted(() => ob.disconnect());
11805
+ });
11739
11806
  }
11740
- function getTransitionInfo(el, expectedType) {
11741
- const styles = window.getComputedStyle(el);
11742
- const getStyleProperties = (key) => (styles[key] || "").split(", ");
11743
- const transitionDelays = getStyleProperties(`${TRANSITION$1}Delay`);
11744
- const transitionDurations = getStyleProperties(`${TRANSITION$1}Duration`);
11745
- const transitionTimeout = getTimeout(transitionDelays, transitionDurations);
11746
- const animationDelays = getStyleProperties(`${ANIMATION}Delay`);
11747
- const animationDurations = getStyleProperties(`${ANIMATION}Duration`);
11748
- const animationTimeout = getTimeout(animationDelays, animationDurations);
11749
- let type = null;
11750
- let timeout = 0;
11751
- let propCount = 0;
11752
- if (expectedType === TRANSITION$1) {
11753
- if (transitionTimeout > 0) {
11754
- type = TRANSITION$1;
11755
- timeout = transitionTimeout;
11756
- propCount = transitionDurations.length;
11807
+ function setVarsOnVNode(vnode, vars) {
11808
+ if (vnode.shapeFlag & 128) {
11809
+ const suspense = vnode.suspense;
11810
+ vnode = suspense.activeBranch;
11811
+ if (suspense.pendingBranch && !suspense.isHydrating) {
11812
+ suspense.effects.push(() => {
11813
+ setVarsOnVNode(suspense.activeBranch, vars);
11814
+ });
11757
11815
  }
11758
- } else if (expectedType === ANIMATION) {
11759
- if (animationTimeout > 0) {
11760
- type = ANIMATION;
11761
- timeout = animationTimeout;
11762
- propCount = animationDurations.length;
11816
+ }
11817
+ while (vnode.component) {
11818
+ vnode = vnode.component.subTree;
11819
+ }
11820
+ if (vnode.shapeFlag & 1 && vnode.el) {
11821
+ setVarsOnNode(vnode.el, vars);
11822
+ } else if (vnode.type === Fragment) {
11823
+ vnode.children.forEach((c) => setVarsOnVNode(c, vars));
11824
+ } else if (vnode.type === Static) {
11825
+ let { el, anchor } = vnode;
11826
+ while (el) {
11827
+ setVarsOnNode(el, vars);
11828
+ if (el === anchor)
11829
+ break;
11830
+ el = el.nextSibling;
11763
11831
  }
11764
- } else {
11765
- timeout = Math.max(transitionTimeout, animationTimeout);
11766
- type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION$1 : ANIMATION : null;
11767
- propCount = type ? type === TRANSITION$1 ? transitionDurations.length : animationDurations.length : 0;
11768
11832
  }
11769
- const hasTransform = type === TRANSITION$1 && /\b(transform|all)(,|$)/.test(
11770
- getStyleProperties(`${TRANSITION$1}Property`).toString()
11771
- );
11772
- return {
11773
- type,
11774
- timeout,
11775
- propCount,
11776
- hasTransform
11777
- };
11778
11833
  }
11779
- function getTimeout(delays, durations) {
11780
- while (delays.length < durations.length) {
11781
- delays = delays.concat(delays);
11834
+ function setVarsOnNode(el, vars) {
11835
+ if (el.nodeType === 1) {
11836
+ const style = el.style;
11837
+ for (const key in vars) {
11838
+ style.setProperty(`--${key}`, vars[key]);
11839
+ }
11782
11840
  }
11783
- return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));
11784
- }
11785
- function toMs(s) {
11786
- return Number(s.slice(0, -1).replace(",", ".")) * 1e3;
11787
- }
11788
- function forceReflow() {
11789
- return document.body.offsetHeight;
11790
11841
  }
11791
11842
 
11792
11843
  const positionMap = /* @__PURE__ */ new WeakMap();
11793
11844
  const newPositionMap = /* @__PURE__ */ new WeakMap();
11845
+ const moveCbKey = Symbol("_moveCb");
11846
+ const enterCbKey = Symbol("_enterCb");
11794
11847
  const TransitionGroupImpl = {
11795
11848
  name: "TransitionGroup",
11796
11849
  props: /* @__PURE__ */ extend({}, TransitionPropsValidators, {
@@ -11823,13 +11876,13 @@ const TransitionGroupImpl = {
11823
11876
  const style = el.style;
11824
11877
  addTransitionClass(el, moveClass);
11825
11878
  style.transform = style.webkitTransform = style.transitionDuration = "";
11826
- const cb = el._moveCb = (e) => {
11879
+ const cb = el[moveCbKey] = (e) => {
11827
11880
  if (e && e.target !== el) {
11828
11881
  return;
11829
11882
  }
11830
11883
  if (!e || /transform$/.test(e.propertyName)) {
11831
11884
  el.removeEventListener("transitionend", cb);
11832
- el._moveCb = null;
11885
+ el[moveCbKey] = null;
11833
11886
  removeTransitionClass(el, moveClass);
11834
11887
  }
11835
11888
  };
@@ -11881,11 +11934,11 @@ const removeMode = (props) => delete props.mode;
11881
11934
  const TransitionGroup = TransitionGroupImpl;
11882
11935
  function callPendingCbs(c) {
11883
11936
  const el = c.el;
11884
- if (el._moveCb) {
11885
- el._moveCb();
11937
+ if (el[moveCbKey]) {
11938
+ el[moveCbKey]();
11886
11939
  }
11887
- if (el._enterCb) {
11888
- el._enterCb();
11940
+ if (el[enterCbKey]) {
11941
+ el[enterCbKey]();
11889
11942
  }
11890
11943
  }
11891
11944
  function recordPosition(c) {
@@ -11905,8 +11958,9 @@ function applyTranslation(c) {
11905
11958
  }
11906
11959
  function hasCSSTransform(el, root, moveClass) {
11907
11960
  const clone = el.cloneNode();
11908
- if (el._vtc) {
11909
- el._vtc.forEach((cls) => {
11961
+ const _vtc = el[vtcKey];
11962
+ if (_vtc) {
11963
+ _vtc.forEach((cls) => {
11910
11964
  cls.split(/\s+/).forEach((c) => c && clone.classList.remove(c));
11911
11965
  });
11912
11966
  }
@@ -11933,9 +11987,10 @@ function onCompositionEnd(e) {
11933
11987
  target.dispatchEvent(new Event("input"));
11934
11988
  }
11935
11989
  }
11990
+ const assignKey = Symbol("_assign");
11936
11991
  const vModelText = {
11937
11992
  created(el, { modifiers: { lazy, trim, number } }, vnode) {
11938
- el._assign = getModelAssigner(vnode);
11993
+ el[assignKey] = getModelAssigner(vnode);
11939
11994
  const castToNumber = number || vnode.props && vnode.props.type === "number";
11940
11995
  addEventListener(el, lazy ? "change" : "input", (e) => {
11941
11996
  if (e.target.composing)
@@ -11947,7 +12002,7 @@ const vModelText = {
11947
12002
  if (castToNumber) {
11948
12003
  domValue = looseToNumber(domValue);
11949
12004
  }
11950
- el._assign(domValue);
12005
+ el[assignKey](domValue);
11951
12006
  });
11952
12007
  if (trim) {
11953
12008
  addEventListener(el, "change", () => {
@@ -11965,7 +12020,7 @@ const vModelText = {
11965
12020
  el.value = value == null ? "" : value;
11966
12021
  },
11967
12022
  beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) {
11968
- el._assign = getModelAssigner(vnode);
12023
+ el[assignKey] = getModelAssigner(vnode);
11969
12024
  if (el.composing)
11970
12025
  return;
11971
12026
  if (document.activeElement === el && el.type !== "range") {
@@ -11989,12 +12044,12 @@ const vModelCheckbox = {
11989
12044
  // #4096 array checkboxes need to be deep traversed
11990
12045
  deep: true,
11991
12046
  created(el, _, vnode) {
11992
- el._assign = getModelAssigner(vnode);
12047
+ el[assignKey] = getModelAssigner(vnode);
11993
12048
  addEventListener(el, "change", () => {
11994
12049
  const modelValue = el._modelValue;
11995
12050
  const elementValue = getValue(el);
11996
12051
  const checked = el.checked;
11997
- const assign = el._assign;
12052
+ const assign = el[assignKey];
11998
12053
  if (isArray(modelValue)) {
11999
12054
  const index = looseIndexOf(modelValue, elementValue);
12000
12055
  const found = index !== -1;
@@ -12021,7 +12076,7 @@ const vModelCheckbox = {
12021
12076
  // set initial checked on mount to wait for true-value/false-value
12022
12077
  mounted: setChecked,
12023
12078
  beforeUpdate(el, binding, vnode) {
12024
- el._assign = getModelAssigner(vnode);
12079
+ el[assignKey] = getModelAssigner(vnode);
12025
12080
  setChecked(el, binding, vnode);
12026
12081
  }
12027
12082
  };
@@ -12038,13 +12093,13 @@ function setChecked(el, { value, oldValue }, vnode) {
12038
12093
  const vModelRadio = {
12039
12094
  created(el, { value }, vnode) {
12040
12095
  el.checked = looseEqual(value, vnode.props.value);
12041
- el._assign = getModelAssigner(vnode);
12096
+ el[assignKey] = getModelAssigner(vnode);
12042
12097
  addEventListener(el, "change", () => {
12043
- el._assign(getValue(el));
12098
+ el[assignKey](getValue(el));
12044
12099
  });
12045
12100
  },
12046
12101
  beforeUpdate(el, { value, oldValue }, vnode) {
12047
- el._assign = getModelAssigner(vnode);
12102
+ el[assignKey] = getModelAssigner(vnode);
12048
12103
  if (value !== oldValue) {
12049
12104
  el.checked = looseEqual(value, vnode.props.value);
12050
12105
  }
@@ -12059,11 +12114,11 @@ const vModelSelect = {
12059
12114
  const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map(
12060
12115
  (o) => number ? looseToNumber(getValue(o)) : getValue(o)
12061
12116
  );
12062
- el._assign(
12117
+ el[assignKey](
12063
12118
  el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0]
12064
12119
  );
12065
12120
  });
12066
- el._assign = getModelAssigner(vnode);
12121
+ el[assignKey] = getModelAssigner(vnode);
12067
12122
  },
12068
12123
  // set value in mounted & updated because <select> relies on its children
12069
12124
  // <option>s.
@@ -12071,7 +12126,7 @@ const vModelSelect = {
12071
12126
  setSelected(el, value);
12072
12127
  },
12073
12128
  beforeUpdate(el, _binding, vnode) {
12074
- el._assign = getModelAssigner(vnode);
12129
+ el[assignKey] = getModelAssigner(vnode);
12075
12130
  },
12076
12131
  updated(el, { value }) {
12077
12132
  setSelected(el, value);
@@ -12234,45 +12289,6 @@ const withKeys = (fn, modifiers) => {
12234
12289
  };
12235
12290
  };
12236
12291
 
12237
- const vShow = {
12238
- beforeMount(el, { value }, { transition }) {
12239
- el._vod = el.style.display === "none" ? "" : el.style.display;
12240
- if (transition && value) {
12241
- transition.beforeEnter(el);
12242
- } else {
12243
- setDisplay(el, value);
12244
- }
12245
- },
12246
- mounted(el, { value }, { transition }) {
12247
- if (transition && value) {
12248
- transition.enter(el);
12249
- }
12250
- },
12251
- updated(el, { value, oldValue }, { transition }) {
12252
- if (!value === !oldValue)
12253
- return;
12254
- if (transition) {
12255
- if (value) {
12256
- transition.beforeEnter(el);
12257
- setDisplay(el, true);
12258
- transition.enter(el);
12259
- } else {
12260
- transition.leave(el, () => {
12261
- setDisplay(el, false);
12262
- });
12263
- }
12264
- } else {
12265
- setDisplay(el, value);
12266
- }
12267
- },
12268
- beforeUnmount(el, { value }) {
12269
- setDisplay(el, value);
12270
- }
12271
- };
12272
- function setDisplay(el, value) {
12273
- el.style.display = value ? el._vod : "none";
12274
- }
12275
-
12276
12292
  const rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps);
12277
12293
  let renderer;
12278
12294
  let enabledHydration = false;
@@ -13311,7 +13327,7 @@ function parseChildren(context, mode, ancestors) {
13311
13327
  continue;
13312
13328
  } else if (/[a-z]/i.test(s[2])) {
13313
13329
  emitError(context, 23);
13314
- parseTag(context, TagType.End, parent);
13330
+ parseTag(context, 1 /* End */, parent);
13315
13331
  continue;
13316
13332
  } else {
13317
13333
  emitError(
@@ -13472,7 +13488,7 @@ function parseElement(context, ancestors) {
13472
13488
  const wasInPre = context.inPre;
13473
13489
  const wasInVPre = context.inVPre;
13474
13490
  const parent = last(ancestors);
13475
- const element = parseTag(context, TagType.Start, parent);
13491
+ const element = parseTag(context, 0 /* Start */, parent);
13476
13492
  const isPreBoundary = context.inPre && !wasInPre;
13477
13493
  const isVPreBoundary = context.inVPre && !wasInVPre;
13478
13494
  if (element.isSelfClosing || context.options.isVoidTag(element.tag)) {
@@ -13507,7 +13523,7 @@ function parseElement(context, ancestors) {
13507
13523
  }
13508
13524
  element.children = children;
13509
13525
  if (startsWithEndTagOpen(context.source, element.tag)) {
13510
- parseTag(context, TagType.End, parent);
13526
+ parseTag(context, 1 /* End */, parent);
13511
13527
  } else {
13512
13528
  emitError(context, 24, 0, element.loc.start);
13513
13529
  if (context.source.length === 0 && element.tag.toLowerCase() === "script") {
@@ -13526,11 +13542,6 @@ function parseElement(context, ancestors) {
13526
13542
  }
13527
13543
  return element;
13528
13544
  }
13529
- var TagType = /* @__PURE__ */ ((TagType2) => {
13530
- TagType2[TagType2["Start"] = 0] = "Start";
13531
- TagType2[TagType2["End"] = 1] = "End";
13532
- return TagType2;
13533
- })(TagType || {});
13534
13545
  const isSpecialTemplateDirective = /* @__PURE__ */ makeMap(
13535
13546
  `if,else,else-if,for,slot`
13536
13547
  );