@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.
@@ -284,7 +284,7 @@ function trigger(target, type, key, newValue, oldValue, oldTarget) {
284
284
  return;
285
285
  }
286
286
  let deps = [];
287
- if (type === "clear" /* CLEAR */) {
287
+ if (type === "clear" /* TriggerOpTypes.CLEAR */) {
288
288
  // collection being cleared
289
289
  // trigger all effects for target
290
290
  deps = [...depsMap.values()];
@@ -303,7 +303,7 @@ function trigger(target, type, key, newValue, oldValue, oldTarget) {
303
303
  }
304
304
  // also run for iteration key on ADD | DELETE | Map.SET
305
305
  switch (type) {
306
- case "add" /* ADD */:
306
+ case "add" /* TriggerOpTypes.ADD */:
307
307
  if (!shared.isArray(target)) {
308
308
  deps.push(depsMap.get(ITERATE_KEY));
309
309
  if (shared.isMap(target)) {
@@ -315,7 +315,7 @@ function trigger(target, type, key, newValue, oldValue, oldTarget) {
315
315
  deps.push(depsMap.get('length'));
316
316
  }
317
317
  break;
318
- case "delete" /* DELETE */:
318
+ case "delete" /* TriggerOpTypes.DELETE */:
319
319
  if (!shared.isArray(target)) {
320
320
  deps.push(depsMap.get(ITERATE_KEY));
321
321
  if (shared.isMap(target)) {
@@ -323,7 +323,7 @@ function trigger(target, type, key, newValue, oldValue, oldTarget) {
323
323
  }
324
324
  }
325
325
  break;
326
- case "set" /* SET */:
326
+ case "set" /* TriggerOpTypes.SET */:
327
327
  if (shared.isMap(target)) {
328
328
  deps.push(depsMap.get(ITERATE_KEY));
329
329
  }
@@ -395,7 +395,7 @@ function createArrayInstrumentations() {
395
395
  instrumentations[key] = function (...args) {
396
396
  const arr = toRaw(this);
397
397
  for (let i = 0, l = this.length; i < l; i++) {
398
- track(arr, "get" /* GET */, i + '');
398
+ track(arr, "get" /* TrackOpTypes.GET */, i + '');
399
399
  }
400
400
  // we run the method using the original args first (which may be reactive)
401
401
  const res = arr[key](...args);
@@ -420,16 +420,16 @@ function createArrayInstrumentations() {
420
420
  }
421
421
  function createGetter(isReadonly = false, shallow = false) {
422
422
  return function get(target, key, receiver) {
423
- if (key === "__v_isReactive" /* IS_REACTIVE */) {
423
+ if (key === "__v_isReactive" /* ReactiveFlags.IS_REACTIVE */) {
424
424
  return !isReadonly;
425
425
  }
426
- else if (key === "__v_isReadonly" /* IS_READONLY */) {
426
+ else if (key === "__v_isReadonly" /* ReactiveFlags.IS_READONLY */) {
427
427
  return isReadonly;
428
428
  }
429
- else if (key === "__v_isShallow" /* IS_SHALLOW */) {
429
+ else if (key === "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */) {
430
430
  return shallow;
431
431
  }
432
- else if (key === "__v_raw" /* RAW */ &&
432
+ else if (key === "__v_raw" /* ReactiveFlags.RAW */ &&
433
433
  receiver ===
434
434
  (isReadonly
435
435
  ? shallow
@@ -449,7 +449,7 @@ function createGetter(isReadonly = false, shallow = false) {
449
449
  return res;
450
450
  }
451
451
  if (!isReadonly) {
452
- track(target, "get" /* GET */, key);
452
+ track(target, "get" /* TrackOpTypes.GET */, key);
453
453
  }
454
454
  if (shallow) {
455
455
  return res;
@@ -475,10 +475,10 @@ function createSetter(shallow = false) {
475
475
  if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {
476
476
  return false;
477
477
  }
478
- if (!shallow && !isReadonly(value)) {
479
- if (!isShallow(value)) {
480
- value = toRaw(value);
478
+ if (!shallow) {
479
+ if (!isShallow(value) && !isReadonly(value)) {
481
480
  oldValue = toRaw(oldValue);
481
+ value = toRaw(value);
482
482
  }
483
483
  if (!shared.isArray(target) && isRef(oldValue) && !isRef(value)) {
484
484
  oldValue.value = value;
@@ -492,10 +492,10 @@ function createSetter(shallow = false) {
492
492
  // don't trigger if target is something up in the prototype chain of original
493
493
  if (target === toRaw(receiver)) {
494
494
  if (!hadKey) {
495
- trigger(target, "add" /* ADD */, key, value);
495
+ trigger(target, "add" /* TriggerOpTypes.ADD */, key, value);
496
496
  }
497
497
  else if (shared.hasChanged(value, oldValue)) {
498
- trigger(target, "set" /* SET */, key, value);
498
+ trigger(target, "set" /* TriggerOpTypes.SET */, key, value);
499
499
  }
500
500
  }
501
501
  return result;
@@ -506,19 +506,19 @@ function deleteProperty(target, key) {
506
506
  target[key];
507
507
  const result = Reflect.deleteProperty(target, key);
508
508
  if (result && hadKey) {
509
- trigger(target, "delete" /* DELETE */, key, undefined);
509
+ trigger(target, "delete" /* TriggerOpTypes.DELETE */, key, undefined);
510
510
  }
511
511
  return result;
512
512
  }
513
513
  function has(target, key) {
514
514
  const result = Reflect.has(target, key);
515
515
  if (!shared.isSymbol(key) || !builtInSymbols.has(key)) {
516
- track(target, "has" /* HAS */, key);
516
+ track(target, "has" /* TrackOpTypes.HAS */, key);
517
517
  }
518
518
  return result;
519
519
  }
520
520
  function ownKeys(target) {
521
- track(target, "iterate" /* ITERATE */, shared.isArray(target) ? 'length' : ITERATE_KEY);
521
+ track(target, "iterate" /* TrackOpTypes.ITERATE */, shared.isArray(target) ? 'length' : ITERATE_KEY);
522
522
  return Reflect.ownKeys(target);
523
523
  }
524
524
  const mutableHandlers = {
@@ -553,14 +553,14 @@ const getProto = (v) => Reflect.getPrototypeOf(v);
553
553
  function get$1(target, key, isReadonly = false, isShallow = false) {
554
554
  // #1772: readonly(reactive(Map)) should return readonly + reactive version
555
555
  // of the value
556
- target = target["__v_raw" /* RAW */];
556
+ target = target["__v_raw" /* ReactiveFlags.RAW */];
557
557
  const rawTarget = toRaw(target);
558
558
  const rawKey = toRaw(key);
559
559
  if (!isReadonly) {
560
560
  if (key !== rawKey) {
561
- track(rawTarget, "get" /* GET */, key);
561
+ track(rawTarget, "get" /* TrackOpTypes.GET */, key);
562
562
  }
563
- track(rawTarget, "get" /* GET */, rawKey);
563
+ track(rawTarget, "get" /* TrackOpTypes.GET */, rawKey);
564
564
  }
565
565
  const { has } = getProto(rawTarget);
566
566
  const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
@@ -577,22 +577,22 @@ function get$1(target, key, isReadonly = false, isShallow = false) {
577
577
  }
578
578
  }
579
579
  function has$1(key, isReadonly = false) {
580
- const target = this["__v_raw" /* RAW */];
580
+ const target = this["__v_raw" /* ReactiveFlags.RAW */];
581
581
  const rawTarget = toRaw(target);
582
582
  const rawKey = toRaw(key);
583
583
  if (!isReadonly) {
584
584
  if (key !== rawKey) {
585
- track(rawTarget, "has" /* HAS */, key);
585
+ track(rawTarget, "has" /* TrackOpTypes.HAS */, key);
586
586
  }
587
- track(rawTarget, "has" /* HAS */, rawKey);
587
+ track(rawTarget, "has" /* TrackOpTypes.HAS */, rawKey);
588
588
  }
589
589
  return key === rawKey
590
590
  ? target.has(key)
591
591
  : target.has(key) || target.has(rawKey);
592
592
  }
593
593
  function size(target, isReadonly = false) {
594
- target = target["__v_raw" /* RAW */];
595
- !isReadonly && track(toRaw(target), "iterate" /* ITERATE */, ITERATE_KEY);
594
+ target = target["__v_raw" /* ReactiveFlags.RAW */];
595
+ !isReadonly && track(toRaw(target), "iterate" /* TrackOpTypes.ITERATE */, ITERATE_KEY);
596
596
  return Reflect.get(target, 'size', target);
597
597
  }
598
598
  function add(value) {
@@ -602,7 +602,7 @@ function add(value) {
602
602
  const hadKey = proto.has.call(target, value);
603
603
  if (!hadKey) {
604
604
  target.add(value);
605
- trigger(target, "add" /* ADD */, value, value);
605
+ trigger(target, "add" /* TriggerOpTypes.ADD */, value, value);
606
606
  }
607
607
  return this;
608
608
  }
@@ -618,10 +618,10 @@ function set$1(key, value) {
618
618
  const oldValue = get.call(target, key);
619
619
  target.set(key, value);
620
620
  if (!hadKey) {
621
- trigger(target, "add" /* ADD */, key, value);
621
+ trigger(target, "add" /* TriggerOpTypes.ADD */, key, value);
622
622
  }
623
623
  else if (shared.hasChanged(value, oldValue)) {
624
- trigger(target, "set" /* SET */, key, value);
624
+ trigger(target, "set" /* TriggerOpTypes.SET */, key, value);
625
625
  }
626
626
  return this;
627
627
  }
@@ -637,7 +637,7 @@ function deleteEntry(key) {
637
637
  // forward the operation before queueing reactions
638
638
  const result = target.delete(key);
639
639
  if (hadKey) {
640
- trigger(target, "delete" /* DELETE */, key, undefined);
640
+ trigger(target, "delete" /* TriggerOpTypes.DELETE */, key, undefined);
641
641
  }
642
642
  return result;
643
643
  }
@@ -647,17 +647,17 @@ function clear() {
647
647
  // forward the operation before queueing reactions
648
648
  const result = target.clear();
649
649
  if (hadItems) {
650
- trigger(target, "clear" /* CLEAR */, undefined, undefined);
650
+ trigger(target, "clear" /* TriggerOpTypes.CLEAR */, undefined, undefined);
651
651
  }
652
652
  return result;
653
653
  }
654
654
  function createForEach(isReadonly, isShallow) {
655
655
  return function forEach(callback, thisArg) {
656
656
  const observed = this;
657
- const target = observed["__v_raw" /* RAW */];
657
+ const target = observed["__v_raw" /* ReactiveFlags.RAW */];
658
658
  const rawTarget = toRaw(target);
659
659
  const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
660
- !isReadonly && track(rawTarget, "iterate" /* ITERATE */, ITERATE_KEY);
660
+ !isReadonly && track(rawTarget, "iterate" /* TrackOpTypes.ITERATE */, ITERATE_KEY);
661
661
  return target.forEach((value, key) => {
662
662
  // important: make sure the callback is
663
663
  // 1. invoked with the reactive map as `this` and 3rd arg
@@ -668,7 +668,7 @@ function createForEach(isReadonly, isShallow) {
668
668
  }
669
669
  function createIterableMethod(method, isReadonly, isShallow) {
670
670
  return function (...args) {
671
- const target = this["__v_raw" /* RAW */];
671
+ const target = this["__v_raw" /* ReactiveFlags.RAW */];
672
672
  const rawTarget = toRaw(target);
673
673
  const targetIsMap = shared.isMap(rawTarget);
674
674
  const isPair = method === 'entries' || (method === Symbol.iterator && targetIsMap);
@@ -676,7 +676,7 @@ function createIterableMethod(method, isReadonly, isShallow) {
676
676
  const innerIterator = target[method](...args);
677
677
  const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
678
678
  !isReadonly &&
679
- track(rawTarget, "iterate" /* ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);
679
+ track(rawTarget, "iterate" /* TrackOpTypes.ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);
680
680
  // return a wrapped iterator which returns observed versions of the
681
681
  // values emitted from the real iterator
682
682
  return {
@@ -699,7 +699,7 @@ function createIterableMethod(method, isReadonly, isShallow) {
699
699
  }
700
700
  function createReadonlyMethod(type) {
701
701
  return function (...args) {
702
- return type === "delete" /* DELETE */ ? false : this;
702
+ return type === "delete" /* TriggerOpTypes.DELETE */ ? false : this;
703
703
  };
704
704
  }
705
705
  function createInstrumentations() {
@@ -741,10 +741,10 @@ function createInstrumentations() {
741
741
  has(key) {
742
742
  return has$1.call(this, key, true);
743
743
  },
744
- add: createReadonlyMethod("add" /* ADD */),
745
- set: createReadonlyMethod("set" /* SET */),
746
- delete: createReadonlyMethod("delete" /* DELETE */),
747
- clear: createReadonlyMethod("clear" /* CLEAR */),
744
+ add: createReadonlyMethod("add" /* TriggerOpTypes.ADD */),
745
+ set: createReadonlyMethod("set" /* TriggerOpTypes.SET */),
746
+ delete: createReadonlyMethod("delete" /* TriggerOpTypes.DELETE */),
747
+ clear: createReadonlyMethod("clear" /* TriggerOpTypes.CLEAR */),
748
748
  forEach: createForEach(true, false)
749
749
  };
750
750
  const shallowReadonlyInstrumentations = {
@@ -757,10 +757,10 @@ function createInstrumentations() {
757
757
  has(key) {
758
758
  return has$1.call(this, key, true);
759
759
  },
760
- add: createReadonlyMethod("add" /* ADD */),
761
- set: createReadonlyMethod("set" /* SET */),
762
- delete: createReadonlyMethod("delete" /* DELETE */),
763
- clear: createReadonlyMethod("clear" /* CLEAR */),
760
+ add: createReadonlyMethod("add" /* TriggerOpTypes.ADD */),
761
+ set: createReadonlyMethod("set" /* TriggerOpTypes.SET */),
762
+ delete: createReadonlyMethod("delete" /* TriggerOpTypes.DELETE */),
763
+ clear: createReadonlyMethod("clear" /* TriggerOpTypes.CLEAR */),
764
764
  forEach: createForEach(true, true)
765
765
  };
766
766
  const iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator];
@@ -787,13 +787,13 @@ function createInstrumentationGetter(isReadonly, shallow) {
787
787
  ? readonlyInstrumentations
788
788
  : mutableInstrumentations;
789
789
  return (target, key, receiver) => {
790
- if (key === "__v_isReactive" /* IS_REACTIVE */) {
790
+ if (key === "__v_isReactive" /* ReactiveFlags.IS_REACTIVE */) {
791
791
  return !isReadonly;
792
792
  }
793
- else if (key === "__v_isReadonly" /* IS_READONLY */) {
793
+ else if (key === "__v_isReadonly" /* ReactiveFlags.IS_READONLY */) {
794
794
  return isReadonly;
795
795
  }
796
- else if (key === "__v_raw" /* RAW */) {
796
+ else if (key === "__v_raw" /* ReactiveFlags.RAW */) {
797
797
  return target;
798
798
  }
799
799
  return Reflect.get(shared.hasOwn(instrumentations, key) && key in target
@@ -822,19 +822,19 @@ function targetTypeMap(rawType) {
822
822
  switch (rawType) {
823
823
  case 'Object':
824
824
  case 'Array':
825
- return 1 /* COMMON */;
825
+ return 1 /* TargetType.COMMON */;
826
826
  case 'Map':
827
827
  case 'Set':
828
828
  case 'WeakMap':
829
829
  case 'WeakSet':
830
- return 2 /* COLLECTION */;
830
+ return 2 /* TargetType.COLLECTION */;
831
831
  default:
832
- return 0 /* INVALID */;
832
+ return 0 /* TargetType.INVALID */;
833
833
  }
834
834
  }
835
835
  function getTargetType(value) {
836
- return value["__v_skip" /* SKIP */] || !Object.isExtensible(value)
837
- ? 0 /* INVALID */
836
+ return value["__v_skip" /* ReactiveFlags.SKIP */] || !Object.isExtensible(value)
837
+ ? 0 /* TargetType.INVALID */
838
838
  : targetTypeMap(shared.toRawType(value));
839
839
  }
840
840
  function reactive(target) {
@@ -874,8 +874,8 @@ function createReactiveObject(target, isReadonly, baseHandlers, collectionHandle
874
874
  }
875
875
  // target is already a Proxy, return it.
876
876
  // exception: calling readonly() on a reactive object
877
- if (target["__v_raw" /* RAW */] &&
878
- !(isReadonly && target["__v_isReactive" /* IS_REACTIVE */])) {
877
+ if (target["__v_raw" /* ReactiveFlags.RAW */] &&
878
+ !(isReadonly && target["__v_isReactive" /* ReactiveFlags.IS_REACTIVE */])) {
879
879
  return target;
880
880
  }
881
881
  // target already has corresponding Proxy
@@ -885,34 +885,34 @@ function createReactiveObject(target, isReadonly, baseHandlers, collectionHandle
885
885
  }
886
886
  // only specific value types can be observed.
887
887
  const targetType = getTargetType(target);
888
- if (targetType === 0 /* INVALID */) {
888
+ if (targetType === 0 /* TargetType.INVALID */) {
889
889
  return target;
890
890
  }
891
- const proxy = new Proxy(target, targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers);
891
+ const proxy = new Proxy(target, targetType === 2 /* TargetType.COLLECTION */ ? collectionHandlers : baseHandlers);
892
892
  proxyMap.set(target, proxy);
893
893
  return proxy;
894
894
  }
895
895
  function isReactive(value) {
896
896
  if (isReadonly(value)) {
897
- return isReactive(value["__v_raw" /* RAW */]);
897
+ return isReactive(value["__v_raw" /* ReactiveFlags.RAW */]);
898
898
  }
899
- return !!(value && value["__v_isReactive" /* IS_REACTIVE */]);
899
+ return !!(value && value["__v_isReactive" /* ReactiveFlags.IS_REACTIVE */]);
900
900
  }
901
901
  function isReadonly(value) {
902
- return !!(value && value["__v_isReadonly" /* IS_READONLY */]);
902
+ return !!(value && value["__v_isReadonly" /* ReactiveFlags.IS_READONLY */]);
903
903
  }
904
904
  function isShallow(value) {
905
- return !!(value && value["__v_isShallow" /* IS_SHALLOW */]);
905
+ return !!(value && value["__v_isShallow" /* ReactiveFlags.IS_SHALLOW */]);
906
906
  }
907
907
  function isProxy(value) {
908
908
  return isReactive(value) || isReadonly(value);
909
909
  }
910
910
  function toRaw(observed) {
911
- const raw = observed && observed["__v_raw" /* RAW */];
911
+ const raw = observed && observed["__v_raw" /* ReactiveFlags.RAW */];
912
912
  return raw ? toRaw(raw) : observed;
913
913
  }
914
914
  function markRaw(value) {
915
- shared.def(value, "__v_skip" /* SKIP */, true);
915
+ shared.def(value, "__v_skip" /* ReactiveFlags.SKIP */, true);
916
916
  return value;
917
917
  }
918
918
  const toReactive = (value) => shared.isObject(value) ? reactive(value) : value;
@@ -962,10 +962,11 @@ class RefImpl {
962
962
  return this._value;
963
963
  }
964
964
  set value(newVal) {
965
- newVal = this.__v_isShallow ? newVal : toRaw(newVal);
965
+ const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);
966
+ newVal = useDirectValue ? newVal : toRaw(newVal);
966
967
  if (shared.hasChanged(newVal, this._rawValue)) {
967
968
  this._rawValue = newVal;
968
- this._value = this.__v_isShallow ? newVal : toReactive(newVal);
969
+ this._value = useDirectValue ? newVal : toReactive(newVal);
969
970
  triggerRefValue(this);
970
971
  }
971
972
  }
@@ -1041,11 +1042,13 @@ function toRef(object, key, defaultValue) {
1041
1042
  : new ObjectRefImpl(object, key, defaultValue);
1042
1043
  }
1043
1044
 
1045
+ var _a;
1044
1046
  class ComputedRefImpl {
1045
1047
  constructor(getter, _setter, isReadonly, isSSR) {
1046
1048
  this._setter = _setter;
1047
1049
  this.dep = undefined;
1048
1050
  this.__v_isRef = true;
1051
+ this[_a] = false;
1049
1052
  this._dirty = true;
1050
1053
  this.effect = new ReactiveEffect(getter, () => {
1051
1054
  if (!this._dirty) {
@@ -1055,7 +1058,7 @@ class ComputedRefImpl {
1055
1058
  });
1056
1059
  this.effect.computed = this;
1057
1060
  this.effect.active = this._cacheable = !isSSR;
1058
- this["__v_isReadonly" /* IS_READONLY */] = isReadonly;
1061
+ this["__v_isReadonly" /* ReactiveFlags.IS_READONLY */] = isReadonly;
1059
1062
  }
1060
1063
  get value() {
1061
1064
  // the computed ref may get wrapped by other proxies e.g. readonly() #3376
@@ -1071,6 +1074,7 @@ class ComputedRefImpl {
1071
1074
  this._setter(newValue);
1072
1075
  }
1073
1076
  }
1077
+ _a = "__v_isReadonly" /* ReactiveFlags.IS_READONLY */;
1074
1078
  function computed(getterOrOptions, debugOptions, isSSR = false) {
1075
1079
  let getter;
1076
1080
  let setter;
@@ -1087,7 +1091,7 @@ function computed(getterOrOptions, debugOptions, isSSR = false) {
1087
1091
  return cRef;
1088
1092
  }
1089
1093
 
1090
- var _a;
1094
+ var _a$1;
1091
1095
  const tick = /*#__PURE__*/ Promise.resolve();
1092
1096
  const queue = [];
1093
1097
  let queued = false;
@@ -1110,7 +1114,7 @@ class DeferredComputedRefImpl {
1110
1114
  this.dep = undefined;
1111
1115
  this._dirty = true;
1112
1116
  this.__v_isRef = true;
1113
- this[_a] = true;
1117
+ this[_a$1] = true;
1114
1118
  let compareTarget;
1115
1119
  let hasCompareTarget = false;
1116
1120
  let scheduled = false;
@@ -1157,7 +1161,7 @@ class DeferredComputedRefImpl {
1157
1161
  return toRaw(this)._get();
1158
1162
  }
1159
1163
  }
1160
- _a = "__v_isReadonly" /* IS_READONLY */;
1164
+ _a$1 = "__v_isReadonly" /* ReactiveFlags.IS_READONLY */;
1161
1165
  function deferredComputed(getter) {
1162
1166
  return new DeferredComputedRefImpl(getter);
1163
1167
  }