@solidjs/signals 0.8.2 → 0.8.4

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