@effect-rx/rx-react 0.1.1 → 0.1.3
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/index.d.ts.map +1 -1
- package/index.js +7 -2
- package/index.js.map +1 -1
- package/mjs/index.mjs +7 -2
- package/mjs/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +7 -5
package/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["./src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAA;AAClD,OAAO,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAA;AAClD,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAEtC;;;GAGG;AACH,eAAO,MAAM,eAAe,kCAA0D,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["./src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAA;AAClD,OAAO,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAA;AAClD,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAEtC;;;GAGG;AACH,eAAO,MAAM,eAAe,kCAA0D,CAAA;AAuBtF;;;GAGG;AACH,eAAO,MAAM,UAAU,wBAOtB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,8CAA6C,IAGjE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,wDAAuD,IAG9E,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,2DAA0D,IAAI,CAIpE,CAAA;AAEZ;;;GAGG;AACH,eAAO,MAAM,WAAW,qEAAoE,IAAI,CAIpF,CAAA"}
|
package/index.js
CHANGED
|
@@ -29,8 +29,13 @@ class RxStore {
|
|
|
29
29
|
this.registry = registry;
|
|
30
30
|
this.rx = rx;
|
|
31
31
|
this.value = this.registry.get(this.rx);
|
|
32
|
+
this.init = false;
|
|
32
33
|
this.subscribe = f => {
|
|
33
|
-
this.
|
|
34
|
+
if (this.init === true) {
|
|
35
|
+
this.value = this.registry.get(this.rx);
|
|
36
|
+
} else {
|
|
37
|
+
this.init = true;
|
|
38
|
+
}
|
|
34
39
|
return this.registry.subscribe(this.rx, a => {
|
|
35
40
|
this.value = a;
|
|
36
41
|
f();
|
|
@@ -46,7 +51,7 @@ class RxStore {
|
|
|
46
51
|
const useRxValue = rx => {
|
|
47
52
|
const registry = React.useContext(RegistryContext);
|
|
48
53
|
const store = React.useRef(undefined);
|
|
49
|
-
if (store.current
|
|
54
|
+
if (store.current?.rx !== rx || store.current?.registry !== registry) {
|
|
50
55
|
store.current = new RxStore(registry, rx);
|
|
51
56
|
}
|
|
52
57
|
return React.useSyncExternalStore(store.current.subscribe, store.current.snapshot);
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Registry","_interopRequireWildcard","require","Registry_1","exports","React","Result","Result_1","Rx","Rx_1","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","RegistryContext","createContext","make","RxStore","constructor","registry","rx","value","subscribe","f","a","snapshot","useRxValue","useContext","store","useRef","undefined","current","useSyncExternalStore","useSetRx","useCallback","useUpdateRx","useRx","useRxUpdate"],"sources":["./src/index.ts"],"sourcesContent":[null],"mappings":";;;;;;AAGA,IAAAA,QAAA,gBAAAC,uBAAA,eAAAC,OAAA;AAAkD,IAAAC,UAAA,GAAAH,QAAA;AAAAI,OAAA,CAAAJ,QAAA,GAAAA,QAAA;AAElD,IAAAK,KAAA,gBAAAJ,uBAAA,eAAAC,OAAA;;AAG8CE,OAAA,CAAAE,MAAA,GAAAC,QAAA;;AACRH,OAAA,CAAAI,EAAA,GAAAC,IAAA;AAAA,SAAAC,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAV,wBAAAc,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,CAAAJ,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AATtC;;;;AAWA;;;;AAIO,MAAMW,eAAe,gBAAG3B,KAAK,CAAC4B,aAAa,eAAoBjC,QAAQ,CAACkC,IAAI,EAAE,CAAC;AAAA9B,OAAA,CAAA4B,eAAA,GAAAA,eAAA;AAEtF,MAAMG,OAAO;EACXC,YACWC,QAA2B,EAC3BC,EAAY;IADZ,KAAAD,QAAQ,GAARA,QAAQ;IACR,KAAAC,EAAE,GAAFA,EAAE;
|
|
1
|
+
{"version":3,"file":"index.js","names":["Registry","_interopRequireWildcard","require","Registry_1","exports","React","Result","Result_1","Rx","Rx_1","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","RegistryContext","createContext","make","RxStore","constructor","registry","rx","value","init","subscribe","f","a","snapshot","useRxValue","useContext","store","useRef","undefined","current","useSyncExternalStore","useSetRx","useCallback","useUpdateRx","useRx","useRxUpdate"],"sources":["./src/index.ts"],"sourcesContent":[null],"mappings":"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"}
|
package/mjs/index.mjs
CHANGED
|
@@ -19,8 +19,13 @@ class RxStore {
|
|
|
19
19
|
this.registry = registry;
|
|
20
20
|
this.rx = rx;
|
|
21
21
|
this.value = this.registry.get(this.rx);
|
|
22
|
+
this.init = false;
|
|
22
23
|
this.subscribe = f => {
|
|
23
|
-
this.
|
|
24
|
+
if (this.init === true) {
|
|
25
|
+
this.value = this.registry.get(this.rx);
|
|
26
|
+
} else {
|
|
27
|
+
this.init = true;
|
|
28
|
+
}
|
|
24
29
|
return this.registry.subscribe(this.rx, a => {
|
|
25
30
|
this.value = a;
|
|
26
31
|
f();
|
|
@@ -36,7 +41,7 @@ class RxStore {
|
|
|
36
41
|
export const useRxValue = rx => {
|
|
37
42
|
const registry = React.useContext(RegistryContext);
|
|
38
43
|
const store = React.useRef(undefined);
|
|
39
|
-
if (store.current
|
|
44
|
+
if (store.current?.rx !== rx || store.current?.registry !== registry) {
|
|
40
45
|
store.current = new RxStore(registry, rx);
|
|
41
46
|
}
|
|
42
47
|
return React.useSyncExternalStore(store.current.subscribe, store.current.snapshot);
|
package/mjs/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["Registry","React","Result","Rx","RegistryContext","createContext","make","RxStore","constructor","registry","rx","value","get","subscribe","f","a","snapshot","useRxValue","useContext","store","useRef","undefined","current","useSyncExternalStore","useSetRx","useCallback","set","useUpdateRx","useRx","useRxUpdate"],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,QAAQ,MAAM,wBAAwB;AAElD,OAAO,KAAKC,KAAK,MAAM,OAAO;4BAEJ,wBAAwB;uBAAtCD,QAAQ;0BACI,sBAAsB;qBAAlCE,MAAM;sBACE,kBAAkB;iBAA1BC,EAAE;AAEd;;;;AAIA,OAAO,MAAMC,eAAe,gBAAGH,KAAK,CAACI,aAAa,eAAoBL,QAAQ,CAACM,IAAI,EAAE,CAAC;AAEtF,MAAMC,OAAO;EACXC,YACWC,QAA2B,EAC3BC,EAAY;IADZ,KAAAD,QAAQ,GAARA,QAAQ;IACR,KAAAC,EAAE,GAAFA,EAAE;
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["Registry","React","Result","Rx","RegistryContext","createContext","make","RxStore","constructor","registry","rx","value","get","init","subscribe","f","a","snapshot","useRxValue","useContext","store","useRef","undefined","current","useSyncExternalStore","useSetRx","useCallback","set","useUpdateRx","useRx","useRxUpdate"],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-rx/rx-react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Reactive toolkit for Effect",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"sideEffects": [],
|
|
36
36
|
"author": "Effect contributors",
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@effect-rx/rx": "^0.1.
|
|
38
|
+
"@effect-rx/rx": "^0.1.3"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"@effect/data": "^0.18.5",
|
package/src/index.ts
CHANGED
|
@@ -20,17 +20,19 @@ class RxStore<A> {
|
|
|
20
20
|
readonly registry: Registry.Registry,
|
|
21
21
|
readonly rx: Rx.Rx<A>
|
|
22
22
|
) {}
|
|
23
|
-
|
|
24
23
|
value = this.registry.get(this.rx)
|
|
25
|
-
|
|
24
|
+
init = false
|
|
26
25
|
subscribe = (f: () => void): () => void => {
|
|
27
|
-
this.
|
|
26
|
+
if (this.init === true) {
|
|
27
|
+
this.value = this.registry.get(this.rx)
|
|
28
|
+
} else {
|
|
29
|
+
this.init = true
|
|
30
|
+
}
|
|
28
31
|
return this.registry.subscribe(this.rx, (a) => {
|
|
29
32
|
this.value = a
|
|
30
33
|
f()
|
|
31
34
|
})
|
|
32
35
|
}
|
|
33
|
-
|
|
34
36
|
snapshot = (): A => this.value
|
|
35
37
|
}
|
|
36
38
|
|
|
@@ -41,7 +43,7 @@ class RxStore<A> {
|
|
|
41
43
|
export const useRxValue = <A>(rx: Rx.Rx<A>): A => {
|
|
42
44
|
const registry = React.useContext(RegistryContext)
|
|
43
45
|
const store = React.useRef<RxStore<A>>(undefined as any)
|
|
44
|
-
if (store.current
|
|
46
|
+
if (store.current?.rx !== rx || store.current?.registry !== registry) {
|
|
45
47
|
store.current = new RxStore(registry, rx)
|
|
46
48
|
}
|
|
47
49
|
return React.useSyncExternalStore(store.current.subscribe, store.current.snapshot)
|