@effect-rx/rx-react 0.1.33 → 0.2.1
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 +7 -7
- package/index.d.ts.map +1 -1
- package/index.js +37 -24
- package/index.js.map +1 -1
- package/mjs/index.mjs +33 -20
- package/mjs/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +40 -23
package/index.d.ts
CHANGED
@@ -24,12 +24,17 @@ export declare const useRxValue: <A>(rx: Rx.Rx<A>) => A;
|
|
24
24
|
* @since 1.0.0
|
25
25
|
* @category hooks
|
26
26
|
*/
|
27
|
-
export declare const
|
27
|
+
export declare const useRxMount: <A>(rx: Rx.Rx<A>) => void;
|
28
28
|
/**
|
29
29
|
* @since 1.0.0
|
30
30
|
* @category hooks
|
31
31
|
*/
|
32
|
-
export declare const
|
32
|
+
export declare const useRxSet: <R, W>(rx: Rx.Writable<R, W>) => (_: W | ((_: R) => W)) => void;
|
33
|
+
/**
|
34
|
+
* @since 1.0.0
|
35
|
+
* @category hooks
|
36
|
+
*/
|
37
|
+
export declare const useRxRefresh: <A>(rx: Rx.Rx<A> & Rx.Refreshable) => () => void;
|
33
38
|
/**
|
34
39
|
* @since 1.0.0
|
35
40
|
* @category hooks
|
@@ -55,11 +60,6 @@ export declare const useRxSuspenseSuccess: <E, A>(rx: Rx.Rx<Result.Result<E, A>>
|
|
55
60
|
readonly isWaiting: boolean;
|
56
61
|
readonly value: A;
|
57
62
|
};
|
58
|
-
/**
|
59
|
-
* @since 1.0.0
|
60
|
-
* @category hooks
|
61
|
-
*/
|
62
|
-
export declare const useMountRx: <A>(rx: Rx.Rx<A>) => void;
|
63
63
|
/**
|
64
64
|
* @since 1.0.0
|
65
65
|
* @category hooks
|
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,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,KAAK,KAAK,KAAK,MAAM,qBAAqB,CAAA;AAGjD,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;AACtC,OAAO,KAAK,KAAK,MAAM,qBAAqB,CAAA;AAE5C;;;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,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,KAAK,KAAK,KAAK,MAAM,qBAAqB,CAAA;AAGjD,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;AACtC,OAAO,KAAK,KAAK,MAAM,qBAAqB,CAAA;AAE5C;;;GAGG;AACH,eAAO,MAAM,eAAe,kCAA0D,CAAA;AAmCtF;;;GAGG;AACH,eAAO,MAAM,UAAU,wBAGtB,CAAA;AAiBD;;;GAGG;AACH,eAAO,MAAM,UAAU,uBAAsB,IAG5C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,6DAA4D,IAIhF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,wCAAuC,MAAM,IAMrE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,8FAE4C,IAAI,CAMjE,CAAA;AA2CD;;;GAGG;AACH,eAAO,MAAM,aAAa,mDAEd;IAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE;wBAE7B,OAAO;;CAwB5B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,mDAErB;IAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE;wBAE7B,OAAO;;CAW5B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,qCAIpB,CAAA"}
|
package/index.js
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.
|
6
|
+
exports.useRxValue = exports.useRxSuspenseSuccess = exports.useRxSuspense = exports.useRxSet = exports.useRxRefresh = exports.useRxRef = exports.useRxMount = exports.useRx = exports.RxRef = exports.Rx = exports.Result = exports.RegistryContext = exports.Registry = void 0;
|
7
7
|
var Registry = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect-rx/rx/Registry"));
|
8
8
|
var Registry_1 = Registry;
|
9
9
|
exports.Registry = Registry;
|
@@ -48,22 +48,23 @@ function makeStore(registry, rx) {
|
|
48
48
|
stores.set(rx, newStore);
|
49
49
|
return newStore;
|
50
50
|
}
|
51
|
+
function useStore(registry, rx) {
|
52
|
+
const store = makeStore(registry, rx);
|
53
|
+
return React.useSyncExternalStore(store.subscribe, store.snapshot);
|
54
|
+
}
|
51
55
|
/**
|
52
56
|
* @since 1.0.0
|
53
57
|
* @category hooks
|
54
58
|
*/
|
55
59
|
const useRxValue = rx => {
|
56
60
|
const registry = React.useContext(RegistryContext);
|
57
|
-
|
58
|
-
return React.useSyncExternalStore(store.subscribe, store.snapshot);
|
61
|
+
return useStore(registry, rx);
|
59
62
|
};
|
60
|
-
/**
|
61
|
-
* @since 1.0.0
|
62
|
-
* @category hooks
|
63
|
-
*/
|
64
63
|
exports.useRxValue = useRxValue;
|
65
|
-
|
66
|
-
|
64
|
+
function mountRx(registry, rx) {
|
65
|
+
React.useEffect(() => registry.mount(rx), [rx, registry]);
|
66
|
+
}
|
67
|
+
function setRx(registry, rx) {
|
67
68
|
return React.useCallback(value => {
|
68
69
|
if (typeof value === "function") {
|
69
70
|
registry.set(rx, value(registry.get(rx)));
|
@@ -72,14 +73,33 @@ const useSetRx = rx => {
|
|
72
73
|
registry.set(rx, value);
|
73
74
|
}
|
74
75
|
}, [registry, rx]);
|
76
|
+
}
|
77
|
+
/**
|
78
|
+
* @since 1.0.0
|
79
|
+
* @category hooks
|
80
|
+
*/
|
81
|
+
const useRxMount = rx => {
|
82
|
+
const registry = React.useContext(RegistryContext);
|
83
|
+
mountRx(registry, rx);
|
84
|
+
};
|
85
|
+
/**
|
86
|
+
* @since 1.0.0
|
87
|
+
* @category hooks
|
88
|
+
*/
|
89
|
+
exports.useRxMount = useRxMount;
|
90
|
+
const useRxSet = rx => {
|
91
|
+
const registry = React.useContext(RegistryContext);
|
92
|
+
mountRx(registry, rx);
|
93
|
+
return setRx(registry, rx);
|
75
94
|
};
|
76
95
|
/**
|
77
96
|
* @since 1.0.0
|
78
97
|
* @category hooks
|
79
98
|
*/
|
80
|
-
exports.
|
81
|
-
const
|
99
|
+
exports.useRxSet = useRxSet;
|
100
|
+
const useRxRefresh = rx => {
|
82
101
|
const registry = React.useContext(RegistryContext);
|
102
|
+
mountRx(registry, rx);
|
83
103
|
return React.useCallback(() => {
|
84
104
|
registry.refresh(rx);
|
85
105
|
}, [registry, rx]);
|
@@ -88,8 +108,11 @@ const useRefreshRx = rx => {
|
|
88
108
|
* @since 1.0.0
|
89
109
|
* @category hooks
|
90
110
|
*/
|
91
|
-
exports.
|
92
|
-
const useRx = rx =>
|
111
|
+
exports.useRxRefresh = useRxRefresh;
|
112
|
+
const useRx = rx => {
|
113
|
+
const registry = React.useContext(RegistryContext);
|
114
|
+
return [useStore(registry, rx), setRx(registry, rx)];
|
115
|
+
};
|
93
116
|
exports.useRx = useRx;
|
94
117
|
const suspenseRx = /*#__PURE__*/Rx.family(rx => Rx.readable(get => {
|
95
118
|
const result = get(rx);
|
@@ -129,8 +152,7 @@ const suspenseMounts = /*#__PURE__*/(0, _GlobalValue.globalValue)("@effect-rx/rx
|
|
129
152
|
const useRxSuspense = (rx, options) => {
|
130
153
|
const registry = React.useContext(RegistryContext);
|
131
154
|
const resultRx = React.useMemo(() => options?.suspendOnWaiting ? suspenseRxWaiting(rx) : suspenseRx(rx), [options?.suspendOnWaiting, rx]);
|
132
|
-
const
|
133
|
-
const result = React.useSyncExternalStore(store.subscribe, store.snapshot);
|
155
|
+
const result = useStore(registry, resultRx);
|
134
156
|
if (result._tag === "Suspended") {
|
135
157
|
if (!suspenseMounts.has(resultRx)) {
|
136
158
|
suspenseMounts.add(resultRx);
|
@@ -166,15 +188,6 @@ const useRxSuspenseSuccess = (rx, options) => {
|
|
166
188
|
* @category hooks
|
167
189
|
*/
|
168
190
|
exports.useRxSuspenseSuccess = useRxSuspenseSuccess;
|
169
|
-
const useMountRx = rx => {
|
170
|
-
const registry = React.useContext(RegistryContext);
|
171
|
-
React.useEffect(() => registry.mount(rx), [rx, registry]);
|
172
|
-
};
|
173
|
-
/**
|
174
|
-
* @since 1.0.0
|
175
|
-
* @category hooks
|
176
|
-
*/
|
177
|
-
exports.useMountRx = useMountRx;
|
178
191
|
const useRxRef = ref => {
|
179
192
|
const [value, setValue] = React.useState(ref.value);
|
180
193
|
React.useEffect(() => ref.subscribe(setValue), [ref]);
|
package/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","names":["Registry","_interopRequireWildcard","require","Registry_1","exports","Result","Result_1","Rx","Rx_1","_GlobalValue","Cause","React","RxRef","RxRef_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","storeRegistry","globalValue","makeStore","registry","rx","stores","store","newStore","subscribe","f","snapshot","useRxValue","useContext","
|
1
|
+
{"version":3,"file":"index.js","names":["Registry","_interopRequireWildcard","require","Registry_1","exports","Result","Result_1","Rx","Rx_1","_GlobalValue","Cause","React","RxRef","RxRef_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","storeRegistry","globalValue","makeStore","registry","rx","stores","store","newStore","subscribe","f","snapshot","useStore","useSyncExternalStore","useRxValue","useContext","mountRx","useEffect","mount","setRx","useCallback","value","useRxMount","useRxSet","useRxRefresh","refresh","useRx","suspenseRx","family","readable","result","noWaiting","_tag","promise","Promise","resolve","addFinalizer","isWaiting","suspenseRxWaiting","suspenseMounts","Set","useRxSuspense","options","resultRx","useMemo","suspendOnWaiting","add","unmount","then","setTimeout","delete","useRxSuspenseSuccess","squash","cause","useRxRef","ref","setValue","useState"],"sources":["./src/index.ts"],"sourcesContent":[null],"mappings":"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"}
|
package/mjs/index.mjs
CHANGED
@@ -38,21 +38,22 @@ function makeStore(registry, rx) {
|
|
38
38
|
stores.set(rx, newStore);
|
39
39
|
return newStore;
|
40
40
|
}
|
41
|
-
|
42
|
-
* @since 1.0.0
|
43
|
-
* @category hooks
|
44
|
-
*/
|
45
|
-
export const useRxValue = rx => {
|
46
|
-
const registry = React.useContext(RegistryContext);
|
41
|
+
function useStore(registry, rx) {
|
47
42
|
const store = makeStore(registry, rx);
|
48
43
|
return React.useSyncExternalStore(store.subscribe, store.snapshot);
|
49
|
-
}
|
44
|
+
}
|
50
45
|
/**
|
51
46
|
* @since 1.0.0
|
52
47
|
* @category hooks
|
53
48
|
*/
|
54
|
-
export const
|
49
|
+
export const useRxValue = rx => {
|
55
50
|
const registry = React.useContext(RegistryContext);
|
51
|
+
return useStore(registry, rx);
|
52
|
+
};
|
53
|
+
function mountRx(registry, rx) {
|
54
|
+
React.useEffect(() => registry.mount(rx), [rx, registry]);
|
55
|
+
}
|
56
|
+
function setRx(registry, rx) {
|
56
57
|
return React.useCallback(value => {
|
57
58
|
if (typeof value === "function") {
|
58
59
|
registry.set(rx, value(registry.get(rx)));
|
@@ -61,13 +62,31 @@ export const useSetRx = rx => {
|
|
61
62
|
registry.set(rx, value);
|
62
63
|
}
|
63
64
|
}, [registry, rx]);
|
65
|
+
}
|
66
|
+
/**
|
67
|
+
* @since 1.0.0
|
68
|
+
* @category hooks
|
69
|
+
*/
|
70
|
+
export const useRxMount = rx => {
|
71
|
+
const registry = React.useContext(RegistryContext);
|
72
|
+
mountRx(registry, rx);
|
73
|
+
};
|
74
|
+
/**
|
75
|
+
* @since 1.0.0
|
76
|
+
* @category hooks
|
77
|
+
*/
|
78
|
+
export const useRxSet = rx => {
|
79
|
+
const registry = React.useContext(RegistryContext);
|
80
|
+
mountRx(registry, rx);
|
81
|
+
return setRx(registry, rx);
|
64
82
|
};
|
65
83
|
/**
|
66
84
|
* @since 1.0.0
|
67
85
|
* @category hooks
|
68
86
|
*/
|
69
|
-
export const
|
87
|
+
export const useRxRefresh = rx => {
|
70
88
|
const registry = React.useContext(RegistryContext);
|
89
|
+
mountRx(registry, rx);
|
71
90
|
return React.useCallback(() => {
|
72
91
|
registry.refresh(rx);
|
73
92
|
}, [registry, rx]);
|
@@ -76,7 +95,10 @@ export const useRefreshRx = rx => {
|
|
76
95
|
* @since 1.0.0
|
77
96
|
* @category hooks
|
78
97
|
*/
|
79
|
-
export const useRx = rx =>
|
98
|
+
export const useRx = rx => {
|
99
|
+
const registry = React.useContext(RegistryContext);
|
100
|
+
return [useStore(registry, rx), setRx(registry, rx)];
|
101
|
+
};
|
80
102
|
const suspenseRx = /*#__PURE__*/Rx.family(rx => Rx.readable(get => {
|
81
103
|
const result = get(rx);
|
82
104
|
const value = Result.noWaiting(result);
|
@@ -115,8 +137,7 @@ const suspenseMounts = /*#__PURE__*/globalValue("@effect-rx/rx-react/suspenseMou
|
|
115
137
|
export const useRxSuspense = (rx, options) => {
|
116
138
|
const registry = React.useContext(RegistryContext);
|
117
139
|
const resultRx = React.useMemo(() => options?.suspendOnWaiting ? suspenseRxWaiting(rx) : suspenseRx(rx), [options?.suspendOnWaiting, rx]);
|
118
|
-
const
|
119
|
-
const result = React.useSyncExternalStore(store.subscribe, store.snapshot);
|
140
|
+
const result = useStore(registry, resultRx);
|
120
141
|
if (result._tag === "Suspended") {
|
121
142
|
if (!suspenseMounts.has(resultRx)) {
|
122
143
|
suspenseMounts.add(resultRx);
|
@@ -146,14 +167,6 @@ export const useRxSuspenseSuccess = (rx, options) => {
|
|
146
167
|
value: result.value.value
|
147
168
|
};
|
148
169
|
};
|
149
|
-
/**
|
150
|
-
* @since 1.0.0
|
151
|
-
* @category hooks
|
152
|
-
*/
|
153
|
-
export const useMountRx = rx => {
|
154
|
-
const registry = React.useContext(RegistryContext);
|
155
|
-
React.useEffect(() => registry.mount(rx), [rx, registry]);
|
156
|
-
};
|
157
170
|
/**
|
158
171
|
* @since 1.0.0
|
159
172
|
* @category hooks
|
package/mjs/index.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["Registry","Result","Rx","globalValue","Cause","React","RxRef","RegistryContext","createContext","make","storeRegistry","WeakMap","makeStore","registry","rx","stores","get","set","store","newStore","subscribe","f","snapshot","useRxValue","useContext","
|
1
|
+
{"version":3,"file":"index.mjs","names":["Registry","Result","Rx","globalValue","Cause","React","RxRef","RegistryContext","createContext","make","storeRegistry","WeakMap","makeStore","registry","rx","stores","get","set","store","newStore","subscribe","f","snapshot","useStore","useSyncExternalStore","useRxValue","useContext","mountRx","useEffect","mount","setRx","useCallback","value","useRxMount","useRxSet","useRxRefresh","refresh","useRx","suspenseRx","family","readable","result","noWaiting","_tag","promise","Promise","resolve","addFinalizer","isWaiting","suspenseRxWaiting","suspenseMounts","Set","useRxSuspense","options","resultRx","useMemo","suspendOnWaiting","has","add","unmount","then","setTimeout","delete","useRxSuspenseSuccess","squash","cause","useRxRef","ref","setValue","useState"],"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.2.1",
|
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.
|
38
|
+
"@effect-rx/rx": "^0.2.0"
|
39
39
|
},
|
40
40
|
"peerDependencies": {
|
41
41
|
"@effect/data": "^0.18.5",
|
package/src/index.ts
CHANGED
@@ -48,12 +48,7 @@ function makeStore<A>(registry: Registry.Registry, rx: Rx.Rx<A>): RxStore<A> {
|
|
48
48
|
return newStore
|
49
49
|
}
|
50
50
|
|
51
|
-
|
52
|
-
* @since 1.0.0
|
53
|
-
* @category hooks
|
54
|
-
*/
|
55
|
-
export const useRxValue = <A>(rx: Rx.Rx<A>): A => {
|
56
|
-
const registry = React.useContext(RegistryContext)
|
51
|
+
function useStore<A>(registry: Registry.Registry, rx: Rx.Rx<A>): A {
|
57
52
|
const store = makeStore(registry, rx)
|
58
53
|
return React.useSyncExternalStore(store.subscribe, store.snapshot)
|
59
54
|
}
|
@@ -62,8 +57,16 @@ export const useRxValue = <A>(rx: Rx.Rx<A>): A => {
|
|
62
57
|
* @since 1.0.0
|
63
58
|
* @category hooks
|
64
59
|
*/
|
65
|
-
export const
|
60
|
+
export const useRxValue = <A>(rx: Rx.Rx<A>): A => {
|
66
61
|
const registry = React.useContext(RegistryContext)
|
62
|
+
return useStore(registry, rx)
|
63
|
+
}
|
64
|
+
|
65
|
+
function mountRx<A>(registry: Registry.Registry, rx: Rx.Rx<A>): void {
|
66
|
+
React.useEffect(() => registry.mount(rx), [rx, registry])
|
67
|
+
}
|
68
|
+
|
69
|
+
function setRx<R, W>(registry: Registry.Registry, rx: Rx.Writable<R, W>): (_: W | ((_: R) => W)) => void {
|
67
70
|
return React.useCallback((value) => {
|
68
71
|
if (typeof value === "function") {
|
69
72
|
registry.set(rx, (value as any)(registry.get(rx)))
|
@@ -78,8 +81,28 @@ export const useSetRx = <R, W>(rx: Rx.Writable<R, W>): (_: W | ((_: R) => W)) =>
|
|
78
81
|
* @since 1.0.0
|
79
82
|
* @category hooks
|
80
83
|
*/
|
81
|
-
export const
|
84
|
+
export const useRxMount = <A>(rx: Rx.Rx<A>): void => {
|
85
|
+
const registry = React.useContext(RegistryContext)
|
86
|
+
mountRx(registry, rx)
|
87
|
+
}
|
88
|
+
|
89
|
+
/**
|
90
|
+
* @since 1.0.0
|
91
|
+
* @category hooks
|
92
|
+
*/
|
93
|
+
export const useRxSet = <R, W>(rx: Rx.Writable<R, W>): (_: W | ((_: R) => W)) => void => {
|
82
94
|
const registry = React.useContext(RegistryContext)
|
95
|
+
mountRx(registry, rx)
|
96
|
+
return setRx(registry, rx)
|
97
|
+
}
|
98
|
+
|
99
|
+
/**
|
100
|
+
* @since 1.0.0
|
101
|
+
* @category hooks
|
102
|
+
*/
|
103
|
+
export const useRxRefresh = <A>(rx: Rx.Rx<A> & Rx.Refreshable): () => void => {
|
104
|
+
const registry = React.useContext(RegistryContext)
|
105
|
+
mountRx(registry, rx)
|
83
106
|
return React.useCallback(() => {
|
84
107
|
registry.refresh(rx)
|
85
108
|
}, [registry, rx])
|
@@ -89,11 +112,15 @@ export const useRefreshRx = <A>(rx: Rx.Rx<A> & Rx.Refreshable): () => void => {
|
|
89
112
|
* @since 1.0.0
|
90
113
|
* @category hooks
|
91
114
|
*/
|
92
|
-
export const useRx = <R, W>(
|
93
|
-
|
94
|
-
|
95
|
-
|
115
|
+
export const useRx = <R, W>(
|
116
|
+
rx: Rx.Writable<R, W>
|
117
|
+
): readonly [value: R, setOrUpdate: (_: W | ((_: R) => W)) => void] => {
|
118
|
+
const registry = React.useContext(RegistryContext)
|
119
|
+
return [
|
120
|
+
useStore(registry, rx),
|
121
|
+
setRx(registry, rx)
|
96
122
|
] as const
|
123
|
+
}
|
97
124
|
|
98
125
|
type SuspenseResult<E, A> =
|
99
126
|
| {
|
@@ -152,8 +179,7 @@ export const useRxSuspense = <E, A>(
|
|
152
179
|
() => (options?.suspendOnWaiting ? suspenseRxWaiting(rx) : suspenseRx(rx)),
|
153
180
|
[options?.suspendOnWaiting, rx]
|
154
181
|
)
|
155
|
-
const
|
156
|
-
const result = React.useSyncExternalStore(store.subscribe, store.snapshot)
|
182
|
+
const result = useStore(registry, resultRx)
|
157
183
|
if (result._tag === "Suspended") {
|
158
184
|
if (!suspenseMounts.has(resultRx)) {
|
159
185
|
suspenseMounts.add(resultRx)
|
@@ -192,15 +218,6 @@ export const useRxSuspenseSuccess = <E, A>(
|
|
192
218
|
}
|
193
219
|
}
|
194
220
|
|
195
|
-
/**
|
196
|
-
* @since 1.0.0
|
197
|
-
* @category hooks
|
198
|
-
*/
|
199
|
-
export const useMountRx = <A>(rx: Rx.Rx<A>): void => {
|
200
|
-
const registry = React.useContext(RegistryContext)
|
201
|
-
React.useEffect(() => registry.mount(rx), [rx, registry])
|
202
|
-
}
|
203
|
-
|
204
221
|
/**
|
205
222
|
* @since 1.0.0
|
206
223
|
* @category hooks
|