@vue/reactivity 3.6.0-beta.4 → 3.6.0-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,18 +1,28 @@
1
1
  /**
2
- * @vue/reactivity v3.6.0-beta.4
3
- * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
- * @license MIT
5
- **/
6
- // @__NO_SIDE_EFFECTS__
2
+ * @vue/reactivity v3.6.0-beta.6
3
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
+ * @license MIT
5
+ **/
6
+ //#region packages/shared/src/makeMap.ts
7
+ /**
8
+ * Make a map and return a function for checking if a key
9
+ * is in that map.
10
+ * IMPORTANT: all calls of this function must be prefixed with
11
+ * \/\*#\_\_PURE\_\_\*\/
12
+ * So that they can be tree-shaken if necessary.
13
+ */
14
+ /* @__NO_SIDE_EFFECTS__ */
7
15
  function makeMap(str) {
8
- const map = /* @__PURE__ */ Object.create(null);
9
- for (const key of str.split(",")) map[key] = 1;
10
- return (val) => val in map;
16
+ const map = Object.create(null);
17
+ for (const key of str.split(",")) map[key] = 1;
18
+ return (val) => val in map;
11
19
  }
12
20
 
13
- const EMPTY_OBJ = Object.freeze({}) ;
14
- const NOOP = () => {
15
- };
21
+ //#endregion
22
+ //#region packages/shared/src/general.ts
23
+ const EMPTY_OBJ = Object.freeze({});
24
+ const EMPTY_ARR = Object.freeze([]);
25
+ const NOOP = () => {};
16
26
  const extend = Object.assign;
17
27
  const hasOwnProperty$1 = Object.prototype.hasOwnProperty;
18
28
  const hasOwn = (val, key) => hasOwnProperty$1.call(val, key);
@@ -26,44 +36,109 @@ const isObject = (val) => val !== null && typeof val === "object";
26
36
  const objectToString = Object.prototype.toString;
27
37
  const toTypeString = (value) => objectToString.call(value);
28
38
  const toRawType = (value) => {
29
- return toTypeString(value).slice(8, -1);
39
+ return toTypeString(value).slice(8, -1);
30
40
  };
31
41
  const isPlainObject = (val) => toTypeString(val) === "[object Object]";
32
42
  const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key;
33
43
  const cacheStringFunction = (fn) => {
34
- const cache = /* @__PURE__ */ Object.create(null);
35
- return ((str) => {
36
- const hit = cache[str];
37
- return hit || (cache[str] = fn(str));
38
- });
44
+ const cache = Object.create(null);
45
+ return ((str) => {
46
+ return cache[str] || (cache[str] = fn(str));
47
+ });
39
48
  };
49
+ const camelizeRE = /-(\w)/g;
50
+ const camelizeReplacer = (_, c) => c ? c.toUpperCase() : "";
51
+ /**
52
+ * @private
53
+ */
54
+ const camelize = cacheStringFunction((str) => str.replace(camelizeRE, camelizeReplacer));
55
+ const hyphenateRE = /\B([A-Z])/g;
56
+ /**
57
+ * @private
58
+ */
59
+ const hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, "-$1").toLowerCase());
60
+ /**
61
+ * @private
62
+ */
40
63
  const capitalize = cacheStringFunction((str) => {
41
- return str.charAt(0).toUpperCase() + str.slice(1);
64
+ return str.charAt(0).toUpperCase() + str.slice(1);
65
+ });
66
+ /**
67
+ * @private
68
+ */
69
+ const toHandlerKey = cacheStringFunction((str) => {
70
+ return str ? `on${capitalize(str)}` : ``;
42
71
  });
43
72
  const hasChanged = (value, oldValue) => !Object.is(value, oldValue);
44
73
  const def = (obj, key, value, writable = false) => {
45
- Object.defineProperty(obj, key, {
46
- configurable: true,
47
- enumerable: false,
48
- writable,
49
- value
50
- });
74
+ Object.defineProperty(obj, key, {
75
+ configurable: true,
76
+ enumerable: false,
77
+ writable,
78
+ value
79
+ });
51
80
  };
52
81
 
82
+ //#endregion
83
+ //#region packages/reactivity/src/debug.ts
84
+ const triggerEventInfos = [];
85
+ function onTrack(sub, debugInfo) {
86
+ if (sub.onTrack) sub.onTrack(extend({ effect: sub }, debugInfo));
87
+ }
88
+ function onTrigger(sub) {
89
+ if (sub.onTrigger) {
90
+ const debugInfo = triggerEventInfos[triggerEventInfos.length - 1];
91
+ sub.onTrigger(extend({ effect: sub }, debugInfo));
92
+ }
93
+ }
94
+ function setupOnTrigger(target) {
95
+ Object.defineProperty(target.prototype, "onTrigger", {
96
+ get() {
97
+ return this._onTrigger;
98
+ },
99
+ set(val) {
100
+ if (val && !this._onTrigger) setupFlagsHandler(this);
101
+ this._onTrigger = val;
102
+ }
103
+ });
104
+ }
105
+ function setupFlagsHandler(target) {
106
+ target._flags = target.flags;
107
+ Object.defineProperty(target, "flags", {
108
+ get() {
109
+ return target._flags;
110
+ },
111
+ set(value) {
112
+ if (!(target._flags & 48) && !!(value & 48)) onTrigger(this);
113
+ target._flags = value;
114
+ }
115
+ });
116
+ }
117
+
118
+ //#endregion
119
+ //#region packages/reactivity/src/warning.ts
53
120
  function warn(msg, ...args) {
54
- console.warn(`[Vue warn] ${msg}`, ...args);
121
+ console.warn(`[Vue warn] ${msg}`, ...args);
55
122
  }
56
123
 
57
- var ReactiveFlags$1 = /* @__PURE__ */ ((ReactiveFlags2) => {
58
- ReactiveFlags2[ReactiveFlags2["None"] = 0] = "None";
59
- ReactiveFlags2[ReactiveFlags2["Mutable"] = 1] = "Mutable";
60
- ReactiveFlags2[ReactiveFlags2["Watching"] = 2] = "Watching";
61
- ReactiveFlags2[ReactiveFlags2["RecursedCheck"] = 4] = "RecursedCheck";
62
- ReactiveFlags2[ReactiveFlags2["Recursed"] = 8] = "Recursed";
63
- ReactiveFlags2[ReactiveFlags2["Dirty"] = 16] = "Dirty";
64
- ReactiveFlags2[ReactiveFlags2["Pending"] = 32] = "Pending";
65
- return ReactiveFlags2;
66
- })(ReactiveFlags$1 || {});
124
+ //#endregion
125
+ //#region packages/reactivity/src/system.ts
126
+ const ReactiveFlags$1 = {
127
+ "None": 0,
128
+ "0": "None",
129
+ "Mutable": 1,
130
+ "1": "Mutable",
131
+ "Watching": 2,
132
+ "2": "Watching",
133
+ "RecursedCheck": 4,
134
+ "4": "RecursedCheck",
135
+ "Recursed": 8,
136
+ "8": "Recursed",
137
+ "Dirty": 16,
138
+ "16": "Dirty",
139
+ "Pending": 32,
140
+ "32": "Pending"
141
+ };
67
142
  const notifyBuffer = [];
68
143
  let batchDepth = 0;
69
144
  let activeSub = void 0;
@@ -71,2023 +146,1864 @@ let globalVersion = 0;
71
146
  let notifyIndex = 0;
72
147
  let notifyBufferLength = 0;
73
148
  function setActiveSub(sub) {
74
- try {
75
- return activeSub;
76
- } finally {
77
- activeSub = sub;
78
- }
149
+ try {
150
+ return activeSub;
151
+ } finally {
152
+ activeSub = sub;
153
+ }
79
154
  }
80
155
  function startBatch() {
81
- ++batchDepth;
156
+ ++batchDepth;
82
157
  }
83
158
  function endBatch() {
84
- if (!--batchDepth && notifyBufferLength) {
85
- flush();
86
- }
159
+ if (!--batchDepth && notifyBufferLength) flush();
87
160
  }
88
161
  function link(dep, sub) {
89
- const prevDep = sub.depsTail;
90
- if (prevDep !== void 0 && prevDep.dep === dep) {
91
- return;
92
- }
93
- const nextDep = prevDep !== void 0 ? prevDep.nextDep : sub.deps;
94
- if (nextDep !== void 0 && nextDep.dep === dep) {
95
- nextDep.version = globalVersion;
96
- sub.depsTail = nextDep;
97
- return;
98
- }
99
- const prevSub = dep.subsTail;
100
- if (prevSub !== void 0 && prevSub.version === globalVersion && prevSub.sub === sub) {
101
- return;
102
- }
103
- const newLink = sub.depsTail = dep.subsTail = {
104
- version: globalVersion,
105
- dep,
106
- sub,
107
- prevDep,
108
- nextDep,
109
- prevSub,
110
- nextSub: void 0
111
- };
112
- if (nextDep !== void 0) {
113
- nextDep.prevDep = newLink;
114
- }
115
- if (prevDep !== void 0) {
116
- prevDep.nextDep = newLink;
117
- } else {
118
- sub.deps = newLink;
119
- }
120
- if (prevSub !== void 0) {
121
- prevSub.nextSub = newLink;
122
- } else {
123
- dep.subs = newLink;
124
- }
125
- }
126
- function unlink(link2, sub = link2.sub) {
127
- const dep = link2.dep;
128
- const prevDep = link2.prevDep;
129
- const nextDep = link2.nextDep;
130
- const nextSub = link2.nextSub;
131
- const prevSub = link2.prevSub;
132
- if (nextDep !== void 0) {
133
- nextDep.prevDep = prevDep;
134
- } else {
135
- sub.depsTail = prevDep;
136
- }
137
- if (prevDep !== void 0) {
138
- prevDep.nextDep = nextDep;
139
- } else {
140
- sub.deps = nextDep;
141
- }
142
- if (nextSub !== void 0) {
143
- nextSub.prevSub = prevSub;
144
- } else {
145
- dep.subsTail = prevSub;
146
- }
147
- if (prevSub !== void 0) {
148
- prevSub.nextSub = nextSub;
149
- } else if ((dep.subs = nextSub) === void 0) {
150
- let toRemove = dep.deps;
151
- if (toRemove !== void 0) {
152
- do {
153
- toRemove = unlink(toRemove, dep);
154
- } while (toRemove !== void 0);
155
- dep.flags |= 16 /* Dirty */;
156
- }
157
- }
158
- return nextDep;
159
- }
160
- function propagate(link2) {
161
- let next = link2.nextSub;
162
- let stack;
163
- top: do {
164
- const sub = link2.sub;
165
- let flags = sub.flags;
166
- if (flags & (1 /* Mutable */ | 2 /* Watching */)) {
167
- if (!(flags & (4 /* RecursedCheck */ | 8 /* Recursed */ | 16 /* Dirty */ | 32 /* Pending */))) {
168
- sub.flags = flags | 32 /* Pending */;
169
- } else if (!(flags & (4 /* RecursedCheck */ | 8 /* Recursed */))) {
170
- flags = 0 /* None */;
171
- } else if (!(flags & 4 /* RecursedCheck */)) {
172
- sub.flags = flags & -9 /* Recursed */ | 32 /* Pending */;
173
- } else if (!(flags & (16 /* Dirty */ | 32 /* Pending */)) && isValidLink(link2, sub)) {
174
- sub.flags = flags | 8 /* Recursed */ | 32 /* Pending */;
175
- flags &= 1 /* Mutable */;
176
- } else {
177
- flags = 0 /* None */;
178
- }
179
- if (flags & 2 /* Watching */) {
180
- notifyBuffer[notifyBufferLength++] = sub;
181
- }
182
- if (flags & 1 /* Mutable */) {
183
- const subSubs = sub.subs;
184
- if (subSubs !== void 0) {
185
- link2 = subSubs;
186
- if (subSubs.nextSub !== void 0) {
187
- stack = { value: next, prev: stack };
188
- next = link2.nextSub;
189
- }
190
- continue;
191
- }
192
- }
193
- }
194
- if ((link2 = next) !== void 0) {
195
- next = link2.nextSub;
196
- continue;
197
- }
198
- while (stack !== void 0) {
199
- link2 = stack.value;
200
- stack = stack.prev;
201
- if (link2 !== void 0) {
202
- next = link2.nextSub;
203
- continue top;
204
- }
205
- }
206
- break;
207
- } while (true);
162
+ const prevDep = sub.depsTail;
163
+ if (prevDep !== void 0 && prevDep.dep === dep) return;
164
+ const nextDep = prevDep !== void 0 ? prevDep.nextDep : sub.deps;
165
+ if (nextDep !== void 0 && nextDep.dep === dep) {
166
+ nextDep.version = globalVersion;
167
+ sub.depsTail = nextDep;
168
+ return;
169
+ }
170
+ const prevSub = dep.subsTail;
171
+ if (prevSub !== void 0 && prevSub.version === globalVersion && prevSub.sub === sub) return;
172
+ const newLink = sub.depsTail = dep.subsTail = {
173
+ version: globalVersion,
174
+ dep,
175
+ sub,
176
+ prevDep,
177
+ nextDep,
178
+ prevSub,
179
+ nextSub: void 0
180
+ };
181
+ if (nextDep !== void 0) nextDep.prevDep = newLink;
182
+ if (prevDep !== void 0) prevDep.nextDep = newLink;
183
+ else sub.deps = newLink;
184
+ if (prevSub !== void 0) prevSub.nextSub = newLink;
185
+ else dep.subs = newLink;
186
+ }
187
+ function unlink(link, sub = link.sub) {
188
+ const dep = link.dep;
189
+ const prevDep = link.prevDep;
190
+ const nextDep = link.nextDep;
191
+ const nextSub = link.nextSub;
192
+ const prevSub = link.prevSub;
193
+ if (nextDep !== void 0) nextDep.prevDep = prevDep;
194
+ else sub.depsTail = prevDep;
195
+ if (prevDep !== void 0) prevDep.nextDep = nextDep;
196
+ else sub.deps = nextDep;
197
+ if (nextSub !== void 0) nextSub.prevSub = prevSub;
198
+ else dep.subsTail = prevSub;
199
+ if (prevSub !== void 0) prevSub.nextSub = nextSub;
200
+ else if ((dep.subs = nextSub) === void 0) {
201
+ let toRemove = dep.deps;
202
+ if (toRemove !== void 0) {
203
+ do
204
+ toRemove = unlink(toRemove, dep);
205
+ while (toRemove !== void 0);
206
+ dep.flags |= 16;
207
+ }
208
+ }
209
+ return nextDep;
210
+ }
211
+ function propagate(link) {
212
+ let next = link.nextSub;
213
+ let stack;
214
+ top: do {
215
+ const sub = link.sub;
216
+ let flags = sub.flags;
217
+ if (flags & 3) {
218
+ if (!(flags & 60)) sub.flags = flags | 32;
219
+ else if (!(flags & 12)) flags = 0;
220
+ else if (!(flags & 4)) sub.flags = flags & -9 | 32;
221
+ else if (!(flags & 48) && isValidLink(link, sub)) {
222
+ sub.flags = flags | 40;
223
+ flags &= 1;
224
+ } else flags = 0;
225
+ if (flags & 2) notifyBuffer[notifyBufferLength++] = sub;
226
+ if (flags & 1) {
227
+ const subSubs = sub.subs;
228
+ if (subSubs !== void 0) {
229
+ link = subSubs;
230
+ if (subSubs.nextSub !== void 0) {
231
+ stack = {
232
+ value: next,
233
+ prev: stack
234
+ };
235
+ next = link.nextSub;
236
+ }
237
+ continue;
238
+ }
239
+ }
240
+ }
241
+ if ((link = next) !== void 0) {
242
+ next = link.nextSub;
243
+ continue;
244
+ }
245
+ while (stack !== void 0) {
246
+ link = stack.value;
247
+ stack = stack.prev;
248
+ if (link !== void 0) {
249
+ next = link.nextSub;
250
+ continue top;
251
+ }
252
+ }
253
+ break;
254
+ } while (true);
208
255
  }
209
256
  function startTracking(sub) {
210
- ++globalVersion;
211
- sub.depsTail = void 0;
212
- sub.flags = sub.flags & -57 | 4 /* RecursedCheck */;
213
- return setActiveSub(sub);
257
+ ++globalVersion;
258
+ sub.depsTail = void 0;
259
+ sub.flags = sub.flags & -57 | 4;
260
+ return setActiveSub(sub);
214
261
  }
215
262
  function endTracking(sub, prevSub) {
216
- if (activeSub !== sub) {
217
- warn(
218
- "Active effect was not restored correctly - this is likely a Vue internal bug."
219
- );
220
- }
221
- activeSub = prevSub;
222
- const depsTail = sub.depsTail;
223
- let toRemove = depsTail !== void 0 ? depsTail.nextDep : sub.deps;
224
- while (toRemove !== void 0) {
225
- toRemove = unlink(toRemove, sub);
226
- }
227
- sub.flags &= -5 /* RecursedCheck */;
263
+ if (activeSub !== sub) warn("Active effect was not restored correctly - this is likely a Vue internal bug.");
264
+ activeSub = prevSub;
265
+ const depsTail = sub.depsTail;
266
+ let toRemove = depsTail !== void 0 ? depsTail.nextDep : sub.deps;
267
+ while (toRemove !== void 0) toRemove = unlink(toRemove, sub);
268
+ sub.flags &= -5;
228
269
  }
229
270
  function flush() {
230
- while (notifyIndex < notifyBufferLength) {
231
- const effect = notifyBuffer[notifyIndex];
232
- notifyBuffer[notifyIndex++] = void 0;
233
- effect.notify();
234
- }
235
- notifyIndex = 0;
236
- notifyBufferLength = 0;
237
- }
238
- function checkDirty(link2, sub) {
239
- let stack;
240
- let checkDepth = 0;
241
- top: do {
242
- const dep = link2.dep;
243
- const depFlags = dep.flags;
244
- let dirty = false;
245
- if (sub.flags & 16 /* Dirty */) {
246
- dirty = true;
247
- } else if ((depFlags & (1 /* Mutable */ | 16 /* Dirty */)) === (1 /* Mutable */ | 16 /* Dirty */)) {
248
- if (dep.update()) {
249
- const subs = dep.subs;
250
- if (subs.nextSub !== void 0) {
251
- shallowPropagate(subs);
252
- }
253
- dirty = true;
254
- }
255
- } else if ((depFlags & (1 /* Mutable */ | 32 /* Pending */)) === (1 /* Mutable */ | 32 /* Pending */)) {
256
- if (link2.nextSub !== void 0 || link2.prevSub !== void 0) {
257
- stack = { value: link2, prev: stack };
258
- }
259
- link2 = dep.deps;
260
- sub = dep;
261
- ++checkDepth;
262
- continue;
263
- }
264
- if (!dirty && link2.nextDep !== void 0) {
265
- link2 = link2.nextDep;
266
- continue;
267
- }
268
- while (checkDepth) {
269
- --checkDepth;
270
- const firstSub = sub.subs;
271
- const hasMultipleSubs = firstSub.nextSub !== void 0;
272
- if (hasMultipleSubs) {
273
- link2 = stack.value;
274
- stack = stack.prev;
275
- } else {
276
- link2 = firstSub;
277
- }
278
- if (dirty) {
279
- if (sub.update()) {
280
- if (hasMultipleSubs) {
281
- shallowPropagate(firstSub);
282
- }
283
- sub = link2.sub;
284
- continue;
285
- }
286
- } else {
287
- sub.flags &= -33 /* Pending */;
288
- }
289
- sub = link2.sub;
290
- if (link2.nextDep !== void 0) {
291
- link2 = link2.nextDep;
292
- continue top;
293
- }
294
- dirty = false;
295
- }
296
- return dirty;
297
- } while (true);
298
- }
299
- function shallowPropagate(link2) {
300
- do {
301
- const sub = link2.sub;
302
- const nextSub = link2.nextSub;
303
- const subFlags = sub.flags;
304
- if ((subFlags & (32 /* Pending */ | 16 /* Dirty */)) === 32 /* Pending */) {
305
- sub.flags = subFlags | 16 /* Dirty */;
306
- }
307
- link2 = nextSub;
308
- } while (link2 !== void 0);
271
+ while (notifyIndex < notifyBufferLength) {
272
+ const effect = notifyBuffer[notifyIndex];
273
+ notifyBuffer[notifyIndex++] = void 0;
274
+ effect.notify();
275
+ }
276
+ notifyIndex = 0;
277
+ notifyBufferLength = 0;
278
+ }
279
+ function checkDirty(link, sub) {
280
+ let stack;
281
+ let checkDepth = 0;
282
+ top: do {
283
+ const dep = link.dep;
284
+ const depFlags = dep.flags;
285
+ let dirty = false;
286
+ if (sub.flags & 16) dirty = true;
287
+ else if ((depFlags & 17) === 17) {
288
+ if (dep.update()) {
289
+ const subs = dep.subs;
290
+ if (subs.nextSub !== void 0) shallowPropagate(subs);
291
+ dirty = true;
292
+ }
293
+ } else if ((depFlags & 33) === 33) {
294
+ if (link.nextSub !== void 0 || link.prevSub !== void 0) stack = {
295
+ value: link,
296
+ prev: stack
297
+ };
298
+ link = dep.deps;
299
+ sub = dep;
300
+ ++checkDepth;
301
+ continue;
302
+ }
303
+ if (!dirty && link.nextDep !== void 0) {
304
+ link = link.nextDep;
305
+ continue;
306
+ }
307
+ while (checkDepth) {
308
+ --checkDepth;
309
+ const firstSub = sub.subs;
310
+ const hasMultipleSubs = firstSub.nextSub !== void 0;
311
+ if (hasMultipleSubs) {
312
+ link = stack.value;
313
+ stack = stack.prev;
314
+ } else link = firstSub;
315
+ if (dirty) {
316
+ if (sub.update()) {
317
+ if (hasMultipleSubs) shallowPropagate(firstSub);
318
+ sub = link.sub;
319
+ continue;
320
+ }
321
+ } else sub.flags &= -33;
322
+ sub = link.sub;
323
+ if (link.nextDep !== void 0) {
324
+ link = link.nextDep;
325
+ continue top;
326
+ }
327
+ dirty = false;
328
+ }
329
+ return dirty;
330
+ } while (true);
331
+ }
332
+ function shallowPropagate(link) {
333
+ do {
334
+ const sub = link.sub;
335
+ const nextSub = link.nextSub;
336
+ const subFlags = sub.flags;
337
+ if ((subFlags & 48) === 32) sub.flags = subFlags | 16;
338
+ link = nextSub;
339
+ } while (link !== void 0);
309
340
  }
310
341
  function isValidLink(checkLink, sub) {
311
- let link2 = sub.depsTail;
312
- while (link2 !== void 0) {
313
- if (link2 === checkLink) {
314
- return true;
315
- }
316
- link2 = link2.prevDep;
317
- }
318
- return false;
319
- }
320
-
321
- const triggerEventInfos = [];
322
- function onTrack(sub, debugInfo) {
323
- if (sub.onTrack) {
324
- sub.onTrack(
325
- extend(
326
- {
327
- effect: sub
328
- },
329
- debugInfo
330
- )
331
- );
332
- }
333
- }
334
- function onTrigger(sub) {
335
- if (sub.onTrigger) {
336
- const debugInfo = triggerEventInfos[triggerEventInfos.length - 1];
337
- sub.onTrigger(
338
- extend(
339
- {
340
- effect: sub
341
- },
342
- debugInfo
343
- )
344
- );
345
- }
346
- }
347
- function setupOnTrigger(target) {
348
- Object.defineProperty(target.prototype, "onTrigger", {
349
- get() {
350
- return this._onTrigger;
351
- },
352
- set(val) {
353
- if (val && !this._onTrigger) setupFlagsHandler(this);
354
- this._onTrigger = val;
355
- }
356
- });
357
- }
358
- function setupFlagsHandler(target) {
359
- target._flags = target.flags;
360
- Object.defineProperty(target, "flags", {
361
- get() {
362
- return target._flags;
363
- },
364
- set(value) {
365
- if (!(target._flags & (ReactiveFlags$1.Dirty | ReactiveFlags$1.Pending)) && !!(value & (ReactiveFlags$1.Dirty | ReactiveFlags$1.Pending))) {
366
- onTrigger(this);
367
- }
368
- target._flags = value;
369
- }
370
- });
342
+ let link = sub.depsTail;
343
+ while (link !== void 0) {
344
+ if (link === checkLink) return true;
345
+ link = link.prevDep;
346
+ }
347
+ return false;
371
348
  }
372
349
 
373
- class Dep {
374
- constructor(map, key) {
375
- this.map = map;
376
- this.key = key;
377
- this._subs = void 0;
378
- this.subsTail = void 0;
379
- this.flags = ReactiveFlags$1.None;
380
- }
381
- get subs() {
382
- return this._subs;
383
- }
384
- set subs(value) {
385
- this._subs = value;
386
- if (value === void 0) {
387
- this.map.delete(this.key);
388
- }
389
- }
390
- }
350
+ //#endregion
351
+ //#region packages/reactivity/src/dep.ts
352
+ var Dep = class {
353
+ constructor(map, key) {
354
+ this.map = map;
355
+ this.key = key;
356
+ this._subs = void 0;
357
+ this.subsTail = void 0;
358
+ this.flags = 0;
359
+ }
360
+ get subs() {
361
+ return this._subs;
362
+ }
363
+ set subs(value) {
364
+ this._subs = value;
365
+ if (value === void 0) this.map.delete(this.key);
366
+ }
367
+ };
391
368
  const targetMap = /* @__PURE__ */ new WeakMap();
392
- const ITERATE_KEY = /* @__PURE__ */ Symbol(
393
- "Object iterate"
394
- );
395
- const MAP_KEY_ITERATE_KEY = /* @__PURE__ */ Symbol(
396
- "Map keys iterate"
397
- );
398
- const ARRAY_ITERATE_KEY = /* @__PURE__ */ Symbol(
399
- "Array iterate"
400
- );
369
+ const ITERATE_KEY = Symbol("Object iterate");
370
+ const MAP_KEY_ITERATE_KEY = Symbol("Map keys iterate");
371
+ const ARRAY_ITERATE_KEY = Symbol("Array iterate");
372
+ /**
373
+ * Tracks access to a reactive property.
374
+ *
375
+ * This will check which effect is running at the moment and record it as dep
376
+ * which records all effects that depend on the reactive property.
377
+ *
378
+ * @param target - Object holding the reactive property.
379
+ * @param type - Defines the type of access to the reactive property.
380
+ * @param key - Identifier of the reactive property to track.
381
+ */
401
382
  function track(target, type, key) {
402
- if (activeSub !== void 0) {
403
- let depsMap = targetMap.get(target);
404
- if (!depsMap) {
405
- targetMap.set(target, depsMap = /* @__PURE__ */ new Map());
406
- }
407
- let dep = depsMap.get(key);
408
- if (!dep) {
409
- depsMap.set(key, dep = new Dep(depsMap, key));
410
- }
411
- {
412
- onTrack(activeSub, {
413
- target,
414
- type,
415
- key
416
- });
417
- }
418
- link(dep, activeSub);
419
- }
383
+ if (activeSub !== void 0) {
384
+ let depsMap = targetMap.get(target);
385
+ if (!depsMap) targetMap.set(target, depsMap = /* @__PURE__ */ new Map());
386
+ let dep = depsMap.get(key);
387
+ if (!dep) depsMap.set(key, dep = new Dep(depsMap, key));
388
+ onTrack(activeSub, {
389
+ target,
390
+ type,
391
+ key
392
+ });
393
+ link(dep, activeSub);
394
+ }
420
395
  }
396
+ /**
397
+ * Finds all deps associated with the target (or a specific property) and
398
+ * triggers the effects stored within.
399
+ *
400
+ * @param target - The reactive object.
401
+ * @param type - Defines the type of the operation that needs to trigger effects.
402
+ * @param key - Can be used to target a specific reactive property in the target object.
403
+ */
421
404
  function trigger(target, type, key, newValue, oldValue, oldTarget) {
422
- const depsMap = targetMap.get(target);
423
- if (!depsMap) {
424
- return;
425
- }
426
- const run = (dep) => {
427
- if (dep !== void 0 && dep.subs !== void 0) {
428
- {
429
- triggerEventInfos.push({
430
- target,
431
- type,
432
- key,
433
- newValue,
434
- oldValue,
435
- oldTarget
436
- });
437
- }
438
- propagate(dep.subs);
439
- shallowPropagate(dep.subs);
440
- {
441
- triggerEventInfos.pop();
442
- }
443
- }
444
- };
445
- startBatch();
446
- if (type === "clear") {
447
- depsMap.forEach(run);
448
- } else {
449
- const targetIsArray = isArray(target);
450
- const isArrayIndex = targetIsArray && isIntegerKey(key);
451
- if (targetIsArray && key === "length") {
452
- const newLength = Number(newValue);
453
- depsMap.forEach((dep, key2) => {
454
- if (key2 === "length" || key2 === ARRAY_ITERATE_KEY || !isSymbol(key2) && key2 >= newLength) {
455
- run(dep);
456
- }
457
- });
458
- } else {
459
- if (key !== void 0 || depsMap.has(void 0)) {
460
- run(depsMap.get(key));
461
- }
462
- if (isArrayIndex) {
463
- run(depsMap.get(ARRAY_ITERATE_KEY));
464
- }
465
- switch (type) {
466
- case "add":
467
- if (!targetIsArray) {
468
- run(depsMap.get(ITERATE_KEY));
469
- if (isMap(target)) {
470
- run(depsMap.get(MAP_KEY_ITERATE_KEY));
471
- }
472
- } else if (isArrayIndex) {
473
- run(depsMap.get("length"));
474
- }
475
- break;
476
- case "delete":
477
- if (!targetIsArray) {
478
- run(depsMap.get(ITERATE_KEY));
479
- if (isMap(target)) {
480
- run(depsMap.get(MAP_KEY_ITERATE_KEY));
481
- }
482
- }
483
- break;
484
- case "set":
485
- if (isMap(target)) {
486
- run(depsMap.get(ITERATE_KEY));
487
- }
488
- break;
489
- }
490
- }
491
- }
492
- endBatch();
405
+ const depsMap = targetMap.get(target);
406
+ if (!depsMap) return;
407
+ const run = (dep) => {
408
+ if (dep !== void 0 && dep.subs !== void 0) {
409
+ triggerEventInfos.push({
410
+ target,
411
+ type,
412
+ key,
413
+ newValue,
414
+ oldValue,
415
+ oldTarget
416
+ });
417
+ propagate(dep.subs);
418
+ shallowPropagate(dep.subs);
419
+ triggerEventInfos.pop();
420
+ }
421
+ };
422
+ startBatch();
423
+ if (type === "clear") depsMap.forEach(run);
424
+ else {
425
+ const targetIsArray = isArray(target);
426
+ const isArrayIndex = targetIsArray && isIntegerKey(key);
427
+ if (targetIsArray && key === "length") {
428
+ const newLength = Number(newValue);
429
+ depsMap.forEach((dep, key) => {
430
+ if (key === "length" || key === ARRAY_ITERATE_KEY || !isSymbol(key) && key >= newLength) run(dep);
431
+ });
432
+ } else {
433
+ if (key !== void 0 || depsMap.has(void 0)) run(depsMap.get(key));
434
+ if (isArrayIndex) run(depsMap.get(ARRAY_ITERATE_KEY));
435
+ switch (type) {
436
+ case "add":
437
+ if (!targetIsArray) {
438
+ run(depsMap.get(ITERATE_KEY));
439
+ if (isMap(target)) run(depsMap.get(MAP_KEY_ITERATE_KEY));
440
+ } else if (isArrayIndex) run(depsMap.get("length"));
441
+ break;
442
+ case "delete":
443
+ if (!targetIsArray) {
444
+ run(depsMap.get(ITERATE_KEY));
445
+ if (isMap(target)) run(depsMap.get(MAP_KEY_ITERATE_KEY));
446
+ }
447
+ break;
448
+ case "set":
449
+ if (isMap(target)) run(depsMap.get(ITERATE_KEY));
450
+ break;
451
+ }
452
+ }
453
+ }
454
+ endBatch();
493
455
  }
494
456
  function getDepFromReactive(object, key) {
495
- const depMap = targetMap.get(object);
496
- return depMap && depMap.get(key);
457
+ const depMap = targetMap.get(object);
458
+ return depMap && depMap.get(key);
497
459
  }
498
460
 
461
+ //#endregion
462
+ //#region packages/reactivity/src/arrayInstrumentations.ts
463
+ /**
464
+ * Track array iteration and return:
465
+ * - if input is reactive: a cloned raw array with reactive values
466
+ * - if input is non-reactive or shallowReactive: the original raw array
467
+ */
499
468
  function reactiveReadArray(array) {
500
- const raw = toRaw(array);
501
- if (raw === array) return raw;
502
- track(raw, "iterate", ARRAY_ITERATE_KEY);
503
- return isShallow(array) ? raw : raw.map(toReactive);
469
+ const raw = /* @__PURE__ */ toRaw(array);
470
+ if (raw === array) return raw;
471
+ track(raw, "iterate", ARRAY_ITERATE_KEY);
472
+ return /* @__PURE__ */ isShallow(array) ? raw : raw.map(toReactive);
504
473
  }
474
+ /**
475
+ * Track array iteration and return raw array
476
+ */
505
477
  function shallowReadArray(arr) {
506
- track(arr = toRaw(arr), "iterate", ARRAY_ITERATE_KEY);
507
- return arr;
478
+ track(arr = /* @__PURE__ */ toRaw(arr), "iterate", ARRAY_ITERATE_KEY);
479
+ return arr;
508
480
  }
509
481
  function toWrapped(target, item) {
510
- if (isReadonly(target)) {
511
- return isReactive(target) ? toReadonly(toReactive(item)) : toReadonly(item);
512
- }
513
- return toReactive(item);
482
+ if (/* @__PURE__ */ isReadonly(target)) return /* @__PURE__ */ isReactive(target) ? toReadonly(toReactive(item)) : toReadonly(item);
483
+ return toReactive(item);
514
484
  }
515
485
  const arrayInstrumentations = {
516
- __proto__: null,
517
- [Symbol.iterator]() {
518
- return iterator(this, Symbol.iterator, (item) => toWrapped(this, item));
519
- },
520
- concat(...args) {
521
- return reactiveReadArray(this).concat(
522
- ...args.map((x) => isArray(x) ? reactiveReadArray(x) : x)
523
- );
524
- },
525
- entries() {
526
- return iterator(this, "entries", (value) => {
527
- value[1] = toWrapped(this, value[1]);
528
- return value;
529
- });
530
- },
531
- every(fn, thisArg) {
532
- return apply(this, "every", fn, thisArg, void 0, arguments);
533
- },
534
- filter(fn, thisArg) {
535
- return apply(
536
- this,
537
- "filter",
538
- fn,
539
- thisArg,
540
- (v) => v.map((item) => toWrapped(this, item)),
541
- arguments
542
- );
543
- },
544
- find(fn, thisArg) {
545
- return apply(
546
- this,
547
- "find",
548
- fn,
549
- thisArg,
550
- (item) => toWrapped(this, item),
551
- arguments
552
- );
553
- },
554
- findIndex(fn, thisArg) {
555
- return apply(this, "findIndex", fn, thisArg, void 0, arguments);
556
- },
557
- findLast(fn, thisArg) {
558
- return apply(
559
- this,
560
- "findLast",
561
- fn,
562
- thisArg,
563
- (item) => toWrapped(this, item),
564
- arguments
565
- );
566
- },
567
- findLastIndex(fn, thisArg) {
568
- return apply(this, "findLastIndex", fn, thisArg, void 0, arguments);
569
- },
570
- // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement
571
- forEach(fn, thisArg) {
572
- return apply(this, "forEach", fn, thisArg, void 0, arguments);
573
- },
574
- includes(...args) {
575
- return searchProxy(this, "includes", args);
576
- },
577
- indexOf(...args) {
578
- return searchProxy(this, "indexOf", args);
579
- },
580
- join(separator) {
581
- return reactiveReadArray(this).join(separator);
582
- },
583
- // keys() iterator only reads `length`, no optimization required
584
- lastIndexOf(...args) {
585
- return searchProxy(this, "lastIndexOf", args);
586
- },
587
- map(fn, thisArg) {
588
- return apply(this, "map", fn, thisArg, void 0, arguments);
589
- },
590
- pop() {
591
- return noTracking(this, "pop");
592
- },
593
- push(...args) {
594
- return noTracking(this, "push", args);
595
- },
596
- reduce(fn, ...args) {
597
- return reduce(this, "reduce", fn, args);
598
- },
599
- reduceRight(fn, ...args) {
600
- return reduce(this, "reduceRight", fn, args);
601
- },
602
- shift() {
603
- return noTracking(this, "shift");
604
- },
605
- // slice could use ARRAY_ITERATE but also seems to beg for range tracking
606
- some(fn, thisArg) {
607
- return apply(this, "some", fn, thisArg, void 0, arguments);
608
- },
609
- splice(...args) {
610
- return noTracking(this, "splice", args);
611
- },
612
- toReversed() {
613
- return reactiveReadArray(this).toReversed();
614
- },
615
- toSorted(comparer) {
616
- return reactiveReadArray(this).toSorted(comparer);
617
- },
618
- toSpliced(...args) {
619
- return reactiveReadArray(this).toSpliced(...args);
620
- },
621
- unshift(...args) {
622
- return noTracking(this, "unshift", args);
623
- },
624
- values() {
625
- return iterator(this, "values", (item) => toWrapped(this, item));
626
- }
486
+ __proto__: null,
487
+ [Symbol.iterator]() {
488
+ return iterator(this, Symbol.iterator, (item) => toWrapped(this, item));
489
+ },
490
+ concat(...args) {
491
+ return reactiveReadArray(this).concat(...args.map((x) => isArray(x) ? reactiveReadArray(x) : x));
492
+ },
493
+ entries() {
494
+ return iterator(this, "entries", (value) => {
495
+ value[1] = toWrapped(this, value[1]);
496
+ return value;
497
+ });
498
+ },
499
+ every(fn, thisArg) {
500
+ return apply(this, "every", fn, thisArg, void 0, arguments);
501
+ },
502
+ filter(fn, thisArg) {
503
+ return apply(this, "filter", fn, thisArg, (v) => v.map((item) => toWrapped(this, item)), arguments);
504
+ },
505
+ find(fn, thisArg) {
506
+ return apply(this, "find", fn, thisArg, (item) => toWrapped(this, item), arguments);
507
+ },
508
+ findIndex(fn, thisArg) {
509
+ return apply(this, "findIndex", fn, thisArg, void 0, arguments);
510
+ },
511
+ findLast(fn, thisArg) {
512
+ return apply(this, "findLast", fn, thisArg, (item) => toWrapped(this, item), arguments);
513
+ },
514
+ findLastIndex(fn, thisArg) {
515
+ return apply(this, "findLastIndex", fn, thisArg, void 0, arguments);
516
+ },
517
+ forEach(fn, thisArg) {
518
+ return apply(this, "forEach", fn, thisArg, void 0, arguments);
519
+ },
520
+ includes(...args) {
521
+ return searchProxy(this, "includes", args);
522
+ },
523
+ indexOf(...args) {
524
+ return searchProxy(this, "indexOf", args);
525
+ },
526
+ join(separator) {
527
+ return reactiveReadArray(this).join(separator);
528
+ },
529
+ lastIndexOf(...args) {
530
+ return searchProxy(this, "lastIndexOf", args);
531
+ },
532
+ map(fn, thisArg) {
533
+ return apply(this, "map", fn, thisArg, void 0, arguments);
534
+ },
535
+ pop() {
536
+ return noTracking(this, "pop");
537
+ },
538
+ push(...args) {
539
+ return noTracking(this, "push", args);
540
+ },
541
+ reduce(fn, ...args) {
542
+ return reduce(this, "reduce", fn, args);
543
+ },
544
+ reduceRight(fn, ...args) {
545
+ return reduce(this, "reduceRight", fn, args);
546
+ },
547
+ shift() {
548
+ return noTracking(this, "shift");
549
+ },
550
+ some(fn, thisArg) {
551
+ return apply(this, "some", fn, thisArg, void 0, arguments);
552
+ },
553
+ splice(...args) {
554
+ return noTracking(this, "splice", args);
555
+ },
556
+ toReversed() {
557
+ return reactiveReadArray(this).toReversed();
558
+ },
559
+ toSorted(comparer) {
560
+ return reactiveReadArray(this).toSorted(comparer);
561
+ },
562
+ toSpliced(...args) {
563
+ return reactiveReadArray(this).toSpliced(...args);
564
+ },
565
+ unshift(...args) {
566
+ return noTracking(this, "unshift", args);
567
+ },
568
+ values() {
569
+ return iterator(this, "values", (item) => toWrapped(this, item));
570
+ }
627
571
  };
628
572
  function iterator(self, method, wrapValue) {
629
- const arr = shallowReadArray(self);
630
- const iter = arr[method]();
631
- if (arr !== self && !isShallow(self)) {
632
- iter._next = iter.next;
633
- iter.next = () => {
634
- const result = iter._next();
635
- if (!result.done) {
636
- result.value = wrapValue(result.value);
637
- }
638
- return result;
639
- };
640
- }
641
- return iter;
573
+ const arr = shallowReadArray(self);
574
+ const iter = arr[method]();
575
+ if (arr !== self && !/* @__PURE__ */ isShallow(self)) {
576
+ iter._next = iter.next;
577
+ iter.next = () => {
578
+ const result = iter._next();
579
+ if (!result.done) result.value = wrapValue(result.value);
580
+ return result;
581
+ };
582
+ }
583
+ return iter;
642
584
  }
643
585
  const arrayProto = Array.prototype;
644
586
  function apply(self, method, fn, thisArg, wrappedRetFn, args) {
645
- const arr = shallowReadArray(self);
646
- const needsWrap = arr !== self && !isShallow(self);
647
- const methodFn = arr[method];
648
- if (methodFn !== arrayProto[method]) {
649
- const result2 = methodFn.apply(self, args);
650
- return needsWrap ? toReactive(result2) : result2;
651
- }
652
- let wrappedFn = fn;
653
- if (arr !== self) {
654
- if (needsWrap) {
655
- wrappedFn = function(item, index) {
656
- return fn.call(this, toWrapped(self, item), index, self);
657
- };
658
- } else if (fn.length > 2) {
659
- wrappedFn = function(item, index) {
660
- return fn.call(this, item, index, self);
661
- };
662
- }
663
- }
664
- const result = methodFn.call(arr, wrappedFn, thisArg);
665
- return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result;
587
+ const arr = shallowReadArray(self);
588
+ const needsWrap = arr !== self && !/* @__PURE__ */ isShallow(self);
589
+ const methodFn = arr[method];
590
+ if (methodFn !== arrayProto[method]) {
591
+ const result = methodFn.apply(self, args);
592
+ return needsWrap ? toReactive(result) : result;
593
+ }
594
+ let wrappedFn = fn;
595
+ if (arr !== self) {
596
+ if (needsWrap) wrappedFn = function(item, index) {
597
+ return fn.call(this, toWrapped(self, item), index, self);
598
+ };
599
+ else if (fn.length > 2) wrappedFn = function(item, index) {
600
+ return fn.call(this, item, index, self);
601
+ };
602
+ }
603
+ const result = methodFn.call(arr, wrappedFn, thisArg);
604
+ return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result;
666
605
  }
667
606
  function reduce(self, method, fn, args) {
668
- const arr = shallowReadArray(self);
669
- let wrappedFn = fn;
670
- if (arr !== self) {
671
- if (!isShallow(self)) {
672
- wrappedFn = function(acc, item, index) {
673
- return fn.call(this, acc, toWrapped(self, item), index, self);
674
- };
675
- } else if (fn.length > 3) {
676
- wrappedFn = function(acc, item, index) {
677
- return fn.call(this, acc, item, index, self);
678
- };
679
- }
680
- }
681
- return arr[method](wrappedFn, ...args);
607
+ const arr = shallowReadArray(self);
608
+ let wrappedFn = fn;
609
+ if (arr !== self) {
610
+ if (!/* @__PURE__ */ isShallow(self)) wrappedFn = function(acc, item, index) {
611
+ return fn.call(this, acc, toWrapped(self, item), index, self);
612
+ };
613
+ else if (fn.length > 3) wrappedFn = function(acc, item, index) {
614
+ return fn.call(this, acc, item, index, self);
615
+ };
616
+ }
617
+ return arr[method](wrappedFn, ...args);
682
618
  }
683
619
  function searchProxy(self, method, args) {
684
- const arr = toRaw(self);
685
- track(arr, "iterate", ARRAY_ITERATE_KEY);
686
- const res = arr[method](...args);
687
- if ((res === -1 || res === false) && isProxy(args[0])) {
688
- args[0] = toRaw(args[0]);
689
- return arr[method](...args);
690
- }
691
- return res;
620
+ const arr = /* @__PURE__ */ toRaw(self);
621
+ track(arr, "iterate", ARRAY_ITERATE_KEY);
622
+ const res = arr[method](...args);
623
+ if ((res === -1 || res === false) && /* @__PURE__ */ isProxy(args[0])) {
624
+ args[0] = /* @__PURE__ */ toRaw(args[0]);
625
+ return arr[method](...args);
626
+ }
627
+ return res;
692
628
  }
693
629
  function noTracking(self, method, args = []) {
694
- startBatch();
695
- const prevSub = setActiveSub();
696
- const res = toRaw(self)[method].apply(self, args);
697
- setActiveSub(prevSub);
698
- endBatch();
699
- return res;
630
+ startBatch();
631
+ const prevSub = setActiveSub();
632
+ const res = (/* @__PURE__ */ toRaw(self))[method].apply(self, args);
633
+ setActiveSub(prevSub);
634
+ endBatch();
635
+ return res;
700
636
  }
701
637
 
638
+ //#endregion
639
+ //#region packages/reactivity/src/baseHandlers.ts
702
640
  const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);
703
- const builtInSymbols = new Set(
704
- /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol)
705
- );
641
+ const builtInSymbols = new Set(/* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol));
706
642
  function hasOwnProperty(key) {
707
- if (!isSymbol(key)) key = String(key);
708
- const obj = toRaw(this);
709
- track(obj, "has", key);
710
- return obj.hasOwnProperty(key);
711
- }
712
- class BaseReactiveHandler {
713
- constructor(_isReadonly = false, _isShallow = false) {
714
- this._isReadonly = _isReadonly;
715
- this._isShallow = _isShallow;
716
- }
717
- get(target, key, receiver) {
718
- if (key === "__v_skip") return target["__v_skip"];
719
- const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;
720
- if (key === "__v_isReactive") {
721
- return !isReadonly2;
722
- } else if (key === "__v_isReadonly") {
723
- return isReadonly2;
724
- } else if (key === "__v_isShallow") {
725
- return isShallow2;
726
- } else if (key === "__v_raw") {
727
- if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype
728
- // this means the receiver is a user proxy of the reactive proxy
729
- Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {
730
- return target;
731
- }
732
- return;
733
- }
734
- const targetIsArray = isArray(target);
735
- if (!isReadonly2) {
736
- let fn;
737
- if (targetIsArray && (fn = arrayInstrumentations[key])) {
738
- return fn;
739
- }
740
- if (key === "hasOwnProperty") {
741
- return hasOwnProperty;
742
- }
743
- }
744
- const wasRef = isRef(target);
745
- const res = Reflect.get(
746
- target,
747
- key,
748
- // if this is a proxy wrapping a ref, return methods using the raw ref
749
- // as receiver so that we don't have to call `toRaw` on the ref in all
750
- // its class methods
751
- wasRef ? target : receiver
752
- );
753
- if (wasRef && key !== "value") {
754
- return res;
755
- }
756
- if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {
757
- return res;
758
- }
759
- if (!isReadonly2) {
760
- track(target, "get", key);
761
- }
762
- if (isShallow2) {
763
- return res;
764
- }
765
- if (isRef(res)) {
766
- const value = targetIsArray && isIntegerKey(key) ? res : res.value;
767
- return isReadonly2 && isObject(value) ? readonly(value) : value;
768
- }
769
- if (isObject(res)) {
770
- return isReadonly2 ? readonly(res) : reactive(res);
771
- }
772
- return res;
773
- }
774
- }
775
- class MutableReactiveHandler extends BaseReactiveHandler {
776
- constructor(isShallow2 = false) {
777
- super(false, isShallow2);
778
- }
779
- set(target, key, value, receiver) {
780
- let oldValue = target[key];
781
- const isArrayWithIntegerKey = isArray(target) && isIntegerKey(key);
782
- if (!this._isShallow) {
783
- const isOldValueReadonly = isReadonly(oldValue);
784
- if (!isShallow(value) && !isReadonly(value)) {
785
- oldValue = toRaw(oldValue);
786
- value = toRaw(value);
787
- }
788
- if (!isArrayWithIntegerKey && isRef(oldValue) && !isRef(value)) {
789
- if (isOldValueReadonly) {
790
- {
791
- warn(
792
- `Set operation on key "${String(key)}" failed: target is readonly.`,
793
- target[key]
794
- );
795
- }
796
- return true;
797
- } else {
798
- oldValue.value = value;
799
- return true;
800
- }
801
- }
802
- }
803
- const hadKey = isArrayWithIntegerKey ? Number(key) < target.length : hasOwn(target, key);
804
- const result = Reflect.set(
805
- target,
806
- key,
807
- value,
808
- isRef(target) ? target : receiver
809
- );
810
- if (target === toRaw(receiver)) {
811
- if (!hadKey) {
812
- trigger(target, "add", key, value);
813
- } else if (hasChanged(value, oldValue)) {
814
- trigger(target, "set", key, value, oldValue);
815
- }
816
- }
817
- return result;
818
- }
819
- deleteProperty(target, key) {
820
- const hadKey = hasOwn(target, key);
821
- const oldValue = target[key];
822
- const result = Reflect.deleteProperty(target, key);
823
- if (result && hadKey) {
824
- trigger(target, "delete", key, void 0, oldValue);
825
- }
826
- return result;
827
- }
828
- has(target, key) {
829
- const result = Reflect.has(target, key);
830
- if (!isSymbol(key) || !builtInSymbols.has(key)) {
831
- track(target, "has", key);
832
- }
833
- return result;
834
- }
835
- ownKeys(target) {
836
- track(
837
- target,
838
- "iterate",
839
- isArray(target) ? "length" : ITERATE_KEY
840
- );
841
- return Reflect.ownKeys(target);
842
- }
843
- }
844
- class ReadonlyReactiveHandler extends BaseReactiveHandler {
845
- constructor(isShallow2 = false) {
846
- super(true, isShallow2);
847
- }
848
- set(target, key) {
849
- {
850
- warn(
851
- `Set operation on key "${String(key)}" failed: target is readonly.`,
852
- target
853
- );
854
- }
855
- return true;
856
- }
857
- deleteProperty(target, key) {
858
- {
859
- warn(
860
- `Delete operation on key "${String(key)}" failed: target is readonly.`,
861
- target
862
- );
863
- }
864
- return true;
865
- }
866
- }
643
+ if (!isSymbol(key)) key = String(key);
644
+ const obj = /* @__PURE__ */ toRaw(this);
645
+ track(obj, "has", key);
646
+ return obj.hasOwnProperty(key);
647
+ }
648
+ var BaseReactiveHandler = class {
649
+ constructor(_isReadonly = false, _isShallow = false) {
650
+ this._isReadonly = _isReadonly;
651
+ this._isShallow = _isShallow;
652
+ }
653
+ get(target, key, receiver) {
654
+ if (key === "__v_skip") return target["__v_skip"];
655
+ const isReadonly = this._isReadonly, isShallow = this._isShallow;
656
+ if (key === "__v_isReactive") return !isReadonly;
657
+ else if (key === "__v_isReadonly") return isReadonly;
658
+ else if (key === "__v_isShallow") return isShallow;
659
+ else if (key === "__v_raw") {
660
+ if (receiver === (isReadonly ? isShallow ? shallowReadonlyMap : readonlyMap : isShallow ? shallowReactiveMap : reactiveMap).get(target) || Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) return target;
661
+ return;
662
+ }
663
+ const targetIsArray = isArray(target);
664
+ if (!isReadonly) {
665
+ let fn;
666
+ if (targetIsArray && (fn = arrayInstrumentations[key])) return fn;
667
+ if (key === "hasOwnProperty") return hasOwnProperty;
668
+ }
669
+ const wasRef = /* @__PURE__ */ isRef(target);
670
+ const res = Reflect.get(target, key, wasRef ? target : receiver);
671
+ if (wasRef && key !== "value") return res;
672
+ if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) return res;
673
+ if (!isReadonly) track(target, "get", key);
674
+ if (isShallow) return res;
675
+ if (/* @__PURE__ */ isRef(res)) {
676
+ const value = targetIsArray && isIntegerKey(key) ? res : res.value;
677
+ return isReadonly && isObject(value) ? /* @__PURE__ */ readonly(value) : value;
678
+ }
679
+ if (isObject(res)) return isReadonly ? /* @__PURE__ */ readonly(res) : /* @__PURE__ */ reactive(res);
680
+ return res;
681
+ }
682
+ };
683
+ var MutableReactiveHandler = class extends BaseReactiveHandler {
684
+ constructor(isShallow = false) {
685
+ super(false, isShallow);
686
+ }
687
+ set(target, key, value, receiver) {
688
+ let oldValue = target[key];
689
+ const isArrayWithIntegerKey = isArray(target) && isIntegerKey(key);
690
+ if (!this._isShallow) {
691
+ const isOldValueReadonly = /* @__PURE__ */ isReadonly(oldValue);
692
+ if (!/* @__PURE__ */ isShallow(value) && !/* @__PURE__ */ isReadonly(value)) {
693
+ oldValue = /* @__PURE__ */ toRaw(oldValue);
694
+ value = /* @__PURE__ */ toRaw(value);
695
+ }
696
+ if (!isArrayWithIntegerKey && /* @__PURE__ */ isRef(oldValue) && !/* @__PURE__ */ isRef(value)) if (isOldValueReadonly) {
697
+ warn(`Set operation on key "${String(key)}" failed: target is readonly.`, target[key]);
698
+ return true;
699
+ } else {
700
+ oldValue.value = value;
701
+ return true;
702
+ }
703
+ }
704
+ const hadKey = isArrayWithIntegerKey ? Number(key) < target.length : hasOwn(target, key);
705
+ const result = Reflect.set(target, key, value, /* @__PURE__ */ isRef(target) ? target : receiver);
706
+ if (target === /* @__PURE__ */ toRaw(receiver)) {
707
+ if (!hadKey) trigger(target, "add", key, value);
708
+ else if (hasChanged(value, oldValue)) trigger(target, "set", key, value, oldValue);
709
+ }
710
+ return result;
711
+ }
712
+ deleteProperty(target, key) {
713
+ const hadKey = hasOwn(target, key);
714
+ const oldValue = target[key];
715
+ const result = Reflect.deleteProperty(target, key);
716
+ if (result && hadKey) trigger(target, "delete", key, void 0, oldValue);
717
+ return result;
718
+ }
719
+ has(target, key) {
720
+ const result = Reflect.has(target, key);
721
+ if (!isSymbol(key) || !builtInSymbols.has(key)) track(target, "has", key);
722
+ return result;
723
+ }
724
+ ownKeys(target) {
725
+ track(target, "iterate", isArray(target) ? "length" : ITERATE_KEY);
726
+ return Reflect.ownKeys(target);
727
+ }
728
+ };
729
+ var ReadonlyReactiveHandler = class extends BaseReactiveHandler {
730
+ constructor(isShallow = false) {
731
+ super(true, isShallow);
732
+ }
733
+ set(target, key) {
734
+ warn(`Set operation on key "${String(key)}" failed: target is readonly.`, target);
735
+ return true;
736
+ }
737
+ deleteProperty(target, key) {
738
+ warn(`Delete operation on key "${String(key)}" failed: target is readonly.`, target);
739
+ return true;
740
+ }
741
+ };
867
742
  const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();
868
743
  const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();
869
744
  const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true);
870
745
  const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);
871
746
 
747
+ //#endregion
748
+ //#region packages/reactivity/src/collectionHandlers.ts
872
749
  const toShallow = (value) => value;
873
750
  const getProto = (v) => Reflect.getPrototypeOf(v);
874
- function createIterableMethod(method, isReadonly2, isShallow2) {
875
- return function(...args) {
876
- const target = this["__v_raw"];
877
- const rawTarget = toRaw(target);
878
- const targetIsMap = isMap(rawTarget);
879
- const isPair = method === "entries" || method === Symbol.iterator && targetIsMap;
880
- const isKeyOnly = method === "keys" && targetIsMap;
881
- const innerIterator = target[method](...args);
882
- const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;
883
- !isReadonly2 && track(
884
- rawTarget,
885
- "iterate",
886
- isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY
887
- );
888
- return extend(
889
- // inheriting all iterator properties
890
- Object.create(innerIterator),
891
- {
892
- // iterator protocol
893
- next() {
894
- const { value, done } = innerIterator.next();
895
- return done ? { value, done } : {
896
- value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),
897
- done
898
- };
899
- }
900
- }
901
- );
902
- };
751
+ function createIterableMethod(method, isReadonly, isShallow) {
752
+ return function(...args) {
753
+ const target = this["__v_raw"];
754
+ const rawTarget = /* @__PURE__ */ toRaw(target);
755
+ const targetIsMap = isMap(rawTarget);
756
+ const isPair = method === "entries" || method === Symbol.iterator && targetIsMap;
757
+ const isKeyOnly = method === "keys" && targetIsMap;
758
+ const innerIterator = target[method](...args);
759
+ const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
760
+ !isReadonly && track(rawTarget, "iterate", isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);
761
+ return extend(Object.create(innerIterator), { next() {
762
+ const { value, done } = innerIterator.next();
763
+ return done ? {
764
+ value,
765
+ done
766
+ } : {
767
+ value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),
768
+ done
769
+ };
770
+ } });
771
+ };
903
772
  }
904
773
  function createReadonlyMethod(type) {
905
- return function(...args) {
906
- {
907
- const key = args[0] ? `on key "${args[0]}" ` : ``;
908
- warn(
909
- `${capitalize(type)} operation ${key}failed: target is readonly.`,
910
- toRaw(this)
911
- );
912
- }
913
- return type === "delete" ? false : type === "clear" ? void 0 : this;
914
- };
774
+ return function(...args) {
775
+ {
776
+ const key = args[0] ? `on key "${args[0]}" ` : ``;
777
+ warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, /* @__PURE__ */ toRaw(this));
778
+ }
779
+ return type === "delete" ? false : type === "clear" ? void 0 : this;
780
+ };
915
781
  }
916
782
  function createInstrumentations(readonly, shallow) {
917
- const instrumentations = {
918
- get(key) {
919
- const target = this["__v_raw"];
920
- const rawTarget = toRaw(target);
921
- const rawKey = toRaw(key);
922
- if (!readonly) {
923
- if (hasChanged(key, rawKey)) {
924
- track(rawTarget, "get", key);
925
- }
926
- track(rawTarget, "get", rawKey);
927
- }
928
- const { has } = getProto(rawTarget);
929
- const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;
930
- if (has.call(rawTarget, key)) {
931
- return wrap(target.get(key));
932
- } else if (has.call(rawTarget, rawKey)) {
933
- return wrap(target.get(rawKey));
934
- } else if (target !== rawTarget) {
935
- target.get(key);
936
- }
937
- },
938
- get size() {
939
- const target = this["__v_raw"];
940
- !readonly && track(toRaw(target), "iterate", ITERATE_KEY);
941
- return target.size;
942
- },
943
- has(key) {
944
- const target = this["__v_raw"];
945
- const rawTarget = toRaw(target);
946
- const rawKey = toRaw(key);
947
- if (!readonly) {
948
- if (hasChanged(key, rawKey)) {
949
- track(rawTarget, "has", key);
950
- }
951
- track(rawTarget, "has", rawKey);
952
- }
953
- return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);
954
- },
955
- forEach(callback, thisArg) {
956
- const observed = this;
957
- const target = observed["__v_raw"];
958
- const rawTarget = toRaw(target);
959
- const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;
960
- !readonly && track(rawTarget, "iterate", ITERATE_KEY);
961
- return target.forEach((value, key) => {
962
- return callback.call(thisArg, wrap(value), wrap(key), observed);
963
- });
964
- }
965
- };
966
- extend(
967
- instrumentations,
968
- readonly ? {
969
- add: createReadonlyMethod("add"),
970
- set: createReadonlyMethod("set"),
971
- delete: createReadonlyMethod("delete"),
972
- clear: createReadonlyMethod("clear")
973
- } : {
974
- add(value) {
975
- if (!shallow && !isShallow(value) && !isReadonly(value)) {
976
- value = toRaw(value);
977
- }
978
- const target = toRaw(this);
979
- const proto = getProto(target);
980
- const hadKey = proto.has.call(target, value);
981
- if (!hadKey) {
982
- target.add(value);
983
- trigger(target, "add", value, value);
984
- }
985
- return this;
986
- },
987
- set(key, value) {
988
- if (!shallow && !isShallow(value) && !isReadonly(value)) {
989
- value = toRaw(value);
990
- }
991
- const target = toRaw(this);
992
- const { has, get } = getProto(target);
993
- let hadKey = has.call(target, key);
994
- if (!hadKey) {
995
- key = toRaw(key);
996
- hadKey = has.call(target, key);
997
- } else {
998
- checkIdentityKeys(target, has, key);
999
- }
1000
- const oldValue = get.call(target, key);
1001
- target.set(key, value);
1002
- if (!hadKey) {
1003
- trigger(target, "add", key, value);
1004
- } else if (hasChanged(value, oldValue)) {
1005
- trigger(target, "set", key, value, oldValue);
1006
- }
1007
- return this;
1008
- },
1009
- delete(key) {
1010
- const target = toRaw(this);
1011
- const { has, get } = getProto(target);
1012
- let hadKey = has.call(target, key);
1013
- if (!hadKey) {
1014
- key = toRaw(key);
1015
- hadKey = has.call(target, key);
1016
- } else {
1017
- checkIdentityKeys(target, has, key);
1018
- }
1019
- const oldValue = get ? get.call(target, key) : void 0;
1020
- const result = target.delete(key);
1021
- if (hadKey) {
1022
- trigger(target, "delete", key, void 0, oldValue);
1023
- }
1024
- return result;
1025
- },
1026
- clear() {
1027
- const target = toRaw(this);
1028
- const hadItems = target.size !== 0;
1029
- const oldTarget = isMap(target) ? new Map(target) : new Set(target) ;
1030
- const result = target.clear();
1031
- if (hadItems) {
1032
- trigger(
1033
- target,
1034
- "clear",
1035
- void 0,
1036
- void 0,
1037
- oldTarget
1038
- );
1039
- }
1040
- return result;
1041
- }
1042
- }
1043
- );
1044
- const iteratorMethods = [
1045
- "keys",
1046
- "values",
1047
- "entries",
1048
- Symbol.iterator
1049
- ];
1050
- iteratorMethods.forEach((method) => {
1051
- instrumentations[method] = createIterableMethod(method, readonly, shallow);
1052
- });
1053
- return instrumentations;
1054
- }
1055
- function createInstrumentationGetter(isReadonly2, shallow) {
1056
- const instrumentations = createInstrumentations(isReadonly2, shallow);
1057
- return (target, key, receiver) => {
1058
- if (key === "__v_isReactive") {
1059
- return !isReadonly2;
1060
- } else if (key === "__v_isReadonly") {
1061
- return isReadonly2;
1062
- } else if (key === "__v_raw") {
1063
- return target;
1064
- }
1065
- return Reflect.get(
1066
- hasOwn(instrumentations, key) && key in target ? instrumentations : target,
1067
- key,
1068
- receiver
1069
- );
1070
- };
1071
- }
1072
- const mutableCollectionHandlers = {
1073
- get: /* @__PURE__ */ createInstrumentationGetter(false, false)
1074
- };
1075
- const shallowCollectionHandlers = {
1076
- get: /* @__PURE__ */ createInstrumentationGetter(false, true)
1077
- };
1078
- const readonlyCollectionHandlers = {
1079
- get: /* @__PURE__ */ createInstrumentationGetter(true, false)
1080
- };
1081
- const shallowReadonlyCollectionHandlers = {
1082
- get: /* @__PURE__ */ createInstrumentationGetter(true, true)
1083
- };
783
+ const instrumentations = {
784
+ get(key) {
785
+ const target = this["__v_raw"];
786
+ const rawTarget = /* @__PURE__ */ toRaw(target);
787
+ const rawKey = /* @__PURE__ */ toRaw(key);
788
+ if (!readonly) {
789
+ if (hasChanged(key, rawKey)) track(rawTarget, "get", key);
790
+ track(rawTarget, "get", rawKey);
791
+ }
792
+ const { has } = getProto(rawTarget);
793
+ const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;
794
+ if (has.call(rawTarget, key)) return wrap(target.get(key));
795
+ else if (has.call(rawTarget, rawKey)) return wrap(target.get(rawKey));
796
+ else if (target !== rawTarget) target.get(key);
797
+ },
798
+ get size() {
799
+ const target = this["__v_raw"];
800
+ !readonly && track(/* @__PURE__ */ toRaw(target), "iterate", ITERATE_KEY);
801
+ return target.size;
802
+ },
803
+ has(key) {
804
+ const target = this["__v_raw"];
805
+ const rawTarget = /* @__PURE__ */ toRaw(target);
806
+ const rawKey = /* @__PURE__ */ toRaw(key);
807
+ if (!readonly) {
808
+ if (hasChanged(key, rawKey)) track(rawTarget, "has", key);
809
+ track(rawTarget, "has", rawKey);
810
+ }
811
+ return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);
812
+ },
813
+ forEach(callback, thisArg) {
814
+ const observed = this;
815
+ const target = observed["__v_raw"];
816
+ const rawTarget = /* @__PURE__ */ toRaw(target);
817
+ const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;
818
+ !readonly && track(rawTarget, "iterate", ITERATE_KEY);
819
+ return target.forEach((value, key) => {
820
+ return callback.call(thisArg, wrap(value), wrap(key), observed);
821
+ });
822
+ }
823
+ };
824
+ extend(instrumentations, readonly ? {
825
+ add: createReadonlyMethod("add"),
826
+ set: createReadonlyMethod("set"),
827
+ delete: createReadonlyMethod("delete"),
828
+ clear: createReadonlyMethod("clear")
829
+ } : {
830
+ add(value) {
831
+ if (!shallow && !/* @__PURE__ */ isShallow(value) && !/* @__PURE__ */ isReadonly(value)) value = /* @__PURE__ */ toRaw(value);
832
+ const target = /* @__PURE__ */ toRaw(this);
833
+ if (!getProto(target).has.call(target, value)) {
834
+ target.add(value);
835
+ trigger(target, "add", value, value);
836
+ }
837
+ return this;
838
+ },
839
+ set(key, value) {
840
+ if (!shallow && !/* @__PURE__ */ isShallow(value) && !/* @__PURE__ */ isReadonly(value)) value = /* @__PURE__ */ toRaw(value);
841
+ const target = /* @__PURE__ */ toRaw(this);
842
+ const { has, get } = getProto(target);
843
+ let hadKey = has.call(target, key);
844
+ if (!hadKey) {
845
+ key = /* @__PURE__ */ toRaw(key);
846
+ hadKey = has.call(target, key);
847
+ } else checkIdentityKeys(target, has, key);
848
+ const oldValue = get.call(target, key);
849
+ target.set(key, value);
850
+ if (!hadKey) trigger(target, "add", key, value);
851
+ else if (hasChanged(value, oldValue)) trigger(target, "set", key, value, oldValue);
852
+ return this;
853
+ },
854
+ delete(key) {
855
+ const target = /* @__PURE__ */ toRaw(this);
856
+ const { has, get } = getProto(target);
857
+ let hadKey = has.call(target, key);
858
+ if (!hadKey) {
859
+ key = /* @__PURE__ */ toRaw(key);
860
+ hadKey = has.call(target, key);
861
+ } else checkIdentityKeys(target, has, key);
862
+ const oldValue = get ? get.call(target, key) : void 0;
863
+ const result = target.delete(key);
864
+ if (hadKey) trigger(target, "delete", key, void 0, oldValue);
865
+ return result;
866
+ },
867
+ clear() {
868
+ const target = /* @__PURE__ */ toRaw(this);
869
+ const hadItems = target.size !== 0;
870
+ const oldTarget = isMap(target) ? new Map(target) : new Set(target);
871
+ const result = target.clear();
872
+ if (hadItems) trigger(target, "clear", void 0, void 0, oldTarget);
873
+ return result;
874
+ }
875
+ });
876
+ [
877
+ "keys",
878
+ "values",
879
+ "entries",
880
+ Symbol.iterator
881
+ ].forEach((method) => {
882
+ instrumentations[method] = createIterableMethod(method, readonly, shallow);
883
+ });
884
+ return instrumentations;
885
+ }
886
+ function createInstrumentationGetter(isReadonly, shallow) {
887
+ const instrumentations = createInstrumentations(isReadonly, shallow);
888
+ return (target, key, receiver) => {
889
+ if (key === "__v_isReactive") return !isReadonly;
890
+ else if (key === "__v_isReadonly") return isReadonly;
891
+ else if (key === "__v_raw") return target;
892
+ return Reflect.get(hasOwn(instrumentations, key) && key in target ? instrumentations : target, key, receiver);
893
+ };
894
+ }
895
+ const mutableCollectionHandlers = { get: /* @__PURE__ */ createInstrumentationGetter(false, false) };
896
+ const shallowCollectionHandlers = { get: /* @__PURE__ */ createInstrumentationGetter(false, true) };
897
+ const readonlyCollectionHandlers = { get: /* @__PURE__ */ createInstrumentationGetter(true, false) };
898
+ const shallowReadonlyCollectionHandlers = { get: /* @__PURE__ */ createInstrumentationGetter(true, true) };
1084
899
  function checkIdentityKeys(target, has, key) {
1085
- const rawKey = toRaw(key);
1086
- if (rawKey !== key && has.call(target, rawKey)) {
1087
- const type = toRawType(target);
1088
- warn(
1089
- `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`
1090
- );
1091
- }
900
+ const rawKey = /* @__PURE__ */ toRaw(key);
901
+ if (rawKey !== key && has.call(target, rawKey)) {
902
+ const type = toRawType(target);
903
+ warn(`Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`);
904
+ }
1092
905
  }
1093
906
 
907
+ //#endregion
908
+ //#region packages/reactivity/src/reactive.ts
1094
909
  const reactiveMap = /* @__PURE__ */ new WeakMap();
1095
910
  const shallowReactiveMap = /* @__PURE__ */ new WeakMap();
1096
911
  const readonlyMap = /* @__PURE__ */ new WeakMap();
1097
912
  const shallowReadonlyMap = /* @__PURE__ */ new WeakMap();
1098
913
  function targetTypeMap(rawType) {
1099
- switch (rawType) {
1100
- case "Object":
1101
- case "Array":
1102
- return 1 /* COMMON */;
1103
- case "Map":
1104
- case "Set":
1105
- case "WeakMap":
1106
- case "WeakSet":
1107
- return 2 /* COLLECTION */;
1108
- default:
1109
- return 0 /* INVALID */;
1110
- }
914
+ switch (rawType) {
915
+ case "Object":
916
+ case "Array": return 1;
917
+ case "Map":
918
+ case "Set":
919
+ case "WeakMap":
920
+ case "WeakSet": return 2;
921
+ default: return 0;
922
+ }
1111
923
  }
1112
924
  function getTargetType(value) {
1113
- return value["__v_skip"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));
925
+ return value["__v_skip"] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value));
1114
926
  }
1115
- // @__NO_SIDE_EFFECTS__
927
+ /* @__NO_SIDE_EFFECTS__ */
1116
928
  function reactive(target) {
1117
- if (/* @__PURE__ */ isReadonly(target)) {
1118
- return target;
1119
- }
1120
- return createReactiveObject(
1121
- target,
1122
- false,
1123
- mutableHandlers,
1124
- mutableCollectionHandlers,
1125
- reactiveMap
1126
- );
1127
- }
1128
- // @__NO_SIDE_EFFECTS__
929
+ if (/* @__PURE__ */ isReadonly(target)) return target;
930
+ return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);
931
+ }
932
+ /**
933
+ * Shallow version of {@link reactive}.
934
+ *
935
+ * Unlike {@link reactive}, there is no deep conversion: only root-level
936
+ * properties are reactive for a shallow reactive object. Property values are
937
+ * stored and exposed as-is - this also means properties with ref values will
938
+ * not be automatically unwrapped.
939
+ *
940
+ * @example
941
+ * ```js
942
+ * const state = shallowReactive({
943
+ * foo: 1,
944
+ * nested: {
945
+ * bar: 2
946
+ * }
947
+ * })
948
+ *
949
+ * // mutating state's own properties is reactive
950
+ * state.foo++
951
+ *
952
+ * // ...but does not convert nested objects
953
+ * isReactive(state.nested) // false
954
+ *
955
+ * // NOT reactive
956
+ * state.nested.bar++
957
+ * ```
958
+ *
959
+ * @param target - The source object.
960
+ * @see {@link https://vuejs.org/api/reactivity-advanced.html#shallowreactive}
961
+ */
962
+ /* @__NO_SIDE_EFFECTS__ */
1129
963
  function shallowReactive(target) {
1130
- return createReactiveObject(
1131
- target,
1132
- false,
1133
- shallowReactiveHandlers,
1134
- shallowCollectionHandlers,
1135
- shallowReactiveMap
1136
- );
1137
- }
1138
- // @__NO_SIDE_EFFECTS__
964
+ return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap);
965
+ }
966
+ /**
967
+ * Takes an object (reactive or plain) or a ref and returns a readonly proxy to
968
+ * the original.
969
+ *
970
+ * A readonly proxy is deep: any nested property accessed will be readonly as
971
+ * well. It also has the same ref-unwrapping behavior as {@link reactive},
972
+ * except the unwrapped values will also be made readonly.
973
+ *
974
+ * @example
975
+ * ```js
976
+ * const original = reactive({ count: 0 })
977
+ *
978
+ * const copy = readonly(original)
979
+ *
980
+ * watchEffect(() => {
981
+ * // works for reactivity tracking
982
+ * console.log(copy.count)
983
+ * })
984
+ *
985
+ * // mutating original will trigger watchers relying on the copy
986
+ * original.count++
987
+ *
988
+ * // mutating the copy will fail and result in a warning
989
+ * copy.count++ // warning!
990
+ * ```
991
+ *
992
+ * @param target - The source object.
993
+ * @see {@link https://vuejs.org/api/reactivity-core.html#readonly}
994
+ */
995
+ /* @__NO_SIDE_EFFECTS__ */
1139
996
  function readonly(target) {
1140
- return createReactiveObject(
1141
- target,
1142
- true,
1143
- readonlyHandlers,
1144
- readonlyCollectionHandlers,
1145
- readonlyMap
1146
- );
1147
- }
1148
- // @__NO_SIDE_EFFECTS__
997
+ return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);
998
+ }
999
+ /**
1000
+ * Shallow version of {@link readonly}.
1001
+ *
1002
+ * Unlike {@link readonly}, there is no deep conversion: only root-level
1003
+ * properties are made readonly. Property values are stored and exposed as-is -
1004
+ * this also means properties with ref values will not be automatically
1005
+ * unwrapped.
1006
+ *
1007
+ * @example
1008
+ * ```js
1009
+ * const state = shallowReadonly({
1010
+ * foo: 1,
1011
+ * nested: {
1012
+ * bar: 2
1013
+ * }
1014
+ * })
1015
+ *
1016
+ * // mutating state's own properties will fail
1017
+ * state.foo++
1018
+ *
1019
+ * // ...but works on nested objects
1020
+ * isReadonly(state.nested) // false
1021
+ *
1022
+ * // works
1023
+ * state.nested.bar++
1024
+ * ```
1025
+ *
1026
+ * @param target - The source object.
1027
+ * @see {@link https://vuejs.org/api/reactivity-advanced.html#shallowreadonly}
1028
+ */
1029
+ /* @__NO_SIDE_EFFECTS__ */
1149
1030
  function shallowReadonly(target) {
1150
- return createReactiveObject(
1151
- target,
1152
- true,
1153
- shallowReadonlyHandlers,
1154
- shallowReadonlyCollectionHandlers,
1155
- shallowReadonlyMap
1156
- );
1157
- }
1158
- function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {
1159
- if (!isObject(target)) {
1160
- {
1161
- warn(
1162
- `value cannot be made ${isReadonly2 ? "readonly" : "reactive"}: ${String(
1163
- target
1164
- )}`
1165
- );
1166
- }
1167
- return target;
1168
- }
1169
- if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) {
1170
- return target;
1171
- }
1172
- const targetType = getTargetType(target);
1173
- if (targetType === 0 /* INVALID */) {
1174
- return target;
1175
- }
1176
- const existingProxy = proxyMap.get(target);
1177
- if (existingProxy) {
1178
- return existingProxy;
1179
- }
1180
- const proxy = new Proxy(
1181
- target,
1182
- targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers
1183
- );
1184
- proxyMap.set(target, proxy);
1185
- return proxy;
1186
- }
1187
- // @__NO_SIDE_EFFECTS__
1031
+ return createReactiveObject(target, true, shallowReadonlyHandlers, shallowReadonlyCollectionHandlers, shallowReadonlyMap);
1032
+ }
1033
+ function createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) {
1034
+ if (!isObject(target)) {
1035
+ warn(`value cannot be made ${isReadonly ? "readonly" : "reactive"}: ${String(target)}`);
1036
+ return target;
1037
+ }
1038
+ if (target["__v_raw"] && !(isReadonly && target["__v_isReactive"])) return target;
1039
+ const targetType = getTargetType(target);
1040
+ if (targetType === 0) return target;
1041
+ const existingProxy = proxyMap.get(target);
1042
+ if (existingProxy) return existingProxy;
1043
+ const proxy = new Proxy(target, targetType === 2 ? collectionHandlers : baseHandlers);
1044
+ proxyMap.set(target, proxy);
1045
+ return proxy;
1046
+ }
1047
+ /**
1048
+ * Checks if an object is a proxy created by {@link reactive} or
1049
+ * {@link shallowReactive} (or {@link ref} in some cases).
1050
+ *
1051
+ * @example
1052
+ * ```js
1053
+ * isReactive(reactive({})) // => true
1054
+ * isReactive(readonly(reactive({}))) // => true
1055
+ * isReactive(ref({}).value) // => true
1056
+ * isReactive(readonly(ref({})).value) // => true
1057
+ * isReactive(ref(true)) // => false
1058
+ * isReactive(shallowRef({}).value) // => false
1059
+ * isReactive(shallowReactive({})) // => true
1060
+ * ```
1061
+ *
1062
+ * @param value - The value to check.
1063
+ * @see {@link https://vuejs.org/api/reactivity-utilities.html#isreactive}
1064
+ */
1065
+ /* @__NO_SIDE_EFFECTS__ */
1188
1066
  function isReactive(value) {
1189
- if (/* @__PURE__ */ isReadonly(value)) {
1190
- return /* @__PURE__ */ isReactive(value["__v_raw"]);
1191
- }
1192
- return !!(value && value["__v_isReactive"]);
1067
+ if (/* @__PURE__ */ isReadonly(value)) return /* @__PURE__ */ isReactive(value["__v_raw"]);
1068
+ return !!(value && value["__v_isReactive"]);
1193
1069
  }
1194
- // @__NO_SIDE_EFFECTS__
1070
+ /**
1071
+ * Checks whether the passed value is a readonly object. The properties of a
1072
+ * readonly object can change, but they can't be assigned directly via the
1073
+ * passed object.
1074
+ *
1075
+ * The proxies created by {@link readonly} and {@link shallowReadonly} are
1076
+ * both considered readonly, as is a computed ref without a set function.
1077
+ *
1078
+ * @param value - The value to check.
1079
+ * @see {@link https://vuejs.org/api/reactivity-utilities.html#isreadonly}
1080
+ */
1081
+ /* @__NO_SIDE_EFFECTS__ */
1195
1082
  function isReadonly(value) {
1196
- return !!(value && value["__v_isReadonly"]);
1083
+ return !!(value && value["__v_isReadonly"]);
1197
1084
  }
1198
- // @__NO_SIDE_EFFECTS__
1085
+ /* @__NO_SIDE_EFFECTS__ */
1199
1086
  function isShallow(value) {
1200
- return !!(value && value["__v_isShallow"]);
1087
+ return !!(value && value["__v_isShallow"]);
1201
1088
  }
1202
- // @__NO_SIDE_EFFECTS__
1089
+ /**
1090
+ * Checks if an object is a proxy created by {@link reactive},
1091
+ * {@link readonly}, {@link shallowReactive} or {@link shallowReadonly}.
1092
+ *
1093
+ * @param value - The value to check.
1094
+ * @see {@link https://vuejs.org/api/reactivity-utilities.html#isproxy}
1095
+ */
1096
+ /* @__NO_SIDE_EFFECTS__ */
1203
1097
  function isProxy(value) {
1204
- return value ? !!value["__v_raw"] : false;
1098
+ return value ? !!value["__v_raw"] : false;
1205
1099
  }
1206
- // @__NO_SIDE_EFFECTS__
1100
+ /**
1101
+ * Returns the raw, original object of a Vue-created proxy.
1102
+ *
1103
+ * `toRaw()` can return the original object from proxies created by
1104
+ * {@link reactive}, {@link readonly}, {@link shallowReactive} or
1105
+ * {@link shallowReadonly}.
1106
+ *
1107
+ * This is an escape hatch that can be used to temporarily read without
1108
+ * incurring proxy access / tracking overhead or write without triggering
1109
+ * changes. It is **not** recommended to hold a persistent reference to the
1110
+ * original object. Use with caution.
1111
+ *
1112
+ * @example
1113
+ * ```js
1114
+ * const foo = {}
1115
+ * const reactiveFoo = reactive(foo)
1116
+ *
1117
+ * console.log(toRaw(reactiveFoo) === foo) // true
1118
+ * ```
1119
+ *
1120
+ * @param observed - The object for which the "raw" value is requested.
1121
+ * @see {@link https://vuejs.org/api/reactivity-advanced.html#toraw}
1122
+ */
1123
+ /* @__NO_SIDE_EFFECTS__ */
1207
1124
  function toRaw(observed) {
1208
- const raw = observed && observed["__v_raw"];
1209
- return raw ? /* @__PURE__ */ toRaw(raw) : observed;
1125
+ const raw = observed && observed["__v_raw"];
1126
+ return raw ? /* @__PURE__ */ toRaw(raw) : observed;
1210
1127
  }
1128
+ /**
1129
+ * Marks an object so that it will never be converted to a proxy. Returns the
1130
+ * object itself.
1131
+ *
1132
+ * @example
1133
+ * ```js
1134
+ * const foo = markRaw({})
1135
+ * console.log(isReactive(reactive(foo))) // false
1136
+ *
1137
+ * // also works when nested inside other reactive objects
1138
+ * const bar = reactive({ foo })
1139
+ * console.log(isReactive(bar.foo)) // false
1140
+ * ```
1141
+ *
1142
+ * **Warning:** `markRaw()` together with the shallow APIs such as
1143
+ * {@link shallowReactive} allow you to selectively opt-out of the default
1144
+ * deep reactive/readonly conversion and embed raw, non-proxied objects in your
1145
+ * state graph.
1146
+ *
1147
+ * @param value - The object to be marked as "raw".
1148
+ * @see {@link https://vuejs.org/api/reactivity-advanced.html#markraw}
1149
+ */
1211
1150
  function markRaw(value) {
1212
- if (!hasOwn(value, "__v_skip") && Object.isExtensible(value)) {
1213
- def(value, "__v_skip", true);
1214
- }
1215
- return value;
1151
+ if (!hasOwn(value, "__v_skip") && Object.isExtensible(value)) def(value, "__v_skip", true);
1152
+ return value;
1216
1153
  }
1154
+ /**
1155
+ * Returns a reactive proxy of the given value (if possible).
1156
+ *
1157
+ * If the given value is not an object, the original value itself is returned.
1158
+ *
1159
+ * @param value - The value for which a reactive proxy shall be created.
1160
+ */
1217
1161
  const toReactive = (value) => isObject(value) ? /* @__PURE__ */ reactive(value) : value;
1162
+ /**
1163
+ * Returns a readonly proxy of the given value (if possible).
1164
+ *
1165
+ * If the given value is not an object, the original value itself is returned.
1166
+ *
1167
+ * @param value - The value for which a readonly proxy shall be created.
1168
+ */
1218
1169
  const toReadonly = (value) => isObject(value) ? /* @__PURE__ */ readonly(value) : value;
1219
1170
 
1220
- // @__NO_SIDE_EFFECTS__
1171
+ //#endregion
1172
+ //#region packages/reactivity/src/ref.ts
1173
+ /* @__NO_SIDE_EFFECTS__ */
1221
1174
  function isRef(r) {
1222
- return r ? r["__v_isRef"] === true : false;
1175
+ return r ? r["__v_isRef"] === true : false;
1223
1176
  }
1224
- // @__NO_SIDE_EFFECTS__
1177
+ /* @__NO_SIDE_EFFECTS__ */
1225
1178
  function ref(value) {
1226
- return createRef(value, toReactive);
1179
+ return createRef(value, toReactive);
1227
1180
  }
1228
- // @__NO_SIDE_EFFECTS__
1181
+ /* @__NO_SIDE_EFFECTS__ */
1229
1182
  function shallowRef(value) {
1230
- return createRef(value);
1183
+ return createRef(value);
1231
1184
  }
1232
1185
  function createRef(rawValue, wrap) {
1233
- if (/* @__PURE__ */ isRef(rawValue)) {
1234
- return rawValue;
1235
- }
1236
- return new RefImpl(rawValue, wrap);
1237
- }
1238
- class RefImpl {
1239
- // TODO isolatedDeclarations "__v_isShallow"
1240
- constructor(value, wrap) {
1241
- this.subs = void 0;
1242
- this.subsTail = void 0;
1243
- this.flags = ReactiveFlags$1.Mutable;
1244
- /**
1245
- * @internal
1246
- */
1247
- this.__v_isRef = true;
1248
- // TODO isolatedDeclarations "__v_isRef"
1249
- /**
1250
- * @internal
1251
- */
1252
- this.__v_isShallow = false;
1253
- this._oldValue = this._rawValue = wrap ? toRaw(value) : value;
1254
- this._value = wrap ? wrap(value) : value;
1255
- this._wrap = wrap;
1256
- this["__v_isShallow"] = !wrap;
1257
- }
1258
- get dep() {
1259
- return this;
1260
- }
1261
- get value() {
1262
- trackRef(this);
1263
- if (this.flags & ReactiveFlags$1.Dirty && this.update()) {
1264
- const subs = this.subs;
1265
- if (subs !== void 0) {
1266
- shallowPropagate(subs);
1267
- }
1268
- }
1269
- return this._value;
1270
- }
1271
- set value(newValue) {
1272
- const oldValue = this._rawValue;
1273
- const useDirectValue = this["__v_isShallow"] || isShallow(newValue) || isReadonly(newValue);
1274
- newValue = useDirectValue ? newValue : toRaw(newValue);
1275
- if (hasChanged(newValue, oldValue)) {
1276
- this.flags |= ReactiveFlags$1.Dirty;
1277
- this._rawValue = newValue;
1278
- this._value = !useDirectValue && this._wrap ? this._wrap(newValue) : newValue;
1279
- const subs = this.subs;
1280
- if (subs !== void 0) {
1281
- {
1282
- triggerEventInfos.push({
1283
- target: this,
1284
- type: "set",
1285
- key: "value",
1286
- newValue,
1287
- oldValue
1288
- });
1289
- }
1290
- propagate(subs);
1291
- if (!batchDepth) {
1292
- flush();
1293
- }
1294
- {
1295
- triggerEventInfos.pop();
1296
- }
1297
- }
1298
- }
1299
- }
1300
- update() {
1301
- this.flags &= ~ReactiveFlags$1.Dirty;
1302
- return hasChanged(this._oldValue, this._oldValue = this._rawValue);
1303
- }
1304
- }
1305
- function triggerRef(ref2) {
1306
- const dep = ref2.dep;
1307
- if (dep !== void 0 && dep.subs !== void 0) {
1308
- propagate(dep.subs);
1309
- shallowPropagate(dep.subs);
1310
- if (!batchDepth) {
1311
- flush();
1312
- }
1313
- }
1186
+ if (/* @__PURE__ */ isRef(rawValue)) return rawValue;
1187
+ return new RefImpl(rawValue, wrap);
1188
+ }
1189
+ /**
1190
+ * @internal
1191
+ */
1192
+ var RefImpl = class {
1193
+ constructor(value, wrap) {
1194
+ this.subs = void 0;
1195
+ this.subsTail = void 0;
1196
+ this.flags = ReactiveFlags$1.Mutable;
1197
+ this.__v_isRef = true;
1198
+ this.__v_isShallow = false;
1199
+ this._oldValue = this._rawValue = wrap ? /* @__PURE__ */ toRaw(value) : value;
1200
+ this._value = wrap ? wrap(value) : value;
1201
+ this._wrap = wrap;
1202
+ this["__v_isShallow"] = !wrap;
1203
+ }
1204
+ get dep() {
1205
+ return this;
1206
+ }
1207
+ get value() {
1208
+ trackRef(this);
1209
+ if (this.flags & ReactiveFlags$1.Dirty && this.update()) {
1210
+ const subs = this.subs;
1211
+ if (subs !== void 0) shallowPropagate(subs);
1212
+ }
1213
+ return this._value;
1214
+ }
1215
+ set value(newValue) {
1216
+ const oldValue = this._rawValue;
1217
+ const useDirectValue = this["__v_isShallow"] || /* @__PURE__ */ isShallow(newValue) || /* @__PURE__ */ isReadonly(newValue);
1218
+ newValue = useDirectValue ? newValue : /* @__PURE__ */ toRaw(newValue);
1219
+ if (hasChanged(newValue, oldValue)) {
1220
+ this.flags |= ReactiveFlags$1.Dirty;
1221
+ this._rawValue = newValue;
1222
+ this._value = !useDirectValue && this._wrap ? this._wrap(newValue) : newValue;
1223
+ const subs = this.subs;
1224
+ if (subs !== void 0) {
1225
+ triggerEventInfos.push({
1226
+ target: this,
1227
+ type: "set",
1228
+ key: "value",
1229
+ newValue,
1230
+ oldValue
1231
+ });
1232
+ propagate(subs);
1233
+ if (!batchDepth) flush();
1234
+ triggerEventInfos.pop();
1235
+ }
1236
+ }
1237
+ }
1238
+ update() {
1239
+ this.flags &= ~ReactiveFlags$1.Dirty;
1240
+ return hasChanged(this._oldValue, this._oldValue = this._rawValue);
1241
+ }
1242
+ };
1243
+ /**
1244
+ * Force trigger effects that depends on a shallow ref. This is typically used
1245
+ * after making deep mutations to the inner value of a shallow ref.
1246
+ *
1247
+ * @example
1248
+ * ```js
1249
+ * const shallow = shallowRef({
1250
+ * greet: 'Hello, world'
1251
+ * })
1252
+ *
1253
+ * // Logs "Hello, world" once for the first run-through
1254
+ * watchEffect(() => {
1255
+ * console.log(shallow.value.greet)
1256
+ * })
1257
+ *
1258
+ * // This won't trigger the effect because the ref is shallow
1259
+ * shallow.value.greet = 'Hello, universe'
1260
+ *
1261
+ * // Logs "Hello, universe"
1262
+ * triggerRef(shallow)
1263
+ * ```
1264
+ *
1265
+ * @param ref - The ref whose tied effects shall be executed.
1266
+ * @see {@link https://vuejs.org/api/reactivity-advanced.html#triggerref}
1267
+ */
1268
+ function triggerRef(ref) {
1269
+ const dep = ref.dep;
1270
+ if (dep !== void 0 && dep.subs !== void 0) {
1271
+ propagate(dep.subs);
1272
+ shallowPropagate(dep.subs);
1273
+ if (!batchDepth) flush();
1274
+ }
1314
1275
  }
1315
1276
  function trackRef(dep) {
1316
- if (activeSub !== void 0) {
1317
- {
1318
- onTrack(activeSub, {
1319
- target: dep,
1320
- type: "get",
1321
- key: "value"
1322
- });
1323
- }
1324
- link(dep, activeSub);
1325
- }
1326
- }
1327
- function unref(ref2) {
1328
- return /* @__PURE__ */ isRef(ref2) ? ref2.value : ref2;
1277
+ if (activeSub !== void 0) {
1278
+ onTrack(activeSub, {
1279
+ target: dep,
1280
+ type: "get",
1281
+ key: "value"
1282
+ });
1283
+ link(dep, activeSub);
1284
+ }
1329
1285
  }
1286
+ /**
1287
+ * Returns the inner value if the argument is a ref, otherwise return the
1288
+ * argument itself. This is a sugar function for
1289
+ * `val = isRef(val) ? val.value : val`.
1290
+ *
1291
+ * @example
1292
+ * ```js
1293
+ * function useFoo(x: number | Ref<number>) {
1294
+ * const unwrapped = unref(x)
1295
+ * // unwrapped is guaranteed to be number now
1296
+ * }
1297
+ * ```
1298
+ *
1299
+ * @param ref - Ref or plain value to be converted into the plain value.
1300
+ * @see {@link https://vuejs.org/api/reactivity-utilities.html#unref}
1301
+ */
1302
+ function unref(ref) {
1303
+ return /* @__PURE__ */ isRef(ref) ? ref.value : ref;
1304
+ }
1305
+ /**
1306
+ * Normalizes values / refs / getters to values.
1307
+ * This is similar to {@link unref}, except that it also normalizes getters.
1308
+ * If the argument is a getter, it will be invoked and its return value will
1309
+ * be returned.
1310
+ *
1311
+ * @example
1312
+ * ```js
1313
+ * toValue(1) // 1
1314
+ * toValue(ref(1)) // 1
1315
+ * toValue(() => 1) // 1
1316
+ * ```
1317
+ *
1318
+ * @param source - A getter, an existing ref, or a non-function value.
1319
+ * @see {@link https://vuejs.org/api/reactivity-utilities.html#tovalue}
1320
+ */
1330
1321
  function toValue(source) {
1331
- return isFunction(source) ? source() : unref(source);
1322
+ return isFunction(source) ? source() : unref(source);
1332
1323
  }
1333
1324
  const shallowUnwrapHandlers = {
1334
- get: (target, key, receiver) => key === "__v_raw" ? target : unref(Reflect.get(target, key, receiver)),
1335
- set: (target, key, value, receiver) => {
1336
- const oldValue = target[key];
1337
- if (/* @__PURE__ */ isRef(oldValue) && !/* @__PURE__ */ isRef(value)) {
1338
- oldValue.value = value;
1339
- return true;
1340
- } else {
1341
- return Reflect.set(target, key, value, receiver);
1342
- }
1343
- }
1325
+ get: (target, key, receiver) => key === "__v_raw" ? target : unref(Reflect.get(target, key, receiver)),
1326
+ set: (target, key, value, receiver) => {
1327
+ const oldValue = target[key];
1328
+ if (/* @__PURE__ */ isRef(oldValue) && !/* @__PURE__ */ isRef(value)) {
1329
+ oldValue.value = value;
1330
+ return true;
1331
+ } else return Reflect.set(target, key, value, receiver);
1332
+ }
1344
1333
  };
1334
+ /**
1335
+ * Returns a proxy for the given object that shallowly unwraps properties that
1336
+ * are refs. If the object already is reactive, it's returned as-is. If not, a
1337
+ * new reactive proxy is created.
1338
+ *
1339
+ * @param objectWithRefs - Either an already-reactive object or a simple object
1340
+ * that contains refs.
1341
+ */
1345
1342
  function proxyRefs(objectWithRefs) {
1346
- return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);
1347
- }
1348
- class CustomRefImpl {
1349
- constructor(factory) {
1350
- this.subs = void 0;
1351
- this.subsTail = void 0;
1352
- this.flags = ReactiveFlags$1.None;
1353
- this["__v_isRef"] = true;
1354
- this._value = void 0;
1355
- const { get, set } = factory(
1356
- () => trackRef(this),
1357
- () => triggerRef(this)
1358
- );
1359
- this._get = get;
1360
- this._set = set;
1361
- }
1362
- get dep() {
1363
- return this;
1364
- }
1365
- get value() {
1366
- return this._value = this._get();
1367
- }
1368
- set value(newVal) {
1369
- this._set(newVal);
1370
- }
1371
- }
1343
+ return /* @__PURE__ */ isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);
1344
+ }
1345
+ var CustomRefImpl = class {
1346
+ constructor(factory) {
1347
+ this.subs = void 0;
1348
+ this.subsTail = void 0;
1349
+ this.flags = ReactiveFlags$1.None;
1350
+ this["__v_isRef"] = true;
1351
+ this._value = void 0;
1352
+ const { get, set } = factory(() => trackRef(this), () => triggerRef(this));
1353
+ this._get = get;
1354
+ this._set = set;
1355
+ }
1356
+ get dep() {
1357
+ return this;
1358
+ }
1359
+ get value() {
1360
+ return this._value = this._get();
1361
+ }
1362
+ set value(newVal) {
1363
+ this._set(newVal);
1364
+ }
1365
+ };
1366
+ /**
1367
+ * Creates a customized ref with explicit control over its dependency tracking
1368
+ * and updates triggering.
1369
+ *
1370
+ * @param factory - The function that receives the `track` and `trigger` callbacks.
1371
+ * @see {@link https://vuejs.org/api/reactivity-advanced.html#customref}
1372
+ */
1372
1373
  function customRef(factory) {
1373
- return new CustomRefImpl(factory);
1374
+ return new CustomRefImpl(factory);
1374
1375
  }
1375
- // @__NO_SIDE_EFFECTS__
1376
+ /**
1377
+ * Converts a reactive object to a plain object where each property of the
1378
+ * resulting object is a ref pointing to the corresponding property of the
1379
+ * original object. Each individual ref is created using {@link toRef}.
1380
+ *
1381
+ * @param object - Reactive object to be made into an object of linked refs.
1382
+ * @see {@link https://vuejs.org/api/reactivity-utilities.html#torefs}
1383
+ */
1384
+ /* @__NO_SIDE_EFFECTS__ */
1376
1385
  function toRefs(object) {
1377
- const ret = isArray(object) ? new Array(object.length) : {};
1378
- for (const key in object) {
1379
- ret[key] = propertyToRef(object, key);
1380
- }
1381
- return ret;
1382
- }
1383
- class ObjectRefImpl {
1384
- constructor(_object, _key, _defaultValue) {
1385
- this._object = _object;
1386
- this._key = _key;
1387
- this._defaultValue = _defaultValue;
1388
- this["__v_isRef"] = true;
1389
- this._value = void 0;
1390
- this._raw = toRaw(_object);
1391
- let shallow = true;
1392
- let obj = _object;
1393
- if (!isArray(_object) || !isIntegerKey(String(_key))) {
1394
- do {
1395
- shallow = !isProxy(obj) || isShallow(obj);
1396
- } while (shallow && (obj = obj["__v_raw"]));
1397
- }
1398
- this._shallow = shallow;
1399
- }
1400
- get value() {
1401
- let val = this._object[this._key];
1402
- if (this._shallow) {
1403
- val = unref(val);
1404
- }
1405
- return this._value = val === void 0 ? this._defaultValue : val;
1406
- }
1407
- set value(newVal) {
1408
- if (this._shallow && /* @__PURE__ */ isRef(this._raw[this._key])) {
1409
- const nestedRef = this._object[this._key];
1410
- if (/* @__PURE__ */ isRef(nestedRef)) {
1411
- nestedRef.value = newVal;
1412
- return;
1413
- }
1414
- }
1415
- this._object[this._key] = newVal;
1416
- }
1417
- get dep() {
1418
- return getDepFromReactive(this._raw, this._key);
1419
- }
1420
- }
1421
- class GetterRefImpl {
1422
- constructor(_getter) {
1423
- this._getter = _getter;
1424
- this["__v_isRef"] = true;
1425
- this["__v_isReadonly"] = true;
1426
- this._value = void 0;
1427
- }
1428
- get value() {
1429
- return this._value = this._getter();
1430
- }
1431
- }
1432
- // @__NO_SIDE_EFFECTS__
1386
+ const ret = isArray(object) ? new Array(object.length) : {};
1387
+ for (const key in object) ret[key] = propertyToRef(object, key);
1388
+ return ret;
1389
+ }
1390
+ var ObjectRefImpl = class {
1391
+ constructor(_object, _key, _defaultValue) {
1392
+ this._object = _object;
1393
+ this._key = _key;
1394
+ this._defaultValue = _defaultValue;
1395
+ this["__v_isRef"] = true;
1396
+ this._value = void 0;
1397
+ this._raw = /* @__PURE__ */ toRaw(_object);
1398
+ let shallow = true;
1399
+ let obj = _object;
1400
+ if (!isArray(_object) || !isIntegerKey(String(_key))) do
1401
+ shallow = !/* @__PURE__ */ isProxy(obj) || /* @__PURE__ */ isShallow(obj);
1402
+ while (shallow && (obj = obj["__v_raw"]));
1403
+ this._shallow = shallow;
1404
+ }
1405
+ get value() {
1406
+ let val = this._object[this._key];
1407
+ if (this._shallow) val = unref(val);
1408
+ return this._value = val === void 0 ? this._defaultValue : val;
1409
+ }
1410
+ set value(newVal) {
1411
+ if (this._shallow && /* @__PURE__ */ isRef(this._raw[this._key])) {
1412
+ const nestedRef = this._object[this._key];
1413
+ if (/* @__PURE__ */ isRef(nestedRef)) {
1414
+ nestedRef.value = newVal;
1415
+ return;
1416
+ }
1417
+ }
1418
+ this._object[this._key] = newVal;
1419
+ }
1420
+ get dep() {
1421
+ return getDepFromReactive(this._raw, this._key);
1422
+ }
1423
+ };
1424
+ var GetterRefImpl = class {
1425
+ constructor(_getter) {
1426
+ this._getter = _getter;
1427
+ this["__v_isRef"] = true;
1428
+ this["__v_isReadonly"] = true;
1429
+ this._value = void 0;
1430
+ }
1431
+ get value() {
1432
+ return this._value = this._getter();
1433
+ }
1434
+ };
1435
+ /* @__NO_SIDE_EFFECTS__ */
1433
1436
  function toRef(source, key, defaultValue) {
1434
- if (/* @__PURE__ */ isRef(source)) {
1435
- return source;
1436
- } else if (isFunction(source)) {
1437
- return new GetterRefImpl(source);
1438
- } else if (isObject(source) && arguments.length > 1) {
1439
- return propertyToRef(source, key, defaultValue);
1440
- } else {
1441
- return /* @__PURE__ */ ref(source);
1442
- }
1437
+ if (/* @__PURE__ */ isRef(source)) return source;
1438
+ else if (isFunction(source)) return new GetterRefImpl(source);
1439
+ else if (isObject(source) && arguments.length > 1) return propertyToRef(source, key, defaultValue);
1440
+ else return /* @__PURE__ */ ref(source);
1443
1441
  }
1444
1442
  function propertyToRef(source, key, defaultValue) {
1445
- return new ObjectRefImpl(source, key, defaultValue);
1443
+ return new ObjectRefImpl(source, key, defaultValue);
1446
1444
  }
1447
1445
 
1446
+ //#endregion
1447
+ //#region packages/reactivity/src/effect.ts
1448
1448
  const EffectFlags = {
1449
- "ALLOW_RECURSE": 128,
1450
- "128": "ALLOW_RECURSE",
1451
- "PAUSED": 256,
1452
- "256": "PAUSED",
1453
- "STOP": 1024,
1454
- "1024": "STOP"
1449
+ "ALLOW_RECURSE": 128,
1450
+ "128": "ALLOW_RECURSE",
1451
+ "PAUSED": 256,
1452
+ "256": "PAUSED",
1453
+ "STOP": 1024,
1454
+ "1024": "STOP"
1455
1455
  };
1456
- class ReactiveEffect {
1457
- constructor(fn) {
1458
- this.deps = void 0;
1459
- this.depsTail = void 0;
1460
- this.subs = void 0;
1461
- this.subsTail = void 0;
1462
- this.flags = ReactiveFlags$1.Watching | ReactiveFlags$1.Dirty;
1463
- /**
1464
- * @internal
1465
- */
1466
- this.cleanups = [];
1467
- /**
1468
- * @internal
1469
- */
1470
- this.cleanupsLength = 0;
1471
- if (fn !== void 0) {
1472
- this.fn = fn;
1473
- }
1474
- if (activeEffectScope) {
1475
- link(this, activeEffectScope);
1476
- }
1477
- }
1478
- // @ts-expect-error
1479
- fn() {
1480
- }
1481
- get active() {
1482
- return !(this.flags & 1024);
1483
- }
1484
- pause() {
1485
- this.flags |= 256;
1486
- }
1487
- resume() {
1488
- const flags = this.flags &= -257;
1489
- if (flags & (ReactiveFlags$1.Dirty | ReactiveFlags$1.Pending)) {
1490
- this.notify();
1491
- }
1492
- }
1493
- notify() {
1494
- if (!(this.flags & 256) && this.dirty) {
1495
- this.run();
1496
- }
1497
- }
1498
- run() {
1499
- if (!this.active) {
1500
- return this.fn();
1501
- }
1502
- cleanup(this);
1503
- const prevSub = startTracking(this);
1504
- try {
1505
- return this.fn();
1506
- } finally {
1507
- endTracking(this, prevSub);
1508
- const flags = this.flags;
1509
- if ((flags & (ReactiveFlags$1.Recursed | 128)) === (ReactiveFlags$1.Recursed | 128)) {
1510
- this.flags = flags & ~ReactiveFlags$1.Recursed;
1511
- this.notify();
1512
- }
1513
- }
1514
- }
1515
- stop() {
1516
- if (!this.active) {
1517
- return;
1518
- }
1519
- this.flags = 1024;
1520
- let dep = this.deps;
1521
- while (dep !== void 0) {
1522
- dep = unlink(dep, this);
1523
- }
1524
- const sub = this.subs;
1525
- if (sub !== void 0) {
1526
- unlink(sub);
1527
- }
1528
- cleanup(this);
1529
- }
1530
- get dirty() {
1531
- const flags = this.flags;
1532
- if (flags & ReactiveFlags$1.Dirty) {
1533
- return true;
1534
- }
1535
- if (flags & ReactiveFlags$1.Pending) {
1536
- if (checkDirty(this.deps, this)) {
1537
- this.flags = flags | ReactiveFlags$1.Dirty;
1538
- return true;
1539
- } else {
1540
- this.flags = flags & ~ReactiveFlags$1.Pending;
1541
- }
1542
- }
1543
- return false;
1544
- }
1545
- }
1546
- {
1547
- setupOnTrigger(ReactiveEffect);
1548
- }
1456
+ var ReactiveEffect = class {
1457
+ fn() {}
1458
+ constructor(fn) {
1459
+ this.deps = void 0;
1460
+ this.depsTail = void 0;
1461
+ this.subs = void 0;
1462
+ this.subsTail = void 0;
1463
+ this.flags = 18;
1464
+ this.cleanups = [];
1465
+ this.cleanupsLength = 0;
1466
+ if (fn !== void 0) this.fn = fn;
1467
+ if (activeEffectScope) link(this, activeEffectScope);
1468
+ }
1469
+ get active() {
1470
+ return !(this.flags & 1024);
1471
+ }
1472
+ pause() {
1473
+ this.flags |= 256;
1474
+ }
1475
+ resume() {
1476
+ if ((this.flags &= -257) & 48) this.notify();
1477
+ }
1478
+ notify() {
1479
+ if (!(this.flags & 256) && this.dirty) this.run();
1480
+ }
1481
+ run() {
1482
+ if (!this.active) return this.fn();
1483
+ cleanup(this);
1484
+ const prevSub = startTracking(this);
1485
+ try {
1486
+ return this.fn();
1487
+ } finally {
1488
+ endTracking(this, prevSub);
1489
+ const flags = this.flags;
1490
+ if ((flags & 136) === 136) {
1491
+ this.flags = flags & -9;
1492
+ this.notify();
1493
+ }
1494
+ }
1495
+ }
1496
+ stop() {
1497
+ if (!this.active) return;
1498
+ this.flags = 1024;
1499
+ let dep = this.deps;
1500
+ while (dep !== void 0) dep = unlink(dep, this);
1501
+ const sub = this.subs;
1502
+ if (sub !== void 0) unlink(sub);
1503
+ cleanup(this);
1504
+ }
1505
+ get dirty() {
1506
+ const flags = this.flags;
1507
+ if (flags & 16) return true;
1508
+ if (flags & 32) if (checkDirty(this.deps, this)) {
1509
+ this.flags = flags | 16;
1510
+ return true;
1511
+ } else this.flags = flags & -33;
1512
+ return false;
1513
+ }
1514
+ };
1515
+ setupOnTrigger(ReactiveEffect);
1549
1516
  function effect(fn, options) {
1550
- if (fn.effect instanceof ReactiveEffect) {
1551
- fn = fn.effect.fn;
1552
- }
1553
- const e = new ReactiveEffect(fn);
1554
- if (options) {
1555
- const { onStop, scheduler } = options;
1556
- if (onStop) {
1557
- options.onStop = void 0;
1558
- const stop2 = e.stop.bind(e);
1559
- e.stop = () => {
1560
- stop2();
1561
- onStop();
1562
- };
1563
- }
1564
- if (scheduler) {
1565
- options.scheduler = void 0;
1566
- e.notify = () => {
1567
- if (!(e.flags & 256)) {
1568
- scheduler();
1569
- }
1570
- };
1571
- }
1572
- extend(e, options);
1573
- }
1574
- try {
1575
- e.run();
1576
- } catch (err) {
1577
- e.stop();
1578
- throw err;
1579
- }
1580
- const runner = e.run.bind(e);
1581
- runner.effect = e;
1582
- return runner;
1517
+ if (fn.effect instanceof ReactiveEffect) fn = fn.effect.fn;
1518
+ const e = new ReactiveEffect(fn);
1519
+ if (options) {
1520
+ const { onStop, scheduler } = options;
1521
+ if (onStop) {
1522
+ options.onStop = void 0;
1523
+ const stop = e.stop.bind(e);
1524
+ e.stop = () => {
1525
+ stop();
1526
+ onStop();
1527
+ };
1528
+ }
1529
+ if (scheduler) {
1530
+ options.scheduler = void 0;
1531
+ e.notify = () => {
1532
+ if (!(e.flags & 256)) scheduler();
1533
+ };
1534
+ }
1535
+ extend(e, options);
1536
+ }
1537
+ try {
1538
+ e.run();
1539
+ } catch (err) {
1540
+ e.stop();
1541
+ throw err;
1542
+ }
1543
+ const runner = e.run.bind(e);
1544
+ runner.effect = e;
1545
+ return runner;
1583
1546
  }
1547
+ /**
1548
+ * Stops the effect associated with the given runner.
1549
+ *
1550
+ * @param runner - Association with the effect to stop tracking.
1551
+ */
1584
1552
  function stop(runner) {
1585
- runner.effect.stop();
1553
+ runner.effect.stop();
1586
1554
  }
1587
1555
  const resetTrackingStack = [];
1556
+ /**
1557
+ * Temporarily pauses tracking.
1558
+ */
1588
1559
  function pauseTracking() {
1589
- resetTrackingStack.push(activeSub);
1590
- setActiveSub();
1560
+ resetTrackingStack.push(activeSub);
1561
+ setActiveSub();
1591
1562
  }
1563
+ /**
1564
+ * Re-enables effect tracking (if it was paused).
1565
+ */
1592
1566
  function enableTracking() {
1593
- const isPaused = activeSub === void 0;
1594
- if (!isPaused) {
1595
- resetTrackingStack.push(activeSub);
1596
- } else {
1597
- resetTrackingStack.push(void 0);
1598
- for (let i = resetTrackingStack.length - 1; i >= 0; i--) {
1599
- if (resetTrackingStack[i] !== void 0) {
1600
- setActiveSub(resetTrackingStack[i]);
1601
- break;
1602
- }
1603
- }
1604
- }
1567
+ if (!(activeSub === void 0)) resetTrackingStack.push(activeSub);
1568
+ else {
1569
+ resetTrackingStack.push(void 0);
1570
+ for (let i = resetTrackingStack.length - 1; i >= 0; i--) if (resetTrackingStack[i] !== void 0) {
1571
+ setActiveSub(resetTrackingStack[i]);
1572
+ break;
1573
+ }
1574
+ }
1605
1575
  }
1576
+ /**
1577
+ * Resets the previous global effect tracking state.
1578
+ */
1606
1579
  function resetTracking() {
1607
- if (resetTrackingStack.length === 0) {
1608
- warn(
1609
- `resetTracking() was called when there was no active tracking to reset.`
1610
- );
1611
- }
1612
- if (resetTrackingStack.length) {
1613
- setActiveSub(resetTrackingStack.pop());
1614
- } else {
1615
- setActiveSub();
1616
- }
1580
+ if (resetTrackingStack.length === 0) warn("resetTracking() was called when there was no active tracking to reset.");
1581
+ if (resetTrackingStack.length) setActiveSub(resetTrackingStack.pop());
1582
+ else setActiveSub();
1617
1583
  }
1618
1584
  function cleanup(sub) {
1619
- const l = sub.cleanupsLength;
1620
- if (l) {
1621
- for (let i = 0; i < l; i++) {
1622
- sub.cleanups[i]();
1623
- }
1624
- sub.cleanupsLength = 0;
1625
- }
1585
+ const l = sub.cleanupsLength;
1586
+ if (l) {
1587
+ for (let i = 0; i < l; i++) sub.cleanups[i]();
1588
+ sub.cleanupsLength = 0;
1589
+ }
1626
1590
  }
1591
+ /**
1592
+ * Registers a cleanup function for the current active effect.
1593
+ * The cleanup function is called right before the next effect run, or when the
1594
+ * effect is stopped.
1595
+ *
1596
+ * Throws a warning if there is no current active effect. The warning can be
1597
+ * suppressed by passing `true` to the second argument.
1598
+ *
1599
+ * @param fn - the cleanup function to be registered
1600
+ * @param failSilently - if `true`, will not throw warning when called without
1601
+ * an active effect.
1602
+ */
1627
1603
  function onEffectCleanup(fn, failSilently = false) {
1628
- if (activeSub instanceof ReactiveEffect) {
1629
- activeSub.cleanups[activeSub.cleanupsLength++] = () => cleanupEffect(fn);
1630
- } else if (!failSilently) {
1631
- warn(
1632
- `onEffectCleanup() was called when there was no active effect to associate with.`
1633
- );
1634
- }
1604
+ if (activeSub instanceof ReactiveEffect) activeSub.cleanups[activeSub.cleanupsLength++] = () => cleanupEffect(fn);
1605
+ else if (!failSilently) warn("onEffectCleanup() was called when there was no active effect to associate with.");
1635
1606
  }
1636
1607
  function cleanupEffect(fn) {
1637
- const prevSub = setActiveSub();
1638
- try {
1639
- fn();
1640
- } finally {
1641
- setActiveSub(prevSub);
1642
- }
1608
+ const prevSub = setActiveSub();
1609
+ try {
1610
+ fn();
1611
+ } finally {
1612
+ setActiveSub(prevSub);
1613
+ }
1643
1614
  }
1644
1615
 
1616
+ //#endregion
1617
+ //#region packages/reactivity/src/effectScope.ts
1645
1618
  let activeEffectScope;
1646
- class EffectScope {
1647
- constructor(detached = false) {
1648
- this.deps = void 0;
1649
- this.depsTail = void 0;
1650
- this.subs = void 0;
1651
- this.subsTail = void 0;
1652
- this.flags = 0;
1653
- /**
1654
- * @internal
1655
- */
1656
- this.cleanups = [];
1657
- /**
1658
- * @internal
1659
- */
1660
- this.cleanupsLength = 0;
1661
- if (!detached && activeEffectScope) {
1662
- link(this, activeEffectScope);
1663
- }
1664
- }
1665
- get active() {
1666
- return !(this.flags & 1024);
1667
- }
1668
- pause() {
1669
- if (!(this.flags & 256)) {
1670
- this.flags |= 256;
1671
- for (let link2 = this.deps; link2 !== void 0; link2 = link2.nextDep) {
1672
- const dep = link2.dep;
1673
- if ("pause" in dep) {
1674
- dep.pause();
1675
- }
1676
- }
1677
- }
1678
- }
1679
- /**
1680
- * Resumes the effect scope, including all child scopes and effects.
1681
- */
1682
- resume() {
1683
- const flags = this.flags;
1684
- if (flags & 256) {
1685
- this.flags = flags & -257;
1686
- for (let link2 = this.deps; link2 !== void 0; link2 = link2.nextDep) {
1687
- const dep = link2.dep;
1688
- if ("resume" in dep) {
1689
- dep.resume();
1690
- }
1691
- }
1692
- }
1693
- }
1694
- run(fn) {
1695
- const prevScope = activeEffectScope;
1696
- try {
1697
- activeEffectScope = this;
1698
- return fn();
1699
- } finally {
1700
- activeEffectScope = prevScope;
1701
- }
1702
- }
1703
- stop() {
1704
- if (!this.active) {
1705
- return;
1706
- }
1707
- this.flags = 1024;
1708
- this.reset();
1709
- const sub = this.subs;
1710
- if (sub !== void 0) {
1711
- unlink(sub);
1712
- }
1713
- }
1714
- /**
1715
- * @internal
1716
- */
1717
- reset() {
1718
- let dep = this.deps;
1719
- while (dep !== void 0) {
1720
- const node = dep.dep;
1721
- if ("stop" in node) {
1722
- dep = dep.nextDep;
1723
- node.stop();
1724
- } else {
1725
- dep = unlink(dep, this);
1726
- }
1727
- }
1728
- cleanup(this);
1729
- }
1730
- }
1619
+ var EffectScope = class {
1620
+ constructor(detached = false) {
1621
+ this.deps = void 0;
1622
+ this.depsTail = void 0;
1623
+ this.subs = void 0;
1624
+ this.subsTail = void 0;
1625
+ this.flags = 0;
1626
+ this.cleanups = [];
1627
+ this.cleanupsLength = 0;
1628
+ if (!detached && activeEffectScope) link(this, activeEffectScope);
1629
+ }
1630
+ get active() {
1631
+ return !(this.flags & 1024);
1632
+ }
1633
+ pause() {
1634
+ if (!(this.flags & 256)) {
1635
+ this.flags |= 256;
1636
+ for (let link = this.deps; link !== void 0; link = link.nextDep) {
1637
+ const dep = link.dep;
1638
+ if ("pause" in dep) dep.pause();
1639
+ }
1640
+ }
1641
+ }
1642
+ /**
1643
+ * Resumes the effect scope, including all child scopes and effects.
1644
+ */
1645
+ resume() {
1646
+ const flags = this.flags;
1647
+ if (flags & 256) {
1648
+ this.flags = flags & -257;
1649
+ for (let link = this.deps; link !== void 0; link = link.nextDep) {
1650
+ const dep = link.dep;
1651
+ if ("resume" in dep) dep.resume();
1652
+ }
1653
+ }
1654
+ }
1655
+ run(fn) {
1656
+ const prevScope = activeEffectScope;
1657
+ try {
1658
+ activeEffectScope = this;
1659
+ return fn();
1660
+ } finally {
1661
+ activeEffectScope = prevScope;
1662
+ }
1663
+ }
1664
+ stop() {
1665
+ if (!this.active) return;
1666
+ this.flags = 1024;
1667
+ this.reset();
1668
+ const sub = this.subs;
1669
+ if (sub !== void 0) unlink(sub);
1670
+ }
1671
+ /**
1672
+ * @internal
1673
+ */
1674
+ reset() {
1675
+ let dep = this.deps;
1676
+ while (dep !== void 0) {
1677
+ const node = dep.dep;
1678
+ if ("stop" in node) {
1679
+ dep = dep.nextDep;
1680
+ node.stop();
1681
+ } else dep = unlink(dep, this);
1682
+ }
1683
+ cleanup(this);
1684
+ }
1685
+ };
1686
+ /**
1687
+ * Creates an effect scope object which can capture the reactive effects (i.e.
1688
+ * computed and watchers) created within it so that these effects can be
1689
+ * disposed together. For detailed use cases of this API, please consult its
1690
+ * corresponding {@link https://github.com/vuejs/rfcs/blob/master/active-rfcs/0041-reactivity-effect-scope.md | RFC}.
1691
+ *
1692
+ * @param detached - Can be used to create a "detached" effect scope.
1693
+ * @see {@link https://vuejs.org/api/reactivity-advanced.html#effectscope}
1694
+ */
1731
1695
  function effectScope(detached) {
1732
- return new EffectScope(detached);
1696
+ return new EffectScope(detached);
1733
1697
  }
1698
+ /**
1699
+ * Returns the current active effect scope if there is one.
1700
+ *
1701
+ * @see {@link https://vuejs.org/api/reactivity-advanced.html#getcurrentscope}
1702
+ */
1734
1703
  function getCurrentScope() {
1735
- return activeEffectScope;
1704
+ return activeEffectScope;
1736
1705
  }
1737
1706
  function setCurrentScope(scope) {
1738
- try {
1739
- return activeEffectScope;
1740
- } finally {
1741
- activeEffectScope = scope;
1742
- }
1707
+ try {
1708
+ return activeEffectScope;
1709
+ } finally {
1710
+ activeEffectScope = scope;
1711
+ }
1743
1712
  }
1713
+ /**
1714
+ * Registers a dispose callback on the current active effect scope. The
1715
+ * callback will be invoked when the associated effect scope is stopped.
1716
+ *
1717
+ * @param fn - The callback function to attach to the scope's cleanup.
1718
+ * @see {@link https://vuejs.org/api/reactivity-advanced.html#onscopedispose}
1719
+ */
1744
1720
  function onScopeDispose(fn, failSilently = false) {
1745
- if (activeEffectScope !== void 0) {
1746
- activeEffectScope.cleanups[activeEffectScope.cleanupsLength++] = fn;
1747
- } else if (!failSilently) {
1748
- warn(
1749
- `onScopeDispose() is called when there is no active effect scope to be associated with.`
1750
- );
1751
- }
1721
+ if (activeEffectScope !== void 0) activeEffectScope.cleanups[activeEffectScope.cleanupsLength++] = fn;
1722
+ else if (!failSilently) warn("onScopeDispose() is called when there is no active effect scope to be associated with.");
1752
1723
  }
1753
1724
 
1754
- class ComputedRefImpl {
1755
- constructor(fn, setter) {
1756
- this.fn = fn;
1757
- this.setter = setter;
1758
- /**
1759
- * @internal
1760
- */
1761
- this._value = void 0;
1762
- this.subs = void 0;
1763
- this.subsTail = void 0;
1764
- this.deps = void 0;
1765
- this.depsTail = void 0;
1766
- this.flags = ReactiveFlags$1.Mutable | ReactiveFlags$1.Dirty;
1767
- /**
1768
- * @internal
1769
- */
1770
- this.__v_isRef = true;
1771
- this["__v_isReadonly"] = !setter;
1772
- }
1773
- // TODO isolatedDeclarations "__v_isReadonly"
1774
- // for backwards compat
1775
- get effect() {
1776
- return this;
1777
- }
1778
- // for backwards compat
1779
- get dep() {
1780
- return this;
1781
- }
1782
- /**
1783
- * @internal
1784
- * for backwards compat
1785
- */
1786
- get _dirty() {
1787
- const flags = this.flags;
1788
- if (flags & ReactiveFlags$1.Dirty) {
1789
- return true;
1790
- }
1791
- if (flags & ReactiveFlags$1.Pending) {
1792
- if (checkDirty(this.deps, this)) {
1793
- this.flags = flags | ReactiveFlags$1.Dirty;
1794
- return true;
1795
- } else {
1796
- this.flags = flags & ~ReactiveFlags$1.Pending;
1797
- }
1798
- }
1799
- return false;
1800
- }
1801
- /**
1802
- * @internal
1803
- * for backwards compat
1804
- */
1805
- set _dirty(v) {
1806
- if (v) {
1807
- this.flags |= ReactiveFlags$1.Dirty;
1808
- } else {
1809
- this.flags &= ~(ReactiveFlags$1.Dirty | ReactiveFlags$1.Pending);
1810
- }
1811
- }
1812
- get value() {
1813
- const flags = this.flags;
1814
- if (flags & ReactiveFlags$1.Dirty || flags & ReactiveFlags$1.Pending && checkDirty(this.deps, this)) {
1815
- if (this.update()) {
1816
- const subs = this.subs;
1817
- if (subs !== void 0) {
1818
- shallowPropagate(subs);
1819
- }
1820
- }
1821
- } else if (flags & ReactiveFlags$1.Pending) {
1822
- this.flags = flags & ~ReactiveFlags$1.Pending;
1823
- }
1824
- if (activeSub !== void 0) {
1825
- {
1826
- onTrack(activeSub, {
1827
- target: this,
1828
- type: "get",
1829
- key: "value"
1830
- });
1831
- }
1832
- link(this, activeSub);
1833
- } else if (activeEffectScope !== void 0) {
1834
- link(this, activeEffectScope);
1835
- }
1836
- return this._value;
1837
- }
1838
- set value(newValue) {
1839
- if (this.setter) {
1840
- this.setter(newValue);
1841
- } else {
1842
- warn("Write operation failed: computed value is readonly");
1843
- }
1844
- }
1845
- update() {
1846
- const prevSub = startTracking(this);
1847
- try {
1848
- const oldValue = this._value;
1849
- const newValue = this.fn(oldValue);
1850
- if (hasChanged(oldValue, newValue)) {
1851
- this._value = newValue;
1852
- return true;
1853
- }
1854
- return false;
1855
- } finally {
1856
- endTracking(this, prevSub);
1857
- }
1858
- }
1859
- }
1860
- {
1861
- setupOnTrigger(ComputedRefImpl);
1862
- }
1863
- // @__NO_SIDE_EFFECTS__
1725
+ //#endregion
1726
+ //#region packages/reactivity/src/computed.ts
1727
+ /**
1728
+ * @private exported by @vue/reactivity for Vue core use, but not exported from
1729
+ * the main vue package
1730
+ */
1731
+ var ComputedRefImpl = class {
1732
+ get effect() {
1733
+ return this;
1734
+ }
1735
+ get dep() {
1736
+ return this;
1737
+ }
1738
+ /**
1739
+ * @internal
1740
+ * for backwards compat
1741
+ */
1742
+ get _dirty() {
1743
+ const flags = this.flags;
1744
+ if (flags & ReactiveFlags$1.Dirty) return true;
1745
+ if (flags & ReactiveFlags$1.Pending) if (checkDirty(this.deps, this)) {
1746
+ this.flags = flags | ReactiveFlags$1.Dirty;
1747
+ return true;
1748
+ } else this.flags = flags & ~ReactiveFlags$1.Pending;
1749
+ return false;
1750
+ }
1751
+ /**
1752
+ * @internal
1753
+ * for backwards compat
1754
+ */
1755
+ set _dirty(v) {
1756
+ if (v) this.flags |= ReactiveFlags$1.Dirty;
1757
+ else this.flags &= ~(ReactiveFlags$1.Dirty | ReactiveFlags$1.Pending);
1758
+ }
1759
+ constructor(fn, setter) {
1760
+ this.fn = fn;
1761
+ this.setter = setter;
1762
+ this._value = void 0;
1763
+ this.subs = void 0;
1764
+ this.subsTail = void 0;
1765
+ this.deps = void 0;
1766
+ this.depsTail = void 0;
1767
+ this.flags = ReactiveFlags$1.Mutable | ReactiveFlags$1.Dirty;
1768
+ this.__v_isRef = true;
1769
+ this["__v_isReadonly"] = !setter;
1770
+ }
1771
+ get value() {
1772
+ const flags = this.flags;
1773
+ if (flags & ReactiveFlags$1.Dirty || flags & ReactiveFlags$1.Pending && checkDirty(this.deps, this)) {
1774
+ if (this.update()) {
1775
+ const subs = this.subs;
1776
+ if (subs !== void 0) shallowPropagate(subs);
1777
+ }
1778
+ } else if (flags & ReactiveFlags$1.Pending) this.flags = flags & ~ReactiveFlags$1.Pending;
1779
+ if (activeSub !== void 0) {
1780
+ onTrack(activeSub, {
1781
+ target: this,
1782
+ type: "get",
1783
+ key: "value"
1784
+ });
1785
+ link(this, activeSub);
1786
+ } else if (activeEffectScope !== void 0) link(this, activeEffectScope);
1787
+ return this._value;
1788
+ }
1789
+ set value(newValue) {
1790
+ if (this.setter) this.setter(newValue);
1791
+ else warn("Write operation failed: computed value is readonly");
1792
+ }
1793
+ update() {
1794
+ const prevSub = startTracking(this);
1795
+ try {
1796
+ const oldValue = this._value;
1797
+ const newValue = this.fn(oldValue);
1798
+ if (hasChanged(oldValue, newValue)) {
1799
+ this._value = newValue;
1800
+ return true;
1801
+ }
1802
+ return false;
1803
+ } finally {
1804
+ endTracking(this, prevSub);
1805
+ }
1806
+ }
1807
+ };
1808
+ setupOnTrigger(ComputedRefImpl);
1809
+ /* @__NO_SIDE_EFFECTS__ */
1864
1810
  function computed(getterOrOptions, debugOptions, isSSR = false) {
1865
- let getter;
1866
- let setter;
1867
- if (isFunction(getterOrOptions)) {
1868
- getter = getterOrOptions;
1869
- } else {
1870
- getter = getterOrOptions.get;
1871
- setter = getterOrOptions.set;
1872
- }
1873
- const cRef = new ComputedRefImpl(getter, setter);
1874
- if (debugOptions && !isSSR) {
1875
- cRef.onTrack = debugOptions.onTrack;
1876
- cRef.onTrigger = debugOptions.onTrigger;
1877
- }
1878
- return cRef;
1811
+ let getter;
1812
+ let setter;
1813
+ if (isFunction(getterOrOptions)) getter = getterOrOptions;
1814
+ else {
1815
+ getter = getterOrOptions.get;
1816
+ setter = getterOrOptions.set;
1817
+ }
1818
+ const cRef = new ComputedRefImpl(getter, setter);
1819
+ if (debugOptions && !isSSR) {
1820
+ cRef.onTrack = debugOptions.onTrack;
1821
+ cRef.onTrigger = debugOptions.onTrigger;
1822
+ }
1823
+ return cRef;
1879
1824
  }
1880
1825
 
1826
+ //#endregion
1827
+ //#region packages/reactivity/src/constants.ts
1881
1828
  const TrackOpTypes = {
1882
- "GET": "get",
1883
- "HAS": "has",
1884
- "ITERATE": "iterate"
1829
+ "GET": "get",
1830
+ "HAS": "has",
1831
+ "ITERATE": "iterate"
1885
1832
  };
1886
1833
  const TriggerOpTypes = {
1887
- "SET": "set",
1888
- "ADD": "add",
1889
- "DELETE": "delete",
1890
- "CLEAR": "clear"
1834
+ "SET": "set",
1835
+ "ADD": "add",
1836
+ "DELETE": "delete",
1837
+ "CLEAR": "clear"
1891
1838
  };
1892
1839
  const ReactiveFlags = {
1893
- "SKIP": "__v_skip",
1894
- "IS_REACTIVE": "__v_isReactive",
1895
- "IS_READONLY": "__v_isReadonly",
1896
- "IS_SHALLOW": "__v_isShallow",
1897
- "RAW": "__v_raw",
1898
- "IS_REF": "__v_isRef"
1840
+ "SKIP": "__v_skip",
1841
+ "IS_REACTIVE": "__v_isReactive",
1842
+ "IS_READONLY": "__v_isReadonly",
1843
+ "IS_SHALLOW": "__v_isShallow",
1844
+ "RAW": "__v_raw",
1845
+ "IS_REF": "__v_isRef"
1899
1846
  };
1900
1847
 
1848
+ //#endregion
1849
+ //#region packages/reactivity/src/watch.ts
1901
1850
  const WatchErrorCodes = {
1902
- "WATCH_GETTER": 2,
1903
- "2": "WATCH_GETTER",
1904
- "WATCH_CALLBACK": 3,
1905
- "3": "WATCH_CALLBACK",
1906
- "WATCH_CLEANUP": 4,
1907
- "4": "WATCH_CLEANUP"
1851
+ "WATCH_GETTER": 2,
1852
+ "2": "WATCH_GETTER",
1853
+ "WATCH_CALLBACK": 3,
1854
+ "3": "WATCH_CALLBACK",
1855
+ "WATCH_CLEANUP": 4,
1856
+ "4": "WATCH_CLEANUP"
1908
1857
  };
1909
1858
  const INITIAL_WATCHER_VALUE = {};
1910
1859
  let activeWatcher = void 0;
1860
+ /**
1861
+ * Returns the current active effect if there is one.
1862
+ */
1911
1863
  function getCurrentWatcher() {
1912
- return activeWatcher;
1864
+ return activeWatcher;
1913
1865
  }
1866
+ /**
1867
+ * Registers a cleanup callback on the current active effect. This
1868
+ * registered cleanup callback will be invoked right before the
1869
+ * associated effect re-runs.
1870
+ *
1871
+ * @param cleanupFn - The callback function to attach to the effect's cleanup.
1872
+ * @param failSilently - if `true`, will not throw warning when called without
1873
+ * an active effect.
1874
+ * @param owner - The effect that this cleanup function should be attached to.
1875
+ * By default, the current active effect.
1876
+ */
1914
1877
  function onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) {
1915
- if (owner) {
1916
- const { call } = owner.options;
1917
- if (call) {
1918
- owner.cleanups[owner.cleanupsLength++] = () => call(cleanupFn, 4);
1919
- } else {
1920
- owner.cleanups[owner.cleanupsLength++] = cleanupFn;
1921
- }
1922
- } else if (!failSilently) {
1923
- warn(
1924
- `onWatcherCleanup() was called when there was no active watcher to associate with.`
1925
- );
1926
- }
1927
- }
1928
- class WatcherEffect extends ReactiveEffect {
1929
- constructor(source, cb, options = EMPTY_OBJ) {
1930
- const { deep, once, call, onWarn } = options;
1931
- let getter;
1932
- let forceTrigger = false;
1933
- let isMultiSource = false;
1934
- if (isRef(source)) {
1935
- getter = () => source.value;
1936
- forceTrigger = isShallow(source);
1937
- } else if (isReactive(source)) {
1938
- getter = () => reactiveGetter(source, deep);
1939
- forceTrigger = true;
1940
- } else if (isArray(source)) {
1941
- isMultiSource = true;
1942
- forceTrigger = source.some((s) => isReactive(s) || isShallow(s));
1943
- getter = () => source.map((s) => {
1944
- if (isRef(s)) {
1945
- return s.value;
1946
- } else if (isReactive(s)) {
1947
- return reactiveGetter(s, deep);
1948
- } else if (isFunction(s)) {
1949
- return call ? call(s, 2) : s();
1950
- } else {
1951
- warnInvalidSource(s, onWarn);
1952
- }
1953
- });
1954
- } else if (isFunction(source)) {
1955
- if (cb) {
1956
- getter = call ? () => call(source, 2) : source;
1957
- } else {
1958
- getter = () => {
1959
- if (this.cleanupsLength) {
1960
- const prevSub = setActiveSub();
1961
- try {
1962
- cleanup(this);
1963
- } finally {
1964
- setActiveSub(prevSub);
1965
- }
1966
- }
1967
- const currentEffect = activeWatcher;
1968
- activeWatcher = this;
1969
- try {
1970
- return call ? call(source, 3, [
1971
- this.boundCleanup
1972
- ]) : source(this.boundCleanup);
1973
- } finally {
1974
- activeWatcher = currentEffect;
1975
- }
1976
- };
1977
- }
1978
- } else {
1979
- getter = NOOP;
1980
- warnInvalidSource(source, onWarn);
1981
- }
1982
- if (cb && deep) {
1983
- const baseGetter = getter;
1984
- const depth = deep === true ? Infinity : deep;
1985
- getter = () => traverse(baseGetter(), depth);
1986
- }
1987
- super(getter);
1988
- this.cb = cb;
1989
- this.options = options;
1990
- this.boundCleanup = (fn) => onWatcherCleanup(fn, false, this);
1991
- this.forceTrigger = forceTrigger;
1992
- this.isMultiSource = isMultiSource;
1993
- if (once && cb) {
1994
- const _cb = cb;
1995
- cb = (...args) => {
1996
- _cb(...args);
1997
- this.stop();
1998
- };
1999
- }
2000
- this.cb = cb;
2001
- this.oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;
2002
- {
2003
- this.onTrack = options.onTrack;
2004
- this.onTrigger = options.onTrigger;
2005
- }
2006
- }
2007
- run(initialRun = false) {
2008
- const oldValue = this.oldValue;
2009
- const newValue = this.oldValue = super.run();
2010
- if (!this.cb) {
2011
- return;
2012
- }
2013
- const { immediate, deep, call } = this.options;
2014
- if (initialRun && !immediate) {
2015
- return;
2016
- }
2017
- if (deep || this.forceTrigger || (this.isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {
2018
- cleanup(this);
2019
- const currentWatcher = activeWatcher;
2020
- activeWatcher = this;
2021
- try {
2022
- const args = [
2023
- newValue,
2024
- // pass undefined as the old value when it's changed for the first time
2025
- oldValue === INITIAL_WATCHER_VALUE ? void 0 : this.isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,
2026
- this.boundCleanup
2027
- ];
2028
- call ? call(this.cb, 3, args) : (
2029
- // @ts-expect-error
2030
- this.cb(...args)
2031
- );
2032
- } finally {
2033
- activeWatcher = currentWatcher;
2034
- }
2035
- }
2036
- }
2037
- }
1878
+ if (owner) {
1879
+ const { call } = owner.options;
1880
+ if (call) owner.cleanups[owner.cleanupsLength++] = () => call(cleanupFn, 4);
1881
+ else owner.cleanups[owner.cleanupsLength++] = cleanupFn;
1882
+ } else if (!failSilently) warn("onWatcherCleanup() was called when there was no active watcher to associate with.");
1883
+ }
1884
+ var WatcherEffect = class extends ReactiveEffect {
1885
+ constructor(source, cb, options = EMPTY_OBJ) {
1886
+ const { deep, once, call, onWarn } = options;
1887
+ let getter;
1888
+ let forceTrigger = false;
1889
+ let isMultiSource = false;
1890
+ if (/* @__PURE__ */ isRef(source)) {
1891
+ getter = () => source.value;
1892
+ forceTrigger = /* @__PURE__ */ isShallow(source);
1893
+ } else if (/* @__PURE__ */ isReactive(source)) {
1894
+ getter = () => reactiveGetter(source, deep);
1895
+ forceTrigger = true;
1896
+ } else if (isArray(source)) {
1897
+ isMultiSource = true;
1898
+ forceTrigger = source.some((s) => /* @__PURE__ */ isReactive(s) || /* @__PURE__ */ isShallow(s));
1899
+ getter = () => source.map((s) => {
1900
+ if (/* @__PURE__ */ isRef(s)) return s.value;
1901
+ else if (/* @__PURE__ */ isReactive(s)) return reactiveGetter(s, deep);
1902
+ else if (isFunction(s)) return call ? call(s, 2) : s();
1903
+ else warnInvalidSource(s, onWarn);
1904
+ });
1905
+ } else if (isFunction(source)) if (cb) getter = call ? () => call(source, 2) : source;
1906
+ else getter = () => {
1907
+ if (this.cleanupsLength) {
1908
+ const prevSub = setActiveSub();
1909
+ try {
1910
+ cleanup(this);
1911
+ } finally {
1912
+ setActiveSub(prevSub);
1913
+ }
1914
+ }
1915
+ const currentEffect = activeWatcher;
1916
+ activeWatcher = this;
1917
+ try {
1918
+ return call ? call(source, 3, [this.boundCleanup]) : source(this.boundCleanup);
1919
+ } finally {
1920
+ activeWatcher = currentEffect;
1921
+ }
1922
+ };
1923
+ else {
1924
+ getter = NOOP;
1925
+ warnInvalidSource(source, onWarn);
1926
+ }
1927
+ if (cb && deep) {
1928
+ const baseGetter = getter;
1929
+ const depth = deep === true ? Infinity : deep;
1930
+ getter = () => traverse(baseGetter(), depth);
1931
+ }
1932
+ super(getter);
1933
+ this.cb = cb;
1934
+ this.options = options;
1935
+ this.boundCleanup = (fn) => onWatcherCleanup(fn, false, this);
1936
+ this.forceTrigger = forceTrigger;
1937
+ this.isMultiSource = isMultiSource;
1938
+ if (once && cb) {
1939
+ const _cb = cb;
1940
+ cb = (...args) => {
1941
+ _cb(...args);
1942
+ this.stop();
1943
+ };
1944
+ }
1945
+ this.cb = cb;
1946
+ this.oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;
1947
+ this.onTrack = options.onTrack;
1948
+ this.onTrigger = options.onTrigger;
1949
+ }
1950
+ run(initialRun = false) {
1951
+ const oldValue = this.oldValue;
1952
+ const newValue = this.oldValue = super.run();
1953
+ if (!this.cb) return;
1954
+ const { immediate, deep, call } = this.options;
1955
+ if (initialRun && !immediate) return;
1956
+ if (deep || this.forceTrigger || (this.isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {
1957
+ cleanup(this);
1958
+ const currentWatcher = activeWatcher;
1959
+ activeWatcher = this;
1960
+ try {
1961
+ const args = [
1962
+ newValue,
1963
+ oldValue === INITIAL_WATCHER_VALUE ? void 0 : this.isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,
1964
+ this.boundCleanup
1965
+ ];
1966
+ call ? call(this.cb, 3, args) : this.cb(...args);
1967
+ } finally {
1968
+ activeWatcher = currentWatcher;
1969
+ }
1970
+ }
1971
+ }
1972
+ };
2038
1973
  function reactiveGetter(source, deep) {
2039
- if (deep) return source;
2040
- if (isShallow(source) || deep === false || deep === 0)
2041
- return traverse(source, 1);
2042
- return traverse(source);
1974
+ if (deep) return source;
1975
+ if (/* @__PURE__ */ isShallow(source) || deep === false || deep === 0) return traverse(source, 1);
1976
+ return traverse(source);
2043
1977
  }
2044
1978
  function warnInvalidSource(s, onWarn) {
2045
- (onWarn || warn)(
2046
- `Invalid watch source: `,
2047
- s,
2048
- `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`
2049
- );
1979
+ (onWarn || warn)(`Invalid watch source: `, s, "A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.");
2050
1980
  }
2051
1981
  function watch(source, cb, options = EMPTY_OBJ) {
2052
- const effect = new WatcherEffect(source, cb, options);
2053
- effect.run(true);
2054
- const stop = effect.stop.bind(effect);
2055
- stop.pause = effect.pause.bind(effect);
2056
- stop.resume = effect.resume.bind(effect);
2057
- stop.stop = stop;
2058
- return stop;
1982
+ const effect = new WatcherEffect(source, cb, options);
1983
+ effect.run(true);
1984
+ const stop = effect.stop.bind(effect);
1985
+ stop.pause = effect.pause.bind(effect);
1986
+ stop.resume = effect.resume.bind(effect);
1987
+ stop.stop = stop;
1988
+ return stop;
2059
1989
  }
2060
1990
  function traverse(value, depth = Infinity, seen) {
2061
- if (depth <= 0 || !isObject(value) || value["__v_skip"]) {
2062
- return value;
2063
- }
2064
- seen = seen || /* @__PURE__ */ new Map();
2065
- if ((seen.get(value) || 0) >= depth) {
2066
- return value;
2067
- }
2068
- seen.set(value, depth);
2069
- depth--;
2070
- if (isRef(value)) {
2071
- traverse(value.value, depth, seen);
2072
- } else if (isArray(value)) {
2073
- for (let i = 0; i < value.length; i++) {
2074
- traverse(value[i], depth, seen);
2075
- }
2076
- } else if (isSet(value) || isMap(value)) {
2077
- value.forEach((v) => {
2078
- traverse(v, depth, seen);
2079
- });
2080
- } else if (isPlainObject(value)) {
2081
- for (const key in value) {
2082
- traverse(value[key], depth, seen);
2083
- }
2084
- for (const key of Object.getOwnPropertySymbols(value)) {
2085
- if (Object.prototype.propertyIsEnumerable.call(value, key)) {
2086
- traverse(value[key], depth, seen);
2087
- }
2088
- }
2089
- }
2090
- return value;
1991
+ if (depth <= 0 || !isObject(value) || value["__v_skip"]) return value;
1992
+ seen = seen || /* @__PURE__ */ new Map();
1993
+ if ((seen.get(value) || 0) >= depth) return value;
1994
+ seen.set(value, depth);
1995
+ depth--;
1996
+ if (/* @__PURE__ */ isRef(value)) traverse(value.value, depth, seen);
1997
+ else if (isArray(value)) for (let i = 0; i < value.length; i++) traverse(value[i], depth, seen);
1998
+ else if (isSet(value) || isMap(value)) value.forEach((v) => {
1999
+ traverse(v, depth, seen);
2000
+ });
2001
+ else if (isPlainObject(value)) {
2002
+ for (const key in value) traverse(value[key], depth, seen);
2003
+ for (const key of Object.getOwnPropertySymbols(value)) if (Object.prototype.propertyIsEnumerable.call(value, key)) traverse(value[key], depth, seen);
2004
+ }
2005
+ return value;
2091
2006
  }
2092
2007
 
2093
- export { ARRAY_ITERATE_KEY, EffectFlags, EffectScope, ITERATE_KEY, MAP_KEY_ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, WatchErrorCodes, WatcherEffect, computed, customRef, effect, effectScope, enableTracking, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onEffectCleanup, onScopeDispose, onWatcherCleanup, pauseTracking, proxyRefs, reactive, reactiveReadArray, readonly, ref, resetTracking, setActiveSub, setCurrentScope, shallowReactive, shallowReadArray, shallowReadonly, shallowRef, stop, toRaw, toReactive, toReadonly, toRef, toRefs, toValue, track, traverse, trigger, triggerRef, unref, watch };
2008
+ //#endregion
2009
+ export { ARRAY_ITERATE_KEY, EffectFlags, EffectScope, ITERATE_KEY, MAP_KEY_ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, WatchErrorCodes, WatcherEffect, computed, customRef, effect, effectScope, enableTracking, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onEffectCleanup, onScopeDispose, onWatcherCleanup, pauseTracking, proxyRefs, reactive, reactiveReadArray, readonly, ref, resetTracking, setActiveSub, setCurrentScope, shallowReactive, shallowReadArray, shallowReadonly, shallowRef, stop, toRaw, toReactive, toReadonly, toRef, toRefs, toValue, track, traverse, trigger, triggerRef, unref, watch };