@effect-rx/rx-react 0.12.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,290 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useRxValue = exports.useRxSuspenseSuccess = exports.useRxSuspense = exports.useRxSubscribe = exports.useRxSetPromise = exports.useRxSet = exports.useRxRefresh = exports.useRxRefProp = exports.useRxRef = exports.useRxMount = exports.useRx = exports.RxRef = exports.Rx = exports.Result = exports.RegistryContext = exports.Registry = void 0;
7
+ var Registry = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect-rx/rx/Registry"));
8
+ var _Registry = Registry;
9
+ exports.Registry = Registry;
10
+ var Result = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect-rx/rx/Result"));
11
+ var _Result = Result;
12
+ exports.Result = Result;
13
+ var Rx = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect-rx/rx/Rx"));
14
+ var _Rx = Rx;
15
+ exports.Rx = Rx;
16
+ var Cause = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Cause"));
17
+ var _GlobalValue = /*#__PURE__*/require("effect/GlobalValue");
18
+ var React = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("react"));
19
+ var _RxRef = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect-rx/rx/RxRef"));
20
+ exports.RxRef = _RxRef;
21
+ function _getRequireWildcardCache(e) {
22
+ if ("function" != typeof WeakMap) return null;
23
+ var r = new WeakMap(),
24
+ t = new WeakMap();
25
+ return (_getRequireWildcardCache = function (e) {
26
+ return e ? t : r;
27
+ })(e);
28
+ }
29
+ function _interopRequireWildcard(e, r) {
30
+ if (!r && e && e.__esModule) return e;
31
+ if (null === e || "object" != typeof e && "function" != typeof e) return {
32
+ default: e
33
+ };
34
+ var t = _getRequireWildcardCache(r);
35
+ if (t && t.has(e)) return t.get(e);
36
+ var n = {
37
+ __proto__: null
38
+ },
39
+ a = Object.defineProperty && Object.getOwnPropertyDescriptor;
40
+ for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) {
41
+ var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
42
+ i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
43
+ }
44
+ return n.default = e, t && t.set(e, n), n;
45
+ }
46
+ /**
47
+ * @since 1.0.0
48
+ */
49
+
50
+ /**
51
+ * @since 1.0.0
52
+ * @category modules
53
+ */
54
+
55
+ /**
56
+ * @since 1.0.0
57
+ * @category modules
58
+ */
59
+
60
+ /**
61
+ * @since 1.0.0
62
+ * @category modules
63
+ */
64
+
65
+ /**
66
+ * @since 1.0.0
67
+ * @category modules
68
+ */
69
+
70
+ /**
71
+ * @since 1.0.0
72
+ * @category context
73
+ */
74
+ const RegistryContext = exports.RegistryContext = /*#__PURE__*/React.createContext( /*#__PURE__*/Registry.make());
75
+ const storeRegistry = /*#__PURE__*/(0, _GlobalValue.globalValue)("@effect-rx/rx-react/storeRegistry", () => new WeakMap());
76
+ function makeStore(registry, rx) {
77
+ const stores = storeRegistry.get(registry) ?? storeRegistry.set(registry, new WeakMap()).get(registry);
78
+ const store = stores.get(rx);
79
+ if (store) {
80
+ return store;
81
+ }
82
+ const newStore = {
83
+ subscribe(f) {
84
+ return registry.subscribe(rx, f);
85
+ },
86
+ snapshot() {
87
+ return registry.get(rx);
88
+ }
89
+ };
90
+ stores.set(rx, newStore);
91
+ return newStore;
92
+ }
93
+ function useStore(registry, rx) {
94
+ const store = makeStore(registry, rx);
95
+ return React.useSyncExternalStore(store.subscribe, store.snapshot);
96
+ }
97
+ /**
98
+ * @since 1.0.0
99
+ * @category hooks
100
+ */
101
+ const useRxValue = (rx, f) => {
102
+ const registry = React.useContext(RegistryContext);
103
+ if (f) {
104
+ const rxB = React.useMemo(() => Rx.map(rx, f), [rx, f]);
105
+ return useStore(registry, rxB);
106
+ }
107
+ return useStore(registry, rx);
108
+ };
109
+ exports.useRxValue = useRxValue;
110
+ function mountRx(registry, rx) {
111
+ React.useEffect(() => registry.mount(rx), [rx, registry]);
112
+ }
113
+ function setRx(registry, rx) {
114
+ return React.useCallback(value => {
115
+ if (typeof value === "function") {
116
+ registry.set(rx, value(registry.get(rx)));
117
+ return;
118
+ } else {
119
+ registry.set(rx, value);
120
+ }
121
+ }, [registry, rx]);
122
+ }
123
+ function setRxPromise(registry, rx) {
124
+ const cancelRef = React.useRef(undefined);
125
+ if (!cancelRef.current) {
126
+ cancelRef.current = new Set();
127
+ }
128
+ React.useEffect(() => () => {
129
+ cancelRef.current.forEach(cancel => cancel());
130
+ cancelRef.current.clear();
131
+ }, []);
132
+ return React.useCallback(value => {
133
+ registry.set(rx, value);
134
+ return new Promise(resolve => {
135
+ const value = registry.get(rx);
136
+ if (Result.isSuccess(value) || Result.isFailure(value)) {
137
+ resolve(Result.toExit(value));
138
+ } else {
139
+ const cancel = registry.subscribe(rx, value => {
140
+ if (Result.isSuccess(value) || Result.isFailure(value)) {
141
+ cancelRef.current.delete(cancel);
142
+ cancel();
143
+ resolve(Result.toExit(value));
144
+ }
145
+ });
146
+ cancelRef.current.add(cancel);
147
+ }
148
+ });
149
+ }, [registry, rx]);
150
+ }
151
+ /**
152
+ * @since 1.0.0
153
+ * @category hooks
154
+ */
155
+ const useRxMount = rx => {
156
+ const registry = React.useContext(RegistryContext);
157
+ mountRx(registry, rx);
158
+ };
159
+ /**
160
+ * @since 1.0.0
161
+ * @category hooks
162
+ */
163
+ exports.useRxMount = useRxMount;
164
+ const useRxSet = rx => {
165
+ const registry = React.useContext(RegistryContext);
166
+ mountRx(registry, rx);
167
+ return setRx(registry, rx);
168
+ };
169
+ /**
170
+ * @since 1.0.0
171
+ * @category hooks
172
+ */
173
+ exports.useRxSet = useRxSet;
174
+ const useRxSetPromise = rx => {
175
+ const registry = React.useContext(RegistryContext);
176
+ return setRxPromise(registry, rx);
177
+ };
178
+ /**
179
+ * @since 1.0.0
180
+ * @category hooks
181
+ */
182
+ exports.useRxSetPromise = useRxSetPromise;
183
+ const useRxRefresh = rx => {
184
+ const registry = React.useContext(RegistryContext);
185
+ mountRx(registry, rx);
186
+ return React.useCallback(() => {
187
+ registry.refresh(rx);
188
+ }, [registry, rx]);
189
+ };
190
+ /**
191
+ * @since 1.0.0
192
+ * @category hooks
193
+ */
194
+ exports.useRxRefresh = useRxRefresh;
195
+ const useRx = rx => {
196
+ const registry = React.useContext(RegistryContext);
197
+ return [useStore(registry, rx), setRx(registry, rx)];
198
+ };
199
+ exports.useRx = useRx;
200
+ const suspenseRx = /*#__PURE__*/Rx.family(rx => Rx.readable(get => {
201
+ const result = get(rx);
202
+ if (result._tag === "Initial") {
203
+ return {
204
+ _tag: "Suspended",
205
+ promise: new Promise(resolve => get.addFinalizer(resolve))
206
+ };
207
+ }
208
+ return {
209
+ _tag: "Value",
210
+ value: result
211
+ };
212
+ }));
213
+ const suspenseRxWaiting = /*#__PURE__*/Rx.family(rx => Rx.readable(get => {
214
+ const result = get(rx);
215
+ if (result.waiting || result._tag === "Initial") {
216
+ return {
217
+ _tag: "Suspended",
218
+ promise: new Promise(resolve => get.addFinalizer(resolve))
219
+ };
220
+ }
221
+ return {
222
+ _tag: "Value",
223
+ value: result
224
+ };
225
+ }));
226
+ const suspenseMounts = /*#__PURE__*/(0, _GlobalValue.globalValue)("@effect-rx/rx-react/suspenseMounts", () => new Set());
227
+ /**
228
+ * @since 1.0.0
229
+ * @category hooks
230
+ */
231
+ const useRxSuspense = (rx, options) => {
232
+ const registry = React.useContext(RegistryContext);
233
+ const resultRx = React.useMemo(() => options?.suspendOnWaiting ? suspenseRxWaiting(rx) : suspenseRx(rx), [options?.suspendOnWaiting, rx]);
234
+ const result = useStore(registry, resultRx);
235
+ if (result._tag === "Suspended") {
236
+ if (!suspenseMounts.has(resultRx)) {
237
+ suspenseMounts.add(resultRx);
238
+ const unmount = registry.mount(resultRx);
239
+ result.promise.then(function () {
240
+ setTimeout(function () {
241
+ unmount();
242
+ suspenseMounts.delete(resultRx);
243
+ }, 1000);
244
+ });
245
+ }
246
+ throw result.promise;
247
+ }
248
+ return result.value;
249
+ };
250
+ /**
251
+ * @since 1.0.0
252
+ * @category hooks
253
+ */
254
+ exports.useRxSuspense = useRxSuspense;
255
+ const useRxSuspenseSuccess = (rx, options) => {
256
+ const result = useRxSuspense(rx, options);
257
+ if (result._tag === "Failure") {
258
+ throw Cause.squash(result.cause);
259
+ }
260
+ return result;
261
+ };
262
+ /**
263
+ * @since 1.0.0
264
+ * @category hooks
265
+ */
266
+ exports.useRxSuspenseSuccess = useRxSuspenseSuccess;
267
+ const useRxSubscribe = (rx, f, options) => {
268
+ const registry = React.useContext(RegistryContext);
269
+ React.useEffect(() => registry.subscribe(rx, f, options), [registry, rx, f, options?.immediate]);
270
+ };
271
+ /**
272
+ * @since 1.0.0
273
+ * @category hooks
274
+ */
275
+ exports.useRxSubscribe = useRxSubscribe;
276
+ const useRxRef = ref => {
277
+ const [value, setValue] = React.useState(ref.value);
278
+ React.useEffect(() => ref.subscribe(setValue), [ref]);
279
+ return value;
280
+ };
281
+ /**
282
+ * @since 1.0.0
283
+ * @category hooks
284
+ */
285
+ exports.useRxRef = useRxRef;
286
+ const useRxRefProp = (ref, prop) => {
287
+ return React.useMemo(() => ref.prop(prop), [ref, prop]);
288
+ };
289
+ exports.useRxRefProp = useRxRefProp;
290
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["Registry","_interopRequireWildcard","require","_Registry","exports","Result","_Result","Rx","_Rx","Cause","_GlobalValue","React","_RxRef","RxRef","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","RegistryContext","createContext","make","storeRegistry","globalValue","makeStore","registry","rx","stores","store","newStore","subscribe","f","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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"}
@@ -0,0 +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;AAExC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B;;;GAGG;AACH,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAA;AAClD;;;GAGG;AACH,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C;;;GAGG;AACH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACtC;;;GAGG;AACH,OAAO,KAAK,KAAK,MAAM,qBAAqB,CAAA;AAE5C;;;GAGG;AACH,eAAO,MAAM,eAAe,kCAA0D,CAAA;AAmCtF;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE;IACvB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACpB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;CAQxC,CAAA;AAmDD;;;GAGG;AACH,eAAO,MAAM,UAAU,uBAAsB,IAG5C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,6DAA4D,IAIhF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,0FAK3B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,wCAAuC,MAAM,IAMrE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,8FAE4C,IAAI,CAMjE,CAAA;AAwCD;;;GAGG;AACH,eAAO,MAAM,aAAa,mDAEd;IAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,gDAuBlD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,mDAErB;IAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,yBAOlD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,iCAEZ,IAAI,YACP;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,KACzC,IAMF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,qCAIpB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,2EAExB,CAAA"}
@@ -1,24 +1,37 @@
1
- import * as Registry from '@effect-rx/rx/Registry';
2
- export { Registry };
3
- import * as Result from '@effect-rx/rx/Result';
4
- export { Result };
5
- import * as Rx from '@effect-rx/rx/Rx';
6
- export { Rx };
7
- import * as Cause from 'effect/Cause';
8
- import { globalValue } from 'effect/GlobalValue';
9
- import * as React from 'react';
10
- import * as RxRef from '@effect-rx/rx/RxRef';
11
- export { RxRef };
12
-
13
1
  /**
14
2
  * @since 1.0.0
15
3
  */
16
-
4
+ import * as Registry from "@effect-rx/rx/Registry";
5
+ import * as Result from "@effect-rx/rx/Result";
6
+ import * as Rx from "@effect-rx/rx/Rx";
7
+ import * as Cause from "effect/Cause";
8
+ import { globalValue } from "effect/GlobalValue";
9
+ import * as React from "react";
10
+ /**
11
+ * @since 1.0.0
12
+ * @category modules
13
+ */
14
+ export * as Registry from "@effect-rx/rx/Registry";
15
+ /**
16
+ * @since 1.0.0
17
+ * @category modules
18
+ */
19
+ export * as Result from "@effect-rx/rx/Result";
20
+ /**
21
+ * @since 1.0.0
22
+ * @category modules
23
+ */
24
+ export * as Rx from "@effect-rx/rx/Rx";
25
+ /**
26
+ * @since 1.0.0
27
+ * @category modules
28
+ */
29
+ export * as RxRef from "@effect-rx/rx/RxRef";
17
30
  /**
18
31
  * @since 1.0.0
19
32
  * @category context
20
33
  */
21
- const RegistryContext = /*#__PURE__*/React.createContext( /*#__PURE__*/Registry.make());
34
+ export const RegistryContext = /*#__PURE__*/React.createContext( /*#__PURE__*/Registry.make());
22
35
  const storeRegistry = /*#__PURE__*/globalValue("@effect-rx/rx-react/storeRegistry", () => new WeakMap());
23
36
  function makeStore(registry, rx) {
24
37
  const stores = storeRegistry.get(registry) ?? storeRegistry.set(registry, new WeakMap()).get(registry);
@@ -41,12 +54,11 @@ function useStore(registry, rx) {
41
54
  const store = makeStore(registry, rx);
42
55
  return React.useSyncExternalStore(store.subscribe, store.snapshot);
43
56
  }
44
-
45
57
  /**
46
58
  * @since 1.0.0
47
59
  * @category hooks
48
60
  */
49
- const useRxValue = (rx, f) => {
61
+ export const useRxValue = (rx, f) => {
50
62
  const registry = React.useContext(RegistryContext);
51
63
  if (f) {
52
64
  const rxB = React.useMemo(() => Rx.map(rx, f), [rx, f]);
@@ -95,52 +107,47 @@ function setRxPromise(registry, rx) {
95
107
  });
96
108
  }, [registry, rx]);
97
109
  }
98
-
99
110
  /**
100
111
  * @since 1.0.0
101
112
  * @category hooks
102
113
  */
103
- const useRxMount = rx => {
114
+ export const useRxMount = rx => {
104
115
  const registry = React.useContext(RegistryContext);
105
116
  mountRx(registry, rx);
106
117
  };
107
-
108
118
  /**
109
119
  * @since 1.0.0
110
120
  * @category hooks
111
121
  */
112
- const useRxSet = rx => {
122
+ export const useRxSet = rx => {
113
123
  const registry = React.useContext(RegistryContext);
114
124
  mountRx(registry, rx);
115
125
  return setRx(registry, rx);
116
126
  };
117
-
118
127
  /**
119
128
  * @since 1.0.0
120
129
  * @category hooks
121
130
  */
122
- const useRxSetPromise = rx => {
131
+ export const useRxSetPromise = rx => {
123
132
  const registry = React.useContext(RegistryContext);
124
133
  return setRxPromise(registry, rx);
125
134
  };
126
-
127
135
  /**
128
136
  * @since 1.0.0
129
137
  * @category hooks
130
138
  */
131
- const useRxRefresh = rx => {
139
+ export const useRxRefresh = rx => {
132
140
  const registry = React.useContext(RegistryContext);
133
141
  mountRx(registry, rx);
134
142
  return React.useCallback(() => {
135
143
  registry.refresh(rx);
136
144
  }, [registry, rx]);
137
145
  };
138
-
139
146
  /**
140
147
  * @since 1.0.0
141
148
  * @category hooks
142
149
  */
143
- const useRx = rx => {
150
+ export const useRx = rx => {
144
151
  const registry = React.useContext(RegistryContext);
145
152
  return [useStore(registry, rx), setRx(registry, rx)];
146
153
  };
@@ -171,12 +178,11 @@ const suspenseRxWaiting = /*#__PURE__*/Rx.family(rx => Rx.readable(get => {
171
178
  };
172
179
  }));
173
180
  const suspenseMounts = /*#__PURE__*/globalValue("@effect-rx/rx-react/suspenseMounts", () => new Set());
174
-
175
181
  /**
176
182
  * @since 1.0.0
177
183
  * @category hooks
178
184
  */
179
- const useRxSuspense = (rx, options) => {
185
+ export const useRxSuspense = (rx, options) => {
180
186
  const registry = React.useContext(RegistryContext);
181
187
  const resultRx = React.useMemo(() => options?.suspendOnWaiting ? suspenseRxWaiting(rx) : suspenseRx(rx), [options?.suspendOnWaiting, rx]);
182
188
  const result = useStore(registry, resultRx);
@@ -195,44 +201,39 @@ const useRxSuspense = (rx, options) => {
195
201
  }
196
202
  return result.value;
197
203
  };
198
-
199
204
  /**
200
205
  * @since 1.0.0
201
206
  * @category hooks
202
207
  */
203
- const useRxSuspenseSuccess = (rx, options) => {
208
+ export const useRxSuspenseSuccess = (rx, options) => {
204
209
  const result = useRxSuspense(rx, options);
205
210
  if (result._tag === "Failure") {
206
211
  throw Cause.squash(result.cause);
207
212
  }
208
213
  return result;
209
214
  };
210
-
211
215
  /**
212
216
  * @since 1.0.0
213
217
  * @category hooks
214
218
  */
215
- const useRxSubscribe = (rx, f, options) => {
219
+ export const useRxSubscribe = (rx, f, options) => {
216
220
  const registry = React.useContext(RegistryContext);
217
221
  React.useEffect(() => registry.subscribe(rx, f, options), [registry, rx, f, options?.immediate]);
218
222
  };
219
-
220
223
  /**
221
224
  * @since 1.0.0
222
225
  * @category hooks
223
226
  */
224
- const useRxRef = ref => {
227
+ export const useRxRef = ref => {
225
228
  const [value, setValue] = React.useState(ref.value);
226
229
  React.useEffect(() => ref.subscribe(setValue), [ref]);
227
230
  return value;
228
231
  };
229
-
230
232
  /**
231
233
  * @since 1.0.0
232
234
  * @category hooks
233
235
  */
234
- const useRxRefProp = (ref, prop) => {
236
+ export const useRxRefProp = (ref, prop) => {
235
237
  return React.useMemo(() => ref.prop(prop), [ref, prop]);
236
238
  };
237
-
238
- export { RegistryContext, useRx, useRxMount, useRxRef, useRxRefProp, useRxRefresh, useRxSet, useRxSetPromise, useRxSubscribe, useRxSuspense, useRxSuspenseSuccess, useRxValue };
239
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["Registry","Result","Rx","Cause","globalValue","React","RxRef","RegistryContext","createContext","make","storeRegistry","WeakMap","makeStore","registry","rx","stores","get","set","store","newStore","subscribe","f","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","has","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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"}
@@ -0,0 +1,4 @@
1
+ {
2
+ "type": "module",
3
+ "sideEffects": []
4
+ }
package/package.json CHANGED
@@ -1,63 +1,30 @@
1
1
  {
2
2
  "name": "@effect-rx/rx-react",
3
- "version": "0.12.0",
3
+ "version": "0.14.0",
4
4
  "description": "Reactive toolkit for Effect",
5
- "main": "dist/effect-rx-rx-react.cjs.js",
6
- "module": "dist/effect-rx-rx-react.esm.js",
7
- "publishConfig": {
8
- "access": "public"
9
- },
5
+ "license": "MIT",
10
6
  "repository": {
11
7
  "type": "git",
12
8
  "url": "https://github.com/effect-ts/rx.git"
13
9
  },
14
- "homepage": "https://github.com/effect-ts/rx",
15
- "preconstruct": {
16
- "entrypoints": [
17
- "*.ts"
18
- ],
19
- "distFilenameStrategy": "full",
20
- "exports": {
21
- "importConditionDefaultExport": "default"
22
- }
23
- },
24
- "effect": {
25
- "includeInternal": false
26
- },
27
- "keywords": [],
28
- "author": "Effect contributors",
29
- "license": "MIT",
30
10
  "sideEffects": [],
31
- "devDependencies": {
32
- "@types/react": "^18.2.34",
33
- "effect": "2.0.0-next.54",
34
- "react": "^18.2.0"
11
+ "author": "Effect contributors",
12
+ "dependencies": {
13
+ "@effect-rx/rx": "^0.14.0"
35
14
  },
36
15
  "peerDependencies": {
37
- "effect": "2.0.0-next.54",
16
+ "effect": "2.0.0-next.56",
38
17
  "react": "^18"
39
18
  },
40
- "dependencies": {
41
- "@effect-rx/rx": "^0.12.0"
42
- },
43
- "files": [
44
- "src",
45
- "dist"
46
- ],
19
+ "main": "./dist/cjs/index.js",
20
+ "module": "./dist/esm/index.js",
21
+ "types": "./dist/dts/index.d.ts",
47
22
  "exports": {
23
+ "./package.json": "./package.json",
48
24
  ".": {
49
- "types": "./dist/declarations/src/index.d.ts",
50
- "module": "./dist/effect-rx-rx-react.esm.js",
51
- "import": "./dist/effect-rx-rx-react.cjs.mjs",
52
- "default": "./dist/effect-rx-rx-react.cjs.js"
53
- },
54
- "./package.json": "./package.json"
55
- },
56
- "scripts": {
57
- "docs": "docgen",
58
- "lint": "eslint src/**/*.ts test/**/*.ts",
59
- "tc": "tsc --noEmit",
60
- "test": "vitest",
61
- "coverage": "vitest run --coverage"
25
+ "types": "./dist/dts/index.d.ts",
26
+ "import": "./dist/esm/index.js",
27
+ "default": "./dist/cjs/index.js"
28
+ }
62
29
  }
63
30
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"../../../src","sources":["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;AAExC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B;;;GAGG;AACH,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAA;AAClD;;;GAGG;AACH,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C;;;GAGG;AACH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACtC;;;GAGG;AACH,OAAO,KAAK,KAAK,MAAM,qBAAqB,CAAA;AAE5C;;;GAGG;AACH,eAAO,MAAM,eAAe,kCAA0D,CAAA;AAmCtF;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE;IACvB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACpB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;CAQxC,CAAA;AAmDD;;;GAGG;AACH,eAAO,MAAM,UAAU,uBAAsB,IAG5C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,6DAA4D,IAIhF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,0FAK3B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,wCAAuC,MAAM,IAMrE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,8FAE4C,IAAI,CAMjE,CAAA;AAwCD;;;GAGG;AACH,eAAO,MAAM,aAAa,mDAEd;IAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,gDAuBlD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,mDAErB;IAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,yBAOlD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,iCAEZ,IAAI,YACP;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,KACzC,IAMF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,qCAIpB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,2EAExB,CAAA"}
@@ -1,2 +0,0 @@
1
- export * from "./declarations/src/index.js";
2
- //# sourceMappingURL=effect-rx-rx-react.cjs.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"effect-rx-rx-react.cjs.d.mts","sourceRoot":"","sources":["./declarations/src/index.d.ts"],"names":[],"mappings":"AAAA"}
@@ -1,2 +0,0 @@
1
- export * from "./declarations/src/index";
2
- //# sourceMappingURL=effect-rx-rx-react.cjs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"effect-rx-rx-react.cjs.d.ts","sourceRoot":"","sources":["./declarations/src/index.d.ts"],"names":[],"mappings":"AAAA"}
@@ -1,278 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var Registry = require('@effect-rx/rx/Registry');
6
- var Result = require('@effect-rx/rx/Result');
7
- var Rx = require('@effect-rx/rx/Rx');
8
- var Cause = require('effect/Cause');
9
- var GlobalValue = require('effect/GlobalValue');
10
- var React = require('react');
11
- var RxRef = require('@effect-rx/rx/RxRef');
12
-
13
- function _interopNamespace(e) {
14
- if (e && e.__esModule) return e;
15
- var n = Object.create(null);
16
- if (e) {
17
- Object.keys(e).forEach(function (k) {
18
- if (k !== 'default') {
19
- var d = Object.getOwnPropertyDescriptor(e, k);
20
- Object.defineProperty(n, k, d.get ? d : {
21
- enumerable: true,
22
- get: function () { return e[k]; }
23
- });
24
- }
25
- });
26
- }
27
- n["default"] = e;
28
- return Object.freeze(n);
29
- }
30
-
31
- var Registry__namespace = /*#__PURE__*/_interopNamespace(Registry);
32
- var Result__namespace = /*#__PURE__*/_interopNamespace(Result);
33
- var Rx__namespace = /*#__PURE__*/_interopNamespace(Rx);
34
- var Cause__namespace = /*#__PURE__*/_interopNamespace(Cause);
35
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
36
- var RxRef__namespace = /*#__PURE__*/_interopNamespace(RxRef);
37
-
38
- /**
39
- * @since 1.0.0
40
- */
41
-
42
- /**
43
- * @since 1.0.0
44
- * @category context
45
- */
46
- const RegistryContext = /*#__PURE__*/React__namespace.createContext( /*#__PURE__*/Registry__namespace.make());
47
- const storeRegistry = /*#__PURE__*/GlobalValue.globalValue("@effect-rx/rx-react/storeRegistry", () => new WeakMap());
48
- function makeStore(registry, rx) {
49
- const stores = storeRegistry.get(registry) ?? storeRegistry.set(registry, new WeakMap()).get(registry);
50
- const store = stores.get(rx);
51
- if (store) {
52
- return store;
53
- }
54
- const newStore = {
55
- subscribe(f) {
56
- return registry.subscribe(rx, f);
57
- },
58
- snapshot() {
59
- return registry.get(rx);
60
- }
61
- };
62
- stores.set(rx, newStore);
63
- return newStore;
64
- }
65
- function useStore(registry, rx) {
66
- const store = makeStore(registry, rx);
67
- return React__namespace.useSyncExternalStore(store.subscribe, store.snapshot);
68
- }
69
-
70
- /**
71
- * @since 1.0.0
72
- * @category hooks
73
- */
74
- const useRxValue = (rx, f) => {
75
- const registry = React__namespace.useContext(RegistryContext);
76
- if (f) {
77
- const rxB = React__namespace.useMemo(() => Rx__namespace.map(rx, f), [rx, f]);
78
- return useStore(registry, rxB);
79
- }
80
- return useStore(registry, rx);
81
- };
82
- function mountRx(registry, rx) {
83
- React__namespace.useEffect(() => registry.mount(rx), [rx, registry]);
84
- }
85
- function setRx(registry, rx) {
86
- return React__namespace.useCallback(value => {
87
- if (typeof value === "function") {
88
- registry.set(rx, value(registry.get(rx)));
89
- return;
90
- } else {
91
- registry.set(rx, value);
92
- }
93
- }, [registry, rx]);
94
- }
95
- function setRxPromise(registry, rx) {
96
- const cancelRef = React__namespace.useRef(undefined);
97
- if (!cancelRef.current) {
98
- cancelRef.current = new Set();
99
- }
100
- React__namespace.useEffect(() => () => {
101
- cancelRef.current.forEach(cancel => cancel());
102
- cancelRef.current.clear();
103
- }, []);
104
- return React__namespace.useCallback(value => {
105
- registry.set(rx, value);
106
- return new Promise(resolve => {
107
- const value = registry.get(rx);
108
- if (Result__namespace.isSuccess(value) || Result__namespace.isFailure(value)) {
109
- resolve(Result__namespace.toExit(value));
110
- } else {
111
- const cancel = registry.subscribe(rx, value => {
112
- if (Result__namespace.isSuccess(value) || Result__namespace.isFailure(value)) {
113
- cancelRef.current.delete(cancel);
114
- cancel();
115
- resolve(Result__namespace.toExit(value));
116
- }
117
- });
118
- cancelRef.current.add(cancel);
119
- }
120
- });
121
- }, [registry, rx]);
122
- }
123
-
124
- /**
125
- * @since 1.0.0
126
- * @category hooks
127
- */
128
- const useRxMount = rx => {
129
- const registry = React__namespace.useContext(RegistryContext);
130
- mountRx(registry, rx);
131
- };
132
-
133
- /**
134
- * @since 1.0.0
135
- * @category hooks
136
- */
137
- const useRxSet = rx => {
138
- const registry = React__namespace.useContext(RegistryContext);
139
- mountRx(registry, rx);
140
- return setRx(registry, rx);
141
- };
142
-
143
- /**
144
- * @since 1.0.0
145
- * @category hooks
146
- */
147
- const useRxSetPromise = rx => {
148
- const registry = React__namespace.useContext(RegistryContext);
149
- return setRxPromise(registry, rx);
150
- };
151
-
152
- /**
153
- * @since 1.0.0
154
- * @category hooks
155
- */
156
- const useRxRefresh = rx => {
157
- const registry = React__namespace.useContext(RegistryContext);
158
- mountRx(registry, rx);
159
- return React__namespace.useCallback(() => {
160
- registry.refresh(rx);
161
- }, [registry, rx]);
162
- };
163
-
164
- /**
165
- * @since 1.0.0
166
- * @category hooks
167
- */
168
- const useRx = rx => {
169
- const registry = React__namespace.useContext(RegistryContext);
170
- return [useStore(registry, rx), setRx(registry, rx)];
171
- };
172
- const suspenseRx = /*#__PURE__*/Rx__namespace.family(rx => Rx__namespace.readable(get => {
173
- const result = get(rx);
174
- if (result._tag === "Initial") {
175
- return {
176
- _tag: "Suspended",
177
- promise: new Promise(resolve => get.addFinalizer(resolve))
178
- };
179
- }
180
- return {
181
- _tag: "Value",
182
- value: result
183
- };
184
- }));
185
- const suspenseRxWaiting = /*#__PURE__*/Rx__namespace.family(rx => Rx__namespace.readable(get => {
186
- const result = get(rx);
187
- if (result.waiting || result._tag === "Initial") {
188
- return {
189
- _tag: "Suspended",
190
- promise: new Promise(resolve => get.addFinalizer(resolve))
191
- };
192
- }
193
- return {
194
- _tag: "Value",
195
- value: result
196
- };
197
- }));
198
- const suspenseMounts = /*#__PURE__*/GlobalValue.globalValue("@effect-rx/rx-react/suspenseMounts", () => new Set());
199
-
200
- /**
201
- * @since 1.0.0
202
- * @category hooks
203
- */
204
- const useRxSuspense = (rx, options) => {
205
- const registry = React__namespace.useContext(RegistryContext);
206
- const resultRx = React__namespace.useMemo(() => options?.suspendOnWaiting ? suspenseRxWaiting(rx) : suspenseRx(rx), [options?.suspendOnWaiting, rx]);
207
- const result = useStore(registry, resultRx);
208
- if (result._tag === "Suspended") {
209
- if (!suspenseMounts.has(resultRx)) {
210
- suspenseMounts.add(resultRx);
211
- const unmount = registry.mount(resultRx);
212
- result.promise.then(function () {
213
- setTimeout(function () {
214
- unmount();
215
- suspenseMounts.delete(resultRx);
216
- }, 1000);
217
- });
218
- }
219
- throw result.promise;
220
- }
221
- return result.value;
222
- };
223
-
224
- /**
225
- * @since 1.0.0
226
- * @category hooks
227
- */
228
- const useRxSuspenseSuccess = (rx, options) => {
229
- const result = useRxSuspense(rx, options);
230
- if (result._tag === "Failure") {
231
- throw Cause__namespace.squash(result.cause);
232
- }
233
- return result;
234
- };
235
-
236
- /**
237
- * @since 1.0.0
238
- * @category hooks
239
- */
240
- const useRxSubscribe = (rx, f, options) => {
241
- const registry = React__namespace.useContext(RegistryContext);
242
- React__namespace.useEffect(() => registry.subscribe(rx, f, options), [registry, rx, f, options?.immediate]);
243
- };
244
-
245
- /**
246
- * @since 1.0.0
247
- * @category hooks
248
- */
249
- const useRxRef = ref => {
250
- const [value, setValue] = React__namespace.useState(ref.value);
251
- React__namespace.useEffect(() => ref.subscribe(setValue), [ref]);
252
- return value;
253
- };
254
-
255
- /**
256
- * @since 1.0.0
257
- * @category hooks
258
- */
259
- const useRxRefProp = (ref, prop) => {
260
- return React__namespace.useMemo(() => ref.prop(prop), [ref, prop]);
261
- };
262
-
263
- exports.Registry = Registry__namespace;
264
- exports.Result = Result__namespace;
265
- exports.Rx = Rx__namespace;
266
- exports.RxRef = RxRef__namespace;
267
- exports.RegistryContext = RegistryContext;
268
- exports.useRx = useRx;
269
- exports.useRxMount = useRxMount;
270
- exports.useRxRef = useRxRef;
271
- exports.useRxRefProp = useRxRefProp;
272
- exports.useRxRefresh = useRxRefresh;
273
- exports.useRxSet = useRxSet;
274
- exports.useRxSetPromise = useRxSetPromise;
275
- exports.useRxSubscribe = useRxSubscribe;
276
- exports.useRxSuspense = useRxSuspense;
277
- exports.useRxSuspenseSuccess = useRxSuspenseSuccess;
278
- exports.useRxValue = useRxValue;
@@ -1,7 +0,0 @@
1
- 'use strict';
2
-
3
- if (process.env.NODE_ENV === "production") {
4
- module.exports = require("./effect-rx-rx-react.cjs.prod.js");
5
- } else {
6
- module.exports = require("./effect-rx-rx-react.cjs.dev.js");
7
- }
@@ -1,18 +0,0 @@
1
- export {
2
- Registry,
3
- RegistryContext,
4
- Result,
5
- Rx,
6
- RxRef,
7
- useRx,
8
- useRxMount,
9
- useRxRef,
10
- useRxRefProp,
11
- useRxRefresh,
12
- useRxSet,
13
- useRxSetPromise,
14
- useRxSubscribe,
15
- useRxSuspense,
16
- useRxSuspenseSuccess,
17
- useRxValue
18
- } from "./effect-rx-rx-react.cjs.js";
@@ -1,278 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var Registry = require('@effect-rx/rx/Registry');
6
- var Result = require('@effect-rx/rx/Result');
7
- var Rx = require('@effect-rx/rx/Rx');
8
- var Cause = require('effect/Cause');
9
- var GlobalValue = require('effect/GlobalValue');
10
- var React = require('react');
11
- var RxRef = require('@effect-rx/rx/RxRef');
12
-
13
- function _interopNamespace(e) {
14
- if (e && e.__esModule) return e;
15
- var n = Object.create(null);
16
- if (e) {
17
- Object.keys(e).forEach(function (k) {
18
- if (k !== 'default') {
19
- var d = Object.getOwnPropertyDescriptor(e, k);
20
- Object.defineProperty(n, k, d.get ? d : {
21
- enumerable: true,
22
- get: function () { return e[k]; }
23
- });
24
- }
25
- });
26
- }
27
- n["default"] = e;
28
- return Object.freeze(n);
29
- }
30
-
31
- var Registry__namespace = /*#__PURE__*/_interopNamespace(Registry);
32
- var Result__namespace = /*#__PURE__*/_interopNamespace(Result);
33
- var Rx__namespace = /*#__PURE__*/_interopNamespace(Rx);
34
- var Cause__namespace = /*#__PURE__*/_interopNamespace(Cause);
35
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
36
- var RxRef__namespace = /*#__PURE__*/_interopNamespace(RxRef);
37
-
38
- /**
39
- * @since 1.0.0
40
- */
41
-
42
- /**
43
- * @since 1.0.0
44
- * @category context
45
- */
46
- const RegistryContext = /*#__PURE__*/React__namespace.createContext( /*#__PURE__*/Registry__namespace.make());
47
- const storeRegistry = /*#__PURE__*/GlobalValue.globalValue("@effect-rx/rx-react/storeRegistry", () => new WeakMap());
48
- function makeStore(registry, rx) {
49
- const stores = storeRegistry.get(registry) ?? storeRegistry.set(registry, new WeakMap()).get(registry);
50
- const store = stores.get(rx);
51
- if (store) {
52
- return store;
53
- }
54
- const newStore = {
55
- subscribe(f) {
56
- return registry.subscribe(rx, f);
57
- },
58
- snapshot() {
59
- return registry.get(rx);
60
- }
61
- };
62
- stores.set(rx, newStore);
63
- return newStore;
64
- }
65
- function useStore(registry, rx) {
66
- const store = makeStore(registry, rx);
67
- return React__namespace.useSyncExternalStore(store.subscribe, store.snapshot);
68
- }
69
-
70
- /**
71
- * @since 1.0.0
72
- * @category hooks
73
- */
74
- const useRxValue = (rx, f) => {
75
- const registry = React__namespace.useContext(RegistryContext);
76
- if (f) {
77
- const rxB = React__namespace.useMemo(() => Rx__namespace.map(rx, f), [rx, f]);
78
- return useStore(registry, rxB);
79
- }
80
- return useStore(registry, rx);
81
- };
82
- function mountRx(registry, rx) {
83
- React__namespace.useEffect(() => registry.mount(rx), [rx, registry]);
84
- }
85
- function setRx(registry, rx) {
86
- return React__namespace.useCallback(value => {
87
- if (typeof value === "function") {
88
- registry.set(rx, value(registry.get(rx)));
89
- return;
90
- } else {
91
- registry.set(rx, value);
92
- }
93
- }, [registry, rx]);
94
- }
95
- function setRxPromise(registry, rx) {
96
- const cancelRef = React__namespace.useRef(undefined);
97
- if (!cancelRef.current) {
98
- cancelRef.current = new Set();
99
- }
100
- React__namespace.useEffect(() => () => {
101
- cancelRef.current.forEach(cancel => cancel());
102
- cancelRef.current.clear();
103
- }, []);
104
- return React__namespace.useCallback(value => {
105
- registry.set(rx, value);
106
- return new Promise(resolve => {
107
- const value = registry.get(rx);
108
- if (Result__namespace.isSuccess(value) || Result__namespace.isFailure(value)) {
109
- resolve(Result__namespace.toExit(value));
110
- } else {
111
- const cancel = registry.subscribe(rx, value => {
112
- if (Result__namespace.isSuccess(value) || Result__namespace.isFailure(value)) {
113
- cancelRef.current.delete(cancel);
114
- cancel();
115
- resolve(Result__namespace.toExit(value));
116
- }
117
- });
118
- cancelRef.current.add(cancel);
119
- }
120
- });
121
- }, [registry, rx]);
122
- }
123
-
124
- /**
125
- * @since 1.0.0
126
- * @category hooks
127
- */
128
- const useRxMount = rx => {
129
- const registry = React__namespace.useContext(RegistryContext);
130
- mountRx(registry, rx);
131
- };
132
-
133
- /**
134
- * @since 1.0.0
135
- * @category hooks
136
- */
137
- const useRxSet = rx => {
138
- const registry = React__namespace.useContext(RegistryContext);
139
- mountRx(registry, rx);
140
- return setRx(registry, rx);
141
- };
142
-
143
- /**
144
- * @since 1.0.0
145
- * @category hooks
146
- */
147
- const useRxSetPromise = rx => {
148
- const registry = React__namespace.useContext(RegistryContext);
149
- return setRxPromise(registry, rx);
150
- };
151
-
152
- /**
153
- * @since 1.0.0
154
- * @category hooks
155
- */
156
- const useRxRefresh = rx => {
157
- const registry = React__namespace.useContext(RegistryContext);
158
- mountRx(registry, rx);
159
- return React__namespace.useCallback(() => {
160
- registry.refresh(rx);
161
- }, [registry, rx]);
162
- };
163
-
164
- /**
165
- * @since 1.0.0
166
- * @category hooks
167
- */
168
- const useRx = rx => {
169
- const registry = React__namespace.useContext(RegistryContext);
170
- return [useStore(registry, rx), setRx(registry, rx)];
171
- };
172
- const suspenseRx = /*#__PURE__*/Rx__namespace.family(rx => Rx__namespace.readable(get => {
173
- const result = get(rx);
174
- if (result._tag === "Initial") {
175
- return {
176
- _tag: "Suspended",
177
- promise: new Promise(resolve => get.addFinalizer(resolve))
178
- };
179
- }
180
- return {
181
- _tag: "Value",
182
- value: result
183
- };
184
- }));
185
- const suspenseRxWaiting = /*#__PURE__*/Rx__namespace.family(rx => Rx__namespace.readable(get => {
186
- const result = get(rx);
187
- if (result.waiting || result._tag === "Initial") {
188
- return {
189
- _tag: "Suspended",
190
- promise: new Promise(resolve => get.addFinalizer(resolve))
191
- };
192
- }
193
- return {
194
- _tag: "Value",
195
- value: result
196
- };
197
- }));
198
- const suspenseMounts = /*#__PURE__*/GlobalValue.globalValue("@effect-rx/rx-react/suspenseMounts", () => new Set());
199
-
200
- /**
201
- * @since 1.0.0
202
- * @category hooks
203
- */
204
- const useRxSuspense = (rx, options) => {
205
- const registry = React__namespace.useContext(RegistryContext);
206
- const resultRx = React__namespace.useMemo(() => options?.suspendOnWaiting ? suspenseRxWaiting(rx) : suspenseRx(rx), [options?.suspendOnWaiting, rx]);
207
- const result = useStore(registry, resultRx);
208
- if (result._tag === "Suspended") {
209
- if (!suspenseMounts.has(resultRx)) {
210
- suspenseMounts.add(resultRx);
211
- const unmount = registry.mount(resultRx);
212
- result.promise.then(function () {
213
- setTimeout(function () {
214
- unmount();
215
- suspenseMounts.delete(resultRx);
216
- }, 1000);
217
- });
218
- }
219
- throw result.promise;
220
- }
221
- return result.value;
222
- };
223
-
224
- /**
225
- * @since 1.0.0
226
- * @category hooks
227
- */
228
- const useRxSuspenseSuccess = (rx, options) => {
229
- const result = useRxSuspense(rx, options);
230
- if (result._tag === "Failure") {
231
- throw Cause__namespace.squash(result.cause);
232
- }
233
- return result;
234
- };
235
-
236
- /**
237
- * @since 1.0.0
238
- * @category hooks
239
- */
240
- const useRxSubscribe = (rx, f, options) => {
241
- const registry = React__namespace.useContext(RegistryContext);
242
- React__namespace.useEffect(() => registry.subscribe(rx, f, options), [registry, rx, f, options?.immediate]);
243
- };
244
-
245
- /**
246
- * @since 1.0.0
247
- * @category hooks
248
- */
249
- const useRxRef = ref => {
250
- const [value, setValue] = React__namespace.useState(ref.value);
251
- React__namespace.useEffect(() => ref.subscribe(setValue), [ref]);
252
- return value;
253
- };
254
-
255
- /**
256
- * @since 1.0.0
257
- * @category hooks
258
- */
259
- const useRxRefProp = (ref, prop) => {
260
- return React__namespace.useMemo(() => ref.prop(prop), [ref, prop]);
261
- };
262
-
263
- exports.Registry = Registry__namespace;
264
- exports.Result = Result__namespace;
265
- exports.Rx = Rx__namespace;
266
- exports.RxRef = RxRef__namespace;
267
- exports.RegistryContext = RegistryContext;
268
- exports.useRx = useRx;
269
- exports.useRxMount = useRxMount;
270
- exports.useRxRef = useRxRef;
271
- exports.useRxRefProp = useRxRefProp;
272
- exports.useRxRefresh = useRxRefresh;
273
- exports.useRxSet = useRxSet;
274
- exports.useRxSetPromise = useRxSetPromise;
275
- exports.useRxSubscribe = useRxSubscribe;
276
- exports.useRxSuspense = useRxSuspense;
277
- exports.useRxSuspenseSuccess = useRxSuspenseSuccess;
278
- exports.useRxValue = useRxValue;
package/src/tsconfig.json DELETED
@@ -1,48 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "moduleDetection": "force",
4
- "downlevelIteration": true,
5
- "resolveJsonModule": true,
6
- "esModuleInterop": true,
7
- "skipLibCheck": true,
8
- "emitDecoratorMetadata": true,
9
- "experimentalDecorators": true,
10
- "preserveSymlinks": true,
11
- "moduleResolution": "NodeNext",
12
- "lib": [
13
- "ES2021",
14
- "DOM",
15
- "DOM.Iterable"
16
- ],
17
- "sourceMap": true,
18
- "strict": true,
19
- "noImplicitReturns": false,
20
- "noUnusedLocals": true,
21
- "noUnusedParameters": false,
22
- "noFallthroughCasesInSwitch": true,
23
- "noEmitOnError": false,
24
- "allowJs": false,
25
- "checkJs": false,
26
- "forceConsistentCasingInFileNames": true,
27
- "stripInternal": true,
28
- "noImplicitAny": true,
29
- "noImplicitThis": true,
30
- "noUncheckedIndexedAccess": false,
31
- "strictNullChecks": true,
32
- "target": "ES2021",
33
- "module": "NodeNext",
34
- "incremental": true,
35
- "removeComments": false,
36
- "paths": {
37
- "@effect-rx/rx-react": [
38
- "./index.ts"
39
- ],
40
- "@effect-rx/rx-react/*": [
41
- "./*.ts"
42
- ]
43
- }
44
- },
45
- "include": [
46
- "**/*"
47
- ]
48
- }
File without changes