@e280/strata 0.3.0 → 0.3.2

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 CHANGED
@@ -153,19 +153,21 @@ import {signal, effect, derived, lazy} from "@e280/strata"
153
153
  const person = snacks.lens(state => state.person)
154
154
  ```
155
155
  - you can lens another lens
156
- - **lenses provide immutable access to state**
156
+ - **lenses provide snapshot access to state**
157
157
  ```ts
158
+ // .state is a mutable snapshot with relaxed typings
158
159
  snacks.state.peanuts // 8
159
160
  person.state.name // "chase"
160
- ```
161
- - **only formal mutations can change state**
162
- ```ts
163
- snacks.state.peanuts++
161
+
162
+ // .frozen is an immutable snapshot with strict typings
163
+ snacks.frozen.peanuts // 8
164
+ snacks.frozen.peanuts++
164
165
  // ⛔ error: casual mutations forbidden
165
166
  ```
167
+ - **only formal mutations can actually change state**
166
168
  ```ts
167
169
  snacks.mutate(state => state.peanuts++)
168
- // ✅ only proper mutations can make state changes
170
+ // ✅ formal mutations to change state
169
171
 
170
172
  snacks.state.peanuts // 9
171
173
  ```
@@ -339,12 +341,18 @@ note, the *items* that the tracker tracks can be any object, or symbol.. the tra
339
341
  import * as react from "react"
340
342
  import {react as strata} from "@e280/strata"
341
343
 
342
- export const {component, useStrata} = strata(react)
344
+ export const {
345
+ component,
346
+ useStrata,
347
+ useOnce,
348
+ useSignal,
349
+ useDerived,
350
+ } = strata(react)
343
351
  ```
344
352
 
345
353
  ### ⚛️ `component` enables fully automatic reactive re-rendering
346
354
  ```ts
347
- import {component, useStrata} from "./strata.js"
355
+ import {component} from "./strata.js"
348
356
 
349
357
  const $count = signal(0)
350
358
 
@@ -356,7 +364,7 @@ export const MyCounter = component(() => {
356
364
 
357
365
  ### ⚛️ `useStrata` for a manual hands-on approach (plays nicer with hmr)
358
366
  ```ts
359
- import {component, useStrata} from "./strata.js"
367
+ import {useStrata} from "./strata.js"
360
368
 
361
369
  const $count = signal(0)
362
370
 
@@ -367,6 +375,17 @@ export const MyCounter = () => {
367
375
  }
368
376
  ```
369
377
 
378
+ ### ⚛️ `useSignal` for local component state
379
+ ```ts
380
+ import {useSignal} from "./strata.js"
381
+
382
+ export const MyCounter = () => {
383
+ const $count = useSignal(0)
384
+ const add = () => $count.value++
385
+ return <button onClick={add}>{$count()}</button>
386
+ }
387
+ ```
388
+
370
389
 
371
390
 
372
391
  <br/><br/>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@e280/strata",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "state management",
5
5
  "license": "MIT",
6
6
  "author": "Chase Moskal <chasemoskal@gmail.com>",
@@ -17,18 +17,18 @@
17
17
  "./tracker": "./x/tracker/index.js"
18
18
  },
19
19
  "scripts": {
20
- "build": "rm -rf x && mkdir x && ln -s '$(realpath node_modules)' x/node_modules && tsc",
21
- "start": "octo 'tsc -w' 'node --watch x/test.js'",
20
+ "build": "rm -rf x && mkdir x && tsc",
21
+ "dev": "octo 'node --watch x/test.js' 'tsc -w'",
22
22
  "test": "node x/test.js",
23
23
  "count": "find s -path '*/_archive' -prune -o -name '*.ts' -exec wc -l {} +"
24
24
  },
25
25
  "dependencies": {
26
- "@e280/stz": "^0.2.26"
26
+ "@e280/stz": "^0.2.29"
27
27
  },
28
28
  "devDependencies": {
29
- "@e280/octo": "^0.1.0-12",
30
- "@e280/science": "^0.1.8",
31
- "@types/node": "^25.5.0",
29
+ "@e280/octo": "^0.1.0",
30
+ "@e280/science": "^0.1.10",
31
+ "@types/node": "^25.5.2",
32
32
  "typescript": "^6.0.2"
33
33
  },
34
34
  "keywords": [
@@ -12,13 +12,17 @@ export class Chrono<State> implements LensLike<State> {
12
12
  ) {}
13
13
 
14
14
  get chronicle() {
15
- return this.basis.state
15
+ return this.basis.frozen
16
16
  }
17
17
 
18
18
  get state() {
19
19
  return this.basis.state.present
20
20
  }
21
21
 
22
+ get frozen() {
23
+ return this.basis.frozen.present
24
+ }
25
+
22
26
  get undoable() {
23
27
  return this.chronicle.past.length
24
28
  }
package/s/prism/lens.ts CHANGED
@@ -8,33 +8,47 @@ import {Immutable, LensLike, Optic} from "./types.js"
8
8
 
9
9
  /** reactive view into a state prism, with formalized mutations */
10
10
  export class Lens<State> implements LensLike<State> {
11
- on = sub<[state: Immutable<State>]>()
11
+ on = sub<[state: State]>()
12
+ onFrozen = sub<[state: Immutable<State>]>()
12
13
 
13
14
  ;[_optic]: Optic<State>
14
15
  #previous: State
15
- #immutable: CacheCell<Immutable<State>>
16
- #onPublishDebounced = microbounce(() => this.on.publish(this.state))
16
+ #stateCache: CacheCell<State>
17
+ #frozenCache: CacheCell<Immutable<State>>
18
+ #onPublishDebounced = microbounce(() => {
19
+ this.on.publish(this.state)
20
+ this.onFrozen.publish(this.frozen)
21
+ })
17
22
 
18
23
  constructor(optic: Optic<State>) {
19
24
  this[_optic] = optic
20
25
  this.#previous = deep.clone(optic.getState())
21
- this.#immutable = new CacheCell(() => immute(optic.getState()))
26
+ this.#stateCache = new CacheCell(() => deep.clone(optic.getState()))
27
+ this.#frozenCache = new CacheCell(() => immute(optic.getState()))
22
28
  }
23
29
 
24
30
  async update() {
25
31
  const state = this[_optic].getState()
26
32
  const isChanged = !deep.equal(state, this.#previous)
27
33
  if (isChanged) {
28
- this.#immutable.invalidate()
34
+ this.#stateCache.invalidate()
35
+ this.#frozenCache.invalidate()
29
36
  this.#previous = deep.clone(state)
30
37
  this.#onPublishDebounced()
31
38
  await tracker.notifyWrite(this)
32
39
  }
33
40
  }
34
41
 
42
+ /** get a snapshot of the current state. it's typed as mutable, but you should not mutate it. */
35
43
  get state() {
36
44
  tracker.notifyRead(this)
37
- return this.#immutable.get()
45
+ return this.#stateCache.get()
46
+ }
47
+
48
+ /** get an immutable readonly snapshot of the current state. */
49
+ get frozen() {
50
+ tracker.notifyRead(this)
51
+ return this.#frozenCache.get()
38
52
  }
39
53
 
40
54
  async mutate<R>(fn: (state: State) => R) {
package/s/prism/test.ts CHANGED
@@ -33,30 +33,30 @@ export default suite({
33
33
  "get state": test(async() => {
34
34
  const prism = new Prism({data: {count: 1}})
35
35
  const lens = prism.lens(s => s.data)
36
- expect(lens.state.count).is(1)
36
+ expect(lens.frozen.count).is(1)
37
37
  }),
38
38
 
39
39
  "state is immutable": test(async() => {
40
40
  const prism = new Prism({data: {count: 1}})
41
41
  const lens = prism.lens(s => s.data)
42
- expect(() => (lens.state as any).count++).throws()
42
+ expect(() => (lens.frozen as any).count++).throws()
43
43
  }),
44
44
 
45
45
  "proper mutation": test(async() => {
46
46
  const prism = new Prism({data: {count: 1}})
47
47
  const lens = prism.lens(s => s.data)
48
48
  await lens.mutate(s => s.count++)
49
- expect(lens.state.count).is(2)
49
+ expect(lens.frozen.count).is(2)
50
50
  await lens.mutate(s => s.count++)
51
- expect(lens.state.count).is(3)
51
+ expect(lens.frozen.count).is(3)
52
52
  }),
53
53
 
54
54
  "state after mutation is frozen": test(async() => {
55
55
  const prism = new Prism({data: {count: 1}})
56
56
  const lens = prism.lens(s => s)
57
57
  await lens.mutate(s => s.data = {count: 2})
58
- expect(lens.state.data.count).is(2)
59
- expect(() => (lens.state.data as any).count++).throws()
58
+ expect(lens.frozen.data.count).is(2)
59
+ expect(() => (lens.frozen.data as any).count++).throws()
60
60
  }),
61
61
 
62
62
  "effect reacts": test(async() => {
@@ -64,7 +64,7 @@ export default suite({
64
64
  const lens = prism.lens(s => s.data)
65
65
  let happenings = 0
66
66
  const stop = effect(() => {
67
- void lens.state.count
67
+ void lens.frozen.count
68
68
  happenings++
69
69
  })
70
70
  await lens.mutate(s => s.count++)
@@ -92,7 +92,7 @@ export default suite({
92
92
  const stop = lens.on(() => void happenings++)
93
93
  await lens.mutate(s => s.array.push("lmao"))
94
94
  expect(happenings).is(1)
95
- expect(lens.state.array.length).is(2)
95
+ expect(lens.frozen.array.length).is(2)
96
96
  stop()
97
97
  }),
98
98
 
@@ -100,9 +100,9 @@ export default suite({
100
100
  const prism = new Prism({data: {count: 1}})
101
101
  const lens = prism.lens(s => s.data)
102
102
  const p1 = lens.mutate(s => s.count++)
103
- expect(lens.state.count).is(2)
103
+ expect(lens.frozen.count).is(2)
104
104
  const p2 = lens.mutate(s => s.count++)
105
- expect(lens.state.count).is(3)
105
+ expect(lens.frozen.count).is(3)
106
106
  await p1
107
107
  await p2
108
108
  }),
@@ -111,9 +111,9 @@ export default suite({
111
111
  type S = {a?: {b: {count: number}}}
112
112
  const prism = new Prism<S>({a: {b: {count: 1}}})
113
113
  const lens = prism.lens(s => s.a?.b)
114
- expect(lens.state?.count).is(1)
114
+ expect(lens.frozen?.count).is(1)
115
115
  await prism.set({a: undefined})
116
- expect(lens.state?.count).is(undefined)
116
+ expect(lens.frozen?.count).is(undefined)
117
117
  }),
118
118
 
119
119
  "deep composition": test(async() => {
@@ -121,8 +121,8 @@ export default suite({
121
121
  const lensA = prism.lens(s => s.a)
122
122
  const lensB = lensA.lens(s => s.b)
123
123
  expect(prism.get().a.b.count).is(1)
124
- expect(lensA.state.b.count).is(1)
125
- expect(lensB.state.count).is(1)
124
+ expect(lensA.frozen.b.count).is(1)
125
+ expect(lensB.frozen.count).is(1)
126
126
  }),
127
127
 
128
128
  "deep mutations": test(async() => {
@@ -131,12 +131,12 @@ export default suite({
131
131
  const lensB = lensA.lens(s => s.b)
132
132
  await lensB.mutate(s => s.count++)
133
133
  expect(prism.get().a.b.count).is(2)
134
- expect(lensA.state.b.count).is(2)
135
- expect(lensB.state.count).is(2)
134
+ expect(lensA.frozen.b.count).is(2)
135
+ expect(lensB.frozen.count).is(2)
136
136
  await lensA.mutate(s => s.b = {count: 3})
137
137
  expect(prism.get().a.b.count).is(3)
138
- expect(lensA.state.b.count).is(3)
139
- expect(lensB.state.count).is(3)
138
+ expect(lensA.frozen.b.count).is(3)
139
+ expect(lensB.frozen.count).is(3)
140
140
  }),
141
141
 
142
142
  "outside mutations ignored": test(async() => {
@@ -161,11 +161,11 @@ export default suite({
161
161
  let happeningsA = 0
162
162
  let happeningsB = 0
163
163
  const stopA = effect(() => {
164
- void lensA.state.count
164
+ void lensA.frozen.count
165
165
  happeningsA++
166
166
  })
167
167
  const stopB = effect(() => {
168
- void lensB.state.count
168
+ void lensB.frozen.count
169
169
  happeningsB++
170
170
  })
171
171
  await lensA.mutate(s => s.count++)
@@ -181,7 +181,7 @@ export default suite({
181
181
  const prism = new Prism({data: chronicle({count: 1})})
182
182
  const lens = prism.lens(s => s.data)
183
183
  const chrono = new Chrono(64, lens)
184
- expect(chrono.state.count).is(1)
184
+ expect(chrono.frozen.count).is(1)
185
185
  }),
186
186
 
187
187
  "mutation": test(async() => {
@@ -189,9 +189,9 @@ export default suite({
189
189
  const lens = prism.lens(s => s.data)
190
190
  const chrono = new Chrono(64, lens)
191
191
  await chrono.mutate(s => s.count++)
192
- expect(chrono.state.count).is(2)
192
+ expect(chrono.frozen.count).is(2)
193
193
  await chrono.mutate(s => s.count++)
194
- expect(chrono.state.count).is(3)
194
+ expect(chrono.frozen.count).is(3)
195
195
  }),
196
196
 
197
197
  "undoable/redoable": test(async() => {
@@ -221,10 +221,10 @@ export default suite({
221
221
  const chrono = new Chrono(64, lens)
222
222
 
223
223
  await chrono.mutate(s => s.count++)
224
- expect(chrono.state.count).is(2)
224
+ expect(chrono.frozen.count).is(2)
225
225
 
226
226
  await chrono.undo()
227
- expect(chrono.state.count).is(1)
227
+ expect(chrono.frozen.count).is(1)
228
228
  }),
229
229
 
230
230
  "sync undo": test(async() => {
@@ -233,10 +233,10 @@ export default suite({
233
233
  const chrono = new Chrono(64, lens)
234
234
 
235
235
  chrono.mutate(s => s.count++)
236
- expect(chrono.state.count).is(2)
236
+ expect(chrono.frozen.count).is(2)
237
237
 
238
238
  chrono.undo()
239
- expect(chrono.state.count).is(1)
239
+ expect(chrono.frozen.count).is(1)
240
240
  }),
241
241
 
242
242
  "redo": test(async() => {
@@ -245,13 +245,13 @@ export default suite({
245
245
  const chrono = new Chrono(64, lens)
246
246
 
247
247
  await chrono.mutate(s => s.count++)
248
- expect(chrono.state.count).is(2)
248
+ expect(chrono.frozen.count).is(2)
249
249
 
250
250
  await chrono.undo()
251
- expect(chrono.state.count).is(1)
251
+ expect(chrono.frozen.count).is(1)
252
252
 
253
253
  await chrono.redo()
254
- expect(chrono.state.count).is(2)
254
+ expect(chrono.frozen.count).is(2)
255
255
  }),
256
256
 
257
257
  "undo/redo is orderly": test(async() => {
@@ -262,28 +262,28 @@ export default suite({
262
262
  await chrono.mutate(s => s.count++)
263
263
  await chrono.mutate(s => s.count++)
264
264
  await chrono.mutate(s => s.count++)
265
- expect(chrono.state.count).is(4)
265
+ expect(chrono.frozen.count).is(4)
266
266
 
267
267
  await chrono.undo()
268
- expect(chrono.state.count).is(3)
268
+ expect(chrono.frozen.count).is(3)
269
269
 
270
270
  await chrono.undo()
271
- expect(chrono.state.count).is(2)
271
+ expect(chrono.frozen.count).is(2)
272
272
 
273
273
  await chrono.redo()
274
- expect(chrono.state.count).is(3)
274
+ expect(chrono.frozen.count).is(3)
275
275
 
276
276
  await chrono.redo()
277
- expect(chrono.state.count).is(4)
277
+ expect(chrono.frozen.count).is(4)
278
278
 
279
279
  await chrono.undo()
280
- expect(chrono.state.count).is(3)
280
+ expect(chrono.frozen.count).is(3)
281
281
 
282
282
  await chrono.undo()
283
- expect(chrono.state.count).is(2)
283
+ expect(chrono.frozen.count).is(2)
284
284
 
285
285
  await chrono.undo()
286
- expect(chrono.state.count).is(1)
286
+ expect(chrono.frozen.count).is(1)
287
287
  }),
288
288
 
289
289
  "undo nothing does nothing": test(async() => {
@@ -291,7 +291,7 @@ export default suite({
291
291
  const lens = prism.lens(s => s.data)
292
292
  const chrono = new Chrono(64, lens)
293
293
  await chrono.undo()
294
- expect(chrono.state.count).is(1)
294
+ expect(chrono.frozen.count).is(1)
295
295
  }),
296
296
 
297
297
  "redo nothing does nothing": test(async() => {
@@ -299,7 +299,7 @@ export default suite({
299
299
  const lens = prism.lens(s => s.data)
300
300
  const chrono = new Chrono(64, lens)
301
301
  await chrono.redo()
302
- expect(chrono.state.count).is(1)
302
+ expect(chrono.frozen.count).is(1)
303
303
  }),
304
304
 
305
305
  "undo 2x": test(async() => {
@@ -309,9 +309,9 @@ export default suite({
309
309
  await chrono.mutate(s => s.count++)
310
310
  await chrono.mutate(s => s.count++)
311
311
  await chrono.mutate(s => s.count++)
312
- expect(chrono.state.count).is(4)
312
+ expect(chrono.frozen.count).is(4)
313
313
  await chrono.undo(2)
314
- expect(chrono.state.count).is(2)
314
+ expect(chrono.frozen.count).is(2)
315
315
  }),
316
316
 
317
317
  "redo 2x": test(async() => {
@@ -321,22 +321,22 @@ export default suite({
321
321
  await chrono.mutate(s => s.count++)
322
322
  await chrono.mutate(s => s.count++)
323
323
  await chrono.mutate(s => s.count++)
324
- expect(chrono.state.count).is(4)
324
+ expect(chrono.frozen.count).is(4)
325
325
  await chrono.undo(2)
326
- expect(chrono.state.count).is(2)
326
+ expect(chrono.frozen.count).is(2)
327
327
  await chrono.redo(2)
328
- expect(chrono.state.count).is(4)
328
+ expect(chrono.frozen.count).is(4)
329
329
  }),
330
330
 
331
331
  "sublens mutations are undoable": test(async() => {
332
332
  const prism = new Prism({data: chronicle({a: {count: 1}})})
333
333
  const chrono = new Chrono(64, prism.lens(s => s.data))
334
334
  const sublens = chrono.lens(s => s.a)
335
- expect(sublens.state.count).is(1)
335
+ expect(sublens.frozen.count).is(1)
336
336
  await sublens.mutate(s => s.count++)
337
- expect(sublens.state.count).is(2)
337
+ expect(sublens.frozen.count).is(2)
338
338
  await chrono.undo()
339
- expect(sublens.state.count).is(1)
339
+ expect(sublens.frozen.count).is(1)
340
340
  }),
341
341
  }),
342
342
  })
package/s/prism/types.ts CHANGED
@@ -2,7 +2,8 @@
2
2
  import {Lens} from "./lens.js"
3
3
 
4
4
  export type LensLike<State> = {
5
- readonly state: Immutable<State>
5
+ readonly state: State
6
+ readonly frozen: Immutable<State>
6
7
  mutate<R>(fn: (state: State) => R): Promise<R>
7
8
  lens<S2>(selector: (state: State) => S2): Lens<S2>
8
9
  }
@@ -1,7 +1,7 @@
1
1
 
2
- import {EzStore} from "./types.js"
2
+ import {Cubby} from "./types.js"
3
3
 
4
- export class LocalStore<X> implements EzStore<X> {
4
+ export class LocalStore<X> implements Cubby<X> {
5
5
  constructor(
6
6
  private key: string,
7
7
  private storage: Storage = window.localStorage,
@@ -6,14 +6,17 @@ export type Versioned<State> = {
6
6
  version: number
7
7
  }
8
8
 
9
- export type EzStore<X> = {
9
+ export type Cubby<X> = {
10
10
  get(): Promise<X | undefined>
11
11
  set(data: X | undefined): Promise<void>
12
12
  }
13
13
 
14
+ /** @deprecated renamed to `Cubby` */
15
+ export type EzStore<X> = Cubby<X>
16
+
14
17
  export type VaultOptions<State> = {
15
18
  version: number
16
19
  prism: Prism<State>
17
- store: EzStore<Versioned<State>>
20
+ store: Cubby<Versioned<State>>
18
21
  }
19
22
 
@@ -1,9 +1,15 @@
1
1
 
2
2
  import {tracker} from "../tracker.js"
3
+ import {signal} from "../../signals/signal/fn.js"
4
+ import {derived} from "../../signals/derived/fn.js"
5
+ import {SignalOptions} from "../../signals/types.js"
3
6
 
4
7
  export function react(react: {
5
- useState: <X>(x: X) => [value: X, set: (fn: (x: X) => void) => void]
6
- useEffect: (fn: () => void) => void
8
+ useEffect: (fn: () => void | (() => void), deps?: unknown[]) => void
9
+ useState: <X>(x: X | (() => X)) => [
10
+ value: X,
11
+ set: (value: X | ((x: X) => X)) => void
12
+ ]
7
13
  }) {
8
14
 
9
15
  const useStrata = <X>(fn: () => X) => {
@@ -20,23 +26,28 @@ export function react(react: {
20
26
  }
21
27
 
22
28
  const component = <P extends object, R>(render: (props: P) => R) => {
23
- function c(props: P) {
24
- const [, setTick] = react.useState(0)
25
- const {seen, result} = tracker.observe(() => render(props))
29
+ const c = (props: P) => useStrata(() => render(props))
30
+ c.displayName = (render as any).displayName ?? render.name ?? "Component"
31
+ return c
32
+ }
26
33
 
27
- react.useEffect(() => {
28
- const rerender = async() => setTick(tick => tick + 1)
29
- const stoppers = [...seen].map(item => tracker.subscribe(item, rerender))
30
- return () => stoppers.forEach(stop => stop())
31
- })
34
+ const useOnce = <X>(fn: () => X) => {
35
+ const [value] = react.useState(fn)
36
+ return value
37
+ }
32
38
 
33
- return result
34
- }
39
+ const useSignal = <X>(value: X, options?: Partial<SignalOptions>) => {
40
+ const $signal = useOnce(() => signal(value, options))
41
+ void useStrata(() => $signal())
42
+ return $signal
43
+ }
35
44
 
36
- c.displayName = (render as any).displayName ?? render.name ?? "Component"
37
- return c
45
+ const useDerived = <X>(formula: () => X, options?: Partial<SignalOptions>) => {
46
+ const $derived = useOnce(() => derived(formula, options))
47
+ void useStrata(() => $derived())
48
+ return $derived
38
49
  }
39
50
 
40
- return {component, useStrata}
51
+ return {component, useStrata, useOnce, useSignal, useDerived}
41
52
  }
42
53
 
@@ -11,7 +11,8 @@ export declare class Chrono<State> implements LensLike<State> {
11
11
  readonly present: import("../types.js").Immutable<State>;
12
12
  readonly future: readonly import("../types.js").Immutable<State>[];
13
13
  };
14
- get state(): import("../types.js").Immutable<State>;
14
+ get state(): State;
15
+ get frozen(): import("../types.js").Immutable<State>;
15
16
  get undoable(): number;
16
17
  get redoable(): number;
17
18
  /** progress forwards, depositing history into the past */
@@ -9,11 +9,14 @@ export class Chrono {
9
9
  this.basis = basis;
10
10
  }
11
11
  get chronicle() {
12
- return this.basis.state;
12
+ return this.basis.frozen;
13
13
  }
14
14
  get state() {
15
15
  return this.basis.state.present;
16
16
  }
17
+ get frozen() {
18
+ return this.basis.frozen.present;
19
+ }
17
20
  get undoable() {
18
21
  return this.chronicle.past.length;
19
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chrono.js","sourceRoot":"","sources":["../../../s/prism/chrono/chrono.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chrono.js","sourceRoot":"","sources":["../../../s/prism/chrono/chrono.ts"],"names":[],"mappings":"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"}
package/x/prism/lens.d.ts CHANGED
@@ -3,11 +3,15 @@ import { Immutable, LensLike, Optic } from "./types.js";
3
3
  /** reactive view into a state prism, with formalized mutations */
4
4
  export declare class Lens<State> implements LensLike<State> {
5
5
  #private;
6
- on: import("@e280/stz").Sub<[state: Immutable<State>]>;
6
+ on: import("@e280/stz").Sub<[state: State]>;
7
+ onFrozen: import("@e280/stz").Sub<[state: Immutable<State>]>;
7
8
  [_optic]: Optic<State>;
8
9
  constructor(optic: Optic<State>);
9
10
  update(): Promise<void>;
10
- get state(): Immutable<State>;
11
+ /** get a snapshot of the current state. it's typed as mutable, but you should not mutate it. */
12
+ get state(): State;
13
+ /** get an immutable readonly snapshot of the current state. */
14
+ get frozen(): Immutable<State>;
11
15
  mutate<R>(fn: (state: State) => R): Promise<R>;
12
16
  lens<State2>(selector: (state: State) => State2): Lens<State2>;
13
17
  }
package/x/prism/lens.js CHANGED
@@ -6,28 +6,41 @@ import { CacheCell } from "./utils/cache-cell.js";
6
6
  /** reactive view into a state prism, with formalized mutations */
7
7
  export class Lens {
8
8
  on = sub();
9
+ onFrozen = sub();
9
10
  [_optic];
10
11
  #previous;
11
- #immutable;
12
- #onPublishDebounced = microbounce(() => this.on.publish(this.state));
12
+ #stateCache;
13
+ #frozenCache;
14
+ #onPublishDebounced = microbounce(() => {
15
+ this.on.publish(this.state);
16
+ this.onFrozen.publish(this.frozen);
17
+ });
13
18
  constructor(optic) {
14
19
  this[_optic] = optic;
15
20
  this.#previous = deep.clone(optic.getState());
16
- this.#immutable = new CacheCell(() => immute(optic.getState()));
21
+ this.#stateCache = new CacheCell(() => deep.clone(optic.getState()));
22
+ this.#frozenCache = new CacheCell(() => immute(optic.getState()));
17
23
  }
18
24
  async update() {
19
25
  const state = this[_optic].getState();
20
26
  const isChanged = !deep.equal(state, this.#previous);
21
27
  if (isChanged) {
22
- this.#immutable.invalidate();
28
+ this.#stateCache.invalidate();
29
+ this.#frozenCache.invalidate();
23
30
  this.#previous = deep.clone(state);
24
31
  this.#onPublishDebounced();
25
32
  await tracker.notifyWrite(this);
26
33
  }
27
34
  }
35
+ /** get a snapshot of the current state. it's typed as mutable, but you should not mutate it. */
28
36
  get state() {
29
37
  tracker.notifyRead(this);
30
- return this.#immutable.get();
38
+ return this.#stateCache.get();
39
+ }
40
+ /** get an immutable readonly snapshot of the current state. */
41
+ get frozen() {
42
+ tracker.notifyRead(this);
43
+ return this.#frozenCache.get();
31
44
  }
32
45
  async mutate(fn) {
33
46
  return this[_optic].mutate(fn);
@@ -1 +1 @@
1
- {"version":3,"file":"lens.js","sourceRoot":"","sources":["../../s/prism/lens.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAC,MAAM,WAAW,CAAA;AAChD,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAC,MAAM,EAAC,MAAM,yBAAyB,CAAA;AAC9C,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAA;AAG/C,kEAAkE;AAClE,MAAM,OAAO,IAAI;IAChB,EAAE,GAAG,GAAG,EAA6B,CAEpC;IAAA,CAAC,MAAM,CAAC,CAAc;IACvB,SAAS,CAAO;IAChB,UAAU,CAA6B;IACvC,mBAAmB,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAEpE,YAAY,KAAmB;QAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;IAChE,CAAC;IAED,KAAK,CAAC,MAAM;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;QACrC,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QACpD,IAAI,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAA;YAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAClC,IAAI,CAAC,mBAAmB,EAAE,CAAA;YAC1B,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QAChC,CAAC;IACF,CAAC;IAED,IAAI,KAAK;QACR,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAI,EAAuB;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC/B,CAAC;IAED,IAAI,CAAS,QAAkC;QAC9C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAS;YAC7B,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;YACjD,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/D,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY;SACvC,CAAC,CAAA;QACF,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QAC/B,OAAO,IAAI,CAAA;IACZ,CAAC;CACD"}
1
+ {"version":3,"file":"lens.js","sourceRoot":"","sources":["../../s/prism/lens.ts"],"names":[],"mappings":"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"}
package/x/prism/test.js CHANGED
@@ -28,34 +28,34 @@ export default suite({
28
28
  "get state": test(async () => {
29
29
  const prism = new Prism({ data: { count: 1 } });
30
30
  const lens = prism.lens(s => s.data);
31
- expect(lens.state.count).is(1);
31
+ expect(lens.frozen.count).is(1);
32
32
  }),
33
33
  "state is immutable": test(async () => {
34
34
  const prism = new Prism({ data: { count: 1 } });
35
35
  const lens = prism.lens(s => s.data);
36
- expect(() => lens.state.count++).throws();
36
+ expect(() => lens.frozen.count++).throws();
37
37
  }),
38
38
  "proper mutation": test(async () => {
39
39
  const prism = new Prism({ data: { count: 1 } });
40
40
  const lens = prism.lens(s => s.data);
41
41
  await lens.mutate(s => s.count++);
42
- expect(lens.state.count).is(2);
42
+ expect(lens.frozen.count).is(2);
43
43
  await lens.mutate(s => s.count++);
44
- expect(lens.state.count).is(3);
44
+ expect(lens.frozen.count).is(3);
45
45
  }),
46
46
  "state after mutation is frozen": test(async () => {
47
47
  const prism = new Prism({ data: { count: 1 } });
48
48
  const lens = prism.lens(s => s);
49
49
  await lens.mutate(s => s.data = { count: 2 });
50
- expect(lens.state.data.count).is(2);
51
- expect(() => lens.state.data.count++).throws();
50
+ expect(lens.frozen.data.count).is(2);
51
+ expect(() => lens.frozen.data.count++).throws();
52
52
  }),
53
53
  "effect reacts": test(async () => {
54
54
  const prism = new Prism({ data: { count: 1 } });
55
55
  const lens = prism.lens(s => s.data);
56
56
  let happenings = 0;
57
57
  const stop = effect(() => {
58
- void lens.state.count;
58
+ void lens.frozen.count;
59
59
  happenings++;
60
60
  });
61
61
  await lens.mutate(s => s.count++);
@@ -81,33 +81,33 @@ export default suite({
81
81
  const stop = lens.on(() => void happenings++);
82
82
  await lens.mutate(s => s.array.push("lmao"));
83
83
  expect(happenings).is(1);
84
- expect(lens.state.array.length).is(2);
84
+ expect(lens.frozen.array.length).is(2);
85
85
  stop();
86
86
  }),
87
87
  "sync coherence": test(async () => {
88
88
  const prism = new Prism({ data: { count: 1 } });
89
89
  const lens = prism.lens(s => s.data);
90
90
  const p1 = lens.mutate(s => s.count++);
91
- expect(lens.state.count).is(2);
91
+ expect(lens.frozen.count).is(2);
92
92
  const p2 = lens.mutate(s => s.count++);
93
- expect(lens.state.count).is(3);
93
+ expect(lens.frozen.count).is(3);
94
94
  await p1;
95
95
  await p2;
96
96
  }),
97
97
  "nullable selector": test(async () => {
98
98
  const prism = new Prism({ a: { b: { count: 1 } } });
99
99
  const lens = prism.lens(s => s.a?.b);
100
- expect(lens.state?.count).is(1);
100
+ expect(lens.frozen?.count).is(1);
101
101
  await prism.set({ a: undefined });
102
- expect(lens.state?.count).is(undefined);
102
+ expect(lens.frozen?.count).is(undefined);
103
103
  }),
104
104
  "deep composition": test(async () => {
105
105
  const prism = new Prism({ a: { b: { count: 1 } } });
106
106
  const lensA = prism.lens(s => s.a);
107
107
  const lensB = lensA.lens(s => s.b);
108
108
  expect(prism.get().a.b.count).is(1);
109
- expect(lensA.state.b.count).is(1);
110
- expect(lensB.state.count).is(1);
109
+ expect(lensA.frozen.b.count).is(1);
110
+ expect(lensB.frozen.count).is(1);
111
111
  }),
112
112
  "deep mutations": test(async () => {
113
113
  const prism = new Prism({ a: { b: { count: 1 } } });
@@ -115,12 +115,12 @@ export default suite({
115
115
  const lensB = lensA.lens(s => s.b);
116
116
  await lensB.mutate(s => s.count++);
117
117
  expect(prism.get().a.b.count).is(2);
118
- expect(lensA.state.b.count).is(2);
119
- expect(lensB.state.count).is(2);
118
+ expect(lensA.frozen.b.count).is(2);
119
+ expect(lensB.frozen.count).is(2);
120
120
  await lensA.mutate(s => s.b = { count: 3 });
121
121
  expect(prism.get().a.b.count).is(3);
122
- expect(lensA.state.b.count).is(3);
123
- expect(lensB.state.count).is(3);
122
+ expect(lensA.frozen.b.count).is(3);
123
+ expect(lensB.frozen.count).is(3);
124
124
  }),
125
125
  "outside mutations ignored": test(async () => {
126
126
  const prism = new Prism({ a: { count: 1 }, b: { count: 101 } });
@@ -143,11 +143,11 @@ export default suite({
143
143
  let happeningsA = 0;
144
144
  let happeningsB = 0;
145
145
  const stopA = effect(() => {
146
- void lensA.state.count;
146
+ void lensA.frozen.count;
147
147
  happeningsA++;
148
148
  });
149
149
  const stopB = effect(() => {
150
- void lensB.state.count;
150
+ void lensB.frozen.count;
151
151
  happeningsB++;
152
152
  });
153
153
  await lensA.mutate(s => s.count++);
@@ -162,16 +162,16 @@ export default suite({
162
162
  const prism = new Prism({ data: chronicle({ count: 1 }) });
163
163
  const lens = prism.lens(s => s.data);
164
164
  const chrono = new Chrono(64, lens);
165
- expect(chrono.state.count).is(1);
165
+ expect(chrono.frozen.count).is(1);
166
166
  }),
167
167
  "mutation": test(async () => {
168
168
  const prism = new Prism({ data: chronicle({ count: 1 }) });
169
169
  const lens = prism.lens(s => s.data);
170
170
  const chrono = new Chrono(64, lens);
171
171
  await chrono.mutate(s => s.count++);
172
- expect(chrono.state.count).is(2);
172
+ expect(chrono.frozen.count).is(2);
173
173
  await chrono.mutate(s => s.count++);
174
- expect(chrono.state.count).is(3);
174
+ expect(chrono.frozen.count).is(3);
175
175
  }),
176
176
  "undoable/redoable": test(async () => {
177
177
  const prism = new Prism({ data: chronicle({ count: 1 }) });
@@ -198,29 +198,29 @@ export default suite({
198
198
  const lens = prism.lens(s => s.data);
199
199
  const chrono = new Chrono(64, lens);
200
200
  await chrono.mutate(s => s.count++);
201
- expect(chrono.state.count).is(2);
201
+ expect(chrono.frozen.count).is(2);
202
202
  await chrono.undo();
203
- expect(chrono.state.count).is(1);
203
+ expect(chrono.frozen.count).is(1);
204
204
  }),
205
205
  "sync undo": test(async () => {
206
206
  const prism = new Prism({ data: chronicle({ count: 1 }) });
207
207
  const lens = prism.lens(s => s.data);
208
208
  const chrono = new Chrono(64, lens);
209
209
  chrono.mutate(s => s.count++);
210
- expect(chrono.state.count).is(2);
210
+ expect(chrono.frozen.count).is(2);
211
211
  chrono.undo();
212
- expect(chrono.state.count).is(1);
212
+ expect(chrono.frozen.count).is(1);
213
213
  }),
214
214
  "redo": test(async () => {
215
215
  const prism = new Prism({ data: chronicle({ count: 1 }) });
216
216
  const lens = prism.lens(s => s.data);
217
217
  const chrono = new Chrono(64, lens);
218
218
  await chrono.mutate(s => s.count++);
219
- expect(chrono.state.count).is(2);
219
+ expect(chrono.frozen.count).is(2);
220
220
  await chrono.undo();
221
- expect(chrono.state.count).is(1);
221
+ expect(chrono.frozen.count).is(1);
222
222
  await chrono.redo();
223
- expect(chrono.state.count).is(2);
223
+ expect(chrono.frozen.count).is(2);
224
224
  }),
225
225
  "undo/redo is orderly": test(async () => {
226
226
  const prism = new Prism({ data: chronicle({ count: 1 }) });
@@ -229,35 +229,35 @@ export default suite({
229
229
  await chrono.mutate(s => s.count++);
230
230
  await chrono.mutate(s => s.count++);
231
231
  await chrono.mutate(s => s.count++);
232
- expect(chrono.state.count).is(4);
232
+ expect(chrono.frozen.count).is(4);
233
233
  await chrono.undo();
234
- expect(chrono.state.count).is(3);
234
+ expect(chrono.frozen.count).is(3);
235
235
  await chrono.undo();
236
- expect(chrono.state.count).is(2);
236
+ expect(chrono.frozen.count).is(2);
237
237
  await chrono.redo();
238
- expect(chrono.state.count).is(3);
238
+ expect(chrono.frozen.count).is(3);
239
239
  await chrono.redo();
240
- expect(chrono.state.count).is(4);
240
+ expect(chrono.frozen.count).is(4);
241
241
  await chrono.undo();
242
- expect(chrono.state.count).is(3);
242
+ expect(chrono.frozen.count).is(3);
243
243
  await chrono.undo();
244
- expect(chrono.state.count).is(2);
244
+ expect(chrono.frozen.count).is(2);
245
245
  await chrono.undo();
246
- expect(chrono.state.count).is(1);
246
+ expect(chrono.frozen.count).is(1);
247
247
  }),
248
248
  "undo nothing does nothing": test(async () => {
249
249
  const prism = new Prism({ data: chronicle({ count: 1 }) });
250
250
  const lens = prism.lens(s => s.data);
251
251
  const chrono = new Chrono(64, lens);
252
252
  await chrono.undo();
253
- expect(chrono.state.count).is(1);
253
+ expect(chrono.frozen.count).is(1);
254
254
  }),
255
255
  "redo nothing does nothing": test(async () => {
256
256
  const prism = new Prism({ data: chronicle({ count: 1 }) });
257
257
  const lens = prism.lens(s => s.data);
258
258
  const chrono = new Chrono(64, lens);
259
259
  await chrono.redo();
260
- expect(chrono.state.count).is(1);
260
+ expect(chrono.frozen.count).is(1);
261
261
  }),
262
262
  "undo 2x": test(async () => {
263
263
  const prism = new Prism({ data: chronicle({ count: 1 }) });
@@ -266,9 +266,9 @@ export default suite({
266
266
  await chrono.mutate(s => s.count++);
267
267
  await chrono.mutate(s => s.count++);
268
268
  await chrono.mutate(s => s.count++);
269
- expect(chrono.state.count).is(4);
269
+ expect(chrono.frozen.count).is(4);
270
270
  await chrono.undo(2);
271
- expect(chrono.state.count).is(2);
271
+ expect(chrono.frozen.count).is(2);
272
272
  }),
273
273
  "redo 2x": test(async () => {
274
274
  const prism = new Prism({ data: chronicle({ count: 1 }) });
@@ -277,21 +277,21 @@ export default suite({
277
277
  await chrono.mutate(s => s.count++);
278
278
  await chrono.mutate(s => s.count++);
279
279
  await chrono.mutate(s => s.count++);
280
- expect(chrono.state.count).is(4);
280
+ expect(chrono.frozen.count).is(4);
281
281
  await chrono.undo(2);
282
- expect(chrono.state.count).is(2);
282
+ expect(chrono.frozen.count).is(2);
283
283
  await chrono.redo(2);
284
- expect(chrono.state.count).is(4);
284
+ expect(chrono.frozen.count).is(4);
285
285
  }),
286
286
  "sublens mutations are undoable": test(async () => {
287
287
  const prism = new Prism({ data: chronicle({ a: { count: 1 } }) });
288
288
  const chrono = new Chrono(64, prism.lens(s => s.data));
289
289
  const sublens = chrono.lens(s => s.a);
290
- expect(sublens.state.count).is(1);
290
+ expect(sublens.frozen.count).is(1);
291
291
  await sublens.mutate(s => s.count++);
292
- expect(sublens.state.count).is(2);
292
+ expect(sublens.frozen.count).is(2);
293
293
  await chrono.undo();
294
- expect(sublens.state.count).is(1);
294
+ expect(sublens.frozen.count).is(1);
295
295
  }),
296
296
  }),
297
297
  });
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../../s/prism/test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../s/prism/test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { Lens } from "./lens.js";
2
2
  export type LensLike<State> = {
3
- readonly state: Immutable<State>;
3
+ readonly state: State;
4
+ readonly frozen: Immutable<State>;
4
5
  mutate<R>(fn: (state: State) => R): Promise<R>;
5
6
  lens<S2>(selector: (state: State) => S2): Lens<S2>;
6
7
  };
@@ -1,5 +1,5 @@
1
- import { EzStore } from "./types.js";
2
- export declare class LocalStore<X> implements EzStore<X> {
1
+ import { Cubby } from "./types.js";
2
+ export declare class LocalStore<X> implements Cubby<X> {
3
3
  private key;
4
4
  private storage;
5
5
  constructor(key: string, storage?: Storage);
@@ -3,12 +3,14 @@ export type Versioned<State> = {
3
3
  state: State;
4
4
  version: number;
5
5
  };
6
- export type EzStore<X> = {
6
+ export type Cubby<X> = {
7
7
  get(): Promise<X | undefined>;
8
8
  set(data: X | undefined): Promise<void>;
9
9
  };
10
+ /** @deprecated renamed to `Cubby` */
11
+ export type EzStore<X> = Cubby<X>;
10
12
  export type VaultOptions<State> = {
11
13
  version: number;
12
14
  prism: Prism<State>;
13
- store: EzStore<Versioned<State>>;
15
+ store: Cubby<Versioned<State>>;
14
16
  };
@@ -1,10 +1,17 @@
1
+ import { SignalOptions } from "../../signals/types.js";
1
2
  export declare function react(react: {
2
- useState: <X>(x: X) => [value: X, set: (fn: (x: X) => void) => void];
3
- useEffect: (fn: () => void) => void;
3
+ useEffect: (fn: () => void | (() => void), deps?: unknown[]) => void;
4
+ useState: <X>(x: X | (() => X)) => [
5
+ value: X,
6
+ set: (value: X | ((x: X) => X)) => void
7
+ ];
4
8
  }): {
5
9
  component: <P extends object, R>(render: (props: P) => R) => {
6
10
  (props: P): R;
7
11
  displayName: any;
8
12
  };
9
13
  useStrata: <X>(fn: () => X) => X;
14
+ useOnce: <X>(fn: () => X) => X;
15
+ useSignal: <X>(value: X, options?: Partial<SignalOptions>) => import("../../index.js").Signal<X>;
16
+ useDerived: <X>(formula: () => X, options?: Partial<SignalOptions>) => import("../../index.js").Derived<X>;
10
17
  };
@@ -1,4 +1,6 @@
1
1
  import { tracker } from "../tracker.js";
2
+ import { signal } from "../../signals/signal/fn.js";
3
+ import { derived } from "../../signals/derived/fn.js";
2
4
  export function react(react) {
3
5
  const useStrata = (fn) => {
4
6
  const [, setTick] = react.useState(0);
@@ -11,19 +13,24 @@ export function react(react) {
11
13
  return result;
12
14
  };
13
15
  const component = (render) => {
14
- function c(props) {
15
- const [, setTick] = react.useState(0);
16
- const { seen, result } = tracker.observe(() => render(props));
17
- react.useEffect(() => {
18
- const rerender = async () => setTick(tick => tick + 1);
19
- const stoppers = [...seen].map(item => tracker.subscribe(item, rerender));
20
- return () => stoppers.forEach(stop => stop());
21
- });
22
- return result;
23
- }
16
+ const c = (props) => useStrata(() => render(props));
24
17
  c.displayName = render.displayName ?? render.name ?? "Component";
25
18
  return c;
26
19
  };
27
- return { component, useStrata };
20
+ const useOnce = (fn) => {
21
+ const [value] = react.useState(fn);
22
+ return value;
23
+ };
24
+ const useSignal = (value, options) => {
25
+ const $signal = useOnce(() => signal(value, options));
26
+ void useStrata(() => $signal());
27
+ return $signal;
28
+ };
29
+ const useDerived = (formula, options) => {
30
+ const $derived = useOnce(() => derived(formula, options));
31
+ void useStrata(() => $derived());
32
+ return $derived;
33
+ };
34
+ return { component, useStrata, useOnce, useSignal, useDerived };
28
35
  }
29
36
  //# sourceMappingURL=react.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["../../../s/tracker/bindings/react.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAA;AAErC,MAAM,UAAU,KAAK,CAAC,KAGpB;IAED,MAAM,SAAS,GAAG,CAAI,EAAW,EAAE,EAAE;QACpC,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QACrC,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAE1C,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;YACpB,MAAM,QAAQ,GAAG,KAAK,IAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;YACrD,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;YACzE,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;QAC9C,CAAC,CAAC,CAAA;QAEF,OAAO,MAAM,CAAA;IACd,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,CAAsB,MAAuB,EAAE,EAAE;QAClE,SAAS,CAAC,CAAC,KAAQ;YAClB,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;YACrC,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;YAE3D,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;gBACpB,MAAM,QAAQ,GAAG,KAAK,IAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;gBACrD,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;gBACzE,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;YAC9C,CAAC,CAAC,CAAA;YAEF,OAAO,MAAM,CAAA;QACd,CAAC;QAED,CAAC,CAAC,WAAW,GAAI,MAAc,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,IAAI,WAAW,CAAA;QACzE,OAAO,CAAC,CAAA;IACT,CAAC,CAAA;IAED,OAAO,EAAC,SAAS,EAAE,SAAS,EAAC,CAAA;AAC9B,CAAC"}
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../../../s/tracker/bindings/react.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAA;AACrC,OAAO,EAAC,MAAM,EAAC,MAAM,4BAA4B,CAAA;AACjD,OAAO,EAAC,OAAO,EAAC,MAAM,6BAA6B,CAAA;AAGnD,MAAM,UAAU,KAAK,CAAC,KAMpB;IAED,MAAM,SAAS,GAAG,CAAI,EAAW,EAAE,EAAE;QACpC,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QACrC,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAE1C,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;YACpB,MAAM,QAAQ,GAAG,KAAK,IAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;YACrD,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;YACzE,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;QAC9C,CAAC,CAAC,CAAA;QAEF,OAAO,MAAM,CAAA;IACd,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,CAAsB,MAAuB,EAAE,EAAE;QAClE,MAAM,CAAC,GAAG,CAAC,KAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACtD,CAAC,CAAC,WAAW,GAAI,MAAc,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,IAAI,WAAW,CAAA;QACzE,OAAO,CAAC,CAAA;IACT,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,CAAI,EAAW,EAAE,EAAE;QAClC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAClC,OAAO,KAAK,CAAA;IACb,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,CAAI,KAAQ,EAAE,OAAgC,EAAE,EAAE;QACnE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;QACrD,KAAK,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;QAC/B,OAAO,OAAO,CAAA;IACf,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,CAAI,OAAgB,EAAE,OAAgC,EAAE,EAAE;QAC5E,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;QACzD,KAAK,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;QAChC,OAAO,QAAQ,CAAA;IAChB,CAAC,CAAA;IAED,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAC,CAAA;AAC9D,CAAC"}