@effect-atom/atom-react 0.1.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.
- package/Hooks/package.json +6 -0
- package/LICENSE +21 -0
- package/README.md +3 -0
- package/ReactHydration/package.json +6 -0
- package/RegistryContext/package.json +6 -0
- package/dist/cjs/Hooks.js +237 -0
- package/dist/cjs/Hooks.js.map +1 -0
- package/dist/cjs/ReactHydration.js +95 -0
- package/dist/cjs/ReactHydration.js.map +1 -0
- package/dist/cjs/RegistryContext.js +83 -0
- package/dist/cjs/RegistryContext.js.map +1 -0
- package/dist/cjs/index.js +68 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/dts/Hooks.d.ts +80 -0
- package/dist/dts/Hooks.d.ts.map +1 -0
- package/dist/dts/ReactHydration.d.ts +16 -0
- package/dist/dts/ReactHydration.d.ts.map +1 -0
- package/dist/dts/RegistryContext.d.ts +25 -0
- package/dist/dts/RegistryContext.d.ts.map +1 -0
- package/dist/dts/index.d.ts +39 -0
- package/dist/dts/index.d.ts.map +1 -0
- package/dist/esm/Hooks.js +200 -0
- package/dist/esm/Hooks.js.map +1 -0
- package/dist/esm/ReactHydration.js +68 -0
- package/dist/esm/ReactHydration.js.map +1 -0
- package/dist/esm/RegistryContext.js +55 -0
- package/dist/esm/RegistryContext.js.map +1 -0
- package/dist/esm/index.js +39 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +4 -0
- package/package.json +60 -0
- package/src/Hooks.ts +341 -0
- package/src/ReactHydration.ts +84 -0
- package/src/RegistryContext.ts +64 -0
- package/src/index.ts +45 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023-present The Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
"use client";
|
|
7
|
+
|
|
8
|
+
Object.defineProperty(exports, "__esModule", {
|
|
9
|
+
value: true
|
|
10
|
+
});
|
|
11
|
+
exports.useAtomValue = exports.useAtomSuspense = exports.useAtomSubscribe = exports.useAtomSet = exports.useAtomRefresh = exports.useAtomRefPropValue = exports.useAtomRefProp = exports.useAtomRef = exports.useAtomMount = exports.useAtomInitialValues = exports.useAtom = void 0;
|
|
12
|
+
var Atom = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@effect-atom/atom/Atom"));
|
|
13
|
+
var Registry = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@effect-atom/atom/Registry"));
|
|
14
|
+
var _effect = /*#__PURE__*/require("effect");
|
|
15
|
+
var Cause = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Cause"));
|
|
16
|
+
var Exit = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Exit"));
|
|
17
|
+
var _GlobalValue = /*#__PURE__*/require("effect/GlobalValue");
|
|
18
|
+
var React = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("react"));
|
|
19
|
+
var _RegistryContext = /*#__PURE__*/require("./RegistryContext.js");
|
|
20
|
+
function _interopRequireWildcard(e, t) {
|
|
21
|
+
if ("function" == typeof WeakMap) var r = new WeakMap(),
|
|
22
|
+
n = new WeakMap();
|
|
23
|
+
return (_interopRequireWildcard = function (e, t) {
|
|
24
|
+
if (!t && e && e.__esModule) return e;
|
|
25
|
+
var o,
|
|
26
|
+
i,
|
|
27
|
+
f = {
|
|
28
|
+
__proto__: null,
|
|
29
|
+
default: e
|
|
30
|
+
};
|
|
31
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return f;
|
|
32
|
+
if (o = t ? n : r) {
|
|
33
|
+
if (o.has(e)) return o.get(e);
|
|
34
|
+
o.set(e, f);
|
|
35
|
+
}
|
|
36
|
+
for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]);
|
|
37
|
+
return f;
|
|
38
|
+
})(e, t);
|
|
39
|
+
}
|
|
40
|
+
const storeRegistry = /*#__PURE__*/(0, _GlobalValue.globalValue)("@effect-atom/atom-react/storeRegistry", () => new WeakMap());
|
|
41
|
+
function makeStore(registry, atom) {
|
|
42
|
+
let stores = storeRegistry.get(registry);
|
|
43
|
+
if (stores === undefined) {
|
|
44
|
+
stores = new WeakMap();
|
|
45
|
+
storeRegistry.set(registry, stores);
|
|
46
|
+
}
|
|
47
|
+
const store = stores.get(atom);
|
|
48
|
+
if (store !== undefined) {
|
|
49
|
+
return store;
|
|
50
|
+
}
|
|
51
|
+
const newStore = {
|
|
52
|
+
subscribe(f) {
|
|
53
|
+
return registry.subscribe(atom, f);
|
|
54
|
+
},
|
|
55
|
+
snapshot() {
|
|
56
|
+
return registry.get(atom);
|
|
57
|
+
},
|
|
58
|
+
getServerSnapshot() {
|
|
59
|
+
return Atom.getServerValue(atom, registry);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
stores.set(atom, newStore);
|
|
63
|
+
return newStore;
|
|
64
|
+
}
|
|
65
|
+
function useStore(registry, atom) {
|
|
66
|
+
const store = makeStore(registry, atom);
|
|
67
|
+
return React.useSyncExternalStore(store.subscribe, store.snapshot, store.getServerSnapshot);
|
|
68
|
+
}
|
|
69
|
+
const initialValuesSet = /*#__PURE__*/(0, _GlobalValue.globalValue)("@effect-atom/atom-react/initialValuesSet", () => new WeakMap());
|
|
70
|
+
/**
|
|
71
|
+
* @since 1.0.0
|
|
72
|
+
* @category hooks
|
|
73
|
+
*/
|
|
74
|
+
const useAtomInitialValues = initialValues => {
|
|
75
|
+
const registry = React.useContext(_RegistryContext.RegistryContext);
|
|
76
|
+
let set = initialValuesSet.get(registry);
|
|
77
|
+
if (set === undefined) {
|
|
78
|
+
set = new WeakSet();
|
|
79
|
+
initialValuesSet.set(registry, set);
|
|
80
|
+
}
|
|
81
|
+
for (const [atom, value] of initialValues) {
|
|
82
|
+
if (!set.has(atom)) {
|
|
83
|
+
set.add(atom);
|
|
84
|
+
registry.ensureNode(atom).setValue(value);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* @since 1.0.0
|
|
90
|
+
* @category hooks
|
|
91
|
+
*/
|
|
92
|
+
exports.useAtomInitialValues = useAtomInitialValues;
|
|
93
|
+
const useAtomValue = (atom, f) => {
|
|
94
|
+
const registry = React.useContext(_RegistryContext.RegistryContext);
|
|
95
|
+
if (f) {
|
|
96
|
+
const atomB = React.useMemo(() => Atom.map(atom, f), [atom, f]);
|
|
97
|
+
return useStore(registry, atomB);
|
|
98
|
+
}
|
|
99
|
+
return useStore(registry, atom);
|
|
100
|
+
};
|
|
101
|
+
exports.useAtomValue = useAtomValue;
|
|
102
|
+
function mountAtom(registry, atom) {
|
|
103
|
+
React.useEffect(() => registry.mount(atom), [atom, registry]);
|
|
104
|
+
}
|
|
105
|
+
function setAtom(registry, atom, options) {
|
|
106
|
+
if (options?.mode === "promise" || options?.mode === "promiseExit") {
|
|
107
|
+
return React.useCallback((value, opts) => {
|
|
108
|
+
registry.set(atom, value);
|
|
109
|
+
const promise = _effect.Effect.runPromiseExit(Registry.getResult(registry, atom, {
|
|
110
|
+
suspendOnWaiting: true
|
|
111
|
+
}), opts);
|
|
112
|
+
return options.mode === "promise" ? promise.then(flattenExit) : promise;
|
|
113
|
+
}, [registry, atom, options.mode]);
|
|
114
|
+
}
|
|
115
|
+
return React.useCallback(value => {
|
|
116
|
+
registry.set(atom, typeof value === "function" ? value(registry.get(atom)) : value);
|
|
117
|
+
}, [registry, atom]);
|
|
118
|
+
}
|
|
119
|
+
const flattenExit = exit => {
|
|
120
|
+
if (Exit.isSuccess(exit)) return exit.value;
|
|
121
|
+
throw Cause.squash(exit.cause);
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* @since 1.0.0
|
|
125
|
+
* @category hooks
|
|
126
|
+
*/
|
|
127
|
+
const useAtomMount = atom => {
|
|
128
|
+
const registry = React.useContext(_RegistryContext.RegistryContext);
|
|
129
|
+
mountAtom(registry, atom);
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
* @since 1.0.0
|
|
133
|
+
* @category hooks
|
|
134
|
+
*/
|
|
135
|
+
exports.useAtomMount = useAtomMount;
|
|
136
|
+
const useAtomSet = (atom, options) => {
|
|
137
|
+
const registry = React.useContext(_RegistryContext.RegistryContext);
|
|
138
|
+
mountAtom(registry, atom);
|
|
139
|
+
return setAtom(registry, atom, options);
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* @since 1.0.0
|
|
143
|
+
* @category hooks
|
|
144
|
+
*/
|
|
145
|
+
exports.useAtomSet = useAtomSet;
|
|
146
|
+
const useAtomRefresh = atom => {
|
|
147
|
+
const registry = React.useContext(_RegistryContext.RegistryContext);
|
|
148
|
+
mountAtom(registry, atom);
|
|
149
|
+
return React.useCallback(() => {
|
|
150
|
+
registry.refresh(atom);
|
|
151
|
+
}, [registry, atom]);
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* @since 1.0.0
|
|
155
|
+
* @category hooks
|
|
156
|
+
*/
|
|
157
|
+
exports.useAtomRefresh = useAtomRefresh;
|
|
158
|
+
const useAtom = (atom, options) => {
|
|
159
|
+
const registry = React.useContext(_RegistryContext.RegistryContext);
|
|
160
|
+
return [useStore(registry, atom), setAtom(registry, atom, options)];
|
|
161
|
+
};
|
|
162
|
+
exports.useAtom = useAtom;
|
|
163
|
+
const atomPromiseMap = /*#__PURE__*/(0, _GlobalValue.globalValue)("@effect-atom/atom-react/atomPromiseMap", () => ({
|
|
164
|
+
suspendOnWaiting: new Map(),
|
|
165
|
+
default: new Map()
|
|
166
|
+
}));
|
|
167
|
+
function atomToPromise(registry, atom, suspendOnWaiting) {
|
|
168
|
+
const map = suspendOnWaiting ? atomPromiseMap.suspendOnWaiting : atomPromiseMap.default;
|
|
169
|
+
let promise = map.get(atom);
|
|
170
|
+
if (promise !== undefined) {
|
|
171
|
+
return promise;
|
|
172
|
+
}
|
|
173
|
+
promise = new Promise(resolve => {
|
|
174
|
+
const dispose = registry.subscribe(atom, result => {
|
|
175
|
+
if (result._tag === "Initial" || suspendOnWaiting && result.waiting) {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
setTimeout(dispose, 1000);
|
|
179
|
+
resolve();
|
|
180
|
+
map.delete(atom);
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
map.set(atom, promise);
|
|
184
|
+
return promise;
|
|
185
|
+
}
|
|
186
|
+
function atomResultOrSuspend(registry, atom, suspendOnWaiting) {
|
|
187
|
+
const value = useStore(registry, atom);
|
|
188
|
+
if (value._tag === "Initial" || suspendOnWaiting && value.waiting) {
|
|
189
|
+
throw atomToPromise(registry, atom, suspendOnWaiting);
|
|
190
|
+
}
|
|
191
|
+
return value;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* @since 1.0.0
|
|
195
|
+
* @category hooks
|
|
196
|
+
*/
|
|
197
|
+
const useAtomSuspense = (atom, options) => {
|
|
198
|
+
const registry = React.useContext(_RegistryContext.RegistryContext);
|
|
199
|
+
const result = atomResultOrSuspend(registry, atom, options?.suspendOnWaiting ?? false);
|
|
200
|
+
if (result._tag === "Failure" && !options?.includeFailure) {
|
|
201
|
+
throw Cause.squash(result.cause);
|
|
202
|
+
}
|
|
203
|
+
return result;
|
|
204
|
+
};
|
|
205
|
+
/**
|
|
206
|
+
* @since 1.0.0
|
|
207
|
+
* @category hooks
|
|
208
|
+
*/
|
|
209
|
+
exports.useAtomSuspense = useAtomSuspense;
|
|
210
|
+
const useAtomSubscribe = (atom, f, options) => {
|
|
211
|
+
const registry = React.useContext(_RegistryContext.RegistryContext);
|
|
212
|
+
React.useEffect(() => registry.subscribe(atom, f, options), [registry, atom, f, options?.immediate]);
|
|
213
|
+
};
|
|
214
|
+
/**
|
|
215
|
+
* @since 1.0.0
|
|
216
|
+
* @category hooks
|
|
217
|
+
*/
|
|
218
|
+
exports.useAtomSubscribe = useAtomSubscribe;
|
|
219
|
+
const useAtomRef = ref => {
|
|
220
|
+
const [, setValue] = React.useState(ref.value);
|
|
221
|
+
React.useEffect(() => ref.subscribe(setValue), [ref]);
|
|
222
|
+
return ref.value;
|
|
223
|
+
};
|
|
224
|
+
/**
|
|
225
|
+
* @since 1.0.0
|
|
226
|
+
* @category hooks
|
|
227
|
+
*/
|
|
228
|
+
exports.useAtomRef = useAtomRef;
|
|
229
|
+
const useAtomRefProp = (ref, prop) => React.useMemo(() => ref.prop(prop), [ref, prop]);
|
|
230
|
+
/**
|
|
231
|
+
* @since 1.0.0
|
|
232
|
+
* @category hooks
|
|
233
|
+
*/
|
|
234
|
+
exports.useAtomRefProp = useAtomRefProp;
|
|
235
|
+
const useAtomRefPropValue = (ref, prop) => useAtomRef(useAtomRefProp(ref, prop));
|
|
236
|
+
exports.useAtomRefPropValue = useAtomRefPropValue;
|
|
237
|
+
//# sourceMappingURL=Hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Hooks.js","names":["Object","defineProperty","exports","value","useAtomValue","useAtomSuspense","useAtomSubscribe","useAtomSet","useAtomRefresh","useAtomRefPropValue","useAtomRefProp","useAtomRef","useAtomMount","useAtomInitialValues","useAtom","Atom","_interopRequireWildcard","require","Registry","_effect","Cause","Exit","_GlobalValue","React","_RegistryContext","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","getOwnPropertyDescriptor","storeRegistry","globalValue","makeStore","registry","atom","stores","undefined","store","newStore","subscribe","snapshot","getServerSnapshot","getServerValue","useStore","useSyncExternalStore","initialValuesSet","initialValues","useContext","RegistryContext","WeakSet","add","ensureNode","setValue","atomB","useMemo","map","mountAtom","useEffect","mount","setAtom","options","mode","useCallback","opts","promise","Effect","runPromiseExit","getResult","suspendOnWaiting","then","flattenExit","exit","isSuccess","squash","cause","refresh","atomPromiseMap","Map","atomToPromise","Promise","resolve","dispose","result","_tag","waiting","setTimeout","delete","atomResultOrSuspend","includeFailure","immediate","ref","useState","prop"],"sources":["../../src/Hooks.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
"use client";
|
|
7
|
+
|
|
8
|
+
Object.defineProperty(exports, "__esModule", {
|
|
9
|
+
value: true
|
|
10
|
+
});
|
|
11
|
+
exports.HydrationBoundary = void 0;
|
|
12
|
+
var Hydration = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@effect-atom/atom/Hydration"));
|
|
13
|
+
var React = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("react"));
|
|
14
|
+
var _RegistryContext = /*#__PURE__*/require("./RegistryContext.js");
|
|
15
|
+
function _interopRequireWildcard(e, t) {
|
|
16
|
+
if ("function" == typeof WeakMap) var r = new WeakMap(),
|
|
17
|
+
n = new WeakMap();
|
|
18
|
+
return (_interopRequireWildcard = function (e, t) {
|
|
19
|
+
if (!t && e && e.__esModule) return e;
|
|
20
|
+
var o,
|
|
21
|
+
i,
|
|
22
|
+
f = {
|
|
23
|
+
__proto__: null,
|
|
24
|
+
default: e
|
|
25
|
+
};
|
|
26
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return f;
|
|
27
|
+
if (o = t ? n : r) {
|
|
28
|
+
if (o.has(e)) return o.get(e);
|
|
29
|
+
o.set(e, f);
|
|
30
|
+
}
|
|
31
|
+
for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]);
|
|
32
|
+
return f;
|
|
33
|
+
})(e, t);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* @since 1.0.0
|
|
37
|
+
* @category components
|
|
38
|
+
*/
|
|
39
|
+
const HydrationBoundary = ({
|
|
40
|
+
children,
|
|
41
|
+
state
|
|
42
|
+
}) => {
|
|
43
|
+
const registry = React.useContext(_RegistryContext.RegistryContext);
|
|
44
|
+
// This useMemo is for performance reasons only, everything inside it must
|
|
45
|
+
// be safe to run in every render and code here should be read as "in render".
|
|
46
|
+
//
|
|
47
|
+
// This code needs to happen during the render phase, because after initial
|
|
48
|
+
// SSR, hydration needs to happen _before_ children render. Also, if hydrating
|
|
49
|
+
// during a transition, we want to hydrate as much as is safe in render so
|
|
50
|
+
// we can prerender as much as possible.
|
|
51
|
+
//
|
|
52
|
+
// For any Atom values that already exist in the registry, we want to hold back on
|
|
53
|
+
// hydrating until _after_ the render phase. The reason for this is that during
|
|
54
|
+
// transitions, we don't want the existing Atom values and subscribers to update to
|
|
55
|
+
// the new data on the current page, only _after_ the transition is committed.
|
|
56
|
+
// If the transition is aborted, we will have hydrated any _new_ Atom values, but
|
|
57
|
+
// we throw away the fresh data for any existing ones to avoid unexpectedly
|
|
58
|
+
// updating the UI.
|
|
59
|
+
const hydrationQueue = React.useMemo(() => {
|
|
60
|
+
if (state) {
|
|
61
|
+
const dehydratedAtoms = Array.from(state);
|
|
62
|
+
const nodes = registry.getNodes();
|
|
63
|
+
const newDehydratedAtoms = [];
|
|
64
|
+
const existingDehydratedAtoms = [];
|
|
65
|
+
for (const dehydratedAtom of dehydratedAtoms) {
|
|
66
|
+
const existingNode = nodes.get(dehydratedAtom.key);
|
|
67
|
+
if (!existingNode) {
|
|
68
|
+
// This is a new Atom value, safe to hydrate immediately
|
|
69
|
+
newDehydratedAtoms.push(dehydratedAtom);
|
|
70
|
+
} else {
|
|
71
|
+
// This Atom value already exists, queue it for later hydration
|
|
72
|
+
// TODO: Add logic to check if hydration data is newer
|
|
73
|
+
existingDehydratedAtoms.push(dehydratedAtom);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (newDehydratedAtoms.length > 0) {
|
|
77
|
+
// It's actually fine to call this with state that already exists
|
|
78
|
+
// in the registry, or is older. hydrate() is idempotent.
|
|
79
|
+
Hydration.hydrate(registry, newDehydratedAtoms);
|
|
80
|
+
}
|
|
81
|
+
if (existingDehydratedAtoms.length > 0) {
|
|
82
|
+
return existingDehydratedAtoms;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return undefined;
|
|
86
|
+
}, [registry, state]);
|
|
87
|
+
React.useEffect(() => {
|
|
88
|
+
if (hydrationQueue) {
|
|
89
|
+
Hydration.hydrate(registry, hydrationQueue);
|
|
90
|
+
}
|
|
91
|
+
}, [registry, hydrationQueue]);
|
|
92
|
+
return React.createElement(React.Fragment, {}, children);
|
|
93
|
+
};
|
|
94
|
+
exports.HydrationBoundary = HydrationBoundary;
|
|
95
|
+
//# sourceMappingURL=ReactHydration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReactHydration.js","names":["Object","defineProperty","exports","value","HydrationBoundary","Hydration","_interopRequireWildcard","require","React","_RegistryContext","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","getOwnPropertyDescriptor","children","state","registry","useContext","RegistryContext","hydrationQueue","useMemo","dehydratedAtoms","Array","from","nodes","getNodes","newDehydratedAtoms","existingDehydratedAtoms","dehydratedAtom","existingNode","key","push","length","hydrate","undefined","useEffect","createElement","Fragment"],"sources":["../../src/ReactHydration.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
"use client";
|
|
7
|
+
|
|
8
|
+
Object.defineProperty(exports, "__esModule", {
|
|
9
|
+
value: true
|
|
10
|
+
});
|
|
11
|
+
exports.RegistryProvider = exports.RegistryContext = void 0;
|
|
12
|
+
exports.scheduleTask = scheduleTask;
|
|
13
|
+
var Registry = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@effect-atom/atom/Registry"));
|
|
14
|
+
var React = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("react"));
|
|
15
|
+
var Scheduler = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("scheduler"));
|
|
16
|
+
function _interopRequireWildcard(e, t) {
|
|
17
|
+
if ("function" == typeof WeakMap) var r = new WeakMap(),
|
|
18
|
+
n = new WeakMap();
|
|
19
|
+
return (_interopRequireWildcard = function (e, t) {
|
|
20
|
+
if (!t && e && e.__esModule) return e;
|
|
21
|
+
var o,
|
|
22
|
+
i,
|
|
23
|
+
f = {
|
|
24
|
+
__proto__: null,
|
|
25
|
+
default: e
|
|
26
|
+
};
|
|
27
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return f;
|
|
28
|
+
if (o = t ? n : r) {
|
|
29
|
+
if (o.has(e)) return o.get(e);
|
|
30
|
+
o.set(e, f);
|
|
31
|
+
}
|
|
32
|
+
for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]);
|
|
33
|
+
return f;
|
|
34
|
+
})(e, t);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* @since 1.0.0
|
|
38
|
+
* @category context
|
|
39
|
+
*/
|
|
40
|
+
function scheduleTask(f) {
|
|
41
|
+
Scheduler.unstable_scheduleCallback(Scheduler.unstable_LowPriority, f);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* @since 1.0.0
|
|
45
|
+
* @category context
|
|
46
|
+
*/
|
|
47
|
+
const RegistryContext = exports.RegistryContext = /*#__PURE__*/React.createContext(/*#__PURE__*/Registry.make({
|
|
48
|
+
scheduleTask,
|
|
49
|
+
defaultIdleTTL: 400
|
|
50
|
+
}));
|
|
51
|
+
/**
|
|
52
|
+
* @since 1.0.0
|
|
53
|
+
* @category context
|
|
54
|
+
*/
|
|
55
|
+
const RegistryProvider = options => {
|
|
56
|
+
const ref = React.useRef(null);
|
|
57
|
+
if (ref.current === null) {
|
|
58
|
+
ref.current = {
|
|
59
|
+
registry: Registry.make({
|
|
60
|
+
scheduleTask: options.scheduleTask ?? scheduleTask,
|
|
61
|
+
initialValues: options.initialValues,
|
|
62
|
+
timeoutResolution: options.timeoutResolution,
|
|
63
|
+
defaultIdleTTL: options.defaultIdleTTL
|
|
64
|
+
})
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
React.useEffect(() => {
|
|
68
|
+
if (ref.current?.timeout !== undefined) {
|
|
69
|
+
clearTimeout(ref.current.timeout);
|
|
70
|
+
}
|
|
71
|
+
return () => {
|
|
72
|
+
ref.current.timeout = setTimeout(() => {
|
|
73
|
+
ref.current?.registry.dispose();
|
|
74
|
+
ref.current = null;
|
|
75
|
+
}, 500);
|
|
76
|
+
};
|
|
77
|
+
}, [ref]);
|
|
78
|
+
return React.createElement(RegistryContext.Provider, {
|
|
79
|
+
value: ref.current.registry
|
|
80
|
+
}, options?.children);
|
|
81
|
+
};
|
|
82
|
+
exports.RegistryProvider = RegistryProvider;
|
|
83
|
+
//# sourceMappingURL=RegistryContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RegistryContext.js","names":["Object","defineProperty","exports","value","RegistryProvider","RegistryContext","scheduleTask","Registry","_interopRequireWildcard","require","React","Scheduler","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","getOwnPropertyDescriptor","unstable_scheduleCallback","unstable_LowPriority","createContext","make","defaultIdleTTL","options","ref","useRef","current","registry","initialValues","timeoutResolution","useEffect","timeout","undefined","clearTimeout","setTimeout","dispose","createElement","Provider","children"],"sources":["../../src/RegistryContext.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _exportNames = {
|
|
7
|
+
Atom: true,
|
|
8
|
+
Registry: true,
|
|
9
|
+
Result: true,
|
|
10
|
+
AtomRef: true,
|
|
11
|
+
Hydration: true
|
|
12
|
+
};
|
|
13
|
+
exports.Result = exports.Registry = exports.Hydration = exports.AtomRef = exports.Atom = void 0;
|
|
14
|
+
var _Atom = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@effect-atom/atom/Atom"));
|
|
15
|
+
exports.Atom = _Atom;
|
|
16
|
+
var _Registry = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@effect-atom/atom/Registry"));
|
|
17
|
+
exports.Registry = _Registry;
|
|
18
|
+
var _Result = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@effect-atom/atom/Result"));
|
|
19
|
+
exports.Result = _Result;
|
|
20
|
+
var _AtomRef = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@effect-atom/atom/AtomRef"));
|
|
21
|
+
exports.AtomRef = _AtomRef;
|
|
22
|
+
var _Hydration = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@effect-atom/atom/Hydration"));
|
|
23
|
+
exports.Hydration = _Hydration;
|
|
24
|
+
var _Hooks = /*#__PURE__*/require("./Hooks.js");
|
|
25
|
+
Object.keys(_Hooks).forEach(function (key) {
|
|
26
|
+
if (key === "default" || key === "__esModule") return;
|
|
27
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
28
|
+
if (key in exports && exports[key] === _Hooks[key]) return;
|
|
29
|
+
Object.defineProperty(exports, key, {
|
|
30
|
+
enumerable: true,
|
|
31
|
+
get: function () {
|
|
32
|
+
return _Hooks[key];
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
var _RegistryContext = /*#__PURE__*/require("./RegistryContext.js");
|
|
37
|
+
Object.keys(_RegistryContext).forEach(function (key) {
|
|
38
|
+
if (key === "default" || key === "__esModule") return;
|
|
39
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
40
|
+
if (key in exports && exports[key] === _RegistryContext[key]) return;
|
|
41
|
+
Object.defineProperty(exports, key, {
|
|
42
|
+
enumerable: true,
|
|
43
|
+
get: function () {
|
|
44
|
+
return _RegistryContext[key];
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
function _interopRequireWildcard(e, t) {
|
|
49
|
+
if ("function" == typeof WeakMap) var r = new WeakMap(),
|
|
50
|
+
n = new WeakMap();
|
|
51
|
+
return (_interopRequireWildcard = function (e, t) {
|
|
52
|
+
if (!t && e && e.__esModule) return e;
|
|
53
|
+
var o,
|
|
54
|
+
i,
|
|
55
|
+
f = {
|
|
56
|
+
__proto__: null,
|
|
57
|
+
default: e
|
|
58
|
+
};
|
|
59
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return f;
|
|
60
|
+
if (o = t ? n : r) {
|
|
61
|
+
if (o.has(e)) return o.get(e);
|
|
62
|
+
o.set(e, f);
|
|
63
|
+
}
|
|
64
|
+
for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]);
|
|
65
|
+
return f;
|
|
66
|
+
})(e, t);
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_Hooks","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_RegistryContext","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","set","getOwnPropertyDescriptor"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAsCA,IAAAA,MAAA,gBAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,MAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,MAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,MAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AAMA,IAAAS,gBAAA,gBAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,gBAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,gBAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,gBAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AAAoC,SAAAU,wBAAAC,CAAA,EAAAC,CAAA;EAAA,yBAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAH,uBAAA,YAAAA,CAAAC,CAAA,EAAAC,CAAA;IAAA,KAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA;IAAA,IAAAM,CAAA;MAAAC,CAAA;MAAAC,CAAA;QAAAC,SAAA;QAAAC,OAAA,EAAAV;MAAA;IAAA,aAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA;IAAA,IAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA;MAAA,IAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAT,GAAA,CAAAG,CAAA;MAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,EAAAQ,CAAA;IAAA;IAAA,WAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAV,cAAA,CAAAC,IAAA,CAAAQ,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAApB,MAAA,CAAAS,cAAA,KAAAT,MAAA,CAAA2B,wBAAA,CAAAb,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAK,GAAA,IAAAN,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA;IAAA,OAAAO,CAAA;EAAA,GAAAR,CAAA,EAAAC,CAAA;AAAA","ignoreList":[]}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import * as Atom from "@effect-atom/atom/Atom";
|
|
2
|
+
import type * as AtomRef from "@effect-atom/atom/AtomRef";
|
|
3
|
+
import type * as Result from "@effect-atom/atom/Result";
|
|
4
|
+
import * as Exit from "effect/Exit";
|
|
5
|
+
/**
|
|
6
|
+
* @since 1.0.0
|
|
7
|
+
* @category hooks
|
|
8
|
+
*/
|
|
9
|
+
export declare const useAtomInitialValues: (initialValues: Iterable<readonly [Atom.Atom<any>, any]>) => void;
|
|
10
|
+
/**
|
|
11
|
+
* @since 1.0.0
|
|
12
|
+
* @category hooks
|
|
13
|
+
*/
|
|
14
|
+
export declare const useAtomValue: {
|
|
15
|
+
<A>(atom: Atom.Atom<A>): A;
|
|
16
|
+
<A, B>(atom: Atom.Atom<A>, f: (_: A) => B): B;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* @since 1.0.0
|
|
20
|
+
* @category hooks
|
|
21
|
+
*/
|
|
22
|
+
export declare const useAtomMount: <A>(atom: Atom.Atom<A>) => void;
|
|
23
|
+
/**
|
|
24
|
+
* @since 1.0.0
|
|
25
|
+
* @category hooks
|
|
26
|
+
*/
|
|
27
|
+
export declare const useAtomSet: <R, W, Mode extends "value" | "promise" | "promiseExit" = never>(atom: Atom.Writable<R, W>, options?: {
|
|
28
|
+
readonly mode?: ([R] extends [Result.Result<any, any>] ? Mode : "value") | undefined;
|
|
29
|
+
}) => "promise" extends Mode ? ((value: W, options?: {
|
|
30
|
+
readonly signal?: AbortSignal | undefined;
|
|
31
|
+
} | undefined) => Promise<Result.Result.Success<R>>) : "promiseExit" extends Mode ? ((value: W, options?: {
|
|
32
|
+
readonly signal?: AbortSignal | undefined;
|
|
33
|
+
} | undefined) => Promise<Exit.Exit<Result.Result.Success<R>, Result.Result.Failure<R>>>) : ((value: W | ((value: R) => W)) => void);
|
|
34
|
+
/**
|
|
35
|
+
* @since 1.0.0
|
|
36
|
+
* @category hooks
|
|
37
|
+
*/
|
|
38
|
+
export declare const useAtomRefresh: <A>(atom: Atom.Atom<A>) => () => void;
|
|
39
|
+
/**
|
|
40
|
+
* @since 1.0.0
|
|
41
|
+
* @category hooks
|
|
42
|
+
*/
|
|
43
|
+
export declare const useAtom: <R, W, const Mode extends "value" | "promise" | "promiseExit" = never>(atom: Atom.Writable<R, W>, options?: {
|
|
44
|
+
readonly mode?: ([R] extends [Result.Result<any, any>] ? Mode : "value") | undefined;
|
|
45
|
+
}) => readonly [value: R, write: "promise" extends Mode ? ((value: W, options?: {
|
|
46
|
+
readonly signal?: AbortSignal | undefined;
|
|
47
|
+
} | undefined) => Promise<Result.Result.Success<R>>) : "promiseExit" extends Mode ? ((value: W, options?: {
|
|
48
|
+
readonly signal?: AbortSignal | undefined;
|
|
49
|
+
} | undefined) => Promise<Exit.Exit<Result.Result.Success<R>, Result.Result.Failure<R>>>) : ((value: W | ((value: R) => W)) => void)];
|
|
50
|
+
/**
|
|
51
|
+
* @since 1.0.0
|
|
52
|
+
* @category hooks
|
|
53
|
+
*/
|
|
54
|
+
export declare const useAtomSuspense: <A, E, const IncludeFailure extends boolean = false>(atom: Atom.Atom<Result.Result<A, E>>, options?: {
|
|
55
|
+
readonly suspendOnWaiting?: boolean | undefined;
|
|
56
|
+
readonly includeFailure?: IncludeFailure | undefined;
|
|
57
|
+
}) => Result.Success<A, E> | (IncludeFailure extends true ? Result.Failure<A, E> : never);
|
|
58
|
+
/**
|
|
59
|
+
* @since 1.0.0
|
|
60
|
+
* @category hooks
|
|
61
|
+
*/
|
|
62
|
+
export declare const useAtomSubscribe: <A>(atom: Atom.Atom<A>, f: (_: A) => void, options?: {
|
|
63
|
+
readonly immediate?: boolean;
|
|
64
|
+
}) => void;
|
|
65
|
+
/**
|
|
66
|
+
* @since 1.0.0
|
|
67
|
+
* @category hooks
|
|
68
|
+
*/
|
|
69
|
+
export declare const useAtomRef: <A>(ref: AtomRef.ReadonlyRef<A>) => A;
|
|
70
|
+
/**
|
|
71
|
+
* @since 1.0.0
|
|
72
|
+
* @category hooks
|
|
73
|
+
*/
|
|
74
|
+
export declare const useAtomRefProp: <A, K extends keyof A>(ref: AtomRef.AtomRef<A>, prop: K) => AtomRef.AtomRef<A[K]>;
|
|
75
|
+
/**
|
|
76
|
+
* @since 1.0.0
|
|
77
|
+
* @category hooks
|
|
78
|
+
*/
|
|
79
|
+
export declare const useAtomRefPropValue: <A, K extends keyof A>(ref: AtomRef.AtomRef<A>, prop: K) => A[K];
|
|
80
|
+
//# sourceMappingURL=Hooks.d.ts.map
|