@effect-rx/rx-react 0.28.10 → 0.28.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +72 -37
- package/dist/cjs/index.js.map +1 -1
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/esm/index.js +72 -37
- package/dist/esm/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +86 -49
package/dist/cjs/index.js
CHANGED
@@ -14,6 +14,7 @@ var Rx = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect-rx/
|
|
14
14
|
var _Rx = Rx;
|
15
15
|
exports.Rx = Rx;
|
16
16
|
var Cause = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Cause"));
|
17
|
+
var _Function = /*#__PURE__*/require("effect/Function");
|
17
18
|
var _GlobalValue = /*#__PURE__*/require("effect/GlobalValue");
|
18
19
|
var React = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("react"));
|
19
20
|
var Scheduler = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("scheduler"));
|
@@ -203,55 +204,89 @@ const useRx = rx => {
|
|
203
204
|
return [useStore(registry, rx), setRx(registry, rx)];
|
204
205
|
};
|
205
206
|
exports.useRx = useRx;
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
};
|
213
|
-
}
|
207
|
+
function makeSuspended(rx) {
|
208
|
+
let resolve;
|
209
|
+
const promise = new Promise(_resolve => {
|
210
|
+
resolve = _resolve;
|
211
|
+
});
|
212
|
+
promise.rx = rx;
|
214
213
|
return {
|
215
|
-
_tag: "
|
216
|
-
|
214
|
+
_tag: "Suspended",
|
215
|
+
promise,
|
216
|
+
resolve: resolve
|
217
217
|
};
|
218
|
-
}
|
219
|
-
const
|
220
|
-
|
221
|
-
if (
|
222
|
-
return
|
223
|
-
_tag: "Suspended",
|
224
|
-
promise: new Promise(resolve => get.addFinalizer(resolve))
|
225
|
-
};
|
218
|
+
}
|
219
|
+
const suspenseRxMap = /*#__PURE__*/(0, _GlobalValue.globalValue)("@effect-rx/rx-react/suspenseMounts", () => new WeakMap());
|
220
|
+
function suspenseRx(registry, rx, suspendOnWaiting) {
|
221
|
+
if (suspenseRxMap.has(rx)) {
|
222
|
+
return suspenseRxMap.get(rx);
|
226
223
|
}
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
224
|
+
let unmount;
|
225
|
+
let timeout;
|
226
|
+
function performMount() {
|
227
|
+
if (timeout !== undefined) {
|
228
|
+
clearTimeout(timeout);
|
229
|
+
}
|
230
|
+
unmount = registry.subscribe(resultRx, _Function.constVoid);
|
231
|
+
}
|
232
|
+
function performUnmount() {
|
233
|
+
timeout = undefined;
|
234
|
+
if (unmount !== undefined) {
|
235
|
+
unmount();
|
236
|
+
unmount = undefined;
|
237
|
+
}
|
238
|
+
}
|
239
|
+
const resultRx = Rx.readable(function (get) {
|
240
|
+
let state = makeSuspended(rx);
|
241
|
+
get.subscribe(rx, function (result) {
|
242
|
+
if (result._tag === "Initial" || suspendOnWaiting && result.waiting) {
|
243
|
+
if (state._tag === "Resolved") {
|
244
|
+
state = makeSuspended(rx);
|
245
|
+
get.setSelfSync(state);
|
246
|
+
}
|
247
|
+
if (unmount === undefined) {
|
248
|
+
performMount();
|
249
|
+
}
|
250
|
+
} else {
|
251
|
+
if (unmount !== undefined && timeout === undefined) {
|
252
|
+
timeout = setTimeout(performUnmount, 1000);
|
253
|
+
}
|
254
|
+
if (state._tag === "Resolved") {
|
255
|
+
state = {
|
256
|
+
_tag: "Resolved",
|
257
|
+
result
|
258
|
+
};
|
259
|
+
get.setSelfSync(state);
|
260
|
+
} else {
|
261
|
+
const resolve = state.resolve;
|
262
|
+
state = {
|
263
|
+
_tag: "Resolved",
|
264
|
+
result
|
265
|
+
};
|
266
|
+
get.setSelfSync(state);
|
267
|
+
resolve();
|
268
|
+
}
|
269
|
+
}
|
270
|
+
}, {
|
271
|
+
immediate: true
|
272
|
+
});
|
273
|
+
return state;
|
274
|
+
});
|
275
|
+
suspenseRxMap.set(rx, resultRx);
|
276
|
+
return resultRx;
|
277
|
+
}
|
233
278
|
/**
|
234
279
|
* @since 1.0.0
|
235
280
|
* @category hooks
|
236
281
|
*/
|
237
282
|
const useRxSuspense = (rx, options) => {
|
238
283
|
const registry = React.useContext(RegistryContext);
|
239
|
-
const
|
240
|
-
const result = useStore(registry,
|
284
|
+
const promiseRx = React.useMemo(() => suspenseRx(registry, rx, options?.suspendOnWaiting ?? false), [registry, rx, options?.suspendOnWaiting]);
|
285
|
+
const result = useStore(registry, promiseRx);
|
241
286
|
if (result._tag === "Suspended") {
|
242
|
-
if (!suspenseMounts.has(resultRx)) {
|
243
|
-
suspenseMounts.add(resultRx);
|
244
|
-
const unmount = registry.mount(resultRx);
|
245
|
-
result.promise.then(function () {
|
246
|
-
setTimeout(function () {
|
247
|
-
unmount();
|
248
|
-
suspenseMounts.delete(resultRx);
|
249
|
-
}, 1000);
|
250
|
-
});
|
251
|
-
}
|
252
287
|
throw result.promise;
|
253
288
|
}
|
254
|
-
return result.
|
289
|
+
return result.result;
|
255
290
|
};
|
256
291
|
/**
|
257
292
|
* @since 1.0.0
|
package/dist/cjs/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","names":["Registry","_interopRequireWildcard","require","_Registry","exports","Result","_Result","Rx","_Rx","Cause","_GlobalValue","React","Scheduler","_RxRef","RxRef","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","scheduleTask","f","unstable_scheduleCallback","unstable_LowPriority","RegistryContext","createContext","make","storeRegistry","globalValue","makeStore","registry","rx","stores","store","newStore","subscribe","snapshot","useStore","useSyncExternalStore","useRxValue","useContext","rxB","useMemo","map","mountRx","useEffect","mount","setRx","useCallback","value","setRxPromise","cancelRef","useRef","undefined","current","Set","forEach","cancel","clear","Promise","resolve","isSuccess","isFailure","toExit","delete","add","useRxMount","useRxSet","useRxSetPromise","useRxRefresh","refresh","useRx","suspenseRx","family","readable","result","_tag","promise","addFinalizer","suspenseRxWaiting","waiting","suspenseMounts","useRxSuspense","options","resultRx","suspendOnWaiting","unmount","then","setTimeout","useRxSuspenseSuccess","squash","cause","useRxSubscribe","immediate","useRxRef","ref","setValue","useState","useRxRefProp","prop"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"index.js","names":["Registry","_interopRequireWildcard","require","_Registry","exports","Result","_Result","Rx","_Rx","Cause","_Function","_GlobalValue","React","Scheduler","_RxRef","RxRef","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","scheduleTask","f","unstable_scheduleCallback","unstable_LowPriority","RegistryContext","createContext","make","storeRegistry","globalValue","makeStore","registry","rx","stores","store","newStore","subscribe","snapshot","useStore","useSyncExternalStore","useRxValue","useContext","rxB","useMemo","map","mountRx","useEffect","mount","setRx","useCallback","value","setRxPromise","cancelRef","useRef","undefined","current","Set","forEach","cancel","clear","Promise","resolve","isSuccess","isFailure","toExit","delete","add","useRxMount","useRxSet","useRxSetPromise","useRxRefresh","refresh","useRx","makeSuspended","promise","_resolve","_tag","suspenseRxMap","suspenseRx","suspendOnWaiting","unmount","timeout","performMount","clearTimeout","resultRx","constVoid","performUnmount","readable","state","result","waiting","setSelfSync","setTimeout","immediate","useRxSuspense","options","promiseRx","useRxSuspenseSuccess","squash","cause","useRxSubscribe","useRxRef","ref","setValue","useState","useRxRefProp","prop"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/dts/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;AAEjD,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAA;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.js
CHANGED
@@ -5,6 +5,7 @@ import * as Registry from "@effect-rx/rx/Registry";
|
|
5
5
|
import * as Result from "@effect-rx/rx/Result";
|
6
6
|
import * as Rx from "@effect-rx/rx/Rx";
|
7
7
|
import * as Cause from "effect/Cause";
|
8
|
+
import { constVoid } from "effect/Function";
|
8
9
|
import { globalValue } from "effect/GlobalValue";
|
9
10
|
import * as React from "react";
|
10
11
|
import * as Scheduler from "scheduler";
|
@@ -157,55 +158,89 @@ export const useRx = rx => {
|
|
157
158
|
const registry = React.useContext(RegistryContext);
|
158
159
|
return [useStore(registry, rx), setRx(registry, rx)];
|
159
160
|
};
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
};
|
167
|
-
}
|
161
|
+
function makeSuspended(rx) {
|
162
|
+
let resolve;
|
163
|
+
const promise = new Promise(_resolve => {
|
164
|
+
resolve = _resolve;
|
165
|
+
});
|
166
|
+
promise.rx = rx;
|
168
167
|
return {
|
169
|
-
_tag: "
|
170
|
-
|
168
|
+
_tag: "Suspended",
|
169
|
+
promise,
|
170
|
+
resolve: resolve
|
171
171
|
};
|
172
|
-
}
|
173
|
-
const
|
174
|
-
|
175
|
-
if (
|
176
|
-
return
|
177
|
-
_tag: "Suspended",
|
178
|
-
promise: new Promise(resolve => get.addFinalizer(resolve))
|
179
|
-
};
|
172
|
+
}
|
173
|
+
const suspenseRxMap = /*#__PURE__*/globalValue("@effect-rx/rx-react/suspenseMounts", () => new WeakMap());
|
174
|
+
function suspenseRx(registry, rx, suspendOnWaiting) {
|
175
|
+
if (suspenseRxMap.has(rx)) {
|
176
|
+
return suspenseRxMap.get(rx);
|
180
177
|
}
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
178
|
+
let unmount;
|
179
|
+
let timeout;
|
180
|
+
function performMount() {
|
181
|
+
if (timeout !== undefined) {
|
182
|
+
clearTimeout(timeout);
|
183
|
+
}
|
184
|
+
unmount = registry.subscribe(resultRx, constVoid);
|
185
|
+
}
|
186
|
+
function performUnmount() {
|
187
|
+
timeout = undefined;
|
188
|
+
if (unmount !== undefined) {
|
189
|
+
unmount();
|
190
|
+
unmount = undefined;
|
191
|
+
}
|
192
|
+
}
|
193
|
+
const resultRx = Rx.readable(function (get) {
|
194
|
+
let state = makeSuspended(rx);
|
195
|
+
get.subscribe(rx, function (result) {
|
196
|
+
if (result._tag === "Initial" || suspendOnWaiting && result.waiting) {
|
197
|
+
if (state._tag === "Resolved") {
|
198
|
+
state = makeSuspended(rx);
|
199
|
+
get.setSelfSync(state);
|
200
|
+
}
|
201
|
+
if (unmount === undefined) {
|
202
|
+
performMount();
|
203
|
+
}
|
204
|
+
} else {
|
205
|
+
if (unmount !== undefined && timeout === undefined) {
|
206
|
+
timeout = setTimeout(performUnmount, 1000);
|
207
|
+
}
|
208
|
+
if (state._tag === "Resolved") {
|
209
|
+
state = {
|
210
|
+
_tag: "Resolved",
|
211
|
+
result
|
212
|
+
};
|
213
|
+
get.setSelfSync(state);
|
214
|
+
} else {
|
215
|
+
const resolve = state.resolve;
|
216
|
+
state = {
|
217
|
+
_tag: "Resolved",
|
218
|
+
result
|
219
|
+
};
|
220
|
+
get.setSelfSync(state);
|
221
|
+
resolve();
|
222
|
+
}
|
223
|
+
}
|
224
|
+
}, {
|
225
|
+
immediate: true
|
226
|
+
});
|
227
|
+
return state;
|
228
|
+
});
|
229
|
+
suspenseRxMap.set(rx, resultRx);
|
230
|
+
return resultRx;
|
231
|
+
}
|
187
232
|
/**
|
188
233
|
* @since 1.0.0
|
189
234
|
* @category hooks
|
190
235
|
*/
|
191
236
|
export const useRxSuspense = (rx, options) => {
|
192
237
|
const registry = React.useContext(RegistryContext);
|
193
|
-
const
|
194
|
-
const result = useStore(registry,
|
238
|
+
const promiseRx = React.useMemo(() => suspenseRx(registry, rx, options?.suspendOnWaiting ?? false), [registry, rx, options?.suspendOnWaiting]);
|
239
|
+
const result = useStore(registry, promiseRx);
|
195
240
|
if (result._tag === "Suspended") {
|
196
|
-
if (!suspenseMounts.has(resultRx)) {
|
197
|
-
suspenseMounts.add(resultRx);
|
198
|
-
const unmount = registry.mount(resultRx);
|
199
|
-
result.promise.then(function () {
|
200
|
-
setTimeout(function () {
|
201
|
-
unmount();
|
202
|
-
suspenseMounts.delete(resultRx);
|
203
|
-
}, 1000);
|
204
|
-
});
|
205
|
-
}
|
206
241
|
throw result.promise;
|
207
242
|
}
|
208
|
-
return result.
|
243
|
+
return result.result;
|
209
244
|
};
|
210
245
|
/**
|
211
246
|
* @since 1.0.0
|
package/dist/esm/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","names":["Registry","Result","Rx","Cause","globalValue","React","Scheduler","RxRef","scheduleTask","f","unstable_scheduleCallback","unstable_LowPriority","RegistryContext","createContext","make","storeRegistry","WeakMap","makeStore","registry","rx","stores","get","set","store","newStore","subscribe","snapshot","useStore","useSyncExternalStore","useRxValue","useContext","rxB","useMemo","map","mountRx","useEffect","mount","setRx","useCallback","value","setRxPromise","cancelRef","useRef","undefined","current","Set","forEach","cancel","clear","Promise","resolve","isSuccess","isFailure","toExit","delete","add","useRxMount","useRxSet","useRxSetPromise","useRxRefresh","refresh","useRx","
|
1
|
+
{"version":3,"file":"index.js","names":["Registry","Result","Rx","Cause","constVoid","globalValue","React","Scheduler","RxRef","scheduleTask","f","unstable_scheduleCallback","unstable_LowPriority","RegistryContext","createContext","make","storeRegistry","WeakMap","makeStore","registry","rx","stores","get","set","store","newStore","subscribe","snapshot","useStore","useSyncExternalStore","useRxValue","useContext","rxB","useMemo","map","mountRx","useEffect","mount","setRx","useCallback","value","setRxPromise","cancelRef","useRef","undefined","current","Set","forEach","cancel","clear","Promise","resolve","isSuccess","isFailure","toExit","delete","add","useRxMount","useRxSet","useRxSetPromise","useRxRefresh","refresh","useRx","makeSuspended","promise","_resolve","_tag","suspenseRxMap","suspenseRx","suspendOnWaiting","has","unmount","timeout","performMount","clearTimeout","resultRx","performUnmount","readable","state","result","waiting","setSelfSync","setTimeout","immediate","useRxSuspense","options","promiseRx","useRxSuspenseSuccess","squash","cause","useRxSubscribe","useRxRef","ref","setValue","useState","useRxRefProp","prop"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
@@ -7,6 +7,7 @@ import * as Rx from "@effect-rx/rx/Rx"
|
|
7
7
|
import type * as RxRef from "@effect-rx/rx/RxRef"
|
8
8
|
import * as Cause from "effect/Cause"
|
9
9
|
import type * as Exit from "effect/Exit"
|
10
|
+
import { constVoid } from "effect/Function"
|
10
11
|
import { globalValue } from "effect/GlobalValue"
|
11
12
|
import * as React from "react"
|
12
13
|
import * as Scheduler from "scheduler"
|
@@ -198,43 +199,89 @@ export const useRx = <R, W>(
|
|
198
199
|
] as const
|
199
200
|
}
|
200
201
|
|
201
|
-
type SuspenseResult<A, E> =
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
promise: new Promise<void>((resolve) => get.addFinalizer(resolve))
|
218
|
-
} as const
|
219
|
-
}
|
220
|
-
return { _tag: "Value", value: result } as const
|
202
|
+
type SuspenseResult<A, E> = {
|
203
|
+
readonly _tag: "Suspended"
|
204
|
+
readonly promise: Promise<void>
|
205
|
+
readonly resolve: () => void
|
206
|
+
} | {
|
207
|
+
readonly _tag: "Resolved"
|
208
|
+
readonly result: Result.Success<A, E> | Result.Failure<A, E>
|
209
|
+
}
|
210
|
+
function makeSuspended(rx: Rx.Rx<any>): {
|
211
|
+
readonly _tag: "Suspended"
|
212
|
+
readonly promise: Promise<void>
|
213
|
+
readonly resolve: () => void
|
214
|
+
} {
|
215
|
+
let resolve: () => void
|
216
|
+
const promise = new Promise<void>((_resolve) => {
|
217
|
+
resolve = _resolve
|
221
218
|
})
|
219
|
+
;(promise as any).rx = rx
|
220
|
+
return {
|
221
|
+
_tag: "Suspended",
|
222
|
+
promise,
|
223
|
+
resolve: resolve!
|
224
|
+
}
|
225
|
+
}
|
226
|
+
const suspenseRxMap = globalValue(
|
227
|
+
"@effect-rx/rx-react/suspenseMounts",
|
228
|
+
() => new WeakMap<Rx.Rx<any>, Rx.Rx<SuspenseResult<any, any>>>()
|
222
229
|
)
|
223
230
|
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
231
|
+
function suspenseRx<A, E>(
|
232
|
+
registry: Registry.Registry,
|
233
|
+
rx: Rx.Rx<Result.Result<A, E>>,
|
234
|
+
suspendOnWaiting: boolean
|
235
|
+
): Rx.Rx<SuspenseResult<A, E>> {
|
236
|
+
if (suspenseRxMap.has(rx)) {
|
237
|
+
return suspenseRxMap.get(rx)!
|
238
|
+
}
|
239
|
+
let unmount: (() => void) | undefined
|
240
|
+
let timeout: number | undefined
|
241
|
+
function performMount() {
|
242
|
+
if (timeout !== undefined) {
|
243
|
+
clearTimeout(timeout)
|
232
244
|
}
|
233
|
-
|
245
|
+
unmount = registry.subscribe(resultRx, constVoid)
|
246
|
+
}
|
247
|
+
function performUnmount() {
|
248
|
+
timeout = undefined
|
249
|
+
if (unmount !== undefined) {
|
250
|
+
unmount()
|
251
|
+
unmount = undefined
|
252
|
+
}
|
253
|
+
}
|
254
|
+
const resultRx = Rx.readable<SuspenseResult<A, E>>(function(get) {
|
255
|
+
let state: SuspenseResult<A, E> = makeSuspended(rx)
|
256
|
+
get.subscribe(rx, function(result) {
|
257
|
+
if (result._tag === "Initial" || (suspendOnWaiting && result.waiting)) {
|
258
|
+
if (state._tag === "Resolved") {
|
259
|
+
state = makeSuspended(rx)
|
260
|
+
get.setSelfSync(state)
|
261
|
+
}
|
262
|
+
if (unmount === undefined) {
|
263
|
+
performMount()
|
264
|
+
}
|
265
|
+
} else {
|
266
|
+
if (unmount !== undefined && timeout === undefined) {
|
267
|
+
timeout = setTimeout(performUnmount, 1000)
|
268
|
+
}
|
269
|
+
if (state._tag === "Resolved") {
|
270
|
+
state = { _tag: "Resolved", result }
|
271
|
+
get.setSelfSync(state)
|
272
|
+
} else {
|
273
|
+
const resolve = state.resolve
|
274
|
+
state = { _tag: "Resolved", result }
|
275
|
+
get.setSelfSync(state)
|
276
|
+
resolve()
|
277
|
+
}
|
278
|
+
}
|
279
|
+
}, { immediate: true })
|
280
|
+
return state
|
234
281
|
})
|
235
|
-
)
|
236
|
-
|
237
|
-
|
282
|
+
suspenseRxMap.set(rx, resultRx)
|
283
|
+
return resultRx
|
284
|
+
}
|
238
285
|
|
239
286
|
/**
|
240
287
|
* @since 1.0.0
|
@@ -245,26 +292,16 @@ export const useRxSuspense = <A, E>(
|
|
245
292
|
options?: { readonly suspendOnWaiting?: boolean }
|
246
293
|
): Result.Success<A, E> | Result.Failure<A, E> => {
|
247
294
|
const registry = React.useContext(RegistryContext)
|
248
|
-
const
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
295
|
+
const promiseRx = React.useMemo(() => suspenseRx(registry, rx, options?.suspendOnWaiting ?? false), [
|
296
|
+
registry,
|
297
|
+
rx,
|
298
|
+
options?.suspendOnWaiting
|
299
|
+
])
|
300
|
+
const result = useStore(registry, promiseRx)
|
253
301
|
if (result._tag === "Suspended") {
|
254
|
-
if (!suspenseMounts.has(resultRx)) {
|
255
|
-
suspenseMounts.add(resultRx)
|
256
|
-
const unmount = registry.mount(resultRx)
|
257
|
-
result.promise.then(function() {
|
258
|
-
setTimeout(function() {
|
259
|
-
unmount()
|
260
|
-
suspenseMounts.delete(resultRx)
|
261
|
-
}, 1000)
|
262
|
-
})
|
263
|
-
}
|
264
302
|
throw result.promise
|
265
303
|
}
|
266
|
-
|
267
|
-
return result.value
|
304
|
+
return result.result
|
268
305
|
}
|
269
306
|
|
270
307
|
/**
|