@vue/runtime-dom 3.2.36 → 3.2.39

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.
@@ -641,7 +641,7 @@ var VueRuntimeDOM = (function (exports) {
641
641
  return;
642
642
  }
643
643
  let deps = [];
644
- if (type === "clear" /* CLEAR */) {
644
+ if (type === "clear" /* TriggerOpTypes.CLEAR */) {
645
645
  // collection being cleared
646
646
  // trigger all effects for target
647
647
  deps = [...depsMap.values()];
@@ -660,7 +660,7 @@ var VueRuntimeDOM = (function (exports) {
660
660
  }
661
661
  // also run for iteration key on ADD | DELETE | Map.SET
662
662
  switch (type) {
663
- case "add" /* ADD */:
663
+ case "add" /* TriggerOpTypes.ADD */:
664
664
  if (!isArray(target)) {
665
665
  deps.push(depsMap.get(ITERATE_KEY));
666
666
  if (isMap(target)) {
@@ -672,7 +672,7 @@ var VueRuntimeDOM = (function (exports) {
672
672
  deps.push(depsMap.get('length'));
673
673
  }
674
674
  break;
675
- case "delete" /* DELETE */:
675
+ case "delete" /* TriggerOpTypes.DELETE */:
676
676
  if (!isArray(target)) {
677
677
  deps.push(depsMap.get(ITERATE_KEY));
678
678
  if (isMap(target)) {
@@ -680,7 +680,7 @@ var VueRuntimeDOM = (function (exports) {
680
680
  }
681
681
  }
682
682
  break;
683
- case "set" /* SET */:
683
+ case "set" /* TriggerOpTypes.SET */:
684
684
  if (isMap(target)) {
685
685
  deps.push(depsMap.get(ITERATE_KEY));
686
686
  }
@@ -757,7 +757,7 @@ var VueRuntimeDOM = (function (exports) {
757
757
  instrumentations[key] = function (...args) {
758
758
  const arr = toRaw(this);
759
759
  for (let i = 0, l = this.length; i < l; i++) {
760
- track(arr, "get" /* GET */, i + '');
760
+ track(arr, "get" /* TrackOpTypes.GET */, i + '');
761
761
  }
762
762
  // we run the method using the original args first (which may be reactive)
763
763
  const res = arr[key](...args);
@@ -782,16 +782,16 @@ var VueRuntimeDOM = (function (exports) {
782
782
  }
783
783
  function createGetter(isReadonly = false, shallow = false) {
784
784
  return function get(target, key, receiver) {
785
- if (key === "__v_isReactive" /* IS_REACTIVE */) {
785
+ if (key === "__v_isReactive" /* ReactiveFlags.IS_REACTIVE */) {
786
786
  return !isReadonly;
787
787
  }
788
- else if (key === "__v_isReadonly" /* IS_READONLY */) {
788
+ else if (key === "__v_isReadonly" /* ReactiveFlags.IS_READONLY */) {
789
789
  return isReadonly;
790
790
  }
791
- else if (key === "__v_isShallow" /* IS_SHALLOW */) {
791
+ else if (key === "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */) {
792
792
  return shallow;
793
793
  }
794
- else if (key === "__v_raw" /* RAW */ &&
794
+ else if (key === "__v_raw" /* ReactiveFlags.RAW */ &&
795
795
  receiver ===
796
796
  (isReadonly
797
797
  ? shallow
@@ -811,7 +811,7 @@ var VueRuntimeDOM = (function (exports) {
811
811
  return res;
812
812
  }
813
813
  if (!isReadonly) {
814
- track(target, "get" /* GET */, key);
814
+ track(target, "get" /* TrackOpTypes.GET */, key);
815
815
  }
816
816
  if (shallow) {
817
817
  return res;
@@ -837,10 +837,10 @@ var VueRuntimeDOM = (function (exports) {
837
837
  if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {
838
838
  return false;
839
839
  }
840
- if (!shallow && !isReadonly(value)) {
841
- if (!isShallow(value)) {
842
- value = toRaw(value);
840
+ if (!shallow) {
841
+ if (!isShallow(value) && !isReadonly(value)) {
843
842
  oldValue = toRaw(oldValue);
843
+ value = toRaw(value);
844
844
  }
845
845
  if (!isArray(target) && isRef(oldValue) && !isRef(value)) {
846
846
  oldValue.value = value;
@@ -854,10 +854,10 @@ var VueRuntimeDOM = (function (exports) {
854
854
  // don't trigger if target is something up in the prototype chain of original
855
855
  if (target === toRaw(receiver)) {
856
856
  if (!hadKey) {
857
- trigger(target, "add" /* ADD */, key, value);
857
+ trigger(target, "add" /* TriggerOpTypes.ADD */, key, value);
858
858
  }
859
859
  else if (hasChanged(value, oldValue)) {
860
- trigger(target, "set" /* SET */, key, value, oldValue);
860
+ trigger(target, "set" /* TriggerOpTypes.SET */, key, value, oldValue);
861
861
  }
862
862
  }
863
863
  return result;
@@ -868,19 +868,19 @@ var VueRuntimeDOM = (function (exports) {
868
868
  const oldValue = target[key];
869
869
  const result = Reflect.deleteProperty(target, key);
870
870
  if (result && hadKey) {
871
- trigger(target, "delete" /* DELETE */, key, undefined, oldValue);
871
+ trigger(target, "delete" /* TriggerOpTypes.DELETE */, key, undefined, oldValue);
872
872
  }
873
873
  return result;
874
874
  }
875
875
  function has(target, key) {
876
876
  const result = Reflect.has(target, key);
877
877
  if (!isSymbol(key) || !builtInSymbols.has(key)) {
878
- track(target, "has" /* HAS */, key);
878
+ track(target, "has" /* TrackOpTypes.HAS */, key);
879
879
  }
880
880
  return result;
881
881
  }
882
882
  function ownKeys(target) {
883
- track(target, "iterate" /* ITERATE */, isArray(target) ? 'length' : ITERATE_KEY);
883
+ track(target, "iterate" /* TrackOpTypes.ITERATE */, isArray(target) ? 'length' : ITERATE_KEY);
884
884
  return Reflect.ownKeys(target);
885
885
  }
886
886
  const mutableHandlers = {
@@ -921,14 +921,14 @@ var VueRuntimeDOM = (function (exports) {
921
921
  function get$1(target, key, isReadonly = false, isShallow = false) {
922
922
  // #1772: readonly(reactive(Map)) should return readonly + reactive version
923
923
  // of the value
924
- target = target["__v_raw" /* RAW */];
924
+ target = target["__v_raw" /* ReactiveFlags.RAW */];
925
925
  const rawTarget = toRaw(target);
926
926
  const rawKey = toRaw(key);
927
927
  if (!isReadonly) {
928
928
  if (key !== rawKey) {
929
- track(rawTarget, "get" /* GET */, key);
929
+ track(rawTarget, "get" /* TrackOpTypes.GET */, key);
930
930
  }
931
- track(rawTarget, "get" /* GET */, rawKey);
931
+ track(rawTarget, "get" /* TrackOpTypes.GET */, rawKey);
932
932
  }
933
933
  const { has } = getProto(rawTarget);
934
934
  const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
@@ -945,22 +945,22 @@ var VueRuntimeDOM = (function (exports) {
945
945
  }
946
946
  }
947
947
  function has$1(key, isReadonly = false) {
948
- const target = this["__v_raw" /* RAW */];
948
+ const target = this["__v_raw" /* ReactiveFlags.RAW */];
949
949
  const rawTarget = toRaw(target);
950
950
  const rawKey = toRaw(key);
951
951
  if (!isReadonly) {
952
952
  if (key !== rawKey) {
953
- track(rawTarget, "has" /* HAS */, key);
953
+ track(rawTarget, "has" /* TrackOpTypes.HAS */, key);
954
954
  }
955
- track(rawTarget, "has" /* HAS */, rawKey);
955
+ track(rawTarget, "has" /* TrackOpTypes.HAS */, rawKey);
956
956
  }
957
957
  return key === rawKey
958
958
  ? target.has(key)
959
959
  : target.has(key) || target.has(rawKey);
960
960
  }
961
961
  function size(target, isReadonly = false) {
962
- target = target["__v_raw" /* RAW */];
963
- !isReadonly && track(toRaw(target), "iterate" /* ITERATE */, ITERATE_KEY);
962
+ target = target["__v_raw" /* ReactiveFlags.RAW */];
963
+ !isReadonly && track(toRaw(target), "iterate" /* TrackOpTypes.ITERATE */, ITERATE_KEY);
964
964
  return Reflect.get(target, 'size', target);
965
965
  }
966
966
  function add(value) {
@@ -970,7 +970,7 @@ var VueRuntimeDOM = (function (exports) {
970
970
  const hadKey = proto.has.call(target, value);
971
971
  if (!hadKey) {
972
972
  target.add(value);
973
- trigger(target, "add" /* ADD */, value, value);
973
+ trigger(target, "add" /* TriggerOpTypes.ADD */, value, value);
974
974
  }
975
975
  return this;
976
976
  }
@@ -989,10 +989,10 @@ var VueRuntimeDOM = (function (exports) {
989
989
  const oldValue = get.call(target, key);
990
990
  target.set(key, value);
991
991
  if (!hadKey) {
992
- trigger(target, "add" /* ADD */, key, value);
992
+ trigger(target, "add" /* TriggerOpTypes.ADD */, key, value);
993
993
  }
994
994
  else if (hasChanged(value, oldValue)) {
995
- trigger(target, "set" /* SET */, key, value, oldValue);
995
+ trigger(target, "set" /* TriggerOpTypes.SET */, key, value, oldValue);
996
996
  }
997
997
  return this;
998
998
  }
@@ -1011,7 +1011,7 @@ var VueRuntimeDOM = (function (exports) {
1011
1011
  // forward the operation before queueing reactions
1012
1012
  const result = target.delete(key);
1013
1013
  if (hadKey) {
1014
- trigger(target, "delete" /* DELETE */, key, undefined, oldValue);
1014
+ trigger(target, "delete" /* TriggerOpTypes.DELETE */, key, undefined, oldValue);
1015
1015
  }
1016
1016
  return result;
1017
1017
  }
@@ -1025,17 +1025,17 @@ var VueRuntimeDOM = (function (exports) {
1025
1025
  // forward the operation before queueing reactions
1026
1026
  const result = target.clear();
1027
1027
  if (hadItems) {
1028
- trigger(target, "clear" /* CLEAR */, undefined, undefined, oldTarget);
1028
+ trigger(target, "clear" /* TriggerOpTypes.CLEAR */, undefined, undefined, oldTarget);
1029
1029
  }
1030
1030
  return result;
1031
1031
  }
1032
1032
  function createForEach(isReadonly, isShallow) {
1033
1033
  return function forEach(callback, thisArg) {
1034
1034
  const observed = this;
1035
- const target = observed["__v_raw" /* RAW */];
1035
+ const target = observed["__v_raw" /* ReactiveFlags.RAW */];
1036
1036
  const rawTarget = toRaw(target);
1037
1037
  const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
1038
- !isReadonly && track(rawTarget, "iterate" /* ITERATE */, ITERATE_KEY);
1038
+ !isReadonly && track(rawTarget, "iterate" /* TrackOpTypes.ITERATE */, ITERATE_KEY);
1039
1039
  return target.forEach((value, key) => {
1040
1040
  // important: make sure the callback is
1041
1041
  // 1. invoked with the reactive map as `this` and 3rd arg
@@ -1046,7 +1046,7 @@ var VueRuntimeDOM = (function (exports) {
1046
1046
  }
1047
1047
  function createIterableMethod(method, isReadonly, isShallow) {
1048
1048
  return function (...args) {
1049
- const target = this["__v_raw" /* RAW */];
1049
+ const target = this["__v_raw" /* ReactiveFlags.RAW */];
1050
1050
  const rawTarget = toRaw(target);
1051
1051
  const targetIsMap = isMap(rawTarget);
1052
1052
  const isPair = method === 'entries' || (method === Symbol.iterator && targetIsMap);
@@ -1054,7 +1054,7 @@ var VueRuntimeDOM = (function (exports) {
1054
1054
  const innerIterator = target[method](...args);
1055
1055
  const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
1056
1056
  !isReadonly &&
1057
- track(rawTarget, "iterate" /* ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);
1057
+ track(rawTarget, "iterate" /* TrackOpTypes.ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);
1058
1058
  // return a wrapped iterator which returns observed versions of the
1059
1059
  // values emitted from the real iterator
1060
1060
  return {
@@ -1081,7 +1081,7 @@ var VueRuntimeDOM = (function (exports) {
1081
1081
  const key = args[0] ? `on key "${args[0]}" ` : ``;
1082
1082
  console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this));
1083
1083
  }
1084
- return type === "delete" /* DELETE */ ? false : this;
1084
+ return type === "delete" /* TriggerOpTypes.DELETE */ ? false : this;
1085
1085
  };
1086
1086
  }
1087
1087
  function createInstrumentations() {
@@ -1123,10 +1123,10 @@ var VueRuntimeDOM = (function (exports) {
1123
1123
  has(key) {
1124
1124
  return has$1.call(this, key, true);
1125
1125
  },
1126
- add: createReadonlyMethod("add" /* ADD */),
1127
- set: createReadonlyMethod("set" /* SET */),
1128
- delete: createReadonlyMethod("delete" /* DELETE */),
1129
- clear: createReadonlyMethod("clear" /* CLEAR */),
1126
+ add: createReadonlyMethod("add" /* TriggerOpTypes.ADD */),
1127
+ set: createReadonlyMethod("set" /* TriggerOpTypes.SET */),
1128
+ delete: createReadonlyMethod("delete" /* TriggerOpTypes.DELETE */),
1129
+ clear: createReadonlyMethod("clear" /* TriggerOpTypes.CLEAR */),
1130
1130
  forEach: createForEach(true, false)
1131
1131
  };
1132
1132
  const shallowReadonlyInstrumentations = {
@@ -1139,10 +1139,10 @@ var VueRuntimeDOM = (function (exports) {
1139
1139
  has(key) {
1140
1140
  return has$1.call(this, key, true);
1141
1141
  },
1142
- add: createReadonlyMethod("add" /* ADD */),
1143
- set: createReadonlyMethod("set" /* SET */),
1144
- delete: createReadonlyMethod("delete" /* DELETE */),
1145
- clear: createReadonlyMethod("clear" /* CLEAR */),
1142
+ add: createReadonlyMethod("add" /* TriggerOpTypes.ADD */),
1143
+ set: createReadonlyMethod("set" /* TriggerOpTypes.SET */),
1144
+ delete: createReadonlyMethod("delete" /* TriggerOpTypes.DELETE */),
1145
+ clear: createReadonlyMethod("clear" /* TriggerOpTypes.CLEAR */),
1146
1146
  forEach: createForEach(true, true)
1147
1147
  };
1148
1148
  const iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator];
@@ -1169,13 +1169,13 @@ var VueRuntimeDOM = (function (exports) {
1169
1169
  ? readonlyInstrumentations
1170
1170
  : mutableInstrumentations;
1171
1171
  return (target, key, receiver) => {
1172
- if (key === "__v_isReactive" /* IS_REACTIVE */) {
1172
+ if (key === "__v_isReactive" /* ReactiveFlags.IS_REACTIVE */) {
1173
1173
  return !isReadonly;
1174
1174
  }
1175
- else if (key === "__v_isReadonly" /* IS_READONLY */) {
1175
+ else if (key === "__v_isReadonly" /* ReactiveFlags.IS_READONLY */) {
1176
1176
  return isReadonly;
1177
1177
  }
1178
- else if (key === "__v_raw" /* RAW */) {
1178
+ else if (key === "__v_raw" /* ReactiveFlags.RAW */) {
1179
1179
  return target;
1180
1180
  }
1181
1181
  return Reflect.get(hasOwn(instrumentations, key) && key in target
@@ -1215,19 +1215,19 @@ var VueRuntimeDOM = (function (exports) {
1215
1215
  switch (rawType) {
1216
1216
  case 'Object':
1217
1217
  case 'Array':
1218
- return 1 /* COMMON */;
1218
+ return 1 /* TargetType.COMMON */;
1219
1219
  case 'Map':
1220
1220
  case 'Set':
1221
1221
  case 'WeakMap':
1222
1222
  case 'WeakSet':
1223
- return 2 /* COLLECTION */;
1223
+ return 2 /* TargetType.COLLECTION */;
1224
1224
  default:
1225
- return 0 /* INVALID */;
1225
+ return 0 /* TargetType.INVALID */;
1226
1226
  }
1227
1227
  }
1228
1228
  function getTargetType(value) {
1229
- return value["__v_skip" /* SKIP */] || !Object.isExtensible(value)
1230
- ? 0 /* INVALID */
1229
+ return value["__v_skip" /* ReactiveFlags.SKIP */] || !Object.isExtensible(value)
1230
+ ? 0 /* TargetType.INVALID */
1231
1231
  : targetTypeMap(toRawType(value));
1232
1232
  }
1233
1233
  function reactive(target) {
@@ -1270,8 +1270,8 @@ var VueRuntimeDOM = (function (exports) {
1270
1270
  }
1271
1271
  // target is already a Proxy, return it.
1272
1272
  // exception: calling readonly() on a reactive object
1273
- if (target["__v_raw" /* RAW */] &&
1274
- !(isReadonly && target["__v_isReactive" /* IS_REACTIVE */])) {
1273
+ if (target["__v_raw" /* ReactiveFlags.RAW */] &&
1274
+ !(isReadonly && target["__v_isReactive" /* ReactiveFlags.IS_REACTIVE */])) {
1275
1275
  return target;
1276
1276
  }
1277
1277
  // target already has corresponding Proxy
@@ -1281,34 +1281,34 @@ var VueRuntimeDOM = (function (exports) {
1281
1281
  }
1282
1282
  // only specific value types can be observed.
1283
1283
  const targetType = getTargetType(target);
1284
- if (targetType === 0 /* INVALID */) {
1284
+ if (targetType === 0 /* TargetType.INVALID */) {
1285
1285
  return target;
1286
1286
  }
1287
- const proxy = new Proxy(target, targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers);
1287
+ const proxy = new Proxy(target, targetType === 2 /* TargetType.COLLECTION */ ? collectionHandlers : baseHandlers);
1288
1288
  proxyMap.set(target, proxy);
1289
1289
  return proxy;
1290
1290
  }
1291
1291
  function isReactive(value) {
1292
1292
  if (isReadonly(value)) {
1293
- return isReactive(value["__v_raw" /* RAW */]);
1293
+ return isReactive(value["__v_raw" /* ReactiveFlags.RAW */]);
1294
1294
  }
1295
- return !!(value && value["__v_isReactive" /* IS_REACTIVE */]);
1295
+ return !!(value && value["__v_isReactive" /* ReactiveFlags.IS_REACTIVE */]);
1296
1296
  }
1297
1297
  function isReadonly(value) {
1298
- return !!(value && value["__v_isReadonly" /* IS_READONLY */]);
1298
+ return !!(value && value["__v_isReadonly" /* ReactiveFlags.IS_READONLY */]);
1299
1299
  }
1300
1300
  function isShallow(value) {
1301
- return !!(value && value["__v_isShallow" /* IS_SHALLOW */]);
1301
+ return !!(value && value["__v_isShallow" /* ReactiveFlags.IS_SHALLOW */]);
1302
1302
  }
1303
1303
  function isProxy(value) {
1304
1304
  return isReactive(value) || isReadonly(value);
1305
1305
  }
1306
1306
  function toRaw(observed) {
1307
- const raw = observed && observed["__v_raw" /* RAW */];
1307
+ const raw = observed && observed["__v_raw" /* ReactiveFlags.RAW */];
1308
1308
  return raw ? toRaw(raw) : observed;
1309
1309
  }
1310
1310
  function markRaw(value) {
1311
- def(value, "__v_skip" /* SKIP */, true);
1311
+ def(value, "__v_skip" /* ReactiveFlags.SKIP */, true);
1312
1312
  return value;
1313
1313
  }
1314
1314
  const toReactive = (value) => isObject(value) ? reactive(value) : value;
@@ -1320,7 +1320,7 @@ var VueRuntimeDOM = (function (exports) {
1320
1320
  {
1321
1321
  trackEffects(ref.dep || (ref.dep = createDep()), {
1322
1322
  target: ref,
1323
- type: "get" /* GET */,
1323
+ type: "get" /* TrackOpTypes.GET */,
1324
1324
  key: 'value'
1325
1325
  });
1326
1326
  }
@@ -1332,7 +1332,7 @@ var VueRuntimeDOM = (function (exports) {
1332
1332
  {
1333
1333
  triggerEffects(ref.dep, {
1334
1334
  target: ref,
1335
- type: "set" /* SET */,
1335
+ type: "set" /* TriggerOpTypes.SET */,
1336
1336
  key: 'value',
1337
1337
  newValue: newVal
1338
1338
  });
@@ -1367,10 +1367,11 @@ var VueRuntimeDOM = (function (exports) {
1367
1367
  return this._value;
1368
1368
  }
1369
1369
  set value(newVal) {
1370
- newVal = this.__v_isShallow ? newVal : toRaw(newVal);
1370
+ const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);
1371
+ newVal = useDirectValue ? newVal : toRaw(newVal);
1371
1372
  if (hasChanged(newVal, this._rawValue)) {
1372
1373
  this._rawValue = newVal;
1373
- this._value = this.__v_isShallow ? newVal : toReactive(newVal);
1374
+ this._value = useDirectValue ? newVal : toReactive(newVal);
1374
1375
  triggerRefValue(this, newVal);
1375
1376
  }
1376
1377
  }
@@ -1449,11 +1450,13 @@ var VueRuntimeDOM = (function (exports) {
1449
1450
  : new ObjectRefImpl(object, key, defaultValue);
1450
1451
  }
1451
1452
 
1453
+ var _a;
1452
1454
  class ComputedRefImpl {
1453
1455
  constructor(getter, _setter, isReadonly, isSSR) {
1454
1456
  this._setter = _setter;
1455
1457
  this.dep = undefined;
1456
1458
  this.__v_isRef = true;
1459
+ this[_a] = false;
1457
1460
  this._dirty = true;
1458
1461
  this.effect = new ReactiveEffect(getter, () => {
1459
1462
  if (!this._dirty) {
@@ -1463,7 +1466,7 @@ var VueRuntimeDOM = (function (exports) {
1463
1466
  });
1464
1467
  this.effect.computed = this;
1465
1468
  this.effect.active = this._cacheable = !isSSR;
1466
- this["__v_isReadonly" /* IS_READONLY */] = isReadonly;
1469
+ this["__v_isReadonly" /* ReactiveFlags.IS_READONLY */] = isReadonly;
1467
1470
  }
1468
1471
  get value() {
1469
1472
  // the computed ref may get wrapped by other proxies e.g. readonly() #3376
@@ -1479,6 +1482,7 @@ var VueRuntimeDOM = (function (exports) {
1479
1482
  this._setter(newValue);
1480
1483
  }
1481
1484
  }
1485
+ _a = "__v_isReadonly" /* ReactiveFlags.IS_READONLY */;
1482
1486
  function computed(getterOrOptions, debugOptions, isSSR = false) {
1483
1487
  let getter;
1484
1488
  let setter;
@@ -1517,7 +1521,7 @@ var VueRuntimeDOM = (function (exports) {
1517
1521
  const appWarnHandler = instance && instance.appContext.config.warnHandler;
1518
1522
  const trace = getComponentTrace();
1519
1523
  if (appWarnHandler) {
1520
- callWithErrorHandling(appWarnHandler, instance, 11 /* APP_WARN_HANDLER */, [
1524
+ callWithErrorHandling(appWarnHandler, instance, 11 /* ErrorCodes.APP_WARN_HANDLER */, [
1521
1525
  msg + args.join(''),
1522
1526
  instance && instance.proxy,
1523
1527
  trace
@@ -1617,35 +1621,35 @@ var VueRuntimeDOM = (function (exports) {
1617
1621
  }
1618
1622
 
1619
1623
  const ErrorTypeStrings = {
1620
- ["sp" /* SERVER_PREFETCH */]: 'serverPrefetch hook',
1621
- ["bc" /* BEFORE_CREATE */]: 'beforeCreate hook',
1622
- ["c" /* CREATED */]: 'created hook',
1623
- ["bm" /* BEFORE_MOUNT */]: 'beforeMount hook',
1624
- ["m" /* MOUNTED */]: 'mounted hook',
1625
- ["bu" /* BEFORE_UPDATE */]: 'beforeUpdate hook',
1626
- ["u" /* UPDATED */]: 'updated',
1627
- ["bum" /* BEFORE_UNMOUNT */]: 'beforeUnmount hook',
1628
- ["um" /* UNMOUNTED */]: 'unmounted hook',
1629
- ["a" /* ACTIVATED */]: 'activated hook',
1630
- ["da" /* DEACTIVATED */]: 'deactivated hook',
1631
- ["ec" /* ERROR_CAPTURED */]: 'errorCaptured hook',
1632
- ["rtc" /* RENDER_TRACKED */]: 'renderTracked hook',
1633
- ["rtg" /* RENDER_TRIGGERED */]: 'renderTriggered hook',
1634
- [0 /* SETUP_FUNCTION */]: 'setup function',
1635
- [1 /* RENDER_FUNCTION */]: 'render function',
1636
- [2 /* WATCH_GETTER */]: 'watcher getter',
1637
- [3 /* WATCH_CALLBACK */]: 'watcher callback',
1638
- [4 /* WATCH_CLEANUP */]: 'watcher cleanup function',
1639
- [5 /* NATIVE_EVENT_HANDLER */]: 'native event handler',
1640
- [6 /* COMPONENT_EVENT_HANDLER */]: 'component event handler',
1641
- [7 /* VNODE_HOOK */]: 'vnode hook',
1642
- [8 /* DIRECTIVE_HOOK */]: 'directive hook',
1643
- [9 /* TRANSITION_HOOK */]: 'transition hook',
1644
- [10 /* APP_ERROR_HANDLER */]: 'app errorHandler',
1645
- [11 /* APP_WARN_HANDLER */]: 'app warnHandler',
1646
- [12 /* FUNCTION_REF */]: 'ref function',
1647
- [13 /* ASYNC_COMPONENT_LOADER */]: 'async component loader',
1648
- [14 /* SCHEDULER */]: 'scheduler flush. This is likely a Vue internals bug. ' +
1624
+ ["sp" /* LifecycleHooks.SERVER_PREFETCH */]: 'serverPrefetch hook',
1625
+ ["bc" /* LifecycleHooks.BEFORE_CREATE */]: 'beforeCreate hook',
1626
+ ["c" /* LifecycleHooks.CREATED */]: 'created hook',
1627
+ ["bm" /* LifecycleHooks.BEFORE_MOUNT */]: 'beforeMount hook',
1628
+ ["m" /* LifecycleHooks.MOUNTED */]: 'mounted hook',
1629
+ ["bu" /* LifecycleHooks.BEFORE_UPDATE */]: 'beforeUpdate hook',
1630
+ ["u" /* LifecycleHooks.UPDATED */]: 'updated',
1631
+ ["bum" /* LifecycleHooks.BEFORE_UNMOUNT */]: 'beforeUnmount hook',
1632
+ ["um" /* LifecycleHooks.UNMOUNTED */]: 'unmounted hook',
1633
+ ["a" /* LifecycleHooks.ACTIVATED */]: 'activated hook',
1634
+ ["da" /* LifecycleHooks.DEACTIVATED */]: 'deactivated hook',
1635
+ ["ec" /* LifecycleHooks.ERROR_CAPTURED */]: 'errorCaptured hook',
1636
+ ["rtc" /* LifecycleHooks.RENDER_TRACKED */]: 'renderTracked hook',
1637
+ ["rtg" /* LifecycleHooks.RENDER_TRIGGERED */]: 'renderTriggered hook',
1638
+ [0 /* ErrorCodes.SETUP_FUNCTION */]: 'setup function',
1639
+ [1 /* ErrorCodes.RENDER_FUNCTION */]: 'render function',
1640
+ [2 /* ErrorCodes.WATCH_GETTER */]: 'watcher getter',
1641
+ [3 /* ErrorCodes.WATCH_CALLBACK */]: 'watcher callback',
1642
+ [4 /* ErrorCodes.WATCH_CLEANUP */]: 'watcher cleanup function',
1643
+ [5 /* ErrorCodes.NATIVE_EVENT_HANDLER */]: 'native event handler',
1644
+ [6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */]: 'component event handler',
1645
+ [7 /* ErrorCodes.VNODE_HOOK */]: 'vnode hook',
1646
+ [8 /* ErrorCodes.DIRECTIVE_HOOK */]: 'directive hook',
1647
+ [9 /* ErrorCodes.TRANSITION_HOOK */]: 'transition hook',
1648
+ [10 /* ErrorCodes.APP_ERROR_HANDLER */]: 'app errorHandler',
1649
+ [11 /* ErrorCodes.APP_WARN_HANDLER */]: 'app warnHandler',
1650
+ [12 /* ErrorCodes.FUNCTION_REF */]: 'ref function',
1651
+ [13 /* ErrorCodes.ASYNC_COMPONENT_LOADER */]: 'async component loader',
1652
+ [14 /* ErrorCodes.SCHEDULER */]: 'scheduler flush. This is likely a Vue internals bug. ' +
1649
1653
  'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core'
1650
1654
  };
1651
1655
  function callWithErrorHandling(fn, instance, type, args) {
@@ -1696,7 +1700,7 @@ var VueRuntimeDOM = (function (exports) {
1696
1700
  // app-level handling
1697
1701
  const appErrorHandler = instance.appContext.config.errorHandler;
1698
1702
  if (appErrorHandler) {
1699
- callWithErrorHandling(appErrorHandler, null, 10 /* APP_ERROR_HANDLER */, [err, exposedInstance, errorInfo]);
1703
+ callWithErrorHandling(appErrorHandler, null, 10 /* ErrorCodes.APP_ERROR_HANDLER */, [err, exposedInstance, errorInfo]);
1700
1704
  return;
1701
1705
  }
1702
1706
  }
@@ -1726,15 +1730,11 @@ var VueRuntimeDOM = (function (exports) {
1726
1730
  let isFlushPending = false;
1727
1731
  const queue = [];
1728
1732
  let flushIndex = 0;
1729
- const pendingPreFlushCbs = [];
1730
- let activePreFlushCbs = null;
1731
- let preFlushIndex = 0;
1732
1733
  const pendingPostFlushCbs = [];
1733
1734
  let activePostFlushCbs = null;
1734
1735
  let postFlushIndex = 0;
1735
1736
  const resolvedPromise = /*#__PURE__*/ Promise.resolve();
1736
1737
  let currentFlushPromise = null;
1737
- let currentPreFlushParentJob = null;
1738
1738
  const RECURSION_LIMIT = 100;
1739
1739
  function nextTick(fn) {
1740
1740
  const p = currentFlushPromise || resolvedPromise;
@@ -1762,9 +1762,8 @@ var VueRuntimeDOM = (function (exports) {
1762
1762
  // if the job is a watch() callback, the search will start with a +1 index to
1763
1763
  // allow it recursively trigger itself - it is the user's responsibility to
1764
1764
  // ensure it doesn't end up in an infinite loop.
1765
- if ((!queue.length ||
1766
- !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) &&
1767
- job !== currentPreFlushParentJob) {
1765
+ if (!queue.length ||
1766
+ !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) {
1768
1767
  if (job.id == null) {
1769
1768
  queue.push(job);
1770
1769
  }
@@ -1786,51 +1785,40 @@ var VueRuntimeDOM = (function (exports) {
1786
1785
  queue.splice(i, 1);
1787
1786
  }
1788
1787
  }
1789
- function queueCb(cb, activeQueue, pendingQueue, index) {
1788
+ function queuePostFlushCb(cb) {
1790
1789
  if (!isArray(cb)) {
1791
- if (!activeQueue ||
1792
- !activeQueue.includes(cb, cb.allowRecurse ? index + 1 : index)) {
1793
- pendingQueue.push(cb);
1790
+ if (!activePostFlushCbs ||
1791
+ !activePostFlushCbs.includes(cb, cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex)) {
1792
+ pendingPostFlushCbs.push(cb);
1794
1793
  }
1795
1794
  }
1796
1795
  else {
1797
1796
  // if cb is an array, it is a component lifecycle hook which can only be
1798
1797
  // triggered by a job, which is already deduped in the main queue, so
1799
1798
  // we can skip duplicate check here to improve perf
1800
- pendingQueue.push(...cb);
1799
+ pendingPostFlushCbs.push(...cb);
1801
1800
  }
1802
1801
  queueFlush();
1803
1802
  }
1804
- function queuePreFlushCb(cb) {
1805
- queueCb(cb, activePreFlushCbs, pendingPreFlushCbs, preFlushIndex);
1806
- }
1807
- function queuePostFlushCb(cb) {
1808
- queueCb(cb, activePostFlushCbs, pendingPostFlushCbs, postFlushIndex);
1809
- }
1810
- function flushPreFlushCbs(seen, parentJob = null) {
1811
- if (pendingPreFlushCbs.length) {
1812
- currentPreFlushParentJob = parentJob;
1813
- activePreFlushCbs = [...new Set(pendingPreFlushCbs)];
1814
- pendingPreFlushCbs.length = 0;
1815
- {
1816
- seen = seen || new Map();
1817
- }
1818
- for (preFlushIndex = 0; preFlushIndex < activePreFlushCbs.length; preFlushIndex++) {
1819
- if (checkRecursiveUpdates(seen, activePreFlushCbs[preFlushIndex])) {
1803
+ function flushPreFlushCbs(seen,
1804
+ // if currently flushing, skip the current job itself
1805
+ i = isFlushing ? flushIndex + 1 : 0) {
1806
+ {
1807
+ seen = seen || new Map();
1808
+ }
1809
+ for (; i < queue.length; i++) {
1810
+ const cb = queue[i];
1811
+ if (cb && cb.pre) {
1812
+ if (checkRecursiveUpdates(seen, cb)) {
1820
1813
  continue;
1821
1814
  }
1822
- activePreFlushCbs[preFlushIndex]();
1815
+ queue.splice(i, 1);
1816
+ i--;
1817
+ cb();
1823
1818
  }
1824
- activePreFlushCbs = null;
1825
- preFlushIndex = 0;
1826
- currentPreFlushParentJob = null;
1827
- // recursively flush until it drains
1828
- flushPreFlushCbs(seen, parentJob);
1829
1819
  }
1830
1820
  }
1831
1821
  function flushPostFlushCbs(seen) {
1832
- // flush any pre cbs queued during the flush (e.g. pre watchers)
1833
- flushPreFlushCbs();
1834
1822
  if (pendingPostFlushCbs.length) {
1835
1823
  const deduped = [...new Set(pendingPostFlushCbs)];
1836
1824
  pendingPostFlushCbs.length = 0;
@@ -1855,13 +1843,22 @@ var VueRuntimeDOM = (function (exports) {
1855
1843
  }
1856
1844
  }
1857
1845
  const getId = (job) => job.id == null ? Infinity : job.id;
1846
+ const comparator = (a, b) => {
1847
+ const diff = getId(a) - getId(b);
1848
+ if (diff === 0) {
1849
+ if (a.pre && !b.pre)
1850
+ return -1;
1851
+ if (b.pre && !a.pre)
1852
+ return 1;
1853
+ }
1854
+ return diff;
1855
+ };
1858
1856
  function flushJobs(seen) {
1859
1857
  isFlushPending = false;
1860
1858
  isFlushing = true;
1861
1859
  {
1862
1860
  seen = seen || new Map();
1863
1861
  }
1864
- flushPreFlushCbs(seen);
1865
1862
  // Sort queue before flush.
1866
1863
  // This ensures that:
1867
1864
  // 1. Components are updated from parent to child. (because parent is always
@@ -1869,7 +1866,7 @@ var VueRuntimeDOM = (function (exports) {
1869
1866
  // priority number)
1870
1867
  // 2. If a component is unmounted during a parent component's update,
1871
1868
  // its update can be skipped.
1872
- queue.sort((a, b) => getId(a) - getId(b));
1869
+ queue.sort(comparator);
1873
1870
  // conditional usage of checkRecursiveUpdate must be determined out of
1874
1871
  // try ... catch block since Rollup by default de-optimizes treeshaking
1875
1872
  // inside try-catch. This can leave all warning code unshaked. Although
@@ -1885,7 +1882,7 @@ var VueRuntimeDOM = (function (exports) {
1885
1882
  continue;
1886
1883
  }
1887
1884
  // console.log(`running:`, job.id)
1888
- callWithErrorHandling(job, null, 14 /* SCHEDULER */);
1885
+ callWithErrorHandling(job, null, 14 /* ErrorCodes.SCHEDULER */);
1889
1886
  }
1890
1887
  }
1891
1888
  }
@@ -1897,9 +1894,7 @@ var VueRuntimeDOM = (function (exports) {
1897
1894
  currentFlushPromise = null;
1898
1895
  // some postFlushCb queued jobs!
1899
1896
  // keep flushing until it drains.
1900
- if (queue.length ||
1901
- pendingPreFlushCbs.length ||
1902
- pendingPostFlushCbs.length) {
1897
+ if (queue.length || pendingPostFlushCbs.length) {
1903
1898
  flushJobs(seen);
1904
1899
  }
1905
1900
  }
@@ -2116,7 +2111,7 @@ var VueRuntimeDOM = (function (exports) {
2116
2111
  }
2117
2112
  }
2118
2113
  function devtoolsInitApp(app, version) {
2119
- emit("app:init" /* APP_INIT */, app, version, {
2114
+ emit("app:init" /* DevtoolsHooks.APP_INIT */, app, version, {
2120
2115
  Fragment,
2121
2116
  Text,
2122
2117
  Comment,
@@ -2124,27 +2119,27 @@ var VueRuntimeDOM = (function (exports) {
2124
2119
  });
2125
2120
  }
2126
2121
  function devtoolsUnmountApp(app) {
2127
- emit("app:unmount" /* APP_UNMOUNT */, app);
2122
+ emit("app:unmount" /* DevtoolsHooks.APP_UNMOUNT */, app);
2128
2123
  }
2129
- const devtoolsComponentAdded = /*#__PURE__*/ createDevtoolsComponentHook("component:added" /* COMPONENT_ADDED */);
2124
+ const devtoolsComponentAdded = /*#__PURE__*/ createDevtoolsComponentHook("component:added" /* DevtoolsHooks.COMPONENT_ADDED */);
2130
2125
  const devtoolsComponentUpdated =
2131
- /*#__PURE__*/ createDevtoolsComponentHook("component:updated" /* COMPONENT_UPDATED */);
2126
+ /*#__PURE__*/ createDevtoolsComponentHook("component:updated" /* DevtoolsHooks.COMPONENT_UPDATED */);
2132
2127
  const devtoolsComponentRemoved =
2133
- /*#__PURE__*/ createDevtoolsComponentHook("component:removed" /* COMPONENT_REMOVED */);
2128
+ /*#__PURE__*/ createDevtoolsComponentHook("component:removed" /* DevtoolsHooks.COMPONENT_REMOVED */);
2134
2129
  function createDevtoolsComponentHook(hook) {
2135
2130
  return (component) => {
2136
2131
  emit(hook, component.appContext.app, component.uid, component.parent ? component.parent.uid : undefined, component);
2137
2132
  };
2138
2133
  }
2139
- const devtoolsPerfStart = /*#__PURE__*/ createDevtoolsPerformanceHook("perf:start" /* PERFORMANCE_START */);
2140
- const devtoolsPerfEnd = /*#__PURE__*/ createDevtoolsPerformanceHook("perf:end" /* PERFORMANCE_END */);
2134
+ const devtoolsPerfStart = /*#__PURE__*/ createDevtoolsPerformanceHook("perf:start" /* DevtoolsHooks.PERFORMANCE_START */);
2135
+ const devtoolsPerfEnd = /*#__PURE__*/ createDevtoolsPerformanceHook("perf:end" /* DevtoolsHooks.PERFORMANCE_END */);
2141
2136
  function createDevtoolsPerformanceHook(hook) {
2142
2137
  return (component, type, time) => {
2143
2138
  emit(hook, component.appContext.app, component.uid, component, type, time);
2144
2139
  };
2145
2140
  }
2146
2141
  function devtoolsComponentEmit(component, event, params) {
2147
- emit("component:emit" /* COMPONENT_EMIT */, component.appContext.app, component, event, params);
2142
+ emit("component:emit" /* DevtoolsHooks.COMPONENT_EMIT */, component.appContext.app, component, event, params);
2148
2143
  }
2149
2144
 
2150
2145
  function emit$1(instance, event, ...rawArgs) {
@@ -2209,7 +2204,7 @@ var VueRuntimeDOM = (function (exports) {
2209
2204
  handler = props[(handlerName = toHandlerKey(hyphenate(event)))];
2210
2205
  }
2211
2206
  if (handler) {
2212
- callWithAsyncErrorHandling(handler, instance, 6 /* COMPONENT_EVENT_HANDLER */, args);
2207
+ callWithAsyncErrorHandling(handler, instance, 6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */, args);
2213
2208
  }
2214
2209
  const onceHandler = props[handlerName + `Once`];
2215
2210
  if (onceHandler) {
@@ -2220,7 +2215,7 @@ var VueRuntimeDOM = (function (exports) {
2220
2215
  return;
2221
2216
  }
2222
2217
  instance.emitted[handlerName] = true;
2223
- callWithAsyncErrorHandling(onceHandler, instance, 6 /* COMPONENT_EVENT_HANDLER */, args);
2218
+ callWithAsyncErrorHandling(onceHandler, instance, 6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */, args);
2224
2219
  }
2225
2220
  }
2226
2221
  function normalizeEmitsOptions(comp, appContext, asMixin = false) {
@@ -2252,7 +2247,9 @@ var VueRuntimeDOM = (function (exports) {
2252
2247
  }
2253
2248
  }
2254
2249
  if (!raw && !hasExtends) {
2255
- cache.set(comp, null);
2250
+ if (isObject(comp)) {
2251
+ cache.set(comp, null);
2252
+ }
2256
2253
  return null;
2257
2254
  }
2258
2255
  if (isArray(raw)) {
@@ -2261,7 +2258,9 @@ var VueRuntimeDOM = (function (exports) {
2261
2258
  else {
2262
2259
  extend(normalized, raw);
2263
2260
  }
2264
- cache.set(comp, normalized);
2261
+ if (isObject(comp)) {
2262
+ cache.set(comp, normalized);
2263
+ }
2265
2264
  return normalized;
2266
2265
  }
2267
2266
  // Check if an incoming prop key is a declared emit event listener.
@@ -2380,7 +2379,7 @@ var VueRuntimeDOM = (function (exports) {
2380
2379
  accessedAttrs = false;
2381
2380
  }
2382
2381
  try {
2383
- if (vnode.shapeFlag & 4 /* STATEFUL_COMPONENT */) {
2382
+ if (vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */) {
2384
2383
  // withProxy is a proxy with a different `has` trap only for
2385
2384
  // runtime-compiled render functions using `with` block.
2386
2385
  const proxyToUse = withProxy || proxy;
@@ -2413,7 +2412,7 @@ var VueRuntimeDOM = (function (exports) {
2413
2412
  }
2414
2413
  catch (err) {
2415
2414
  blockStack.length = 0;
2416
- handleError(err, instance, 1 /* RENDER_FUNCTION */);
2415
+ handleError(err, instance, 1 /* ErrorCodes.RENDER_FUNCTION */);
2417
2416
  result = createVNode(Comment);
2418
2417
  }
2419
2418
  // attr merging
@@ -2422,14 +2421,14 @@ var VueRuntimeDOM = (function (exports) {
2422
2421
  let root = result;
2423
2422
  let setRoot = undefined;
2424
2423
  if (result.patchFlag > 0 &&
2425
- result.patchFlag & 2048 /* DEV_ROOT_FRAGMENT */) {
2424
+ result.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */) {
2426
2425
  [root, setRoot] = getChildRoot(result);
2427
2426
  }
2428
2427
  if (fallthroughAttrs && inheritAttrs !== false) {
2429
2428
  const keys = Object.keys(fallthroughAttrs);
2430
2429
  const { shapeFlag } = root;
2431
2430
  if (keys.length) {
2432
- if (shapeFlag & (1 /* ELEMENT */ | 6 /* COMPONENT */)) {
2431
+ if (shapeFlag & (1 /* ShapeFlags.ELEMENT */ | 6 /* ShapeFlags.COMPONENT */)) {
2433
2432
  if (propsOptions && keys.some(isModelListener)) {
2434
2433
  // If a v-model listener (onUpdate:xxx) has a corresponding declared
2435
2434
  // prop, it indicates this component expects to handle v-model and
@@ -2570,7 +2569,7 @@ var VueRuntimeDOM = (function (exports) {
2570
2569
  return res;
2571
2570
  };
2572
2571
  const isElementRoot = (vnode) => {
2573
- return (vnode.shapeFlag & (6 /* COMPONENT */ | 1 /* ELEMENT */) ||
2572
+ return (vnode.shapeFlag & (6 /* ShapeFlags.COMPONENT */ | 1 /* ShapeFlags.ELEMENT */) ||
2574
2573
  vnode.type === Comment // potential v-if branch switch
2575
2574
  );
2576
2575
  };
@@ -2589,19 +2588,19 @@ var VueRuntimeDOM = (function (exports) {
2589
2588
  return true;
2590
2589
  }
2591
2590
  if (optimized && patchFlag >= 0) {
2592
- if (patchFlag & 1024 /* DYNAMIC_SLOTS */) {
2591
+ if (patchFlag & 1024 /* PatchFlags.DYNAMIC_SLOTS */) {
2593
2592
  // slot content that references values that might have changed,
2594
2593
  // e.g. in a v-for
2595
2594
  return true;
2596
2595
  }
2597
- if (patchFlag & 16 /* FULL_PROPS */) {
2596
+ if (patchFlag & 16 /* PatchFlags.FULL_PROPS */) {
2598
2597
  if (!prevProps) {
2599
2598
  return !!nextProps;
2600
2599
  }
2601
2600
  // presence of this flag indicates props are always non-null
2602
2601
  return hasPropsChanged(prevProps, nextProps, emits);
2603
2602
  }
2604
- else if (patchFlag & 8 /* PROPS */) {
2603
+ else if (patchFlag & 8 /* PatchFlags.PROPS */) {
2605
2604
  const dynamicProps = nextVNode.dynamicProps;
2606
2605
  for (let i = 0; i < dynamicProps.length; i++) {
2607
2606
  const key = dynamicProps[i];
@@ -2859,7 +2858,7 @@ var VueRuntimeDOM = (function (exports) {
2859
2858
  if (delayEnter) {
2860
2859
  activeBranch.transition.afterLeave = () => {
2861
2860
  if (pendingId === suspense.pendingId) {
2862
- move(pendingBranch, container, anchor, 0 /* ENTER */);
2861
+ move(pendingBranch, container, anchor, 0 /* MoveType.ENTER */);
2863
2862
  }
2864
2863
  };
2865
2864
  }
@@ -2874,7 +2873,7 @@ var VueRuntimeDOM = (function (exports) {
2874
2873
  }
2875
2874
  if (!delayEnter) {
2876
2875
  // move content from off-dom container to actual container
2877
- move(pendingBranch, container, anchor, 0 /* ENTER */);
2876
+ move(pendingBranch, container, anchor, 0 /* MoveType.ENTER */);
2878
2877
  }
2879
2878
  }
2880
2879
  setActiveBranch(suspense, pendingBranch);
@@ -2948,7 +2947,7 @@ var VueRuntimeDOM = (function (exports) {
2948
2947
  const hydratedEl = instance.vnode.el;
2949
2948
  instance
2950
2949
  .asyncDep.catch(err => {
2951
- handleError(err, instance, 0 /* SETUP_FUNCTION */);
2950
+ handleError(err, instance, 0 /* ErrorCodes.SETUP_FUNCTION */);
2952
2951
  })
2953
2952
  .then(asyncSetupResult => {
2954
2953
  // retry when the setup() promise resolves.
@@ -3022,7 +3021,7 @@ var VueRuntimeDOM = (function (exports) {
3022
3021
  }
3023
3022
  function normalizeSuspenseChildren(vnode) {
3024
3023
  const { shapeFlag, children } = vnode;
3025
- const isSlotChildren = shapeFlag & 32 /* SLOTS_CHILDREN */;
3024
+ const isSlotChildren = shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */;
3026
3025
  vnode.ssContent = normalizeSuspenseSlot(isSlotChildren ? children.default : children);
3027
3026
  vnode.ssFallback = isSlotChildren
3028
3027
  ? normalizeSuspenseSlot(children.fallback)
@@ -3193,7 +3192,7 @@ var VueRuntimeDOM = (function (exports) {
3193
3192
  return traverse(s);
3194
3193
  }
3195
3194
  else if (isFunction(s)) {
3196
- return callWithErrorHandling(s, instance, 2 /* WATCH_GETTER */);
3195
+ return callWithErrorHandling(s, instance, 2 /* ErrorCodes.WATCH_GETTER */);
3197
3196
  }
3198
3197
  else {
3199
3198
  warnInvalidSource(s);
@@ -3203,7 +3202,7 @@ var VueRuntimeDOM = (function (exports) {
3203
3202
  else if (isFunction(source)) {
3204
3203
  if (cb) {
3205
3204
  // getter with cb
3206
- getter = () => callWithErrorHandling(source, instance, 2 /* WATCH_GETTER */);
3205
+ getter = () => callWithErrorHandling(source, instance, 2 /* ErrorCodes.WATCH_GETTER */);
3207
3206
  }
3208
3207
  else {
3209
3208
  // no cb -> simple effect
@@ -3214,7 +3213,7 @@ var VueRuntimeDOM = (function (exports) {
3214
3213
  if (cleanup) {
3215
3214
  cleanup();
3216
3215
  }
3217
- return callWithAsyncErrorHandling(source, instance, 3 /* WATCH_CALLBACK */, [onCleanup]);
3216
+ return callWithAsyncErrorHandling(source, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [onCleanup]);
3218
3217
  };
3219
3218
  }
3220
3219
  }
@@ -3229,7 +3228,7 @@ var VueRuntimeDOM = (function (exports) {
3229
3228
  let cleanup;
3230
3229
  let onCleanup = (fn) => {
3231
3230
  cleanup = effect.onStop = () => {
3232
- callWithErrorHandling(fn, instance, 4 /* WATCH_CLEANUP */);
3231
+ callWithErrorHandling(fn, instance, 4 /* ErrorCodes.WATCH_CLEANUP */);
3233
3232
  };
3234
3233
  };
3235
3234
  let oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE;
@@ -3250,7 +3249,7 @@ var VueRuntimeDOM = (function (exports) {
3250
3249
  if (cleanup) {
3251
3250
  cleanup();
3252
3251
  }
3253
- callWithAsyncErrorHandling(cb, instance, 3 /* WATCH_CALLBACK */, [
3252
+ callWithAsyncErrorHandling(cb, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [
3254
3253
  newValue,
3255
3254
  // pass undefined as the old value when it's changed for the first time
3256
3255
  oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue,
@@ -3276,7 +3275,10 @@ var VueRuntimeDOM = (function (exports) {
3276
3275
  }
3277
3276
  else {
3278
3277
  // default: 'pre'
3279
- scheduler = () => queuePreFlushCb(job);
3278
+ job.pre = true;
3279
+ if (instance)
3280
+ job.id = instance.uid;
3281
+ scheduler = () => queueJob(job);
3280
3282
  }
3281
3283
  const effect = new ReactiveEffect(getter, scheduler);
3282
3284
  {
@@ -3343,7 +3345,7 @@ var VueRuntimeDOM = (function (exports) {
3343
3345
  };
3344
3346
  }
3345
3347
  function traverse(value, seen) {
3346
- if (!isObject(value) || value["__v_skip" /* SKIP */]) {
3348
+ if (!isObject(value) || value["__v_skip" /* ReactiveFlags.SKIP */]) {
3347
3349
  return value;
3348
3350
  }
3349
3351
  seen = seen || new Set();
@@ -3527,7 +3529,7 @@ var VueRuntimeDOM = (function (exports) {
3527
3529
  const leavingVNodesCache = getLeavingNodesForType(state, vnode);
3528
3530
  const callHook = (hook, args) => {
3529
3531
  hook &&
3530
- callWithAsyncErrorHandling(hook, instance, 9 /* TRANSITION_HOOK */, args);
3532
+ callWithAsyncErrorHandling(hook, instance, 9 /* ErrorCodes.TRANSITION_HOOK */, args);
3531
3533
  };
3532
3534
  const callAsyncHook = (hook, args) => {
3533
3535
  const done = args[1];
@@ -3663,10 +3665,10 @@ var VueRuntimeDOM = (function (exports) {
3663
3665
  : vnode;
3664
3666
  }
3665
3667
  function setTransitionHooks(vnode, hooks) {
3666
- if (vnode.shapeFlag & 6 /* COMPONENT */ && vnode.component) {
3668
+ if (vnode.shapeFlag & 6 /* ShapeFlags.COMPONENT */ && vnode.component) {
3667
3669
  setTransitionHooks(vnode.component.subTree, hooks);
3668
3670
  }
3669
- else if (vnode.shapeFlag & 128 /* SUSPENSE */) {
3671
+ else if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {
3670
3672
  vnode.ssContent.transition = hooks.clone(vnode.ssContent);
3671
3673
  vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);
3672
3674
  }
@@ -3685,7 +3687,7 @@ var VueRuntimeDOM = (function (exports) {
3685
3687
  : String(parentKey) + String(child.key != null ? child.key : i);
3686
3688
  // handle fragment children case, e.g. v-for
3687
3689
  if (child.type === Fragment) {
3688
- if (child.patchFlag & 128 /* KEYED_FRAGMENT */)
3690
+ if (child.patchFlag & 128 /* PatchFlags.KEYED_FRAGMENT */)
3689
3691
  keyedFragmentCount++;
3690
3692
  ret = ret.concat(getTransitionRawChildren(child.children, keepComment, key));
3691
3693
  }
@@ -3700,7 +3702,7 @@ var VueRuntimeDOM = (function (exports) {
3700
3702
  // these children to force full diffs to ensure correct behavior.
3701
3703
  if (keyedFragmentCount > 1) {
3702
3704
  for (let i = 0; i < ret.length; i++) {
3703
- ret[i].patchFlag = -2 /* BAIL */;
3705
+ ret[i].patchFlag = -2 /* PatchFlags.BAIL */;
3704
3706
  }
3705
3707
  }
3706
3708
  return ret;
@@ -3778,7 +3780,7 @@ var VueRuntimeDOM = (function (exports) {
3778
3780
  }
3779
3781
  const onError = (err) => {
3780
3782
  pendingRequest = null;
3781
- handleError(err, instance, 13 /* ASYNC_COMPONENT_LOADER */, !errorComponent /* do not throw in dev if user provided error component */);
3783
+ handleError(err, instance, 13 /* ErrorCodes.ASYNC_COMPONENT_LOADER */, !errorComponent /* do not throw in dev if user provided error component */);
3782
3784
  };
3783
3785
  // suspense-controlled or SSR.
3784
3786
  if ((suspensible && instance.suspense) ||
@@ -3880,7 +3882,7 @@ var VueRuntimeDOM = (function (exports) {
3880
3882
  const storageContainer = createElement('div');
3881
3883
  sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => {
3882
3884
  const instance = vnode.component;
3883
- move(vnode, container, anchor, 0 /* ENTER */, parentSuspense);
3885
+ move(vnode, container, anchor, 0 /* MoveType.ENTER */, parentSuspense);
3884
3886
  // in case props have changed
3885
3887
  patch(instance.vnode, vnode, container, anchor, instance, parentSuspense, isSVG, vnode.slotScopeIds, optimized);
3886
3888
  queuePostRenderEffect(() => {
@@ -3900,7 +3902,7 @@ var VueRuntimeDOM = (function (exports) {
3900
3902
  };
3901
3903
  sharedContext.deactivate = (vnode) => {
3902
3904
  const instance = vnode.component;
3903
- move(vnode, storageContainer, null, 1 /* LEAVE */, parentSuspense);
3905
+ move(vnode, storageContainer, null, 1 /* MoveType.LEAVE */, parentSuspense);
3904
3906
  queuePostRenderEffect(() => {
3905
3907
  if (instance.da) {
3906
3908
  invokeArrayFns(instance.da);
@@ -3989,8 +3991,8 @@ var VueRuntimeDOM = (function (exports) {
3989
3991
  return children;
3990
3992
  }
3991
3993
  else if (!isVNode(rawVNode) ||
3992
- (!(rawVNode.shapeFlag & 4 /* STATEFUL_COMPONENT */) &&
3993
- !(rawVNode.shapeFlag & 128 /* SUSPENSE */))) {
3994
+ (!(rawVNode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */) &&
3995
+ !(rawVNode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */))) {
3994
3996
  current = null;
3995
3997
  return rawVNode;
3996
3998
  }
@@ -4012,7 +4014,7 @@ var VueRuntimeDOM = (function (exports) {
4012
4014
  // clone vnode if it's reused because we are going to mutate it
4013
4015
  if (vnode.el) {
4014
4016
  vnode = cloneVNode(vnode);
4015
- if (rawVNode.shapeFlag & 128 /* SUSPENSE */) {
4017
+ if (rawVNode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {
4016
4018
  rawVNode.ssContent = vnode;
4017
4019
  }
4018
4020
  }
@@ -4031,7 +4033,7 @@ var VueRuntimeDOM = (function (exports) {
4031
4033
  setTransitionHooks(vnode, vnode.transition);
4032
4034
  }
4033
4035
  // avoid vnode being mounted as fresh
4034
- vnode.shapeFlag |= 512 /* COMPONENT_KEPT_ALIVE */;
4036
+ vnode.shapeFlag |= 512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */;
4035
4037
  // make this key the freshest
4036
4038
  keys.delete(key);
4037
4039
  keys.add(key);
@@ -4044,7 +4046,7 @@ var VueRuntimeDOM = (function (exports) {
4044
4046
  }
4045
4047
  }
4046
4048
  // avoid vnode being unmounted
4047
- vnode.shapeFlag |= 256 /* COMPONENT_SHOULD_KEEP_ALIVE */;
4049
+ vnode.shapeFlag |= 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */;
4048
4050
  current = vnode;
4049
4051
  return isSuspense(rawVNode.type) ? rawVNode : vnode;
4050
4052
  };
@@ -4067,10 +4069,10 @@ var VueRuntimeDOM = (function (exports) {
4067
4069
  return false;
4068
4070
  }
4069
4071
  function onActivated(hook, target) {
4070
- registerKeepAliveHook(hook, "a" /* ACTIVATED */, target);
4072
+ registerKeepAliveHook(hook, "a" /* LifecycleHooks.ACTIVATED */, target);
4071
4073
  }
4072
4074
  function onDeactivated(hook, target) {
4073
- registerKeepAliveHook(hook, "da" /* DEACTIVATED */, target);
4075
+ registerKeepAliveHook(hook, "da" /* LifecycleHooks.DEACTIVATED */, target);
4074
4076
  }
4075
4077
  function registerKeepAliveHook(hook, type, target = currentInstance) {
4076
4078
  // cache the deactivate branch check wrapper for injected hooks so the same
@@ -4114,16 +4116,16 @@ var VueRuntimeDOM = (function (exports) {
4114
4116
  }
4115
4117
  function resetShapeFlag(vnode) {
4116
4118
  let shapeFlag = vnode.shapeFlag;
4117
- if (shapeFlag & 256 /* COMPONENT_SHOULD_KEEP_ALIVE */) {
4118
- shapeFlag -= 256 /* COMPONENT_SHOULD_KEEP_ALIVE */;
4119
+ if (shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */) {
4120
+ shapeFlag -= 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */;
4119
4121
  }
4120
- if (shapeFlag & 512 /* COMPONENT_KEPT_ALIVE */) {
4121
- shapeFlag -= 512 /* COMPONENT_KEPT_ALIVE */;
4122
+ if (shapeFlag & 512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */) {
4123
+ shapeFlag -= 512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */;
4122
4124
  }
4123
4125
  vnode.shapeFlag = shapeFlag;
4124
4126
  }
4125
4127
  function getInnerChild(vnode) {
4126
- return vnode.shapeFlag & 128 /* SUSPENSE */ ? vnode.ssContent : vnode;
4128
+ return vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */ ? vnode.ssContent : vnode;
4127
4129
  }
4128
4130
 
4129
4131
  function injectHook(type, hook, target = currentInstance, prepend = false) {
@@ -4169,19 +4171,19 @@ var VueRuntimeDOM = (function (exports) {
4169
4171
  }
4170
4172
  const createHook = (lifecycle) => (hook, target = currentInstance) =>
4171
4173
  // post-create lifecycle registrations are noops during SSR (except for serverPrefetch)
4172
- (!isInSSRComponentSetup || lifecycle === "sp" /* SERVER_PREFETCH */) &&
4174
+ (!isInSSRComponentSetup || lifecycle === "sp" /* LifecycleHooks.SERVER_PREFETCH */) &&
4173
4175
  injectHook(lifecycle, hook, target);
4174
- const onBeforeMount = createHook("bm" /* BEFORE_MOUNT */);
4175
- const onMounted = createHook("m" /* MOUNTED */);
4176
- const onBeforeUpdate = createHook("bu" /* BEFORE_UPDATE */);
4177
- const onUpdated = createHook("u" /* UPDATED */);
4178
- const onBeforeUnmount = createHook("bum" /* BEFORE_UNMOUNT */);
4179
- const onUnmounted = createHook("um" /* UNMOUNTED */);
4180
- const onServerPrefetch = createHook("sp" /* SERVER_PREFETCH */);
4181
- const onRenderTriggered = createHook("rtg" /* RENDER_TRIGGERED */);
4182
- const onRenderTracked = createHook("rtc" /* RENDER_TRACKED */);
4176
+ const onBeforeMount = createHook("bm" /* LifecycleHooks.BEFORE_MOUNT */);
4177
+ const onMounted = createHook("m" /* LifecycleHooks.MOUNTED */);
4178
+ const onBeforeUpdate = createHook("bu" /* LifecycleHooks.BEFORE_UPDATE */);
4179
+ const onUpdated = createHook("u" /* LifecycleHooks.UPDATED */);
4180
+ const onBeforeUnmount = createHook("bum" /* LifecycleHooks.BEFORE_UNMOUNT */);
4181
+ const onUnmounted = createHook("um" /* LifecycleHooks.UNMOUNTED */);
4182
+ const onServerPrefetch = createHook("sp" /* LifecycleHooks.SERVER_PREFETCH */);
4183
+ const onRenderTriggered = createHook("rtg" /* LifecycleHooks.RENDER_TRIGGERED */);
4184
+ const onRenderTracked = createHook("rtc" /* LifecycleHooks.RENDER_TRACKED */);
4183
4185
  function onErrorCaptured(hook, target = currentInstance) {
4184
- injectHook("ec" /* ERROR_CAPTURED */, hook, target);
4186
+ injectHook("ec" /* LifecycleHooks.ERROR_CAPTURED */, hook, target);
4185
4187
  }
4186
4188
 
4187
4189
  /**
@@ -4248,7 +4250,7 @@ var VueRuntimeDOM = (function (exports) {
4248
4250
  // disable tracking inside all lifecycle hooks
4249
4251
  // since they can potentially be called inside effects.
4250
4252
  pauseTracking();
4251
- callWithAsyncErrorHandling(hook, instance, 8 /* DIRECTIVE_HOOK */, [
4253
+ callWithAsyncErrorHandling(hook, instance, 8 /* ErrorCodes.DIRECTIVE_HOOK */, [
4252
4254
  vnode.el,
4253
4255
  binding,
4254
4256
  vnode,
@@ -4293,7 +4295,7 @@ var VueRuntimeDOM = (function (exports) {
4293
4295
  const Component = instance.type;
4294
4296
  // explicit self name has highest priority
4295
4297
  if (type === COMPONENTS) {
4296
- const selfName = getComponentName(Component);
4298
+ const selfName = getComponentName(Component, false /* do not include inferred name to avoid breaking existing code */);
4297
4299
  if (selfName &&
4298
4300
  (selfName === name ||
4299
4301
  selfName === camelize(name) ||
@@ -4390,7 +4392,13 @@ var VueRuntimeDOM = (function (exports) {
4390
4392
  }
4391
4393
  else if (slot) {
4392
4394
  // conditional single slot generated by <template v-if="..." #foo>
4393
- slots[slot.name] = slot.fn;
4395
+ slots[slot.name] = slot.key
4396
+ ? (...args) => {
4397
+ const res = slot.fn(...args);
4398
+ res.key = slot.key;
4399
+ return res;
4400
+ }
4401
+ : slot.fn;
4394
4402
  }
4395
4403
  }
4396
4404
  return slots;
@@ -4426,9 +4434,15 @@ var VueRuntimeDOM = (function (exports) {
4426
4434
  }
4427
4435
  openBlock();
4428
4436
  const validSlotContent = slot && ensureValidVNode(slot(props));
4429
- const rendered = createBlock(Fragment, { key: props.key || `_${name}` }, validSlotContent || (fallback ? fallback() : []), validSlotContent && slots._ === 1 /* STABLE */
4430
- ? 64 /* STABLE_FRAGMENT */
4431
- : -2 /* BAIL */);
4437
+ const rendered = createBlock(Fragment, {
4438
+ key: props.key ||
4439
+ // slot content array of a dynamic conditional slot may have a branch
4440
+ // key attached in the `createSlots` helper, respect that
4441
+ (validSlotContent && validSlotContent.key) ||
4442
+ `_${name}`
4443
+ }, validSlotContent || (fallback ? fallback() : []), validSlotContent && slots._ === 1 /* SlotFlags.STABLE */
4444
+ ? 64 /* PatchFlags.STABLE_FRAGMENT */
4445
+ : -2 /* PatchFlags.BAIL */);
4432
4446
  if (!noSlotted && rendered.scopeId) {
4433
4447
  rendered.slotScopeIds = [rendered.scopeId + '-s'];
4434
4448
  }
@@ -4456,14 +4470,16 @@ var VueRuntimeDOM = (function (exports) {
4456
4470
  * For prefixing keys in v-on="obj" with "on"
4457
4471
  * @private
4458
4472
  */
4459
- function toHandlers(obj) {
4473
+ function toHandlers(obj, preserveCaseIfNecessary) {
4460
4474
  const ret = {};
4461
4475
  if (!isObject(obj)) {
4462
4476
  warn$1(`v-on with no argument expects an object value.`);
4463
4477
  return ret;
4464
4478
  }
4465
4479
  for (const key in obj) {
4466
- ret[toHandlerKey(key)] = obj[key];
4480
+ ret[preserveCaseIfNecessary && /[A-Z]/.test(key)
4481
+ ? `on:${key}`
4482
+ : toHandlerKey(key)] = obj[key];
4467
4483
  }
4468
4484
  return ret;
4469
4485
  }
@@ -4527,23 +4543,23 @@ var VueRuntimeDOM = (function (exports) {
4527
4543
  const n = accessCache[key];
4528
4544
  if (n !== undefined) {
4529
4545
  switch (n) {
4530
- case 1 /* SETUP */:
4546
+ case 1 /* AccessTypes.SETUP */:
4531
4547
  return setupState[key];
4532
- case 2 /* DATA */:
4548
+ case 2 /* AccessTypes.DATA */:
4533
4549
  return data[key];
4534
- case 4 /* CONTEXT */:
4550
+ case 4 /* AccessTypes.CONTEXT */:
4535
4551
  return ctx[key];
4536
- case 3 /* PROPS */:
4552
+ case 3 /* AccessTypes.PROPS */:
4537
4553
  return props[key];
4538
4554
  // default: just fallthrough
4539
4555
  }
4540
4556
  }
4541
4557
  else if (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) {
4542
- accessCache[key] = 1 /* SETUP */;
4558
+ accessCache[key] = 1 /* AccessTypes.SETUP */;
4543
4559
  return setupState[key];
4544
4560
  }
4545
4561
  else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
4546
- accessCache[key] = 2 /* DATA */;
4562
+ accessCache[key] = 2 /* AccessTypes.DATA */;
4547
4563
  return data[key];
4548
4564
  }
4549
4565
  else if (
@@ -4551,15 +4567,15 @@ var VueRuntimeDOM = (function (exports) {
4551
4567
  // props
4552
4568
  (normalizedProps = instance.propsOptions[0]) &&
4553
4569
  hasOwn(normalizedProps, key)) {
4554
- accessCache[key] = 3 /* PROPS */;
4570
+ accessCache[key] = 3 /* AccessTypes.PROPS */;
4555
4571
  return props[key];
4556
4572
  }
4557
4573
  else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {
4558
- accessCache[key] = 4 /* CONTEXT */;
4574
+ accessCache[key] = 4 /* AccessTypes.CONTEXT */;
4559
4575
  return ctx[key];
4560
4576
  }
4561
4577
  else if (shouldCacheAccess) {
4562
- accessCache[key] = 0 /* OTHER */;
4578
+ accessCache[key] = 0 /* AccessTypes.OTHER */;
4563
4579
  }
4564
4580
  }
4565
4581
  const publicGetter = publicPropertiesMap[key];
@@ -4567,7 +4583,7 @@ var VueRuntimeDOM = (function (exports) {
4567
4583
  // public $xxx properties
4568
4584
  if (publicGetter) {
4569
4585
  if (key === '$attrs') {
4570
- track(instance, "get" /* GET */, key);
4586
+ track(instance, "get" /* TrackOpTypes.GET */, key);
4571
4587
  markAttrsAccessed();
4572
4588
  }
4573
4589
  return publicGetter(instance);
@@ -4580,7 +4596,7 @@ var VueRuntimeDOM = (function (exports) {
4580
4596
  }
4581
4597
  else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {
4582
4598
  // user may set custom properties to `this` that start with `$`
4583
- accessCache[key] = 4 /* CONTEXT */;
4599
+ accessCache[key] = 4 /* AccessTypes.CONTEXT */;
4584
4600
  return ctx[key];
4585
4601
  }
4586
4602
  else if (
@@ -4763,7 +4779,7 @@ var VueRuntimeDOM = (function (exports) {
4763
4779
  // call beforeCreate first before accessing other options since
4764
4780
  // the hook may mutate resolved options (#2791)
4765
4781
  if (options.beforeCreate) {
4766
- callHook(options.beforeCreate, instance, "bc" /* BEFORE_CREATE */);
4782
+ callHook(options.beforeCreate, instance, "bc" /* LifecycleHooks.BEFORE_CREATE */);
4767
4783
  }
4768
4784
  const {
4769
4785
  // state
@@ -4779,7 +4795,7 @@ var VueRuntimeDOM = (function (exports) {
4779
4795
  const [propsOptions] = instance.propsOptions;
4780
4796
  if (propsOptions) {
4781
4797
  for (const key in propsOptions) {
4782
- checkDuplicateProperties("Props" /* PROPS */, key);
4798
+ checkDuplicateProperties("Props" /* OptionTypes.PROPS */, key);
4783
4799
  }
4784
4800
  }
4785
4801
  }
@@ -4809,7 +4825,7 @@ var VueRuntimeDOM = (function (exports) {
4809
4825
  });
4810
4826
  }
4811
4827
  {
4812
- checkDuplicateProperties("Methods" /* METHODS */, key);
4828
+ checkDuplicateProperties("Methods" /* OptionTypes.METHODS */, key);
4813
4829
  }
4814
4830
  }
4815
4831
  else {
@@ -4836,7 +4852,7 @@ var VueRuntimeDOM = (function (exports) {
4836
4852
  instance.data = reactive(data);
4837
4853
  {
4838
4854
  for (const key in data) {
4839
- checkDuplicateProperties("Data" /* DATA */, key);
4855
+ checkDuplicateProperties("Data" /* OptionTypes.DATA */, key);
4840
4856
  // expose data on ctx during dev
4841
4857
  if (!isReservedPrefix(key[0])) {
4842
4858
  Object.defineProperty(ctx, key, {
@@ -4880,7 +4896,7 @@ var VueRuntimeDOM = (function (exports) {
4880
4896
  set: v => (c.value = v)
4881
4897
  });
4882
4898
  {
4883
- checkDuplicateProperties("Computed" /* COMPUTED */, key);
4899
+ checkDuplicateProperties("Computed" /* OptionTypes.COMPUTED */, key);
4884
4900
  }
4885
4901
  }
4886
4902
  }
@@ -4898,7 +4914,7 @@ var VueRuntimeDOM = (function (exports) {
4898
4914
  });
4899
4915
  }
4900
4916
  if (created) {
4901
- callHook(created, instance, "c" /* CREATED */);
4917
+ callHook(created, instance, "c" /* LifecycleHooks.CREATED */);
4902
4918
  }
4903
4919
  function registerLifecycleHook(register, hook) {
4904
4920
  if (isArray(hook)) {
@@ -4991,7 +5007,7 @@ var VueRuntimeDOM = (function (exports) {
4991
5007
  ctx[key] = injected;
4992
5008
  }
4993
5009
  {
4994
- checkDuplicateProperties("Inject" /* INJECT */, key);
5010
+ checkDuplicateProperties("Inject" /* OptionTypes.INJECT */, key);
4995
5011
  }
4996
5012
  }
4997
5013
  }
@@ -5062,7 +5078,9 @@ var VueRuntimeDOM = (function (exports) {
5062
5078
  }
5063
5079
  mergeOptions(resolved, base, optionMergeStrategies);
5064
5080
  }
5065
- cache.set(base, resolved);
5081
+ if (isObject(base)) {
5082
+ cache.set(base, resolved);
5083
+ }
5066
5084
  return resolved;
5067
5085
  }
5068
5086
  function mergeOptions(to, from, strats, asMixin = false) {
@@ -5191,6 +5209,13 @@ var VueRuntimeDOM = (function (exports) {
5191
5209
  }
5192
5210
  instance.attrs = attrs;
5193
5211
  }
5212
+ function isInHmrContext(instance) {
5213
+ while (instance) {
5214
+ if (instance.type.__hmrId)
5215
+ return true;
5216
+ instance = instance.parent;
5217
+ }
5218
+ }
5194
5219
  function updateProps(instance, rawProps, rawPrevProps, optimized) {
5195
5220
  const { props, attrs, vnode: { patchFlag } } = instance;
5196
5221
  const rawCurrentProps = toRaw(props);
@@ -5200,11 +5225,10 @@ var VueRuntimeDOM = (function (exports) {
5200
5225
  // always force full diff in dev
5201
5226
  // - #1942 if hmr is enabled with sfc component
5202
5227
  // - vite#872 non-sfc component used by sfc component
5203
- !((instance.type.__hmrId ||
5204
- (instance.parent && instance.parent.type.__hmrId))) &&
5228
+ !(isInHmrContext(instance)) &&
5205
5229
  (optimized || patchFlag > 0) &&
5206
- !(patchFlag & 16 /* FULL_PROPS */)) {
5207
- if (patchFlag & 8 /* PROPS */) {
5230
+ !(patchFlag & 16 /* PatchFlags.FULL_PROPS */)) {
5231
+ if (patchFlag & 8 /* PatchFlags.PROPS */) {
5208
5232
  // Compiler-generated props & no keys change, just set the updated
5209
5233
  // the props.
5210
5234
  const propsToUpdate = instance.vnode.dynamicProps;
@@ -5283,7 +5307,7 @@ var VueRuntimeDOM = (function (exports) {
5283
5307
  }
5284
5308
  // trigger updates for $attrs in case it's used in component slots
5285
5309
  if (hasAttrsChanged) {
5286
- trigger(instance, "set" /* SET */, '$attrs');
5310
+ trigger(instance, "set" /* TriggerOpTypes.SET */, '$attrs');
5287
5311
  }
5288
5312
  {
5289
5313
  validateProps(rawProps || {}, props, instance);
@@ -5352,11 +5376,11 @@ var VueRuntimeDOM = (function (exports) {
5352
5376
  }
5353
5377
  }
5354
5378
  // boolean casting
5355
- if (opt[0 /* shouldCast */]) {
5379
+ if (opt[0 /* BooleanFlags.shouldCast */]) {
5356
5380
  if (isAbsent && !hasDefault) {
5357
5381
  value = false;
5358
5382
  }
5359
- else if (opt[1 /* shouldCastTrue */] &&
5383
+ else if (opt[1 /* BooleanFlags.shouldCastTrue */] &&
5360
5384
  (value === '' || value === hyphenate(key))) {
5361
5385
  value = true;
5362
5386
  }
@@ -5394,7 +5418,9 @@ var VueRuntimeDOM = (function (exports) {
5394
5418
  }
5395
5419
  }
5396
5420
  if (!raw && !hasExtends) {
5397
- cache.set(comp, EMPTY_ARR);
5421
+ if (isObject(comp)) {
5422
+ cache.set(comp, EMPTY_ARR);
5423
+ }
5398
5424
  return EMPTY_ARR;
5399
5425
  }
5400
5426
  if (isArray(raw)) {
@@ -5421,8 +5447,8 @@ var VueRuntimeDOM = (function (exports) {
5421
5447
  if (prop) {
5422
5448
  const booleanIndex = getTypeIndex(Boolean, prop.type);
5423
5449
  const stringIndex = getTypeIndex(String, prop.type);
5424
- prop[0 /* shouldCast */] = booleanIndex > -1;
5425
- prop[1 /* shouldCastTrue */] =
5450
+ prop[0 /* BooleanFlags.shouldCast */] = booleanIndex > -1;
5451
+ prop[1 /* BooleanFlags.shouldCastTrue */] =
5426
5452
  stringIndex < 0 || booleanIndex < stringIndex;
5427
5453
  // if the prop needs boolean casting or default value
5428
5454
  if (booleanIndex > -1 || hasOwn(prop, 'default')) {
@@ -5433,7 +5459,9 @@ var VueRuntimeDOM = (function (exports) {
5433
5459
  }
5434
5460
  }
5435
5461
  const res = [normalized, needCastKeys];
5436
- cache.set(comp, res);
5462
+ if (isObject(comp)) {
5463
+ cache.set(comp, res);
5464
+ }
5437
5465
  return res;
5438
5466
  }
5439
5467
  function validatePropName(key) {
@@ -5643,7 +5671,7 @@ var VueRuntimeDOM = (function (exports) {
5643
5671
  instance.slots.default = () => normalized;
5644
5672
  };
5645
5673
  const initSlots = (instance, children) => {
5646
- if (instance.vnode.shapeFlag & 32 /* SLOTS_CHILDREN */) {
5674
+ if (instance.vnode.shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */) {
5647
5675
  const type = children._;
5648
5676
  if (type) {
5649
5677
  // users can get the shallow readonly version of the slots object through `this.$slots`,
@@ -5668,7 +5696,7 @@ var VueRuntimeDOM = (function (exports) {
5668
5696
  const { vnode, slots } = instance;
5669
5697
  let needDeletionCheck = true;
5670
5698
  let deletionComparisonTarget = EMPTY_OBJ;
5671
- if (vnode.shapeFlag & 32 /* SLOTS_CHILDREN */) {
5699
+ if (vnode.shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */) {
5672
5700
  const type = children._;
5673
5701
  if (type) {
5674
5702
  // compiled slots.
@@ -5677,7 +5705,7 @@ var VueRuntimeDOM = (function (exports) {
5677
5705
  // force update slots and mark instance for hmr as well
5678
5706
  extend(slots, children);
5679
5707
  }
5680
- else if (optimized && type === 1 /* STABLE */) {
5708
+ else if (optimized && type === 1 /* SlotFlags.STABLE */) {
5681
5709
  // compiled AND stable.
5682
5710
  // no need to update, and skip stale slots removal.
5683
5711
  needDeletionCheck = false;
@@ -5690,7 +5718,7 @@ var VueRuntimeDOM = (function (exports) {
5690
5718
  // when rendering the optimized slots by manually written render function,
5691
5719
  // we need to delete the `slots._` flag if necessary to make subsequent updates reliable,
5692
5720
  // i.e. let the `renderSlot` create the bailed Fragment
5693
- if (!optimized && type === 1 /* STABLE */) {
5721
+ if (!optimized && type === 1 /* SlotFlags.STABLE */) {
5694
5722
  delete slots._;
5695
5723
  }
5696
5724
  }
@@ -5901,7 +5929,7 @@ var VueRuntimeDOM = (function (exports) {
5901
5929
  // because the template ref is forwarded to inner component
5902
5930
  return;
5903
5931
  }
5904
- const refValue = vnode.shapeFlag & 4 /* STATEFUL_COMPONENT */
5932
+ const refValue = vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */
5905
5933
  ? getExposeProxy(vnode.component) || vnode.component.proxy
5906
5934
  : vnode.el;
5907
5935
  const value = isUnmount ? null : refValue;
@@ -5927,7 +5955,7 @@ var VueRuntimeDOM = (function (exports) {
5927
5955
  }
5928
5956
  }
5929
5957
  if (isFunction(ref)) {
5930
- callWithErrorHandling(ref, owner, 12 /* FUNCTION_REF */, [value, refs]);
5958
+ callWithErrorHandling(ref, owner, 12 /* ErrorCodes.FUNCTION_REF */, [value, refs]);
5931
5959
  }
5932
5960
  else {
5933
5961
  const _isString = isString(ref);
@@ -5964,7 +5992,7 @@ var VueRuntimeDOM = (function (exports) {
5964
5992
  setupState[ref] = value;
5965
5993
  }
5966
5994
  }
5967
- else if (isRef(ref)) {
5995
+ else if (_isRef) {
5968
5996
  ref.value = value;
5969
5997
  if (rawRef.k)
5970
5998
  refs[rawRef.k] = value;
@@ -5989,7 +6017,7 @@ var VueRuntimeDOM = (function (exports) {
5989
6017
 
5990
6018
  let hasMismatch = false;
5991
6019
  const isSVGContainer = (container) => /svg/.test(container.namespaceURI) && container.tagName !== 'foreignObject';
5992
- const isComment = (node) => node.nodeType === 8 /* COMMENT */;
6020
+ const isComment = (node) => node.nodeType === 8 /* DOMNodeTypes.COMMENT */;
5993
6021
  // Note: hydration is DOM-specific
5994
6022
  // But we have to place it in core due to tight coupling with core - splitting
5995
6023
  // it out creates a ton of unnecessary complexity.
@@ -6003,11 +6031,13 @@ var VueRuntimeDOM = (function (exports) {
6003
6031
  `Performing full mount instead.`);
6004
6032
  patch(null, vnode, container);
6005
6033
  flushPostFlushCbs();
6034
+ container._vnode = vnode;
6006
6035
  return;
6007
6036
  }
6008
6037
  hasMismatch = false;
6009
6038
  hydrateNode(container.firstChild, vnode, null, null, null);
6010
6039
  flushPostFlushCbs();
6040
+ container._vnode = vnode;
6011
6041
  if (hasMismatch && !false) {
6012
6042
  // this error should show up in production
6013
6043
  console.error(`Hydration completed but contains mismatches.`);
@@ -6019,14 +6049,14 @@ var VueRuntimeDOM = (function (exports) {
6019
6049
  const { type, ref, shapeFlag, patchFlag } = vnode;
6020
6050
  const domType = node.nodeType;
6021
6051
  vnode.el = node;
6022
- if (patchFlag === -2 /* BAIL */) {
6052
+ if (patchFlag === -2 /* PatchFlags.BAIL */) {
6023
6053
  optimized = false;
6024
6054
  vnode.dynamicChildren = null;
6025
6055
  }
6026
6056
  let nextNode = null;
6027
6057
  switch (type) {
6028
6058
  case Text:
6029
- if (domType !== 3 /* TEXT */) {
6059
+ if (domType !== 3 /* DOMNodeTypes.TEXT */) {
6030
6060
  // #5728 empty text node inside a slot can cause hydration failure
6031
6061
  // because the server rendered HTML won't contain a text node
6032
6062
  if (vnode.children === '') {
@@ -6049,7 +6079,7 @@ var VueRuntimeDOM = (function (exports) {
6049
6079
  }
6050
6080
  break;
6051
6081
  case Comment:
6052
- if (domType !== 8 /* COMMENT */ || isFragmentStart) {
6082
+ if (domType !== 8 /* DOMNodeTypes.COMMENT */ || isFragmentStart) {
6053
6083
  nextNode = onMismatch();
6054
6084
  }
6055
6085
  else {
@@ -6057,7 +6087,7 @@ var VueRuntimeDOM = (function (exports) {
6057
6087
  }
6058
6088
  break;
6059
6089
  case Static:
6060
- if (domType !== 1 /* ELEMENT */) {
6090
+ if (domType !== 1 /* DOMNodeTypes.ELEMENT */ && domType !== 3 /* DOMNodeTypes.TEXT */) {
6061
6091
  nextNode = onMismatch();
6062
6092
  }
6063
6093
  else {
@@ -6068,7 +6098,10 @@ var VueRuntimeDOM = (function (exports) {
6068
6098
  const needToAdoptContent = !vnode.children.length;
6069
6099
  for (let i = 0; i < vnode.staticCount; i++) {
6070
6100
  if (needToAdoptContent)
6071
- vnode.children += nextNode.outerHTML;
6101
+ vnode.children +=
6102
+ nextNode.nodeType === 1 /* DOMNodeTypes.ELEMENT */
6103
+ ? nextNode.outerHTML
6104
+ : nextNode.data;
6072
6105
  if (i === vnode.staticCount - 1) {
6073
6106
  vnode.anchor = nextNode;
6074
6107
  }
@@ -6086,8 +6119,8 @@ var VueRuntimeDOM = (function (exports) {
6086
6119
  }
6087
6120
  break;
6088
6121
  default:
6089
- if (shapeFlag & 1 /* ELEMENT */) {
6090
- if (domType !== 1 /* ELEMENT */ ||
6122
+ if (shapeFlag & 1 /* ShapeFlags.ELEMENT */) {
6123
+ if (domType !== 1 /* DOMNodeTypes.ELEMENT */ ||
6091
6124
  vnode.type.toLowerCase() !==
6092
6125
  node.tagName.toLowerCase()) {
6093
6126
  nextNode = onMismatch();
@@ -6096,7 +6129,7 @@ var VueRuntimeDOM = (function (exports) {
6096
6129
  nextNode = hydrateElement(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);
6097
6130
  }
6098
6131
  }
6099
- else if (shapeFlag & 6 /* COMPONENT */) {
6132
+ else if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {
6100
6133
  // when setting up the render effect, if the initial vnode already
6101
6134
  // has .el set, the component will perform hydration instead of mount
6102
6135
  // on its sub-tree.
@@ -6135,15 +6168,15 @@ var VueRuntimeDOM = (function (exports) {
6135
6168
  vnode.component.subTree = subTree;
6136
6169
  }
6137
6170
  }
6138
- else if (shapeFlag & 64 /* TELEPORT */) {
6139
- if (domType !== 8 /* COMMENT */) {
6171
+ else if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {
6172
+ if (domType !== 8 /* DOMNodeTypes.COMMENT */) {
6140
6173
  nextNode = onMismatch();
6141
6174
  }
6142
6175
  else {
6143
6176
  nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, rendererInternals, hydrateChildren);
6144
6177
  }
6145
6178
  }
6146
- else if (shapeFlag & 128 /* SUSPENSE */) {
6179
+ else if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {
6147
6180
  nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, isSVGContainer(parentNode(node)), slotScopeIds, optimized, rendererInternals, hydrateNode);
6148
6181
  }
6149
6182
  else {
@@ -6171,7 +6204,7 @@ var VueRuntimeDOM = (function (exports) {
6171
6204
  if (props) {
6172
6205
  if (forcePatchValue ||
6173
6206
  !optimized ||
6174
- patchFlag & (16 /* FULL_PROPS */ | 32 /* HYDRATE_EVENTS */)) {
6207
+ patchFlag & (16 /* PatchFlags.FULL_PROPS */ | 32 /* PatchFlags.HYDRATE_EVENTS */)) {
6175
6208
  for (const key in props) {
6176
6209
  if ((forcePatchValue && key.endsWith('value')) ||
6177
6210
  (isOn(key) && !isReservedProp(key))) {
@@ -6200,7 +6233,7 @@ var VueRuntimeDOM = (function (exports) {
6200
6233
  }, parentSuspense);
6201
6234
  }
6202
6235
  // children
6203
- if (shapeFlag & 16 /* ARRAY_CHILDREN */ &&
6236
+ if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */ &&
6204
6237
  // skip if element has innerHTML / textContent
6205
6238
  !(props && (props.innerHTML || props.textContent))) {
6206
6239
  let next = hydrateChildren(el.firstChild, vnode, el, parentComponent, parentSuspense, slotScopeIds, optimized);
@@ -6218,7 +6251,7 @@ var VueRuntimeDOM = (function (exports) {
6218
6251
  remove(cur);
6219
6252
  }
6220
6253
  }
6221
- else if (shapeFlag & 8 /* TEXT_CHILDREN */) {
6254
+ else if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {
6222
6255
  if (el.textContent !== vnode.children) {
6223
6256
  hasMismatch = true;
6224
6257
  warn$1(`Hydration text content mismatch in <${vnode.type}>:\n` +
@@ -6281,7 +6314,7 @@ var VueRuntimeDOM = (function (exports) {
6281
6314
  };
6282
6315
  const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {
6283
6316
  hasMismatch = true;
6284
- warn$1(`Hydration node mismatch:\n- Client vnode:`, vnode.type, `\n- Server rendered DOM:`, node, node.nodeType === 3 /* TEXT */
6317
+ warn$1(`Hydration node mismatch:\n- Client vnode:`, vnode.type, `\n- Server rendered DOM:`, node, node.nodeType === 3 /* DOMNodeTypes.TEXT */
6285
6318
  ? `(text)`
6286
6319
  : isComment(node) && node.data === '['
6287
6320
  ? `(start of fragment)`
@@ -6412,7 +6445,7 @@ var VueRuntimeDOM = (function (exports) {
6412
6445
  unmount(n1, parentComponent, parentSuspense, true);
6413
6446
  n1 = null;
6414
6447
  }
6415
- if (n2.patchFlag === -2 /* BAIL */) {
6448
+ if (n2.patchFlag === -2 /* PatchFlags.BAIL */) {
6416
6449
  optimized = false;
6417
6450
  n2.dynamicChildren = null;
6418
6451
  }
@@ -6436,16 +6469,16 @@ var VueRuntimeDOM = (function (exports) {
6436
6469
  processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
6437
6470
  break;
6438
6471
  default:
6439
- if (shapeFlag & 1 /* ELEMENT */) {
6472
+ if (shapeFlag & 1 /* ShapeFlags.ELEMENT */) {
6440
6473
  processElement(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
6441
6474
  }
6442
- else if (shapeFlag & 6 /* COMPONENT */) {
6475
+ else if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {
6443
6476
  processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
6444
6477
  }
6445
- else if (shapeFlag & 64 /* TELEPORT */) {
6478
+ else if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {
6446
6479
  type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);
6447
6480
  }
6448
- else if (shapeFlag & 128 /* SUSPENSE */) {
6481
+ else if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {
6449
6482
  type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);
6450
6483
  }
6451
6484
  else {
@@ -6531,10 +6564,10 @@ var VueRuntimeDOM = (function (exports) {
6531
6564
  el = vnode.el = hostCreateElement(vnode.type, isSVG, props && props.is, props);
6532
6565
  // mount children first, since some props may rely on child content
6533
6566
  // being already rendered, e.g. `<select value>`
6534
- if (shapeFlag & 8 /* TEXT_CHILDREN */) {
6567
+ if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {
6535
6568
  hostSetElementText(el, vnode.children);
6536
6569
  }
6537
- else if (shapeFlag & 16 /* ARRAY_CHILDREN */) {
6570
+ else if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {
6538
6571
  mountChildren(vnode.children, el, null, parentComponent, parentSuspense, isSVG && type !== 'foreignObject', slotScopeIds, optimized);
6539
6572
  }
6540
6573
  if (dirs) {
@@ -6610,7 +6643,7 @@ var VueRuntimeDOM = (function (exports) {
6610
6643
  if (parentComponent) {
6611
6644
  let subTree = parentComponent.subTree;
6612
6645
  if (subTree.patchFlag > 0 &&
6613
- subTree.patchFlag & 2048 /* DEV_ROOT_FRAGMENT */) {
6646
+ subTree.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */) {
6614
6647
  subTree =
6615
6648
  filterSingleRoot(subTree.children) || subTree;
6616
6649
  }
@@ -6633,7 +6666,7 @@ var VueRuntimeDOM = (function (exports) {
6633
6666
  let { patchFlag, dynamicChildren, dirs } = n2;
6634
6667
  // #1426 take the old vnode's patch flag into account since user may clone a
6635
6668
  // compiler-generated vnode, which de-opts to FULL_PROPS
6636
- patchFlag |= n1.patchFlag & 16 /* FULL_PROPS */;
6669
+ patchFlag |= n1.patchFlag & 16 /* PatchFlags.FULL_PROPS */;
6637
6670
  const oldProps = n1.props || EMPTY_OBJ;
6638
6671
  const newProps = n2.props || EMPTY_OBJ;
6639
6672
  let vnodeHook;
@@ -6668,21 +6701,21 @@ var VueRuntimeDOM = (function (exports) {
6668
6701
  // generated by the compiler and can take the fast path.
6669
6702
  // in this path old node and new node are guaranteed to have the same shape
6670
6703
  // (i.e. at the exact same position in the source template)
6671
- if (patchFlag & 16 /* FULL_PROPS */) {
6704
+ if (patchFlag & 16 /* PatchFlags.FULL_PROPS */) {
6672
6705
  // element props contain dynamic keys, full diff needed
6673
6706
  patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);
6674
6707
  }
6675
6708
  else {
6676
6709
  // class
6677
6710
  // this flag is matched when the element has dynamic class bindings.
6678
- if (patchFlag & 2 /* CLASS */) {
6711
+ if (patchFlag & 2 /* PatchFlags.CLASS */) {
6679
6712
  if (oldProps.class !== newProps.class) {
6680
6713
  hostPatchProp(el, 'class', null, newProps.class, isSVG);
6681
6714
  }
6682
6715
  }
6683
6716
  // style
6684
6717
  // this flag is matched when the element has dynamic style bindings
6685
- if (patchFlag & 4 /* STYLE */) {
6718
+ if (patchFlag & 4 /* PatchFlags.STYLE */) {
6686
6719
  hostPatchProp(el, 'style', oldProps.style, newProps.style, isSVG);
6687
6720
  }
6688
6721
  // props
@@ -6691,7 +6724,7 @@ var VueRuntimeDOM = (function (exports) {
6691
6724
  // faster iteration.
6692
6725
  // Note dynamic keys like :[foo]="bar" will cause this optimization to
6693
6726
  // bail out and go through a full diff because we need to unset the old key
6694
- if (patchFlag & 8 /* PROPS */) {
6727
+ if (patchFlag & 8 /* PatchFlags.PROPS */) {
6695
6728
  // if the flag is present then dynamicProps must be non-null
6696
6729
  const propsToUpdate = n2.dynamicProps;
6697
6730
  for (let i = 0; i < propsToUpdate.length; i++) {
@@ -6707,7 +6740,7 @@ var VueRuntimeDOM = (function (exports) {
6707
6740
  }
6708
6741
  // text
6709
6742
  // This flag is matched when the element has only dynamic text children.
6710
- if (patchFlag & 1 /* TEXT */) {
6743
+ if (patchFlag & 1 /* PatchFlags.TEXT */) {
6711
6744
  if (n1.children !== n2.children) {
6712
6745
  hostSetElementText(el, n2.children);
6713
6746
  }
@@ -6741,7 +6774,7 @@ var VueRuntimeDOM = (function (exports) {
6741
6774
  // which also requires the correct parent container
6742
6775
  !isSameVNodeType(oldVNode, newVNode) ||
6743
6776
  // - In the case of a component, it could contain anything.
6744
- oldVNode.shapeFlag & (6 /* COMPONENT */ | 64 /* TELEPORT */))
6777
+ oldVNode.shapeFlag & (6 /* ShapeFlags.COMPONENT */ | 64 /* ShapeFlags.TELEPORT */))
6745
6778
  ? hostParentNode(oldVNode.el)
6746
6779
  : // In other cases, the parent container is not actually used so we
6747
6780
  // just pass the block element here to avoid a DOM parentNode call.
@@ -6779,7 +6812,7 @@ var VueRuntimeDOM = (function (exports) {
6779
6812
  const fragmentEndAnchor = (n2.anchor = n1 ? n1.anchor : hostCreateText(''));
6780
6813
  let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;
6781
6814
  if (// #5523 dev root fragment may inherit directives
6782
- (isHmrUpdating || patchFlag & 2048 /* DEV_ROOT_FRAGMENT */)) {
6815
+ (isHmrUpdating || patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */)) {
6783
6816
  // HMR updated / Dev root fragment (w/ comments), force full diff
6784
6817
  patchFlag = 0;
6785
6818
  optimized = false;
@@ -6801,7 +6834,7 @@ var VueRuntimeDOM = (function (exports) {
6801
6834
  }
6802
6835
  else {
6803
6836
  if (patchFlag > 0 &&
6804
- patchFlag & 64 /* STABLE_FRAGMENT */ &&
6837
+ patchFlag & 64 /* PatchFlags.STABLE_FRAGMENT */ &&
6805
6838
  dynamicChildren &&
6806
6839
  // #2715 the previous fragment could've been a BAILed one as a result
6807
6840
  // of renderSlot() with no valid children
@@ -6834,7 +6867,7 @@ var VueRuntimeDOM = (function (exports) {
6834
6867
  const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
6835
6868
  n2.slotScopeIds = slotScopeIds;
6836
6869
  if (n1 == null) {
6837
- if (n2.shapeFlag & 512 /* COMPONENT_KEPT_ALIVE */) {
6870
+ if (n2.shapeFlag & 512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */) {
6838
6871
  parentComponent.ctx.activate(n2, container, anchor, isSVG, optimized);
6839
6872
  }
6840
6873
  else {
@@ -6996,10 +7029,10 @@ var VueRuntimeDOM = (function (exports) {
6996
7029
  // activated hook for keep-alive roots.
6997
7030
  // #1742 activated hook must be accessed after first render
6998
7031
  // since the hook may be injected by a child keep-alive
6999
- if (initialVNode.shapeFlag & 256 /* COMPONENT_SHOULD_KEEP_ALIVE */ ||
7032
+ if (initialVNode.shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */ ||
7000
7033
  (parent &&
7001
7034
  isAsyncWrapper(parent.vnode) &&
7002
- parent.vnode.shapeFlag & 256 /* COMPONENT_SHOULD_KEEP_ALIVE */)) {
7035
+ parent.vnode.shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */)) {
7003
7036
  instance.a && queuePostRenderEffect(instance.a, parentSuspense);
7004
7037
  }
7005
7038
  instance.isMounted = true;
@@ -7110,7 +7143,7 @@ var VueRuntimeDOM = (function (exports) {
7110
7143
  pauseTracking();
7111
7144
  // props update may have triggered pre-flush watchers.
7112
7145
  // flush them before the render update.
7113
- flushPreFlushCbs(undefined, instance.update);
7146
+ flushPreFlushCbs();
7114
7147
  resetTracking();
7115
7148
  };
7116
7149
  const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => {
@@ -7120,22 +7153,22 @@ var VueRuntimeDOM = (function (exports) {
7120
7153
  const { patchFlag, shapeFlag } = n2;
7121
7154
  // fast path
7122
7155
  if (patchFlag > 0) {
7123
- if (patchFlag & 128 /* KEYED_FRAGMENT */) {
7156
+ if (patchFlag & 128 /* PatchFlags.KEYED_FRAGMENT */) {
7124
7157
  // this could be either fully-keyed or mixed (some keyed some not)
7125
7158
  // presence of patchFlag means children are guaranteed to be arrays
7126
7159
  patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
7127
7160
  return;
7128
7161
  }
7129
- else if (patchFlag & 256 /* UNKEYED_FRAGMENT */) {
7162
+ else if (patchFlag & 256 /* PatchFlags.UNKEYED_FRAGMENT */) {
7130
7163
  // unkeyed
7131
7164
  patchUnkeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
7132
7165
  return;
7133
7166
  }
7134
7167
  }
7135
7168
  // children has 3 possibilities: text, array or no children.
7136
- if (shapeFlag & 8 /* TEXT_CHILDREN */) {
7169
+ if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {
7137
7170
  // text children fast path
7138
- if (prevShapeFlag & 16 /* ARRAY_CHILDREN */) {
7171
+ if (prevShapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {
7139
7172
  unmountChildren(c1, parentComponent, parentSuspense);
7140
7173
  }
7141
7174
  if (c2 !== c1) {
@@ -7143,9 +7176,9 @@ var VueRuntimeDOM = (function (exports) {
7143
7176
  }
7144
7177
  }
7145
7178
  else {
7146
- if (prevShapeFlag & 16 /* ARRAY_CHILDREN */) {
7179
+ if (prevShapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {
7147
7180
  // prev children was array
7148
- if (shapeFlag & 16 /* ARRAY_CHILDREN */) {
7181
+ if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {
7149
7182
  // two arrays, cannot assume anything, do full diff
7150
7183
  patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
7151
7184
  }
@@ -7157,11 +7190,11 @@ var VueRuntimeDOM = (function (exports) {
7157
7190
  else {
7158
7191
  // prev children was text OR null
7159
7192
  // new children is array OR null
7160
- if (prevShapeFlag & 8 /* TEXT_CHILDREN */) {
7193
+ if (prevShapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {
7161
7194
  hostSetElementText(container, '');
7162
7195
  }
7163
7196
  // mount new if array
7164
- if (shapeFlag & 16 /* ARRAY_CHILDREN */) {
7197
+ if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {
7165
7198
  mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
7166
7199
  }
7167
7200
  }
@@ -7352,7 +7385,7 @@ var VueRuntimeDOM = (function (exports) {
7352
7385
  // There is no stable subsequence (e.g. a reverse)
7353
7386
  // OR current node is not among the stable sequence
7354
7387
  if (j < 0 || i !== increasingNewIndexSequence[j]) {
7355
- move(nextChild, container, anchor, 2 /* REORDER */);
7388
+ move(nextChild, container, anchor, 2 /* MoveType.REORDER */);
7356
7389
  }
7357
7390
  else {
7358
7391
  j--;
@@ -7363,15 +7396,15 @@ var VueRuntimeDOM = (function (exports) {
7363
7396
  };
7364
7397
  const move = (vnode, container, anchor, moveType, parentSuspense = null) => {
7365
7398
  const { el, type, transition, children, shapeFlag } = vnode;
7366
- if (shapeFlag & 6 /* COMPONENT */) {
7399
+ if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {
7367
7400
  move(vnode.component.subTree, container, anchor, moveType);
7368
7401
  return;
7369
7402
  }
7370
- if (shapeFlag & 128 /* SUSPENSE */) {
7403
+ if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {
7371
7404
  vnode.suspense.move(container, anchor, moveType);
7372
7405
  return;
7373
7406
  }
7374
- if (shapeFlag & 64 /* TELEPORT */) {
7407
+ if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {
7375
7408
  type.move(vnode, container, anchor, internals);
7376
7409
  return;
7377
7410
  }
@@ -7388,11 +7421,11 @@ var VueRuntimeDOM = (function (exports) {
7388
7421
  return;
7389
7422
  }
7390
7423
  // single nodes
7391
- const needTransition = moveType !== 2 /* REORDER */ &&
7392
- shapeFlag & 1 /* ELEMENT */ &&
7424
+ const needTransition = moveType !== 2 /* MoveType.REORDER */ &&
7425
+ shapeFlag & 1 /* ShapeFlags.ELEMENT */ &&
7393
7426
  transition;
7394
7427
  if (needTransition) {
7395
- if (moveType === 0 /* ENTER */) {
7428
+ if (moveType === 0 /* MoveType.ENTER */) {
7396
7429
  transition.beforeEnter(el);
7397
7430
  hostInsert(el, container, anchor);
7398
7431
  queuePostRenderEffect(() => transition.enter(el), parentSuspense);
@@ -7424,42 +7457,42 @@ var VueRuntimeDOM = (function (exports) {
7424
7457
  if (ref != null) {
7425
7458
  setRef(ref, null, parentSuspense, vnode, true);
7426
7459
  }
7427
- if (shapeFlag & 256 /* COMPONENT_SHOULD_KEEP_ALIVE */) {
7460
+ if (shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */) {
7428
7461
  parentComponent.ctx.deactivate(vnode);
7429
7462
  return;
7430
7463
  }
7431
- const shouldInvokeDirs = shapeFlag & 1 /* ELEMENT */ && dirs;
7464
+ const shouldInvokeDirs = shapeFlag & 1 /* ShapeFlags.ELEMENT */ && dirs;
7432
7465
  const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);
7433
7466
  let vnodeHook;
7434
7467
  if (shouldInvokeVnodeHook &&
7435
7468
  (vnodeHook = props && props.onVnodeBeforeUnmount)) {
7436
7469
  invokeVNodeHook(vnodeHook, parentComponent, vnode);
7437
7470
  }
7438
- if (shapeFlag & 6 /* COMPONENT */) {
7471
+ if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {
7439
7472
  unmountComponent(vnode.component, parentSuspense, doRemove);
7440
7473
  }
7441
7474
  else {
7442
- if (shapeFlag & 128 /* SUSPENSE */) {
7475
+ if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {
7443
7476
  vnode.suspense.unmount(parentSuspense, doRemove);
7444
7477
  return;
7445
7478
  }
7446
7479
  if (shouldInvokeDirs) {
7447
7480
  invokeDirectiveHook(vnode, null, parentComponent, 'beforeUnmount');
7448
7481
  }
7449
- if (shapeFlag & 64 /* TELEPORT */) {
7482
+ if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {
7450
7483
  vnode.type.remove(vnode, parentComponent, parentSuspense, optimized, internals, doRemove);
7451
7484
  }
7452
7485
  else if (dynamicChildren &&
7453
7486
  // #1153: fast path should not be taken for non-stable (v-for) fragments
7454
7487
  (type !== Fragment ||
7455
- (patchFlag > 0 && patchFlag & 64 /* STABLE_FRAGMENT */))) {
7488
+ (patchFlag > 0 && patchFlag & 64 /* PatchFlags.STABLE_FRAGMENT */))) {
7456
7489
  // fast path for block nodes: only need to unmount dynamic children.
7457
7490
  unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true);
7458
7491
  }
7459
7492
  else if ((type === Fragment &&
7460
7493
  patchFlag &
7461
- (128 /* KEYED_FRAGMENT */ | 256 /* UNKEYED_FRAGMENT */)) ||
7462
- (!optimized && shapeFlag & 16 /* ARRAY_CHILDREN */)) {
7494
+ (128 /* PatchFlags.KEYED_FRAGMENT */ | 256 /* PatchFlags.UNKEYED_FRAGMENT */)) ||
7495
+ (!optimized && shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */)) {
7463
7496
  unmountChildren(children, parentComponent, parentSuspense);
7464
7497
  }
7465
7498
  if (doRemove) {
@@ -7480,7 +7513,7 @@ var VueRuntimeDOM = (function (exports) {
7480
7513
  const { type, el, anchor, transition } = vnode;
7481
7514
  if (type === Fragment) {
7482
7515
  if (vnode.patchFlag > 0 &&
7483
- vnode.patchFlag & 2048 /* DEV_ROOT_FRAGMENT */ &&
7516
+ vnode.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */ &&
7484
7517
  transition &&
7485
7518
  !transition.persisted) {
7486
7519
  vnode.children.forEach(child => {
@@ -7507,7 +7540,7 @@ var VueRuntimeDOM = (function (exports) {
7507
7540
  transition.afterLeave();
7508
7541
  }
7509
7542
  };
7510
- if (vnode.shapeFlag & 1 /* ELEMENT */ &&
7543
+ if (vnode.shapeFlag & 1 /* ShapeFlags.ELEMENT */ &&
7511
7544
  transition &&
7512
7545
  !transition.persisted) {
7513
7546
  const { leave, delayLeave } = transition;
@@ -7583,10 +7616,10 @@ var VueRuntimeDOM = (function (exports) {
7583
7616
  }
7584
7617
  };
7585
7618
  const getNextHostNode = vnode => {
7586
- if (vnode.shapeFlag & 6 /* COMPONENT */) {
7619
+ if (vnode.shapeFlag & 6 /* ShapeFlags.COMPONENT */) {
7587
7620
  return getNextHostNode(vnode.component.subTree);
7588
7621
  }
7589
- if (vnode.shapeFlag & 128 /* SUSPENSE */) {
7622
+ if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {
7590
7623
  return vnode.suspense.next();
7591
7624
  }
7592
7625
  return hostNextSibling((vnode.anchor || vnode.el));
@@ -7600,6 +7633,7 @@ var VueRuntimeDOM = (function (exports) {
7600
7633
  else {
7601
7634
  patch(container._vnode || null, vnode, container, null, null, null, isSVG);
7602
7635
  }
7636
+ flushPreFlushCbs();
7603
7637
  flushPostFlushCbs();
7604
7638
  container._vnode = vnode;
7605
7639
  };
@@ -7649,8 +7683,8 @@ var VueRuntimeDOM = (function (exports) {
7649
7683
  // guaranteed to be vnodes
7650
7684
  const c1 = ch1[i];
7651
7685
  let c2 = ch2[i];
7652
- if (c2.shapeFlag & 1 /* ELEMENT */ && !c2.dynamicChildren) {
7653
- if (c2.patchFlag <= 0 || c2.patchFlag === 32 /* HYDRATE_EVENTS */) {
7686
+ if (c2.shapeFlag & 1 /* ShapeFlags.ELEMENT */ && !c2.dynamicChildren) {
7687
+ if (c2.patchFlag <= 0 || c2.patchFlag === 32 /* PatchFlags.HYDRATE_EVENTS */) {
7654
7688
  c2 = ch2[i] = cloneIfMounted(ch2[i]);
7655
7689
  c2.el = c1.el;
7656
7690
  }
@@ -7770,7 +7804,7 @@ var VueRuntimeDOM = (function (exports) {
7770
7804
  const mount = (container, anchor) => {
7771
7805
  // Teleport *always* has Array children. This is enforced in both the
7772
7806
  // compiler and vnode children normalization.
7773
- if (shapeFlag & 16 /* ARRAY_CHILDREN */) {
7807
+ if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {
7774
7808
  mountChildren(children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
7775
7809
  }
7776
7810
  };
@@ -7806,7 +7840,7 @@ var VueRuntimeDOM = (function (exports) {
7806
7840
  if (!wasDisabled) {
7807
7841
  // enabled -> disabled
7808
7842
  // move into main container
7809
- moveTeleport(n2, container, mainAnchor, internals, 1 /* TOGGLE */);
7843
+ moveTeleport(n2, container, mainAnchor, internals, 1 /* TeleportMoveTypes.TOGGLE */);
7810
7844
  }
7811
7845
  }
7812
7846
  else {
@@ -7814,7 +7848,7 @@ var VueRuntimeDOM = (function (exports) {
7814
7848
  if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {
7815
7849
  const nextTarget = (n2.target = resolveTarget(n2.props, querySelector));
7816
7850
  if (nextTarget) {
7817
- moveTeleport(n2, nextTarget, null, internals, 0 /* TARGET_CHANGE */);
7851
+ moveTeleport(n2, nextTarget, null, internals, 0 /* TeleportMoveTypes.TARGET_CHANGE */);
7818
7852
  }
7819
7853
  else {
7820
7854
  warn$1('Invalid Teleport target on update:', target, `(${typeof target})`);
@@ -7823,7 +7857,7 @@ var VueRuntimeDOM = (function (exports) {
7823
7857
  else if (wasDisabled) {
7824
7858
  // disabled -> enabled
7825
7859
  // move into teleport target
7826
- moveTeleport(n2, target, targetAnchor, internals, 1 /* TOGGLE */);
7860
+ moveTeleport(n2, target, targetAnchor, internals, 1 /* TeleportMoveTypes.TOGGLE */);
7827
7861
  }
7828
7862
  }
7829
7863
  }
@@ -7836,7 +7870,7 @@ var VueRuntimeDOM = (function (exports) {
7836
7870
  // an unmounted teleport should always remove its children if not disabled
7837
7871
  if (doRemove || !isTeleportDisabled(props)) {
7838
7872
  hostRemove(anchor);
7839
- if (shapeFlag & 16 /* ARRAY_CHILDREN */) {
7873
+ if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {
7840
7874
  for (let i = 0; i < children.length; i++) {
7841
7875
  const child = children[i];
7842
7876
  unmount(child, parentComponent, parentSuspense, true, !!child.dynamicChildren);
@@ -7847,13 +7881,13 @@ var VueRuntimeDOM = (function (exports) {
7847
7881
  move: moveTeleport,
7848
7882
  hydrate: hydrateTeleport
7849
7883
  };
7850
- function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2 /* REORDER */) {
7884
+ function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2 /* TeleportMoveTypes.REORDER */) {
7851
7885
  // move target anchor if this is a target change.
7852
- if (moveType === 0 /* TARGET_CHANGE */) {
7886
+ if (moveType === 0 /* TeleportMoveTypes.TARGET_CHANGE */) {
7853
7887
  insert(vnode.targetAnchor, container, parentAnchor);
7854
7888
  }
7855
7889
  const { el, anchor, shapeFlag, children, props } = vnode;
7856
- const isReorder = moveType === 2 /* REORDER */;
7890
+ const isReorder = moveType === 2 /* TeleportMoveTypes.REORDER */;
7857
7891
  // move main view anchor if this is a re-order.
7858
7892
  if (isReorder) {
7859
7893
  insert(el, container, parentAnchor);
@@ -7863,9 +7897,9 @@ var VueRuntimeDOM = (function (exports) {
7863
7897
  // is not a reorder, or the teleport is disabled
7864
7898
  if (!isReorder || isTeleportDisabled(props)) {
7865
7899
  // Teleport has either Array children or no children.
7866
- if (shapeFlag & 16 /* ARRAY_CHILDREN */) {
7900
+ if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {
7867
7901
  for (let i = 0; i < children.length; i++) {
7868
- move(children[i], container, parentAnchor, 2 /* REORDER */);
7902
+ move(children[i], container, parentAnchor, 2 /* MoveType.REORDER */);
7869
7903
  }
7870
7904
  }
7871
7905
  }
@@ -7880,7 +7914,7 @@ var VueRuntimeDOM = (function (exports) {
7880
7914
  // if multiple teleports rendered to the same target element, we need to
7881
7915
  // pick up from where the last teleport finished instead of the first node
7882
7916
  const targetNode = target._lpa || target.firstChild;
7883
- if (vnode.shapeFlag & 16 /* ARRAY_CHILDREN */) {
7917
+ if (vnode.shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {
7884
7918
  if (isTeleportDisabled(vnode.props)) {
7885
7919
  vnode.anchor = hydrateChildren(nextSibling(node), vnode, parentNode(node), parentComponent, parentSuspense, slotScopeIds, optimized);
7886
7920
  vnode.targetAnchor = targetNode;
@@ -8002,7 +8036,7 @@ var VueRuntimeDOM = (function (exports) {
8002
8036
  return value ? value.__v_isVNode === true : false;
8003
8037
  }
8004
8038
  function isSameVNodeType(n1, n2) {
8005
- if (n2.shapeFlag & 6 /* COMPONENT */ &&
8039
+ if (n2.shapeFlag & 6 /* ShapeFlags.COMPONENT */ &&
8006
8040
  hmrDirtyComponents.has(n2.type)) {
8007
8041
  // HMR only: if the component has been hot-updated, force a reload.
8008
8042
  return false;
@@ -8033,7 +8067,7 @@ var VueRuntimeDOM = (function (exports) {
8033
8067
  : ref
8034
8068
  : null);
8035
8069
  };
8036
- function createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1 /* ELEMENT */, isBlockNode = false, needFullChildrenNormalization = false) {
8070
+ function createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1 /* ShapeFlags.ELEMENT */, isBlockNode = false, needFullChildrenNormalization = false) {
8037
8071
  const vnode = {
8038
8072
  __v_isVNode: true,
8039
8073
  __v_skip: true,
@@ -8064,7 +8098,7 @@ var VueRuntimeDOM = (function (exports) {
8064
8098
  if (needFullChildrenNormalization) {
8065
8099
  normalizeChildren(vnode, children);
8066
8100
  // normalize suspense children
8067
- if (shapeFlag & 128 /* SUSPENSE */) {
8101
+ if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {
8068
8102
  type.normalize(vnode);
8069
8103
  }
8070
8104
  }
@@ -8072,8 +8106,8 @@ var VueRuntimeDOM = (function (exports) {
8072
8106
  // compiled element vnode - if children is passed, only possible types are
8073
8107
  // string or Array.
8074
8108
  vnode.shapeFlag |= isString(children)
8075
- ? 8 /* TEXT_CHILDREN */
8076
- : 16 /* ARRAY_CHILDREN */;
8109
+ ? 8 /* ShapeFlags.TEXT_CHILDREN */
8110
+ : 16 /* ShapeFlags.ARRAY_CHILDREN */;
8077
8111
  }
8078
8112
  // validate key
8079
8113
  if (vnode.key !== vnode.key) {
@@ -8089,10 +8123,10 @@ var VueRuntimeDOM = (function (exports) {
8089
8123
  // component nodes also should always be patched, because even if the
8090
8124
  // component doesn't need to update, it needs to persist the instance on to
8091
8125
  // the next vnode so that it can be properly unmounted later.
8092
- (vnode.patchFlag > 0 || shapeFlag & 6 /* COMPONENT */) &&
8126
+ (vnode.patchFlag > 0 || shapeFlag & 6 /* ShapeFlags.COMPONENT */) &&
8093
8127
  // the EVENTS flag is only for hydration and if it is the only flag, the
8094
8128
  // vnode should not be considered dynamic due to handler caching.
8095
- vnode.patchFlag !== 32 /* HYDRATE_EVENTS */) {
8129
+ vnode.patchFlag !== 32 /* PatchFlags.HYDRATE_EVENTS */) {
8096
8130
  currentBlock.push(vnode);
8097
8131
  }
8098
8132
  return vnode;
@@ -8114,14 +8148,14 @@ var VueRuntimeDOM = (function (exports) {
8114
8148
  normalizeChildren(cloned, children);
8115
8149
  }
8116
8150
  if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {
8117
- if (cloned.shapeFlag & 6 /* COMPONENT */) {
8151
+ if (cloned.shapeFlag & 6 /* ShapeFlags.COMPONENT */) {
8118
8152
  currentBlock[currentBlock.indexOf(type)] = cloned;
8119
8153
  }
8120
8154
  else {
8121
8155
  currentBlock.push(cloned);
8122
8156
  }
8123
8157
  }
8124
- cloned.patchFlag |= -2 /* BAIL */;
8158
+ cloned.patchFlag |= -2 /* PatchFlags.BAIL */;
8125
8159
  return cloned;
8126
8160
  }
8127
8161
  // class component normalization.
@@ -8147,17 +8181,17 @@ var VueRuntimeDOM = (function (exports) {
8147
8181
  }
8148
8182
  // encode the vnode type information into a bitmap
8149
8183
  const shapeFlag = isString(type)
8150
- ? 1 /* ELEMENT */
8184
+ ? 1 /* ShapeFlags.ELEMENT */
8151
8185
  : isSuspense(type)
8152
- ? 128 /* SUSPENSE */
8186
+ ? 128 /* ShapeFlags.SUSPENSE */
8153
8187
  : isTeleport(type)
8154
- ? 64 /* TELEPORT */
8188
+ ? 64 /* ShapeFlags.TELEPORT */
8155
8189
  : isObject(type)
8156
- ? 4 /* STATEFUL_COMPONENT */
8190
+ ? 4 /* ShapeFlags.STATEFUL_COMPONENT */
8157
8191
  : isFunction(type)
8158
- ? 2 /* FUNCTIONAL_COMPONENT */
8192
+ ? 2 /* ShapeFlags.FUNCTIONAL_COMPONENT */
8159
8193
  : 0;
8160
- if (shapeFlag & 4 /* STATEFUL_COMPONENT */ && isProxy(type)) {
8194
+ if (shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */ && isProxy(type)) {
8161
8195
  type = toRaw(type);
8162
8196
  warn$1(`Vue received a Component which was made a reactive object. This can ` +
8163
8197
  `lead to unnecessary performance overhead, and should be avoided by ` +
@@ -8196,7 +8230,7 @@ var VueRuntimeDOM = (function (exports) {
8196
8230
  : ref,
8197
8231
  scopeId: vnode.scopeId,
8198
8232
  slotScopeIds: vnode.slotScopeIds,
8199
- children: patchFlag === -1 /* HOISTED */ && isArray(children)
8233
+ children: patchFlag === -1 /* PatchFlags.HOISTED */ && isArray(children)
8200
8234
  ? children.map(deepCloneVNode)
8201
8235
  : children,
8202
8236
  target: vnode.target,
@@ -8209,8 +8243,8 @@ var VueRuntimeDOM = (function (exports) {
8209
8243
  // fast paths only.
8210
8244
  patchFlag: extraProps && vnode.type !== Fragment
8211
8245
  ? patchFlag === -1 // hoisted node
8212
- ? 16 /* FULL_PROPS */
8213
- : patchFlag | 16 /* FULL_PROPS */
8246
+ ? 16 /* PatchFlags.FULL_PROPS */
8247
+ : patchFlag | 16 /* PatchFlags.FULL_PROPS */
8214
8248
  : patchFlag,
8215
8249
  dynamicProps: vnode.dynamicProps,
8216
8250
  dynamicChildren: vnode.dynamicChildren,
@@ -8300,10 +8334,10 @@ var VueRuntimeDOM = (function (exports) {
8300
8334
  children = null;
8301
8335
  }
8302
8336
  else if (isArray(children)) {
8303
- type = 16 /* ARRAY_CHILDREN */;
8337
+ type = 16 /* ShapeFlags.ARRAY_CHILDREN */;
8304
8338
  }
8305
8339
  else if (typeof children === 'object') {
8306
- if (shapeFlag & (1 /* ELEMENT */ | 64 /* TELEPORT */)) {
8340
+ if (shapeFlag & (1 /* ShapeFlags.ELEMENT */ | 64 /* ShapeFlags.TELEPORT */)) {
8307
8341
  // Normalize slot to plain children for plain element and Teleport
8308
8342
  const slot = children.default;
8309
8343
  if (slot) {
@@ -8315,37 +8349,37 @@ var VueRuntimeDOM = (function (exports) {
8315
8349
  return;
8316
8350
  }
8317
8351
  else {
8318
- type = 32 /* SLOTS_CHILDREN */;
8352
+ type = 32 /* ShapeFlags.SLOTS_CHILDREN */;
8319
8353
  const slotFlag = children._;
8320
8354
  if (!slotFlag && !(InternalObjectKey in children)) {
8321
8355
  children._ctx = currentRenderingInstance;
8322
8356
  }
8323
- else if (slotFlag === 3 /* FORWARDED */ && currentRenderingInstance) {
8357
+ else if (slotFlag === 3 /* SlotFlags.FORWARDED */ && currentRenderingInstance) {
8324
8358
  // a child component receives forwarded slots from the parent.
8325
8359
  // its slot type is determined by its parent's slot type.
8326
- if (currentRenderingInstance.slots._ === 1 /* STABLE */) {
8327
- children._ = 1 /* STABLE */;
8360
+ if (currentRenderingInstance.slots._ === 1 /* SlotFlags.STABLE */) {
8361
+ children._ = 1 /* SlotFlags.STABLE */;
8328
8362
  }
8329
8363
  else {
8330
- children._ = 2 /* DYNAMIC */;
8331
- vnode.patchFlag |= 1024 /* DYNAMIC_SLOTS */;
8364
+ children._ = 2 /* SlotFlags.DYNAMIC */;
8365
+ vnode.patchFlag |= 1024 /* PatchFlags.DYNAMIC_SLOTS */;
8332
8366
  }
8333
8367
  }
8334
8368
  }
8335
8369
  }
8336
8370
  else if (isFunction(children)) {
8337
8371
  children = { default: children, _ctx: currentRenderingInstance };
8338
- type = 32 /* SLOTS_CHILDREN */;
8372
+ type = 32 /* ShapeFlags.SLOTS_CHILDREN */;
8339
8373
  }
8340
8374
  else {
8341
8375
  children = String(children);
8342
8376
  // force teleport children to array so it can be moved around
8343
- if (shapeFlag & 64 /* TELEPORT */) {
8344
- type = 16 /* ARRAY_CHILDREN */;
8377
+ if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {
8378
+ type = 16 /* ShapeFlags.ARRAY_CHILDREN */;
8345
8379
  children = [createTextVNode(children)];
8346
8380
  }
8347
8381
  else {
8348
- type = 8 /* TEXT_CHILDREN */;
8382
+ type = 8 /* ShapeFlags.TEXT_CHILDREN */;
8349
8383
  }
8350
8384
  }
8351
8385
  vnode.children = children;
@@ -8383,7 +8417,7 @@ var VueRuntimeDOM = (function (exports) {
8383
8417
  return ret;
8384
8418
  }
8385
8419
  function invokeVNodeHook(hook, instance, vnode, prevVNode = null) {
8386
- callWithAsyncErrorHandling(hook, instance, 7 /* VNODE_HOOK */, [
8420
+ callWithAsyncErrorHandling(hook, instance, 7 /* ErrorCodes.VNODE_HOOK */, [
8387
8421
  vnode,
8388
8422
  prevVNode
8389
8423
  ]);
@@ -8491,7 +8525,7 @@ var VueRuntimeDOM = (function (exports) {
8491
8525
  }
8492
8526
  }
8493
8527
  function isStatefulComponent(instance) {
8494
- return instance.vnode.shapeFlag & 4 /* STATEFUL_COMPONENT */;
8528
+ return instance.vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */;
8495
8529
  }
8496
8530
  let isInSSRComponentSetup = false;
8497
8531
  function setupComponent(instance, isSSR = false) {
@@ -8546,7 +8580,7 @@ var VueRuntimeDOM = (function (exports) {
8546
8580
  setup.length > 1 ? createSetupContext(instance) : null);
8547
8581
  setCurrentInstance(instance);
8548
8582
  pauseTracking();
8549
- const setupResult = callWithErrorHandling(setup, instance, 0 /* SETUP_FUNCTION */, [shallowReadonly(instance.props) , setupContext]);
8583
+ const setupResult = callWithErrorHandling(setup, instance, 0 /* ErrorCodes.SETUP_FUNCTION */, [shallowReadonly(instance.props) , setupContext]);
8550
8584
  resetTracking();
8551
8585
  unsetCurrentInstance();
8552
8586
  if (isPromise(setupResult)) {
@@ -8558,7 +8592,7 @@ var VueRuntimeDOM = (function (exports) {
8558
8592
  handleSetupResult(instance, resolvedResult, isSSR);
8559
8593
  })
8560
8594
  .catch(e => {
8561
- handleError(e, instance, 0 /* SETUP_FUNCTION */);
8595
+ handleError(e, instance, 0 /* ErrorCodes.SETUP_FUNCTION */);
8562
8596
  });
8563
8597
  }
8564
8598
  else {
@@ -8633,7 +8667,8 @@ var VueRuntimeDOM = (function (exports) {
8633
8667
  // only do on-the-fly compile if not in SSR - SSR on-the-fly compilation
8634
8668
  // is done by server-renderer
8635
8669
  if (!isSSR && compile && !Component.render) {
8636
- const template = Component.template;
8670
+ const template = Component.template ||
8671
+ resolveMergedOptions(instance).template;
8637
8672
  if (template) {
8638
8673
  {
8639
8674
  startMeasure(instance, `compile`);
@@ -8685,7 +8720,7 @@ var VueRuntimeDOM = (function (exports) {
8685
8720
  return new Proxy(instance.attrs, {
8686
8721
  get(target, key) {
8687
8722
  markAttrsAccessed();
8688
- track(instance, "get" /* GET */, '$attrs');
8723
+ track(instance, "get" /* TrackOpTypes.GET */, '$attrs');
8689
8724
  return target[key];
8690
8725
  },
8691
8726
  set() {
@@ -8741,10 +8776,10 @@ var VueRuntimeDOM = (function (exports) {
8741
8776
  }
8742
8777
  const classifyRE = /(?:^|[-_])(\w)/g;
8743
8778
  const classify = (str) => str.replace(classifyRE, c => c.toUpperCase()).replace(/[-_]/g, '');
8744
- function getComponentName(Component) {
8779
+ function getComponentName(Component, includeInferred = true) {
8745
8780
  return isFunction(Component)
8746
8781
  ? Component.displayName || Component.name
8747
- : Component.name;
8782
+ : Component.name || (includeInferred && Component.__name);
8748
8783
  }
8749
8784
  /* istanbul ignore next */
8750
8785
  function formatComponentName(instance, Component, isRoot = false) {
@@ -9183,9 +9218,9 @@ var VueRuntimeDOM = (function (exports) {
9183
9218
  }
9184
9219
 
9185
9220
  // Core API ------------------------------------------------------------------
9186
- const version = "3.2.36";
9221
+ const version = "3.2.39";
9187
9222
  /**
9188
- * SSR utils for \@vue/server-renderer. Only exposed in cjs builds.
9223
+ * SSR utils for \@vue/server-renderer. Only exposed in ssr-possible builds.
9189
9224
  * @internal
9190
9225
  */
9191
9226
  const ssrUtils = (null);
@@ -9550,7 +9585,8 @@ var VueRuntimeDOM = (function (exports) {
9550
9585
  options[m[0].toLowerCase()] = true;
9551
9586
  }
9552
9587
  }
9553
- return [hyphenate(name.slice(2)), options];
9588
+ const event = name[2] === ':' ? name.slice(3) : hyphenate(name.slice(2));
9589
+ return [event, options];
9554
9590
  }
9555
9591
  function createInvoker(initialValue, instance) {
9556
9592
  const invoker = (e) => {
@@ -9562,7 +9598,7 @@ var VueRuntimeDOM = (function (exports) {
9562
9598
  // AFTER it was attached.
9563
9599
  const timeStamp = e.timeStamp || _getNow();
9564
9600
  if (skipTimestampCheck || timeStamp >= invoker.attached - 1) {
9565
- callWithAsyncErrorHandling(patchStopImmediatePropagation(e, invoker.value), instance, 5 /* NATIVE_EVENT_HANDLER */, [e]);
9601
+ callWithAsyncErrorHandling(patchStopImmediatePropagation(e, invoker.value), instance, 5 /* ErrorCodes.NATIVE_EVENT_HANDLER */, [e]);
9566
9602
  }
9567
9603
  };
9568
9604
  invoker.value = initialValue;
@@ -9905,7 +9941,7 @@ var VueRuntimeDOM = (function (exports) {
9905
9941
  });
9906
9942
  }
9907
9943
  function setVarsOnVNode(vnode, vars) {
9908
- if (vnode.shapeFlag & 128 /* SUSPENSE */) {
9944
+ if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {
9909
9945
  const suspense = vnode.suspense;
9910
9946
  vnode = suspense.activeBranch;
9911
9947
  if (suspense.pendingBranch && !suspense.isHydrating) {
@@ -9918,7 +9954,7 @@ var VueRuntimeDOM = (function (exports) {
9918
9954
  while (vnode.component) {
9919
9955
  vnode = vnode.component.subTree;
9920
9956
  }
9921
- if (vnode.shapeFlag & 1 /* ELEMENT */ && vnode.el) {
9957
+ if (vnode.shapeFlag & 1 /* ShapeFlags.ELEMENT */ && vnode.el) {
9922
9958
  setVarsOnNode(vnode.el, vars);
9923
9959
  }
9924
9960
  else if (vnode.type === Fragment) {