@e280/strata 0.0.0-9 → 0.0.0
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/README.md +95 -25
- package/package.json +3 -3
- package/s/signals/parts/effect.ts +2 -2
- package/s/signals/parts/signal.ts +4 -4
- package/s/signals/parts/units.ts +7 -5
- package/s/signals/signals.test.ts +9 -0
- package/s/tracker/tracker.test.ts +5 -5
- package/s/tracker/tracker.ts +13 -24
- package/x/signals/parts/effect.js +2 -2
- package/x/signals/parts/effect.js.map +1 -1
- package/x/signals/parts/signal.d.ts +4 -4
- package/x/signals/parts/units.d.ts +2 -2
- package/x/signals/parts/units.js +7 -5
- package/x/signals/parts/units.js.map +1 -1
- package/x/signals/signals.test.d.ts +1 -0
- package/x/signals/signals.test.js +7 -0
- package/x/signals/signals.test.js.map +1 -1
- package/x/tracker/tracker.d.ts +6 -15
- package/x/tracker/tracker.js +12 -22
- package/x/tracker/tracker.js.map +1 -1
- package/x/tracker/tracker.test.js +5 -5
- package/x/tracker/tracker.test.js.map +1 -1
package/README.md
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
📦 `npm install @e280/strata`
|
|
10
10
|
🧙♂️ probably my tenth state management library, lol
|
|
11
11
|
💁 it's all about rerendering ui when data changes
|
|
12
|
+
🧑💻 a project by https://e280.org/
|
|
12
13
|
|
|
13
14
|
🚦 **signals** — ephemeral view-level state
|
|
14
15
|
🌳 **tree** — persistent app-level state
|
|
@@ -22,12 +23,14 @@
|
|
|
22
23
|
|
|
23
24
|
<br/>
|
|
24
25
|
|
|
25
|
-
## 🚦 signals
|
|
26
|
+
## 🚦 strata signals
|
|
27
|
+
> *ephemeral view-level state*
|
|
28
|
+
|
|
26
29
|
```ts
|
|
27
30
|
import {signal, effect, computed} from "@e280/strata"
|
|
28
31
|
```
|
|
29
32
|
|
|
30
|
-
### each signal holds a value
|
|
33
|
+
### 🚦 each signal holds a value
|
|
31
34
|
- **create a signal**
|
|
32
35
|
```ts
|
|
33
36
|
const count = signal(0)
|
|
@@ -45,19 +48,19 @@ import {signal, effect, computed} from "@e280/strata"
|
|
|
45
48
|
await count(2)
|
|
46
49
|
```
|
|
47
50
|
|
|
48
|
-
### pick your poison
|
|
49
|
-
- **
|
|
51
|
+
### 🚦 pick your poison
|
|
52
|
+
- **signal hipster fn syntax**
|
|
50
53
|
```ts
|
|
51
54
|
count() // get
|
|
52
55
|
await count(2) // set
|
|
53
56
|
```
|
|
54
57
|
> to achieve this hipster syntax i had to make the implementation so damn cursed, lol 💀
|
|
55
|
-
- **
|
|
58
|
+
- **signal get/set syntax**
|
|
56
59
|
```ts
|
|
57
60
|
count.get() // get
|
|
58
61
|
await count.set(2) // set
|
|
59
62
|
```
|
|
60
|
-
- **
|
|
63
|
+
- **signal .value accessor syntax**
|
|
61
64
|
```ts
|
|
62
65
|
count.value // get
|
|
63
66
|
count.value = 2 // set
|
|
@@ -68,7 +71,7 @@ import {signal, effect, computed} from "@e280/strata"
|
|
|
68
71
|
count.value += 1
|
|
69
72
|
```
|
|
70
73
|
|
|
71
|
-
### effects
|
|
74
|
+
### 🚦 effects
|
|
72
75
|
- **effects run when the relevant signals change**
|
|
73
76
|
```ts
|
|
74
77
|
effect(() => console.log(count()))
|
|
@@ -80,7 +83,7 @@ import {signal, effect, computed} from "@e280/strata"
|
|
|
80
83
|
// when count is changed, the effect fn is run
|
|
81
84
|
```
|
|
82
85
|
|
|
83
|
-
### `signal.derive` and `signal.lazy` are computed signals
|
|
86
|
+
### 🚦 `signal.derive` and `signal.lazy` are computed signals
|
|
84
87
|
- **signal.derive**
|
|
85
88
|
is for combining signals
|
|
86
89
|
```ts
|
|
@@ -100,21 +103,25 @@ import {signal, effect, computed} from "@e280/strata"
|
|
|
100
103
|
is for making special optimizations.
|
|
101
104
|
it's like derive, except it cannot trigger effects,
|
|
102
105
|
because it's so lazy it only computes the value on read, and only when necessary.
|
|
103
|
-
>
|
|
106
|
+
> *i repeat: lazy signals cannot trigger effects!*
|
|
104
107
|
|
|
105
108
|
<br/>
|
|
106
109
|
|
|
107
|
-
## 🌳
|
|
110
|
+
## 🌳 strata trees
|
|
111
|
+
> *persistent app-level state*
|
|
112
|
+
|
|
113
|
+
```ts
|
|
114
|
+
import {Trunk} from "@e280/strata"
|
|
115
|
+
```
|
|
116
|
+
|
|
108
117
|
- single-source-of-truth state tree
|
|
109
118
|
- immutable except for `mutate(fn)` calls
|
|
110
119
|
- localStorage persistence, cross-tab sync, undo/redo history
|
|
111
120
|
- no spooky-dookie proxy magic — just god's honest javascript
|
|
112
121
|
|
|
113
|
-
#### `Trunk` is your app's state tree root
|
|
122
|
+
#### 🌳 `Trunk` is your app's state tree root
|
|
114
123
|
- better stick to json-friendly serializable data
|
|
115
124
|
```ts
|
|
116
|
-
import {Trunk} from "@e280/strata"
|
|
117
|
-
|
|
118
125
|
const trunk = new Trunk({
|
|
119
126
|
count: 0,
|
|
120
127
|
snacks: {
|
|
@@ -127,7 +134,7 @@ import {signal, effect, computed} from "@e280/strata"
|
|
|
127
134
|
trunk.state.snacks.peanuts // 8
|
|
128
135
|
```
|
|
129
136
|
|
|
130
|
-
#### formal mutations to change state
|
|
137
|
+
#### 🌳 formal mutations to change state
|
|
131
138
|
- ⛔ informal mutations are denied
|
|
132
139
|
```ts
|
|
133
140
|
trunk.state.count++ // error is thrown
|
|
@@ -137,7 +144,7 @@ import {signal, effect, computed} from "@e280/strata"
|
|
|
137
144
|
await trunk.mutate(s => s.count++)
|
|
138
145
|
```
|
|
139
146
|
|
|
140
|
-
#### `Branch` is a view into a subtree
|
|
147
|
+
#### 🌳 `Branch` is a view into a subtree
|
|
141
148
|
- it's a lens, make lots of them, pass 'em around your app
|
|
142
149
|
```ts
|
|
143
150
|
const snacks = trunk.branch(s => s.snacks)
|
|
@@ -152,7 +159,7 @@ import {signal, effect, computed} from "@e280/strata"
|
|
|
152
159
|
```
|
|
153
160
|
- you can branch a branch
|
|
154
161
|
|
|
155
|
-
#### `on` to watch for mutations
|
|
162
|
+
#### 🌳 `on` to watch for mutations
|
|
156
163
|
- on the trunk, we can listen deeply for mutations within the whole tree
|
|
157
164
|
```ts
|
|
158
165
|
trunk.on(s => console.log(s.count))
|
|
@@ -167,9 +174,10 @@ import {signal, effect, computed} from "@e280/strata"
|
|
|
167
174
|
stop() // stop listening
|
|
168
175
|
```
|
|
169
176
|
|
|
170
|
-
###
|
|
177
|
+
### 🌳 fancy advanced usage
|
|
178
|
+
> *only discerning high-class aristocrats are permitted beyond this point*
|
|
171
179
|
|
|
172
|
-
#### `Trunk.setup` for localStorage persistence etc
|
|
180
|
+
#### 🌳 `Trunk.setup` for localStorage persistence etc
|
|
173
181
|
- it automatically handles persistence to localStorage and cross-tab synchronization
|
|
174
182
|
- simple setup
|
|
175
183
|
```ts
|
|
@@ -196,7 +204,7 @@ import {signal, effect, computed} from "@e280/strata"
|
|
|
196
204
|
})
|
|
197
205
|
```
|
|
198
206
|
|
|
199
|
-
#### `Chronobranch` for undo/redo history
|
|
207
|
+
#### 🌳 `Chronobranch` for undo/redo history
|
|
200
208
|
- first, put a `Chronicle` into your state tree
|
|
201
209
|
```ts
|
|
202
210
|
const trunk = new Trunk({
|
|
@@ -235,15 +243,77 @@ import {signal, effect, computed} from "@e280/strata"
|
|
|
235
243
|
<br/>
|
|
236
244
|
|
|
237
245
|
## 🪄 tracker — integrations
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
246
|
+
> *reactivity integration hub*
|
|
247
|
+
|
|
248
|
+
```ts
|
|
249
|
+
import {tracker} from "@e280/strata/tracker"
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
the *items* that the tracker tracks can be any object, or symbol.. the tracker cares about the identity of the item, not the value (tracker holds them in a WeakMap to avoid creating a memory leak)..
|
|
253
|
+
|
|
254
|
+
### 🪄 integrate your ui's reactivity
|
|
255
|
+
- we need to imagine you have some prerequisites
|
|
256
|
+
- `myRenderFn` -- your fn that might access some state stuff
|
|
257
|
+
- `myRerenderFn` -- your fn that is called when some state stuff changes
|
|
258
|
+
- it's OK if these are the same fn, but they don't have to be
|
|
259
|
+
- `tracker.observe` to check what is touched by a fn
|
|
260
|
+
```ts
|
|
261
|
+
// 🪄 run myRenderFn and collect seen items
|
|
262
|
+
const {seen, result} = tracker.observe(myRenderFn)
|
|
263
|
+
|
|
264
|
+
// a set of items that were accessed during myRenderFn
|
|
265
|
+
seen
|
|
266
|
+
|
|
267
|
+
// the value returned by myRenderFn
|
|
268
|
+
result
|
|
269
|
+
```
|
|
270
|
+
- it's a good idea to debounce your rerender fn
|
|
271
|
+
```ts
|
|
272
|
+
import {debounce} from "@e280/stz"
|
|
273
|
+
const myDebouncedRerenderFn = debounce(0, myRerenderFn)
|
|
274
|
+
```
|
|
275
|
+
- `tracker.subscribe` to respond to changes
|
|
276
|
+
```ts
|
|
277
|
+
const stoppers: (() => void)[] = []
|
|
278
|
+
|
|
279
|
+
// loop over every seen item
|
|
280
|
+
for (const item of seen) {
|
|
281
|
+
|
|
282
|
+
// 🪄 react to changes
|
|
283
|
+
const stop = tracker.subscribe(item, myDebouncedRerenderFn)
|
|
284
|
+
|
|
285
|
+
stoppers.push(stop)
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
const stopReactivity = () => stoppers.forEach(stop => stop())
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
### 🪄 integrate your own novel state concepts
|
|
292
|
+
- as an example, we'll invent the simplest possible signal
|
|
293
|
+
```ts
|
|
294
|
+
export class SimpleSignal<Value> {
|
|
295
|
+
constructor(private value: Value) {}
|
|
296
|
+
|
|
297
|
+
get() {
|
|
298
|
+
|
|
299
|
+
// 🪄 tell the tracker this signal was accessed
|
|
300
|
+
tracker.notifyRead(this)
|
|
301
|
+
|
|
302
|
+
return this.value
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
async set(value: Value) {
|
|
306
|
+
this.value = value
|
|
307
|
+
|
|
308
|
+
// 🪄 tell the tracker this signal has changed
|
|
309
|
+
await tracker.notifyWrite(this)
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
```
|
|
243
313
|
|
|
244
314
|
<br/>
|
|
245
315
|
|
|
246
|
-
##
|
|
316
|
+
## 🧑💻 an e280 project
|
|
247
317
|
free and open source by https://e280.org/
|
|
248
318
|
join us if you're cool and good at dev
|
|
249
319
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@e280/strata",
|
|
3
|
-
"version": "0.0.0
|
|
3
|
+
"version": "0.0.0",
|
|
4
4
|
"description": "state management",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Chase Moskal <chasemoskal@gmail.com>",
|
|
@@ -29,11 +29,11 @@
|
|
|
29
29
|
"_tscw": "tsc -w"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@e280/stz": "^0.0.0
|
|
32
|
+
"@e280/stz": "^0.0.0"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@e280/science": "^0.0.6",
|
|
36
|
-
"@types/node": "^24.
|
|
36
|
+
"@types/node": "^24.3.0",
|
|
37
37
|
"npm-run-all": "^4.1.5",
|
|
38
38
|
"typescript": "^5.9.2"
|
|
39
39
|
},
|
|
@@ -7,14 +7,14 @@ export function effect(collector: () => void, responder: () => void = collector)
|
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
export function collectorEffect<C = void>(collector: () => C, responder: () => void = collector) {
|
|
10
|
-
const {seen, result} = tracker.
|
|
10
|
+
const {seen, result} = tracker.observe(collector)
|
|
11
11
|
const fn = debounce(0, responder)
|
|
12
12
|
|
|
13
13
|
const disposers: (() => void)[] = []
|
|
14
14
|
const dispose = () => disposers.forEach(d => d())
|
|
15
15
|
|
|
16
16
|
for (const saw of seen) {
|
|
17
|
-
const dispose = tracker.
|
|
17
|
+
const dispose = tracker.subscribe(saw, fn)
|
|
18
18
|
disposers.push(dispose)
|
|
19
19
|
}
|
|
20
20
|
|
|
@@ -8,8 +8,8 @@ import {processSignalOptions, SignalCore} from "./units.js"
|
|
|
8
8
|
|
|
9
9
|
export type Signal<V> = {
|
|
10
10
|
(): V
|
|
11
|
-
(v: V): Promise<
|
|
12
|
-
(v?: V): V | Promise<
|
|
11
|
+
(v: V): Promise<V>
|
|
12
|
+
(v?: V): V | Promise<V>
|
|
13
13
|
|
|
14
14
|
kind: "signal"
|
|
15
15
|
|
|
@@ -17,8 +17,8 @@ export type Signal<V> = {
|
|
|
17
17
|
value: V
|
|
18
18
|
on: Sub<[V]>
|
|
19
19
|
get(): V
|
|
20
|
-
set(v: V): Promise<
|
|
21
|
-
publish(v?: V): Promise<
|
|
20
|
+
set(v: V): Promise<V>
|
|
21
|
+
publish(v?: V): Promise<V>
|
|
22
22
|
dispose(): void
|
|
23
23
|
} & SignalCore<V>
|
|
24
24
|
|
package/s/signals/parts/units.ts
CHANGED
|
@@ -16,7 +16,7 @@ export class ReadableSignal<V> {
|
|
|
16
16
|
constructor(public sneak: V) {}
|
|
17
17
|
|
|
18
18
|
get() {
|
|
19
|
-
tracker.
|
|
19
|
+
tracker.notifyRead(this)
|
|
20
20
|
return this.sneak
|
|
21
21
|
}
|
|
22
22
|
|
|
@@ -45,6 +45,7 @@ export class SignalCore<V> extends ReactiveSignal<V> {
|
|
|
45
45
|
const isChanged = !this._options.compare(this.sneak, v)
|
|
46
46
|
if (isChanged)
|
|
47
47
|
await this.publish(v)
|
|
48
|
+
return v
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
get value() {
|
|
@@ -65,7 +66,7 @@ export class SignalCore<V> extends ReactiveSignal<V> {
|
|
|
65
66
|
this._lock = true
|
|
66
67
|
this.sneak = v
|
|
67
68
|
promise = Promise.all([
|
|
68
|
-
tracker.
|
|
69
|
+
tracker.notifyWrite(this),
|
|
69
70
|
this.on.pub(v),
|
|
70
71
|
]) as any
|
|
71
72
|
}
|
|
@@ -73,7 +74,8 @@ export class SignalCore<V> extends ReactiveSignal<V> {
|
|
|
73
74
|
this._lock = false
|
|
74
75
|
}
|
|
75
76
|
|
|
76
|
-
|
|
77
|
+
await promise
|
|
78
|
+
return v
|
|
77
79
|
}
|
|
78
80
|
}
|
|
79
81
|
|
|
@@ -100,7 +102,7 @@ export class LazyCore<V> extends ReadableSignal<V> {
|
|
|
100
102
|
const isChanged = !this._options.compare(this.sneak, v)
|
|
101
103
|
if (isChanged) {
|
|
102
104
|
this.sneak = v
|
|
103
|
-
tracker.
|
|
105
|
+
tracker.notifyWrite(this)
|
|
104
106
|
}
|
|
105
107
|
}
|
|
106
108
|
return super.get()
|
|
@@ -124,7 +126,7 @@ export class DerivedCore<V> extends ReactiveSignal<V> {
|
|
|
124
126
|
if (isChanged) {
|
|
125
127
|
that.sneak = value
|
|
126
128
|
await Promise.all([
|
|
127
|
-
tracker.
|
|
129
|
+
tracker.notifyWrite(that),
|
|
128
130
|
that.on.pub(value),
|
|
129
131
|
])
|
|
130
132
|
}
|
|
@@ -28,6 +28,15 @@ export default Science.suite({
|
|
|
28
28
|
expect(count()).is(5)
|
|
29
29
|
}),
|
|
30
30
|
|
|
31
|
+
"signal set and publish returns value": test(async() => {
|
|
32
|
+
const count = signal(0)
|
|
33
|
+
expect(count.value).is(0)
|
|
34
|
+
|
|
35
|
+
expect(await count.set(1)).is(1)
|
|
36
|
+
expect(await count(2)).is(2)
|
|
37
|
+
expect(await count.publish(3)).is(3)
|
|
38
|
+
}),
|
|
39
|
+
|
|
31
40
|
"signal syntax interop": test(async() => {
|
|
32
41
|
const count = signal(0)
|
|
33
42
|
|
|
@@ -8,13 +8,13 @@ export default Science.suite({
|
|
|
8
8
|
let order: string[] = []
|
|
9
9
|
|
|
10
10
|
const item = {}
|
|
11
|
-
tracker.
|
|
11
|
+
tracker.subscribe(item, async () => {
|
|
12
12
|
await Promise.resolve()
|
|
13
13
|
order.push("effect")
|
|
14
14
|
})
|
|
15
15
|
|
|
16
16
|
order.push("before")
|
|
17
|
-
await tracker.
|
|
17
|
+
await tracker.notifyWrite(item)
|
|
18
18
|
order.push("after")
|
|
19
19
|
|
|
20
20
|
expect(order.length).is(3)
|
|
@@ -28,12 +28,12 @@ export default Science.suite({
|
|
|
28
28
|
const item = {}
|
|
29
29
|
|
|
30
30
|
// effect re-publishes the same change, creating a cycle
|
|
31
|
-
tracker.
|
|
32
|
-
await tracker.
|
|
31
|
+
tracker.subscribe(item, async() => {
|
|
32
|
+
await tracker.notifyWrite(item)
|
|
33
33
|
})
|
|
34
34
|
|
|
35
35
|
expect(async() => {
|
|
36
|
-
await tracker.
|
|
36
|
+
await tracker.notifyWrite(item)
|
|
37
37
|
}).throwsAsync()
|
|
38
38
|
}),
|
|
39
39
|
})
|
package/s/tracker/tracker.ts
CHANGED
|
@@ -4,16 +4,7 @@ import {sub, Sub} from "@e280/stz"
|
|
|
4
4
|
export type TrackableItem = object | symbol
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
8
|
-
* - it tracks when items are seen or changed
|
|
9
|
-
*
|
|
10
|
-
* for state item integration (like you're integrating a new kind of state object)
|
|
11
|
-
* - items can call `tracker.see(this)` when they are accessed
|
|
12
|
-
* - items can call `tracker.change(this)` when they are reassigned
|
|
13
|
-
*
|
|
14
|
-
* for reactivity integration (like you're integrating a new view library that reacts to state changes)
|
|
15
|
-
* - run `tracker.seen(renderFn)`, collecting a set of seen items
|
|
16
|
-
* - loop over each seen item, attach a changed handler `tracker.changed(item, handlerFn)`
|
|
7
|
+
* reactivity integration hub
|
|
17
8
|
*/
|
|
18
9
|
export class Tracker<Item extends TrackableItem = any> {
|
|
19
10
|
#seeables: Set<Item>[] = []
|
|
@@ -22,20 +13,12 @@ export class Tracker<Item extends TrackableItem = any> {
|
|
|
22
13
|
#busy = new Set<Item>()
|
|
23
14
|
|
|
24
15
|
/** indicate item was accessed */
|
|
25
|
-
|
|
16
|
+
notifyRead(item: Item) {
|
|
26
17
|
this.#seeables.at(-1)?.add(item)
|
|
27
18
|
}
|
|
28
19
|
|
|
29
|
-
/** collect which items were seen during fn */
|
|
30
|
-
seen<R>(fn: () => R) {
|
|
31
|
-
this.#seeables.push(new Set())
|
|
32
|
-
const result = fn()
|
|
33
|
-
const seen = this.#seeables.pop()!
|
|
34
|
-
return {seen, result}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
20
|
/** indicate item was changed */
|
|
38
|
-
async
|
|
21
|
+
async notifyWrite(item: Item) {
|
|
39
22
|
if (this.#busy.has(item))
|
|
40
23
|
throw new Error("circularity forbidden")
|
|
41
24
|
const prom = this.#guaranteeChangeable(item).pub()
|
|
@@ -43,8 +26,16 @@ export class Tracker<Item extends TrackableItem = any> {
|
|
|
43
26
|
return prom
|
|
44
27
|
}
|
|
45
28
|
|
|
29
|
+
/** collect which items were seen during fn */
|
|
30
|
+
observe<R>(fn: () => R) {
|
|
31
|
+
this.#seeables.push(new Set())
|
|
32
|
+
const result = fn()
|
|
33
|
+
const seen = this.#seeables.pop()!
|
|
34
|
+
return {seen, result}
|
|
35
|
+
}
|
|
36
|
+
|
|
46
37
|
/** respond to changes by calling fn */
|
|
47
|
-
|
|
38
|
+
subscribe(item: Item, fn: () => Promise<void>) {
|
|
48
39
|
return this.#guaranteeChangeable(item)(async() => {
|
|
49
40
|
const collected = new Set<Promise<void>>()
|
|
50
41
|
this.#changeStack.push(collected)
|
|
@@ -66,8 +57,6 @@ export class Tracker<Item extends TrackableItem = any> {
|
|
|
66
57
|
}
|
|
67
58
|
}
|
|
68
59
|
|
|
69
|
-
const key = Symbol.for("e280.tracker.v2")
|
|
70
|
-
|
|
71
60
|
/** standard global tracker for integrations */
|
|
72
|
-
export const tracker: Tracker = (globalThis as any)[
|
|
61
|
+
export const tracker: Tracker = (globalThis as any)[Symbol.for("e280.tracker")] ??= new Tracker()
|
|
73
62
|
|
|
@@ -4,12 +4,12 @@ export function effect(collector, responder = collector) {
|
|
|
4
4
|
return collectorEffect(collector, responder).dispose;
|
|
5
5
|
}
|
|
6
6
|
export function collectorEffect(collector, responder = collector) {
|
|
7
|
-
const { seen, result } = tracker.
|
|
7
|
+
const { seen, result } = tracker.observe(collector);
|
|
8
8
|
const fn = debounce(0, responder);
|
|
9
9
|
const disposers = [];
|
|
10
10
|
const dispose = () => disposers.forEach(d => d());
|
|
11
11
|
for (const saw of seen) {
|
|
12
|
-
const dispose = tracker.
|
|
12
|
+
const dispose = tracker.subscribe(saw, fn);
|
|
13
13
|
disposers.push(dispose);
|
|
14
14
|
}
|
|
15
15
|
return { result, dispose };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effect.js","sourceRoot":"","sources":["../../../s/signals/parts/effect.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAA;AAClC,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAA;AAEhD,MAAM,UAAU,MAAM,CAAC,SAAqB,EAAE,YAAwB,SAAS;IAC9E,OAAO,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,OAAO,CAAA;AACrD,CAAC;AAED,MAAM,UAAU,eAAe,CAAW,SAAkB,EAAE,YAAwB,SAAS;IAC9F,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"effect.js","sourceRoot":"","sources":["../../../s/signals/parts/effect.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAA;AAClC,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAA;AAEhD,MAAM,UAAU,MAAM,CAAC,SAAqB,EAAE,YAAwB,SAAS;IAC9E,OAAO,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,OAAO,CAAA;AACrD,CAAC;AAED,MAAM,UAAU,eAAe,CAAW,SAAkB,EAAE,YAAwB,SAAS;IAC9F,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACjD,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;IAEjC,MAAM,SAAS,GAAmB,EAAE,CAAA;IACpC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;IAEjD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QAC1C,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxB,CAAC;IAED,OAAO,EAAC,MAAM,EAAE,OAAO,EAAC,CAAA;AACzB,CAAC"}
|
|
@@ -3,15 +3,15 @@ import { SignalOptions } from "./types.js";
|
|
|
3
3
|
import { SignalCore } from "./units.js";
|
|
4
4
|
export type Signal<V> = {
|
|
5
5
|
(): V;
|
|
6
|
-
(v: V): Promise<
|
|
7
|
-
(v?: V): V | Promise<
|
|
6
|
+
(v: V): Promise<V>;
|
|
7
|
+
(v?: V): V | Promise<V>;
|
|
8
8
|
kind: "signal";
|
|
9
9
|
sneak: V;
|
|
10
10
|
value: V;
|
|
11
11
|
on: Sub<[V]>;
|
|
12
12
|
get(): V;
|
|
13
|
-
set(v: V): Promise<
|
|
14
|
-
publish(v?: V): Promise<
|
|
13
|
+
set(v: V): Promise<V>;
|
|
14
|
+
publish(v?: V): Promise<V>;
|
|
15
15
|
dispose(): void;
|
|
16
16
|
} & SignalCore<V>;
|
|
17
17
|
export declare function signal<V>(value: V, options?: Partial<SignalOptions>): Signal<V>;
|
|
@@ -17,10 +17,10 @@ export declare class SignalCore<V> extends ReactiveSignal<V> {
|
|
|
17
17
|
kind: "signal";
|
|
18
18
|
_lock: boolean;
|
|
19
19
|
constructor(sneak: V, _options: SignalOptions);
|
|
20
|
-
set(v: V): Promise<
|
|
20
|
+
set(v: V): Promise<V>;
|
|
21
21
|
get value(): V;
|
|
22
22
|
set value(v: V);
|
|
23
|
-
publish(v?: V): Promise<
|
|
23
|
+
publish(v?: V): Promise<V>;
|
|
24
24
|
}
|
|
25
25
|
export declare class LazyCore<V> extends ReadableSignal<V> {
|
|
26
26
|
_formula: () => V;
|
package/x/signals/parts/units.js
CHANGED
|
@@ -13,7 +13,7 @@ export class ReadableSignal {
|
|
|
13
13
|
this.sneak = sneak;
|
|
14
14
|
}
|
|
15
15
|
get() {
|
|
16
|
-
tracker.
|
|
16
|
+
tracker.notifyRead(this);
|
|
17
17
|
return this.sneak;
|
|
18
18
|
}
|
|
19
19
|
get value() {
|
|
@@ -38,6 +38,7 @@ export class SignalCore extends ReactiveSignal {
|
|
|
38
38
|
const isChanged = !this._options.compare(this.sneak, v);
|
|
39
39
|
if (isChanged)
|
|
40
40
|
await this.publish(v);
|
|
41
|
+
return v;
|
|
41
42
|
}
|
|
42
43
|
get value() {
|
|
43
44
|
return this.get();
|
|
@@ -53,14 +54,15 @@ export class SignalCore extends ReactiveSignal {
|
|
|
53
54
|
this._lock = true;
|
|
54
55
|
this.sneak = v;
|
|
55
56
|
promise = Promise.all([
|
|
56
|
-
tracker.
|
|
57
|
+
tracker.notifyWrite(this),
|
|
57
58
|
this.on.pub(v),
|
|
58
59
|
]);
|
|
59
60
|
}
|
|
60
61
|
finally {
|
|
61
62
|
this._lock = false;
|
|
62
63
|
}
|
|
63
|
-
|
|
64
|
+
await promise;
|
|
65
|
+
return v;
|
|
64
66
|
}
|
|
65
67
|
}
|
|
66
68
|
export class LazyCore extends ReadableSignal {
|
|
@@ -86,7 +88,7 @@ export class LazyCore extends ReadableSignal {
|
|
|
86
88
|
const isChanged = !this._options.compare(this.sneak, v);
|
|
87
89
|
if (isChanged) {
|
|
88
90
|
this.sneak = v;
|
|
89
|
-
tracker.
|
|
91
|
+
tracker.notifyWrite(this);
|
|
90
92
|
}
|
|
91
93
|
}
|
|
92
94
|
return super.get();
|
|
@@ -108,7 +110,7 @@ export class DerivedCore extends ReactiveSignal {
|
|
|
108
110
|
if (isChanged) {
|
|
109
111
|
that.sneak = value;
|
|
110
112
|
await Promise.all([
|
|
111
|
-
tracker.
|
|
113
|
+
tracker.notifyWrite(that),
|
|
112
114
|
that.on.pub(value),
|
|
113
115
|
]);
|
|
114
116
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"units.js","sourceRoot":"","sources":["../../../s/signals/parts/units.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAC,MAAM,WAAW,CAAA;AAE7B,OAAO,EAAC,eAAe,EAAC,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAA;AAEhD,MAAM,oBAAoB,GAAkB;IAC3C,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;CAC1B,CAAA;AAED,MAAM,UAAU,oBAAoB,CAAC,UAAkC,EAAE;IACxE,OAAO,EAAC,GAAG,oBAAoB,EAAE,GAAG,OAAO,EAAC,CAAA;AAC7C,CAAC;AAED,MAAM,OAAO,cAAc;IACP;IAAnB,YAAmB,KAAQ;QAAR,UAAK,GAAL,KAAK,CAAG;IAAG,CAAC;IAE/B,GAAG;QACF,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"units.js","sourceRoot":"","sources":["../../../s/signals/parts/units.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { Science } from "@e280/science";
|
|
|
2
2
|
declare const _default: {
|
|
3
3
|
"signal get/set value": Science.Test;
|
|
4
4
|
"signal fn syntax": Science.Test;
|
|
5
|
+
"signal set and publish returns value": Science.Test;
|
|
5
6
|
"signal syntax interop": Science.Test;
|
|
6
7
|
"signal on is not debounced": Science.Test;
|
|
7
8
|
"signal on only fires on change": Science.Test;
|
|
@@ -19,6 +19,13 @@ export default Science.suite({
|
|
|
19
19
|
count(5);
|
|
20
20
|
expect(count()).is(5);
|
|
21
21
|
}),
|
|
22
|
+
"signal set and publish returns value": test(async () => {
|
|
23
|
+
const count = signal(0);
|
|
24
|
+
expect(count.value).is(0);
|
|
25
|
+
expect(await count.set(1)).is(1);
|
|
26
|
+
expect(await count(2)).is(2);
|
|
27
|
+
expect(await count.publish(3)).is(3);
|
|
28
|
+
}),
|
|
22
29
|
"signal syntax interop": test(async () => {
|
|
23
30
|
const count = signal(0);
|
|
24
31
|
count.value = 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signals.test.js","sourceRoot":"","sources":["../../s/signals/signals.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"signals.test.js","sourceRoot":"","sources":["../../s/signals/signals.test.ts"],"names":[],"mappings":"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"}
|
package/x/tracker/tracker.d.ts
CHANGED
|
@@ -1,29 +1,20 @@
|
|
|
1
1
|
export type TrackableItem = object | symbol;
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* - it tracks when items are seen or changed
|
|
5
|
-
*
|
|
6
|
-
* for state item integration (like you're integrating a new kind of state object)
|
|
7
|
-
* - items can call `tracker.see(this)` when they are accessed
|
|
8
|
-
* - items can call `tracker.change(this)` when they are reassigned
|
|
9
|
-
*
|
|
10
|
-
* for reactivity integration (like you're integrating a new view library that reacts to state changes)
|
|
11
|
-
* - run `tracker.seen(renderFn)`, collecting a set of seen items
|
|
12
|
-
* - loop over each seen item, attach a changed handler `tracker.changed(item, handlerFn)`
|
|
3
|
+
* reactivity integration hub
|
|
13
4
|
*/
|
|
14
5
|
export declare class Tracker<Item extends TrackableItem = any> {
|
|
15
6
|
#private;
|
|
16
7
|
/** indicate item was accessed */
|
|
17
|
-
|
|
8
|
+
notifyRead(item: Item): void;
|
|
9
|
+
/** indicate item was changed */
|
|
10
|
+
notifyWrite(item: Item): Promise<void>;
|
|
18
11
|
/** collect which items were seen during fn */
|
|
19
|
-
|
|
12
|
+
observe<R>(fn: () => R): {
|
|
20
13
|
seen: Set<Item>;
|
|
21
14
|
result: R;
|
|
22
15
|
};
|
|
23
|
-
/** indicate item was changed */
|
|
24
|
-
change(item: Item): Promise<void>;
|
|
25
16
|
/** respond to changes by calling fn */
|
|
26
|
-
|
|
17
|
+
subscribe(item: Item, fn: () => Promise<void>): () => void;
|
|
27
18
|
}
|
|
28
19
|
/** standard global tracker for integrations */
|
|
29
20
|
export declare const tracker: Tracker;
|
package/x/tracker/tracker.js
CHANGED
|
@@ -1,15 +1,6 @@
|
|
|
1
1
|
import { sub } from "@e280/stz";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* - it tracks when items are seen or changed
|
|
5
|
-
*
|
|
6
|
-
* for state item integration (like you're integrating a new kind of state object)
|
|
7
|
-
* - items can call `tracker.see(this)` when they are accessed
|
|
8
|
-
* - items can call `tracker.change(this)` when they are reassigned
|
|
9
|
-
*
|
|
10
|
-
* for reactivity integration (like you're integrating a new view library that reacts to state changes)
|
|
11
|
-
* - run `tracker.seen(renderFn)`, collecting a set of seen items
|
|
12
|
-
* - loop over each seen item, attach a changed handler `tracker.changed(item, handlerFn)`
|
|
3
|
+
* reactivity integration hub
|
|
13
4
|
*/
|
|
14
5
|
export class Tracker {
|
|
15
6
|
#seeables = [];
|
|
@@ -17,26 +8,26 @@ export class Tracker {
|
|
|
17
8
|
#changeStack = [];
|
|
18
9
|
#busy = new Set();
|
|
19
10
|
/** indicate item was accessed */
|
|
20
|
-
|
|
11
|
+
notifyRead(item) {
|
|
21
12
|
this.#seeables.at(-1)?.add(item);
|
|
22
13
|
}
|
|
23
|
-
/** collect which items were seen during fn */
|
|
24
|
-
seen(fn) {
|
|
25
|
-
this.#seeables.push(new Set());
|
|
26
|
-
const result = fn();
|
|
27
|
-
const seen = this.#seeables.pop();
|
|
28
|
-
return { seen, result };
|
|
29
|
-
}
|
|
30
14
|
/** indicate item was changed */
|
|
31
|
-
async
|
|
15
|
+
async notifyWrite(item) {
|
|
32
16
|
if (this.#busy.has(item))
|
|
33
17
|
throw new Error("circularity forbidden");
|
|
34
18
|
const prom = this.#guaranteeChangeable(item).pub();
|
|
35
19
|
this.#changeStack.at(-1)?.add(prom);
|
|
36
20
|
return prom;
|
|
37
21
|
}
|
|
22
|
+
/** collect which items were seen during fn */
|
|
23
|
+
observe(fn) {
|
|
24
|
+
this.#seeables.push(new Set());
|
|
25
|
+
const result = fn();
|
|
26
|
+
const seen = this.#seeables.pop();
|
|
27
|
+
return { seen, result };
|
|
28
|
+
}
|
|
38
29
|
/** respond to changes by calling fn */
|
|
39
|
-
|
|
30
|
+
subscribe(item, fn) {
|
|
40
31
|
return this.#guaranteeChangeable(item)(async () => {
|
|
41
32
|
const collected = new Set();
|
|
42
33
|
this.#changeStack.push(collected);
|
|
@@ -56,7 +47,6 @@ export class Tracker {
|
|
|
56
47
|
return on;
|
|
57
48
|
}
|
|
58
49
|
}
|
|
59
|
-
const key = Symbol.for("e280.tracker.v2");
|
|
60
50
|
/** standard global tracker for integrations */
|
|
61
|
-
export const tracker = globalThis[
|
|
51
|
+
export const tracker = globalThis[Symbol.for("e280.tracker")] ??= new Tracker();
|
|
62
52
|
//# sourceMappingURL=tracker.js.map
|
package/x/tracker/tracker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../s/tracker/tracker.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAM,MAAM,WAAW,CAAA;AAIlC
|
|
1
|
+
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../s/tracker/tracker.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAM,MAAM,WAAW,CAAA;AAIlC;;GAEG;AACH,MAAM,OAAO,OAAO;IACnB,SAAS,GAAgB,EAAE,CAAA;IAC3B,YAAY,GAAG,IAAI,OAAO,EAAa,CAAA;IACvC,YAAY,GAAyB,EAAE,CAAA;IACvC,KAAK,GAAG,IAAI,GAAG,EAAQ,CAAA;IAEvB,iCAAiC;IACjC,UAAU,CAAC,IAAU;QACpB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,gCAAgC;IAChC,KAAK,CAAC,WAAW,CAAC,IAAU;QAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAA;QAClD,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;QACnC,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,8CAA8C;IAC9C,OAAO,CAAI,EAAW;QACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,CAAA;QAC9B,MAAM,MAAM,GAAG,EAAE,EAAE,CAAA;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAG,CAAA;QAClC,OAAO,EAAC,IAAI,EAAE,MAAM,EAAC,CAAA;IACtB,CAAC;IAED,uCAAuC;IACvC,SAAS,CAAC,IAAU,EAAE,EAAuB;QAC5C,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,KAAK,IAAG,EAAE;YAChD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAiB,CAAA;YAC1C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACjC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACpB,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;YACnB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACvB,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YAC5B,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAA;QACxB,CAAC,CAAC,CAAA;IACH,CAAC;IAED,oBAAoB,CAAC,IAAU;QAC9B,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,CAAC,EAAE,EAAE,CAAC;YACT,EAAE,GAAG,GAAG,EAAE,CAAA;YACV,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAChC,CAAC;QACD,OAAO,EAAE,CAAA;IACV,CAAC;CACD;AAED,+CAA+C;AAC/C,MAAM,CAAC,MAAM,OAAO,GAAa,UAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,KAAK,IAAI,OAAO,EAAE,CAAA"}
|
|
@@ -5,12 +5,12 @@ export default Science.suite({
|
|
|
5
5
|
const tracker = new Tracker();
|
|
6
6
|
let order = [];
|
|
7
7
|
const item = {};
|
|
8
|
-
tracker.
|
|
8
|
+
tracker.subscribe(item, async () => {
|
|
9
9
|
await Promise.resolve();
|
|
10
10
|
order.push("effect");
|
|
11
11
|
});
|
|
12
12
|
order.push("before");
|
|
13
|
-
await tracker.
|
|
13
|
+
await tracker.notifyWrite(item);
|
|
14
14
|
order.push("after");
|
|
15
15
|
expect(order.length).is(3);
|
|
16
16
|
expect(order[0]).is("before");
|
|
@@ -21,11 +21,11 @@ export default Science.suite({
|
|
|
21
21
|
const tracker = new Tracker();
|
|
22
22
|
const item = {};
|
|
23
23
|
// effect re-publishes the same change, creating a cycle
|
|
24
|
-
tracker.
|
|
25
|
-
await tracker.
|
|
24
|
+
tracker.subscribe(item, async () => {
|
|
25
|
+
await tracker.notifyWrite(item);
|
|
26
26
|
});
|
|
27
27
|
expect(async () => {
|
|
28
|
-
await tracker.
|
|
28
|
+
await tracker.notifyWrite(item);
|
|
29
29
|
}).throwsAsync();
|
|
30
30
|
}),
|
|
31
31
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.test.js","sourceRoot":"","sources":["../../s/tracker/tracker.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAC,MAAM,eAAe,CAAA;AACnD,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAA;AAEpC,eAAe,OAAO,CAAC,KAAK,CAAC;IAC5B,+CAA+C,EAAE,IAAI,CAAC,KAAK,IAAG,EAAE;QAC/D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;QAC7B,IAAI,KAAK,GAAa,EAAE,CAAA;QAExB,MAAM,IAAI,GAAG,EAAE,CAAA;QACf,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"tracker.test.js","sourceRoot":"","sources":["../../s/tracker/tracker.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAC,MAAM,eAAe,CAAA;AACnD,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAA;AAEpC,eAAe,OAAO,CAAC,KAAK,CAAC;IAC5B,+CAA+C,EAAE,IAAI,CAAC,KAAK,IAAG,EAAE;QAC/D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;QAC7B,IAAI,KAAK,GAAa,EAAE,CAAA;QAExB,MAAM,IAAI,GAAG,EAAE,CAAA;QACf,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YAClC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;YACvB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACrB,CAAC,CAAC,CAAA;QAEF,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACpB,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QAC/B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAEnB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC1B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;QAC7B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;QAC7B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC,CAAC;IAEF,uBAAuB,EAAE,IAAI,CAAC,KAAK,IAAG,EAAE;QACvC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;QAC7B,MAAM,IAAI,GAAG,EAAE,CAAA;QAEf,wDAAwD;QACxD,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,IAAG,EAAE;YACjC,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;QAEF,MAAM,CAAC,KAAK,IAAG,EAAE;YAChB,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QAChC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IACjB,CAAC,CAAC;CACF,CAAC,CAAA"}
|