@solidjs/signals 0.13.3 → 0.13.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/dev.js +508 -310
- package/dist/node.cjs +1263 -1099
- package/dist/prod.js +975 -804
- package/dist/types/core/async.d.ts +2 -1
- package/dist/types/core/effect.d.ts +2 -2
- package/dist/types/core/lanes.d.ts +4 -0
- package/dist/types/core/scheduler.d.ts +3 -0
- package/dist/types/core/types.d.ts +4 -0
- package/package.json +1 -1
package/dist/prod.js
CHANGED
|
@@ -148,38 +148,115 @@ let clock = 0;
|
|
|
148
148
|
let activeTransition = null;
|
|
149
149
|
let scheduled = false;
|
|
150
150
|
let projectionWriteActive = false;
|
|
151
|
+
let stashedOptimisticReads = null;
|
|
151
152
|
function enforceLoadingBoundary(e) {}
|
|
153
|
+
function shouldReadStashedOptimisticValue(e) {
|
|
154
|
+
return !!stashedOptimisticReads?.has(e);
|
|
155
|
+
}
|
|
152
156
|
function runLaneEffects(e) {
|
|
153
157
|
for (const t of activeLanes) {
|
|
154
|
-
if (t.
|
|
155
|
-
const n = t.
|
|
158
|
+
if (t.U || t.k.size > 0) continue;
|
|
159
|
+
const n = t.G[e - 1];
|
|
156
160
|
if (n.length) {
|
|
157
|
-
t.
|
|
161
|
+
t.G[e - 1] = [];
|
|
158
162
|
runQueue(n, e);
|
|
159
163
|
}
|
|
160
164
|
}
|
|
161
165
|
}
|
|
166
|
+
function queueStashedOptimisticEffects(e) {
|
|
167
|
+
for (let t = e.I; t !== null; t = t.p) {
|
|
168
|
+
const e = t.h;
|
|
169
|
+
if (!e.H) continue;
|
|
170
|
+
if (e.H === EFFECT_TRACKED) {
|
|
171
|
+
if (!e.W) {
|
|
172
|
+
e.W = true;
|
|
173
|
+
e.F.enqueue(EFFECT_USER, e.M);
|
|
174
|
+
}
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
const n = e.O & REACTIVE_ZOMBIE ? zombieQueue : dirtyQueue;
|
|
178
|
+
if (n.P > e.o) n.P = e.o;
|
|
179
|
+
insertIntoHeap(e, n);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
162
182
|
function setProjectionWriteActive(e) {
|
|
163
183
|
projectionWriteActive = e;
|
|
164
184
|
}
|
|
185
|
+
function mergeTransitionState(e, t) {
|
|
186
|
+
t.$ = e;
|
|
187
|
+
e.j.push(...t.j);
|
|
188
|
+
for (const n of activeLanes) {
|
|
189
|
+
if (n.K === t) n.K = e;
|
|
190
|
+
}
|
|
191
|
+
e.Y.push(...t.Y);
|
|
192
|
+
for (const n of t.B) e.B.add(n);
|
|
193
|
+
for (const n of t.Z) {
|
|
194
|
+
if (!e.Z.includes(n)) e.Z.push(n);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
function resolveOptimisticNodes(e) {
|
|
198
|
+
for (let t = 0; t < e.length; t++) {
|
|
199
|
+
const n = e[t];
|
|
200
|
+
n.q = undefined;
|
|
201
|
+
if (n.X !== NOT_PENDING) {
|
|
202
|
+
n.J = n.X;
|
|
203
|
+
n.X = NOT_PENDING;
|
|
204
|
+
}
|
|
205
|
+
const i = n.ee;
|
|
206
|
+
n.ee = NOT_PENDING;
|
|
207
|
+
if (i !== NOT_PENDING && n.J !== i) insertSubs(n, true);
|
|
208
|
+
n.K = null;
|
|
209
|
+
}
|
|
210
|
+
e.length = 0;
|
|
211
|
+
}
|
|
212
|
+
function cleanupCompletedLanes(e) {
|
|
213
|
+
for (const t of activeLanes) {
|
|
214
|
+
const n = e ? t.K === e : !t.K;
|
|
215
|
+
if (!n) continue;
|
|
216
|
+
if (!t.U) {
|
|
217
|
+
if (t.G[0].length) runQueue(t.G[0], EFFECT_RENDER);
|
|
218
|
+
if (t.G[1].length) runQueue(t.G[1], EFFECT_USER);
|
|
219
|
+
}
|
|
220
|
+
if (t.te.q === t) t.te.q = undefined;
|
|
221
|
+
t.k.clear();
|
|
222
|
+
t.G[0].length = 0;
|
|
223
|
+
t.G[1].length = 0;
|
|
224
|
+
activeLanes.delete(t);
|
|
225
|
+
signalLanes.delete(t.te);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
165
228
|
function schedule() {
|
|
166
229
|
if (scheduled) return;
|
|
167
230
|
scheduled = true;
|
|
168
|
-
if (!globalQueue.
|
|
231
|
+
if (!globalQueue.ne && !projectionWriteActive) queueMicrotask(flush);
|
|
232
|
+
}
|
|
233
|
+
function addTransitionBlocker(e) {
|
|
234
|
+
if (activeTransition && !activeTransition.Z.includes(e)) {
|
|
235
|
+
activeTransition.Z.push(e);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
function removeTransitionBlocker(e) {
|
|
239
|
+
const remove = t => {
|
|
240
|
+
if (!t) return;
|
|
241
|
+
const n = t.indexOf(e);
|
|
242
|
+
if (n >= 0) t.splice(n, 1);
|
|
243
|
+
};
|
|
244
|
+
remove(e.K?.Z);
|
|
245
|
+
remove(activeTransition?.Z);
|
|
169
246
|
}
|
|
170
247
|
class Queue {
|
|
171
248
|
i = null;
|
|
172
|
-
|
|
173
|
-
|
|
249
|
+
ie = [[], []];
|
|
250
|
+
re = [];
|
|
174
251
|
created = clock;
|
|
175
252
|
addChild(e) {
|
|
176
|
-
this.
|
|
253
|
+
this.re.push(e);
|
|
177
254
|
e.i = this;
|
|
178
255
|
}
|
|
179
256
|
removeChild(e) {
|
|
180
|
-
const t = this.
|
|
257
|
+
const t = this.re.indexOf(e);
|
|
181
258
|
if (t >= 0) {
|
|
182
|
-
this.
|
|
259
|
+
this.re.splice(t, 1);
|
|
183
260
|
e.i = null;
|
|
184
261
|
}
|
|
185
262
|
}
|
|
@@ -188,88 +265,101 @@ class Queue {
|
|
|
188
265
|
return false;
|
|
189
266
|
}
|
|
190
267
|
run(e) {
|
|
191
|
-
if (this.
|
|
192
|
-
const t = this.
|
|
193
|
-
this.
|
|
268
|
+
if (this.ie[e - 1].length) {
|
|
269
|
+
const t = this.ie[e - 1];
|
|
270
|
+
this.ie[e - 1] = [];
|
|
194
271
|
runQueue(t, e);
|
|
195
272
|
}
|
|
196
|
-
for (let t = 0; t < this.
|
|
273
|
+
for (let t = 0; t < this.re.length; t++) this.re[t].run?.(e);
|
|
197
274
|
}
|
|
198
275
|
enqueue(e, t) {
|
|
199
276
|
if (e) {
|
|
200
277
|
if (currentOptimisticLane) {
|
|
201
278
|
const n = findLane(currentOptimisticLane);
|
|
202
|
-
n.
|
|
279
|
+
n.G[e - 1].push(t);
|
|
203
280
|
} else {
|
|
204
|
-
this.
|
|
281
|
+
this.ie[e - 1].push(t);
|
|
205
282
|
}
|
|
206
283
|
}
|
|
207
284
|
schedule();
|
|
208
285
|
}
|
|
209
286
|
stashQueues(e) {
|
|
210
|
-
e.
|
|
211
|
-
e.
|
|
212
|
-
this.
|
|
213
|
-
for (let t = 0; t < this.
|
|
214
|
-
let n = this.
|
|
215
|
-
let i = e.
|
|
287
|
+
e.ie[0].push(...this.ie[0]);
|
|
288
|
+
e.ie[1].push(...this.ie[1]);
|
|
289
|
+
this.ie = [[], []];
|
|
290
|
+
for (let t = 0; t < this.re.length; t++) {
|
|
291
|
+
let n = this.re[t];
|
|
292
|
+
let i = e.re[t];
|
|
216
293
|
if (!i) {
|
|
217
|
-
i = {
|
|
218
|
-
e.
|
|
294
|
+
i = { ie: [[], []], re: [] };
|
|
295
|
+
e.re[t] = i;
|
|
219
296
|
}
|
|
220
297
|
n.stashQueues(i);
|
|
221
298
|
}
|
|
222
299
|
}
|
|
223
300
|
restoreQueues(e) {
|
|
224
|
-
this.
|
|
225
|
-
this.
|
|
226
|
-
for (let t = 0; t < e.
|
|
227
|
-
const n = e.
|
|
228
|
-
let i = this.
|
|
301
|
+
this.ie[0].push(...e.ie[0]);
|
|
302
|
+
this.ie[1].push(...e.ie[1]);
|
|
303
|
+
for (let t = 0; t < e.re.length; t++) {
|
|
304
|
+
const n = e.re[t];
|
|
305
|
+
let i = this.re[t];
|
|
229
306
|
if (i) i.restoreQueues(n);
|
|
230
307
|
}
|
|
231
308
|
}
|
|
232
309
|
}
|
|
233
310
|
class GlobalQueue extends Queue {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
static
|
|
239
|
-
static
|
|
240
|
-
static
|
|
311
|
+
ne = false;
|
|
312
|
+
oe = [];
|
|
313
|
+
Y = [];
|
|
314
|
+
B = new Set();
|
|
315
|
+
static se;
|
|
316
|
+
static ue;
|
|
317
|
+
static ce = null;
|
|
241
318
|
flush() {
|
|
242
|
-
if (this.
|
|
243
|
-
this.
|
|
319
|
+
if (this.ne) return;
|
|
320
|
+
this.ne = true;
|
|
244
321
|
try {
|
|
245
|
-
runHeap(dirtyQueue, GlobalQueue.
|
|
322
|
+
runHeap(dirtyQueue, GlobalQueue.se);
|
|
246
323
|
if (activeTransition) {
|
|
247
324
|
const e = transitionComplete(activeTransition);
|
|
248
325
|
if (!e) {
|
|
249
|
-
|
|
250
|
-
runHeap(zombieQueue, GlobalQueue.
|
|
251
|
-
this.
|
|
252
|
-
this
|
|
253
|
-
this.
|
|
326
|
+
const e = activeTransition;
|
|
327
|
+
runHeap(zombieQueue, GlobalQueue.se);
|
|
328
|
+
this.oe = [];
|
|
329
|
+
this.Y = [];
|
|
330
|
+
this.B = new Set();
|
|
254
331
|
runLaneEffects(EFFECT_RENDER);
|
|
255
332
|
runLaneEffects(EFFECT_USER);
|
|
256
|
-
this.stashQueues(
|
|
333
|
+
this.stashQueues(e.ae);
|
|
257
334
|
clock++;
|
|
258
335
|
scheduled = dirtyQueue.R >= dirtyQueue.P;
|
|
259
|
-
reassignPendingTransition(
|
|
336
|
+
reassignPendingTransition(e.oe);
|
|
260
337
|
activeTransition = null;
|
|
261
|
-
|
|
338
|
+
if (!e.j.length && e.Y.length) {
|
|
339
|
+
stashedOptimisticReads = new Set();
|
|
340
|
+
for (let t = 0; t < e.Y.length; t++) {
|
|
341
|
+
const n = e.Y[t];
|
|
342
|
+
if (n.L || n.fe) continue;
|
|
343
|
+
stashedOptimisticReads.add(n);
|
|
344
|
+
queueStashedOptimisticEffects(n);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
try {
|
|
348
|
+
finalizePureQueue(null, true);
|
|
349
|
+
} finally {
|
|
350
|
+
stashedOptimisticReads = null;
|
|
351
|
+
}
|
|
262
352
|
return;
|
|
263
353
|
}
|
|
264
|
-
this.
|
|
265
|
-
this.restoreQueues(activeTransition.
|
|
354
|
+
this.oe !== activeTransition.oe && this.oe.push(...activeTransition.oe);
|
|
355
|
+
this.restoreQueues(activeTransition.ae);
|
|
266
356
|
transitions.delete(activeTransition);
|
|
267
357
|
const t = activeTransition;
|
|
268
358
|
activeTransition = null;
|
|
269
|
-
reassignPendingTransition(this.
|
|
359
|
+
reassignPendingTransition(this.oe);
|
|
270
360
|
finalizePureQueue(t);
|
|
271
361
|
} else {
|
|
272
|
-
if (transitions.size) runHeap(zombieQueue, GlobalQueue.
|
|
362
|
+
if (transitions.size) runHeap(zombieQueue, GlobalQueue.se);
|
|
273
363
|
finalizePureQueue();
|
|
274
364
|
}
|
|
275
365
|
clock++;
|
|
@@ -279,16 +369,19 @@ class GlobalQueue extends Queue {
|
|
|
279
369
|
runLaneEffects(EFFECT_USER);
|
|
280
370
|
this.run(EFFECT_USER);
|
|
281
371
|
} finally {
|
|
282
|
-
this.
|
|
372
|
+
this.ne = false;
|
|
283
373
|
}
|
|
284
374
|
}
|
|
285
375
|
notify(e, t, n, i) {
|
|
286
376
|
if (t & STATUS_PENDING) {
|
|
287
377
|
if (n & STATUS_PENDING) {
|
|
288
|
-
const t = i !== undefined ? i : e.
|
|
289
|
-
if (activeTransition && t
|
|
290
|
-
|
|
291
|
-
|
|
378
|
+
const t = i !== undefined ? i : e.le;
|
|
379
|
+
if (activeTransition && t) {
|
|
380
|
+
const e = t.source;
|
|
381
|
+
if (!activeTransition.Z.includes(e)) {
|
|
382
|
+
activeTransition.Z.push(e);
|
|
383
|
+
schedule();
|
|
384
|
+
}
|
|
292
385
|
}
|
|
293
386
|
}
|
|
294
387
|
return true;
|
|
@@ -298,58 +391,56 @@ class GlobalQueue extends Queue {
|
|
|
298
391
|
initTransition(e) {
|
|
299
392
|
if (e) e = currentTransition(e);
|
|
300
393
|
if (e && e === activeTransition) return;
|
|
301
|
-
if (!e && activeTransition && activeTransition.
|
|
394
|
+
if (!e && activeTransition && activeTransition.Ee === clock) return;
|
|
302
395
|
if (!activeTransition) {
|
|
303
396
|
activeTransition = e ?? {
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
397
|
+
Ee: clock,
|
|
398
|
+
oe: [],
|
|
399
|
+
Z: [],
|
|
400
|
+
Y: [],
|
|
401
|
+
B: new Set(),
|
|
402
|
+
j: [],
|
|
403
|
+
ae: { ie: [[], []], re: [] },
|
|
404
|
+
$: false
|
|
312
405
|
};
|
|
313
406
|
} else if (e) {
|
|
314
407
|
const t = activeTransition;
|
|
315
|
-
t
|
|
316
|
-
e.ee.push(...t.ee);
|
|
317
|
-
for (const n of activeLanes) {
|
|
318
|
-
if (n.ne === t) n.ne = e;
|
|
319
|
-
}
|
|
320
|
-
e.$.push(...t.$);
|
|
321
|
-
for (const n of t.j) {
|
|
322
|
-
e.j.add(n);
|
|
323
|
-
}
|
|
408
|
+
mergeTransitionState(e, t);
|
|
324
409
|
transitions.delete(t);
|
|
325
410
|
activeTransition = e;
|
|
326
411
|
}
|
|
327
412
|
transitions.add(activeTransition);
|
|
328
|
-
activeTransition.
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
413
|
+
activeTransition.Ee = clock;
|
|
414
|
+
if (this.oe !== activeTransition.oe) {
|
|
415
|
+
for (let e = 0; e < this.oe.length; e++) {
|
|
416
|
+
const t = this.oe[e];
|
|
417
|
+
t.K = activeTransition;
|
|
418
|
+
activeTransition.oe.push(t);
|
|
419
|
+
}
|
|
420
|
+
this.oe = activeTransition.oe;
|
|
421
|
+
}
|
|
422
|
+
if (this.Y !== activeTransition.Y) {
|
|
423
|
+
for (let e = 0; e < this.Y.length; e++) {
|
|
424
|
+
const t = this.Y[e];
|
|
425
|
+
t.K = activeTransition;
|
|
426
|
+
activeTransition.Y.push(t);
|
|
427
|
+
}
|
|
428
|
+
this.Y = activeTransition.Y;
|
|
429
|
+
}
|
|
341
430
|
for (const e of activeLanes) {
|
|
342
|
-
if (!e.
|
|
431
|
+
if (!e.K) e.K = activeTransition;
|
|
432
|
+
}
|
|
433
|
+
if (this.B !== activeTransition.B) {
|
|
434
|
+
for (const e of this.B) activeTransition.B.add(e);
|
|
435
|
+
this.B = activeTransition.B;
|
|
343
436
|
}
|
|
344
|
-
for (const e of this.j) activeTransition.j.add(e);
|
|
345
|
-
this.j = activeTransition.j;
|
|
346
437
|
}
|
|
347
438
|
}
|
|
348
439
|
function insertSubs(e, t = false) {
|
|
349
|
-
const n = e.
|
|
350
|
-
const i = e.
|
|
440
|
+
const n = e.q || currentOptimisticLane;
|
|
441
|
+
const i = e.Te !== undefined;
|
|
351
442
|
for (let r = e.I; r !== null; r = r.p) {
|
|
352
|
-
if (i && r.h.
|
|
443
|
+
if (i && r.h.de) {
|
|
353
444
|
r.h.O |= REACTIVE_SNAPSHOT_STALE;
|
|
354
445
|
continue;
|
|
355
446
|
}
|
|
@@ -358,13 +449,13 @@ function insertSubs(e, t = false) {
|
|
|
358
449
|
assignOrMergeLane(r.h, n);
|
|
359
450
|
} else if (t) {
|
|
360
451
|
r.h.O |= REACTIVE_OPTIMISTIC_DIRTY;
|
|
361
|
-
r.h.
|
|
452
|
+
r.h.q = undefined;
|
|
362
453
|
}
|
|
363
454
|
const e = r.h;
|
|
364
|
-
if (e.
|
|
365
|
-
if (!e.
|
|
366
|
-
e.
|
|
367
|
-
e.
|
|
455
|
+
if (e.H === EFFECT_TRACKED) {
|
|
456
|
+
if (!e.W) {
|
|
457
|
+
e.W = true;
|
|
458
|
+
e.F.enqueue(EFFECT_USER, e.M);
|
|
368
459
|
}
|
|
369
460
|
continue;
|
|
370
461
|
}
|
|
@@ -374,88 +465,56 @@ function insertSubs(e, t = false) {
|
|
|
374
465
|
}
|
|
375
466
|
}
|
|
376
467
|
function commitPendingNodes() {
|
|
377
|
-
const e = globalQueue.
|
|
468
|
+
const e = globalQueue.oe;
|
|
378
469
|
for (let t = 0; t < e.length; t++) {
|
|
379
470
|
const n = e[t];
|
|
380
|
-
if (n.
|
|
381
|
-
n.
|
|
382
|
-
n.
|
|
383
|
-
if (n.
|
|
471
|
+
if (n.X !== NOT_PENDING) {
|
|
472
|
+
n.J = n.X;
|
|
473
|
+
n.X = NOT_PENDING;
|
|
474
|
+
if (n.H && n.H !== EFFECT_TRACKED) n.W = true;
|
|
384
475
|
}
|
|
385
|
-
if (n.
|
|
386
|
-
|
|
387
|
-
if (e && !(e.Ee & STATUS_PENDING)) {
|
|
388
|
-
n.Ee &= -6;
|
|
389
|
-
n.q = null;
|
|
390
|
-
}
|
|
391
|
-
} else n.Ee &= ~STATUS_UNINITIALIZED;
|
|
392
|
-
if (n.L) GlobalQueue.Y(n, false, true);
|
|
476
|
+
if (!(n.Se & STATUS_PENDING)) n.Se &= ~STATUS_UNINITIALIZED;
|
|
477
|
+
if (n.L) GlobalQueue.ue(n, false, true);
|
|
393
478
|
}
|
|
394
479
|
e.length = 0;
|
|
395
480
|
}
|
|
396
481
|
function finalizePureQueue(e = null, t = false) {
|
|
397
|
-
|
|
482
|
+
const n = !t;
|
|
398
483
|
if (n) commitPendingNodes();
|
|
399
484
|
if (!t) checkBoundaryChildren(globalQueue);
|
|
400
|
-
if (dirtyQueue.R >= dirtyQueue.P) runHeap(dirtyQueue, GlobalQueue.
|
|
485
|
+
if (dirtyQueue.R >= dirtyQueue.P) runHeap(dirtyQueue, GlobalQueue.se);
|
|
401
486
|
if (n) {
|
|
402
487
|
commitPendingNodes();
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
n.fe = n.le;
|
|
409
|
-
n.le = NOT_PENDING;
|
|
410
|
-
}
|
|
411
|
-
const i = n.Te;
|
|
412
|
-
n.Te = NOT_PENDING;
|
|
413
|
-
if (i !== NOT_PENDING && n.fe !== i) insertSubs(n, true);
|
|
414
|
-
n.ne = null;
|
|
415
|
-
}
|
|
416
|
-
t.length = 0;
|
|
417
|
-
const n = e ? e.j : globalQueue.j;
|
|
418
|
-
if (GlobalQueue.B && n.size) {
|
|
419
|
-
for (const e of n) {
|
|
420
|
-
GlobalQueue.B(e);
|
|
421
|
-
}
|
|
422
|
-
n.clear();
|
|
423
|
-
schedule();
|
|
424
|
-
}
|
|
425
|
-
for (const t of activeLanes) {
|
|
426
|
-
const n = e ? t.ne === e : !t.ne;
|
|
427
|
-
if (!n) continue;
|
|
428
|
-
if (!t.k) {
|
|
429
|
-
if (t.W[0].length) runQueue(t.W[0], EFFECT_RENDER);
|
|
430
|
-
if (t.W[1].length) runQueue(t.W[1], EFFECT_USER);
|
|
488
|
+
resolveOptimisticNodes(e ? e.Y : globalQueue.Y);
|
|
489
|
+
const t = e ? e.B : globalQueue.B;
|
|
490
|
+
if (GlobalQueue.ce && t.size) {
|
|
491
|
+
for (const e of t) {
|
|
492
|
+
GlobalQueue.ce(e);
|
|
431
493
|
}
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
t.W[0].length = 0;
|
|
435
|
-
t.W[1].length = 0;
|
|
436
|
-
activeLanes.delete(t);
|
|
437
|
-
signalLanes.delete(t.de);
|
|
494
|
+
t.clear();
|
|
495
|
+
schedule();
|
|
438
496
|
}
|
|
497
|
+
cleanupCompletedLanes(e);
|
|
439
498
|
}
|
|
440
499
|
}
|
|
441
500
|
function checkBoundaryChildren(e) {
|
|
442
|
-
for (const t of e.
|
|
501
|
+
for (const t of e.re) {
|
|
443
502
|
t.checkSources?.();
|
|
444
503
|
checkBoundaryChildren(t);
|
|
445
504
|
}
|
|
446
505
|
}
|
|
447
506
|
function trackOptimisticStore(e) {
|
|
448
|
-
globalQueue.
|
|
507
|
+
globalQueue.B.add(e);
|
|
449
508
|
schedule();
|
|
450
509
|
}
|
|
451
510
|
function reassignPendingTransition(e) {
|
|
452
511
|
for (let t = 0; t < e.length; t++) {
|
|
453
|
-
e[t].
|
|
512
|
+
e[t].K = activeTransition;
|
|
454
513
|
}
|
|
455
514
|
}
|
|
456
515
|
const globalQueue = new GlobalQueue();
|
|
457
516
|
function flush() {
|
|
458
|
-
while (scheduled) {
|
|
517
|
+
while (scheduled || activeTransition) {
|
|
459
518
|
globalQueue.flush();
|
|
460
519
|
}
|
|
461
520
|
}
|
|
@@ -463,21 +522,21 @@ function runQueue(e, t) {
|
|
|
463
522
|
for (let n = 0; n < e.length; n++) e[n](t);
|
|
464
523
|
}
|
|
465
524
|
function transitionComplete(e) {
|
|
466
|
-
if (e
|
|
467
|
-
if (e.
|
|
525
|
+
if (e.$) return true;
|
|
526
|
+
if (e.j.length) return false;
|
|
468
527
|
let t = true;
|
|
469
|
-
for (let n = 0; n < e.
|
|
470
|
-
const i = e.
|
|
471
|
-
if (i.
|
|
528
|
+
for (let n = 0; n < e.Z.length; n++) {
|
|
529
|
+
const i = e.Z[n];
|
|
530
|
+
if (i.Se & STATUS_PENDING && i.le?.source === i) {
|
|
472
531
|
t = false;
|
|
473
532
|
break;
|
|
474
533
|
}
|
|
475
534
|
}
|
|
476
|
-
t && (e
|
|
535
|
+
t && (e.$ = true);
|
|
477
536
|
return t;
|
|
478
537
|
}
|
|
479
538
|
function currentTransition(e) {
|
|
480
|
-
while (e
|
|
539
|
+
while (e.$ && typeof e.$ === "object") e = e.$;
|
|
481
540
|
return e;
|
|
482
541
|
}
|
|
483
542
|
function setActiveTransition(e) {
|
|
@@ -499,105 +558,199 @@ function getOrCreateLane(e) {
|
|
|
499
558
|
if (t) {
|
|
500
559
|
return findLane(t);
|
|
501
560
|
}
|
|
502
|
-
const n = e.
|
|
503
|
-
const i = n?.
|
|
504
|
-
t = {
|
|
561
|
+
const n = e.Re;
|
|
562
|
+
const i = n?.q ? findLane(n.q) : null;
|
|
563
|
+
t = { te: e, k: new Set(), G: [[], []], U: null, K: activeTransition, Oe: i };
|
|
505
564
|
signalLanes.set(e, t);
|
|
506
565
|
activeLanes.add(t);
|
|
507
|
-
e.
|
|
566
|
+
e._e = false;
|
|
508
567
|
return t;
|
|
509
568
|
}
|
|
510
569
|
function findLane(e) {
|
|
511
|
-
while (e.
|
|
570
|
+
while (e.U) e = e.U;
|
|
512
571
|
return e;
|
|
513
572
|
}
|
|
514
573
|
function mergeLanes(e, t) {
|
|
515
574
|
e = findLane(e);
|
|
516
575
|
t = findLane(t);
|
|
517
576
|
if (e === t) return e;
|
|
518
|
-
t.
|
|
519
|
-
for (const n of t.
|
|
520
|
-
e.
|
|
521
|
-
e.
|
|
577
|
+
t.U = e;
|
|
578
|
+
for (const n of t.k) e.k.add(n);
|
|
579
|
+
e.G[0].push(...t.G[0]);
|
|
580
|
+
e.G[1].push(...t.G[1]);
|
|
522
581
|
return e;
|
|
523
582
|
}
|
|
524
583
|
function resolveLane(e) {
|
|
525
|
-
const t = e.
|
|
584
|
+
const t = e.q;
|
|
526
585
|
if (!t) return undefined;
|
|
527
586
|
const n = findLane(t);
|
|
528
587
|
if (activeLanes.has(n)) return n;
|
|
529
|
-
e.
|
|
588
|
+
e.q = undefined;
|
|
530
589
|
return undefined;
|
|
531
590
|
}
|
|
591
|
+
function resolveTransition(e) {
|
|
592
|
+
return resolveLane(e)?.K ?? e.K;
|
|
593
|
+
}
|
|
532
594
|
function hasActiveOverride(e) {
|
|
533
|
-
return !!(e.
|
|
595
|
+
return !!(e.ee !== undefined && e.ee !== NOT_PENDING);
|
|
534
596
|
}
|
|
535
597
|
function assignOrMergeLane(e, t) {
|
|
536
598
|
const n = findLane(t);
|
|
537
|
-
const i = e.
|
|
599
|
+
const i = e.q;
|
|
538
600
|
if (i) {
|
|
539
|
-
if (i.
|
|
540
|
-
e.
|
|
601
|
+
if (i.U) {
|
|
602
|
+
e.q = t;
|
|
541
603
|
return;
|
|
542
604
|
}
|
|
543
605
|
const r = findLane(i);
|
|
544
606
|
if (activeLanes.has(r)) {
|
|
545
607
|
if (r !== n && !hasActiveOverride(e)) {
|
|
546
|
-
if (n.
|
|
547
|
-
e.
|
|
548
|
-
} else if (r.
|
|
608
|
+
if (n.Oe && findLane(n.Oe) === r) {
|
|
609
|
+
e.q = t;
|
|
610
|
+
} else if (r.Oe && findLane(r.Oe) === n);
|
|
549
611
|
else mergeLanes(n, r);
|
|
550
612
|
}
|
|
551
613
|
return;
|
|
552
614
|
}
|
|
553
615
|
}
|
|
554
|
-
e.
|
|
616
|
+
e.q = t;
|
|
617
|
+
}
|
|
618
|
+
function addPendingSource(e, t) {
|
|
619
|
+
if (e.Ie === t || e.pe?.has(t)) return false;
|
|
620
|
+
if (!e.Ie) {
|
|
621
|
+
e.Ie = t;
|
|
622
|
+
return true;
|
|
623
|
+
}
|
|
624
|
+
if (!e.pe) {
|
|
625
|
+
e.pe = new Set([e.Ie, t]);
|
|
626
|
+
} else {
|
|
627
|
+
e.pe.add(t);
|
|
628
|
+
}
|
|
629
|
+
e.Ie = undefined;
|
|
630
|
+
return true;
|
|
631
|
+
}
|
|
632
|
+
function removePendingSource(e, t) {
|
|
633
|
+
if (e.Ie) {
|
|
634
|
+
if (e.Ie !== t) return false;
|
|
635
|
+
e.Ie = undefined;
|
|
636
|
+
return true;
|
|
637
|
+
}
|
|
638
|
+
if (!e.pe?.delete(t)) return false;
|
|
639
|
+
if (e.pe.size === 1) {
|
|
640
|
+
e.Ie = e.pe.values().next().value;
|
|
641
|
+
e.pe = undefined;
|
|
642
|
+
} else if (e.pe.size === 0) {
|
|
643
|
+
e.pe = undefined;
|
|
644
|
+
}
|
|
645
|
+
return true;
|
|
646
|
+
}
|
|
647
|
+
function clearPendingSources(e) {
|
|
648
|
+
e.Ie = undefined;
|
|
649
|
+
e.pe?.clear();
|
|
650
|
+
e.pe = undefined;
|
|
651
|
+
}
|
|
652
|
+
function setPendingError(e, t, n) {
|
|
653
|
+
if (!t) {
|
|
654
|
+
e.le = null;
|
|
655
|
+
return;
|
|
656
|
+
}
|
|
657
|
+
if (n instanceof NotReadyError && n.source === t) {
|
|
658
|
+
e.le = n;
|
|
659
|
+
return;
|
|
660
|
+
}
|
|
661
|
+
const i = e.le;
|
|
662
|
+
if (!(i instanceof NotReadyError) || i.source !== t) {
|
|
663
|
+
e.le = new NotReadyError(t);
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
function forEachDependent(e, t) {
|
|
667
|
+
for (let n = e.I; n !== null; n = n.p) t(n.h);
|
|
668
|
+
for (let n = e.A; n !== null; n = n.N) {
|
|
669
|
+
for (let e = n.I; e !== null; e = e.p) t(e.h);
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
function settlePendingSource(e) {
|
|
673
|
+
let t = false;
|
|
674
|
+
const n = new Set();
|
|
675
|
+
const settle = i => {
|
|
676
|
+
if (n.has(i) || !removePendingSource(i, e)) return;
|
|
677
|
+
n.add(i);
|
|
678
|
+
i.Ee = clock;
|
|
679
|
+
const r = i.Ie ?? i.pe?.values().next().value;
|
|
680
|
+
if (r) {
|
|
681
|
+
setPendingError(i, r);
|
|
682
|
+
updatePendingSignal(i);
|
|
683
|
+
} else {
|
|
684
|
+
i.Se &= ~STATUS_PENDING;
|
|
685
|
+
setPendingError(i);
|
|
686
|
+
updatePendingSignal(i);
|
|
687
|
+
if (i.he) {
|
|
688
|
+
if (i.H === EFFECT_TRACKED) {
|
|
689
|
+
const e = i;
|
|
690
|
+
if (!e.W) {
|
|
691
|
+
e.W = true;
|
|
692
|
+
e.F.enqueue(EFFECT_USER, e.M);
|
|
693
|
+
}
|
|
694
|
+
} else {
|
|
695
|
+
const e = i.O & REACTIVE_ZOMBIE ? zombieQueue : dirtyQueue;
|
|
696
|
+
if (e.P > i.o) e.P = i.o;
|
|
697
|
+
insertIntoHeap(i, e);
|
|
698
|
+
}
|
|
699
|
+
t = true;
|
|
700
|
+
}
|
|
701
|
+
i.he = false;
|
|
702
|
+
}
|
|
703
|
+
forEachDependent(i, settle);
|
|
704
|
+
};
|
|
705
|
+
forEachDependent(e, settle);
|
|
706
|
+
if (t) schedule();
|
|
555
707
|
}
|
|
556
708
|
function handleAsync(e, t, n) {
|
|
557
709
|
const i = typeof t === "object" && t !== null;
|
|
558
710
|
const r = i && untrack(() => t[Symbol.asyncIterator]);
|
|
559
711
|
const o = !r && i && untrack(() => typeof t.then === "function");
|
|
560
712
|
if (!o && !r) {
|
|
561
|
-
e.
|
|
713
|
+
e.Ae = null;
|
|
562
714
|
return t;
|
|
563
715
|
}
|
|
564
|
-
e.
|
|
716
|
+
e.Ae = t;
|
|
565
717
|
let s;
|
|
566
718
|
const handleError = n => {
|
|
567
|
-
if (e.
|
|
568
|
-
globalQueue.initTransition(e
|
|
719
|
+
if (e.Ae !== t) return;
|
|
720
|
+
globalQueue.initTransition(resolveTransition(e));
|
|
569
721
|
notifyStatus(e, n instanceof NotReadyError ? STATUS_PENDING : STATUS_ERROR, n);
|
|
570
|
-
e.
|
|
722
|
+
e.Ee = clock;
|
|
571
723
|
};
|
|
572
724
|
const asyncWrite = (i, r) => {
|
|
573
|
-
if (e.
|
|
725
|
+
if (e.Ae !== t) return;
|
|
574
726
|
if (e.O & (REACTIVE_DIRTY | REACTIVE_OPTIMISTIC_DIRTY)) return;
|
|
575
|
-
globalQueue.initTransition(e
|
|
727
|
+
globalQueue.initTransition(resolveTransition(e));
|
|
576
728
|
clearStatus(e);
|
|
577
729
|
const o = resolveLane(e);
|
|
578
|
-
if (o) o.
|
|
730
|
+
if (o) o.k.delete(e);
|
|
579
731
|
if (n) n(i);
|
|
580
|
-
else if (e.
|
|
581
|
-
if (e.
|
|
732
|
+
else if (e.ee !== undefined) {
|
|
733
|
+
if (e.ee !== undefined && e.ee !== NOT_PENDING) e.X = i;
|
|
582
734
|
else {
|
|
583
|
-
e.
|
|
735
|
+
e.J = i;
|
|
584
736
|
insertSubs(e);
|
|
585
737
|
}
|
|
586
|
-
e.
|
|
738
|
+
e.Ee = clock;
|
|
587
739
|
} else if (o) {
|
|
588
|
-
const t = e.
|
|
589
|
-
const n = e.
|
|
740
|
+
const t = e.J;
|
|
741
|
+
const n = e.Ne;
|
|
590
742
|
if (!n || !n(i, t)) {
|
|
591
|
-
e.
|
|
592
|
-
e.
|
|
593
|
-
if (e.
|
|
594
|
-
setSignal(e.
|
|
743
|
+
e.J = i;
|
|
744
|
+
e.Ee = clock;
|
|
745
|
+
if (e.Pe) {
|
|
746
|
+
setSignal(e.Pe, i);
|
|
595
747
|
}
|
|
596
748
|
insertSubs(e, true);
|
|
597
749
|
}
|
|
598
750
|
} else {
|
|
599
751
|
setSignal(e, () => i);
|
|
600
752
|
}
|
|
753
|
+
settlePendingSource(e);
|
|
601
754
|
schedule();
|
|
602
755
|
flush();
|
|
603
756
|
r?.();
|
|
@@ -618,7 +771,7 @@ function handleAsync(e, t, n) {
|
|
|
618
771
|
);
|
|
619
772
|
i = false;
|
|
620
773
|
if (!n) {
|
|
621
|
-
globalQueue.initTransition(e
|
|
774
|
+
globalQueue.initTransition(resolveTransition(e));
|
|
622
775
|
throw new NotReadyError(context);
|
|
623
776
|
}
|
|
624
777
|
}
|
|
@@ -654,126 +807,92 @@ function handleAsync(e, t, n) {
|
|
|
654
807
|
};
|
|
655
808
|
const r = iterate();
|
|
656
809
|
if (!i && !r) {
|
|
657
|
-
globalQueue.initTransition(e
|
|
810
|
+
globalQueue.initTransition(resolveTransition(e));
|
|
658
811
|
throw new NotReadyError(context);
|
|
659
812
|
}
|
|
660
813
|
}
|
|
661
814
|
return s;
|
|
662
815
|
}
|
|
663
|
-
function clearStatus(e) {
|
|
664
|
-
e
|
|
665
|
-
e
|
|
816
|
+
function clearStatus(e, t = false) {
|
|
817
|
+
clearPendingSources(e);
|
|
818
|
+
removeTransitionBlocker(e);
|
|
819
|
+
e.he = false;
|
|
820
|
+
e.Se = t ? 0 : e.Se & STATUS_UNINITIALIZED;
|
|
821
|
+
setPendingError(e);
|
|
666
822
|
updatePendingSignal(e);
|
|
667
|
-
e.
|
|
823
|
+
e.ge?.();
|
|
668
824
|
}
|
|
669
825
|
function notifyStatus(e, t, n, i, r) {
|
|
670
826
|
if (t === STATUS_ERROR && !(n instanceof StatusError) && !(n instanceof NotReadyError))
|
|
671
827
|
n = new StatusError(e, n);
|
|
672
|
-
const o = n instanceof NotReadyError
|
|
673
|
-
const s =
|
|
674
|
-
const u =
|
|
828
|
+
const o = t === STATUS_PENDING && n instanceof NotReadyError ? n.source : undefined;
|
|
829
|
+
const s = o === e;
|
|
830
|
+
const u = t === STATUS_PENDING && e.ee !== undefined && !s;
|
|
831
|
+
const c = u && hasActiveOverride(e);
|
|
675
832
|
if (!i) {
|
|
676
|
-
|
|
677
|
-
|
|
833
|
+
if (t === STATUS_PENDING && o) {
|
|
834
|
+
addPendingSource(e, o);
|
|
835
|
+
e.Se = STATUS_PENDING | (e.Se & STATUS_UNINITIALIZED);
|
|
836
|
+
setPendingError(e, e.Ie ?? e.pe?.values().next().value, n);
|
|
837
|
+
if (o === e) addTransitionBlocker(e);
|
|
838
|
+
} else {
|
|
839
|
+
clearPendingSources(e);
|
|
840
|
+
removeTransitionBlocker(e);
|
|
841
|
+
e.Se = t | (t !== STATUS_ERROR ? e.Se & STATUS_UNINITIALIZED : 0);
|
|
842
|
+
e.le = n;
|
|
843
|
+
}
|
|
678
844
|
updatePendingSignal(e);
|
|
679
845
|
}
|
|
680
846
|
if (r && !i) {
|
|
681
847
|
assignOrMergeLane(e, r);
|
|
682
848
|
}
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
}
|
|
689
|
-
const c = i || u;
|
|
690
|
-
const a = i || s ? undefined : r;
|
|
691
|
-
if (e.he) {
|
|
692
|
-
if (c) {
|
|
693
|
-
e.he(t, n);
|
|
849
|
+
const a = i || c;
|
|
850
|
+
const f = i || u ? undefined : r;
|
|
851
|
+
if (e.ge) {
|
|
852
|
+
if (a) {
|
|
853
|
+
e.ge(t, n);
|
|
694
854
|
} else {
|
|
695
|
-
e.
|
|
855
|
+
e.ge();
|
|
696
856
|
}
|
|
697
857
|
return;
|
|
698
858
|
}
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
if (
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
for (let e = i.I; e !== null; e = e.p) {
|
|
708
|
-
e.h.J = clock;
|
|
709
|
-
if (e.h.q !== n) {
|
|
710
|
-
!e.h.ne && globalQueue.M.push(e.h);
|
|
711
|
-
notifyStatus(e.h, t, n, c, a);
|
|
712
|
-
}
|
|
859
|
+
forEachDependent(e, e => {
|
|
860
|
+
e.Ee = clock;
|
|
861
|
+
if (
|
|
862
|
+
(t === STATUS_PENDING && o && e.Ie !== o && !e.pe?.has(o)) ||
|
|
863
|
+
(t !== STATUS_PENDING && (e.le !== n || e.Ie || e.pe))
|
|
864
|
+
) {
|
|
865
|
+
!e.K && globalQueue.oe.push(e);
|
|
866
|
+
notifyStatus(e, t, n, a, f);
|
|
713
867
|
}
|
|
714
|
-
}
|
|
715
|
-
}
|
|
716
|
-
function unlinkSubs(e) {
|
|
717
|
-
const t = e.m;
|
|
718
|
-
const n = e.D;
|
|
719
|
-
const i = e.p;
|
|
720
|
-
const r = e.Ae;
|
|
721
|
-
if (i !== null) i.Ae = r;
|
|
722
|
-
else t.Ne = r;
|
|
723
|
-
if (r !== null) r.p = i;
|
|
724
|
-
else {
|
|
725
|
-
t.I = i;
|
|
726
|
-
if (i === null) {
|
|
727
|
-
t.ge?.();
|
|
728
|
-
t.L && !t.Pe && !(t.O & REACTIVE_ZOMBIE) && unobserved(t);
|
|
729
|
-
}
|
|
730
|
-
}
|
|
731
|
-
return n;
|
|
732
|
-
}
|
|
733
|
-
function unobserved(e) {
|
|
734
|
-
deleteFromHeap(e, e.O & REACTIVE_ZOMBIE ? zombieQueue : dirtyQueue);
|
|
735
|
-
let t = e.C;
|
|
736
|
-
while (t !== null) {
|
|
737
|
-
t = unlinkSubs(t);
|
|
738
|
-
}
|
|
739
|
-
e.C = null;
|
|
740
|
-
disposeChildren(e, true);
|
|
741
|
-
}
|
|
742
|
-
function link(e, t) {
|
|
743
|
-
const n = t.Ce;
|
|
744
|
-
if (n !== null && n.m === e) return;
|
|
745
|
-
let i = null;
|
|
746
|
-
const r = t.O & REACTIVE_RECOMPUTING_DEPS;
|
|
747
|
-
if (r) {
|
|
748
|
-
i = n !== null ? n.D : t.C;
|
|
749
|
-
if (i !== null && i.m === e) {
|
|
750
|
-
t.Ce = i;
|
|
751
|
-
return;
|
|
752
|
-
}
|
|
753
|
-
}
|
|
754
|
-
const o = e.Ne;
|
|
755
|
-
if (o !== null && o.h === t && (!r || isValidLink(o, t))) return;
|
|
756
|
-
const s = (t.Ce = e.Ne = { m: e, h: t, D: i, Ae: o, p: null });
|
|
757
|
-
if (n !== null) n.D = s;
|
|
758
|
-
else t.C = s;
|
|
759
|
-
if (o !== null) o.p = s;
|
|
760
|
-
else e.I = s;
|
|
868
|
+
});
|
|
761
869
|
}
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
870
|
+
let externalSourceConfig = null;
|
|
871
|
+
function enableExternalSource(e) {
|
|
872
|
+
const { factory: t, untrack: n = e => e() } = e;
|
|
873
|
+
if (externalSourceConfig) {
|
|
874
|
+
const { factory: e, untrack: i } = externalSourceConfig;
|
|
875
|
+
externalSourceConfig = {
|
|
876
|
+
factory: (n, i) => {
|
|
877
|
+
const r = e(n, i);
|
|
878
|
+
const o = t(e => r.track(e), i);
|
|
879
|
+
return {
|
|
880
|
+
track: e => o.track(e),
|
|
881
|
+
dispose() {
|
|
882
|
+
o.dispose();
|
|
883
|
+
r.dispose();
|
|
884
|
+
}
|
|
885
|
+
};
|
|
886
|
+
},
|
|
887
|
+
untrack: e => i(() => n(e))
|
|
888
|
+
};
|
|
889
|
+
} else {
|
|
890
|
+
externalSourceConfig = { factory: t, untrack: n };
|
|
771
891
|
}
|
|
772
|
-
return false;
|
|
773
892
|
}
|
|
774
893
|
const PENDING_OWNER = {};
|
|
775
894
|
function markDisposal(e) {
|
|
776
|
-
let t = e.
|
|
895
|
+
let t = e.Ce;
|
|
777
896
|
while (t) {
|
|
778
897
|
t.O |= REACTIVE_ZOMBIE;
|
|
779
898
|
if (t.O & REACTIVE_IN_HEAP) {
|
|
@@ -781,7 +900,7 @@ function markDisposal(e) {
|
|
|
781
900
|
insertIntoHeap(t, zombieQueue);
|
|
782
901
|
}
|
|
783
902
|
markDisposal(t);
|
|
784
|
-
t = t.
|
|
903
|
+
t = t.De;
|
|
785
904
|
}
|
|
786
905
|
}
|
|
787
906
|
function dispose(e) {
|
|
@@ -790,15 +909,15 @@ function dispose(e) {
|
|
|
790
909
|
t = unlinkSubs(t);
|
|
791
910
|
} while (t !== null);
|
|
792
911
|
e.C = null;
|
|
793
|
-
e.
|
|
912
|
+
e.ye = null;
|
|
794
913
|
disposeChildren(e, true);
|
|
795
914
|
}
|
|
796
915
|
function disposeChildren(e, t = false, n) {
|
|
797
916
|
if (e.O & REACTIVE_DISPOSED) return;
|
|
798
917
|
if (t) e.O = REACTIVE_DISPOSED;
|
|
799
|
-
let i = n ? e.
|
|
918
|
+
let i = n ? e.me : e.Ce;
|
|
800
919
|
while (i) {
|
|
801
|
-
const e = i.
|
|
920
|
+
const e = i.De;
|
|
802
921
|
if (i.C) {
|
|
803
922
|
const e = i;
|
|
804
923
|
deleteFromHeap(e, e.O & REACTIVE_ZOMBIE ? zombieQueue : dirtyQueue);
|
|
@@ -807,21 +926,21 @@ function disposeChildren(e, t = false, n) {
|
|
|
807
926
|
t = unlinkSubs(t);
|
|
808
927
|
} while (t !== null);
|
|
809
928
|
e.C = null;
|
|
810
|
-
e.
|
|
929
|
+
e.ye = null;
|
|
811
930
|
}
|
|
812
931
|
disposeChildren(i, true);
|
|
813
932
|
i = e;
|
|
814
933
|
}
|
|
815
934
|
if (n) {
|
|
816
|
-
e.
|
|
935
|
+
e.me = null;
|
|
817
936
|
} else {
|
|
818
|
-
e.
|
|
819
|
-
e.
|
|
937
|
+
e.Ce = null;
|
|
938
|
+
e.ve = 0;
|
|
820
939
|
}
|
|
821
940
|
runDisposal(e, n);
|
|
822
941
|
}
|
|
823
942
|
function runDisposal(e, t) {
|
|
824
|
-
let n = t ? e.
|
|
943
|
+
let n = t ? e.we : e.be;
|
|
825
944
|
if (!n) return;
|
|
826
945
|
if (Array.isArray(n)) {
|
|
827
946
|
for (let e = 0; e < n.length; e++) {
|
|
@@ -831,12 +950,12 @@ function runDisposal(e, t) {
|
|
|
831
950
|
} else {
|
|
832
951
|
n.call(n);
|
|
833
952
|
}
|
|
834
|
-
t ? (e.
|
|
953
|
+
t ? (e.we = null) : (e.be = null);
|
|
835
954
|
}
|
|
836
955
|
function childId(e, t) {
|
|
837
956
|
let n = e;
|
|
838
957
|
while (n.Ve && n.i) n = n.i;
|
|
839
|
-
if (n.id != null) return formatId(n.id, t ? n.
|
|
958
|
+
if (n.id != null) return formatId(n.id, t ? n.ve++ : n.ve);
|
|
840
959
|
throw new Error("Cannot get child id from owner without an id");
|
|
841
960
|
}
|
|
842
961
|
function getNextChildId(e) {
|
|
@@ -858,10 +977,12 @@ function getOwner() {
|
|
|
858
977
|
return context;
|
|
859
978
|
}
|
|
860
979
|
function onCleanup(e) {
|
|
861
|
-
if (!context)
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
980
|
+
if (!context) {
|
|
981
|
+
return e;
|
|
982
|
+
}
|
|
983
|
+
if (!context.be) context.be = e;
|
|
984
|
+
else if (Array.isArray(context.be)) context.be.push(e);
|
|
985
|
+
else context.be = [context.be, e];
|
|
865
986
|
return e;
|
|
866
987
|
}
|
|
867
988
|
function isDisposed(e) {
|
|
@@ -875,26 +996,26 @@ function createOwner(e) {
|
|
|
875
996
|
Ve: n || undefined,
|
|
876
997
|
t: true,
|
|
877
998
|
u: t?.t ? t.u : t,
|
|
999
|
+
Ce: null,
|
|
878
1000
|
De: null,
|
|
879
|
-
ye: null,
|
|
880
|
-
me: null,
|
|
881
|
-
ce: t?.ce ?? globalQueue,
|
|
882
|
-
Le: t?.Le || defaultContext,
|
|
883
|
-
we: 0,
|
|
884
1001
|
be: null,
|
|
885
|
-
|
|
1002
|
+
F: t?.F ?? globalQueue,
|
|
1003
|
+
Le: t?.Le || defaultContext,
|
|
1004
|
+
ve: 0,
|
|
1005
|
+
we: null,
|
|
1006
|
+
me: null,
|
|
886
1007
|
i: t,
|
|
887
1008
|
dispose(e = true) {
|
|
888
1009
|
disposeChildren(i, e);
|
|
889
1010
|
}
|
|
890
1011
|
};
|
|
891
1012
|
if (t) {
|
|
892
|
-
const e = t.
|
|
1013
|
+
const e = t.Ce;
|
|
893
1014
|
if (e === null) {
|
|
894
|
-
t.
|
|
1015
|
+
t.Ce = i;
|
|
895
1016
|
} else {
|
|
896
|
-
i.
|
|
897
|
-
t.
|
|
1017
|
+
i.De = e;
|
|
1018
|
+
t.Ce = i;
|
|
898
1019
|
}
|
|
899
1020
|
}
|
|
900
1021
|
return i;
|
|
@@ -903,115 +1024,66 @@ function createRoot(e, t) {
|
|
|
903
1024
|
const n = createOwner(t);
|
|
904
1025
|
return runWithOwner(n, () => e(n.dispose));
|
|
905
1026
|
}
|
|
906
|
-
function
|
|
907
|
-
|
|
908
|
-
const
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
s.xe = n;
|
|
920
|
-
s.We = undefined;
|
|
921
|
-
s.se = r?.render ? EFFECT_RENDER : EFFECT_USER;
|
|
922
|
-
s.he = (e, t) => {
|
|
923
|
-
const n = e !== undefined ? e : s.Ee;
|
|
924
|
-
const i = t !== undefined ? t : s.q;
|
|
925
|
-
if (n & STATUS_ERROR) {
|
|
926
|
-
let e = i;
|
|
927
|
-
s.ce.notify(s, STATUS_PENDING, 0);
|
|
928
|
-
if (s.se === EFFECT_USER) {
|
|
929
|
-
try {
|
|
930
|
-
return s.xe
|
|
931
|
-
? s.xe(e, () => {
|
|
932
|
-
s.We?.();
|
|
933
|
-
s.We = undefined;
|
|
934
|
-
})
|
|
935
|
-
: console.error(e);
|
|
936
|
-
} catch (t) {
|
|
937
|
-
e = t;
|
|
938
|
-
}
|
|
939
|
-
}
|
|
940
|
-
if (!s.ce.notify(s, STATUS_ERROR, STATUS_ERROR)) throw e;
|
|
941
|
-
} else if (s.se === EFFECT_RENDER) {
|
|
942
|
-
s.ce.notify(s, STATUS_PENDING | STATUS_ERROR, n, i);
|
|
1027
|
+
function unlinkSubs(e) {
|
|
1028
|
+
const t = e.m;
|
|
1029
|
+
const n = e.D;
|
|
1030
|
+
const i = e.p;
|
|
1031
|
+
const r = e.Ue;
|
|
1032
|
+
if (i !== null) i.Ue = r;
|
|
1033
|
+
else t.ke = r;
|
|
1034
|
+
if (r !== null) r.p = i;
|
|
1035
|
+
else {
|
|
1036
|
+
t.I = i;
|
|
1037
|
+
if (i === null) {
|
|
1038
|
+
t.xe?.();
|
|
1039
|
+
t.L && !t.Ge && !(t.O & REACTIVE_ZOMBIE) && unobserved(t);
|
|
943
1040
|
}
|
|
944
|
-
}
|
|
945
|
-
|
|
946
|
-
!r?.defer && (s.se === EFFECT_USER ? s.ce.enqueue(s.se, runEffect.bind(s)) : runEffect.call(s));
|
|
947
|
-
o = true;
|
|
948
|
-
onCleanup(() => s.We?.());
|
|
1041
|
+
}
|
|
1042
|
+
return n;
|
|
949
1043
|
}
|
|
950
|
-
function
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
this.We = this.Ue(this.fe, this.ke);
|
|
956
|
-
} catch (e) {
|
|
957
|
-
this.q = new StatusError(this, e);
|
|
958
|
-
this.Ee |= STATUS_ERROR;
|
|
959
|
-
if (!this.ce.notify(this, STATUS_ERROR, STATUS_ERROR)) throw e;
|
|
960
|
-
} finally {
|
|
961
|
-
this.ke = this.fe;
|
|
962
|
-
this.ue = false;
|
|
1044
|
+
function unobserved(e) {
|
|
1045
|
+
deleteFromHeap(e, e.O & REACTIVE_ZOMBIE ? zombieQueue : dirtyQueue);
|
|
1046
|
+
let t = e.C;
|
|
1047
|
+
while (t !== null) {
|
|
1048
|
+
t = unlinkSubs(t);
|
|
963
1049
|
}
|
|
1050
|
+
e.C = null;
|
|
1051
|
+
disposeChildren(e, true);
|
|
964
1052
|
}
|
|
965
|
-
function
|
|
966
|
-
const
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
()
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
);
|
|
983
|
-
|
|
984
|
-
n.ue = true;
|
|
985
|
-
n.se = EFFECT_TRACKED;
|
|
986
|
-
n.ae = run;
|
|
987
|
-
n.ce.enqueue(EFFECT_USER, run);
|
|
988
|
-
onCleanup(() => n.We?.());
|
|
1053
|
+
function link(e, t) {
|
|
1054
|
+
const n = t.ye;
|
|
1055
|
+
if (n !== null && n.m === e) return;
|
|
1056
|
+
let i = null;
|
|
1057
|
+
const r = t.O & REACTIVE_RECOMPUTING_DEPS;
|
|
1058
|
+
if (r) {
|
|
1059
|
+
i = n !== null ? n.D : t.C;
|
|
1060
|
+
if (i !== null && i.m === e) {
|
|
1061
|
+
t.ye = i;
|
|
1062
|
+
return;
|
|
1063
|
+
}
|
|
1064
|
+
}
|
|
1065
|
+
const o = e.ke;
|
|
1066
|
+
if (o !== null && o.h === t && (!r || isValidLink(o, t))) return;
|
|
1067
|
+
const s = (t.ye = e.ke = { m: e, h: t, D: i, Ue: o, p: null });
|
|
1068
|
+
if (n !== null) n.D = s;
|
|
1069
|
+
else t.C = s;
|
|
1070
|
+
if (o !== null) o.p = s;
|
|
1071
|
+
else e.I = s;
|
|
989
1072
|
}
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
return {
|
|
1000
|
-
track: e => o.track(e),
|
|
1001
|
-
dispose() {
|
|
1002
|
-
o.dispose();
|
|
1003
|
-
r.dispose();
|
|
1004
|
-
}
|
|
1005
|
-
};
|
|
1006
|
-
},
|
|
1007
|
-
untrack: e => i(() => n(e))
|
|
1008
|
-
};
|
|
1009
|
-
} else {
|
|
1010
|
-
externalSourceConfig = { factory: t, untrack: n };
|
|
1073
|
+
function isValidLink(e, t) {
|
|
1074
|
+
const n = t.ye;
|
|
1075
|
+
if (n !== null) {
|
|
1076
|
+
let i = t.C;
|
|
1077
|
+
do {
|
|
1078
|
+
if (i === e) return true;
|
|
1079
|
+
if (i === n) break;
|
|
1080
|
+
i = i.D;
|
|
1081
|
+
} while (i !== null);
|
|
1011
1082
|
}
|
|
1083
|
+
return false;
|
|
1012
1084
|
}
|
|
1013
|
-
GlobalQueue.
|
|
1014
|
-
GlobalQueue.
|
|
1085
|
+
GlobalQueue.se = recompute;
|
|
1086
|
+
GlobalQueue.ue = disposeChildren;
|
|
1015
1087
|
let tracking = false;
|
|
1016
1088
|
let stale = false;
|
|
1017
1089
|
let refreshing = false;
|
|
@@ -1042,15 +1114,15 @@ function releaseSnapshotScope(e) {
|
|
|
1042
1114
|
schedule();
|
|
1043
1115
|
}
|
|
1044
1116
|
function releaseSubtree(e) {
|
|
1045
|
-
let t = e.
|
|
1117
|
+
let t = e.Ce;
|
|
1046
1118
|
while (t) {
|
|
1047
1119
|
if (t.He) {
|
|
1048
|
-
t = t.
|
|
1120
|
+
t = t.De;
|
|
1049
1121
|
continue;
|
|
1050
1122
|
}
|
|
1051
1123
|
if (t.L) {
|
|
1052
1124
|
const e = t;
|
|
1053
|
-
e.
|
|
1125
|
+
e.de = false;
|
|
1054
1126
|
if (e.O & REACTIVE_SNAPSHOT_STALE) {
|
|
1055
1127
|
e.O &= ~REACTIVE_SNAPSHOT_STALE;
|
|
1056
1128
|
e.O |= REACTIVE_DIRTY;
|
|
@@ -1059,13 +1131,13 @@ function releaseSubtree(e) {
|
|
|
1059
1131
|
}
|
|
1060
1132
|
}
|
|
1061
1133
|
releaseSubtree(t);
|
|
1062
|
-
t = t.
|
|
1134
|
+
t = t.De;
|
|
1063
1135
|
}
|
|
1064
1136
|
}
|
|
1065
1137
|
function clearSnapshots() {
|
|
1066
1138
|
if (snapshotSources) {
|
|
1067
1139
|
for (const e of snapshotSources) {
|
|
1068
|
-
delete e.
|
|
1140
|
+
delete e.Te;
|
|
1069
1141
|
delete e[STORE_SNAPSHOT_PROPS];
|
|
1070
1142
|
}
|
|
1071
1143
|
snapshotSources = null;
|
|
@@ -1073,33 +1145,33 @@ function clearSnapshots() {
|
|
|
1073
1145
|
snapshotCaptureActive = false;
|
|
1074
1146
|
}
|
|
1075
1147
|
function recompute(e, t = false) {
|
|
1076
|
-
const n = e.
|
|
1148
|
+
const n = e.H;
|
|
1077
1149
|
if (!t) {
|
|
1078
|
-
if (e.
|
|
1079
|
-
globalQueue.initTransition(e.
|
|
1150
|
+
if (e.K && (!n || activeTransition) && activeTransition !== e.K)
|
|
1151
|
+
globalQueue.initTransition(e.K);
|
|
1080
1152
|
deleteFromHeap(e, e.O & REACTIVE_ZOMBIE ? zombieQueue : dirtyQueue);
|
|
1081
|
-
if (e.
|
|
1153
|
+
if (e.K || n === EFFECT_TRACKED) disposeChildren(e);
|
|
1082
1154
|
else {
|
|
1083
1155
|
markDisposal(e);
|
|
1084
|
-
e.
|
|
1085
|
-
e.
|
|
1086
|
-
e.
|
|
1087
|
-
e.
|
|
1088
|
-
e.
|
|
1156
|
+
e.we = e.be;
|
|
1157
|
+
e.me = e.Ce;
|
|
1158
|
+
e.be = null;
|
|
1159
|
+
e.Ce = null;
|
|
1160
|
+
e.ve = 0;
|
|
1089
1161
|
}
|
|
1090
1162
|
}
|
|
1091
1163
|
const i = !!(e.O & REACTIVE_OPTIMISTIC_DIRTY);
|
|
1092
|
-
const r = e.
|
|
1093
|
-
const o = !!(e.
|
|
1164
|
+
const r = e.ee !== undefined && e.ee !== NOT_PENDING;
|
|
1165
|
+
const o = !!(e.Se & STATUS_PENDING);
|
|
1094
1166
|
const s = context;
|
|
1095
1167
|
context = e;
|
|
1096
|
-
e.
|
|
1168
|
+
e.ye = null;
|
|
1097
1169
|
e.O = REACTIVE_RECOMPUTING_DEPS;
|
|
1098
|
-
e.
|
|
1099
|
-
let u = e.
|
|
1170
|
+
e.Ee = clock;
|
|
1171
|
+
let u = e.X === NOT_PENDING ? e.J : e.X;
|
|
1100
1172
|
let c = e.o;
|
|
1101
1173
|
let a = tracking;
|
|
1102
|
-
let
|
|
1174
|
+
let f = currentOptimisticLane;
|
|
1103
1175
|
tracking = true;
|
|
1104
1176
|
if (i) {
|
|
1105
1177
|
const t = resolveLane(e);
|
|
@@ -1107,35 +1179,36 @@ function recompute(e, t = false) {
|
|
|
1107
1179
|
}
|
|
1108
1180
|
try {
|
|
1109
1181
|
u = handleAsync(e, e.L(u));
|
|
1110
|
-
clearStatus(e);
|
|
1111
|
-
const
|
|
1112
|
-
if (
|
|
1113
|
-
|
|
1114
|
-
updatePendingSignal(
|
|
1182
|
+
clearStatus(e, t);
|
|
1183
|
+
const n = resolveLane(e);
|
|
1184
|
+
if (n) {
|
|
1185
|
+
n.k.delete(e);
|
|
1186
|
+
updatePendingSignal(n.te);
|
|
1115
1187
|
}
|
|
1116
1188
|
} catch (t) {
|
|
1117
1189
|
if (t instanceof NotReadyError && currentOptimisticLane) {
|
|
1118
1190
|
const t = findLane(currentOptimisticLane);
|
|
1119
|
-
if (t.
|
|
1120
|
-
t.
|
|
1121
|
-
e.
|
|
1122
|
-
updatePendingSignal(t.
|
|
1191
|
+
if (t.te !== e) {
|
|
1192
|
+
t.k.add(e);
|
|
1193
|
+
e.q = t;
|
|
1194
|
+
updatePendingSignal(t.te);
|
|
1123
1195
|
}
|
|
1124
1196
|
}
|
|
1197
|
+
if (t instanceof NotReadyError) e.he = true;
|
|
1125
1198
|
notifyStatus(
|
|
1126
1199
|
e,
|
|
1127
1200
|
t instanceof NotReadyError ? STATUS_PENDING : STATUS_ERROR,
|
|
1128
1201
|
t,
|
|
1129
1202
|
undefined,
|
|
1130
|
-
t instanceof NotReadyError ? e.
|
|
1203
|
+
t instanceof NotReadyError ? e.q : undefined
|
|
1131
1204
|
);
|
|
1132
1205
|
} finally {
|
|
1133
1206
|
tracking = a;
|
|
1134
1207
|
e.O = REACTIVE_NONE | (t ? e.O & REACTIVE_SNAPSHOT_STALE : 0);
|
|
1135
1208
|
context = s;
|
|
1136
1209
|
}
|
|
1137
|
-
if (!e.
|
|
1138
|
-
const s = e.
|
|
1210
|
+
if (!e.le) {
|
|
1211
|
+
const s = e.ye;
|
|
1139
1212
|
let a = s !== null ? s.D : e.C;
|
|
1140
1213
|
if (a !== null) {
|
|
1141
1214
|
do {
|
|
@@ -1144,30 +1217,30 @@ function recompute(e, t = false) {
|
|
|
1144
1217
|
if (s !== null) s.D = null;
|
|
1145
1218
|
else e.C = null;
|
|
1146
1219
|
}
|
|
1147
|
-
const
|
|
1148
|
-
const
|
|
1149
|
-
if (
|
|
1150
|
-
const s = r ? e.
|
|
1151
|
-
if (t || (n && activeTransition !== e.
|
|
1152
|
-
e.
|
|
1220
|
+
const f = r ? e.ee : e.X === NOT_PENDING ? e.J : e.X;
|
|
1221
|
+
const l = !e.Ne || !e.Ne(f, u);
|
|
1222
|
+
if (l) {
|
|
1223
|
+
const s = r ? e.ee : undefined;
|
|
1224
|
+
if (t || (n && activeTransition !== e.K) || i) {
|
|
1225
|
+
e.J = u;
|
|
1153
1226
|
if (r && i) {
|
|
1154
|
-
e.
|
|
1155
|
-
e.
|
|
1227
|
+
e.ee = u;
|
|
1228
|
+
e.X = u;
|
|
1156
1229
|
}
|
|
1157
|
-
} else e.
|
|
1158
|
-
if (r && !i && o && !e.
|
|
1159
|
-
if (!r || i || e.
|
|
1230
|
+
} else e.X = u;
|
|
1231
|
+
if (r && !i && o && !e._e) e.ee = u;
|
|
1232
|
+
if (!r || i || e.ee !== s) insertSubs(e, i || r);
|
|
1160
1233
|
} else if (r) {
|
|
1161
|
-
e.
|
|
1234
|
+
e.X = u;
|
|
1162
1235
|
} else if (e.o != c) {
|
|
1163
1236
|
for (let t = e.I; t !== null; t = t.p) {
|
|
1164
1237
|
insertIntoHeapHeight(t.h, t.h.O & REACTIVE_ZOMBIE ? zombieQueue : dirtyQueue);
|
|
1165
1238
|
}
|
|
1166
1239
|
}
|
|
1167
1240
|
}
|
|
1168
|
-
currentOptimisticLane =
|
|
1169
|
-
(!t || e.
|
|
1170
|
-
e.
|
|
1241
|
+
currentOptimisticLane = f;
|
|
1242
|
+
(!t || e.Se & STATUS_PENDING) && !e.K && !(activeTransition && r) && globalQueue.oe.push(e);
|
|
1243
|
+
e.K && n && activeTransition !== e.K && runInTransition(e.K, () => recompute(e));
|
|
1171
1244
|
}
|
|
1172
1245
|
function updateIfNecessary(e) {
|
|
1173
1246
|
if (e.O & REACTIVE_CHECK) {
|
|
@@ -1182,7 +1255,7 @@ function updateIfNecessary(e) {
|
|
|
1182
1255
|
}
|
|
1183
1256
|
}
|
|
1184
1257
|
}
|
|
1185
|
-
if (e.O & (REACTIVE_DIRTY | REACTIVE_OPTIMISTIC_DIRTY) || (e.
|
|
1258
|
+
if (e.O & (REACTIVE_DIRTY | REACTIVE_OPTIMISTIC_DIRTY) || (e.le && e.Ee < clock && !e.Ae)) {
|
|
1186
1259
|
recompute(e);
|
|
1187
1260
|
}
|
|
1188
1261
|
e.O = REACTIVE_NONE | (e.O & REACTIVE_SNAPSHOT_STALE);
|
|
@@ -1192,48 +1265,48 @@ function computed(e, t, n) {
|
|
|
1192
1265
|
const r = {
|
|
1193
1266
|
id: n?.id ?? (i ? context?.id : context?.id != null ? getNextChildId(context) : undefined),
|
|
1194
1267
|
Ve: i || undefined,
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1268
|
+
Ne: n?.equals != null ? n.equals : isEqual,
|
|
1269
|
+
fe: !!n?.pureWrite,
|
|
1270
|
+
xe: n?.unobserved,
|
|
1271
|
+
be: null,
|
|
1272
|
+
F: context?.F ?? globalQueue,
|
|
1200
1273
|
Le: context?.Le ?? defaultContext,
|
|
1201
|
-
|
|
1274
|
+
ve: 0,
|
|
1202
1275
|
L: e,
|
|
1203
|
-
|
|
1276
|
+
J: t,
|
|
1204
1277
|
o: 0,
|
|
1205
1278
|
A: null,
|
|
1206
1279
|
S: undefined,
|
|
1207
1280
|
T: null,
|
|
1208
1281
|
C: null,
|
|
1209
|
-
|
|
1282
|
+
ye: null,
|
|
1210
1283
|
I: null,
|
|
1211
|
-
|
|
1284
|
+
ke: null,
|
|
1212
1285
|
i: context,
|
|
1213
|
-
ye: null,
|
|
1214
1286
|
De: null,
|
|
1287
|
+
Ce: null,
|
|
1215
1288
|
O: n?.lazy ? REACTIVE_LAZY : REACTIVE_NONE,
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1289
|
+
Se: STATUS_UNINITIALIZED,
|
|
1290
|
+
Ee: clock,
|
|
1291
|
+
X: NOT_PENDING,
|
|
1292
|
+
we: null,
|
|
1293
|
+
me: null,
|
|
1294
|
+
Ae: null,
|
|
1295
|
+
K: null
|
|
1223
1296
|
};
|
|
1224
1297
|
r.T = r;
|
|
1225
1298
|
const o = context?.t ? context.u : context;
|
|
1226
1299
|
if (context) {
|
|
1227
|
-
const e = context.
|
|
1300
|
+
const e = context.Ce;
|
|
1228
1301
|
if (e === null) {
|
|
1229
|
-
context.
|
|
1302
|
+
context.Ce = r;
|
|
1230
1303
|
} else {
|
|
1231
|
-
r.
|
|
1232
|
-
context.
|
|
1304
|
+
r.De = e;
|
|
1305
|
+
context.Ce = r;
|
|
1233
1306
|
}
|
|
1234
1307
|
}
|
|
1235
1308
|
if (o) r.o = o.o + 1;
|
|
1236
|
-
if (snapshotCaptureActive && ownerInSnapshotScope(context)) r.
|
|
1309
|
+
if (snapshotCaptureActive && ownerInSnapshotScope(context)) r.de = true;
|
|
1237
1310
|
if (externalSourceConfig) {
|
|
1238
1311
|
const e = signal(undefined, { equals: false, pureWrite: true });
|
|
1239
1312
|
const t = externalSourceConfig.factory(r.L, () => {
|
|
@@ -1247,8 +1320,8 @@ function computed(e, t, n) {
|
|
|
1247
1320
|
}
|
|
1248
1321
|
!n?.lazy && recompute(r, true);
|
|
1249
1322
|
if (snapshotCaptureActive && !n?.lazy) {
|
|
1250
|
-
if (!(r.
|
|
1251
|
-
r.
|
|
1323
|
+
if (!(r.Se & STATUS_PENDING)) {
|
|
1324
|
+
r.Te = r.J === undefined ? NO_SNAPSHOT : r.J;
|
|
1252
1325
|
snapshotSources.add(r);
|
|
1253
1326
|
}
|
|
1254
1327
|
}
|
|
@@ -1256,33 +1329,33 @@ function computed(e, t, n) {
|
|
|
1256
1329
|
}
|
|
1257
1330
|
function signal(e, t, n = null) {
|
|
1258
1331
|
const i = {
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1332
|
+
Ne: t?.equals != null ? t.equals : isEqual,
|
|
1333
|
+
fe: !!t?.pureWrite,
|
|
1334
|
+
We: !!t?.We,
|
|
1335
|
+
xe: t?.unobserved,
|
|
1336
|
+
J: e,
|
|
1264
1337
|
I: null,
|
|
1265
|
-
|
|
1266
|
-
|
|
1338
|
+
ke: null,
|
|
1339
|
+
Ee: clock,
|
|
1267
1340
|
V: n,
|
|
1268
1341
|
N: n?.A || null,
|
|
1269
|
-
|
|
1342
|
+
X: NOT_PENDING
|
|
1270
1343
|
};
|
|
1271
1344
|
n && (n.A = i);
|
|
1272
|
-
if (snapshotCaptureActive && !i.
|
|
1273
|
-
i.
|
|
1345
|
+
if (snapshotCaptureActive && !i.We && !((n?.Se ?? 0) & STATUS_PENDING)) {
|
|
1346
|
+
i.Te = e === undefined ? NO_SNAPSHOT : e;
|
|
1274
1347
|
snapshotSources.add(i);
|
|
1275
1348
|
}
|
|
1276
1349
|
return i;
|
|
1277
1350
|
}
|
|
1278
1351
|
function optimisticSignal(e, t) {
|
|
1279
1352
|
const n = signal(e, t);
|
|
1280
|
-
n.
|
|
1353
|
+
n.ee = NOT_PENDING;
|
|
1281
1354
|
return n;
|
|
1282
1355
|
}
|
|
1283
1356
|
function optimisticComputed(e, t, n) {
|
|
1284
1357
|
const i = computed(e, t, n);
|
|
1285
|
-
i.
|
|
1358
|
+
i.ee = NOT_PENDING;
|
|
1286
1359
|
return i;
|
|
1287
1360
|
}
|
|
1288
1361
|
function isEqual(e, t) {
|
|
@@ -1304,7 +1377,7 @@ function read(e) {
|
|
|
1304
1377
|
const t = getLatestValueComputed(e);
|
|
1305
1378
|
const n = latestReadActive;
|
|
1306
1379
|
latestReadActive = false;
|
|
1307
|
-
const i = e.
|
|
1380
|
+
const i = e.ee !== undefined && e.ee !== NOT_PENDING ? e.ee : e.J;
|
|
1308
1381
|
let r;
|
|
1309
1382
|
try {
|
|
1310
1383
|
r = read(t);
|
|
@@ -1314,26 +1387,24 @@ function read(e) {
|
|
|
1314
1387
|
} finally {
|
|
1315
1388
|
latestReadActive = n;
|
|
1316
1389
|
}
|
|
1317
|
-
if (t.
|
|
1318
|
-
if (stale && currentOptimisticLane && t.
|
|
1319
|
-
const e = findLane(t.
|
|
1390
|
+
if (t.Se & STATUS_PENDING) return i;
|
|
1391
|
+
if (stale && currentOptimisticLane && t.q) {
|
|
1392
|
+
const e = findLane(t.q);
|
|
1320
1393
|
const n = findLane(currentOptimisticLane);
|
|
1321
|
-
if (e !== n && e.
|
|
1394
|
+
if (e !== n && e.k.size > 0) {
|
|
1322
1395
|
return i;
|
|
1323
1396
|
}
|
|
1324
1397
|
}
|
|
1325
1398
|
return r;
|
|
1326
1399
|
}
|
|
1327
1400
|
if (pendingCheckActive) {
|
|
1328
|
-
const t = e.V
|
|
1329
|
-
const n =
|
|
1330
|
-
const i = pendingCheckActive;
|
|
1401
|
+
const t = e.V;
|
|
1402
|
+
const n = pendingCheckActive;
|
|
1331
1403
|
pendingCheckActive = false;
|
|
1332
|
-
if (read(
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
return e.fe;
|
|
1404
|
+
if (read(getPendingSignal(e))) foundPending = true;
|
|
1405
|
+
if (t && read(getPendingSignal(t))) foundPending = true;
|
|
1406
|
+
pendingCheckActive = n;
|
|
1407
|
+
return e.J;
|
|
1337
1408
|
}
|
|
1338
1409
|
let t = context;
|
|
1339
1410
|
if (t?.t) t = t.u;
|
|
@@ -1359,56 +1430,57 @@ function read(e) {
|
|
|
1359
1430
|
}
|
|
1360
1431
|
}
|
|
1361
1432
|
}
|
|
1362
|
-
if (n.
|
|
1363
|
-
|
|
1364
|
-
if (i && !(i.Ee & STATUS_PENDING)) clearStatus(n);
|
|
1365
|
-
else if (t && !(stale && n.ne && activeTransition !== n.ne)) {
|
|
1433
|
+
if (n.Se & STATUS_PENDING) {
|
|
1434
|
+
if (t && !(stale && n.K && activeTransition !== n.K)) {
|
|
1366
1435
|
if (currentOptimisticLane) {
|
|
1367
|
-
const i = n.
|
|
1436
|
+
const i = n.q;
|
|
1368
1437
|
const r = findLane(currentOptimisticLane);
|
|
1369
1438
|
if (i && findLane(i) === r && !hasActiveOverride(n)) {
|
|
1370
1439
|
if (!tracking && e !== t) link(e, t);
|
|
1371
|
-
throw n.
|
|
1440
|
+
throw n.le;
|
|
1372
1441
|
}
|
|
1373
1442
|
} else {
|
|
1374
1443
|
if (!tracking && e !== t) link(e, t);
|
|
1375
|
-
throw n.
|
|
1444
|
+
throw n.le;
|
|
1376
1445
|
}
|
|
1377
|
-
} else if (!t && n.
|
|
1378
|
-
throw n.
|
|
1446
|
+
} else if (!t && n.Se & STATUS_UNINITIALIZED) {
|
|
1447
|
+
throw n.le;
|
|
1379
1448
|
}
|
|
1380
1449
|
}
|
|
1381
|
-
if (e.L && e.
|
|
1382
|
-
if (e.
|
|
1450
|
+
if (e.L && e.Se & STATUS_ERROR) {
|
|
1451
|
+
if (e.Ee < clock) {
|
|
1383
1452
|
recompute(e, true);
|
|
1384
1453
|
return read(e);
|
|
1385
|
-
} else throw e.
|
|
1454
|
+
} else throw e.le;
|
|
1386
1455
|
}
|
|
1387
|
-
if (snapshotCaptureActive && t && t.
|
|
1388
|
-
const n = e.
|
|
1456
|
+
if (snapshotCaptureActive && t && t.de) {
|
|
1457
|
+
const n = e.Te;
|
|
1389
1458
|
if (n !== undefined) {
|
|
1390
1459
|
const i = n === NO_SNAPSHOT ? undefined : n;
|
|
1391
|
-
const r = e.
|
|
1460
|
+
const r = e.X !== NOT_PENDING ? e.X : e.J;
|
|
1392
1461
|
if (r !== i) t.O |= REACTIVE_SNAPSHOT_STALE;
|
|
1393
1462
|
return i;
|
|
1394
1463
|
}
|
|
1395
1464
|
}
|
|
1396
|
-
if (e.
|
|
1465
|
+
if (e.ee !== undefined && e.ee !== NOT_PENDING) {
|
|
1466
|
+
if (t && stale && shouldReadStashedOptimisticValue(e)) return e.J;
|
|
1467
|
+
return e.ee;
|
|
1468
|
+
}
|
|
1397
1469
|
return !t ||
|
|
1398
1470
|
(currentOptimisticLane !== null &&
|
|
1399
|
-
(e.
|
|
1400
|
-
e.
|
|
1401
|
-
(stale && e.
|
|
1402
|
-
? e.
|
|
1403
|
-
: e.
|
|
1471
|
+
(e.ee !== undefined || e.q || (n === e && stale) || !!(n.Se & STATUS_PENDING))) ||
|
|
1472
|
+
e.X === NOT_PENDING ||
|
|
1473
|
+
(stale && e.K && activeTransition !== e.K)
|
|
1474
|
+
? e.J
|
|
1475
|
+
: e.X;
|
|
1404
1476
|
}
|
|
1405
1477
|
function setSignal(e, t) {
|
|
1406
|
-
if (e.
|
|
1407
|
-
const n = e.
|
|
1408
|
-
const i = e.
|
|
1409
|
-
const r = n ? (i ? e.
|
|
1478
|
+
if (e.K && activeTransition !== e.K) globalQueue.initTransition(e.K);
|
|
1479
|
+
const n = e.ee !== undefined && !projectionWriteActive;
|
|
1480
|
+
const i = e.ee !== undefined && e.ee !== NOT_PENDING;
|
|
1481
|
+
const r = n ? (i ? e.ee : e.J) : e.X === NOT_PENDING ? e.J : e.X;
|
|
1410
1482
|
if (typeof t === "function") t = t(r);
|
|
1411
|
-
const o = !e.
|
|
1483
|
+
const o = !e.Ne || !e.Ne(r, t) || !!(e.Se & STATUS_UNINITIALIZED);
|
|
1412
1484
|
if (!o) {
|
|
1413
1485
|
if (n && i && e.L) {
|
|
1414
1486
|
insertSubs(e, true);
|
|
@@ -1417,25 +1489,25 @@ function setSignal(e, t) {
|
|
|
1417
1489
|
return t;
|
|
1418
1490
|
}
|
|
1419
1491
|
if (n) {
|
|
1420
|
-
const n = e.
|
|
1421
|
-
if (!n
|
|
1492
|
+
const n = e.ee === NOT_PENDING;
|
|
1493
|
+
if (!n) globalQueue.initTransition(resolveTransition(e));
|
|
1422
1494
|
if (n) {
|
|
1423
|
-
e.
|
|
1424
|
-
globalQueue
|
|
1495
|
+
e.X = e.J;
|
|
1496
|
+
globalQueue.Y.push(e);
|
|
1425
1497
|
}
|
|
1426
|
-
e.
|
|
1498
|
+
e._e = true;
|
|
1427
1499
|
const i = getOrCreateLane(e);
|
|
1428
|
-
e.
|
|
1429
|
-
e.
|
|
1500
|
+
e.q = i;
|
|
1501
|
+
e.ee = t;
|
|
1430
1502
|
} else {
|
|
1431
|
-
if (e.
|
|
1432
|
-
e.
|
|
1503
|
+
if (e.X === NOT_PENDING) globalQueue.oe.push(e);
|
|
1504
|
+
e.X = t;
|
|
1433
1505
|
}
|
|
1434
1506
|
updatePendingSignal(e);
|
|
1435
|
-
if (e.
|
|
1436
|
-
setSignal(e.
|
|
1507
|
+
if (e.Pe) {
|
|
1508
|
+
setSignal(e.Pe, t);
|
|
1437
1509
|
}
|
|
1438
|
-
e.
|
|
1510
|
+
e.Ee = clock;
|
|
1439
1511
|
insertSubs(e, n);
|
|
1440
1512
|
schedule();
|
|
1441
1513
|
return t;
|
|
@@ -1453,61 +1525,65 @@ function runWithOwner(e, t) {
|
|
|
1453
1525
|
}
|
|
1454
1526
|
}
|
|
1455
1527
|
function getPendingSignal(e) {
|
|
1456
|
-
if (!e.
|
|
1457
|
-
e.
|
|
1458
|
-
if (e.
|
|
1459
|
-
e.
|
|
1528
|
+
if (!e.Qe) {
|
|
1529
|
+
e.Qe = optimisticSignal(false, { pureWrite: true });
|
|
1530
|
+
if (e.Re) {
|
|
1531
|
+
e.Qe.Re = e;
|
|
1460
1532
|
}
|
|
1461
|
-
if (computePendingState(e)) setSignal(e.
|
|
1533
|
+
if (computePendingState(e)) setSignal(e.Qe, true);
|
|
1462
1534
|
}
|
|
1463
|
-
return e.
|
|
1535
|
+
return e.Qe;
|
|
1464
1536
|
}
|
|
1465
1537
|
function computePendingState(e) {
|
|
1466
1538
|
const t = e;
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1539
|
+
const n = e.V;
|
|
1540
|
+
if (n && e.X !== NOT_PENDING) {
|
|
1541
|
+
return !n.Ae && !(n.Se & STATUS_PENDING);
|
|
1542
|
+
}
|
|
1543
|
+
if (e.ee !== undefined && e.ee !== NOT_PENDING) {
|
|
1544
|
+
if (t.Se & STATUS_PENDING && !(t.Se & STATUS_UNINITIALIZED)) return true;
|
|
1545
|
+
if (e.Re) {
|
|
1546
|
+
const t = e.q ? findLane(e.q) : null;
|
|
1547
|
+
return !!(t && t.k.size > 0);
|
|
1472
1548
|
}
|
|
1473
1549
|
return true;
|
|
1474
1550
|
}
|
|
1475
|
-
if (e.
|
|
1476
|
-
return !!(t.
|
|
1551
|
+
if (e.X !== NOT_PENDING && !(t.Se & STATUS_UNINITIALIZED)) return true;
|
|
1552
|
+
return !!(t.Se & STATUS_PENDING && !(t.Se & STATUS_UNINITIALIZED));
|
|
1477
1553
|
}
|
|
1478
1554
|
function updatePendingSignal(e) {
|
|
1479
|
-
if (e.
|
|
1555
|
+
if (e.Qe) {
|
|
1480
1556
|
const t = computePendingState(e);
|
|
1481
|
-
const n = e.
|
|
1557
|
+
const n = e.Qe;
|
|
1482
1558
|
setSignal(n, t);
|
|
1483
|
-
if (!t && n.
|
|
1559
|
+
if (!t && n.q) {
|
|
1484
1560
|
const t = resolveLane(e);
|
|
1485
|
-
if (t && t.
|
|
1486
|
-
const e = findLane(n.
|
|
1561
|
+
if (t && t.k.size > 0) {
|
|
1562
|
+
const e = findLane(n.q);
|
|
1487
1563
|
if (e !== t) {
|
|
1488
1564
|
mergeLanes(t, e);
|
|
1489
1565
|
}
|
|
1490
1566
|
}
|
|
1491
1567
|
signalLanes.delete(n);
|
|
1492
|
-
n.
|
|
1568
|
+
n.q = undefined;
|
|
1493
1569
|
}
|
|
1494
1570
|
}
|
|
1495
1571
|
}
|
|
1496
1572
|
function getLatestValueComputed(e) {
|
|
1497
|
-
if (!e.
|
|
1573
|
+
if (!e.Pe) {
|
|
1498
1574
|
const t = latestReadActive;
|
|
1499
1575
|
latestReadActive = false;
|
|
1500
1576
|
const n = pendingCheckActive;
|
|
1501
1577
|
pendingCheckActive = false;
|
|
1502
1578
|
const i = context;
|
|
1503
1579
|
context = null;
|
|
1504
|
-
e.
|
|
1505
|
-
e.
|
|
1580
|
+
e.Pe = optimisticComputed(() => read(e));
|
|
1581
|
+
e.Pe.Re = e;
|
|
1506
1582
|
context = i;
|
|
1507
1583
|
pendingCheckActive = n;
|
|
1508
1584
|
latestReadActive = t;
|
|
1509
1585
|
}
|
|
1510
|
-
return e.
|
|
1586
|
+
return e.Pe;
|
|
1511
1587
|
}
|
|
1512
1588
|
function staleValues(e, t = true) {
|
|
1513
1589
|
const n = stale;
|
|
@@ -1586,6 +1662,96 @@ function hasContext(e, t) {
|
|
|
1586
1662
|
function isUndefined(e) {
|
|
1587
1663
|
return typeof e === "undefined";
|
|
1588
1664
|
}
|
|
1665
|
+
function effect(e, t, n, i, r) {
|
|
1666
|
+
let o = false;
|
|
1667
|
+
const s = computed(r?.render ? t => staleValues(() => e(t)) : e, i, {
|
|
1668
|
+
...r,
|
|
1669
|
+
equals: () => {
|
|
1670
|
+
s.W = !s.le;
|
|
1671
|
+
if (o) s.F.enqueue(s.H, runEffect.bind(s));
|
|
1672
|
+
return false;
|
|
1673
|
+
},
|
|
1674
|
+
lazy: true
|
|
1675
|
+
});
|
|
1676
|
+
s.Fe = i;
|
|
1677
|
+
s.Me = t;
|
|
1678
|
+
s.$e = n;
|
|
1679
|
+
s.je = undefined;
|
|
1680
|
+
s.H = r?.render ? EFFECT_RENDER : EFFECT_USER;
|
|
1681
|
+
s.ge = (e, t) => {
|
|
1682
|
+
const n = e !== undefined ? e : s.Se;
|
|
1683
|
+
const i = t !== undefined ? t : s.le;
|
|
1684
|
+
if (n & STATUS_ERROR) {
|
|
1685
|
+
let e = i;
|
|
1686
|
+
s.F.notify(s, STATUS_PENDING, 0);
|
|
1687
|
+
if (s.H === EFFECT_USER) {
|
|
1688
|
+
try {
|
|
1689
|
+
return s.$e
|
|
1690
|
+
? s.$e(e, () => {
|
|
1691
|
+
s.je?.();
|
|
1692
|
+
s.je = undefined;
|
|
1693
|
+
})
|
|
1694
|
+
: console.error(e);
|
|
1695
|
+
} catch (t) {
|
|
1696
|
+
e = t;
|
|
1697
|
+
}
|
|
1698
|
+
}
|
|
1699
|
+
if (!s.F.notify(s, STATUS_ERROR, STATUS_ERROR)) throw e;
|
|
1700
|
+
} else if (s.H === EFFECT_RENDER) {
|
|
1701
|
+
s.F.notify(s, STATUS_PENDING | STATUS_ERROR, n, i);
|
|
1702
|
+
}
|
|
1703
|
+
};
|
|
1704
|
+
recompute(s, true);
|
|
1705
|
+
!r?.defer && (s.H === EFFECT_USER ? s.F.enqueue(s.H, runEffect.bind(s)) : runEffect.call(s));
|
|
1706
|
+
o = true;
|
|
1707
|
+
onCleanup(() => s.je?.());
|
|
1708
|
+
}
|
|
1709
|
+
function runEffect() {
|
|
1710
|
+
if (!this.W || this.O & REACTIVE_DISPOSED) return;
|
|
1711
|
+
this.je?.();
|
|
1712
|
+
this.je = undefined;
|
|
1713
|
+
try {
|
|
1714
|
+
this.je = this.Me(this.J, this.Fe);
|
|
1715
|
+
} catch (e) {
|
|
1716
|
+
this.le = new StatusError(this, e);
|
|
1717
|
+
this.Se |= STATUS_ERROR;
|
|
1718
|
+
if (!this.F.notify(this, STATUS_ERROR, STATUS_ERROR)) throw e;
|
|
1719
|
+
} finally {
|
|
1720
|
+
this.Fe = this.J;
|
|
1721
|
+
this.W = false;
|
|
1722
|
+
}
|
|
1723
|
+
}
|
|
1724
|
+
function trackedEffect(e, t) {
|
|
1725
|
+
const run = () => {
|
|
1726
|
+
if (!n.W || n.O & REACTIVE_DISPOSED) return;
|
|
1727
|
+
n.W = false;
|
|
1728
|
+
recompute(n);
|
|
1729
|
+
};
|
|
1730
|
+
const n = computed(
|
|
1731
|
+
() => {
|
|
1732
|
+
n.je?.();
|
|
1733
|
+
n.je = undefined;
|
|
1734
|
+
n.je = staleValues(e) || undefined;
|
|
1735
|
+
},
|
|
1736
|
+
undefined,
|
|
1737
|
+
{ ...t, lazy: true }
|
|
1738
|
+
);
|
|
1739
|
+
n.je = undefined;
|
|
1740
|
+
n.Ke = true;
|
|
1741
|
+
n.W = true;
|
|
1742
|
+
n.H = EFFECT_TRACKED;
|
|
1743
|
+
n.ge = (e, t) => {
|
|
1744
|
+
const i = e !== undefined ? e : n.Se;
|
|
1745
|
+
if (i & STATUS_ERROR) {
|
|
1746
|
+
n.F.notify(n, STATUS_PENDING, 0);
|
|
1747
|
+
const e = t !== undefined ? t : n.le;
|
|
1748
|
+
if (!n.F.notify(n, STATUS_ERROR, STATUS_ERROR)) throw e;
|
|
1749
|
+
}
|
|
1750
|
+
};
|
|
1751
|
+
n.M = run;
|
|
1752
|
+
n.F.enqueue(EFFECT_USER, run);
|
|
1753
|
+
onCleanup(() => n.je?.());
|
|
1754
|
+
}
|
|
1589
1755
|
function restoreTransition(e, t) {
|
|
1590
1756
|
globalQueue.initTransition(e);
|
|
1591
1757
|
const n = t();
|
|
@@ -1598,11 +1764,11 @@ function action(e) {
|
|
|
1598
1764
|
const r = e(...t);
|
|
1599
1765
|
globalQueue.initTransition();
|
|
1600
1766
|
let o = activeTransition;
|
|
1601
|
-
o.
|
|
1767
|
+
o.j.push(r);
|
|
1602
1768
|
const done = (e, t) => {
|
|
1603
1769
|
o = currentTransition(o);
|
|
1604
|
-
const s = o.
|
|
1605
|
-
if (s >= 0) o.
|
|
1770
|
+
const s = o.j.indexOf(r);
|
|
1771
|
+
if (s >= 0) o.j.splice(s, 1);
|
|
1606
1772
|
setActiveTransition(o);
|
|
1607
1773
|
schedule();
|
|
1608
1774
|
t ? i(t) : n(e);
|
|
@@ -1696,7 +1862,8 @@ function createOptimistic(e, t, n) {
|
|
|
1696
1862
|
return [accessor(i), setSignal.bind(null, i)];
|
|
1697
1863
|
}
|
|
1698
1864
|
function onSettled(e) {
|
|
1699
|
-
getOwner()
|
|
1865
|
+
const t = getOwner();
|
|
1866
|
+
t && !t.Ke
|
|
1700
1867
|
? createTrackedEffect(() => untrack(e))
|
|
1701
1868
|
: globalQueue.enqueue(EFFECT_USER, () => {
|
|
1702
1869
|
const t = e();
|
|
@@ -1730,67 +1897,67 @@ function applyState(e, t, n) {
|
|
|
1730
1897
|
let t = false;
|
|
1731
1898
|
const c = getOverrideValue(r, o, u, "length", s);
|
|
1732
1899
|
if (e.length && c && e[0] && n(e[0]) != null) {
|
|
1733
|
-
let a,
|
|
1900
|
+
let a, f, l, E, T, d, S, R;
|
|
1734
1901
|
for (
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
((d = getOverrideValue(r, o, u,
|
|
1738
|
-
|
|
1902
|
+
l = 0, E = Math.min(c, e.length);
|
|
1903
|
+
l < E &&
|
|
1904
|
+
((d = getOverrideValue(r, o, u, l, s)) === e[l] || (d && e[l] && n(d) === n(e[l])));
|
|
1905
|
+
l++
|
|
1739
1906
|
) {
|
|
1740
|
-
applyState(e[
|
|
1907
|
+
applyState(e[l], wrap(d, i), n);
|
|
1741
1908
|
}
|
|
1742
1909
|
const O = new Array(e.length),
|
|
1743
1910
|
_ = new Map();
|
|
1744
1911
|
for (
|
|
1745
1912
|
E = c - 1, T = e.length - 1;
|
|
1746
|
-
E >=
|
|
1747
|
-
T >=
|
|
1913
|
+
E >= l &&
|
|
1914
|
+
T >= l &&
|
|
1748
1915
|
((d = getOverrideValue(r, o, u, E, s)) === e[T] || (d && e[T] && n(d) === n(e[T])));
|
|
1749
1916
|
E--, T--
|
|
1750
1917
|
) {
|
|
1751
1918
|
O[T] = d;
|
|
1752
1919
|
}
|
|
1753
|
-
if (
|
|
1754
|
-
for (
|
|
1920
|
+
if (l > T || l > E) {
|
|
1921
|
+
for (f = l; f <= T; f++) {
|
|
1755
1922
|
t = true;
|
|
1756
|
-
i[STORE_NODE][
|
|
1923
|
+
i[STORE_NODE][f] && setSignal(i[STORE_NODE][f], wrap(e[f], i));
|
|
1757
1924
|
}
|
|
1758
|
-
for (;
|
|
1925
|
+
for (; f < e.length; f++) {
|
|
1759
1926
|
t = true;
|
|
1760
|
-
const r = wrap(O[
|
|
1761
|
-
i[STORE_NODE][
|
|
1762
|
-
applyState(e[
|
|
1927
|
+
const r = wrap(O[f], i);
|
|
1928
|
+
i[STORE_NODE][f] && setSignal(i[STORE_NODE][f], r);
|
|
1929
|
+
applyState(e[f], r, n);
|
|
1763
1930
|
}
|
|
1764
1931
|
t && i[STORE_NODE][$TRACK] && setSignal(i[STORE_NODE][$TRACK], void 0);
|
|
1765
1932
|
c !== e.length && i[STORE_NODE].length && setSignal(i[STORE_NODE].length, e.length);
|
|
1766
1933
|
return;
|
|
1767
1934
|
}
|
|
1768
1935
|
S = new Array(T + 1);
|
|
1769
|
-
for (
|
|
1770
|
-
d = e[
|
|
1936
|
+
for (f = T; f >= l; f--) {
|
|
1937
|
+
d = e[f];
|
|
1771
1938
|
R = d ? n(d) : d;
|
|
1772
1939
|
a = _.get(R);
|
|
1773
|
-
S[
|
|
1774
|
-
_.set(R,
|
|
1940
|
+
S[f] = a === undefined ? -1 : a;
|
|
1941
|
+
_.set(R, f);
|
|
1775
1942
|
}
|
|
1776
|
-
for (a =
|
|
1943
|
+
for (a = l; a <= E; a++) {
|
|
1777
1944
|
d = getOverrideValue(r, o, u, a, s);
|
|
1778
1945
|
R = d ? n(d) : d;
|
|
1779
|
-
|
|
1780
|
-
if (
|
|
1781
|
-
O[
|
|
1782
|
-
|
|
1783
|
-
_.set(R,
|
|
1946
|
+
f = _.get(R);
|
|
1947
|
+
if (f !== undefined && f !== -1) {
|
|
1948
|
+
O[f] = d;
|
|
1949
|
+
f = S[f];
|
|
1950
|
+
_.set(R, f);
|
|
1784
1951
|
}
|
|
1785
1952
|
}
|
|
1786
|
-
for (
|
|
1787
|
-
if (
|
|
1788
|
-
const t = wrap(O[
|
|
1789
|
-
i[STORE_NODE][
|
|
1790
|
-
applyState(e[
|
|
1791
|
-
} else i[STORE_NODE][
|
|
1953
|
+
for (f = l; f < e.length; f++) {
|
|
1954
|
+
if (f in O) {
|
|
1955
|
+
const t = wrap(O[f], i);
|
|
1956
|
+
i[STORE_NODE][f] && setSignal(i[STORE_NODE][f], t);
|
|
1957
|
+
applyState(e[f], t, n);
|
|
1958
|
+
} else i[STORE_NODE][f] && setSignal(i[STORE_NODE][f], wrap(e[f], i));
|
|
1792
1959
|
}
|
|
1793
|
-
if (
|
|
1960
|
+
if (l < e.length) t = true;
|
|
1794
1961
|
} else if (e.length) {
|
|
1795
1962
|
for (let t = 0, c = e.length; t < c; t++) {
|
|
1796
1963
|
const c = getOverrideValue(r, o, u, t, s);
|
|
@@ -1809,15 +1976,15 @@ function applyState(e, t, n) {
|
|
|
1809
1976
|
if (u) {
|
|
1810
1977
|
const t = u[$TRACK];
|
|
1811
1978
|
const c = t ? getAllKeys(r, o, e) : Object.keys(u);
|
|
1812
|
-
for (let a = 0,
|
|
1813
|
-
const
|
|
1814
|
-
const
|
|
1815
|
-
const E = unwrap(getOverrideValue(r, o, u,
|
|
1816
|
-
let T = unwrap(e[
|
|
1979
|
+
for (let a = 0, f = c.length; a < f; a++) {
|
|
1980
|
+
const f = c[a];
|
|
1981
|
+
const l = u[f];
|
|
1982
|
+
const E = unwrap(getOverrideValue(r, o, u, f, s));
|
|
1983
|
+
let T = unwrap(e[f]);
|
|
1817
1984
|
if (E === T) continue;
|
|
1818
1985
|
if (!E || !isWrappable(E) || !isWrappable(T) || (n(E) != null && n(E) !== n(T))) {
|
|
1819
1986
|
t && setSignal(t, void 0);
|
|
1820
|
-
|
|
1987
|
+
l && setSignal(l, isWrappable(T) ? wrap(T, i) : T);
|
|
1821
1988
|
} else applyState(T, wrap(E, i), n);
|
|
1822
1989
|
}
|
|
1823
1990
|
}
|
|
@@ -1869,7 +2036,7 @@ function createProjectionInternal(e, t = {}, n) {
|
|
|
1869
2036
|
r !== i && r !== undefined && reconcile(r, n?.key || "id")(o);
|
|
1870
2037
|
});
|
|
1871
2038
|
});
|
|
1872
|
-
i.
|
|
2039
|
+
i.Ge = true;
|
|
1873
2040
|
return { store: o, node: i };
|
|
1874
2041
|
}
|
|
1875
2042
|
function createProjection(e, t = {}, n) {
|
|
@@ -1968,11 +2135,11 @@ function getNode(e, t, n, i, r = isEqual, o, s) {
|
|
|
1968
2135
|
i
|
|
1969
2136
|
);
|
|
1970
2137
|
if (o) {
|
|
1971
|
-
u.
|
|
2138
|
+
u.ee = NOT_PENDING;
|
|
1972
2139
|
}
|
|
1973
2140
|
if (s && t in s) {
|
|
1974
2141
|
const e = s[t];
|
|
1975
|
-
u.
|
|
2142
|
+
u.Te = e === undefined ? NO_SNAPSHOT : e;
|
|
1976
2143
|
snapshotSources?.add(u);
|
|
1977
2144
|
}
|
|
1978
2145
|
return (e[t] = u);
|
|
@@ -2029,11 +2196,11 @@ const storeTraps = {
|
|
|
2029
2196
|
if (writeOnly(n)) {
|
|
2030
2197
|
let n =
|
|
2031
2198
|
r && (s || !u)
|
|
2032
|
-
? r.
|
|
2033
|
-
? r.
|
|
2034
|
-
: r.
|
|
2035
|
-
? r.
|
|
2036
|
-
: r.
|
|
2199
|
+
? r.ee !== undefined && r.ee !== NOT_PENDING
|
|
2200
|
+
? r.ee
|
|
2201
|
+
: r.X !== NOT_PENDING
|
|
2202
|
+
? r.X
|
|
2203
|
+
: r.J
|
|
2037
2204
|
: c[t];
|
|
2038
2205
|
n === $DELETED && (n = undefined);
|
|
2039
2206
|
if (!isWrappable(n)) return n;
|
|
@@ -2084,8 +2251,8 @@ const storeTraps = {
|
|
|
2084
2251
|
if (writeOnly(i)) {
|
|
2085
2252
|
if (e[STORE_OPTIMISTIC]) {
|
|
2086
2253
|
const t = e[STORE_FIREWALL];
|
|
2087
|
-
if (t?.
|
|
2088
|
-
globalQueue.initTransition(t.
|
|
2254
|
+
if (t?.K) {
|
|
2255
|
+
globalQueue.initTransition(t.K);
|
|
2089
2256
|
}
|
|
2090
2257
|
}
|
|
2091
2258
|
untrack(() => {
|
|
@@ -2094,7 +2261,7 @@ const storeTraps = {
|
|
|
2094
2261
|
if (
|
|
2095
2262
|
snapshotCaptureActive &&
|
|
2096
2263
|
typeof t !== "symbol" &&
|
|
2097
|
-
!((e[STORE_FIREWALL]?.
|
|
2264
|
+
!((e[STORE_FIREWALL]?.Se ?? 0) & STATUS_PENDING)
|
|
2098
2265
|
) {
|
|
2099
2266
|
if (!e[STORE_SNAPSHOT_PROPS]) {
|
|
2100
2267
|
e[STORE_SNAPSHOT_PROPS] = Object.create(null);
|
|
@@ -2115,19 +2282,19 @@ const storeTraps = {
|
|
|
2115
2282
|
: o;
|
|
2116
2283
|
const a = n?.[$TARGET]?.[STORE_VALUE] ?? n;
|
|
2117
2284
|
if (c === a) return true;
|
|
2118
|
-
const
|
|
2285
|
+
const f = e[STORE_OPTIMISTIC_OVERRIDE]?.length || e[STORE_OVERRIDE]?.length || r.length;
|
|
2119
2286
|
if (a !== undefined && a === o) delete e[u][t];
|
|
2120
2287
|
else (e[u] || (e[u] = Object.create(null)))[t] = a;
|
|
2121
|
-
const
|
|
2288
|
+
const l = isWrappable(a);
|
|
2122
2289
|
e[STORE_HAS]?.[t] && setSignal(e[STORE_HAS][t], true);
|
|
2123
2290
|
const E = getNodes(e, STORE_NODE);
|
|
2124
|
-
E[t] && setSignal(E[t], () => (
|
|
2291
|
+
E[t] && setSignal(E[t], () => (l ? wrap(a, e) : a));
|
|
2125
2292
|
if (Array.isArray(r)) {
|
|
2126
2293
|
if (t === "length") {
|
|
2127
2294
|
E.length && setSignal(E.length, a);
|
|
2128
2295
|
} else {
|
|
2129
2296
|
const e = parseInt(t) + 1;
|
|
2130
|
-
if (e >
|
|
2297
|
+
if (e > f) E.length && setSignal(E.length, e);
|
|
2131
2298
|
}
|
|
2132
2299
|
}
|
|
2133
2300
|
E[$TRACK] && setSignal(E[$TRACK], undefined);
|
|
@@ -2225,7 +2392,7 @@ function createStore(e, t, n) {
|
|
|
2225
2392
|
return [r, e => storeSetter(r, e)];
|
|
2226
2393
|
}
|
|
2227
2394
|
function createOptimisticStore(e, t, n) {
|
|
2228
|
-
GlobalQueue.
|
|
2395
|
+
GlobalQueue.ce ||= clearOptimisticStore;
|
|
2229
2396
|
const i = typeof e === "function";
|
|
2230
2397
|
const r = (i ? t : e) ?? {};
|
|
2231
2398
|
const o = i ? e : undefined;
|
|
@@ -2242,7 +2409,7 @@ function clearOptimisticStore(e) {
|
|
|
2242
2409
|
if (i) {
|
|
2243
2410
|
for (const e of Reflect.ownKeys(n)) {
|
|
2244
2411
|
if (i[e]) {
|
|
2245
|
-
i[e].
|
|
2412
|
+
i[e].q = undefined;
|
|
2246
2413
|
const n =
|
|
2247
2414
|
t[STORE_OVERRIDE] && e in t[STORE_OVERRIDE] ? t[STORE_OVERRIDE][e] : t[STORE_VALUE][e];
|
|
2248
2415
|
const r = n === $DELETED ? undefined : n;
|
|
@@ -2250,7 +2417,7 @@ function clearOptimisticStore(e) {
|
|
|
2250
2417
|
}
|
|
2251
2418
|
}
|
|
2252
2419
|
if (i[$TRACK]) {
|
|
2253
|
-
i[$TRACK].
|
|
2420
|
+
i[$TRACK].q = undefined;
|
|
2254
2421
|
setSignal(i[$TRACK], undefined);
|
|
2255
2422
|
}
|
|
2256
2423
|
}
|
|
@@ -2301,7 +2468,7 @@ function createOptimisticProjectionInternal(e, t = {}, n) {
|
|
|
2301
2468
|
setProjectionWriteActive(false);
|
|
2302
2469
|
}
|
|
2303
2470
|
});
|
|
2304
|
-
i.
|
|
2471
|
+
i.Ge = true;
|
|
2305
2472
|
}
|
|
2306
2473
|
return { store: o, node: i };
|
|
2307
2474
|
}
|
|
@@ -2388,29 +2555,29 @@ function snapshotImpl(e, t, n, i) {
|
|
|
2388
2555
|
}
|
|
2389
2556
|
if (o) {
|
|
2390
2557
|
const o = s?.length || e.length;
|
|
2391
|
-
for (let
|
|
2392
|
-
a = s &&
|
|
2558
|
+
for (let f = 0; f < o; f++) {
|
|
2559
|
+
a = s && f in s ? s[f] : e[f];
|
|
2393
2560
|
if (a === $DELETED) continue;
|
|
2394
2561
|
if (t && isWrappable(a)) wrap(a, r);
|
|
2395
2562
|
if ((c = snapshotImpl(a, t, n, i)) !== a || u) {
|
|
2396
2563
|
if (!u) n.set(e, (u = [...e]));
|
|
2397
|
-
u[
|
|
2564
|
+
u[f] = c;
|
|
2398
2565
|
}
|
|
2399
2566
|
}
|
|
2400
2567
|
} else {
|
|
2401
2568
|
const o = getKeys(e, s);
|
|
2402
|
-
for (let
|
|
2403
|
-
let
|
|
2404
|
-
const E = getPropertyDescriptor(e, s,
|
|
2569
|
+
for (let f = 0, l = o.length; f < l; f++) {
|
|
2570
|
+
let l = o[f];
|
|
2571
|
+
const E = getPropertyDescriptor(e, s, l);
|
|
2405
2572
|
if (E.get) continue;
|
|
2406
|
-
a = s &&
|
|
2573
|
+
a = s && l in s ? s[l] : e[l];
|
|
2407
2574
|
if (t && isWrappable(a)) wrap(a, r);
|
|
2408
|
-
if ((c = snapshotImpl(a, t, n, i)) !== e[
|
|
2575
|
+
if ((c = snapshotImpl(a, t, n, i)) !== e[l] || u) {
|
|
2409
2576
|
if (!u) {
|
|
2410
2577
|
u = Object.create(Object.getPrototypeOf(e));
|
|
2411
2578
|
Object.assign(u, e);
|
|
2412
2579
|
}
|
|
2413
|
-
u[
|
|
2580
|
+
u[l] = c;
|
|
2414
2581
|
}
|
|
2415
2582
|
}
|
|
2416
2583
|
}
|
|
@@ -2558,221 +2725,221 @@ function mapArray(e, t, n) {
|
|
|
2558
2725
|
const o = t;
|
|
2559
2726
|
return createMemo(
|
|
2560
2727
|
updateKeyedMap.bind({
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2728
|
+
Ye: createOwner(),
|
|
2729
|
+
Be: 0,
|
|
2730
|
+
Ze: e,
|
|
2731
|
+
qe: [],
|
|
2732
|
+
ze: o,
|
|
2733
|
+
Xe: [],
|
|
2734
|
+
Je: [],
|
|
2735
|
+
et: i,
|
|
2736
|
+
tt: i || n?.keyed === false ? [] : undefined,
|
|
2737
|
+
nt: r ? [] : undefined,
|
|
2738
|
+
it: n?.fallback
|
|
2572
2739
|
})
|
|
2573
2740
|
);
|
|
2574
2741
|
}
|
|
2575
2742
|
const pureOptions = { pureWrite: true };
|
|
2576
2743
|
function updateKeyedMap() {
|
|
2577
|
-
const e = this.
|
|
2744
|
+
const e = this.Ze() || [],
|
|
2578
2745
|
t = e.length;
|
|
2579
2746
|
e[$TRACK];
|
|
2580
|
-
runWithOwner(this.
|
|
2747
|
+
runWithOwner(this.Ye, () => {
|
|
2581
2748
|
let n,
|
|
2582
2749
|
i,
|
|
2583
|
-
r = this.
|
|
2750
|
+
r = this.tt
|
|
2584
2751
|
? () => {
|
|
2585
|
-
this.
|
|
2586
|
-
this.
|
|
2587
|
-
return this.
|
|
2752
|
+
this.tt[i] = signal(e[i], pureOptions);
|
|
2753
|
+
this.nt && (this.nt[i] = signal(i, pureOptions));
|
|
2754
|
+
return this.ze(accessor(this.tt[i]), this.nt ? accessor(this.nt[i]) : undefined);
|
|
2588
2755
|
}
|
|
2589
|
-
: this.
|
|
2756
|
+
: this.nt
|
|
2590
2757
|
? () => {
|
|
2591
2758
|
const t = e[i];
|
|
2592
|
-
this.
|
|
2593
|
-
return this.
|
|
2759
|
+
this.nt[i] = signal(i, pureOptions);
|
|
2760
|
+
return this.ze(() => t, accessor(this.nt[i]));
|
|
2594
2761
|
}
|
|
2595
2762
|
: () => {
|
|
2596
2763
|
const t = e[i];
|
|
2597
|
-
return this.
|
|
2764
|
+
return this.ze(() => t);
|
|
2598
2765
|
};
|
|
2599
2766
|
if (t === 0) {
|
|
2600
|
-
if (this
|
|
2601
|
-
this.
|
|
2602
|
-
this.
|
|
2603
|
-
this.
|
|
2604
|
-
this.
|
|
2605
|
-
this
|
|
2606
|
-
this.
|
|
2607
|
-
this.
|
|
2608
|
-
}
|
|
2609
|
-
if (this.
|
|
2610
|
-
this.
|
|
2611
|
-
}
|
|
2612
|
-
} else if (this
|
|
2613
|
-
if (this.
|
|
2614
|
-
this.
|
|
2767
|
+
if (this.Be !== 0) {
|
|
2768
|
+
this.Ye.dispose(false);
|
|
2769
|
+
this.Je = [];
|
|
2770
|
+
this.qe = [];
|
|
2771
|
+
this.Xe = [];
|
|
2772
|
+
this.Be = 0;
|
|
2773
|
+
this.tt && (this.tt = []);
|
|
2774
|
+
this.nt && (this.nt = []);
|
|
2775
|
+
}
|
|
2776
|
+
if (this.it && !this.Xe[0]) {
|
|
2777
|
+
this.Xe[0] = runWithOwner((this.Je[0] = createOwner()), this.it);
|
|
2778
|
+
}
|
|
2779
|
+
} else if (this.Be === 0) {
|
|
2780
|
+
if (this.Je[0]) this.Je[0].dispose();
|
|
2781
|
+
this.Xe = new Array(t);
|
|
2615
2782
|
for (i = 0; i < t; i++) {
|
|
2616
|
-
this.
|
|
2617
|
-
this.
|
|
2783
|
+
this.qe[i] = e[i];
|
|
2784
|
+
this.Xe[i] = runWithOwner((this.Je[i] = createOwner()), r);
|
|
2618
2785
|
}
|
|
2619
|
-
this
|
|
2786
|
+
this.Be = t;
|
|
2620
2787
|
} else {
|
|
2621
2788
|
let o,
|
|
2622
2789
|
s,
|
|
2623
2790
|
u,
|
|
2624
2791
|
c,
|
|
2625
2792
|
a,
|
|
2626
|
-
l,
|
|
2627
2793
|
f,
|
|
2794
|
+
l,
|
|
2628
2795
|
E = new Array(t),
|
|
2629
2796
|
T = new Array(t),
|
|
2630
|
-
d = this.
|
|
2631
|
-
S = this.
|
|
2797
|
+
d = this.tt ? new Array(t) : undefined,
|
|
2798
|
+
S = this.nt ? new Array(t) : undefined;
|
|
2632
2799
|
for (
|
|
2633
|
-
o = 0, s = Math.min(this
|
|
2634
|
-
o < s && (this.
|
|
2800
|
+
o = 0, s = Math.min(this.Be, t);
|
|
2801
|
+
o < s && (this.qe[o] === e[o] || (this.tt && compare(this.et, this.qe[o], e[o])));
|
|
2635
2802
|
o++
|
|
2636
2803
|
) {
|
|
2637
|
-
if (this.
|
|
2804
|
+
if (this.tt) setSignal(this.tt[o], e[o]);
|
|
2638
2805
|
}
|
|
2639
2806
|
for (
|
|
2640
|
-
s = this
|
|
2807
|
+
s = this.Be - 1, u = t - 1;
|
|
2641
2808
|
s >= o &&
|
|
2642
2809
|
u >= o &&
|
|
2643
|
-
(this.
|
|
2810
|
+
(this.qe[s] === e[u] || (this.tt && compare(this.et, this.qe[s], e[u])));
|
|
2644
2811
|
s--, u--
|
|
2645
2812
|
) {
|
|
2646
|
-
E[u] = this.
|
|
2647
|
-
T[u] = this.
|
|
2648
|
-
d && (d[u] = this.
|
|
2649
|
-
S && (S[u] = this.
|
|
2813
|
+
E[u] = this.Xe[s];
|
|
2814
|
+
T[u] = this.Je[s];
|
|
2815
|
+
d && (d[u] = this.tt[s]);
|
|
2816
|
+
S && (S[u] = this.nt[s]);
|
|
2650
2817
|
}
|
|
2651
|
-
|
|
2652
|
-
|
|
2818
|
+
f = new Map();
|
|
2819
|
+
l = new Array(u + 1);
|
|
2653
2820
|
for (i = u; i >= o; i--) {
|
|
2654
2821
|
c = e[i];
|
|
2655
|
-
a = this.
|
|
2656
|
-
n =
|
|
2657
|
-
|
|
2658
|
-
|
|
2822
|
+
a = this.et ? this.et(c) : c;
|
|
2823
|
+
n = f.get(a);
|
|
2824
|
+
l[i] = n === undefined ? -1 : n;
|
|
2825
|
+
f.set(a, i);
|
|
2659
2826
|
}
|
|
2660
2827
|
for (n = o; n <= s; n++) {
|
|
2661
|
-
c = this.
|
|
2662
|
-
a = this.
|
|
2663
|
-
i =
|
|
2828
|
+
c = this.qe[n];
|
|
2829
|
+
a = this.et ? this.et(c) : c;
|
|
2830
|
+
i = f.get(a);
|
|
2664
2831
|
if (i !== undefined && i !== -1) {
|
|
2665
|
-
E[i] = this.
|
|
2666
|
-
T[i] = this.
|
|
2667
|
-
d && (d[i] = this.
|
|
2668
|
-
S && (S[i] = this.
|
|
2669
|
-
i =
|
|
2670
|
-
|
|
2671
|
-
} else this.
|
|
2832
|
+
E[i] = this.Xe[n];
|
|
2833
|
+
T[i] = this.Je[n];
|
|
2834
|
+
d && (d[i] = this.tt[n]);
|
|
2835
|
+
S && (S[i] = this.nt[n]);
|
|
2836
|
+
i = l[i];
|
|
2837
|
+
f.set(a, i);
|
|
2838
|
+
} else this.Je[n].dispose();
|
|
2672
2839
|
}
|
|
2673
2840
|
for (i = o; i < t; i++) {
|
|
2674
2841
|
if (i in E) {
|
|
2675
|
-
this.
|
|
2676
|
-
this.
|
|
2842
|
+
this.Xe[i] = E[i];
|
|
2843
|
+
this.Je[i] = T[i];
|
|
2677
2844
|
if (d) {
|
|
2678
|
-
this.
|
|
2679
|
-
setSignal(this.
|
|
2845
|
+
this.tt[i] = d[i];
|
|
2846
|
+
setSignal(this.tt[i], e[i]);
|
|
2680
2847
|
}
|
|
2681
2848
|
if (S) {
|
|
2682
|
-
this.
|
|
2683
|
-
setSignal(this.
|
|
2849
|
+
this.nt[i] = S[i];
|
|
2850
|
+
setSignal(this.nt[i], i);
|
|
2684
2851
|
}
|
|
2685
2852
|
} else {
|
|
2686
|
-
this.
|
|
2853
|
+
this.Xe[i] = runWithOwner((this.Je[i] = createOwner()), r);
|
|
2687
2854
|
}
|
|
2688
2855
|
}
|
|
2689
|
-
this.
|
|
2690
|
-
this.
|
|
2856
|
+
this.Xe = this.Xe.slice(0, (this.Be = t));
|
|
2857
|
+
this.qe = e.slice(0);
|
|
2691
2858
|
}
|
|
2692
2859
|
});
|
|
2693
|
-
return this.
|
|
2860
|
+
return this.Xe;
|
|
2694
2861
|
}
|
|
2695
2862
|
function repeat(e, t, n) {
|
|
2696
2863
|
const i = t;
|
|
2697
2864
|
return updateRepeat.bind({
|
|
2698
|
-
|
|
2699
|
-
|
|
2700
|
-
|
|
2701
|
-
|
|
2702
|
-
|
|
2703
|
-
|
|
2704
|
-
|
|
2705
|
-
|
|
2706
|
-
|
|
2865
|
+
Ye: createOwner(),
|
|
2866
|
+
Be: 0,
|
|
2867
|
+
rt: 0,
|
|
2868
|
+
ot: e,
|
|
2869
|
+
ze: i,
|
|
2870
|
+
Je: [],
|
|
2871
|
+
Xe: [],
|
|
2872
|
+
st: n?.from,
|
|
2873
|
+
it: n?.fallback
|
|
2707
2874
|
});
|
|
2708
2875
|
}
|
|
2709
2876
|
function updateRepeat() {
|
|
2710
|
-
const e = this.
|
|
2711
|
-
const t = this.
|
|
2712
|
-
runWithOwner(this.
|
|
2877
|
+
const e = this.ot();
|
|
2878
|
+
const t = this.st?.() || 0;
|
|
2879
|
+
runWithOwner(this.Ye, () => {
|
|
2713
2880
|
if (e === 0) {
|
|
2714
|
-
if (this
|
|
2715
|
-
this.
|
|
2716
|
-
this.
|
|
2717
|
-
this.
|
|
2718
|
-
this
|
|
2881
|
+
if (this.Be !== 0) {
|
|
2882
|
+
this.Ye.dispose(false);
|
|
2883
|
+
this.Je = [];
|
|
2884
|
+
this.Xe = [];
|
|
2885
|
+
this.Be = 0;
|
|
2719
2886
|
}
|
|
2720
|
-
if (this.
|
|
2721
|
-
this.
|
|
2887
|
+
if (this.it && !this.Xe[0]) {
|
|
2888
|
+
this.Xe[0] = runWithOwner((this.Je[0] = createOwner()), this.it);
|
|
2722
2889
|
}
|
|
2723
2890
|
return;
|
|
2724
2891
|
}
|
|
2725
2892
|
const n = t + e;
|
|
2726
|
-
const i = this.
|
|
2727
|
-
if (this
|
|
2728
|
-
for (let e = n; e < i; e++) this.
|
|
2729
|
-
if (this.
|
|
2730
|
-
let e = this.
|
|
2731
|
-
while (e < t && e < this
|
|
2732
|
-
this.
|
|
2733
|
-
this.
|
|
2734
|
-
} else if (this.
|
|
2735
|
-
let n = i - this.
|
|
2736
|
-
let r = this.
|
|
2737
|
-
this.
|
|
2893
|
+
const i = this.rt + this.Be;
|
|
2894
|
+
if (this.Be === 0 && this.Je[0]) this.Je[0].dispose();
|
|
2895
|
+
for (let e = n; e < i; e++) this.Je[e - this.rt].dispose();
|
|
2896
|
+
if (this.rt < t) {
|
|
2897
|
+
let e = this.rt;
|
|
2898
|
+
while (e < t && e < this.Be) this.Je[e++].dispose();
|
|
2899
|
+
this.Je.splice(0, t - this.rt);
|
|
2900
|
+
this.Xe.splice(0, t - this.rt);
|
|
2901
|
+
} else if (this.rt > t) {
|
|
2902
|
+
let n = i - this.rt - 1;
|
|
2903
|
+
let r = this.rt - t;
|
|
2904
|
+
this.Je.length = this.Xe.length = e;
|
|
2738
2905
|
while (n >= r) {
|
|
2739
|
-
this.
|
|
2740
|
-
this.
|
|
2906
|
+
this.Je[n] = this.Je[n - r];
|
|
2907
|
+
this.Xe[n] = this.Xe[n - r];
|
|
2741
2908
|
n--;
|
|
2742
2909
|
}
|
|
2743
2910
|
for (let e = 0; e < r; e++) {
|
|
2744
|
-
this.
|
|
2911
|
+
this.Xe[e] = runWithOwner((this.Je[e] = createOwner()), () => this.ze(e + t));
|
|
2745
2912
|
}
|
|
2746
2913
|
}
|
|
2747
2914
|
for (let e = i; e < n; e++) {
|
|
2748
|
-
this.
|
|
2915
|
+
this.Xe[e - t] = runWithOwner((this.Je[e - t] = createOwner()), () => this.ze(e));
|
|
2749
2916
|
}
|
|
2750
|
-
this.
|
|
2751
|
-
this.
|
|
2752
|
-
this
|
|
2917
|
+
this.Xe = this.Xe.slice(0, e);
|
|
2918
|
+
this.rt = t;
|
|
2919
|
+
this.Be = e;
|
|
2753
2920
|
});
|
|
2754
|
-
return this.
|
|
2921
|
+
return this.Xe;
|
|
2755
2922
|
}
|
|
2756
2923
|
function compare(e, t, n) {
|
|
2757
2924
|
return e ? e(t) === e(n) : true;
|
|
2758
2925
|
}
|
|
2759
2926
|
function boundaryComputed(e, t) {
|
|
2760
2927
|
const n = computed(e, undefined, { lazy: true });
|
|
2761
|
-
n.
|
|
2762
|
-
const i = e !== undefined ? e : n.
|
|
2763
|
-
const r = t !== undefined ? t : n.
|
|
2764
|
-
n.
|
|
2765
|
-
n.
|
|
2928
|
+
n.ge = (e, t) => {
|
|
2929
|
+
const i = e !== undefined ? e : n.Se;
|
|
2930
|
+
const r = t !== undefined ? t : n.le;
|
|
2931
|
+
n.Se &= ~n.ut;
|
|
2932
|
+
n.F.notify(n, n.ut, i, r);
|
|
2766
2933
|
};
|
|
2767
|
-
n.
|
|
2768
|
-
n.
|
|
2934
|
+
n.ut = t;
|
|
2935
|
+
n.Ge = true;
|
|
2769
2936
|
recompute(n, true);
|
|
2770
2937
|
return n;
|
|
2771
2938
|
}
|
|
2772
2939
|
function createBoundChildren(e, t, n, i) {
|
|
2773
|
-
const r = e.
|
|
2774
|
-
r.addChild((e.
|
|
2775
|
-
onCleanup(() => r.removeChild(e.
|
|
2940
|
+
const r = e.F;
|
|
2941
|
+
r.addChild((e.F = n));
|
|
2942
|
+
onCleanup(() => r.removeChild(e.F));
|
|
2776
2943
|
return runWithOwner(e, () => {
|
|
2777
2944
|
const e = computed(t);
|
|
2778
2945
|
return boundaryComputed(() => staleValues(() => flatten(read(e))), i);
|
|
@@ -2780,57 +2947,61 @@ function createBoundChildren(e, t, n, i) {
|
|
|
2780
2947
|
}
|
|
2781
2948
|
const ON_INIT = Symbol();
|
|
2782
2949
|
class CollectionQueue extends Queue {
|
|
2783
|
-
rt;
|
|
2784
|
-
ot = new Set();
|
|
2785
|
-
st = signal(false, { pureWrite: true, Qe: true });
|
|
2786
|
-
ut = false;
|
|
2787
2950
|
ct;
|
|
2788
|
-
|
|
2951
|
+
ft = new Set();
|
|
2952
|
+
lt = signal(false, { pureWrite: true, We: true });
|
|
2953
|
+
Et = false;
|
|
2954
|
+
Tt;
|
|
2955
|
+
dt = ON_INIT;
|
|
2789
2956
|
constructor(e) {
|
|
2790
2957
|
super();
|
|
2791
|
-
this.
|
|
2958
|
+
this.ct = e;
|
|
2792
2959
|
}
|
|
2793
2960
|
run(e) {
|
|
2794
|
-
if (!e || read(this.
|
|
2961
|
+
if (!e || read(this.lt)) return;
|
|
2795
2962
|
return super.run(e);
|
|
2796
2963
|
}
|
|
2797
2964
|
notify(e, t, n, i) {
|
|
2798
|
-
if (!(t & this.
|
|
2799
|
-
if (this.
|
|
2965
|
+
if (!(t & this.ct)) return super.notify(e, t, n, i);
|
|
2966
|
+
if (this.Et && this.Tt) {
|
|
2800
2967
|
const e = untrack(() => {
|
|
2801
2968
|
try {
|
|
2802
|
-
return this.
|
|
2969
|
+
return this.Tt();
|
|
2803
2970
|
} catch {
|
|
2804
2971
|
return ON_INIT;
|
|
2805
2972
|
}
|
|
2806
2973
|
});
|
|
2807
|
-
if (e !== this.
|
|
2808
|
-
this.
|
|
2809
|
-
this.
|
|
2810
|
-
this.
|
|
2974
|
+
if (e !== this.dt) {
|
|
2975
|
+
this.dt = e;
|
|
2976
|
+
this.Et = false;
|
|
2977
|
+
this.ft.clear();
|
|
2811
2978
|
}
|
|
2812
2979
|
}
|
|
2813
|
-
if (this.
|
|
2814
|
-
if (n &
|
|
2815
|
-
|
|
2980
|
+
if (this.ct & STATUS_PENDING && this.Et) return super.notify(e, t, n, i);
|
|
2981
|
+
if (this.ct & STATUS_PENDING && n & STATUS_ERROR) {
|
|
2982
|
+
return super.notify(e, STATUS_ERROR, n, i);
|
|
2983
|
+
}
|
|
2984
|
+
if (n & this.ct) {
|
|
2985
|
+
const t = i?.source || e.le?.source;
|
|
2816
2986
|
if (t) {
|
|
2817
|
-
const e = this.
|
|
2818
|
-
this.
|
|
2819
|
-
if (e) setSignal(this.
|
|
2987
|
+
const e = this.ft.size === 0;
|
|
2988
|
+
this.ft.add(t);
|
|
2989
|
+
if (e) setSignal(this.lt, true);
|
|
2820
2990
|
}
|
|
2821
2991
|
}
|
|
2822
|
-
t &= ~this.
|
|
2992
|
+
t &= ~this.ct;
|
|
2823
2993
|
return t ? super.notify(e, t, n, i) : true;
|
|
2824
2994
|
}
|
|
2825
2995
|
checkSources() {
|
|
2826
|
-
for (const e of this.
|
|
2827
|
-
if (!(e.
|
|
2996
|
+
for (const e of this.ft) {
|
|
2997
|
+
if (!(e.Se & this.ct) && !(this.ct & STATUS_ERROR && e.Se & STATUS_PENDING))
|
|
2998
|
+
this.ft.delete(e);
|
|
2828
2999
|
}
|
|
2829
|
-
if (!this.
|
|
2830
|
-
setSignal(this.
|
|
2831
|
-
if (this.
|
|
3000
|
+
if (!this.ft.size) {
|
|
3001
|
+
setSignal(this.lt, false);
|
|
3002
|
+
if (this.Tt) {
|
|
2832
3003
|
try {
|
|
2833
|
-
this.
|
|
3004
|
+
this.dt = untrack(() => this.Tt());
|
|
2834
3005
|
} catch {}
|
|
2835
3006
|
}
|
|
2836
3007
|
}
|
|
@@ -2839,13 +3010,13 @@ class CollectionQueue extends Queue {
|
|
|
2839
3010
|
function createCollectionBoundary(e, t, n, i) {
|
|
2840
3011
|
const r = createOwner();
|
|
2841
3012
|
const o = new CollectionQueue(e);
|
|
2842
|
-
if (i) o.
|
|
3013
|
+
if (i) o.Tt = i;
|
|
2843
3014
|
const s = createBoundChildren(r, t, o, e);
|
|
2844
3015
|
const u = computed(() => {
|
|
2845
|
-
if (!read(o.
|
|
3016
|
+
if (!read(o.lt)) {
|
|
2846
3017
|
const e = read(s);
|
|
2847
|
-
if (!untrack(() => read(o.
|
|
2848
|
-
o.
|
|
3018
|
+
if (!untrack(() => read(o.lt))) {
|
|
3019
|
+
o.Et = true;
|
|
2849
3020
|
return e;
|
|
2850
3021
|
}
|
|
2851
3022
|
}
|
|
@@ -2858,10 +3029,10 @@ function createLoadingBoundary(e, t, n) {
|
|
|
2858
3029
|
}
|
|
2859
3030
|
function createErrorBoundary(e, t) {
|
|
2860
3031
|
return createCollectionBoundary(STATUS_ERROR, e, e => {
|
|
2861
|
-
let n = e.
|
|
2862
|
-
const i = n.
|
|
3032
|
+
let n = e.ft.values().next().value;
|
|
3033
|
+
const i = n.le?.cause ?? n.le;
|
|
2863
3034
|
return t(i, () => {
|
|
2864
|
-
for (const t of e.
|
|
3035
|
+
for (const t of e.ft) recompute(t);
|
|
2865
3036
|
schedule();
|
|
2866
3037
|
});
|
|
2867
3038
|
});
|