@vue/reactivity 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.
@@ -297,7 +297,7 @@ function trigger(target, type, key, newValue, oldValue, oldTarget) {
297
297
  return;
298
298
  }
299
299
  let deps = [];
300
- if (type === "clear" /* CLEAR */) {
300
+ if (type === "clear" /* TriggerOpTypes.CLEAR */) {
301
301
  // collection being cleared
302
302
  // trigger all effects for target
303
303
  deps = [...depsMap.values()];
@@ -316,7 +316,7 @@ function trigger(target, type, key, newValue, oldValue, oldTarget) {
316
316
  }
317
317
  // also run for iteration key on ADD | DELETE | Map.SET
318
318
  switch (type) {
319
- case "add" /* ADD */:
319
+ case "add" /* TriggerOpTypes.ADD */:
320
320
  if (!isArray(target)) {
321
321
  deps.push(depsMap.get(ITERATE_KEY));
322
322
  if (isMap(target)) {
@@ -328,7 +328,7 @@ function trigger(target, type, key, newValue, oldValue, oldTarget) {
328
328
  deps.push(depsMap.get('length'));
329
329
  }
330
330
  break;
331
- case "delete" /* DELETE */:
331
+ case "delete" /* TriggerOpTypes.DELETE */:
332
332
  if (!isArray(target)) {
333
333
  deps.push(depsMap.get(ITERATE_KEY));
334
334
  if (isMap(target)) {
@@ -336,7 +336,7 @@ function trigger(target, type, key, newValue, oldValue, oldTarget) {
336
336
  }
337
337
  }
338
338
  break;
339
- case "set" /* SET */:
339
+ case "set" /* TriggerOpTypes.SET */:
340
340
  if (isMap(target)) {
341
341
  deps.push(depsMap.get(ITERATE_KEY));
342
342
  }
@@ -420,7 +420,7 @@ function createArrayInstrumentations() {
420
420
  instrumentations[key] = function (...args) {
421
421
  const arr = toRaw(this);
422
422
  for (let i = 0, l = this.length; i < l; i++) {
423
- track(arr, "get" /* GET */, i + '');
423
+ track(arr, "get" /* TrackOpTypes.GET */, i + '');
424
424
  }
425
425
  // we run the method using the original args first (which may be reactive)
426
426
  const res = arr[key](...args);
@@ -445,16 +445,16 @@ function createArrayInstrumentations() {
445
445
  }
446
446
  function createGetter(isReadonly = false, shallow = false) {
447
447
  return function get(target, key, receiver) {
448
- if (key === "__v_isReactive" /* IS_REACTIVE */) {
448
+ if (key === "__v_isReactive" /* ReactiveFlags.IS_REACTIVE */) {
449
449
  return !isReadonly;
450
450
  }
451
- else if (key === "__v_isReadonly" /* IS_READONLY */) {
451
+ else if (key === "__v_isReadonly" /* ReactiveFlags.IS_READONLY */) {
452
452
  return isReadonly;
453
453
  }
454
- else if (key === "__v_isShallow" /* IS_SHALLOW */) {
454
+ else if (key === "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */) {
455
455
  return shallow;
456
456
  }
457
- else if (key === "__v_raw" /* RAW */ &&
457
+ else if (key === "__v_raw" /* ReactiveFlags.RAW */ &&
458
458
  receiver ===
459
459
  (isReadonly
460
460
  ? shallow
@@ -474,7 +474,7 @@ function createGetter(isReadonly = false, shallow = false) {
474
474
  return res;
475
475
  }
476
476
  if (!isReadonly) {
477
- track(target, "get" /* GET */, key);
477
+ track(target, "get" /* TrackOpTypes.GET */, key);
478
478
  }
479
479
  if (shallow) {
480
480
  return res;
@@ -500,10 +500,10 @@ function createSetter(shallow = false) {
500
500
  if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {
501
501
  return false;
502
502
  }
503
- if (!shallow && !isReadonly(value)) {
504
- if (!isShallow(value)) {
505
- value = toRaw(value);
503
+ if (!shallow) {
504
+ if (!isShallow(value) && !isReadonly(value)) {
506
505
  oldValue = toRaw(oldValue);
506
+ value = toRaw(value);
507
507
  }
508
508
  if (!isArray(target) && isRef(oldValue) && !isRef(value)) {
509
509
  oldValue.value = value;
@@ -517,10 +517,10 @@ function createSetter(shallow = false) {
517
517
  // don't trigger if target is something up in the prototype chain of original
518
518
  if (target === toRaw(receiver)) {
519
519
  if (!hadKey) {
520
- trigger(target, "add" /* ADD */, key, value);
520
+ trigger(target, "add" /* TriggerOpTypes.ADD */, key, value);
521
521
  }
522
522
  else if (hasChanged(value, oldValue)) {
523
- trigger(target, "set" /* SET */, key, value, oldValue);
523
+ trigger(target, "set" /* TriggerOpTypes.SET */, key, value, oldValue);
524
524
  }
525
525
  }
526
526
  return result;
@@ -531,19 +531,19 @@ function deleteProperty(target, key) {
531
531
  const oldValue = target[key];
532
532
  const result = Reflect.deleteProperty(target, key);
533
533
  if (result && hadKey) {
534
- trigger(target, "delete" /* DELETE */, key, undefined, oldValue);
534
+ trigger(target, "delete" /* TriggerOpTypes.DELETE */, key, undefined, oldValue);
535
535
  }
536
536
  return result;
537
537
  }
538
538
  function has(target, key) {
539
539
  const result = Reflect.has(target, key);
540
540
  if (!isSymbol(key) || !builtInSymbols.has(key)) {
541
- track(target, "has" /* HAS */, key);
541
+ track(target, "has" /* TrackOpTypes.HAS */, key);
542
542
  }
543
543
  return result;
544
544
  }
545
545
  function ownKeys(target) {
546
- track(target, "iterate" /* ITERATE */, isArray(target) ? 'length' : ITERATE_KEY);
546
+ track(target, "iterate" /* TrackOpTypes.ITERATE */, isArray(target) ? 'length' : ITERATE_KEY);
547
547
  return Reflect.ownKeys(target);
548
548
  }
549
549
  const mutableHandlers = {
@@ -584,14 +584,14 @@ const getProto = (v) => Reflect.getPrototypeOf(v);
584
584
  function get$1(target, key, isReadonly = false, isShallow = false) {
585
585
  // #1772: readonly(reactive(Map)) should return readonly + reactive version
586
586
  // of the value
587
- target = target["__v_raw" /* RAW */];
587
+ target = target["__v_raw" /* ReactiveFlags.RAW */];
588
588
  const rawTarget = toRaw(target);
589
589
  const rawKey = toRaw(key);
590
590
  if (!isReadonly) {
591
591
  if (key !== rawKey) {
592
- track(rawTarget, "get" /* GET */, key);
592
+ track(rawTarget, "get" /* TrackOpTypes.GET */, key);
593
593
  }
594
- track(rawTarget, "get" /* GET */, rawKey);
594
+ track(rawTarget, "get" /* TrackOpTypes.GET */, rawKey);
595
595
  }
596
596
  const { has } = getProto(rawTarget);
597
597
  const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
@@ -608,22 +608,22 @@ function get$1(target, key, isReadonly = false, isShallow = false) {
608
608
  }
609
609
  }
610
610
  function has$1(key, isReadonly = false) {
611
- const target = this["__v_raw" /* RAW */];
611
+ const target = this["__v_raw" /* ReactiveFlags.RAW */];
612
612
  const rawTarget = toRaw(target);
613
613
  const rawKey = toRaw(key);
614
614
  if (!isReadonly) {
615
615
  if (key !== rawKey) {
616
- track(rawTarget, "has" /* HAS */, key);
616
+ track(rawTarget, "has" /* TrackOpTypes.HAS */, key);
617
617
  }
618
- track(rawTarget, "has" /* HAS */, rawKey);
618
+ track(rawTarget, "has" /* TrackOpTypes.HAS */, rawKey);
619
619
  }
620
620
  return key === rawKey
621
621
  ? target.has(key)
622
622
  : target.has(key) || target.has(rawKey);
623
623
  }
624
624
  function size(target, isReadonly = false) {
625
- target = target["__v_raw" /* RAW */];
626
- !isReadonly && track(toRaw(target), "iterate" /* ITERATE */, ITERATE_KEY);
625
+ target = target["__v_raw" /* ReactiveFlags.RAW */];
626
+ !isReadonly && track(toRaw(target), "iterate" /* TrackOpTypes.ITERATE */, ITERATE_KEY);
627
627
  return Reflect.get(target, 'size', target);
628
628
  }
629
629
  function add(value) {
@@ -633,7 +633,7 @@ function add(value) {
633
633
  const hadKey = proto.has.call(target, value);
634
634
  if (!hadKey) {
635
635
  target.add(value);
636
- trigger(target, "add" /* ADD */, value, value);
636
+ trigger(target, "add" /* TriggerOpTypes.ADD */, value, value);
637
637
  }
638
638
  return this;
639
639
  }
@@ -652,10 +652,10 @@ function set$1(key, value) {
652
652
  const oldValue = get.call(target, key);
653
653
  target.set(key, value);
654
654
  if (!hadKey) {
655
- trigger(target, "add" /* ADD */, key, value);
655
+ trigger(target, "add" /* TriggerOpTypes.ADD */, key, value);
656
656
  }
657
657
  else if (hasChanged(value, oldValue)) {
658
- trigger(target, "set" /* SET */, key, value, oldValue);
658
+ trigger(target, "set" /* TriggerOpTypes.SET */, key, value, oldValue);
659
659
  }
660
660
  return this;
661
661
  }
@@ -674,7 +674,7 @@ function deleteEntry(key) {
674
674
  // forward the operation before queueing reactions
675
675
  const result = target.delete(key);
676
676
  if (hadKey) {
677
- trigger(target, "delete" /* DELETE */, key, undefined, oldValue);
677
+ trigger(target, "delete" /* TriggerOpTypes.DELETE */, key, undefined, oldValue);
678
678
  }
679
679
  return result;
680
680
  }
@@ -689,17 +689,17 @@ function clear() {
689
689
  // forward the operation before queueing reactions
690
690
  const result = target.clear();
691
691
  if (hadItems) {
692
- trigger(target, "clear" /* CLEAR */, undefined, undefined, oldTarget);
692
+ trigger(target, "clear" /* TriggerOpTypes.CLEAR */, undefined, undefined, oldTarget);
693
693
  }
694
694
  return result;
695
695
  }
696
696
  function createForEach(isReadonly, isShallow) {
697
697
  return function forEach(callback, thisArg) {
698
698
  const observed = this;
699
- const target = observed["__v_raw" /* RAW */];
699
+ const target = observed["__v_raw" /* ReactiveFlags.RAW */];
700
700
  const rawTarget = toRaw(target);
701
701
  const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
702
- !isReadonly && track(rawTarget, "iterate" /* ITERATE */, ITERATE_KEY);
702
+ !isReadonly && track(rawTarget, "iterate" /* TrackOpTypes.ITERATE */, ITERATE_KEY);
703
703
  return target.forEach((value, key) => {
704
704
  // important: make sure the callback is
705
705
  // 1. invoked with the reactive map as `this` and 3rd arg
@@ -710,7 +710,7 @@ function createForEach(isReadonly, isShallow) {
710
710
  }
711
711
  function createIterableMethod(method, isReadonly, isShallow) {
712
712
  return function (...args) {
713
- const target = this["__v_raw" /* RAW */];
713
+ const target = this["__v_raw" /* ReactiveFlags.RAW */];
714
714
  const rawTarget = toRaw(target);
715
715
  const targetIsMap = isMap(rawTarget);
716
716
  const isPair = method === 'entries' || (method === Symbol.iterator && targetIsMap);
@@ -718,7 +718,7 @@ function createIterableMethod(method, isReadonly, isShallow) {
718
718
  const innerIterator = target[method](...args);
719
719
  const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
720
720
  !isReadonly &&
721
- track(rawTarget, "iterate" /* ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);
721
+ track(rawTarget, "iterate" /* TrackOpTypes.ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);
722
722
  // return a wrapped iterator which returns observed versions of the
723
723
  // values emitted from the real iterator
724
724
  return {
@@ -745,7 +745,7 @@ function createReadonlyMethod(type) {
745
745
  const key = args[0] ? `on key "${args[0]}" ` : ``;
746
746
  console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this));
747
747
  }
748
- return type === "delete" /* DELETE */ ? false : this;
748
+ return type === "delete" /* TriggerOpTypes.DELETE */ ? false : this;
749
749
  };
750
750
  }
751
751
  function createInstrumentations() {
@@ -787,10 +787,10 @@ function createInstrumentations() {
787
787
  has(key) {
788
788
  return has$1.call(this, key, true);
789
789
  },
790
- add: createReadonlyMethod("add" /* ADD */),
791
- set: createReadonlyMethod("set" /* SET */),
792
- delete: createReadonlyMethod("delete" /* DELETE */),
793
- clear: createReadonlyMethod("clear" /* CLEAR */),
790
+ add: createReadonlyMethod("add" /* TriggerOpTypes.ADD */),
791
+ set: createReadonlyMethod("set" /* TriggerOpTypes.SET */),
792
+ delete: createReadonlyMethod("delete" /* TriggerOpTypes.DELETE */),
793
+ clear: createReadonlyMethod("clear" /* TriggerOpTypes.CLEAR */),
794
794
  forEach: createForEach(true, false)
795
795
  };
796
796
  const shallowReadonlyInstrumentations = {
@@ -803,10 +803,10 @@ function createInstrumentations() {
803
803
  has(key) {
804
804
  return has$1.call(this, key, true);
805
805
  },
806
- add: createReadonlyMethod("add" /* ADD */),
807
- set: createReadonlyMethod("set" /* SET */),
808
- delete: createReadonlyMethod("delete" /* DELETE */),
809
- clear: createReadonlyMethod("clear" /* CLEAR */),
806
+ add: createReadonlyMethod("add" /* TriggerOpTypes.ADD */),
807
+ set: createReadonlyMethod("set" /* TriggerOpTypes.SET */),
808
+ delete: createReadonlyMethod("delete" /* TriggerOpTypes.DELETE */),
809
+ clear: createReadonlyMethod("clear" /* TriggerOpTypes.CLEAR */),
810
810
  forEach: createForEach(true, true)
811
811
  };
812
812
  const iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator];
@@ -833,13 +833,13 @@ function createInstrumentationGetter(isReadonly, shallow) {
833
833
  ? readonlyInstrumentations
834
834
  : mutableInstrumentations;
835
835
  return (target, key, receiver) => {
836
- if (key === "__v_isReactive" /* IS_REACTIVE */) {
836
+ if (key === "__v_isReactive" /* ReactiveFlags.IS_REACTIVE */) {
837
837
  return !isReadonly;
838
838
  }
839
- else if (key === "__v_isReadonly" /* IS_READONLY */) {
839
+ else if (key === "__v_isReadonly" /* ReactiveFlags.IS_READONLY */) {
840
840
  return isReadonly;
841
841
  }
842
- else if (key === "__v_raw" /* RAW */) {
842
+ else if (key === "__v_raw" /* ReactiveFlags.RAW */) {
843
843
  return target;
844
844
  }
845
845
  return Reflect.get(hasOwn(instrumentations, key) && key in target
@@ -879,19 +879,19 @@ function targetTypeMap(rawType) {
879
879
  switch (rawType) {
880
880
  case 'Object':
881
881
  case 'Array':
882
- return 1 /* COMMON */;
882
+ return 1 /* TargetType.COMMON */;
883
883
  case 'Map':
884
884
  case 'Set':
885
885
  case 'WeakMap':
886
886
  case 'WeakSet':
887
- return 2 /* COLLECTION */;
887
+ return 2 /* TargetType.COLLECTION */;
888
888
  default:
889
- return 0 /* INVALID */;
889
+ return 0 /* TargetType.INVALID */;
890
890
  }
891
891
  }
892
892
  function getTargetType(value) {
893
- return value["__v_skip" /* SKIP */] || !Object.isExtensible(value)
894
- ? 0 /* INVALID */
893
+ return value["__v_skip" /* ReactiveFlags.SKIP */] || !Object.isExtensible(value)
894
+ ? 0 /* TargetType.INVALID */
895
895
  : targetTypeMap(toRawType(value));
896
896
  }
897
897
  function reactive(target) {
@@ -934,8 +934,8 @@ function createReactiveObject(target, isReadonly, baseHandlers, collectionHandle
934
934
  }
935
935
  // target is already a Proxy, return it.
936
936
  // exception: calling readonly() on a reactive object
937
- if (target["__v_raw" /* RAW */] &&
938
- !(isReadonly && target["__v_isReactive" /* IS_REACTIVE */])) {
937
+ if (target["__v_raw" /* ReactiveFlags.RAW */] &&
938
+ !(isReadonly && target["__v_isReactive" /* ReactiveFlags.IS_REACTIVE */])) {
939
939
  return target;
940
940
  }
941
941
  // target already has corresponding Proxy
@@ -945,34 +945,34 @@ function createReactiveObject(target, isReadonly, baseHandlers, collectionHandle
945
945
  }
946
946
  // only specific value types can be observed.
947
947
  const targetType = getTargetType(target);
948
- if (targetType === 0 /* INVALID */) {
948
+ if (targetType === 0 /* TargetType.INVALID */) {
949
949
  return target;
950
950
  }
951
- const proxy = new Proxy(target, targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers);
951
+ const proxy = new Proxy(target, targetType === 2 /* TargetType.COLLECTION */ ? collectionHandlers : baseHandlers);
952
952
  proxyMap.set(target, proxy);
953
953
  return proxy;
954
954
  }
955
955
  function isReactive(value) {
956
956
  if (isReadonly(value)) {
957
- return isReactive(value["__v_raw" /* RAW */]);
957
+ return isReactive(value["__v_raw" /* ReactiveFlags.RAW */]);
958
958
  }
959
- return !!(value && value["__v_isReactive" /* IS_REACTIVE */]);
959
+ return !!(value && value["__v_isReactive" /* ReactiveFlags.IS_REACTIVE */]);
960
960
  }
961
961
  function isReadonly(value) {
962
- return !!(value && value["__v_isReadonly" /* IS_READONLY */]);
962
+ return !!(value && value["__v_isReadonly" /* ReactiveFlags.IS_READONLY */]);
963
963
  }
964
964
  function isShallow(value) {
965
- return !!(value && value["__v_isShallow" /* IS_SHALLOW */]);
965
+ return !!(value && value["__v_isShallow" /* ReactiveFlags.IS_SHALLOW */]);
966
966
  }
967
967
  function isProxy(value) {
968
968
  return isReactive(value) || isReadonly(value);
969
969
  }
970
970
  function toRaw(observed) {
971
- const raw = observed && observed["__v_raw" /* RAW */];
971
+ const raw = observed && observed["__v_raw" /* ReactiveFlags.RAW */];
972
972
  return raw ? toRaw(raw) : observed;
973
973
  }
974
974
  function markRaw(value) {
975
- def(value, "__v_skip" /* SKIP */, true);
975
+ def(value, "__v_skip" /* ReactiveFlags.SKIP */, true);
976
976
  return value;
977
977
  }
978
978
  const toReactive = (value) => isObject(value) ? reactive(value) : value;
@@ -984,7 +984,7 @@ function trackRefValue(ref) {
984
984
  if ((process.env.NODE_ENV !== 'production')) {
985
985
  trackEffects(ref.dep || (ref.dep = createDep()), {
986
986
  target: ref,
987
- type: "get" /* GET */,
987
+ type: "get" /* TrackOpTypes.GET */,
988
988
  key: 'value'
989
989
  });
990
990
  }
@@ -999,7 +999,7 @@ function triggerRefValue(ref, newVal) {
999
999
  if ((process.env.NODE_ENV !== 'production')) {
1000
1000
  triggerEffects(ref.dep, {
1001
1001
  target: ref,
1002
- type: "set" /* SET */,
1002
+ type: "set" /* TriggerOpTypes.SET */,
1003
1003
  key: 'value',
1004
1004
  newValue: newVal
1005
1005
  });
@@ -1037,10 +1037,11 @@ class RefImpl {
1037
1037
  return this._value;
1038
1038
  }
1039
1039
  set value(newVal) {
1040
- newVal = this.__v_isShallow ? newVal : toRaw(newVal);
1040
+ const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);
1041
+ newVal = useDirectValue ? newVal : toRaw(newVal);
1041
1042
  if (hasChanged(newVal, this._rawValue)) {
1042
1043
  this._rawValue = newVal;
1043
- this._value = this.__v_isShallow ? newVal : toReactive(newVal);
1044
+ this._value = useDirectValue ? newVal : toReactive(newVal);
1044
1045
  triggerRefValue(this, newVal);
1045
1046
  }
1046
1047
  }
@@ -1119,11 +1120,13 @@ function toRef(object, key, defaultValue) {
1119
1120
  : new ObjectRefImpl(object, key, defaultValue);
1120
1121
  }
1121
1122
 
1123
+ var _a;
1122
1124
  class ComputedRefImpl {
1123
1125
  constructor(getter, _setter, isReadonly, isSSR) {
1124
1126
  this._setter = _setter;
1125
1127
  this.dep = undefined;
1126
1128
  this.__v_isRef = true;
1129
+ this[_a] = false;
1127
1130
  this._dirty = true;
1128
1131
  this.effect = new ReactiveEffect(getter, () => {
1129
1132
  if (!this._dirty) {
@@ -1133,7 +1136,7 @@ class ComputedRefImpl {
1133
1136
  });
1134
1137
  this.effect.computed = this;
1135
1138
  this.effect.active = this._cacheable = !isSSR;
1136
- this["__v_isReadonly" /* IS_READONLY */] = isReadonly;
1139
+ this["__v_isReadonly" /* ReactiveFlags.IS_READONLY */] = isReadonly;
1137
1140
  }
1138
1141
  get value() {
1139
1142
  // the computed ref may get wrapped by other proxies e.g. readonly() #3376
@@ -1149,6 +1152,7 @@ class ComputedRefImpl {
1149
1152
  this._setter(newValue);
1150
1153
  }
1151
1154
  }
1155
+ _a = "__v_isReadonly" /* ReactiveFlags.IS_READONLY */;
1152
1156
  function computed(getterOrOptions, debugOptions, isSSR = false) {
1153
1157
  let getter;
1154
1158
  let setter;
@@ -1173,7 +1177,7 @@ function computed(getterOrOptions, debugOptions, isSSR = false) {
1173
1177
  return cRef;
1174
1178
  }
1175
1179
 
1176
- var _a;
1180
+ var _a$1;
1177
1181
  const tick = /*#__PURE__*/ Promise.resolve();
1178
1182
  const queue = [];
1179
1183
  let queued = false;
@@ -1196,7 +1200,7 @@ class DeferredComputedRefImpl {
1196
1200
  this.dep = undefined;
1197
1201
  this._dirty = true;
1198
1202
  this.__v_isRef = true;
1199
- this[_a] = true;
1203
+ this[_a$1] = true;
1200
1204
  let compareTarget;
1201
1205
  let hasCompareTarget = false;
1202
1206
  let scheduled = false;
@@ -1243,7 +1247,7 @@ class DeferredComputedRefImpl {
1243
1247
  return toRaw(this)._get();
1244
1248
  }
1245
1249
  }
1246
- _a = "__v_isReadonly" /* IS_READONLY */;
1250
+ _a$1 = "__v_isReadonly" /* ReactiveFlags.IS_READONLY */;
1247
1251
  function deferredComputed(getter) {
1248
1252
  return new DeferredComputedRefImpl(getter);
1249
1253
  }