@solidjs/signals 0.8.3 → 0.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/prod.js CHANGED
@@ -1,728 +1,645 @@
1
- // src/core/error.ts
2
- var NotReadyError = class extends Error {
3
- constructor(cause) {
1
+ class NotReadyError extends Error {
2
+ cause;
3
+ constructor(e) {
4
4
  super();
5
- this.cause = cause;
5
+ this.cause = e;
6
6
  }
7
- };
8
- var NoOwnerError = class extends Error {
7
+ }
8
+ class NoOwnerError extends Error {
9
9
  constructor() {
10
10
  super("");
11
11
  }
12
- };
13
- var ContextNotFoundError = class extends Error {
14
- constructor() {
15
- super(
16
- ""
17
- );
18
- }
19
- };
20
-
21
- // src/core/constants.ts
22
- var NOT_PENDING = {};
23
- var SUPPORTS_PROXY = typeof Proxy === "function";
24
-
25
- // src/core/heap.ts
26
- function actualInsertIntoHeap(n, heap) {
27
- const parentHeight = (n.w?.$ ? n.w.aa?.c : n.w?.c) ?? -1;
28
- if (parentHeight >= n.c)
29
- n.c = parentHeight + 1;
30
- const height = n.c;
31
- const heapAtHeight = heap.s[height];
32
- if (heapAtHeight === void 0) {
33
- heap.s[height] = n;
34
- } else {
35
- const tail = heapAtHeight.z;
36
- tail.Q = n;
37
- n.z = tail;
38
- heapAtHeight.z = n;
39
- }
40
- if (height > heap.L) {
41
- heap.L = height;
42
- }
43
- }
44
- function insertIntoHeap(n, heap) {
45
- let flags = n.b;
46
- if (flags & (8 /* InHeap */ | 4 /* RecomputingDeps */))
47
- return;
48
- if (flags & 1 /* Check */) {
49
- n.b = flags & ~(1 /* Check */ | 2 /* Dirty */) | 2 /* Dirty */ | 8 /* InHeap */;
50
- } else
51
- n.b = flags | 8 /* InHeap */;
52
- if (!(flags & 16 /* InHeapHeight */)) {
53
- actualInsertIntoHeap(n, heap);
54
- }
55
- }
56
- function insertIntoHeapHeight(n, heap) {
57
- let flags = n.b;
58
- if (flags & (8 /* InHeap */ | 4 /* RecomputingDeps */ | 16 /* InHeapHeight */))
59
- return;
60
- n.b = flags | 16 /* InHeapHeight */;
61
- actualInsertIntoHeap(n, heap);
62
- }
63
- function deleteFromHeap(n, heap) {
64
- const flags = n.b;
65
- if (!(flags & (8 /* InHeap */ | 16 /* InHeapHeight */)))
66
- return;
67
- n.b = flags & ~(8 /* InHeap */ | 16 /* InHeapHeight */);
68
- const height = n.c;
69
- if (n.z === n) {
70
- heap.s[height] = void 0;
71
- } else {
72
- const next = n.Q;
73
- const dhh = heap.s[height];
74
- const end = next ?? dhh;
75
- if (n === dhh) {
76
- heap.s[height] = next;
77
- } else {
78
- n.z.Q = next;
79
- }
80
- end.z = n.z;
81
- }
82
- n.z = n;
83
- n.Q = void 0;
84
12
  }
85
- function markHeap(heap) {
86
- if (heap.ba)
87
- return;
88
- heap.ba = true;
89
- for (let i = 0; i <= heap.L; i++) {
90
- for (let el = heap.s[i]; el !== void 0; el = el.Q) {
91
- if (el.b & 8 /* InHeap */)
92
- markNode(el);
93
- }
13
+ class ContextNotFoundError extends Error {
14
+ constructor() {
15
+ super("");
94
16
  }
95
17
  }
96
- function markNode(el, newState = 2 /* Dirty */) {
97
- const flags = el.b;
98
- if ((flags & (1 /* Check */ | 2 /* Dirty */)) >= newState)
99
- return;
100
- el.b = flags & ~(1 /* Check */ | 2 /* Dirty */) | newState;
101
- for (let link2 = el.x; link2 !== null; link2 = link2.A) {
102
- markNode(link2.j, 1 /* Check */);
103
- }
104
- if (el.ca !== null) {
105
- for (let child = el.ca; child !== null; child = child.sa) {
106
- for (let link2 = child.x; link2 !== null; link2 = link2.A) {
107
- markNode(link2.j, 1 /* Check */);
18
+ const REACTIVE_NONE = 0;
19
+ const REACTIVE_CHECK = 1 << 0;
20
+ const REACTIVE_DIRTY = 1 << 1;
21
+ const REACTIVE_RECOMPUTING_DEPS = 1 << 2;
22
+ const REACTIVE_IN_HEAP = 1 << 3;
23
+ const REACTIVE_IN_HEAP_HEIGHT = 1 << 4;
24
+ const REACTIVE_ZOMBIE = 1 << 5;
25
+ const REACTIVE_DISPOSED = 1 << 6;
26
+ const STATUS_NONE = 0;
27
+ const STATUS_PENDING = 1 << 0;
28
+ const STATUS_ERROR = 1 << 1;
29
+ const STATUS_UNINITIALIZED = 1 << 2;
30
+ const EFFECT_RENDER = 1;
31
+ const EFFECT_USER = 2;
32
+ const NOT_PENDING = {};
33
+ const SUPPORTS_PROXY = typeof Proxy === "function";
34
+ const defaultContext = {};
35
+ function actualInsertIntoHeap(e, t) {
36
+ const n = (e.i?.t ? e.i.u?.o : e.i?.o) ?? -1;
37
+ if (n >= e.o) e.o = n + 1;
38
+ const i = e.o;
39
+ const r = t.l[i];
40
+ if (r === undefined) t.l[i] = e;
41
+ else {
42
+ const t = r.T;
43
+ t.R = e;
44
+ e.T = t;
45
+ r.T = e;
46
+ }
47
+ if (i > t.h) t.h = i;
48
+ }
49
+ function insertIntoHeap(e, t) {
50
+ let n = e._;
51
+ if (n & (REACTIVE_IN_HEAP | REACTIVE_RECOMPUTING_DEPS)) return;
52
+ if (n & REACTIVE_CHECK) {
53
+ e._ = (n & -4) | REACTIVE_DIRTY | REACTIVE_IN_HEAP;
54
+ } else e._ = n | REACTIVE_IN_HEAP;
55
+ if (!(n & REACTIVE_IN_HEAP_HEIGHT)) actualInsertIntoHeap(e, t);
56
+ }
57
+ function insertIntoHeapHeight(e, t) {
58
+ let n = e._;
59
+ if (n & (REACTIVE_IN_HEAP | REACTIVE_RECOMPUTING_DEPS | REACTIVE_IN_HEAP_HEIGHT)) return;
60
+ e._ = n | REACTIVE_IN_HEAP_HEIGHT;
61
+ actualInsertIntoHeap(e, t);
62
+ }
63
+ function deleteFromHeap(e, t) {
64
+ const n = e._;
65
+ if (!(n & (REACTIVE_IN_HEAP | REACTIVE_IN_HEAP_HEIGHT))) return;
66
+ e._ = n & -25;
67
+ const i = e.o;
68
+ if (e.T === e) t.l[i] = undefined;
69
+ else {
70
+ const n = e.R;
71
+ const r = t.l[i];
72
+ const s = n ?? r;
73
+ if (e === r) t.l[i] = n;
74
+ else e.T.R = n;
75
+ s.T = e.T;
76
+ }
77
+ e.T = e;
78
+ e.R = undefined;
79
+ }
80
+ function markHeap(e) {
81
+ if (e.S) return;
82
+ e.S = true;
83
+ for (let t = 0; t <= e.h; t++) {
84
+ for (let n = e.l[t]; n !== undefined; n = n.R) {
85
+ if (n._ & REACTIVE_IN_HEAP) markNode(n);
86
+ }
87
+ }
88
+ }
89
+ function markNode(e, t = REACTIVE_DIRTY) {
90
+ const n = e._;
91
+ if ((n & (REACTIVE_CHECK | REACTIVE_DIRTY)) >= t) return;
92
+ e._ = (n & -4) | t;
93
+ for (let t = e.O; t !== null; t = t.p) {
94
+ markNode(t.A, REACTIVE_CHECK);
95
+ }
96
+ if (e.N !== null) {
97
+ for (let t = e.N; t !== null; t = t.I) {
98
+ for (let e = t.O; e !== null; e = e.p) {
99
+ markNode(e.A, REACTIVE_CHECK);
108
100
  }
109
101
  }
110
102
  }
111
103
  }
112
- function runHeap(heap, recompute2) {
113
- heap.ba = false;
114
- for (heap.q = 0; heap.q <= heap.L; heap.q++) {
115
- let el = heap.s[heap.q];
116
- while (el !== void 0) {
117
- if (el.b & 8 /* InHeap */)
118
- recompute2(el);
119
- else {
120
- adjustHeight(el, heap);
121
- }
122
- el = heap.s[heap.q];
104
+ function runHeap(e, t) {
105
+ e.S = false;
106
+ for (e.C = 0; e.C <= e.h; e.C++) {
107
+ let n = e.l[e.C];
108
+ while (n !== undefined) {
109
+ if (n._ & REACTIVE_IN_HEAP) t(n);
110
+ else adjustHeight(n, e);
111
+ n = e.l[e.C];
123
112
  }
124
113
  }
125
- heap.L = 0;
114
+ e.h = 0;
126
115
  }
127
- function adjustHeight(el, heap) {
128
- deleteFromHeap(el, heap);
129
- let newHeight = el.c;
130
- for (let d = el.l; d; d = d.E) {
131
- const dep1 = d.R;
132
- const dep = dep1.ia || dep1;
133
- if (dep.H) {
134
- if (dep.c >= newHeight) {
135
- newHeight = dep.c + 1;
136
- }
137
- }
116
+ function adjustHeight(e, t) {
117
+ deleteFromHeap(e, t);
118
+ let n = e.o;
119
+ for (let t = e.D; t; t = t.P) {
120
+ const e = t.V;
121
+ const i = e.U || e;
122
+ if (i.m && i.o >= n) n = i.o + 1;
138
123
  }
139
- if (el.c !== newHeight) {
140
- el.c = newHeight;
141
- for (let s = el.x; s !== null; s = s.A) {
142
- insertIntoHeapHeight(s.j, heap);
124
+ if (e.o !== n) {
125
+ e.o = n;
126
+ for (let n = e.O; n !== null; n = n.p) {
127
+ insertIntoHeapHeight(n.A, t);
143
128
  }
144
129
  }
145
130
  }
146
-
147
- // src/core/scheduler.ts
148
- var clock = 0;
149
- var activeTransition = null;
150
- var transitions = /* @__PURE__ */ new Set();
151
- var scheduled = false;
131
+ const transitions = new Set();
132
+ const dirtyQueue = { l: new Array(2e3).fill(undefined), S: false, C: 0, h: 0 };
133
+ const zombieQueue = { l: new Array(2e3).fill(undefined), S: false, C: 0, h: 0 };
134
+ let clock = 0;
135
+ let activeTransition = null;
136
+ let scheduled = false;
152
137
  function schedule() {
153
- if (scheduled)
154
- return;
138
+ if (scheduled) return;
155
139
  scheduled = true;
156
- if (!globalQueue.da)
157
- queueMicrotask(flush);
158
- }
159
- var dirtyQueue = {
160
- s: new Array(2e3).fill(void 0),
161
- ba: false,
162
- q: 0,
163
- L: 0
164
- };
165
- var zombieQueue = {
166
- s: new Array(2e3).fill(void 0),
167
- ba: false,
168
- q: 0,
169
- L: 0
170
- };
171
- var Queue = class {
172
- w = null;
173
- k = [[], []];
174
- m = [];
140
+ if (!globalQueue.k) queueMicrotask(flush);
141
+ }
142
+ class Queue {
143
+ i = null;
144
+ G = [[], []];
145
+ H = [];
175
146
  created = clock;
176
- addChild(child) {
177
- this.m.push(child);
178
- child.w = this;
147
+ addChild(e) {
148
+ this.H.push(e);
149
+ e.i = this;
179
150
  }
180
- removeChild(child) {
181
- const index = this.m.indexOf(child);
182
- if (index >= 0) {
183
- this.m.splice(index, 1);
184
- child.w = null;
151
+ removeChild(e) {
152
+ const t = this.H.indexOf(e);
153
+ if (t >= 0) {
154
+ this.H.splice(t, 1);
155
+ e.i = null;
185
156
  }
186
157
  }
187
- notify(node, mask, flags) {
188
- if (this.w)
189
- return this.w.notify(node, mask, flags);
158
+ notify(e, t, n) {
159
+ if (this.i) return this.i.notify(e, t, n);
190
160
  return false;
191
161
  }
192
- run(type) {
193
- if (this.k[type - 1].length) {
194
- const effects = this.k[type - 1];
195
- this.k[type - 1] = [];
196
- runQueue(effects, type);
162
+ run(e) {
163
+ if (this.G[e - 1].length) {
164
+ const t = this.G[e - 1];
165
+ this.G[e - 1] = [];
166
+ runQueue(t, e);
197
167
  }
198
- for (let i = 0; i < this.m.length; i++) {
199
- this.m[i].run(type);
168
+ for (let t = 0; t < this.H.length; t++) {
169
+ this.H[t].run(e);
200
170
  }
201
171
  }
202
- enqueue(type, fn) {
203
- if (type)
204
- this.k[type - 1].push(fn);
172
+ enqueue(e, t) {
173
+ if (e) this.G[e - 1].push(t);
205
174
  schedule();
206
175
  }
207
- stashQueues(stub) {
208
- stub.k[0].push(...this.k[0]);
209
- stub.k[1].push(...this.k[1]);
210
- this.k = [[], []];
211
- for (let i = 0; i < this.m.length; i++) {
212
- let child = this.m[i];
213
- let childStub = stub.m[i];
214
- if (!childStub) {
215
- childStub = { k: [[], []], m: [] };
216
- stub.m[i] = childStub;
176
+ stashQueues(e) {
177
+ e.G[0].push(...this.G[0]);
178
+ e.G[1].push(...this.G[1]);
179
+ this.G = [[], []];
180
+ for (let t = 0; t < this.H.length; t++) {
181
+ let n = this.H[t];
182
+ let i = e.H[t];
183
+ if (!i) {
184
+ i = { G: [[], []], H: [] };
185
+ e.H[t] = i;
217
186
  }
218
- child.stashQueues(childStub);
187
+ n.stashQueues(i);
219
188
  }
220
189
  }
221
- restoreQueues(stub) {
222
- this.k[0].push(...stub.k[0]);
223
- this.k[1].push(...stub.k[1]);
224
- for (let i = 0; i < stub.m.length; i++) {
225
- const childStub = stub.m[i];
226
- let child = this.m[i];
227
- if (child)
228
- child.restoreQueues(childStub);
190
+ restoreQueues(e) {
191
+ this.G[0].push(...e.G[0]);
192
+ this.G[1].push(...e.G[1]);
193
+ for (let t = 0; t < e.H.length; t++) {
194
+ const n = e.H[t];
195
+ let i = this.H[t];
196
+ if (i) i.restoreQueues(n);
229
197
  }
230
198
  }
231
- };
232
- var GlobalQueue = class _GlobalQueue extends Queue {
233
- da = false;
234
- h = [];
235
- static S;
236
- static la;
199
+ }
200
+ class GlobalQueue extends Queue {
201
+ k = false;
202
+ $ = [];
203
+ static L;
204
+ static F;
237
205
  flush() {
238
- if (this.da)
239
- return;
240
- this.da = true;
206
+ if (this.k) return;
207
+ this.k = true;
241
208
  try {
242
- runHeap(dirtyQueue, _GlobalQueue.S);
209
+ runHeap(dirtyQueue, GlobalQueue.L);
243
210
  if (activeTransition) {
244
211
  if (!transitionComplete(activeTransition)) {
245
- runHeap(zombieQueue, _GlobalQueue.S);
246
- globalQueue.h = [];
247
- globalQueue.stashQueues(activeTransition.queueStash);
212
+ runHeap(zombieQueue, GlobalQueue.L);
213
+ this.$ = [];
214
+ this.stashQueues(activeTransition.queueStash);
248
215
  clock++;
249
216
  scheduled = false;
250
217
  runPending(activeTransition.pendingNodes, true);
251
218
  activeTransition = null;
252
219
  return;
253
220
  }
254
- globalQueue.h.push(...activeTransition.pendingNodes);
255
- globalQueue.restoreQueues(activeTransition.queueStash);
221
+ this.$.push(...activeTransition.pendingNodes);
222
+ this.restoreQueues(activeTransition.queueStash);
256
223
  transitions.delete(activeTransition);
257
224
  activeTransition = null;
258
- if (runPending(globalQueue.h, false))
259
- runHeap(dirtyQueue, _GlobalQueue.S);
260
- } else if (transitions.size)
261
- runHeap(zombieQueue, _GlobalQueue.S);
262
- for (let i = 0; i < globalQueue.h.length; i++) {
263
- const n = globalQueue.h[i];
264
- if (n.e !== NOT_PENDING) {
265
- n.g = n.e;
266
- n.e = NOT_PENDING;
225
+ if (runPending(this.$, false)) runHeap(dirtyQueue, GlobalQueue.L);
226
+ } else if (transitions.size) runHeap(zombieQueue, GlobalQueue.L);
227
+ for (let e = 0; e < this.$.length; e++) {
228
+ const t = this.$[e];
229
+ if (t.W !== NOT_PENDING) {
230
+ t.j = t.W;
231
+ t.W = NOT_PENDING;
232
+ if (t.K) t.M = true;
267
233
  }
268
- if (n.H)
269
- _GlobalQueue.la(n, false, true);
234
+ if (t.m) GlobalQueue.F(t, false, true);
270
235
  }
271
- globalQueue.h.length = 0;
236
+ this.$.length = 0;
272
237
  clock++;
273
238
  scheduled = false;
274
- this.run(1 /* Render */);
275
- this.run(2 /* User */);
239
+ this.run(EFFECT_RENDER);
240
+ this.run(EFFECT_USER);
276
241
  } finally {
277
- this.da = false;
242
+ this.k = false;
278
243
  }
279
244
  }
280
- notify(node, mask, flags) {
281
- if (mask & 1 /* Pending */) {
282
- if (flags & 1 /* Pending */) {
283
- if (activeTransition && !activeTransition.asyncNodes.includes(node.B.cause))
284
- activeTransition.asyncNodes.push(node.B.cause);
245
+ notify(e, t, n) {
246
+ if (t & STATUS_PENDING) {
247
+ if (n & STATUS_PENDING) {
248
+ if (activeTransition && !activeTransition.asyncNodes.includes(e.Y.cause)) {
249
+ activeTransition.asyncNodes.push(e.Y.cause);
250
+ schedule();
251
+ }
285
252
  }
286
253
  return true;
287
254
  }
288
255
  return false;
289
256
  }
290
- initTransition(node) {
291
- if (activeTransition && activeTransition.time === clock)
292
- return;
257
+ initTransition(e) {
258
+ if (activeTransition && activeTransition.time === clock) return;
293
259
  if (!activeTransition) {
294
- activeTransition = node.T ?? {
260
+ activeTransition = e.B ?? {
295
261
  time: clock,
296
262
  pendingNodes: [],
297
263
  asyncNodes: [],
298
- queueStash: { k: [[], []], m: [] }
264
+ queueStash: { G: [[], []], H: [] }
299
265
  };
300
266
  }
301
267
  transitions.add(activeTransition);
302
268
  activeTransition.time = clock;
303
- for (let i = 0; i < globalQueue.h.length; i++) {
304
- const n = globalQueue.h[i];
305
- n.T = activeTransition;
306
- activeTransition.pendingNodes.push(n);
269
+ for (let e = 0; e < this.$.length; e++) {
270
+ const t = this.$[e];
271
+ t.B = activeTransition;
272
+ activeTransition.pendingNodes.push(t);
307
273
  }
308
- globalQueue.h = activeTransition.pendingNodes;
274
+ this.$ = activeTransition.pendingNodes;
309
275
  }
310
- };
311
- function runPending(pendingNodes, value) {
312
- let needsReset = false;
313
- const p = pendingNodes.slice();
314
- for (let i = 0; i < p.length; i++) {
315
- const n = p[i];
316
- n.T = activeTransition;
317
- if (n.I) {
318
- n.I.ea(value);
319
- needsReset = true;
276
+ }
277
+ function runPending(e, t) {
278
+ let n = false;
279
+ const i = e.slice();
280
+ for (let e = 0; e < i.length; e++) {
281
+ const r = i[e];
282
+ r.B = activeTransition;
283
+ if (r.X) {
284
+ r.X.q(t);
285
+ n = true;
286
+ }
287
+ if (r.Z && r.Z.W !== NOT_PENDING) {
288
+ r.Z.q(r.Z.W);
289
+ r.Z.W = NOT_PENDING;
290
+ n = true;
320
291
  }
321
292
  }
322
- return needsReset;
293
+ return n;
323
294
  }
324
- var globalQueue = new GlobalQueue();
295
+ const globalQueue = new GlobalQueue();
325
296
  function flush() {
326
297
  while (scheduled) {
327
298
  globalQueue.flush();
328
299
  }
329
300
  }
330
- function runQueue(queue, type) {
331
- for (let i = 0; i < queue.length; i++)
332
- queue[i](type);
301
+ function runQueue(e, t) {
302
+ for (let n = 0; n < e.length; n++) e[n](t);
333
303
  }
334
- function transitionComplete(transition) {
335
- let done = true;
336
- for (let i = 0; i < transition.asyncNodes.length; i++) {
337
- if (transition.asyncNodes[i].f & 1 /* Pending */) {
338
- done = false;
304
+ function transitionComplete(e) {
305
+ let t = true;
306
+ for (let n = 0; n < e.asyncNodes.length; n++) {
307
+ if (e.asyncNodes[n].J & STATUS_PENDING) {
308
+ t = false;
339
309
  break;
340
310
  }
341
311
  }
342
- return done;
343
- }
344
-
345
- // src/core/core.ts
346
- GlobalQueue.S = recompute;
347
- GlobalQueue.la = disposeChildren;
348
- var tracking = false;
349
- var stale = false;
350
- var pendingValueCheck = false;
351
- var pendingCheck = null;
352
- var context = null;
353
- var defaultContext = {};
354
- function notifySubs(node) {
355
- for (let s = node.x; s !== null; s = s.A) {
356
- const queue = s.j.b & 32 /* Zombie */ ? zombieQueue : dirtyQueue;
357
- if (queue.q > s.j.c)
358
- queue.q = s.j.c;
359
- insertIntoHeap(s.j, queue);
360
- }
361
- }
362
- function recompute(el, create = false) {
363
- deleteFromHeap(el, el.b & 32 /* Zombie */ ? zombieQueue : dirtyQueue);
364
- if (el.e !== NOT_PENDING || el.U || el.V)
365
- disposeChildren(el);
312
+ return t;
313
+ }
314
+ function runInTransition(e, t) {
315
+ const n = activeTransition;
316
+ activeTransition = e.B;
317
+ t(e);
318
+ activeTransition = n;
319
+ }
320
+ GlobalQueue.L = recompute;
321
+ GlobalQueue.F = disposeChildren;
322
+ let tracking = false;
323
+ let stale = false;
324
+ let pendingValueCheck = false;
325
+ let pendingCheck = null;
326
+ let context = null;
327
+ function notifySubs(e) {
328
+ for (let t = e.O; t !== null; t = t.p) {
329
+ const e = t.A._ & REACTIVE_ZOMBIE ? zombieQueue : dirtyQueue;
330
+ if (e.C > t.A.o) e.C = t.A.o;
331
+ insertIntoHeap(t.A, e);
332
+ }
333
+ }
334
+ function recompute(e, t = false) {
335
+ deleteFromHeap(e, e._ & REACTIVE_ZOMBIE ? zombieQueue : dirtyQueue);
336
+ if (e.W !== NOT_PENDING || e.ee || e.te) disposeChildren(e);
366
337
  else {
367
- markDisposal(el);
368
- globalQueue.h.push(el);
369
- el.V = el.t;
370
- el.U = el.r;
371
- el.t = null;
372
- el.r = null;
373
- }
374
- const oldcontext = context;
375
- context = el;
376
- el.F = null;
377
- el.b = 4 /* RecomputingDeps */;
378
- el.J = clock;
379
- let value = el.e === NOT_PENDING ? el.g : el.e;
380
- let oldHeight = el.c;
381
- let prevStatusFlags = el.f;
382
- let prevError = el.B;
383
- let prevTracking = tracking;
384
- clearStatusFlags(el);
338
+ markDisposal(e);
339
+ globalQueue.$.push(e);
340
+ e.te = e.ne;
341
+ e.ee = e.ie;
342
+ e.ne = null;
343
+ e.ie = null;
344
+ }
345
+ const n = context;
346
+ context = e;
347
+ e.re = null;
348
+ e._ = REACTIVE_RECOMPUTING_DEPS;
349
+ e.se = clock;
350
+ let i = e.W === NOT_PENDING ? e.j : e.W;
351
+ let r = e.o;
352
+ let s = e.J;
353
+ let o = e.Y;
354
+ let u = tracking;
355
+ setStatusFlags(e, STATUS_NONE | (s & STATUS_UNINITIALIZED));
385
356
  tracking = true;
386
357
  try {
387
- value = el.H(value);
388
- } catch (e) {
389
- if (e instanceof NotReadyError) {
390
- if (e.cause !== el)
391
- link(e.cause, el);
392
- setStatusFlags(el, prevStatusFlags & ~2 /* Error */ | 1 /* Pending */, e);
393
- } else {
394
- setError(el, e);
395
- }
358
+ i = e.m(i);
359
+ e.J &= ~STATUS_UNINITIALIZED;
360
+ } catch (t) {
361
+ if (t instanceof NotReadyError) {
362
+ if (t.cause !== e) link(t.cause, e);
363
+ setStatusFlags(e, (s & ~STATUS_ERROR) | STATUS_PENDING, t);
364
+ } else setStatusFlags(e, STATUS_ERROR, t);
396
365
  } finally {
397
- tracking = prevTracking;
366
+ tracking = u;
398
367
  }
399
- el.b = 0 /* None */;
400
- context = oldcontext;
401
- const depsTail = el.F;
402
- let toRemove = depsTail !== null ? depsTail.E : el.l;
403
- if (toRemove !== null) {
368
+ e._ = REACTIVE_NONE;
369
+ context = n;
370
+ const l = e.re;
371
+ let c = l !== null ? l.P : e.D;
372
+ if (c !== null) {
404
373
  do {
405
- toRemove = unlinkSubs(toRemove);
406
- } while (toRemove !== null);
407
- if (depsTail !== null) {
408
- depsTail.E = null;
409
- } else {
410
- el.l = null;
411
- }
412
- }
413
- const valueChanged = !el.fa || !el.fa(el.e === NOT_PENDING ? el.g : el.e, value);
414
- const statusFlagsChanged = el.f !== prevStatusFlags || el.B !== prevError;
415
- el.ma?.(statusFlagsChanged, prevStatusFlags);
416
- if (valueChanged || statusFlagsChanged) {
417
- if (valueChanged) {
418
- if (create || el.ja || el.K)
419
- el.g = value;
374
+ c = unlinkSubs(c);
375
+ } while (c !== null);
376
+ if (l !== null) l.P = null;
377
+ else e.D = null;
378
+ }
379
+ const a = e.K && e.B != activeTransition;
380
+ const f = !e.oe || !e.oe(e.W === NOT_PENDING || e.ue || a ? e.j : e.W, i);
381
+ const E = e.J !== s || e.Y !== o;
382
+ e.le?.(E, s);
383
+ if (f || E) {
384
+ if (f) {
385
+ if (t || e.ue || a) e.j = i;
420
386
  else {
421
- if (el.e === NOT_PENDING)
422
- globalQueue.h.push(el);
423
- el.e = value;
387
+ if (e.W === NOT_PENDING) globalQueue.$.push(e);
388
+ e.W = i;
424
389
  }
425
- if (el.C)
426
- el.C.ea(value);
390
+ if (e.Z) e.Z.q(i);
427
391
  }
428
- for (let s = el.x; s !== null; s = s.A) {
429
- const queue = s.j.b & 32 /* Zombie */ ? zombieQueue : dirtyQueue;
430
- if (s.j.c < el.c && queue.q > s.j.c)
431
- queue.q = s.j.c;
432
- insertIntoHeap(s.j, queue);
392
+ for (let t = e.O; t !== null; t = t.p) {
393
+ const n = t.A._ & REACTIVE_ZOMBIE ? zombieQueue : dirtyQueue;
394
+ if (t.A.o < e.o && n.C > t.A.o) n.C = t.A.o;
395
+ insertIntoHeap(t.A, n);
433
396
  }
434
- } else if (el.c != oldHeight) {
435
- for (let s = el.x; s !== null; s = s.A) {
436
- insertIntoHeapHeight(s.j, s.j.b & 32 /* Zombie */ ? zombieQueue : dirtyQueue);
397
+ } else if (e.o != r) {
398
+ for (let t = e.O; t !== null; t = t.p) {
399
+ insertIntoHeapHeight(t.A, t.A._ & REACTIVE_ZOMBIE ? zombieQueue : dirtyQueue);
437
400
  }
438
401
  }
402
+ if (e.B && a) runInTransition(e, recompute);
439
403
  }
440
- function updateIfNecessary(el) {
441
- if (el.b & 1 /* Check */) {
442
- for (let d = el.l; d; d = d.E) {
443
- const dep1 = d.R;
444
- const dep = dep1.ia || dep1;
445
- if (dep.H) {
446
- updateIfNecessary(dep);
404
+ function updateIfNecessary(e) {
405
+ if (e._ & REACTIVE_CHECK) {
406
+ for (let t = e.D; t; t = t.P) {
407
+ const n = t.V;
408
+ const i = n.U || n;
409
+ if (i.m) {
410
+ updateIfNecessary(i);
447
411
  }
448
- if (el.b & 2 /* Dirty */) {
412
+ if (e._ & REACTIVE_DIRTY) {
449
413
  break;
450
414
  }
451
415
  }
452
416
  }
453
- if (el.b & 2 /* Dirty */) {
454
- recompute(el);
455
- }
456
- el.b = 0 /* None */;
457
- }
458
- function unlinkSubs(link2) {
459
- const dep = link2.R;
460
- const nextDep = link2.E;
461
- const nextSub = link2.A;
462
- const prevSub = link2.na;
463
- if (nextSub !== null) {
464
- nextSub.na = prevSub;
465
- } else {
466
- dep.W = prevSub;
467
- }
468
- if (prevSub !== null) {
469
- prevSub.A = nextSub;
470
- } else {
471
- dep.x = nextSub;
472
- if (nextSub === null) {
473
- dep.ta?.();
474
- dep.H && unobserved(dep);
475
- }
476
- }
477
- return nextDep;
478
- }
479
- function unobserved(el) {
480
- deleteFromHeap(el, el.b & 32 /* Zombie */ ? zombieQueue : dirtyQueue);
481
- let dep = el.l;
482
- while (dep !== null) {
483
- dep = unlinkSubs(dep);
417
+ if (e._ & REACTIVE_DIRTY) {
418
+ recompute(e);
484
419
  }
485
- el.l = null;
486
- runDisposal(el);
420
+ e._ = REACTIVE_NONE;
487
421
  }
488
- function link(dep, sub) {
489
- const prevDep = sub.F;
490
- if (prevDep !== null && prevDep.R === dep) {
491
- return;
492
- }
493
- let nextDep = null;
494
- const isRecomputing = sub.b & 4 /* RecomputingDeps */;
495
- if (isRecomputing) {
496
- nextDep = prevDep !== null ? prevDep.E : sub.l;
497
- if (nextDep !== null && nextDep.R === dep) {
498
- sub.F = nextDep;
422
+ function unlinkSubs(e) {
423
+ const t = e.V;
424
+ const n = e.P;
425
+ const i = e.p;
426
+ const r = e.ce;
427
+ if (i !== null) i.ce = r;
428
+ else t.ae = r;
429
+ if (r !== null) r.p = i;
430
+ else {
431
+ t.O = i;
432
+ if (i === null) {
433
+ t.fe?.();
434
+ t.m && unobserved(t);
435
+ }
436
+ }
437
+ return n;
438
+ }
439
+ function unobserved(e) {
440
+ deleteFromHeap(e, e._ & REACTIVE_ZOMBIE ? zombieQueue : dirtyQueue);
441
+ let t = e.D;
442
+ while (t !== null) {
443
+ t = unlinkSubs(t);
444
+ }
445
+ e.D = null;
446
+ runDisposal(e);
447
+ }
448
+ function link(e, t) {
449
+ const n = t.re;
450
+ if (n !== null && n.V === e) return;
451
+ let i = null;
452
+ const r = t._ & REACTIVE_RECOMPUTING_DEPS;
453
+ if (r) {
454
+ i = n !== null ? n.P : t.D;
455
+ if (i !== null && i.V === e) {
456
+ t.re = i;
499
457
  return;
500
458
  }
501
459
  }
502
- const prevSub = dep.W;
503
- if (prevSub !== null && prevSub.j === sub && (!isRecomputing || isValidLink(prevSub, sub))) {
504
- return;
505
- }
506
- const newLink = sub.F = dep.W = {
507
- R: dep,
508
- j: sub,
509
- E: nextDep,
510
- na: prevSub,
511
- A: null
512
- };
513
- if (prevDep !== null) {
514
- prevDep.E = newLink;
515
- } else {
516
- sub.l = newLink;
517
- }
518
- if (prevSub !== null) {
519
- prevSub.A = newLink;
520
- } else {
521
- dep.x = newLink;
522
- }
460
+ const s = e.ae;
461
+ if (s !== null && s.A === t && (!r || isValidLink(s, t))) return;
462
+ const o = (t.re = e.ae = { V: e, A: t, P: i, ce: s, p: null });
463
+ if (n !== null) n.P = o;
464
+ else t.D = o;
465
+ if (s !== null) s.p = o;
466
+ else e.O = o;
523
467
  }
524
- function isValidLink(checkLink, sub) {
525
- const depsTail = sub.F;
526
- if (depsTail !== null) {
527
- let link2 = sub.l;
468
+ function isValidLink(e, t) {
469
+ const n = t.re;
470
+ if (n !== null) {
471
+ let i = t.D;
528
472
  do {
529
- if (link2 === checkLink) {
530
- return true;
531
- }
532
- if (link2 === depsTail) {
533
- break;
534
- }
535
- link2 = link2.E;
536
- } while (link2 !== null);
473
+ if (i === e) return true;
474
+ if (i === n) break;
475
+ i = i.P;
476
+ } while (i !== null);
537
477
  }
538
478
  return false;
539
479
  }
540
- function setStatusFlags(signal2, flags, error = null) {
541
- signal2.f = flags;
542
- signal2.B = error;
480
+ function setStatusFlags(e, t, n = null) {
481
+ e.J = t;
482
+ e.Y = n;
543
483
  }
544
- function setError(signal2, error) {
545
- setStatusFlags(signal2, 2 /* Error */, error);
546
- }
547
- function clearStatusFlags(signal2) {
548
- setStatusFlags(signal2, 0 /* None */);
549
- }
550
- function markDisposal(el) {
551
- let child = el.r;
552
- while (child) {
553
- child.b |= 32 /* Zombie */;
554
- const inHeap = child.b & 8 /* InHeap */;
555
- if (inHeap) {
556
- deleteFromHeap(child, dirtyQueue);
557
- insertIntoHeap(child, zombieQueue);
484
+ function markDisposal(e) {
485
+ let t = e.ie;
486
+ while (t) {
487
+ t._ |= REACTIVE_ZOMBIE;
488
+ if (t._ & REACTIVE_IN_HEAP) {
489
+ deleteFromHeap(t, dirtyQueue);
490
+ insertIntoHeap(t, zombieQueue);
558
491
  }
559
- markDisposal(child);
560
- child = child.M;
492
+ markDisposal(t);
493
+ t = t.Ee;
561
494
  }
562
495
  }
563
- function dispose(node) {
564
- let toRemove = node.l || null;
496
+ function dispose(e) {
497
+ let t = e.D || null;
565
498
  do {
566
- toRemove = unlinkSubs(toRemove);
567
- } while (toRemove !== null);
568
- node.l = null;
569
- node.F = null;
570
- disposeChildren(node, true);
571
- }
572
- function disposeChildren(node, self = false, zombie) {
573
- if (node.b & 64 /* Disposed */)
574
- return;
575
- if (self)
576
- node.b = 64 /* Disposed */;
577
- let child = zombie ? node.U : node.r;
578
- while (child) {
579
- const nextChild = child.M;
580
- if (child.l) {
581
- const n = child;
582
- deleteFromHeap(n, n.b & 32 /* Zombie */ ? zombieQueue : dirtyQueue);
583
- let toRemove = n.l;
499
+ t = unlinkSubs(t);
500
+ } while (t !== null);
501
+ e.D = null;
502
+ e.re = null;
503
+ disposeChildren(e, true);
504
+ }
505
+ function disposeChildren(e, t = false, n) {
506
+ if (e._ & REACTIVE_DISPOSED) return;
507
+ if (t) e._ = REACTIVE_DISPOSED;
508
+ let i = n ? e.ee : e.ie;
509
+ while (i) {
510
+ const e = i.Ee;
511
+ if (i.D) {
512
+ const e = i;
513
+ deleteFromHeap(e, e._ & REACTIVE_ZOMBIE ? zombieQueue : dirtyQueue);
514
+ let t = e.D;
584
515
  do {
585
- toRemove = unlinkSubs(toRemove);
586
- } while (toRemove !== null);
587
- n.l = null;
588
- n.F = null;
516
+ t = unlinkSubs(t);
517
+ } while (t !== null);
518
+ e.D = null;
519
+ e.re = null;
589
520
  }
590
- disposeChildren(child, true);
591
- child = nextChild;
521
+ disposeChildren(i, true);
522
+ i = e;
592
523
  }
593
- if (zombie) {
594
- node.U = null;
524
+ if (n) {
525
+ e.ee = null;
595
526
  } else {
596
- node.r = null;
597
- node.M = null;
527
+ e.ie = null;
528
+ e.Ee = null;
598
529
  }
599
- runDisposal(node, zombie);
530
+ runDisposal(e, n);
600
531
  }
601
- function runDisposal(node, zombie) {
602
- let disposal = zombie ? node.V : node.t;
603
- if (!disposal)
604
- return;
605
- if (Array.isArray(disposal)) {
606
- for (let i = 0; i < disposal.length; i++) {
607
- const callable = disposal[i];
608
- callable.call(callable);
532
+ function runDisposal(e, t) {
533
+ let n = t ? e.te : e.ne;
534
+ if (!n) return;
535
+ if (Array.isArray(n)) {
536
+ for (let e = 0; e < n.length; e++) {
537
+ const t = n[e];
538
+ t.call(t);
609
539
  }
610
540
  } else {
611
- disposal.call(disposal);
612
- }
613
- zombie ? node.V = null : node.t = null;
614
- }
615
- function withOptions(obj, options) {
616
- obj.id = options?.id ?? (context?.id != null ? getNextChildId(context) : void 0);
617
- obj.fa = options?.equals != null ? options.equals : isEqual;
618
- obj.za = !!options?.pureWrite;
619
- obj.ta = options?.unobserved;
620
- if (options?.ka)
621
- Object.assign(obj, options.ka);
622
- return obj;
623
- }
624
- function getNextChildId(owner) {
625
- if (owner.id != null)
626
- return formatId(owner.id, owner.oa++);
627
- throw new Error("Cannot get child id from owner without an id");
541
+ n.call(n);
542
+ }
543
+ t ? (e.te = null) : (e.ne = null);
628
544
  }
629
- function formatId(prefix, id) {
630
- const num = id.toString(36), len = num.length - 1;
631
- return prefix + (len ? String.fromCharCode(64 + len) : "") + num;
545
+ function getNextChildId(e) {
546
+ if (e.id != null) return formatId(e.id, e.de++);
547
+ throw new Error("Cannot get child id from owner without an id");
632
548
  }
633
- function computed(fn, initialValue, options) {
634
- const self = withOptions(
635
- {
636
- t: null,
637
- i: globalQueue,
638
- D: defaultContext,
639
- oa: 0,
640
- H: fn,
641
- g: initialValue,
642
- c: 0,
643
- ca: null,
644
- Q: void 0,
645
- z: null,
646
- l: null,
647
- F: null,
648
- x: null,
649
- W: null,
650
- w: context,
651
- M: null,
652
- r: null,
653
- b: 0 /* None */,
654
- f: 4 /* Uninitialized */,
655
- J: clock,
656
- e: NOT_PENDING,
657
- V: null,
658
- U: null
659
- },
660
- options
661
- );
662
- self.z = self;
663
- const parent = context?.$ ? context.aa : context;
549
+ function formatId(e, t) {
550
+ const n = t.toString(36),
551
+ i = n.length - 1;
552
+ return e + (i ? String.fromCharCode(64 + i) : "") + n;
553
+ }
554
+ function computed(e, t, n) {
555
+ const i = {
556
+ id: n?.id ?? (context?.id != null ? getNextChildId(context) : undefined),
557
+ oe: n?.equals != null ? n.equals : isEqual,
558
+ Te: !!n?.pureWrite,
559
+ fe: n?.unobserved,
560
+ ne: null,
561
+ Re: context?.Re ?? globalQueue,
562
+ he: context?.he ?? defaultContext,
563
+ de: 0,
564
+ m: e,
565
+ j: t,
566
+ o: 0,
567
+ N: null,
568
+ R: undefined,
569
+ T: null,
570
+ D: null,
571
+ re: null,
572
+ O: null,
573
+ ae: null,
574
+ i: context,
575
+ Ee: null,
576
+ ie: null,
577
+ _: REACTIVE_NONE,
578
+ J: STATUS_UNINITIALIZED,
579
+ se: clock,
580
+ W: NOT_PENDING,
581
+ te: null,
582
+ ee: null,
583
+ B: null
584
+ };
585
+ if (n?._e) Object.assign(i, n._e);
586
+ i.T = i;
587
+ const r = context?.t ? context.u : context;
664
588
  if (context) {
665
- context.i && (self.i = context.i);
666
- context.D && (self.D = context.D);
667
- const lastChild = context.r;
668
- if (lastChild === null) {
669
- context.r = self;
589
+ const e = context.ie;
590
+ if (e === null) {
591
+ context.ie = i;
670
592
  } else {
671
- self.M = lastChild;
672
- context.r = self;
673
- }
674
- }
675
- if (parent)
676
- self.c = parent.c + 1;
677
- recompute(self, true);
678
- return self;
679
- }
680
- function asyncComputed(asyncFn, initialValue, options) {
681
- let lastResult = void 0;
682
- let refreshing = false;
683
- const fn = (prev) => {
684
- const result = asyncFn(prev, refreshing);
685
- refreshing = false;
686
- lastResult = result;
687
- const isPromise = result instanceof Promise;
688
- const iterator = result[Symbol.asyncIterator];
689
- if (!isPromise && !iterator) {
690
- return result;
691
- }
692
- if (isPromise) {
693
- result.then((v) => {
694
- if (lastResult !== result)
695
- return;
696
- globalQueue.initTransition(self);
697
- setSignal(self, () => v);
593
+ i.Ee = e;
594
+ context.ie = i;
595
+ }
596
+ }
597
+ if (r) i.o = r.o + 1;
598
+ recompute(i, true);
599
+ return i;
600
+ }
601
+ function asyncComputed(e, t, n) {
602
+ let i = undefined;
603
+ let r = false;
604
+ const fn = t => {
605
+ const n = e(t, r);
606
+ r = false;
607
+ i = n;
608
+ const o = n instanceof Promise;
609
+ const u = n[Symbol.asyncIterator];
610
+ if (!o && !u) {
611
+ return n;
612
+ }
613
+ if (o) {
614
+ n.then(e => {
615
+ if (i !== n) return;
616
+ globalQueue.initTransition(s);
617
+ setSignal(s, () => e);
698
618
  flush();
699
- }).catch((e) => {
700
- if (lastResult !== result)
701
- return;
702
- globalQueue.initTransition(self);
703
- setError(self, e);
704
- self.J = clock;
705
- notifySubs(self);
619
+ }).catch(e => {
620
+ if (i !== n) return;
621
+ globalQueue.initTransition(s);
622
+ setStatusFlags(s, STATUS_ERROR, e);
623
+ s.se = clock;
624
+ notifySubs(s);
706
625
  schedule();
707
626
  flush();
708
627
  });
709
628
  } else {
710
629
  (async () => {
711
630
  try {
712
- for await (let value of result) {
713
- if (lastResult !== result)
714
- return;
715
- globalQueue.initTransition(self);
716
- setSignal(self, () => value);
631
+ for await (let e of n) {
632
+ if (i !== n) return;
633
+ globalQueue.initTransition(s);
634
+ setSignal(s, () => e);
717
635
  flush();
718
636
  }
719
- } catch (error) {
720
- if (lastResult !== result)
721
- return;
722
- globalQueue.initTransition(self);
723
- setError(self, error);
724
- self.J = clock;
725
- notifySubs(self);
637
+ } catch (e) {
638
+ if (i !== n) return;
639
+ globalQueue.initTransition(s);
640
+ setStatusFlags(s, STATUS_ERROR, e);
641
+ s.se = clock;
642
+ notifySubs(s);
726
643
  schedule();
727
644
  flush();
728
645
  }
@@ -731,150 +648,128 @@ function asyncComputed(asyncFn, initialValue, options) {
731
648
  globalQueue.initTransition(context);
732
649
  throw new NotReadyError(context);
733
650
  };
734
- const self = computed(fn, initialValue, options);
735
- self.ua = () => {
736
- refreshing = true;
737
- recompute(self);
651
+ const s = computed(fn, t, n);
652
+ s.Se = () => {
653
+ r = true;
654
+ recompute(s);
655
+ schedule();
738
656
  flush();
739
657
  };
740
- return self;
741
- }
742
- function signal(v, options, firewall = null) {
743
- if (firewall !== null) {
744
- return firewall.ca = withOptions(
745
- {
746
- g: v,
747
- x: null,
748
- W: null,
749
- ia: firewall,
750
- sa: firewall.ca,
751
- f: 0 /* None */,
752
- J: clock,
753
- e: NOT_PENDING
754
- },
755
- options
756
- );
757
- } else {
758
- return withOptions(
759
- {
760
- g: v,
761
- x: null,
762
- W: null,
763
- f: 0 /* None */,
764
- J: clock,
765
- e: NOT_PENDING
766
- },
767
- options
768
- );
769
- }
658
+ return s;
659
+ }
660
+ function signal(e, t, n = null) {
661
+ const i = {
662
+ id: t?.id ?? (context?.id != null ? getNextChildId(context) : undefined),
663
+ oe: t?.equals != null ? t.equals : isEqual,
664
+ Te: !!t?.pureWrite,
665
+ fe: t?.unobserved,
666
+ j: e,
667
+ O: null,
668
+ ae: null,
669
+ J: STATUS_NONE,
670
+ se: clock,
671
+ U: n,
672
+ I: n?.N || null,
673
+ W: NOT_PENDING
674
+ };
675
+ n && (n.N = i);
676
+ return i;
770
677
  }
771
- function isEqual(a, b) {
772
- return a === b;
678
+ function isEqual(e, t) {
679
+ return e === t;
773
680
  }
774
- function untrack(fn) {
775
- if (!tracking)
776
- return fn();
681
+ function untrack(e) {
682
+ if (!tracking) return e();
777
683
  tracking = false;
778
684
  try {
779
- return fn();
685
+ return e();
780
686
  } finally {
781
687
  tracking = true;
782
688
  }
783
689
  }
784
- function read(el) {
785
- let c = context;
786
- if (c?.$)
787
- c = c.aa;
788
- if (c && tracking) {
789
- link(el, c);
790
- const owner = el.ia || el;
791
- if (owner.H) {
792
- const isZombie = el.b & 32 /* Zombie */;
793
- if (owner.c >= (isZombie ? zombieQueue.q : dirtyQueue.q)) {
794
- markNode(c);
795
- markHeap(isZombie ? zombieQueue : dirtyQueue);
796
- updateIfNecessary(owner);
690
+ function read(e) {
691
+ let t = context;
692
+ if (t?.t) t = t.u;
693
+ if (t && tracking && !pendingCheck && !pendingValueCheck) {
694
+ link(e, t);
695
+ const n = e.U || e;
696
+ if (n.m) {
697
+ const i = e._ & REACTIVE_ZOMBIE;
698
+ if (n.o >= (i ? zombieQueue.C : dirtyQueue.C)) {
699
+ markNode(t);
700
+ markHeap(i ? zombieQueue : dirtyQueue);
701
+ updateIfNecessary(n);
797
702
  }
798
- const height = owner.c;
799
- if (height >= c.c && el.w !== c) {
800
- c.c = height + 1;
703
+ const r = n.o;
704
+ if (r >= t.o && e.i !== t) {
705
+ t.o = r + 1;
801
706
  }
802
707
  }
803
708
  }
804
709
  if (pendingCheck) {
805
- const pendingResult = (el.f & 1 /* Pending */) !== 0 || !!el.T || false;
806
- if (!el.I) {
807
- el.I = signal(pendingResult);
808
- el.I.ja = true;
809
- el.I.ea = (v) => setSignal(el.I, v);
710
+ if (!e.X) {
711
+ e.X = signal(false);
712
+ e.X.ue = true;
713
+ e.X.q = t => setSignal(e.X, t);
810
714
  }
811
- const prev = pendingCheck;
715
+ const t = pendingCheck;
812
716
  pendingCheck = null;
813
- read(el.I);
814
- pendingCheck = prev;
815
- prev.g = pendingResult || prev.g;
717
+ t.j = read(e.X) || t.j;
718
+ pendingCheck = t;
816
719
  }
817
720
  if (pendingValueCheck) {
818
- if (!el.C) {
819
- el.C = signal(
820
- el.e === NOT_PENDING ? el.g : el.e
821
- );
822
- el.C.ja = true;
823
- el.C.ea = (v) => queueMicrotask(() => queueMicrotask(() => setSignal(el.C, v)));
721
+ if (!e.Z) {
722
+ e.Z = signal(e.j);
723
+ e.Z.ue = true;
724
+ e.Z.q = t => setSignal(e.Z, t);
824
725
  }
825
726
  pendingValueCheck = false;
826
727
  try {
827
- return read(el.C);
728
+ return read(e.Z);
828
729
  } finally {
829
730
  pendingValueCheck = true;
830
731
  }
831
732
  }
832
- if (el.f & 1 /* Pending */) {
833
- if (c && !stale || el.f & 4 /* Uninitialized */)
834
- throw el.B;
835
- else if (c && stale && !pendingCheck) {
836
- setStatusFlags(
837
- c,
838
- c.f | 1,
839
- el.B
840
- );
733
+ if (e.J & STATUS_PENDING && !pendingCheck) {
734
+ if ((t && !stale) || e.J & STATUS_UNINITIALIZED) throw e.Y;
735
+ else if (t && stale) {
736
+ setStatusFlags(t, t.J | 1, e.Y);
841
737
  }
842
738
  }
843
- if (el.f & 2 /* Error */) {
844
- if (el.J < clock) {
845
- recompute(el, true);
846
- return read(el);
739
+ if (e.J & STATUS_ERROR) {
740
+ if (e.se < clock) {
741
+ recompute(e, true);
742
+ return read(e);
847
743
  } else {
848
- throw el.B;
744
+ throw e.Y;
849
745
  }
850
746
  }
851
- return !c || el.e === NOT_PENDING || stale && !pendingCheck && el.T && activeTransition !== el.T ? el.g : el.e;
747
+ return !t ||
748
+ e.ue ||
749
+ e.W === NOT_PENDING ||
750
+ (stale && !pendingCheck && e.B && activeTransition !== e.B)
751
+ ? e.j
752
+ : e.W;
852
753
  }
853
- function setSignal(el, v) {
854
- if (typeof v === "function") {
855
- v = v(
856
- el.e === NOT_PENDING ? el.g : el.e
857
- );
754
+ function setSignal(e, t) {
755
+ if (typeof t === "function") {
756
+ t = t(e.W === NOT_PENDING ? e.j : e.W);
858
757
  }
859
- const valueChanged = !el.fa || !el.fa(el.e === NOT_PENDING ? el.g : el.e, v);
860
- if (!valueChanged && !el.f)
861
- return v;
862
- if (valueChanged) {
863
- if (el.ja)
864
- el.g = v;
758
+ const n = !e.oe || !e.oe(e.W === NOT_PENDING || e.ue ? e.j : e.W, t);
759
+ if (!n && !e.J) return t;
760
+ if (n) {
761
+ if (e.ue) e.j = t;
865
762
  else {
866
- if (el.e === NOT_PENDING)
867
- globalQueue.h.push(el);
868
- el.e = v;
763
+ if (e.W === NOT_PENDING) globalQueue.$.push(e);
764
+ e.W = t;
869
765
  }
870
- if (el.C)
871
- el.C.ea(v);
766
+ if (e.Z) e.Z.W = t;
872
767
  }
873
- clearStatusFlags(el);
874
- el.J = clock;
875
- notifySubs(el);
768
+ setStatusFlags(e, STATUS_NONE);
769
+ e.se = clock;
770
+ notifySubs(e);
876
771
  schedule();
877
- return v;
772
+ return t;
878
773
  }
879
774
  function getObserver() {
880
775
  return tracking ? context : null;
@@ -882,1351 +777,1301 @@ function getObserver() {
882
777
  function getOwner() {
883
778
  return context;
884
779
  }
885
- function onCleanup(fn) {
886
- if (!context)
887
- return fn;
888
- const node = context;
889
- if (!node.t) {
890
- node.t = fn;
891
- } else if (Array.isArray(node.t)) {
892
- node.t.push(fn);
780
+ function onCleanup(e) {
781
+ if (!context) return e;
782
+ const t = context;
783
+ if (!t.ne) {
784
+ t.ne = e;
785
+ } else if (Array.isArray(t.ne)) {
786
+ t.ne.push(e);
893
787
  } else {
894
- node.t = [node.t, fn];
895
- }
896
- return fn;
897
- }
898
- function createOwner(options) {
899
- const parent = context;
900
- const owner = {
901
- $: true,
902
- aa: parent?.$ ? parent.aa : parent,
903
- r: null,
904
- M: null,
905
- t: null,
906
- id: options?.id ?? (parent?.id != null ? getNextChildId(parent) : void 0),
907
- i: parent?.i ?? globalQueue,
908
- D: parent?.D || defaultContext,
909
- oa: 0,
910
- V: null,
911
- U: null,
912
- w: parent,
913
- dispose(self = true) {
914
- disposeChildren(owner, self);
788
+ t.ne = [t.ne, e];
789
+ }
790
+ return e;
791
+ }
792
+ function createOwner(e) {
793
+ const t = context;
794
+ const n = {
795
+ t: true,
796
+ u: t?.t ? t.u : t,
797
+ ie: null,
798
+ Ee: null,
799
+ ne: null,
800
+ id: e?.id ?? (t?.id != null ? getNextChildId(t) : undefined),
801
+ Re: t?.Re ?? globalQueue,
802
+ he: t?.he || defaultContext,
803
+ de: 0,
804
+ te: null,
805
+ ee: null,
806
+ i: t,
807
+ dispose(e = true) {
808
+ disposeChildren(n, e);
915
809
  }
916
810
  };
917
- if (parent) {
918
- const lastChild = parent.r;
919
- if (lastChild === null) {
920
- parent.r = owner;
811
+ if (t) {
812
+ const e = t.ie;
813
+ if (e === null) {
814
+ t.ie = n;
921
815
  } else {
922
- owner.M = lastChild;
923
- parent.r = owner;
816
+ n.Ee = e;
817
+ t.ie = n;
924
818
  }
925
819
  }
926
- return owner;
820
+ return n;
927
821
  }
928
- function createRoot(init, options) {
929
- const owner = createOwner(options);
930
- return runWithOwner(owner, () => init(owner.dispose));
822
+ function createRoot(e, t) {
823
+ const n = createOwner(t);
824
+ return runWithOwner(n, () => e(n.dispose));
931
825
  }
932
- function runWithOwner(owner, fn) {
933
- const oldContext = context;
934
- context = owner;
826
+ function runWithOwner(e, t) {
827
+ const n = context;
828
+ context = e;
935
829
  try {
936
- return fn();
830
+ return t();
937
831
  } finally {
938
- context = oldContext;
832
+ context = n;
939
833
  }
940
834
  }
941
- function staleValues(fn, set = true) {
942
- const prevStale = stale;
943
- stale = set;
835
+ function staleValues(e, t = true) {
836
+ const n = stale;
837
+ stale = t;
944
838
  try {
945
- return fn();
839
+ return e();
946
840
  } finally {
947
- stale = prevStale;
841
+ stale = n;
948
842
  }
949
843
  }
950
- function pending(fn) {
951
- const prevLatest = pendingValueCheck;
844
+ function pending(e) {
845
+ const t = pendingValueCheck;
952
846
  pendingValueCheck = true;
953
847
  try {
954
- return staleValues(fn, false);
848
+ return staleValues(e, false);
955
849
  } finally {
956
- pendingValueCheck = prevLatest;
850
+ pendingValueCheck = t;
957
851
  }
958
852
  }
959
- function isPending(fn, loadingValue) {
960
- const current = pendingCheck;
961
- pendingCheck = { g: false };
853
+ function isPending(e) {
854
+ const t = pendingCheck;
855
+ pendingCheck = { j: false };
962
856
  try {
963
- staleValues(fn);
964
- return pendingCheck.g;
965
- } catch (err) {
966
- if (!(err instanceof NotReadyError))
967
- return false;
968
- if (loadingValue !== void 0)
969
- return loadingValue;
970
- throw err;
857
+ staleValues(e);
858
+ return pendingCheck.j;
859
+ } catch (e) {
860
+ if (!(e instanceof NotReadyError)) return false;
861
+ throw e;
971
862
  } finally {
972
- pendingCheck = current;
863
+ pendingCheck = t;
973
864
  }
974
865
  }
975
-
976
- // src/core/context.ts
977
- function createContext(defaultValue, description) {
978
- return { id: Symbol(description), defaultValue };
866
+ function createContext(e, t) {
867
+ return { id: Symbol(t), defaultValue: e };
979
868
  }
980
- function getContext(context2, owner = getOwner()) {
981
- if (!owner) {
869
+ function getContext(e, t = getOwner()) {
870
+ if (!t) {
982
871
  throw new NoOwnerError();
983
872
  }
984
- const value = hasContext(context2, owner) ? owner.D[context2.id] : context2.defaultValue;
985
- if (isUndefined(value)) {
873
+ const n = hasContext(e, t) ? t.he[e.id] : e.defaultValue;
874
+ if (isUndefined(n)) {
986
875
  throw new ContextNotFoundError();
987
876
  }
988
- return value;
877
+ return n;
989
878
  }
990
- function setContext(context2, value, owner = getOwner()) {
991
- if (!owner) {
879
+ function setContext(e, t, n = getOwner()) {
880
+ if (!n) {
992
881
  throw new NoOwnerError();
993
882
  }
994
- owner.D = {
995
- ...owner.D,
996
- [context2.id]: isUndefined(value) ? context2.defaultValue : value
997
- };
998
- }
999
- function hasContext(context2, owner) {
1000
- return !isUndefined(owner?.D[context2.id]);
1001
- }
1002
- function isUndefined(value) {
1003
- return typeof value === "undefined";
1004
- }
1005
-
1006
- // src/core/effect.ts
1007
- function effect(compute, effect2, error, initialValue, options) {
1008
- let initialized = false;
1009
- const node = computed(compute, initialValue, {
1010
- ...options,
1011
- ka: {
1012
- ga: true,
1013
- pa: initialValue,
1014
- va: effect2,
1015
- qa: error,
1016
- N: void 0,
1017
- i: getOwner()?.i ?? globalQueue,
1018
- K: options?.render ? 1 /* Render */ : 2 /* User */,
1019
- ma(statusFlagsChanged, prevStatusFlags) {
1020
- if (initialized) {
1021
- const errorChanged = this.f && this.f === prevStatusFlags && statusFlagsChanged;
1022
- this.ga = !(this.f & 2 /* Error */) && !(this.f & 1 /* Pending */ & ~prevStatusFlags) && !errorChanged;
1023
- if (this.ga)
1024
- this.i.enqueue(this.K, runEffect.bind(this));
883
+ n.he = { ...n.he, [e.id]: isUndefined(t) ? e.defaultValue : t };
884
+ }
885
+ function hasContext(e, t) {
886
+ return !isUndefined(t?.he[e.id]);
887
+ }
888
+ function isUndefined(e) {
889
+ return typeof e === "undefined";
890
+ }
891
+ function effect(e, t, n, i, r) {
892
+ let s = false;
893
+ const o = computed(e, i, {
894
+ ...r,
895
+ _e: {
896
+ M: true,
897
+ Oe: i,
898
+ pe: t,
899
+ Ae: n,
900
+ Ne: undefined,
901
+ K: r?.render ? EFFECT_RENDER : EFFECT_USER,
902
+ le(e, t) {
903
+ if (s) {
904
+ const n = this.J && this.J === t && e;
905
+ this.M = !(this.J & STATUS_ERROR) && !(this.J & STATUS_PENDING & ~t) && !n;
906
+ if (this.M) this.Re.enqueue(this.K, runEffect.bind(this));
1025
907
  }
1026
- if (this.f & 2 /* Error */) {
1027
- let error2 = this.B;
1028
- this.i.notify(this, 1 /* Pending */, 0);
1029
- if (this.K === 2 /* User */) {
908
+ if (this.J & STATUS_ERROR) {
909
+ let e = this.Y;
910
+ this.Re.notify(this, STATUS_PENDING, 0);
911
+ if (this.K === EFFECT_USER) {
1030
912
  try {
1031
- return this.qa ? this.qa(error2, () => {
1032
- this.N?.();
1033
- this.N = void 0;
1034
- }) : console.error(error2);
1035
- } catch (e) {
1036
- error2 = e;
913
+ return this.Ae
914
+ ? this.Ae(e, () => {
915
+ this.Ne?.();
916
+ this.Ne = undefined;
917
+ })
918
+ : console.error(e);
919
+ } catch (t) {
920
+ e = t;
1037
921
  }
1038
922
  }
1039
- if (!this.i.notify(this, 2 /* Error */, 2 /* Error */))
1040
- throw error2;
1041
- } else if (this.K === 1 /* Render */) {
1042
- this.i.notify(
1043
- this,
1044
- 1 /* Pending */ | 2 /* Error */,
1045
- this.f
1046
- );
923
+ if (!this.Re.notify(this, STATUS_ERROR, STATUS_ERROR)) throw e;
924
+ } else if (this.K === EFFECT_RENDER) {
925
+ this.Re.notify(this, STATUS_PENDING | STATUS_ERROR, this.J);
1047
926
  }
1048
927
  }
1049
928
  }
1050
929
  });
1051
- initialized = true;
1052
- if (node.K === 1 /* Render */)
1053
- node.H = (p) => staleValues(() => compute(p));
1054
- !options?.defer && !(node.f & (2 /* Error */ | 1 /* Pending */)) && (node.K === 2 /* User */ ? node.i.enqueue(node.K, runEffect.bind(node)) : runEffect.call(node));
1055
- onCleanup(() => node.N?.());
930
+ s = true;
931
+ if (o.K === EFFECT_RENDER) o.m = t => staleValues(() => e(t));
932
+ !r?.defer &&
933
+ !(o.J & (STATUS_ERROR | STATUS_PENDING)) &&
934
+ (o.K === EFFECT_USER ? o.Re.enqueue(o.K, runEffect.bind(o)) : runEffect.call(o));
935
+ onCleanup(() => o.Ne?.());
1056
936
  }
1057
937
  function runEffect() {
1058
- if (!this.ga || this.b & 64 /* Disposed */)
1059
- return;
1060
- this.N?.();
1061
- this.N = void 0;
938
+ if (!this.M || this._ & REACTIVE_DISPOSED) return;
939
+ this.Ne?.();
940
+ this.Ne = undefined;
1062
941
  try {
1063
- this.N = this.va(this.g, this.pa);
1064
- } catch (error) {
1065
- if (!this.i.notify(this, 2 /* Error */, 2 /* Error */))
1066
- throw error;
942
+ this.Ne = this.pe(this.j, this.Oe);
943
+ } catch (e) {
944
+ if (!this.Re.notify(this, STATUS_ERROR, STATUS_ERROR)) throw e;
1067
945
  } finally {
1068
- this.pa = this.g;
1069
- this.ga = false;
1070
- }
1071
- }
1072
-
1073
- // src/signals.ts
1074
- function createSignal(first, second, third) {
1075
- if (typeof first === "function") {
1076
- const node2 = computed(first, second, third);
1077
- return [
1078
- read.bind(null, node2),
1079
- setSignal.bind(null, node2)
1080
- ];
1081
- }
1082
- const o = getOwner();
1083
- const needsId = o?.id != null;
1084
- const node = signal(
1085
- first,
1086
- needsId ? { id: getNextChildId(o), ...second } : second
1087
- );
1088
- return [
1089
- read.bind(null, node),
1090
- setSignal.bind(null, node)
1091
- ];
1092
- }
1093
- function createMemo(compute, value, options) {
1094
- let node = computed(compute, value, options);
1095
- return read.bind(null, node);
1096
- }
1097
- function createAsync(compute, value, options) {
1098
- const node = asyncComputed(compute, value, options);
1099
- const ret = read.bind(null, node);
1100
- ret.refresh = node.ua;
1101
- return ret;
1102
- }
1103
- function createEffect(compute, effectFn, value, options) {
1104
- void effect(
1105
- compute,
1106
- effectFn.effect || effectFn,
1107
- effectFn.error,
1108
- value,
1109
- options
1110
- );
1111
- }
1112
- function createRenderEffect(compute, effectFn, value, options) {
1113
- void effect(compute, effectFn, void 0, value, {
1114
- render: true,
1115
- ...options
1116
- });
1117
- }
1118
- function createTrackedEffect(compute, options) {
1119
- }
1120
- function createReaction(effectFn, options) {
1121
- let cleanup = void 0;
1122
- onCleanup(() => cleanup?.());
1123
- return (tracking2) => {
1124
- effect(
1125
- () => (tracking2(), getOwner()),
1126
- (node) => {
1127
- cleanup?.();
1128
- cleanup = (effectFn.effect || effectFn)?.();
1129
- dispose(node);
1130
- },
1131
- effectFn.error,
1132
- void 0,
1133
- {
1134
- defer: true,
1135
- ...options
1136
- }
1137
- );
946
+ this.Oe = this.j;
947
+ this.M = false;
948
+ }
949
+ }
950
+ function createSignal(e, t, n) {
951
+ if (typeof e === "function") {
952
+ const i = computed(e, t, n);
953
+ return [read.bind(null, i), setSignal.bind(null, i)];
954
+ }
955
+ const i = getOwner();
956
+ const r = i?.id != null;
957
+ const s = signal(e, r ? { id: getNextChildId(i), ...t } : t);
958
+ return [read.bind(null, s), setSignal.bind(null, s)];
959
+ }
960
+ function createMemo(e, t, n) {
961
+ let i = computed(e, t, n);
962
+ return read.bind(null, i);
963
+ }
964
+ function createAsync(e, t, n) {
965
+ const i = asyncComputed(e, t, n);
966
+ const r = read.bind(null, i);
967
+ r.refresh = i.Se;
968
+ return r;
969
+ }
970
+ function createEffect(e, t, n, i) {
971
+ void effect(e, t.effect || t, t.error, n, i);
972
+ }
973
+ function createRenderEffect(e, t, n, i) {
974
+ void effect(e, t, undefined, n, { render: true, ...i });
975
+ }
976
+ function createTrackedEffect(e, t) {}
977
+ function createReaction(e, t) {
978
+ let n = undefined;
979
+ onCleanup(() => n?.());
980
+ const i = getOwner();
981
+ return r => {
982
+ runWithOwner(i, () => {
983
+ effect(
984
+ () => (r(), getOwner()),
985
+ t => {
986
+ n?.();
987
+ n = (e.effect || e)?.();
988
+ dispose(t);
989
+ },
990
+ e.error,
991
+ undefined,
992
+ { defer: true, ...(false ? { ...t, name: t?.name ?? "effect" } : t) }
993
+ );
994
+ });
1138
995
  };
1139
996
  }
1140
- function resolve(fn) {
1141
- return new Promise((res, rej) => {
1142
- createRoot((dispose2) => {
997
+ function resolve(e) {
998
+ return new Promise((t, n) => {
999
+ createRoot(i => {
1143
1000
  computed(() => {
1144
1001
  try {
1145
- res(fn());
1146
- } catch (err) {
1147
- if (err instanceof NotReadyError)
1148
- throw err;
1149
- rej(err);
1002
+ t(e());
1003
+ } catch (e) {
1004
+ if (e instanceof NotReadyError) throw e;
1005
+ n(e);
1150
1006
  }
1151
- dispose2();
1007
+ i();
1152
1008
  });
1153
1009
  });
1154
1010
  });
1155
1011
  }
1156
- function createOptimistic(first, second, third) {
1012
+ function createOptimistic(e, t, n) {
1157
1013
  return {};
1158
1014
  }
1159
- function onSettled(callback) {
1160
- let cleanup;
1161
- const o = getOwner();
1162
- if (o)
1163
- onCleanup(() => cleanup?.());
1164
- globalQueue.enqueue(2 /* User */, () => {
1165
- cleanup = callback();
1166
- !o && cleanup?.();
1015
+ function onSettled(e) {
1016
+ let t;
1017
+ const n = getOwner();
1018
+ if (n) onCleanup(() => t?.());
1019
+ globalQueue.enqueue(EFFECT_USER, () => {
1020
+ t = e();
1021
+ !n && t?.();
1167
1022
  });
1168
1023
  }
1169
-
1170
- // src/store/reconcile.ts
1171
- function unwrap(value) {
1172
- return value?.[$TARGET]?.[STORE_NODE] ?? value;
1173
- }
1174
- function getOverrideValue(value, override, nodes, key) {
1175
- return nodes && key in nodes ? read(nodes[key]) : override && key in override ? override[key] : value[key];
1176
- }
1177
- function getAllKeys(value, override, next) {
1178
- const keys = getKeys(value, override);
1179
- const nextKeys = Object.keys(next);
1180
- return Array.from(/* @__PURE__ */ new Set([...keys, ...nextKeys]));
1181
- }
1182
- function applyState(next, state, keyFn, all) {
1183
- const target = state?.[$TARGET];
1184
- if (!target)
1185
- return;
1186
- const previous = target[STORE_VALUE];
1187
- const override = target[STORE_OVERRIDE];
1188
- let nodes = target[STORE_NODE];
1189
- if (next === previous && !override)
1190
- return;
1191
- (target[STORE_LOOKUP] || storeLookup).set(next, target[$PROXY]);
1192
- target[STORE_VALUE] = next;
1193
- target[STORE_OVERRIDE] = void 0;
1194
- if (Array.isArray(previous)) {
1195
- let changed = false;
1196
- const prevLength = getOverrideValue(previous, override, nodes, "length");
1197
- if (next.length && prevLength && next[0] && keyFn(next[0]) != null) {
1198
- let i, j, start, end, newEnd, item, newIndicesNext, keyVal;
1199
- for (start = 0, end = Math.min(prevLength, next.length); start < end && ((item = getOverrideValue(previous, override, nodes, start)) === next[start] || item && next[start] && keyFn(item) === keyFn(next[start])); start++) {
1200
- applyState(next[start], wrap(item, target), keyFn, all);
1024
+ function unwrap(e) {
1025
+ return e?.[$TARGET]?.[STORE_NODE] ?? e;
1026
+ }
1027
+ function getOverrideValue(e, t, n, i) {
1028
+ return n && i in n ? read(n[i]) : t && i in t ? t[i] : e[i];
1029
+ }
1030
+ function getAllKeys(e, t, n) {
1031
+ const i = getKeys(e, t);
1032
+ const r = Object.keys(n);
1033
+ return Array.from(new Set([...i, ...r]));
1034
+ }
1035
+ function applyState(e, t, n, i) {
1036
+ const r = t?.[$TARGET];
1037
+ if (!r) return;
1038
+ const s = r[STORE_VALUE];
1039
+ const o = r[STORE_OVERRIDE];
1040
+ let u = r[STORE_NODE];
1041
+ if (e === s && !o) return;
1042
+ (r[STORE_LOOKUP] || storeLookup).set(e, r[$PROXY]);
1043
+ r[STORE_VALUE] = e;
1044
+ r[STORE_OVERRIDE] = undefined;
1045
+ if (Array.isArray(s)) {
1046
+ let t = false;
1047
+ const l = getOverrideValue(s, o, u, "length");
1048
+ if (e.length && l && e[0] && n(e[0]) != null) {
1049
+ let c, a, f, E, d, T, R, h;
1050
+ for (
1051
+ f = 0, E = Math.min(l, e.length);
1052
+ f < E && ((T = getOverrideValue(s, o, u, f)) === e[f] || (T && e[f] && n(T) === n(e[f])));
1053
+ f++
1054
+ ) {
1055
+ applyState(e[f], wrap(T, r), n, i);
1201
1056
  }
1202
- const temp = new Array(next.length), newIndices = /* @__PURE__ */ new Map();
1203
- for (end = prevLength - 1, newEnd = next.length - 1; end >= start && newEnd >= start && ((item = getOverrideValue(previous, override, nodes, end)) === next[newEnd] || item && next[newEnd] && keyFn(item) === keyFn(next[newEnd])); end--, newEnd--) {
1204
- temp[newEnd] = item;
1057
+ const _ = new Array(e.length),
1058
+ S = new Map();
1059
+ for (
1060
+ E = l - 1, d = e.length - 1;
1061
+ E >= f &&
1062
+ d >= f &&
1063
+ ((T = getOverrideValue(s, o, u, E)) === e[d] || (T && e[d] && n(T) === n(e[d])));
1064
+ E--, d--
1065
+ ) {
1066
+ _[d] = T;
1205
1067
  }
1206
- if (start > newEnd || start > end) {
1207
- for (j = start; j <= newEnd; j++) {
1208
- changed = true;
1209
- target[STORE_NODE][j] && setSignal(target[STORE_NODE][j], wrap(next[j], target));
1068
+ if (f > d || f > E) {
1069
+ for (a = f; a <= d; a++) {
1070
+ t = true;
1071
+ r[STORE_NODE][a] && setSignal(r[STORE_NODE][a], wrap(e[a], r));
1210
1072
  }
1211
- for (; j < next.length; j++) {
1212
- changed = true;
1213
- const wrapped = wrap(temp[j], target);
1214
- target[STORE_NODE][j] && setSignal(target[STORE_NODE][j], wrapped);
1215
- applyState(next[j], wrapped, keyFn, all);
1073
+ for (; a < e.length; a++) {
1074
+ t = true;
1075
+ const s = wrap(_[a], r);
1076
+ r[STORE_NODE][a] && setSignal(r[STORE_NODE][a], s);
1077
+ applyState(e[a], s, n, i);
1216
1078
  }
1217
- changed && target[STORE_NODE][$TRACK] && setSignal(target[STORE_NODE][$TRACK], void 0);
1218
- prevLength !== next.length && target[STORE_NODE].length && setSignal(target[STORE_NODE].length, next.length);
1079
+ t && r[STORE_NODE][$TRACK] && setSignal(r[STORE_NODE][$TRACK], void 0);
1080
+ l !== e.length && r[STORE_NODE].length && setSignal(r[STORE_NODE].length, e.length);
1219
1081
  return;
1220
1082
  }
1221
- newIndicesNext = new Array(newEnd + 1);
1222
- for (j = newEnd; j >= start; j--) {
1223
- item = next[j];
1224
- keyVal = item ? keyFn(item) : item;
1225
- i = newIndices.get(keyVal);
1226
- newIndicesNext[j] = i === void 0 ? -1 : i;
1227
- newIndices.set(keyVal, j);
1083
+ R = new Array(d + 1);
1084
+ for (a = d; a >= f; a--) {
1085
+ T = e[a];
1086
+ h = T ? n(T) : T;
1087
+ c = S.get(h);
1088
+ R[a] = c === undefined ? -1 : c;
1089
+ S.set(h, a);
1228
1090
  }
1229
- for (i = start; i <= end; i++) {
1230
- item = getOverrideValue(previous, override, nodes, i);
1231
- keyVal = item ? keyFn(item) : item;
1232
- j = newIndices.get(keyVal);
1233
- if (j !== void 0 && j !== -1) {
1234
- temp[j] = item;
1235
- j = newIndicesNext[j];
1236
- newIndices.set(keyVal, j);
1091
+ for (c = f; c <= E; c++) {
1092
+ T = getOverrideValue(s, o, u, c);
1093
+ h = T ? n(T) : T;
1094
+ a = S.get(h);
1095
+ if (a !== undefined && a !== -1) {
1096
+ _[a] = T;
1097
+ a = R[a];
1098
+ S.set(h, a);
1237
1099
  }
1238
1100
  }
1239
- for (j = start; j < next.length; j++) {
1240
- if (j in temp) {
1241
- const wrapped = wrap(temp[j], target);
1242
- target[STORE_NODE][j] && setSignal(target[STORE_NODE][j], wrapped);
1243
- applyState(next[j], wrapped, keyFn, all);
1244
- } else
1245
- target[STORE_NODE][j] && setSignal(target[STORE_NODE][j], wrap(next[j], target));
1101
+ for (a = f; a < e.length; a++) {
1102
+ if (a in _) {
1103
+ const t = wrap(_[a], r);
1104
+ r[STORE_NODE][a] && setSignal(r[STORE_NODE][a], t);
1105
+ applyState(e[a], t, n, i);
1106
+ } else r[STORE_NODE][a] && setSignal(r[STORE_NODE][a], wrap(e[a], r));
1246
1107
  }
1247
- if (start < next.length)
1248
- changed = true;
1249
- } else if (prevLength && next.length) {
1250
- for (let i = 0, len = next.length; i < len; i++) {
1251
- const item = getOverrideValue(previous, override, nodes, i);
1252
- isWrappable(item) && applyState(next[i], wrap(item, target), keyFn, all);
1108
+ if (f < e.length) t = true;
1109
+ } else if (l && e.length) {
1110
+ for (let t = 0, l = e.length; t < l; t++) {
1111
+ const l = getOverrideValue(s, o, u, t);
1112
+ isWrappable(l) && applyState(e[t], wrap(l, r), n, i);
1253
1113
  }
1254
1114
  }
1255
- if (prevLength !== next.length) {
1256
- changed = true;
1257
- target[STORE_NODE].length && setSignal(target[STORE_NODE].length, next.length);
1115
+ if (l !== e.length) {
1116
+ t = true;
1117
+ r[STORE_NODE].length && setSignal(r[STORE_NODE].length, e.length);
1258
1118
  }
1259
- changed && target[STORE_NODE][$TRACK] && setSignal(target[STORE_NODE][$TRACK], void 0);
1119
+ t && r[STORE_NODE][$TRACK] && setSignal(r[STORE_NODE][$TRACK], void 0);
1260
1120
  return;
1261
1121
  }
1262
- if (nodes) {
1263
- const tracked = nodes[$TRACK];
1264
- const keys = tracked || all ? getAllKeys(previous, override, next) : Object.keys(nodes);
1265
- for (let i = 0, len = keys.length; i < len; i++) {
1266
- const key = keys[i];
1267
- const node = nodes[key];
1268
- const previousValue = unwrap(getOverrideValue(previous, override, nodes, key));
1269
- let nextValue = unwrap(next[key]);
1270
- if (previousValue === nextValue)
1271
- continue;
1272
- if (!previousValue || !isWrappable(previousValue) || keyFn(previousValue) != null && keyFn(previousValue) !== keyFn(nextValue)) {
1273
- tracked && setSignal(tracked, void 0);
1274
- node && setSignal(node, isWrappable(nextValue) ? wrap(nextValue, target) : nextValue);
1275
- } else
1276
- applyState(nextValue, wrap(previousValue, target), keyFn, all);
1277
- }
1278
- }
1279
- if (nodes = target[STORE_HAS]) {
1280
- const keys = Object.keys(nodes);
1281
- for (let i = 0, len = keys.length; i < len; i++) {
1282
- const key = keys[i];
1283
- setSignal(nodes[key], key in next);
1284
- }
1285
- }
1286
- }
1287
- function reconcile(value, key, all = false) {
1288
- return (state) => {
1289
- if (state == null)
1290
- throw new Error("Cannot reconcile null or undefined state");
1291
- const keyFn = typeof key === "string" ? (item) => item[key] : key;
1292
- const eq = keyFn(state);
1293
- if (eq !== void 0 && keyFn(value) !== keyFn(state))
1122
+ if (u) {
1123
+ const t = u[$TRACK];
1124
+ const l = t || i ? getAllKeys(s, o, e) : Object.keys(u);
1125
+ for (let c = 0, a = l.length; c < a; c++) {
1126
+ const a = l[c];
1127
+ const f = u[a];
1128
+ const E = unwrap(getOverrideValue(s, o, u, a));
1129
+ let d = unwrap(e[a]);
1130
+ if (E === d) continue;
1131
+ if (!E || !isWrappable(E) || (n(E) != null && n(E) !== n(d))) {
1132
+ t && setSignal(t, void 0);
1133
+ f && setSignal(f, isWrappable(d) ? wrap(d, r) : d);
1134
+ } else applyState(d, wrap(E, r), n, i);
1135
+ }
1136
+ }
1137
+ if ((u = r[STORE_HAS])) {
1138
+ const t = Object.keys(u);
1139
+ for (let n = 0, i = t.length; n < i; n++) {
1140
+ const i = t[n];
1141
+ setSignal(u[i], i in e);
1142
+ }
1143
+ }
1144
+ }
1145
+ function reconcile(e, t, n = false) {
1146
+ return i => {
1147
+ if (i == null) throw new Error("Cannot reconcile null or undefined state");
1148
+ const r = typeof t === "string" ? e => e[t] : t;
1149
+ const s = r(i);
1150
+ if (s !== undefined && r(e) !== r(i))
1294
1151
  throw new Error("Cannot reconcile states with different identity");
1295
- applyState(value, state, keyFn, all);
1152
+ applyState(e, i, r, n);
1296
1153
  };
1297
1154
  }
1298
-
1299
- // src/store/projection.ts
1300
- function createProjectionInternal(fn, initialValue = {}, options) {
1301
- let node;
1302
- const wrappedMap = /* @__PURE__ */ new WeakMap();
1303
- const wrapProjection = (source) => {
1304
- if (wrappedMap.has(source))
1305
- return wrappedMap.get(source);
1306
- if (source[$TARGET]?.[STORE_WRAP] === wrapProjection)
1307
- return source;
1308
- const wrapped = createStoreProxy(source, storeTraps, {
1155
+ function createProjectionInternal(e, t = {}, n) {
1156
+ let i;
1157
+ const r = new WeakMap();
1158
+ const wrapProjection = e => {
1159
+ if (r.has(e)) return r.get(e);
1160
+ if (e[$TARGET]?.[STORE_WRAP] === wrapProjection) return e;
1161
+ const t = createStoreProxy(e, storeTraps, {
1309
1162
  [STORE_WRAP]: wrapProjection,
1310
- [STORE_LOOKUP]: wrappedMap,
1163
+ [STORE_LOOKUP]: r,
1311
1164
  [STORE_FIREWALL]() {
1312
- return node;
1165
+ return i;
1313
1166
  }
1314
1167
  });
1315
- wrappedMap.set(source, wrapped);
1316
- return wrapped;
1168
+ r.set(e, t);
1169
+ return t;
1317
1170
  };
1318
- const wrappedStore = wrapProjection(initialValue);
1319
- node = computed(() => {
1320
- storeSetter(wrappedStore, (s) => {
1321
- const value = fn(s);
1322
- if (value !== s && value !== void 0) {
1323
- reconcile(value, options?.key || "id", options?.all)(s);
1171
+ const s = wrapProjection(t);
1172
+ i = computed(() => {
1173
+ storeSetter(s, t => {
1174
+ const i = e(t);
1175
+ if (i !== t && i !== undefined) {
1176
+ reconcile(i, n?.key || "id", n?.all)(t);
1324
1177
  }
1325
1178
  });
1326
1179
  });
1327
- return { store: wrappedStore, node };
1328
- }
1329
- function createProjection(fn, initialValue = {}, options) {
1330
- return createProjectionInternal(fn, initialValue, options).store;
1331
- }
1332
-
1333
- // src/store/store.ts
1334
- var $TRACK = Symbol(0);
1335
- var $DEEP = Symbol(0);
1336
- var $TARGET = Symbol(0);
1337
- var $PROXY = Symbol(0);
1338
- var $DELETED = Symbol(0);
1339
- var PARENTS = /* @__PURE__ */ new WeakMap();
1340
- var STORE_VALUE = "v";
1341
- var STORE_OVERRIDE = "o";
1342
- var STORE_NODE = "n";
1343
- var STORE_HAS = "h";
1344
- var STORE_WRAP = "w";
1345
- var STORE_LOOKUP = "l";
1346
- var STORE_FIREWALL = "f";
1347
- function createStoreProxy(value, traps = storeTraps, extend) {
1348
- let newTarget;
1349
- if (Array.isArray(value)) {
1350
- newTarget = [];
1351
- newTarget.v = value;
1352
- } else
1353
- newTarget = { v: value };
1354
- extend && Object.assign(newTarget, extend);
1355
- return newTarget[$PROXY] = new Proxy(newTarget, traps);
1356
- }
1357
- var storeLookup = /* @__PURE__ */ new WeakMap();
1358
- function wrap(value, target) {
1359
- if (target?.[STORE_WRAP])
1360
- return target[STORE_WRAP](value, target);
1361
- let p = value[$PROXY] || storeLookup.get(value);
1362
- if (!p)
1363
- storeLookup.set(value, p = createStoreProxy(value));
1364
- return p;
1365
- }
1366
- function isWrappable(obj) {
1367
- return obj != null && typeof obj === "object" && !Object.isFrozen(obj);
1368
- }
1369
- function getNodes(target, type) {
1370
- let nodes = target[type];
1371
- if (!nodes)
1372
- target[type] = nodes = /* @__PURE__ */ Object.create(null);
1373
- return nodes;
1374
- }
1375
- function getNode(nodes, property, value, firewall, equals = isEqual) {
1376
- if (nodes[property])
1377
- return nodes[property];
1378
- return nodes[property] = signal(
1379
- value,
1180
+ return { store: s, node: i };
1181
+ }
1182
+ function createProjection(e, t = {}, n) {
1183
+ return createProjectionInternal(e, t, n).store;
1184
+ }
1185
+ const $TRACK = Symbol(0),
1186
+ $DEEP = Symbol(0),
1187
+ $TARGET = Symbol(0),
1188
+ $PROXY = Symbol(0),
1189
+ $DELETED = Symbol(0);
1190
+ const PARENTS = new WeakMap();
1191
+ const STORE_VALUE = "v",
1192
+ STORE_OVERRIDE = "o",
1193
+ STORE_NODE = "n",
1194
+ STORE_HAS = "h",
1195
+ STORE_WRAP = "w",
1196
+ STORE_LOOKUP = "l",
1197
+ STORE_FIREWALL = "f";
1198
+ function createStoreProxy(e, t = storeTraps, n) {
1199
+ let i;
1200
+ if (Array.isArray(e)) {
1201
+ i = [];
1202
+ i.v = e;
1203
+ } else i = { v: e };
1204
+ n && Object.assign(i, n);
1205
+ return (i[$PROXY] = new Proxy(i, t));
1206
+ }
1207
+ const storeLookup = new WeakMap();
1208
+ function wrap(e, t) {
1209
+ if (t?.[STORE_WRAP]) return t[STORE_WRAP](e, t);
1210
+ let n = e[$PROXY] || storeLookup.get(e);
1211
+ if (!n) storeLookup.set(e, (n = createStoreProxy(e)));
1212
+ return n;
1213
+ }
1214
+ function isWrappable(e) {
1215
+ return e != null && typeof e === "object" && !Object.isFrozen(e);
1216
+ }
1217
+ function getNodes(e, t) {
1218
+ let n = e[t];
1219
+ if (!n) e[t] = n = Object.create(null);
1220
+ return n;
1221
+ }
1222
+ function getNode(e, t, n, i, r = isEqual) {
1223
+ if (e[t]) return e[t];
1224
+ return (e[t] = signal(
1225
+ n,
1380
1226
  {
1381
- equals,
1227
+ equals: r,
1382
1228
  unobserved() {
1383
- delete nodes[property];
1229
+ delete e[t];
1384
1230
  }
1385
1231
  },
1386
- firewall
1387
- );
1388
- }
1389
- function trackSelf(target, symbol = $TRACK) {
1390
- getObserver() && read(
1391
- getNode(getNodes(target, STORE_NODE), symbol, void 0, target[STORE_FIREWALL]?.(), false)
1392
- );
1393
- }
1394
- function getKeys(source, override, enumerable = true) {
1395
- const baseKeys = untrack(() => enumerable ? Object.keys(source) : Reflect.ownKeys(source));
1396
- if (!override)
1397
- return baseKeys;
1398
- const keys = new Set(baseKeys);
1399
- const overrides = Reflect.ownKeys(override);
1400
- for (const key of overrides) {
1401
- if (override[key] !== $DELETED)
1402
- keys.add(key);
1403
- else
1404
- keys.delete(key);
1405
- }
1406
- return Array.from(keys);
1407
- }
1408
- function getPropertyDescriptor(source, override, property) {
1409
- let value = source;
1410
- if (override && property in override) {
1411
- if (value[property] === $DELETED)
1412
- return void 0;
1413
- if (!(property in value))
1414
- value = override;
1415
- }
1416
- return Reflect.getOwnPropertyDescriptor(value, property);
1417
- }
1418
- var Writing = null;
1419
- var storeTraps = {
1420
- get(target, property, receiver) {
1421
- if (property === $TARGET)
1422
- return target;
1423
- if (property === $PROXY)
1424
- return receiver;
1425
- if (property === $TRACK || property === $DEEP) {
1426
- trackSelf(target, property);
1427
- return receiver;
1428
- }
1429
- const nodes = getNodes(target, STORE_NODE);
1430
- const tracked = nodes[property];
1431
- const overridden = target[STORE_OVERRIDE] && property in target[STORE_OVERRIDE];
1432
- const proxySource = !!target[STORE_VALUE][$TARGET];
1433
- const storeValue = overridden ? target[STORE_OVERRIDE] : target[STORE_VALUE];
1434
- if (!tracked) {
1435
- const desc = Object.getOwnPropertyDescriptor(storeValue, property);
1436
- if (desc && desc.get)
1437
- return desc.get.call(receiver);
1438
- }
1439
- if (Writing?.has(receiver)) {
1440
- let value2 = tracked && (overridden || !proxySource) ? tracked.e !== NOT_PENDING ? tracked.e : tracked.g : storeValue[property];
1441
- value2 === $DELETED && (value2 = void 0);
1442
- if (!isWrappable(value2))
1443
- return value2;
1444
- const wrapped = wrap(value2, target);
1445
- Writing.add(wrapped);
1446
- return wrapped;
1447
- }
1448
- let value = tracked ? overridden || !proxySource ? read(nodes[property]) : (read(nodes[property]), storeValue[property]) : storeValue[property];
1449
- value === $DELETED && (value = void 0);
1450
- if (!tracked) {
1451
- if (!overridden && typeof value === "function" && !storeValue.hasOwnProperty(property)) {
1452
- let proto;
1453
- return !Array.isArray(target[STORE_VALUE]) && (proto = Object.getPrototypeOf(target[STORE_VALUE])) && proto !== Object.prototype ? value.bind(storeValue) : value;
1232
+ i
1233
+ ));
1234
+ }
1235
+ function trackSelf(e, t = $TRACK) {
1236
+ getObserver() &&
1237
+ read(getNode(getNodes(e, STORE_NODE), t, undefined, e[STORE_FIREWALL]?.(), false));
1238
+ }
1239
+ function getKeys(e, t, n = true) {
1240
+ const i = untrack(() => (n ? Object.keys(e) : Reflect.ownKeys(e)));
1241
+ if (!t) return i;
1242
+ const r = new Set(i);
1243
+ const s = Reflect.ownKeys(t);
1244
+ for (const e of s) {
1245
+ if (t[e] !== $DELETED) r.add(e);
1246
+ else r.delete(e);
1247
+ }
1248
+ return Array.from(r);
1249
+ }
1250
+ function getPropertyDescriptor(e, t, n) {
1251
+ let i = e;
1252
+ if (t && n in t) {
1253
+ if (i[n] === $DELETED) return void 0;
1254
+ if (!(n in i)) i = t;
1255
+ }
1256
+ return Reflect.getOwnPropertyDescriptor(i, n);
1257
+ }
1258
+ let Writing = null;
1259
+ const storeTraps = {
1260
+ get(e, t, n) {
1261
+ if (t === $TARGET) return e;
1262
+ if (t === $PROXY) return n;
1263
+ if (t === $TRACK || t === $DEEP) {
1264
+ trackSelf(e, t);
1265
+ return n;
1266
+ }
1267
+ const i = getNodes(e, STORE_NODE);
1268
+ const r = i[t];
1269
+ const s = e[STORE_OVERRIDE] && t in e[STORE_OVERRIDE];
1270
+ const o = !!e[STORE_VALUE][$TARGET];
1271
+ const u = s ? e[STORE_OVERRIDE] : e[STORE_VALUE];
1272
+ if (!r) {
1273
+ const e = Object.getOwnPropertyDescriptor(u, t);
1274
+ if (e && e.get) return e.get.call(n);
1275
+ }
1276
+ if (Writing?.has(n)) {
1277
+ let n = r && (s || !o) ? (r.W !== NOT_PENDING ? r.W : r.j) : u[t];
1278
+ n === $DELETED && (n = undefined);
1279
+ if (!isWrappable(n)) return n;
1280
+ const i = wrap(n, e);
1281
+ Writing.add(i);
1282
+ return i;
1283
+ }
1284
+ let l = r ? (s || !o ? read(i[t]) : (read(i[t]), u[t])) : u[t];
1285
+ l === $DELETED && (l = undefined);
1286
+ if (!r) {
1287
+ if (!s && typeof l === "function" && !u.hasOwnProperty(t)) {
1288
+ let t;
1289
+ return !Array.isArray(e[STORE_VALUE]) &&
1290
+ (t = Object.getPrototypeOf(e[STORE_VALUE])) &&
1291
+ t !== Object.prototype
1292
+ ? l.bind(u)
1293
+ : l;
1454
1294
  } else if (getObserver()) {
1455
- return read(
1456
- getNode(
1457
- nodes,
1458
- property,
1459
- isWrappable(value) ? wrap(value, target) : value,
1460
- target[STORE_FIREWALL]?.()
1461
- )
1462
- );
1295
+ return read(getNode(i, t, isWrappable(l) ? wrap(l, e) : l, e[STORE_FIREWALL]?.()));
1463
1296
  }
1464
1297
  }
1465
- return isWrappable(value) ? wrap(value, target) : value;
1298
+ return isWrappable(l) ? wrap(l, e) : l;
1466
1299
  },
1467
- has(target, property) {
1468
- if (property === $PROXY || property === $TRACK || property === "__proto__")
1469
- return true;
1470
- const has = target[STORE_OVERRIDE] && property in target[STORE_OVERRIDE] ? target[STORE_OVERRIDE][property] !== $DELETED : property in target[STORE_VALUE];
1471
- getObserver() && read(getNode(getNodes(target, STORE_HAS), property, has, target[STORE_FIREWALL]?.()));
1472
- return has;
1300
+ has(e, t) {
1301
+ if (t === $PROXY || t === $TRACK || t === "__proto__") return true;
1302
+ const n =
1303
+ e[STORE_OVERRIDE] && t in e[STORE_OVERRIDE]
1304
+ ? e[STORE_OVERRIDE][t] !== $DELETED
1305
+ : t in e[STORE_VALUE];
1306
+ getObserver() && read(getNode(getNodes(e, STORE_HAS), t, n, e[STORE_FIREWALL]?.()));
1307
+ return n;
1473
1308
  },
1474
- set(target, property, rawValue) {
1475
- const store = target[$PROXY];
1476
- if (Writing?.has(target[$PROXY])) {
1309
+ set(e, t, n) {
1310
+ const i = e[$PROXY];
1311
+ if (Writing?.has(e[$PROXY])) {
1477
1312
  untrack(() => {
1478
- const state = target[STORE_VALUE];
1479
- const base = state[property];
1480
- const prev = target[STORE_OVERRIDE] && property in target[STORE_OVERRIDE] ? target[STORE_OVERRIDE][property] : base;
1481
- const value = rawValue?.[$TARGET]?.[STORE_VALUE] ?? rawValue;
1482
- if (prev === value)
1483
- return true;
1484
- const len = target[STORE_OVERRIDE]?.length || state.length;
1485
- if (value !== void 0 && value === base)
1486
- delete target[STORE_OVERRIDE][property];
1487
- else
1488
- (target[STORE_OVERRIDE] || (target[STORE_OVERRIDE] = /* @__PURE__ */ Object.create(null)))[property] = value;
1489
- const wrappable = isWrappable(value);
1490
- if (isWrappable(prev)) {
1491
- const parents = PARENTS.get(prev);
1492
- parents && (parents instanceof Set ? parents.delete(store) : PARENTS.delete(prev));
1313
+ const r = e[STORE_VALUE];
1314
+ const s = r[t];
1315
+ const o = e[STORE_OVERRIDE] && t in e[STORE_OVERRIDE] ? e[STORE_OVERRIDE][t] : s;
1316
+ const u = n?.[$TARGET]?.[STORE_VALUE] ?? n;
1317
+ if (o === u) return true;
1318
+ const l = e[STORE_OVERRIDE]?.length || r.length;
1319
+ if (u !== undefined && u === s) delete e[STORE_OVERRIDE][t];
1320
+ else (e[STORE_OVERRIDE] || (e[STORE_OVERRIDE] = Object.create(null)))[t] = u;
1321
+ const c = isWrappable(u);
1322
+ if (isWrappable(o)) {
1323
+ const e = PARENTS.get(o);
1324
+ e && (e instanceof Set ? e.delete(i) : PARENTS.delete(o));
1493
1325
  }
1494
- if (recursivelyNotify(store, storeLookup) && wrappable)
1495
- recursivelyAddParent(value, store);
1496
- target[STORE_HAS]?.[property] && setSignal(target[STORE_HAS][property], true);
1497
- const nodes = getNodes(target, STORE_NODE);
1498
- nodes[property] && setSignal(nodes[property], () => wrappable ? wrap(value, target) : value);
1499
- if (Array.isArray(state)) {
1500
- const index = parseInt(property) + 1;
1501
- if (index > len)
1502
- nodes.length && setSignal(nodes.length, index);
1326
+ if (recursivelyNotify(i, storeLookup) && c) recursivelyAddParent(u, i);
1327
+ e[STORE_HAS]?.[t] && setSignal(e[STORE_HAS][t], true);
1328
+ const a = getNodes(e, STORE_NODE);
1329
+ a[t] && setSignal(a[t], () => (c ? wrap(u, e) : u));
1330
+ if (Array.isArray(r)) {
1331
+ const e = parseInt(t) + 1;
1332
+ if (e > l) a.length && setSignal(a.length, e);
1503
1333
  }
1504
- nodes[$TRACK] && setSignal(nodes[$TRACK], void 0);
1334
+ a[$TRACK] && setSignal(a[$TRACK], undefined);
1505
1335
  });
1506
1336
  }
1507
1337
  return true;
1508
1338
  },
1509
- deleteProperty(target, property) {
1510
- if (Writing?.has(target[$PROXY]) && target[STORE_OVERRIDE]?.[property] !== $DELETED) {
1339
+ deleteProperty(e, t) {
1340
+ if (Writing?.has(e[$PROXY]) && e[STORE_OVERRIDE]?.[t] !== $DELETED) {
1511
1341
  untrack(() => {
1512
- const prev = target[STORE_OVERRIDE] && property in target[STORE_OVERRIDE] ? target[STORE_OVERRIDE][property] : target[STORE_VALUE][property];
1513
- if (property in target[STORE_VALUE]) {
1514
- (target[STORE_OVERRIDE] || (target[STORE_OVERRIDE] = /* @__PURE__ */ Object.create(null)))[property] = $DELETED;
1515
- } else if (target[STORE_OVERRIDE] && property in target[STORE_OVERRIDE]) {
1516
- delete target[STORE_OVERRIDE][property];
1517
- } else
1518
- return true;
1519
- if (isWrappable(prev)) {
1520
- const parents = PARENTS.get(prev);
1521
- parents && (parents instanceof Set ? parents.delete(target) : PARENTS.delete(prev));
1342
+ const n =
1343
+ e[STORE_OVERRIDE] && t in e[STORE_OVERRIDE] ? e[STORE_OVERRIDE][t] : e[STORE_VALUE][t];
1344
+ if (t in e[STORE_VALUE]) {
1345
+ (e[STORE_OVERRIDE] || (e[STORE_OVERRIDE] = Object.create(null)))[t] = $DELETED;
1346
+ } else if (e[STORE_OVERRIDE] && t in e[STORE_OVERRIDE]) {
1347
+ delete e[STORE_OVERRIDE][t];
1348
+ } else return true;
1349
+ if (isWrappable(n)) {
1350
+ const t = PARENTS.get(n);
1351
+ t && (t instanceof Set ? t.delete(e) : PARENTS.delete(n));
1522
1352
  }
1523
- if (target[STORE_HAS]?.[property])
1524
- setSignal(target[STORE_HAS][property], false);
1525
- const nodes = getNodes(target, STORE_NODE);
1526
- nodes[property] && setSignal(nodes[property], void 0);
1527
- nodes[$TRACK] && setSignal(nodes[$TRACK], void 0);
1353
+ if (e[STORE_HAS]?.[t]) setSignal(e[STORE_HAS][t], false);
1354
+ const i = getNodes(e, STORE_NODE);
1355
+ i[t] && setSignal(i[t], undefined);
1356
+ i[$TRACK] && setSignal(i[$TRACK], undefined);
1528
1357
  });
1529
1358
  }
1530
1359
  return true;
1531
1360
  },
1532
- ownKeys(target) {
1533
- trackSelf(target);
1534
- return getKeys(target[STORE_VALUE], target[STORE_OVERRIDE], false);
1361
+ ownKeys(e) {
1362
+ trackSelf(e);
1363
+ return getKeys(e[STORE_VALUE], e[STORE_OVERRIDE], false);
1535
1364
  },
1536
- getOwnPropertyDescriptor(target, property) {
1537
- if (property === $PROXY)
1538
- return { value: target[$PROXY], writable: true, configurable: true };
1539
- return getPropertyDescriptor(target[STORE_VALUE], target[STORE_OVERRIDE], property);
1365
+ getOwnPropertyDescriptor(e, t) {
1366
+ if (t === $PROXY) return { value: e[$PROXY], writable: true, configurable: true };
1367
+ return getPropertyDescriptor(e[STORE_VALUE], e[STORE_OVERRIDE], t);
1540
1368
  },
1541
- getPrototypeOf(target) {
1542
- return Object.getPrototypeOf(target[STORE_VALUE]);
1369
+ getPrototypeOf(e) {
1370
+ return Object.getPrototypeOf(e[STORE_VALUE]);
1543
1371
  }
1544
1372
  };
1545
- function storeSetter(store, fn) {
1546
- const prevWriting = Writing;
1547
- Writing = /* @__PURE__ */ new Set();
1548
- Writing.add(store);
1373
+ function storeSetter(e, t) {
1374
+ const n = Writing;
1375
+ Writing = new Set();
1376
+ Writing.add(e);
1549
1377
  try {
1550
- const value = fn(store);
1551
- if (value !== store && value !== void 0) {
1552
- if (Array.isArray(value)) {
1553
- for (let i = 0, len = value.length; i < len; i++)
1554
- store[i] = value[i];
1555
- store.length = value.length;
1378
+ const n = t(e);
1379
+ if (n !== e && n !== undefined) {
1380
+ if (Array.isArray(n)) {
1381
+ for (let t = 0, i = n.length; t < i; t++) e[t] = n[t];
1382
+ e.length = n.length;
1556
1383
  } else {
1557
- const keys = /* @__PURE__ */ new Set([...Object.keys(store), ...Object.keys(value)]);
1558
- keys.forEach((key) => {
1559
- if (key in value)
1560
- store[key] = value[key];
1561
- else
1562
- delete store[key];
1384
+ const t = new Set([...Object.keys(e), ...Object.keys(n)]);
1385
+ t.forEach(t => {
1386
+ if (t in n) e[t] = n[t];
1387
+ else delete e[t];
1563
1388
  });
1564
1389
  }
1565
1390
  }
1566
1391
  } finally {
1567
1392
  Writing.clear();
1568
- Writing = prevWriting;
1569
- }
1570
- }
1571
- function createStore(first, second, options) {
1572
- const derived = typeof first === "function", wrappedStore = derived ? createProjectionInternal(first, second, options).store : wrap(first);
1573
- return [wrappedStore, (fn) => storeSetter(wrappedStore, fn)];
1574
- }
1575
- function recursivelyNotify(state, lookup) {
1576
- let target = state[$TARGET] || lookup?.get(state)?.[$TARGET];
1577
- let notified = false;
1578
- if (target) {
1579
- const deep2 = getNodes(target, STORE_NODE)[$DEEP];
1580
- if (deep2) {
1581
- setSignal(deep2, void 0);
1582
- notified = true;
1583
- }
1584
- lookup = target[STORE_LOOKUP] || lookup;
1585
- }
1586
- const parents = PARENTS.get(target?.[STORE_VALUE] || state);
1587
- if (!parents)
1588
- return notified;
1589
- if (parents instanceof Set) {
1590
- for (let parent of parents)
1591
- notified = recursivelyNotify(parent, lookup) || notified;
1592
- } else
1593
- notified = recursivelyNotify(parents, lookup) || notified;
1594
- return notified;
1595
- }
1596
- function recursivelyAddParent(state, parent) {
1597
- let override;
1598
- const target = state[$TARGET];
1599
- if (target) {
1600
- override = target[STORE_OVERRIDE];
1601
- state = target[STORE_VALUE];
1602
- }
1603
- if (parent) {
1604
- let parents = PARENTS.get(state);
1605
- if (!parents)
1606
- PARENTS.set(state, parent);
1607
- else if (parents !== parent) {
1608
- if (!(parents instanceof Set))
1609
- PARENTS.set(state, parents = /* @__PURE__ */ new Set([parents]));
1610
- else if (parents.has(parent))
1611
- return;
1612
- parents.add(parent);
1613
- } else
1614
- return;
1615
- }
1616
- if (Array.isArray(state)) {
1617
- const len = override?.length || state.length;
1618
- for (let i = 0; i < len; i++) {
1619
- const item = override && i in override ? override[i] : state[i];
1620
- isWrappable(item) && recursivelyAddParent(item, state);
1393
+ Writing = n;
1394
+ }
1395
+ }
1396
+ function createStore(e, t, n) {
1397
+ const i = typeof e === "function",
1398
+ r = i ? createProjectionInternal(e, t, n).store : wrap(e);
1399
+ return [r, e => storeSetter(r, e)];
1400
+ }
1401
+ function recursivelyNotify(e, t) {
1402
+ let n = e[$TARGET] || t?.get(e)?.[$TARGET];
1403
+ let i = false;
1404
+ if (n) {
1405
+ const e = getNodes(n, STORE_NODE)[$DEEP];
1406
+ if (e) {
1407
+ setSignal(e, undefined);
1408
+ i = true;
1409
+ }
1410
+ t = n[STORE_LOOKUP] || t;
1411
+ }
1412
+ const r = PARENTS.get(n?.[STORE_VALUE] || e);
1413
+ if (!r) return i;
1414
+ if (r instanceof Set) {
1415
+ for (let e of r) i = recursivelyNotify(e, t) || i;
1416
+ } else i = recursivelyNotify(r, t) || i;
1417
+ return i;
1418
+ }
1419
+ function recursivelyAddParent(e, t) {
1420
+ let n;
1421
+ const i = e[$TARGET];
1422
+ if (i) {
1423
+ n = i[STORE_OVERRIDE];
1424
+ e = i[STORE_VALUE];
1425
+ }
1426
+ if (t) {
1427
+ let n = PARENTS.get(e);
1428
+ if (!n) PARENTS.set(e, t);
1429
+ else if (n !== t) {
1430
+ if (!(n instanceof Set)) PARENTS.set(e, (n = new Set([n])));
1431
+ else if (n.has(t)) return;
1432
+ n.add(t);
1433
+ } else return;
1434
+ }
1435
+ if (Array.isArray(e)) {
1436
+ const t = n?.length || e.length;
1437
+ for (let i = 0; i < t; i++) {
1438
+ const t = n && i in n ? n[i] : e[i];
1439
+ isWrappable(t) && recursivelyAddParent(t, e);
1621
1440
  }
1622
1441
  } else {
1623
- const keys = getKeys(state, override);
1624
- for (let i = 0; i < keys.length; i++) {
1625
- const key = keys[i];
1626
- const item = override && key in override ? override[key] : state[key];
1627
- isWrappable(item) && recursivelyAddParent(item, state);
1442
+ const t = getKeys(e, n);
1443
+ for (let i = 0; i < t.length; i++) {
1444
+ const r = t[i];
1445
+ const s = n && r in n ? n[r] : e[r];
1446
+ isWrappable(s) && recursivelyAddParent(s, e);
1628
1447
  }
1629
1448
  }
1630
1449
  }
1631
- function deep(store) {
1632
- recursivelyAddParent(store);
1633
- return store[$DEEP];
1450
+ function deep(e) {
1451
+ recursivelyAddParent(e);
1452
+ return e[$DEEP];
1634
1453
  }
1635
-
1636
- // src/store/optimistic.ts
1637
- function createOptimisticStore(first, second, options) {
1454
+ function createOptimisticStore(e, t, n) {
1638
1455
  return [];
1639
1456
  }
1640
-
1641
- // src/store/utils.ts
1642
- function snapshot(item, map, lookup) {
1643
- let target, isArray, override, result, unwrapped, v;
1644
- if (!isWrappable(item))
1645
- return item;
1646
- if (map && map.has(item))
1647
- return map.get(item);
1648
- if (!map)
1649
- map = /* @__PURE__ */ new Map();
1650
- if (target = item[$TARGET] || lookup?.get(item)?.[$TARGET]) {
1651
- override = target[STORE_OVERRIDE];
1652
- isArray = Array.isArray(target[STORE_VALUE]);
1653
- map.set(
1654
- item,
1655
- override ? result = isArray ? [] : Object.create(Object.getPrototypeOf(target[STORE_VALUE])) : target[STORE_VALUE]
1457
+ function snapshot(e, t, n) {
1458
+ let i, r, s, o, u, l;
1459
+ if (!isWrappable(e)) return e;
1460
+ if (t && t.has(e)) return t.get(e);
1461
+ if (!t) t = new Map();
1462
+ if ((i = e[$TARGET] || n?.get(e)?.[$TARGET])) {
1463
+ s = i[STORE_OVERRIDE];
1464
+ r = Array.isArray(i[STORE_VALUE]);
1465
+ t.set(
1466
+ e,
1467
+ s ? (o = r ? [] : Object.create(Object.getPrototypeOf(i[STORE_VALUE]))) : i[STORE_VALUE]
1656
1468
  );
1657
- item = target[STORE_VALUE];
1658
- lookup = storeLookup;
1469
+ e = i[STORE_VALUE];
1470
+ n = storeLookup;
1659
1471
  } else {
1660
- isArray = Array.isArray(item);
1661
- map.set(item, item);
1662
- }
1663
- if (isArray) {
1664
- const len = override?.length || item.length;
1665
- for (let i = 0; i < len; i++) {
1666
- v = override && i in override ? override[i] : item[i];
1667
- if (v === $DELETED)
1668
- continue;
1669
- if ((unwrapped = snapshot(v, map, lookup)) !== v || result) {
1670
- if (!result)
1671
- map.set(item, result = [...item]);
1672
- result[i] = unwrapped;
1472
+ r = Array.isArray(e);
1473
+ t.set(e, e);
1474
+ }
1475
+ if (r) {
1476
+ const i = s?.length || e.length;
1477
+ for (let r = 0; r < i; r++) {
1478
+ l = s && r in s ? s[r] : e[r];
1479
+ if (l === $DELETED) continue;
1480
+ if ((u = snapshot(l, t, n)) !== l || o) {
1481
+ if (!o) t.set(e, (o = [...e]));
1482
+ o[r] = u;
1673
1483
  }
1674
1484
  }
1675
1485
  } else {
1676
- const keys = getKeys(item, override);
1677
- for (let i = 0, l = keys.length; i < l; i++) {
1678
- let prop = keys[i];
1679
- const desc = getPropertyDescriptor(item, override, prop);
1680
- if (desc.get)
1681
- continue;
1682
- v = override && prop in override ? override[prop] : item[prop];
1683
- if ((unwrapped = snapshot(v, map, lookup)) !== item[prop] || result) {
1684
- if (!result) {
1685
- result = Object.create(Object.getPrototypeOf(item));
1686
- Object.assign(result, item);
1486
+ const i = getKeys(e, s);
1487
+ for (let r = 0, c = i.length; r < c; r++) {
1488
+ let c = i[r];
1489
+ const a = getPropertyDescriptor(e, s, c);
1490
+ if (a.get) continue;
1491
+ l = s && c in s ? s[c] : e[c];
1492
+ if ((u = snapshot(l, t, n)) !== e[c] || o) {
1493
+ if (!o) {
1494
+ o = Object.create(Object.getPrototypeOf(e));
1495
+ Object.assign(o, e);
1687
1496
  }
1688
- result[prop] = unwrapped;
1497
+ o[c] = u;
1689
1498
  }
1690
1499
  }
1691
1500
  }
1692
- return result || item;
1501
+ return o || e;
1693
1502
  }
1694
1503
  function trueFn() {
1695
1504
  return true;
1696
1505
  }
1697
- var propTraps = {
1698
- get(_, property, receiver) {
1699
- if (property === $PROXY)
1700
- return receiver;
1701
- return _.get(property);
1506
+ const propTraps = {
1507
+ get(e, t, n) {
1508
+ if (t === $PROXY) return n;
1509
+ return e.get(t);
1702
1510
  },
1703
- has(_, property) {
1704
- if (property === $PROXY)
1705
- return true;
1706
- return _.has(property);
1511
+ has(e, t) {
1512
+ if (t === $PROXY) return true;
1513
+ return e.has(t);
1707
1514
  },
1708
1515
  set: trueFn,
1709
1516
  deleteProperty: trueFn,
1710
- getOwnPropertyDescriptor(_, property) {
1517
+ getOwnPropertyDescriptor(e, t) {
1711
1518
  return {
1712
1519
  configurable: true,
1713
1520
  enumerable: true,
1714
1521
  get() {
1715
- return _.get(property);
1522
+ return e.get(t);
1716
1523
  },
1717
1524
  set: trueFn,
1718
1525
  deleteProperty: trueFn
1719
1526
  };
1720
1527
  },
1721
- ownKeys(_) {
1722
- return _.keys();
1528
+ ownKeys(e) {
1529
+ return e.keys();
1723
1530
  }
1724
1531
  };
1725
- function resolveSource(s) {
1726
- return !(s = typeof s === "function" ? s() : s) ? {} : s;
1727
- }
1728
- var $SOURCES = Symbol(0);
1729
- function merge(...sources) {
1730
- if (sources.length === 1 && typeof sources[0] !== "function")
1731
- return sources[0];
1732
- let proxy = false;
1733
- const flattened = [];
1734
- for (let i = 0; i < sources.length; i++) {
1735
- const s = sources[i];
1736
- proxy = proxy || !!s && $PROXY in s;
1737
- const childSources = !!s && s[$SOURCES];
1738
- if (childSources)
1739
- flattened.push(...childSources);
1740
- else
1741
- flattened.push(
1742
- typeof s === "function" ? (proxy = true, createMemo(s)) : s
1743
- );
1744
- }
1745
- if (SUPPORTS_PROXY && proxy) {
1532
+ function resolveSource(e) {
1533
+ return !(e = typeof e === "function" ? e() : e) ? {} : e;
1534
+ }
1535
+ const $SOURCES = Symbol(0);
1536
+ function merge(...e) {
1537
+ if (e.length === 1 && typeof e[0] !== "function") return e[0];
1538
+ let t = false;
1539
+ const n = [];
1540
+ for (let i = 0; i < e.length; i++) {
1541
+ const r = e[i];
1542
+ t = t || (!!r && $PROXY in r);
1543
+ const s = !!r && r[$SOURCES];
1544
+ if (s) n.push(...s);
1545
+ else n.push(typeof r === "function" ? ((t = true), createMemo(r)) : r);
1546
+ }
1547
+ if (SUPPORTS_PROXY && t) {
1746
1548
  return new Proxy(
1747
1549
  {
1748
- get(property) {
1749
- if (property === $SOURCES)
1750
- return flattened;
1751
- for (let i = flattened.length - 1; i >= 0; i--) {
1752
- const s = resolveSource(flattened[i]);
1753
- if (property in s)
1754
- return s[property];
1550
+ get(e) {
1551
+ if (e === $SOURCES) return n;
1552
+ for (let t = n.length - 1; t >= 0; t--) {
1553
+ const i = resolveSource(n[t]);
1554
+ if (e in i) return i[e];
1755
1555
  }
1756
1556
  },
1757
- has(property) {
1758
- for (let i = flattened.length - 1; i >= 0; i--) {
1759
- if (property in resolveSource(flattened[i]))
1760
- return true;
1557
+ has(e) {
1558
+ for (let t = n.length - 1; t >= 0; t--) {
1559
+ if (e in resolveSource(n[t])) return true;
1761
1560
  }
1762
1561
  return false;
1763
1562
  },
1764
1563
  keys() {
1765
- const keys = [];
1766
- for (let i = 0; i < flattened.length; i++)
1767
- keys.push(...Object.keys(resolveSource(flattened[i])));
1768
- return [...new Set(keys)];
1564
+ const e = [];
1565
+ for (let t = 0; t < n.length; t++) e.push(...Object.keys(resolveSource(n[t])));
1566
+ return [...new Set(e)];
1769
1567
  }
1770
1568
  },
1771
1569
  propTraps
1772
1570
  );
1773
1571
  }
1774
- const defined = /* @__PURE__ */ Object.create(null);
1775
- let nonTargetKey = false;
1776
- let lastIndex = flattened.length - 1;
1777
- for (let i = lastIndex; i >= 0; i--) {
1778
- const source = flattened[i];
1779
- if (!source) {
1780
- i === lastIndex && lastIndex--;
1572
+ const i = Object.create(null);
1573
+ let r = false;
1574
+ let s = n.length - 1;
1575
+ for (let e = s; e >= 0; e--) {
1576
+ const t = n[e];
1577
+ if (!t) {
1578
+ e === s && s--;
1781
1579
  continue;
1782
1580
  }
1783
- const sourceKeys = Object.getOwnPropertyNames(source);
1784
- for (let j = sourceKeys.length - 1; j >= 0; j--) {
1785
- const key = sourceKeys[j];
1786
- if (key === "__proto__" || key === "constructor")
1787
- continue;
1788
- if (!defined[key]) {
1789
- nonTargetKey = nonTargetKey || i !== lastIndex;
1790
- const desc = Object.getOwnPropertyDescriptor(source, key);
1791
- defined[key] = desc.get ? {
1792
- enumerable: true,
1793
- configurable: true,
1794
- get: desc.get.bind(source)
1795
- } : desc;
1581
+ const o = Object.getOwnPropertyNames(t);
1582
+ for (let n = o.length - 1; n >= 0; n--) {
1583
+ const u = o[n];
1584
+ if (u === "__proto__" || u === "constructor") continue;
1585
+ if (!i[u]) {
1586
+ r = r || e !== s;
1587
+ const n = Object.getOwnPropertyDescriptor(t, u);
1588
+ i[u] = n.get ? { enumerable: true, configurable: true, get: n.get.bind(t) } : n;
1796
1589
  }
1797
1590
  }
1798
1591
  }
1799
- if (!nonTargetKey)
1800
- return flattened[lastIndex];
1801
- const target = {};
1802
- const definedKeys = Object.keys(defined);
1803
- for (let i = definedKeys.length - 1; i >= 0; i--) {
1804
- const key = definedKeys[i], desc = defined[key];
1805
- if (desc.get)
1806
- Object.defineProperty(target, key, desc);
1807
- else
1808
- target[key] = desc.value;
1592
+ if (!r) return n[s];
1593
+ const o = {};
1594
+ const u = Object.keys(i);
1595
+ for (let e = u.length - 1; e >= 0; e--) {
1596
+ const t = u[e],
1597
+ n = i[t];
1598
+ if (n.get) Object.defineProperty(o, t, n);
1599
+ else o[t] = n.value;
1809
1600
  }
1810
- target[$SOURCES] = flattened;
1811
- return target;
1601
+ o[$SOURCES] = n;
1602
+ return o;
1812
1603
  }
1813
- function omit(props, ...keys) {
1814
- const blocked = new Set(keys);
1815
- if (SUPPORTS_PROXY && $PROXY in props) {
1604
+ function omit(e, ...t) {
1605
+ const n = new Set(t);
1606
+ if (SUPPORTS_PROXY && $PROXY in e) {
1816
1607
  return new Proxy(
1817
1608
  {
1818
- get(property) {
1819
- return blocked.has(property) ? void 0 : props[property];
1609
+ get(t) {
1610
+ return n.has(t) ? undefined : e[t];
1820
1611
  },
1821
- has(property) {
1822
- return !blocked.has(property) && property in props;
1612
+ has(t) {
1613
+ return !n.has(t) && t in e;
1823
1614
  },
1824
1615
  keys() {
1825
- return Object.keys(props).filter((k) => !blocked.has(k));
1616
+ return Object.keys(e).filter(e => !n.has(e));
1826
1617
  }
1827
1618
  },
1828
1619
  propTraps
1829
1620
  );
1830
1621
  }
1831
- const result = {};
1832
- for (const propName of Object.getOwnPropertyNames(props)) {
1833
- if (!blocked.has(propName)) {
1834
- const desc = Object.getOwnPropertyDescriptor(props, propName);
1835
- !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable ? result[propName] = desc.value : Object.defineProperty(result, propName, desc);
1622
+ const i = {};
1623
+ for (const t of Object.getOwnPropertyNames(e)) {
1624
+ if (!n.has(t)) {
1625
+ const n = Object.getOwnPropertyDescriptor(e, t);
1626
+ !n.get && !n.set && n.enumerable && n.writable && n.configurable
1627
+ ? (i[t] = n.value)
1628
+ : Object.defineProperty(i, t, n);
1836
1629
  }
1837
1630
  }
1838
- return result;
1631
+ return i;
1839
1632
  }
1840
-
1841
- // src/map.ts
1842
- function mapArray(list, map, options) {
1843
- const keyFn = typeof options?.keyed === "function" ? options.keyed : void 0;
1633
+ function mapArray(e, t, n) {
1634
+ const i = typeof n?.keyed === "function" ? n.keyed : undefined;
1844
1635
  return createMemo(
1845
1636
  updateKeyedMap.bind({
1846
- X: createOwner(),
1847
- n: 0,
1848
- wa: list,
1849
- G: [],
1850
- O: map,
1851
- d: [],
1852
- a: [],
1853
- P: keyFn,
1854
- o: keyFn || options?.keyed === false ? [] : void 0,
1855
- p: map.length > 1 ? [] : void 0,
1856
- Y: options?.fallback
1637
+ Ie: createOwner(),
1638
+ ge: 0,
1639
+ ye: e,
1640
+ Ce: [],
1641
+ De: t,
1642
+ Pe: [],
1643
+ we: [],
1644
+ be: i,
1645
+ Ve: i || n?.keyed === false ? [] : undefined,
1646
+ Ue: t.length > 1 ? [] : undefined,
1647
+ me: n?.fallback
1857
1648
  })
1858
1649
  );
1859
1650
  }
1860
- var pureOptions = { pureWrite: true };
1651
+ const pureOptions = { pureWrite: true };
1861
1652
  function updateKeyedMap() {
1862
- const newItems = this.wa() || [], newLen = newItems.length;
1863
- newItems[$TRACK];
1864
- runWithOwner(this.X, () => {
1865
- let i, j, mapper = this.o ? () => {
1866
- this.o[j] = signal(newItems[j], pureOptions);
1867
- this.p && (this.p[j] = signal(j, pureOptions));
1868
- return this.O(
1869
- read.bind(null, this.o[j]),
1870
- this.p ? read.bind(null, this.p[j]) : void 0
1871
- );
1872
- } : this.p ? () => {
1873
- const item = newItems[j];
1874
- this.p[j] = signal(j, pureOptions);
1875
- return this.O(
1876
- () => item,
1877
- read.bind(null, this.p[j])
1878
- );
1879
- } : () => {
1880
- const item = newItems[j];
1881
- return this.O(() => item);
1882
- };
1883
- if (newLen === 0) {
1884
- if (this.n !== 0) {
1885
- this.X.dispose(false);
1886
- this.a = [];
1887
- this.G = [];
1888
- this.d = [];
1889
- this.n = 0;
1890
- this.o && (this.o = []);
1891
- this.p && (this.p = []);
1653
+ const e = this.ye() || [],
1654
+ t = e.length;
1655
+ e[$TRACK];
1656
+ runWithOwner(this.Ie, () => {
1657
+ let n,
1658
+ i,
1659
+ r = this.Ve
1660
+ ? () => {
1661
+ this.Ve[i] = signal(e[i], pureOptions);
1662
+ this.Ue && (this.Ue[i] = signal(i, pureOptions));
1663
+ return this.De(
1664
+ read.bind(null, this.Ve[i]),
1665
+ this.Ue ? read.bind(null, this.Ue[i]) : undefined
1666
+ );
1667
+ }
1668
+ : this.Ue
1669
+ ? () => {
1670
+ const t = e[i];
1671
+ this.Ue[i] = signal(i, pureOptions);
1672
+ return this.De(() => t, read.bind(null, this.Ue[i]));
1673
+ }
1674
+ : () => {
1675
+ const t = e[i];
1676
+ return this.De(() => t);
1677
+ };
1678
+ if (t === 0) {
1679
+ if (this.ge !== 0) {
1680
+ this.Ie.dispose(false);
1681
+ this.we = [];
1682
+ this.Ce = [];
1683
+ this.Pe = [];
1684
+ this.ge = 0;
1685
+ this.Ve && (this.Ve = []);
1686
+ this.Ue && (this.Ue = []);
1892
1687
  }
1893
- if (this.Y && !this.d[0]) {
1894
- this.d[0] = runWithOwner(
1895
- this.a[0] = createOwner(),
1896
- this.Y
1897
- );
1688
+ if (this.me && !this.Pe[0]) {
1689
+ this.Pe[0] = runWithOwner((this.we[0] = createOwner()), this.me);
1898
1690
  }
1899
- } else if (this.n === 0) {
1900
- if (this.a[0])
1901
- this.a[0].dispose();
1902
- this.d = new Array(newLen);
1903
- for (j = 0; j < newLen; j++) {
1904
- this.G[j] = newItems[j];
1905
- this.d[j] = runWithOwner(this.a[j] = createOwner(), mapper);
1691
+ } else if (this.ge === 0) {
1692
+ if (this.we[0]) this.we[0].dispose();
1693
+ this.Pe = new Array(t);
1694
+ for (i = 0; i < t; i++) {
1695
+ this.Ce[i] = e[i];
1696
+ this.Pe[i] = runWithOwner((this.we[i] = createOwner()), r);
1906
1697
  }
1907
- this.n = newLen;
1698
+ this.ge = t;
1908
1699
  } else {
1909
- let start, end, newEnd, item, key, newIndices, newIndicesNext, temp = new Array(newLen), tempNodes = new Array(newLen), tempRows = this.o ? new Array(newLen) : void 0, tempIndexes = this.p ? new Array(newLen) : void 0;
1910
- for (start = 0, end = Math.min(this.n, newLen); start < end && (this.G[start] === newItems[start] || this.o && compare(this.P, this.G[start], newItems[start])); start++) {
1911
- if (this.o)
1912
- setSignal(this.o[start], newItems[start]);
1700
+ let s,
1701
+ o,
1702
+ u,
1703
+ l,
1704
+ c,
1705
+ a,
1706
+ f,
1707
+ E = new Array(t),
1708
+ d = new Array(t),
1709
+ T = this.Ve ? new Array(t) : undefined,
1710
+ R = this.Ue ? new Array(t) : undefined;
1711
+ for (
1712
+ s = 0, o = Math.min(this.ge, t);
1713
+ s < o && (this.Ce[s] === e[s] || (this.Ve && compare(this.be, this.Ce[s], e[s])));
1714
+ s++
1715
+ ) {
1716
+ if (this.Ve) setSignal(this.Ve[s], e[s]);
1913
1717
  }
1914
- for (end = this.n - 1, newEnd = newLen - 1; end >= start && newEnd >= start && (this.G[end] === newItems[newEnd] || this.o && compare(this.P, this.G[end], newItems[newEnd])); end--, newEnd--) {
1915
- temp[newEnd] = this.d[end];
1916
- tempNodes[newEnd] = this.a[end];
1917
- tempRows && (tempRows[newEnd] = this.o[end]);
1918
- tempIndexes && (tempIndexes[newEnd] = this.p[end]);
1718
+ for (
1719
+ o = this.ge - 1, u = t - 1;
1720
+ o >= s &&
1721
+ u >= s &&
1722
+ (this.Ce[o] === e[u] || (this.Ve && compare(this.be, this.Ce[o], e[u])));
1723
+ o--, u--
1724
+ ) {
1725
+ E[u] = this.Pe[o];
1726
+ d[u] = this.we[o];
1727
+ T && (T[u] = this.Ve[o]);
1728
+ R && (R[u] = this.Ue[o]);
1919
1729
  }
1920
- newIndices = /* @__PURE__ */ new Map();
1921
- newIndicesNext = new Array(newEnd + 1);
1922
- for (j = newEnd; j >= start; j--) {
1923
- item = newItems[j];
1924
- key = this.P ? this.P(item) : item;
1925
- i = newIndices.get(key);
1926
- newIndicesNext[j] = i === void 0 ? -1 : i;
1927
- newIndices.set(key, j);
1730
+ a = new Map();
1731
+ f = new Array(u + 1);
1732
+ for (i = u; i >= s; i--) {
1733
+ l = e[i];
1734
+ c = this.be ? this.be(l) : l;
1735
+ n = a.get(c);
1736
+ f[i] = n === undefined ? -1 : n;
1737
+ a.set(c, i);
1928
1738
  }
1929
- for (i = start; i <= end; i++) {
1930
- item = this.G[i];
1931
- key = this.P ? this.P(item) : item;
1932
- j = newIndices.get(key);
1933
- if (j !== void 0 && j !== -1) {
1934
- temp[j] = this.d[i];
1935
- tempNodes[j] = this.a[i];
1936
- tempRows && (tempRows[j] = this.o[i]);
1937
- tempIndexes && (tempIndexes[j] = this.p[i]);
1938
- j = newIndicesNext[j];
1939
- newIndices.set(key, j);
1940
- } else
1941
- this.a[i].dispose();
1739
+ for (n = s; n <= o; n++) {
1740
+ l = this.Ce[n];
1741
+ c = this.be ? this.be(l) : l;
1742
+ i = a.get(c);
1743
+ if (i !== undefined && i !== -1) {
1744
+ E[i] = this.Pe[n];
1745
+ d[i] = this.we[n];
1746
+ T && (T[i] = this.Ve[n]);
1747
+ R && (R[i] = this.Ue[n]);
1748
+ i = f[i];
1749
+ a.set(c, i);
1750
+ } else this.we[n].dispose();
1942
1751
  }
1943
- for (j = start; j < newLen; j++) {
1944
- if (j in temp) {
1945
- this.d[j] = temp[j];
1946
- this.a[j] = tempNodes[j];
1947
- if (tempRows) {
1948
- this.o[j] = tempRows[j];
1949
- setSignal(this.o[j], newItems[j]);
1752
+ for (i = s; i < t; i++) {
1753
+ if (i in E) {
1754
+ this.Pe[i] = E[i];
1755
+ this.we[i] = d[i];
1756
+ if (T) {
1757
+ this.Ve[i] = T[i];
1758
+ setSignal(this.Ve[i], e[i]);
1950
1759
  }
1951
- if (tempIndexes) {
1952
- this.p[j] = tempIndexes[j];
1953
- setSignal(this.p[j], j);
1760
+ if (R) {
1761
+ this.Ue[i] = R[i];
1762
+ setSignal(this.Ue[i], i);
1954
1763
  }
1955
1764
  } else {
1956
- this.d[j] = runWithOwner(this.a[j] = createOwner(), mapper);
1765
+ this.Pe[i] = runWithOwner((this.we[i] = createOwner()), r);
1957
1766
  }
1958
1767
  }
1959
- this.d = this.d.slice(0, this.n = newLen);
1960
- this.G = newItems.slice(0);
1768
+ this.Pe = this.Pe.slice(0, (this.ge = t));
1769
+ this.Ce = e.slice(0);
1961
1770
  }
1962
1771
  });
1963
- return this.d;
1772
+ return this.Pe;
1964
1773
  }
1965
- function repeat(count, map, options) {
1774
+ function repeat(e, t, n) {
1966
1775
  return updateRepeat.bind({
1967
- X: createOwner(),
1968
- n: 0,
1969
- y: 0,
1970
- xa: count,
1971
- O: map,
1972
- a: [],
1973
- d: [],
1974
- ya: options?.from,
1975
- Y: options?.fallback
1776
+ Ie: createOwner(),
1777
+ ge: 0,
1778
+ ke: 0,
1779
+ ve: e,
1780
+ De: t,
1781
+ we: [],
1782
+ Pe: [],
1783
+ xe: n?.from,
1784
+ me: n?.fallback
1976
1785
  });
1977
1786
  }
1978
1787
  function updateRepeat() {
1979
- const newLen = this.xa();
1980
- const from = this.ya?.() || 0;
1981
- runWithOwner(this.X, () => {
1982
- if (newLen === 0) {
1983
- if (this.n !== 0) {
1984
- this.X.dispose(false);
1985
- this.a = [];
1986
- this.d = [];
1987
- this.n = 0;
1788
+ const e = this.ve();
1789
+ const t = this.xe?.() || 0;
1790
+ runWithOwner(this.Ie, () => {
1791
+ if (e === 0) {
1792
+ if (this.ge !== 0) {
1793
+ this.Ie.dispose(false);
1794
+ this.we = [];
1795
+ this.Pe = [];
1796
+ this.ge = 0;
1988
1797
  }
1989
- if (this.Y && !this.d[0]) {
1990
- this.d[0] = runWithOwner(
1991
- this.a[0] = createOwner(),
1992
- this.Y
1993
- );
1798
+ if (this.me && !this.Pe[0]) {
1799
+ this.Pe[0] = runWithOwner((this.we[0] = createOwner()), this.me);
1994
1800
  }
1995
1801
  return;
1996
1802
  }
1997
- const to = from + newLen;
1998
- const prevTo = this.y + this.n;
1999
- if (this.n === 0 && this.a[0])
2000
- this.a[0].dispose();
2001
- for (let i = to; i < prevTo; i++)
2002
- this.a[i - this.y].dispose();
2003
- if (this.y < from) {
2004
- let i = this.y;
2005
- while (i < from && i < this.n)
2006
- this.a[i++].dispose();
2007
- this.a.splice(0, from - this.y);
2008
- this.d.splice(0, from - this.y);
2009
- } else if (this.y > from) {
2010
- let i = prevTo - this.y - 1;
2011
- let difference = this.y - from;
2012
- this.a.length = this.d.length = newLen;
2013
- while (i >= difference) {
2014
- this.a[i] = this.a[i - difference];
2015
- this.d[i] = this.d[i - difference];
2016
- i--;
1803
+ const n = t + e;
1804
+ const i = this.ke + this.ge;
1805
+ if (this.ge === 0 && this.we[0]) this.we[0].dispose();
1806
+ for (let e = n; e < i; e++) this.we[e - this.ke].dispose();
1807
+ if (this.ke < t) {
1808
+ let e = this.ke;
1809
+ while (e < t && e < this.ge) this.we[e++].dispose();
1810
+ this.we.splice(0, t - this.ke);
1811
+ this.Pe.splice(0, t - this.ke);
1812
+ } else if (this.ke > t) {
1813
+ let n = i - this.ke - 1;
1814
+ let r = this.ke - t;
1815
+ this.we.length = this.Pe.length = e;
1816
+ while (n >= r) {
1817
+ this.we[n] = this.we[n - r];
1818
+ this.Pe[n] = this.Pe[n - r];
1819
+ n--;
2017
1820
  }
2018
- for (let i2 = 0; i2 < difference; i2++) {
2019
- this.d[i2] = runWithOwner(
2020
- this.a[i2] = createOwner(),
2021
- () => this.O(i2 + from)
2022
- );
1821
+ for (let e = 0; e < r; e++) {
1822
+ this.Pe[e] = runWithOwner((this.we[e] = createOwner()), () => this.De(e + t));
2023
1823
  }
2024
1824
  }
2025
- for (let i = prevTo; i < to; i++) {
2026
- this.d[i - from] = runWithOwner(
2027
- this.a[i - from] = createOwner(),
2028
- () => this.O(i)
2029
- );
1825
+ for (let e = i; e < n; e++) {
1826
+ this.Pe[e - t] = runWithOwner((this.we[e - t] = createOwner()), () => this.De(e));
2030
1827
  }
2031
- this.d = this.d.slice(0, newLen);
2032
- this.y = from;
2033
- this.n = newLen;
1828
+ this.Pe = this.Pe.slice(0, e);
1829
+ this.ke = t;
1830
+ this.ge = e;
2034
1831
  });
2035
- return this.d;
2036
- }
2037
- function compare(key, a, b) {
2038
- return key ? key(a) === key(b) : true;
2039
- }
2040
-
2041
- // src/boundaries.ts
2042
- function boundaryComputed(fn, propagationMask) {
2043
- const node = computed(fn, void 0, {
2044
- ka: {
2045
- ma() {
2046
- let flags = this.f;
2047
- this.f &= ~this.Z;
2048
- if (this.Z & 1 /* Pending */ && !(this.f & 4 /* Uninitialized */)) {
2049
- flags &= ~1 /* Pending */;
1832
+ return this.Pe;
1833
+ }
1834
+ function compare(e, t, n) {
1835
+ return e ? e(t) === e(n) : true;
1836
+ }
1837
+ function boundaryComputed(e, t) {
1838
+ const n = computed(e, undefined, {
1839
+ _e: {
1840
+ le() {
1841
+ let e = this.J;
1842
+ this.J &= ~this.Ge;
1843
+ if (this.Ge & STATUS_PENDING && !(this.J & STATUS_UNINITIALIZED)) {
1844
+ e &= ~STATUS_PENDING;
2050
1845
  }
2051
- this.i.notify(this, this.Z, flags);
1846
+ this.Re.notify(this, this.Ge, e);
2052
1847
  },
2053
- Z: propagationMask
1848
+ Ge: t
2054
1849
  }
2055
1850
  });
2056
- node.Z = propagationMask;
2057
- return node;
2058
- }
2059
- function createBoundChildren(owner, fn, queue, mask) {
2060
- const parentQueue = owner.i;
2061
- parentQueue.addChild(owner.i = queue);
2062
- onCleanup(() => parentQueue.removeChild(owner.i));
2063
- return runWithOwner(owner, () => {
2064
- const c = computed(fn);
2065
- return boundaryComputed(() => staleValues(() => flatten(read(c))), mask);
1851
+ n.Ge = t;
1852
+ return n;
1853
+ }
1854
+ function createBoundChildren(e, t, n, i) {
1855
+ const r = e.Re;
1856
+ r.addChild((e.Re = n));
1857
+ onCleanup(() => r.removeChild(e.Re));
1858
+ return runWithOwner(e, () => {
1859
+ const e = computed(t);
1860
+ return boundaryComputed(() => staleValues(() => flatten(read(e))), i);
2066
1861
  });
2067
1862
  }
2068
- var ConditionalQueue = class extends Queue {
2069
- u;
2070
- ha = /* @__PURE__ */ new Set();
2071
- h = /* @__PURE__ */ new Set();
2072
- constructor(disabled) {
1863
+ class ConditionalQueue extends Queue {
1864
+ He;
1865
+ Qe = new Set();
1866
+ $ = new Set();
1867
+ constructor(e) {
2073
1868
  super();
2074
- this.u = disabled;
2075
- }
2076
- run(type) {
2077
- if (!type || read(this.u))
2078
- return;
2079
- return super.run(type);
2080
- }
2081
- notify(node, type, flags) {
2082
- if (read(this.u)) {
2083
- if (type & 1 /* Pending */) {
2084
- if (flags & 1 /* Pending */) {
2085
- this.h.add(node);
2086
- type &= ~1 /* Pending */;
2087
- } else if (this.h.delete(node))
2088
- type &= ~1 /* Pending */;
1869
+ this.He = e;
1870
+ }
1871
+ run(e) {
1872
+ if (!e || read(this.He)) return;
1873
+ return super.run(e);
1874
+ }
1875
+ notify(e, t, n) {
1876
+ if (read(this.He)) {
1877
+ if (t & STATUS_PENDING) {
1878
+ if (n & STATUS_PENDING) {
1879
+ this.$.add(e);
1880
+ t &= ~STATUS_PENDING;
1881
+ } else if (this.$.delete(e)) t &= ~STATUS_PENDING;
2089
1882
  }
2090
- if (type & 2 /* Error */) {
2091
- if (flags & 2 /* Error */) {
2092
- this.ha.add(node);
2093
- type &= ~2 /* Error */;
2094
- } else if (this.ha.delete(node))
2095
- type &= ~2 /* Error */;
1883
+ if (t & STATUS_ERROR) {
1884
+ if (n & STATUS_ERROR) {
1885
+ this.Qe.add(e);
1886
+ t &= ~STATUS_ERROR;
1887
+ } else if (this.Qe.delete(e)) t &= ~STATUS_ERROR;
2096
1888
  }
2097
1889
  }
2098
- return type ? super.notify(node, type, flags) : true;
1890
+ return t ? super.notify(e, t, n) : true;
2099
1891
  }
2100
- };
2101
- var CollectionQueue = class extends Queue {
2102
- _;
2103
- a = /* @__PURE__ */ new Set();
2104
- u = signal(false, { pureWrite: true });
2105
- ra = false;
2106
- constructor(type) {
1892
+ }
1893
+ class CollectionQueue extends Queue {
1894
+ $e;
1895
+ we = new Set();
1896
+ He = signal(false, { pureWrite: true });
1897
+ Le = false;
1898
+ constructor(e) {
2107
1899
  super();
2108
- this._ = type;
2109
- }
2110
- run(type) {
2111
- if (!type || read(this.u))
2112
- return;
2113
- return super.run(type);
2114
- }
2115
- notify(node, type, flags) {
2116
- if (!(type & this._) || this._ & 1 /* Pending */ && this.ra)
2117
- return super.notify(node, type, flags);
2118
- if (flags & this._) {
2119
- this.a.add(node);
2120
- if (this.a.size === 1)
2121
- setSignal(this.u, true);
2122
- } else if (this.a.size > 0) {
2123
- this.a.delete(node);
2124
- if (this.a.size === 0)
2125
- setSignal(this.u, false);
2126
- }
2127
- type &= ~this._;
2128
- return type ? super.notify(node, type, flags) : true;
2129
- }
2130
- };
2131
- function createBoundary(fn, condition) {
2132
- const owner = createOwner();
2133
- const queue = new ConditionalQueue(computed(() => condition() === "hidden" /* HIDDEN */));
2134
- const tree = createBoundChildren(owner, fn, queue, 0);
1900
+ this.$e = e;
1901
+ }
1902
+ run(e) {
1903
+ if (!e || read(this.He)) return;
1904
+ return super.run(e);
1905
+ }
1906
+ notify(e, t, n) {
1907
+ if (!(t & this.$e) || (this.$e & STATUS_PENDING && this.Le)) return super.notify(e, t, n);
1908
+ if (n & this.$e) {
1909
+ this.we.add(e);
1910
+ if (this.we.size === 1) setSignal(this.He, true);
1911
+ } else if (this.we.size > 0) {
1912
+ this.we.delete(e);
1913
+ if (this.we.size === 0) setSignal(this.He, false);
1914
+ }
1915
+ t &= ~this.$e;
1916
+ return t ? super.notify(e, t, n) : true;
1917
+ }
1918
+ }
1919
+ var BoundaryMode;
1920
+ (function (e) {
1921
+ e["VISIBLE"] = "visible";
1922
+ e["HIDDEN"] = "hidden";
1923
+ })(BoundaryMode || (BoundaryMode = {}));
1924
+ function createBoundary(e, t) {
1925
+ const n = createOwner();
1926
+ const i = new ConditionalQueue(computed(() => t() === BoundaryMode.HIDDEN));
1927
+ const r = createBoundChildren(n, e, i, 0);
2135
1928
  computed(() => {
2136
- const disabled = read(queue.u);
2137
- tree.Z = disabled ? 2 /* Error */ | 1 /* Pending */ : 0;
2138
- if (!disabled) {
2139
- queue.h.forEach(
2140
- (node) => queue.notify(node, 1 /* Pending */, 1 /* Pending */)
2141
- );
2142
- queue.ha.forEach((node) => queue.notify(node, 2 /* Error */, 2 /* Error */));
2143
- queue.h.clear();
2144
- queue.ha.clear();
1929
+ const e = read(i.He);
1930
+ r.Ge = e ? STATUS_ERROR | STATUS_PENDING : 0;
1931
+ if (!e) {
1932
+ i.$.forEach(e => i.notify(e, STATUS_PENDING, STATUS_PENDING));
1933
+ i.Qe.forEach(e => i.notify(e, STATUS_ERROR, STATUS_ERROR));
1934
+ i.$.clear();
1935
+ i.Qe.clear();
2145
1936
  }
2146
1937
  });
2147
- return () => read(queue.u) ? void 0 : read(tree);
2148
- }
2149
- function createCollectionBoundary(type, fn, fallback) {
2150
- const owner = createOwner();
2151
- const queue = new CollectionQueue(type);
2152
- const tree = createBoundChildren(owner, fn, queue, type);
2153
- const decision = computed(() => {
2154
- if (!read(queue.u)) {
2155
- const resolved = read(tree);
2156
- if (!untrack(() => read(queue.u)))
2157
- queue.ra = true;
2158
- return resolved;
2159
- }
2160
- return fallback(queue);
1938
+ return () => (read(i.He) ? undefined : read(r));
1939
+ }
1940
+ function createCollectionBoundary(e, t, n) {
1941
+ const i = createOwner();
1942
+ const r = new CollectionQueue(e);
1943
+ const s = createBoundChildren(i, t, r, e);
1944
+ const o = computed(() => {
1945
+ if (!read(r.He)) {
1946
+ const e = read(s);
1947
+ if (!untrack(() => read(r.He))) r.Le = true;
1948
+ return e;
1949
+ }
1950
+ return n(r);
2161
1951
  });
2162
- return read.bind(null, decision);
2163
- }
2164
- function createLoadBoundary(fn, fallback) {
2165
- return createCollectionBoundary(1 /* Pending */, fn, () => fallback());
2166
- }
2167
- function createErrorBoundary(fn, fallback) {
2168
- return createCollectionBoundary(2 /* Error */, fn, (queue) => {
2169
- let node = queue.a.values().next().value;
2170
- return fallback(node.B, () => {
2171
- for (let node2 of queue.a) {
2172
- recompute(node2, true);
2173
- }
1952
+ return read.bind(null, o);
1953
+ }
1954
+ function createLoadBoundary(e, t) {
1955
+ return createCollectionBoundary(STATUS_PENDING, e, () => t());
1956
+ }
1957
+ function collectErrorSources(e, t) {
1958
+ let n = true;
1959
+ let i = e.D;
1960
+ while (i !== null) {
1961
+ const e = i.V;
1962
+ if (e.D && e.J & STATUS_ERROR) {
1963
+ n = false;
1964
+ collectErrorSources(e, t);
1965
+ }
1966
+ i = i.P;
1967
+ }
1968
+ n && t.push(e);
1969
+ }
1970
+ function createErrorBoundary(e, t) {
1971
+ return createCollectionBoundary(STATUS_ERROR, e, e => {
1972
+ let n = e.we.values().next().value;
1973
+ return t(n.Y, () => {
1974
+ const t = [];
1975
+ for (const n of e.we) collectErrorSources(n, t);
1976
+ for (const e of t) recompute(e);
1977
+ schedule();
2174
1978
  });
2175
1979
  });
2176
1980
  }
2177
- function flatten(children, options) {
2178
- if (typeof children === "function" && !children.length) {
2179
- if (options?.doNotUnwrap)
2180
- return children;
1981
+ function flatten(e, t) {
1982
+ if (typeof e === "function" && !e.length) {
1983
+ if (t?.doNotUnwrap) return e;
2181
1984
  do {
2182
- children = children();
2183
- } while (typeof children === "function" && !children.length);
1985
+ e = e();
1986
+ } while (typeof e === "function" && !e.length);
2184
1987
  }
2185
- if (options?.skipNonRendered && (children == null || children === true || children === false || children === ""))
2186
- return;
2187
- if (Array.isArray(children)) {
2188
- let results = [];
2189
- if (flattenArray(children, results, options)) {
1988
+ if (t?.skipNonRendered && (e == null || e === true || e === false || e === "")) return;
1989
+ if (Array.isArray(e)) {
1990
+ let n = [];
1991
+ if (flattenArray(e, n, t)) {
2190
1992
  return () => {
2191
- let nested = [];
2192
- flattenArray(results, nested, { ...options, doNotUnwrap: false });
2193
- return nested;
1993
+ let e = [];
1994
+ flattenArray(n, e, { ...t, doNotUnwrap: false });
1995
+ return e;
2194
1996
  };
2195
1997
  }
2196
- return results;
1998
+ return n;
2197
1999
  }
2198
- return children;
2000
+ return e;
2199
2001
  }
2200
- function flattenArray(children, results = [], options) {
2201
- let notReady = null;
2202
- let needsUnwrap = false;
2203
- for (let i = 0; i < children.length; i++) {
2002
+ function flattenArray(e, t = [], n) {
2003
+ let i = null;
2004
+ let r = false;
2005
+ for (let s = 0; s < e.length; s++) {
2204
2006
  try {
2205
- let child = children[i];
2206
- if (typeof child === "function" && !child.length) {
2207
- if (options?.doNotUnwrap) {
2208
- results.push(child);
2209
- needsUnwrap = true;
2007
+ let i = e[s];
2008
+ if (typeof i === "function" && !i.length) {
2009
+ if (n?.doNotUnwrap) {
2010
+ t.push(i);
2011
+ r = true;
2210
2012
  continue;
2211
2013
  }
2212
2014
  do {
2213
- child = child();
2214
- } while (typeof child === "function" && !child.length);
2015
+ i = i();
2016
+ } while (typeof i === "function" && !i.length);
2215
2017
  }
2216
- if (Array.isArray(child)) {
2217
- needsUnwrap = flattenArray(child, results, options);
2218
- } else if (options?.skipNonRendered && (child == null || child === true || child === false || child === "")) {
2219
- } else
2220
- results.push(child);
2018
+ if (Array.isArray(i)) {
2019
+ r = flattenArray(i, t, n);
2020
+ } else if (n?.skipNonRendered && (i == null || i === true || i === false || i === "")) {
2021
+ } else t.push(i);
2221
2022
  } catch (e) {
2222
- if (!(e instanceof NotReadyError))
2223
- throw e;
2224
- notReady = e;
2225
- }
2226
- }
2227
- if (notReady)
2228
- throw notReady;
2229
- return needsUnwrap;
2230
- }
2231
-
2232
- export { $PROXY, $TARGET, $TRACK, ContextNotFoundError, NoOwnerError, NotReadyError, SUPPORTS_PROXY, createAsync, createBoundary, createContext, createEffect, createErrorBoundary, createLoadBoundary, createMemo, createOptimistic, createOptimisticStore, createProjection, createReaction, createRenderEffect, createRoot, createSignal, createStore, createTrackedEffect, deep, flatten, flush, getContext, getNextChildId, getObserver, getOwner, isEqual, isPending, isWrappable, mapArray, merge, omit, onCleanup, onSettled, pending, reconcile, repeat, resolve, runWithOwner, setContext, snapshot, untrack };
2023
+ if (!(e instanceof NotReadyError)) throw e;
2024
+ i = e;
2025
+ }
2026
+ }
2027
+ if (i) throw i;
2028
+ return r;
2029
+ }
2030
+ export {
2031
+ $PROXY,
2032
+ $TARGET,
2033
+ $TRACK,
2034
+ ContextNotFoundError,
2035
+ NoOwnerError,
2036
+ NotReadyError,
2037
+ SUPPORTS_PROXY,
2038
+ createAsync,
2039
+ createBoundary,
2040
+ createContext,
2041
+ createEffect,
2042
+ createErrorBoundary,
2043
+ createLoadBoundary,
2044
+ createMemo,
2045
+ createOptimistic,
2046
+ createOptimisticStore,
2047
+ createProjection,
2048
+ createReaction,
2049
+ createRenderEffect,
2050
+ createRoot,
2051
+ createSignal,
2052
+ createStore,
2053
+ createTrackedEffect,
2054
+ deep,
2055
+ flatten,
2056
+ flush,
2057
+ getContext,
2058
+ getNextChildId,
2059
+ getObserver,
2060
+ getOwner,
2061
+ isEqual,
2062
+ isPending,
2063
+ isWrappable,
2064
+ mapArray,
2065
+ merge,
2066
+ omit,
2067
+ onCleanup,
2068
+ onSettled,
2069
+ pending,
2070
+ reconcile,
2071
+ repeat,
2072
+ resolve,
2073
+ runWithOwner,
2074
+ setContext,
2075
+ snapshot,
2076
+ untrack
2077
+ };