@depup/jotai 2.18.0-depup.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/LICENSE +21 -0
- package/README.md +25 -0
- package/babel/plugin-debug-label.d.ts +5 -0
- package/babel/plugin-debug-label.js +54 -0
- package/babel/plugin-react-refresh.d.ts +5 -0
- package/babel/plugin-react-refresh.js +72 -0
- package/babel/preset.d.ts +6 -0
- package/babel/preset.js +110 -0
- package/babel/utils.d.ts +5 -0
- package/benchmarks/simple-read.d.ts +2 -0
- package/benchmarks/simple-write.d.ts +2 -0
- package/benchmarks/subscribe-write.d.ts +2 -0
- package/changes.json +5 -0
- package/esm/babel/plugin-debug-label.d.mts +5 -0
- package/esm/babel/plugin-debug-label.mjs +103 -0
- package/esm/babel/plugin-react-refresh.d.mts +5 -0
- package/esm/babel/plugin-react-refresh.mjs +121 -0
- package/esm/babel/preset.d.mts +6 -0
- package/esm/babel/preset.mjs +179 -0
- package/esm/babel/utils.d.mts +5 -0
- package/esm/index.d.mts +2 -0
- package/esm/index.mjs +2 -0
- package/esm/react/Provider.d.mts +16 -0
- package/esm/react/useAtom.d.mts +13 -0
- package/esm/react/useAtomValue.d.mts +9 -0
- package/esm/react/useSetAtom.d.mts +7 -0
- package/esm/react/utils/useAtomCallback.d.mts +5 -0
- package/esm/react/utils/useHydrateAtoms.d.mts +14 -0
- package/esm/react/utils/useReducerAtom.d.mts +14 -0
- package/esm/react/utils/useResetAtom.d.mts +6 -0
- package/esm/react/utils.d.mts +4 -0
- package/esm/react/utils.mjs +57 -0
- package/esm/react.d.mts +4 -0
- package/esm/react.mjs +182 -0
- package/esm/utils.d.mts +2 -0
- package/esm/utils.mjs +2 -0
- package/esm/vanilla/atom.d.mts +47 -0
- package/esm/vanilla/internals.d.mts +164 -0
- package/esm/vanilla/internals.mjs +715 -0
- package/esm/vanilla/store.d.mts +5 -0
- package/esm/vanilla/typeUtils.d.mts +7 -0
- package/esm/vanilla/utils/atomFamily.d.mts +55 -0
- package/esm/vanilla/utils/atomWithDefault.d.mts +6 -0
- package/esm/vanilla/utils/atomWithLazy.d.mts +2 -0
- package/esm/vanilla/utils/atomWithObservable.d.mts +32 -0
- package/esm/vanilla/utils/atomWithReducer.d.mts +3 -0
- package/esm/vanilla/utils/atomWithRefresh.d.mts +6 -0
- package/esm/vanilla/utils/atomWithReset.d.mts +8 -0
- package/esm/vanilla/utils/atomWithStorage.d.mts +50 -0
- package/esm/vanilla/utils/constants.d.mts +1 -0
- package/esm/vanilla/utils/freezeAtom.d.mts +6 -0
- package/esm/vanilla/utils/loadable.d.mts +33 -0
- package/esm/vanilla/utils/selectAtom.d.mts +2 -0
- package/esm/vanilla/utils/splitAtom.d.mts +16 -0
- package/esm/vanilla/utils/unwrap.d.mts +5 -0
- package/esm/vanilla/utils.d.mts +14 -0
- package/esm/vanilla/utils.mjs +736 -0
- package/esm/vanilla.d.mts +4 -0
- package/esm/vanilla.mjs +59 -0
- package/index.d.ts +2 -0
- package/index.js +19 -0
- package/package.json +125 -0
- package/react/Provider.d.ts +16 -0
- package/react/useAtom.d.ts +13 -0
- package/react/useAtomValue.d.ts +9 -0
- package/react/useSetAtom.d.ts +7 -0
- package/react/utils/useAtomCallback.d.ts +5 -0
- package/react/utils/useHydrateAtoms.d.ts +14 -0
- package/react/utils/useReducerAtom.d.ts +14 -0
- package/react/utils/useResetAtom.d.ts +6 -0
- package/react/utils.d.ts +4 -0
- package/react/utils.js +100 -0
- package/react.d.ts +4 -0
- package/react.js +182 -0
- package/system/babel/plugin-debug-label.development.js +113 -0
- package/system/babel/plugin-debug-label.production.js +4 -0
- package/system/babel/plugin-react-refresh.development.js +131 -0
- package/system/babel/plugin-react-refresh.production.js +11 -0
- package/system/babel/preset.development.js +189 -0
- package/system/babel/preset.production.js +14 -0
- package/system/index.development.js +27 -0
- package/system/index.production.js +1 -0
- package/system/react/utils.development.js +79 -0
- package/system/react/utils.production.js +2 -0
- package/system/react.development.js +210 -0
- package/system/react.production.js +2 -0
- package/system/utils.development.js +27 -0
- package/system/utils.production.js +1 -0
- package/system/vanilla/internals.development.js +735 -0
- package/system/vanilla/internals.production.js +1 -0
- package/system/vanilla/utils.development.js +764 -0
- package/system/vanilla/utils.production.js +1 -0
- package/system/vanilla.development.js +75 -0
- package/system/vanilla.production.js +1 -0
- package/ts3.8/babel/plugin-debug-label.d.ts +6 -0
- package/ts3.8/babel/plugin-react-refresh.d.ts +6 -0
- package/ts3.8/babel/preset.d.ts +7 -0
- package/ts3.8/babel/utils.d.ts +6 -0
- package/ts3.8/benchmarks/simple-read.d.ts +3 -0
- package/ts3.8/benchmarks/simple-write.d.ts +3 -0
- package/ts3.8/benchmarks/subscribe-write.d.ts +3 -0
- package/ts3.8/esm/babel/plugin-debug-label.d.ts +6 -0
- package/ts3.8/esm/babel/plugin-react-refresh.d.ts +6 -0
- package/ts3.8/esm/babel/preset.d.ts +7 -0
- package/ts3.8/esm/babel/utils.d.ts +6 -0
- package/ts3.8/esm/index.d.ts +3 -0
- package/ts3.8/esm/react/Provider.d.ts +17 -0
- package/ts3.8/esm/react/useAtom.d.ts +28 -0
- package/ts3.8/esm/react/useAtomValue.d.ts +10 -0
- package/ts3.8/esm/react/useSetAtom.d.ts +8 -0
- package/ts3.8/esm/react/utils/useAtomCallback.d.ts +6 -0
- package/ts3.8/esm/react/utils/useHydrateAtoms.d.ts +27 -0
- package/ts3.8/esm/react/utils/useReducerAtom.d.ts +21 -0
- package/ts3.8/esm/react/utils/useResetAtom.d.ts +9 -0
- package/ts3.8/esm/react/utils.d.ts +5 -0
- package/ts3.8/esm/react.d.ts +5 -0
- package/ts3.8/esm/utils.d.ts +3 -0
- package/ts3.8/esm/vanilla/atom.d.ts +48 -0
- package/ts3.8/esm/vanilla/internals.d.ts +165 -0
- package/ts3.8/esm/vanilla/store.d.ts +6 -0
- package/ts3.8/esm/vanilla/typeUtils.d.ts +8 -0
- package/ts3.8/esm/vanilla/utils/atomFamily.d.ts +56 -0
- package/ts3.8/esm/vanilla/utils/atomWithDefault.d.ts +11 -0
- package/ts3.8/esm/vanilla/utils/atomWithLazy.d.ts +3 -0
- package/ts3.8/esm/vanilla/utils/atomWithObservable.d.ts +37 -0
- package/ts3.8/esm/vanilla/utils/atomWithReducer.d.ts +8 -0
- package/ts3.8/esm/vanilla/utils/atomWithRefresh.d.ts +10 -0
- package/ts3.8/esm/vanilla/utils/atomWithReset.d.ts +11 -0
- package/ts3.8/esm/vanilla/utils/atomWithStorage.d.ts +53 -0
- package/ts3.8/esm/vanilla/utils/constants.d.ts +2 -0
- package/ts3.8/esm/vanilla/utils/freezeAtom.d.ts +7 -0
- package/ts3.8/esm/vanilla/utils/loadable.d.ts +34 -0
- package/ts3.8/esm/vanilla/utils/selectAtom.d.ts +3 -0
- package/ts3.8/esm/vanilla/utils/splitAtom.d.ts +21 -0
- package/ts3.8/esm/vanilla/utils/unwrap.d.ts +6 -0
- package/ts3.8/esm/vanilla/utils.d.ts +15 -0
- package/ts3.8/esm/vanilla.d.ts +5 -0
- package/ts3.8/index.d.ts +3 -0
- package/ts3.8/react/Provider.d.ts +17 -0
- package/ts3.8/react/useAtom.d.ts +28 -0
- package/ts3.8/react/useAtomValue.d.ts +10 -0
- package/ts3.8/react/useSetAtom.d.ts +8 -0
- package/ts3.8/react/utils/useAtomCallback.d.ts +6 -0
- package/ts3.8/react/utils/useHydrateAtoms.d.ts +27 -0
- package/ts3.8/react/utils/useReducerAtom.d.ts +21 -0
- package/ts3.8/react/utils/useResetAtom.d.ts +9 -0
- package/ts3.8/react/utils.d.ts +5 -0
- package/ts3.8/react.d.ts +5 -0
- package/ts3.8/utils.d.ts +3 -0
- package/ts3.8/vanilla/atom.d.ts +48 -0
- package/ts3.8/vanilla/internals.d.ts +165 -0
- package/ts3.8/vanilla/store.d.ts +6 -0
- package/ts3.8/vanilla/typeUtils.d.ts +8 -0
- package/ts3.8/vanilla/utils/atomFamily.d.ts +56 -0
- package/ts3.8/vanilla/utils/atomWithDefault.d.ts +11 -0
- package/ts3.8/vanilla/utils/atomWithLazy.d.ts +3 -0
- package/ts3.8/vanilla/utils/atomWithObservable.d.ts +37 -0
- package/ts3.8/vanilla/utils/atomWithReducer.d.ts +8 -0
- package/ts3.8/vanilla/utils/atomWithRefresh.d.ts +10 -0
- package/ts3.8/vanilla/utils/atomWithReset.d.ts +11 -0
- package/ts3.8/vanilla/utils/atomWithStorage.d.ts +53 -0
- package/ts3.8/vanilla/utils/constants.d.ts +2 -0
- package/ts3.8/vanilla/utils/freezeAtom.d.ts +7 -0
- package/ts3.8/vanilla/utils/loadable.d.ts +34 -0
- package/ts3.8/vanilla/utils/selectAtom.d.ts +3 -0
- package/ts3.8/vanilla/utils/splitAtom.d.ts +21 -0
- package/ts3.8/vanilla/utils/unwrap.d.ts +6 -0
- package/ts3.8/vanilla/utils.d.ts +15 -0
- package/ts3.8/vanilla.d.ts +5 -0
- package/ts_version_3.8_and_above_is_required.d.ts +0 -0
- package/umd/babel/plugin-debug-label.development.js +58 -0
- package/umd/babel/plugin-debug-label.production.js +1 -0
- package/umd/babel/plugin-react-refresh.development.js +76 -0
- package/umd/babel/plugin-react-refresh.production.js +1 -0
- package/umd/babel/preset.development.js +114 -0
- package/umd/babel/preset.production.js +1 -0
- package/umd/index.development.js +20 -0
- package/umd/index.production.js +1 -0
- package/umd/react/utils.development.js +101 -0
- package/umd/react/utils.production.js +1 -0
- package/umd/react.development.js +184 -0
- package/umd/react.production.js +1 -0
- package/umd/utils.development.js +20 -0
- package/umd/utils.production.js +1 -0
- package/umd/vanilla/internals.development.js +785 -0
- package/umd/vanilla/internals.production.js +1 -0
- package/umd/vanilla/utils.development.js +858 -0
- package/umd/vanilla/utils.production.js +1 -0
- package/umd/vanilla.development.js +64 -0
- package/umd/vanilla.production.js +1 -0
- package/utils.d.ts +2 -0
- package/utils.js +19 -0
- package/vanilla/atom.d.ts +47 -0
- package/vanilla/internals.d.ts +164 -0
- package/vanilla/internals.js +779 -0
- package/vanilla/store.d.ts +5 -0
- package/vanilla/typeUtils.d.ts +7 -0
- package/vanilla/utils/atomFamily.d.ts +55 -0
- package/vanilla/utils/atomWithDefault.d.ts +6 -0
- package/vanilla/utils/atomWithLazy.d.ts +2 -0
- package/vanilla/utils/atomWithObservable.d.ts +32 -0
- package/vanilla/utils/atomWithReducer.d.ts +3 -0
- package/vanilla/utils/atomWithRefresh.d.ts +6 -0
- package/vanilla/utils/atomWithReset.d.ts +8 -0
- package/vanilla/utils/atomWithStorage.d.ts +50 -0
- package/vanilla/utils/constants.d.ts +1 -0
- package/vanilla/utils/freezeAtom.d.ts +6 -0
- package/vanilla/utils/loadable.d.ts +33 -0
- package/vanilla/utils/selectAtom.d.ts +2 -0
- package/vanilla/utils/splitAtom.d.ts +16 -0
- package/vanilla/utils/unwrap.d.ts +5 -0
- package/vanilla/utils.d.ts +14 -0
- package/vanilla/utils.js +854 -0
- package/vanilla.d.ts +4 -0
- package/vanilla.js +60 -0
|
@@ -0,0 +1,858 @@
|
|
|
1
|
+
(function (global, factory) {
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jotai/vanilla')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports', 'jotai/vanilla'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jotaiVanillaUtils = {}, global.jotaiVanilla));
|
|
5
|
+
})(this, (function (exports, vanilla) { 'use strict';
|
|
6
|
+
|
|
7
|
+
var RESET = Symbol('RESET' );
|
|
8
|
+
|
|
9
|
+
function atomWithReset(initialValue) {
|
|
10
|
+
var anAtom = vanilla.atom(initialValue, function (get, set, update) {
|
|
11
|
+
var nextValue = typeof update === 'function' ? update(get(anAtom)) : update;
|
|
12
|
+
set(anAtom, nextValue === RESET ? initialValue : nextValue);
|
|
13
|
+
});
|
|
14
|
+
return anAtom;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function atomWithReducer(initialValue, reducer) {
|
|
18
|
+
return vanilla.atom(initialValue, function (get, set, action) {
|
|
19
|
+
set(this, reducer(get(this), action));
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function _arrayLikeToArray(r, a) {
|
|
24
|
+
(null == a || a > r.length) && (a = r.length);
|
|
25
|
+
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
|
|
26
|
+
return n;
|
|
27
|
+
}
|
|
28
|
+
function _createForOfIteratorHelperLoose(r, e) {
|
|
29
|
+
var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
30
|
+
if (t) return (t = t.call(r)).next.bind(t);
|
|
31
|
+
if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e) {
|
|
32
|
+
t && (r = t);
|
|
33
|
+
var o = 0;
|
|
34
|
+
return function () {
|
|
35
|
+
return o >= r.length ? {
|
|
36
|
+
done: true
|
|
37
|
+
} : {
|
|
38
|
+
done: false,
|
|
39
|
+
value: r[o++]
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
44
|
+
}
|
|
45
|
+
function _extends() {
|
|
46
|
+
return _extends = Object.assign ? Object.assign.bind() : function (n) {
|
|
47
|
+
for (var e = 1; e < arguments.length; e++) {
|
|
48
|
+
var t = arguments[e];
|
|
49
|
+
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
|
|
50
|
+
}
|
|
51
|
+
return n;
|
|
52
|
+
}, _extends.apply(null, arguments);
|
|
53
|
+
}
|
|
54
|
+
function _unsupportedIterableToArray(r, a) {
|
|
55
|
+
if (r) {
|
|
56
|
+
if ("string" == typeof r) return _arrayLikeToArray(r, a);
|
|
57
|
+
var t = {}.toString.call(r).slice(8, -1);
|
|
58
|
+
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
var didWarnDeprecation$1 = false;
|
|
63
|
+
function atomFamily(initializeAtom, areEqual) {
|
|
64
|
+
if (!didWarnDeprecation$1) {
|
|
65
|
+
console.warn('[DEPRECATED] atomFamily is deprecated and will be removed in v3. ' + 'Please use the `jotai-family` package instead: https://github.com/jotaijs/jotai-family');
|
|
66
|
+
didWarnDeprecation$1 = true;
|
|
67
|
+
}
|
|
68
|
+
var shouldRemove = null;
|
|
69
|
+
var atoms = new Map();
|
|
70
|
+
var listeners = new Set();
|
|
71
|
+
var _createAtom = function createAtom(param) {
|
|
72
|
+
var item;
|
|
73
|
+
if (areEqual === undefined) {
|
|
74
|
+
item = atoms.get(param);
|
|
75
|
+
} else {
|
|
76
|
+
for (var _iterator = _createForOfIteratorHelperLoose(atoms), _step; !(_step = _iterator()).done;) {
|
|
77
|
+
var _step$value = _step.value,
|
|
78
|
+
key = _step$value[0],
|
|
79
|
+
value = _step$value[1];
|
|
80
|
+
if (areEqual(key, param)) {
|
|
81
|
+
item = value;
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (item !== undefined) {
|
|
87
|
+
if (shouldRemove != null && shouldRemove(item[1], param)) {
|
|
88
|
+
_createAtom.remove(param);
|
|
89
|
+
} else {
|
|
90
|
+
return item[0];
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
var newAtom = initializeAtom(param);
|
|
94
|
+
atoms.set(param, [newAtom, Date.now()]);
|
|
95
|
+
notifyListeners('CREATE', param, newAtom);
|
|
96
|
+
return newAtom;
|
|
97
|
+
};
|
|
98
|
+
var notifyListeners = function notifyListeners(type, param, atom) {
|
|
99
|
+
for (var _iterator2 = _createForOfIteratorHelperLoose(listeners), _step2; !(_step2 = _iterator2()).done;) {
|
|
100
|
+
var listener = _step2.value;
|
|
101
|
+
listener({
|
|
102
|
+
type: type,
|
|
103
|
+
param: param,
|
|
104
|
+
atom: atom
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
_createAtom.unstable_listen = function (callback) {
|
|
109
|
+
listeners.add(callback);
|
|
110
|
+
return function () {
|
|
111
|
+
listeners.delete(callback);
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
_createAtom.getParams = function () {
|
|
115
|
+
return atoms.keys();
|
|
116
|
+
};
|
|
117
|
+
_createAtom.remove = function (param) {
|
|
118
|
+
if (areEqual === undefined) {
|
|
119
|
+
if (!atoms.has(param)) return;
|
|
120
|
+
var _ref = atoms.get(param),
|
|
121
|
+
atom = _ref[0];
|
|
122
|
+
atoms.delete(param);
|
|
123
|
+
notifyListeners('REMOVE', param, atom);
|
|
124
|
+
} else {
|
|
125
|
+
for (var _iterator3 = _createForOfIteratorHelperLoose(atoms), _step3; !(_step3 = _iterator3()).done;) {
|
|
126
|
+
var _step3$value = _step3.value,
|
|
127
|
+
key = _step3$value[0],
|
|
128
|
+
_step3$value$ = _step3$value[1],
|
|
129
|
+
_atom = _step3$value$[0];
|
|
130
|
+
if (areEqual(key, param)) {
|
|
131
|
+
atoms.delete(key);
|
|
132
|
+
notifyListeners('REMOVE', key, _atom);
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
_createAtom.setShouldRemove = function (fn) {
|
|
139
|
+
shouldRemove = fn;
|
|
140
|
+
if (!shouldRemove) return;
|
|
141
|
+
for (var _iterator4 = _createForOfIteratorHelperLoose(atoms), _step4; !(_step4 = _iterator4()).done;) {
|
|
142
|
+
var _step4$value = _step4.value,
|
|
143
|
+
key = _step4$value[0],
|
|
144
|
+
_step4$value$ = _step4$value[1],
|
|
145
|
+
atom = _step4$value$[0],
|
|
146
|
+
_createdAt = _step4$value$[1];
|
|
147
|
+
if (shouldRemove(_createdAt, key)) {
|
|
148
|
+
atoms.delete(key);
|
|
149
|
+
notifyListeners('REMOVE', key, atom);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
return _createAtom;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
var getCached$2 = function getCached(c, m, k) {
|
|
157
|
+
return (m.has(k) ? m : m.set(k, c())).get(k);
|
|
158
|
+
};
|
|
159
|
+
var cache1$3 = new WeakMap();
|
|
160
|
+
var memo3 = function memo3(create, dep1, dep2, dep3) {
|
|
161
|
+
var cache2 = getCached$2(function () {
|
|
162
|
+
return new WeakMap();
|
|
163
|
+
}, cache1$3, dep1);
|
|
164
|
+
var cache3 = getCached$2(function () {
|
|
165
|
+
return new WeakMap();
|
|
166
|
+
}, cache2, dep2);
|
|
167
|
+
return getCached$2(create, cache3, dep3);
|
|
168
|
+
};
|
|
169
|
+
function selectAtom(anAtom, selector, equalityFn) {
|
|
170
|
+
if (equalityFn === void 0) {
|
|
171
|
+
equalityFn = Object.is;
|
|
172
|
+
}
|
|
173
|
+
return memo3(function () {
|
|
174
|
+
var EMPTY = Symbol();
|
|
175
|
+
var selectValue = function selectValue(_ref) {
|
|
176
|
+
var value = _ref[0],
|
|
177
|
+
prevSlice = _ref[1];
|
|
178
|
+
if (prevSlice === EMPTY) {
|
|
179
|
+
return selector(value);
|
|
180
|
+
}
|
|
181
|
+
var slice = selector(value, prevSlice);
|
|
182
|
+
return equalityFn(prevSlice, slice) ? prevSlice : slice;
|
|
183
|
+
};
|
|
184
|
+
var derivedAtom = vanilla.atom(function (get) {
|
|
185
|
+
var prev = get(derivedAtom);
|
|
186
|
+
var value = get(anAtom);
|
|
187
|
+
return selectValue([value, prev]);
|
|
188
|
+
});
|
|
189
|
+
derivedAtom.init = EMPTY;
|
|
190
|
+
return derivedAtom;
|
|
191
|
+
}, anAtom, selector, equalityFn);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
var frozenAtoms = new WeakSet();
|
|
195
|
+
var _deepFreeze = function deepFreeze(value) {
|
|
196
|
+
if (typeof value !== 'object' || value === null) {
|
|
197
|
+
return value;
|
|
198
|
+
}
|
|
199
|
+
Object.freeze(value);
|
|
200
|
+
var propNames = Object.getOwnPropertyNames(value);
|
|
201
|
+
for (var _iterator = _createForOfIteratorHelperLoose(propNames), _step; !(_step = _iterator()).done;) {
|
|
202
|
+
var name = _step.value;
|
|
203
|
+
_deepFreeze(value[name]);
|
|
204
|
+
}
|
|
205
|
+
return value;
|
|
206
|
+
};
|
|
207
|
+
function freezeAtom(anAtom) {
|
|
208
|
+
if (frozenAtoms.has(anAtom)) {
|
|
209
|
+
return anAtom;
|
|
210
|
+
}
|
|
211
|
+
frozenAtoms.add(anAtom);
|
|
212
|
+
var origRead = anAtom.read;
|
|
213
|
+
anAtom.read = function (get, options) {
|
|
214
|
+
return _deepFreeze(origRead.call(this, get, options));
|
|
215
|
+
};
|
|
216
|
+
if ('write' in anAtom) {
|
|
217
|
+
var origWrite = anAtom.write;
|
|
218
|
+
anAtom.write = function (get, set) {
|
|
219
|
+
for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
|
220
|
+
args[_key - 2] = arguments[_key];
|
|
221
|
+
}
|
|
222
|
+
return origWrite.call.apply(origWrite, [this, get, function () {
|
|
223
|
+
for (var _len2 = arguments.length, setArgs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
224
|
+
setArgs[_key2] = arguments[_key2];
|
|
225
|
+
}
|
|
226
|
+
if (setArgs[0] === anAtom) {
|
|
227
|
+
setArgs[1] = _deepFreeze(setArgs[1]);
|
|
228
|
+
}
|
|
229
|
+
return set.apply(void 0, setArgs);
|
|
230
|
+
}].concat(args));
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
return anAtom;
|
|
234
|
+
}
|
|
235
|
+
function freezeAtomCreator(createAtom) {
|
|
236
|
+
{
|
|
237
|
+
console.warn('[DEPRECATED] freezeAtomCreator is deprecated, define it on users end');
|
|
238
|
+
}
|
|
239
|
+
return function () {
|
|
240
|
+
return freezeAtom(createAtom.apply(void 0, arguments));
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
var getCached$1 = function getCached(c, m, k) {
|
|
245
|
+
return (m.has(k) ? m : m.set(k, c())).get(k);
|
|
246
|
+
};
|
|
247
|
+
var cache1$2 = new WeakMap();
|
|
248
|
+
var memo2$1 = function memo2(create, dep1, dep2) {
|
|
249
|
+
var cache2 = getCached$1(function () {
|
|
250
|
+
return new WeakMap();
|
|
251
|
+
}, cache1$2, dep1);
|
|
252
|
+
return getCached$1(create, cache2, dep2);
|
|
253
|
+
};
|
|
254
|
+
var cacheKeyForEmptyKeyExtractor = {};
|
|
255
|
+
var isWritable = function isWritable(atom) {
|
|
256
|
+
return !!atom.write;
|
|
257
|
+
};
|
|
258
|
+
var isFunction = function isFunction(x) {
|
|
259
|
+
return typeof x === 'function';
|
|
260
|
+
};
|
|
261
|
+
function splitAtom(arrAtom, keyExtractor) {
|
|
262
|
+
return memo2$1(function () {
|
|
263
|
+
var mappingCache = new WeakMap();
|
|
264
|
+
var _getMapping = function getMapping(arr, prev) {
|
|
265
|
+
var mapping = mappingCache.get(arr);
|
|
266
|
+
if (mapping) {
|
|
267
|
+
return mapping;
|
|
268
|
+
}
|
|
269
|
+
var prevMapping = prev && mappingCache.get(prev);
|
|
270
|
+
var atomList = [];
|
|
271
|
+
var keyList = [];
|
|
272
|
+
arr.forEach(function (item, index) {
|
|
273
|
+
var key = keyExtractor ? keyExtractor(item) : index;
|
|
274
|
+
keyList[index] = key;
|
|
275
|
+
var cachedAtom = prevMapping && prevMapping.atomList[prevMapping.keyList.indexOf(key)];
|
|
276
|
+
if (cachedAtom) {
|
|
277
|
+
atomList[index] = cachedAtom;
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
var read = function read(get) {
|
|
281
|
+
var prev = get(mappingAtom);
|
|
282
|
+
var currArr = get(arrAtom);
|
|
283
|
+
var mapping = _getMapping(currArr, prev == null ? void 0 : prev.arr);
|
|
284
|
+
var index = mapping.keyList.indexOf(key);
|
|
285
|
+
if (index < 0 || index >= currArr.length) {
|
|
286
|
+
var prevItem = arr[_getMapping(arr).keyList.indexOf(key)];
|
|
287
|
+
if (prevItem) {
|
|
288
|
+
return prevItem;
|
|
289
|
+
}
|
|
290
|
+
throw new Error('splitAtom: index out of bounds for read');
|
|
291
|
+
}
|
|
292
|
+
return currArr[index];
|
|
293
|
+
};
|
|
294
|
+
var write = function write(get, set, update) {
|
|
295
|
+
var prev = get(mappingAtom);
|
|
296
|
+
var arr = get(arrAtom);
|
|
297
|
+
var mapping = _getMapping(arr, prev == null ? void 0 : prev.arr);
|
|
298
|
+
var index = mapping.keyList.indexOf(key);
|
|
299
|
+
if (index < 0 || index >= arr.length) {
|
|
300
|
+
throw new Error('splitAtom: index out of bounds for write');
|
|
301
|
+
}
|
|
302
|
+
var nextItem = isFunction(update) ? update(arr[index]) : update;
|
|
303
|
+
if (!Object.is(arr[index], nextItem)) {
|
|
304
|
+
set(arrAtom, [].concat(arr.slice(0, index), [nextItem], arr.slice(index + 1)));
|
|
305
|
+
}
|
|
306
|
+
};
|
|
307
|
+
atomList[index] = isWritable(arrAtom) ? vanilla.atom(read, write) : vanilla.atom(read);
|
|
308
|
+
});
|
|
309
|
+
if (prevMapping && prevMapping.keyList.length === keyList.length && prevMapping.keyList.every(function (x, i) {
|
|
310
|
+
return x === keyList[i];
|
|
311
|
+
})) {
|
|
312
|
+
mapping = prevMapping;
|
|
313
|
+
} else {
|
|
314
|
+
mapping = {
|
|
315
|
+
arr: arr,
|
|
316
|
+
atomList: atomList,
|
|
317
|
+
keyList: keyList
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
mappingCache.set(arr, mapping);
|
|
321
|
+
return mapping;
|
|
322
|
+
};
|
|
323
|
+
var mappingAtom = vanilla.atom(function (get) {
|
|
324
|
+
var prev = get(mappingAtom);
|
|
325
|
+
var arr = get(arrAtom);
|
|
326
|
+
var mapping = _getMapping(arr, prev == null ? void 0 : prev.arr);
|
|
327
|
+
return mapping;
|
|
328
|
+
});
|
|
329
|
+
{
|
|
330
|
+
mappingAtom.debugPrivate = true;
|
|
331
|
+
}
|
|
332
|
+
mappingAtom.init = undefined;
|
|
333
|
+
var splittedAtom = isWritable(arrAtom) ? vanilla.atom(function (get) {
|
|
334
|
+
return get(mappingAtom).atomList;
|
|
335
|
+
}, function (get, set, action) {
|
|
336
|
+
switch (action.type) {
|
|
337
|
+
case 'remove':
|
|
338
|
+
{
|
|
339
|
+
var index = get(splittedAtom).indexOf(action.atom);
|
|
340
|
+
if (index >= 0) {
|
|
341
|
+
var arr = get(arrAtom);
|
|
342
|
+
set(arrAtom, [].concat(arr.slice(0, index), arr.slice(index + 1)));
|
|
343
|
+
}
|
|
344
|
+
break;
|
|
345
|
+
}
|
|
346
|
+
case 'insert':
|
|
347
|
+
{
|
|
348
|
+
var _index = action.before ? get(splittedAtom).indexOf(action.before) : get(splittedAtom).length;
|
|
349
|
+
if (_index >= 0) {
|
|
350
|
+
var _arr = get(arrAtom);
|
|
351
|
+
set(arrAtom, [].concat(_arr.slice(0, _index), [action.value], _arr.slice(_index)));
|
|
352
|
+
}
|
|
353
|
+
break;
|
|
354
|
+
}
|
|
355
|
+
case 'move':
|
|
356
|
+
{
|
|
357
|
+
var index1 = get(splittedAtom).indexOf(action.atom);
|
|
358
|
+
var index2 = action.before ? get(splittedAtom).indexOf(action.before) : get(splittedAtom).length;
|
|
359
|
+
if (index1 >= 0 && index2 >= 0) {
|
|
360
|
+
var _arr2 = get(arrAtom);
|
|
361
|
+
if (index1 < index2) {
|
|
362
|
+
set(arrAtom, [].concat(_arr2.slice(0, index1), _arr2.slice(index1 + 1, index2), [_arr2[index1]], _arr2.slice(index2)));
|
|
363
|
+
} else {
|
|
364
|
+
set(arrAtom, [].concat(_arr2.slice(0, index2), [_arr2[index1]], _arr2.slice(index2, index1), _arr2.slice(index1 + 1)));
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
break;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
}) : vanilla.atom(function (get) {
|
|
371
|
+
return get(mappingAtom).atomList;
|
|
372
|
+
});
|
|
373
|
+
return splittedAtom;
|
|
374
|
+
}, arrAtom, keyExtractor || cacheKeyForEmptyKeyExtractor);
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
function atomWithDefault(getDefault) {
|
|
378
|
+
var EMPTY = Symbol();
|
|
379
|
+
var overwrittenAtom = vanilla.atom(EMPTY);
|
|
380
|
+
{
|
|
381
|
+
overwrittenAtom.debugPrivate = true;
|
|
382
|
+
}
|
|
383
|
+
var anAtom = vanilla.atom(function (get, options) {
|
|
384
|
+
var overwritten = get(overwrittenAtom);
|
|
385
|
+
if (overwritten !== EMPTY) {
|
|
386
|
+
return overwritten;
|
|
387
|
+
}
|
|
388
|
+
return getDefault(get, options);
|
|
389
|
+
}, function (get, set, update) {
|
|
390
|
+
var newValue = typeof update === 'function' ? update(get(anAtom)) : update;
|
|
391
|
+
set(overwrittenAtom, newValue === RESET ? EMPTY : newValue);
|
|
392
|
+
});
|
|
393
|
+
return anAtom;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
var isPromiseLike$2 = function isPromiseLike(x) {
|
|
397
|
+
return typeof (x == null ? void 0 : x.then) === 'function';
|
|
398
|
+
};
|
|
399
|
+
function withStorageValidator(validator) {
|
|
400
|
+
return function (unknownStorage) {
|
|
401
|
+
var storage = _extends({}, unknownStorage, {
|
|
402
|
+
getItem: function getItem(key, initialValue) {
|
|
403
|
+
var validate = function validate(value) {
|
|
404
|
+
if (!validator(value)) {
|
|
405
|
+
return initialValue;
|
|
406
|
+
}
|
|
407
|
+
return value;
|
|
408
|
+
};
|
|
409
|
+
var value = unknownStorage.getItem(key, initialValue);
|
|
410
|
+
if (isPromiseLike$2(value)) {
|
|
411
|
+
return value.then(validate);
|
|
412
|
+
}
|
|
413
|
+
return validate(value);
|
|
414
|
+
}
|
|
415
|
+
});
|
|
416
|
+
return storage;
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
function createJSONStorage(getStringStorage, options) {
|
|
420
|
+
if (getStringStorage === void 0) {
|
|
421
|
+
getStringStorage = function getStringStorage() {
|
|
422
|
+
try {
|
|
423
|
+
return window.localStorage;
|
|
424
|
+
} catch (e) {
|
|
425
|
+
{
|
|
426
|
+
if (typeof window !== 'undefined') {
|
|
427
|
+
console.warn(e);
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
return undefined;
|
|
431
|
+
}
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
var lastStr;
|
|
435
|
+
var lastValue;
|
|
436
|
+
var storage = {
|
|
437
|
+
getItem: function getItem(key, initialValue) {
|
|
438
|
+
var _getStringStorage$get, _getStringStorage;
|
|
439
|
+
var parse = function parse(str) {
|
|
440
|
+
str = str || '';
|
|
441
|
+
if (lastStr !== str) {
|
|
442
|
+
try {
|
|
443
|
+
lastValue = JSON.parse(str, options == null ? void 0 : options.reviver);
|
|
444
|
+
} catch (_unused) {
|
|
445
|
+
return initialValue;
|
|
446
|
+
}
|
|
447
|
+
lastStr = str;
|
|
448
|
+
}
|
|
449
|
+
return lastValue;
|
|
450
|
+
};
|
|
451
|
+
var str = (_getStringStorage$get = (_getStringStorage = getStringStorage()) == null ? void 0 : _getStringStorage.getItem(key)) != null ? _getStringStorage$get : null;
|
|
452
|
+
if (isPromiseLike$2(str)) {
|
|
453
|
+
return str.then(parse);
|
|
454
|
+
}
|
|
455
|
+
return parse(str);
|
|
456
|
+
},
|
|
457
|
+
setItem: function setItem(key, newValue) {
|
|
458
|
+
var _getStringStorage2;
|
|
459
|
+
return (_getStringStorage2 = getStringStorage()) == null ? void 0 : _getStringStorage2.setItem(key, JSON.stringify(newValue, options == null ? void 0 : options.replacer));
|
|
460
|
+
},
|
|
461
|
+
removeItem: function removeItem(key) {
|
|
462
|
+
var _getStringStorage3;
|
|
463
|
+
return (_getStringStorage3 = getStringStorage()) == null ? void 0 : _getStringStorage3.removeItem(key);
|
|
464
|
+
}
|
|
465
|
+
};
|
|
466
|
+
var createHandleSubscribe = function createHandleSubscribe(subscriber) {
|
|
467
|
+
return function (key, callback, initialValue) {
|
|
468
|
+
return subscriber(key, function (v) {
|
|
469
|
+
var newValue;
|
|
470
|
+
try {
|
|
471
|
+
newValue = JSON.parse(v || '');
|
|
472
|
+
} catch (_unused2) {
|
|
473
|
+
newValue = initialValue;
|
|
474
|
+
}
|
|
475
|
+
callback(newValue);
|
|
476
|
+
});
|
|
477
|
+
};
|
|
478
|
+
};
|
|
479
|
+
var subscriber;
|
|
480
|
+
try {
|
|
481
|
+
var _getStringStorage4;
|
|
482
|
+
subscriber = (_getStringStorage4 = getStringStorage()) == null ? void 0 : _getStringStorage4.subscribe;
|
|
483
|
+
} catch (_unused3) {}
|
|
484
|
+
if (!subscriber && typeof window !== 'undefined' && typeof window.addEventListener === 'function' && window.Storage) {
|
|
485
|
+
subscriber = function subscriber(key, callback) {
|
|
486
|
+
if (!(getStringStorage() instanceof window.Storage)) {
|
|
487
|
+
return function () {};
|
|
488
|
+
}
|
|
489
|
+
var storageEventCallback = function storageEventCallback(e) {
|
|
490
|
+
if (e.storageArea === getStringStorage() && e.key === key) {
|
|
491
|
+
callback(e.newValue);
|
|
492
|
+
}
|
|
493
|
+
};
|
|
494
|
+
window.addEventListener('storage', storageEventCallback);
|
|
495
|
+
return function () {
|
|
496
|
+
window.removeEventListener('storage', storageEventCallback);
|
|
497
|
+
};
|
|
498
|
+
};
|
|
499
|
+
}
|
|
500
|
+
if (subscriber) {
|
|
501
|
+
storage.subscribe = createHandleSubscribe(subscriber);
|
|
502
|
+
}
|
|
503
|
+
return storage;
|
|
504
|
+
}
|
|
505
|
+
var defaultStorage = createJSONStorage();
|
|
506
|
+
function atomWithStorage(key, initialValue, storage, options) {
|
|
507
|
+
if (storage === void 0) {
|
|
508
|
+
storage = defaultStorage;
|
|
509
|
+
}
|
|
510
|
+
var getOnInit = options == null ? void 0 : options.getOnInit;
|
|
511
|
+
var baseAtom = vanilla.atom(getOnInit ? storage.getItem(key, initialValue) : initialValue);
|
|
512
|
+
{
|
|
513
|
+
baseAtom.debugPrivate = true;
|
|
514
|
+
}
|
|
515
|
+
baseAtom.onMount = function (setAtom) {
|
|
516
|
+
setAtom(storage.getItem(key, initialValue));
|
|
517
|
+
var unsub;
|
|
518
|
+
if (storage.subscribe) {
|
|
519
|
+
unsub = storage.subscribe(key, setAtom, initialValue);
|
|
520
|
+
}
|
|
521
|
+
return unsub;
|
|
522
|
+
};
|
|
523
|
+
var anAtom = vanilla.atom(function (get) {
|
|
524
|
+
return get(baseAtom);
|
|
525
|
+
}, function (get, set, update) {
|
|
526
|
+
var nextValue = typeof update === 'function' ? update(get(baseAtom)) : update;
|
|
527
|
+
if (nextValue === RESET) {
|
|
528
|
+
set(baseAtom, initialValue);
|
|
529
|
+
return storage.removeItem(key);
|
|
530
|
+
}
|
|
531
|
+
if (isPromiseLike$2(nextValue)) {
|
|
532
|
+
return nextValue.then(function (resolvedValue) {
|
|
533
|
+
set(baseAtom, resolvedValue);
|
|
534
|
+
return storage.setItem(key, resolvedValue);
|
|
535
|
+
});
|
|
536
|
+
}
|
|
537
|
+
set(baseAtom, nextValue);
|
|
538
|
+
return storage.setItem(key, nextValue);
|
|
539
|
+
});
|
|
540
|
+
return anAtom;
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
var isPromiseLike$1 = function isPromiseLike(x) {
|
|
544
|
+
return typeof (x == null ? void 0 : x.then) === 'function';
|
|
545
|
+
};
|
|
546
|
+
function atomWithObservable(getObservable, options) {
|
|
547
|
+
var returnResultData = function returnResultData(result) {
|
|
548
|
+
if ('e' in result) {
|
|
549
|
+
throw result.e;
|
|
550
|
+
}
|
|
551
|
+
return result.d;
|
|
552
|
+
};
|
|
553
|
+
var observableResultAtom = vanilla.atom(function (get) {
|
|
554
|
+
var _Symbol$observable, _ref;
|
|
555
|
+
var observable = getObservable(get);
|
|
556
|
+
var itself = (_Symbol$observable = (_ref = observable)[Symbol.observable]) == null ? void 0 : _Symbol$observable.call(_ref);
|
|
557
|
+
if (itself) {
|
|
558
|
+
observable = itself;
|
|
559
|
+
}
|
|
560
|
+
var resolve;
|
|
561
|
+
var makePending = function makePending() {
|
|
562
|
+
return new Promise(function (r) {
|
|
563
|
+
resolve = r;
|
|
564
|
+
});
|
|
565
|
+
};
|
|
566
|
+
var initialResult = options && 'initialValue' in options ? {
|
|
567
|
+
d: typeof options.initialValue === 'function' ? options.initialValue() : options.initialValue
|
|
568
|
+
} : makePending();
|
|
569
|
+
var setResult;
|
|
570
|
+
var lastResult;
|
|
571
|
+
var listener = function listener(result) {
|
|
572
|
+
lastResult = result;
|
|
573
|
+
resolve == null || resolve(result);
|
|
574
|
+
setResult == null || setResult(result);
|
|
575
|
+
};
|
|
576
|
+
var subscription;
|
|
577
|
+
var timer;
|
|
578
|
+
var isNotMounted = function isNotMounted() {
|
|
579
|
+
return !setResult;
|
|
580
|
+
};
|
|
581
|
+
var unsubscribe = function unsubscribe() {
|
|
582
|
+
if (subscription) {
|
|
583
|
+
subscription.unsubscribe();
|
|
584
|
+
subscription = undefined;
|
|
585
|
+
}
|
|
586
|
+
};
|
|
587
|
+
var start = function start() {
|
|
588
|
+
if (subscription) {
|
|
589
|
+
clearTimeout(timer);
|
|
590
|
+
subscription.unsubscribe();
|
|
591
|
+
}
|
|
592
|
+
subscription = observable.subscribe({
|
|
593
|
+
next: function next(d) {
|
|
594
|
+
return listener({
|
|
595
|
+
d: d
|
|
596
|
+
});
|
|
597
|
+
},
|
|
598
|
+
error: function error(e) {
|
|
599
|
+
return listener({
|
|
600
|
+
e: e
|
|
601
|
+
});
|
|
602
|
+
},
|
|
603
|
+
complete: function complete() {}
|
|
604
|
+
});
|
|
605
|
+
if (isNotMounted() && options != null && options.unstable_timeout) {
|
|
606
|
+
timer = setTimeout(unsubscribe, options.unstable_timeout);
|
|
607
|
+
}
|
|
608
|
+
};
|
|
609
|
+
start();
|
|
610
|
+
var resultAtom = vanilla.atom(lastResult || initialResult);
|
|
611
|
+
{
|
|
612
|
+
resultAtom.debugPrivate = true;
|
|
613
|
+
}
|
|
614
|
+
resultAtom.onMount = function (update) {
|
|
615
|
+
setResult = update;
|
|
616
|
+
if (lastResult) {
|
|
617
|
+
update(lastResult);
|
|
618
|
+
}
|
|
619
|
+
if (subscription) {
|
|
620
|
+
clearTimeout(timer);
|
|
621
|
+
} else {
|
|
622
|
+
start();
|
|
623
|
+
}
|
|
624
|
+
return function () {
|
|
625
|
+
setResult = undefined;
|
|
626
|
+
if (options != null && options.unstable_timeout) {
|
|
627
|
+
timer = setTimeout(unsubscribe, options.unstable_timeout);
|
|
628
|
+
} else {
|
|
629
|
+
unsubscribe();
|
|
630
|
+
}
|
|
631
|
+
};
|
|
632
|
+
};
|
|
633
|
+
return [resultAtom, observable, makePending, start, isNotMounted];
|
|
634
|
+
});
|
|
635
|
+
{
|
|
636
|
+
observableResultAtom.debugPrivate = true;
|
|
637
|
+
}
|
|
638
|
+
var observableAtom = vanilla.atom(function (get) {
|
|
639
|
+
var _get = get(observableResultAtom),
|
|
640
|
+
resultAtom = _get[0];
|
|
641
|
+
var result = get(resultAtom);
|
|
642
|
+
if (isPromiseLike$1(result)) {
|
|
643
|
+
return result.then(returnResultData);
|
|
644
|
+
}
|
|
645
|
+
return returnResultData(result);
|
|
646
|
+
}, function (get, set, data) {
|
|
647
|
+
var _get2 = get(observableResultAtom),
|
|
648
|
+
resultAtom = _get2[0],
|
|
649
|
+
observable = _get2[1],
|
|
650
|
+
makePending = _get2[2],
|
|
651
|
+
start = _get2[3],
|
|
652
|
+
isNotMounted = _get2[4];
|
|
653
|
+
if ('next' in observable) {
|
|
654
|
+
if (isNotMounted()) {
|
|
655
|
+
set(resultAtom, makePending());
|
|
656
|
+
start();
|
|
657
|
+
}
|
|
658
|
+
observable.next(data);
|
|
659
|
+
} else {
|
|
660
|
+
throw new Error('observable is not subject');
|
|
661
|
+
}
|
|
662
|
+
});
|
|
663
|
+
return observableAtom;
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
var getCached = function getCached(c, m, k) {
|
|
667
|
+
return (m.has(k) ? m : m.set(k, c())).get(k);
|
|
668
|
+
};
|
|
669
|
+
var cache1$1 = new WeakMap();
|
|
670
|
+
var memo2 = function memo2(create, dep1, dep2) {
|
|
671
|
+
var cache2 = getCached(function () {
|
|
672
|
+
return new WeakMap();
|
|
673
|
+
}, cache1$1, dep1);
|
|
674
|
+
return getCached(create, cache2, dep2);
|
|
675
|
+
};
|
|
676
|
+
var isPromiseLike = function isPromiseLike(p) {
|
|
677
|
+
return typeof (p == null ? void 0 : p.then) === 'function';
|
|
678
|
+
};
|
|
679
|
+
var defaultFallback = function defaultFallback() {
|
|
680
|
+
return undefined;
|
|
681
|
+
};
|
|
682
|
+
function unwrap(anAtom, fallback) {
|
|
683
|
+
if (fallback === void 0) {
|
|
684
|
+
fallback = defaultFallback;
|
|
685
|
+
}
|
|
686
|
+
return memo2(function () {
|
|
687
|
+
var promiseErrorCache = new WeakMap();
|
|
688
|
+
var promiseResultCache = new WeakMap();
|
|
689
|
+
var refreshAtom = vanilla.atom(0);
|
|
690
|
+
var triggerRefreshAtom = vanilla.atom([]);
|
|
691
|
+
triggerRefreshAtom.INTERNAL_onInit = function (store) {
|
|
692
|
+
store.set(triggerRefreshAtom, [function () {
|
|
693
|
+
return store.set(refreshAtom, function (c) {
|
|
694
|
+
return c + 1;
|
|
695
|
+
});
|
|
696
|
+
}]);
|
|
697
|
+
};
|
|
698
|
+
{
|
|
699
|
+
refreshAtom.debugPrivate = true;
|
|
700
|
+
triggerRefreshAtom.debugPrivate = true;
|
|
701
|
+
}
|
|
702
|
+
var promiseAndValueAtom = vanilla.atom(function (get) {
|
|
703
|
+
var _prev;
|
|
704
|
+
get(refreshAtom);
|
|
705
|
+
var prev;
|
|
706
|
+
try {
|
|
707
|
+
prev = get(promiseAndValueAtom);
|
|
708
|
+
} catch (_unused) {}
|
|
709
|
+
var promise = get(anAtom);
|
|
710
|
+
if (!isPromiseLike(promise)) {
|
|
711
|
+
return {
|
|
712
|
+
v: promise
|
|
713
|
+
};
|
|
714
|
+
}
|
|
715
|
+
if (promise !== ((_prev = prev) == null ? void 0 : _prev.p)) {
|
|
716
|
+
promise.then(function (v) {
|
|
717
|
+
promiseResultCache.set(promise, v);
|
|
718
|
+
var _get2 = get(triggerRefreshAtom),
|
|
719
|
+
triggerRefresh = _get2[0];
|
|
720
|
+
triggerRefresh();
|
|
721
|
+
}, function (e) {
|
|
722
|
+
promiseErrorCache.set(promise, e);
|
|
723
|
+
var _get3 = get(triggerRefreshAtom),
|
|
724
|
+
triggerRefresh = _get3[0];
|
|
725
|
+
triggerRefresh();
|
|
726
|
+
});
|
|
727
|
+
}
|
|
728
|
+
if (promiseErrorCache.has(promise)) {
|
|
729
|
+
throw promiseErrorCache.get(promise);
|
|
730
|
+
}
|
|
731
|
+
if (promiseResultCache.has(promise)) {
|
|
732
|
+
return {
|
|
733
|
+
p: promise,
|
|
734
|
+
v: promiseResultCache.get(promise)
|
|
735
|
+
};
|
|
736
|
+
}
|
|
737
|
+
if (prev && 'v' in prev) {
|
|
738
|
+
return {
|
|
739
|
+
p: promise,
|
|
740
|
+
f: fallback(prev.v),
|
|
741
|
+
v: prev.v
|
|
742
|
+
};
|
|
743
|
+
}
|
|
744
|
+
return {
|
|
745
|
+
p: promise,
|
|
746
|
+
f: fallback()
|
|
747
|
+
};
|
|
748
|
+
});
|
|
749
|
+
promiseAndValueAtom.init = undefined;
|
|
750
|
+
{
|
|
751
|
+
promiseAndValueAtom.debugPrivate = true;
|
|
752
|
+
}
|
|
753
|
+
return vanilla.atom(function (get) {
|
|
754
|
+
var state = get(promiseAndValueAtom);
|
|
755
|
+
if ('f' in state) {
|
|
756
|
+
return state.f;
|
|
757
|
+
}
|
|
758
|
+
return state.v;
|
|
759
|
+
}, function (_get, set) {
|
|
760
|
+
for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
|
761
|
+
args[_key - 2] = arguments[_key];
|
|
762
|
+
}
|
|
763
|
+
return set.apply(void 0, [anAtom].concat(args));
|
|
764
|
+
});
|
|
765
|
+
}, anAtom, fallback);
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
var cache1 = new WeakMap();
|
|
769
|
+
var memo1 = function memo1(create, dep1) {
|
|
770
|
+
return (cache1.has(dep1) ? cache1 : cache1.set(dep1, create())).get(dep1);
|
|
771
|
+
};
|
|
772
|
+
var didWarnDeprecation = false;
|
|
773
|
+
function loadable(anAtom) {
|
|
774
|
+
if (!didWarnDeprecation) {
|
|
775
|
+
console.warn('[DEPRECATED] loadable is deprecated and will be removed in v3. ' + 'Please use a userland util with the `unwrap` util: https://github.com/pmndrs/jotai/pull/3217');
|
|
776
|
+
didWarnDeprecation = true;
|
|
777
|
+
}
|
|
778
|
+
return memo1(function () {
|
|
779
|
+
var LOADING = {
|
|
780
|
+
state: 'loading'
|
|
781
|
+
};
|
|
782
|
+
var unwrappedAtom = unwrap(anAtom, function () {
|
|
783
|
+
return LOADING;
|
|
784
|
+
});
|
|
785
|
+
return vanilla.atom(function (get) {
|
|
786
|
+
try {
|
|
787
|
+
var data = get(unwrappedAtom);
|
|
788
|
+
if (data === LOADING) {
|
|
789
|
+
return LOADING;
|
|
790
|
+
}
|
|
791
|
+
return {
|
|
792
|
+
state: 'hasData',
|
|
793
|
+
data: data
|
|
794
|
+
};
|
|
795
|
+
} catch (error) {
|
|
796
|
+
return {
|
|
797
|
+
state: 'hasError',
|
|
798
|
+
error: error
|
|
799
|
+
};
|
|
800
|
+
}
|
|
801
|
+
});
|
|
802
|
+
}, anAtom);
|
|
803
|
+
}
|
|
804
|
+
|
|
805
|
+
function atomWithRefresh(read, write) {
|
|
806
|
+
var refreshAtom = vanilla.atom(0);
|
|
807
|
+
{
|
|
808
|
+
refreshAtom.debugPrivate = true;
|
|
809
|
+
}
|
|
810
|
+
return vanilla.atom(function (get, options) {
|
|
811
|
+
get(refreshAtom);
|
|
812
|
+
return read(get, options);
|
|
813
|
+
}, function (get, set) {
|
|
814
|
+
for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
|
815
|
+
args[_key - 2] = arguments[_key];
|
|
816
|
+
}
|
|
817
|
+
if (args.length === 0) {
|
|
818
|
+
set(refreshAtom, function (c) {
|
|
819
|
+
return c + 1;
|
|
820
|
+
});
|
|
821
|
+
} else if (write) {
|
|
822
|
+
return write.apply(void 0, [get, set].concat(args));
|
|
823
|
+
} else {
|
|
824
|
+
throw new Error('refresh must be called without arguments');
|
|
825
|
+
}
|
|
826
|
+
});
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
function atomWithLazy(makeInitial) {
|
|
830
|
+
var a = vanilla.atom(undefined);
|
|
831
|
+
delete a.init;
|
|
832
|
+
Object.defineProperty(a, 'init', {
|
|
833
|
+
get: function get() {
|
|
834
|
+
return makeInitial();
|
|
835
|
+
}
|
|
836
|
+
});
|
|
837
|
+
return a;
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
exports.RESET = RESET;
|
|
841
|
+
exports.atomFamily = atomFamily;
|
|
842
|
+
exports.atomWithDefault = atomWithDefault;
|
|
843
|
+
exports.atomWithLazy = atomWithLazy;
|
|
844
|
+
exports.atomWithObservable = atomWithObservable;
|
|
845
|
+
exports.atomWithReducer = atomWithReducer;
|
|
846
|
+
exports.atomWithRefresh = atomWithRefresh;
|
|
847
|
+
exports.atomWithReset = atomWithReset;
|
|
848
|
+
exports.atomWithStorage = atomWithStorage;
|
|
849
|
+
exports.createJSONStorage = createJSONStorage;
|
|
850
|
+
exports.freezeAtom = freezeAtom;
|
|
851
|
+
exports.freezeAtomCreator = freezeAtomCreator;
|
|
852
|
+
exports.loadable = loadable;
|
|
853
|
+
exports.selectAtom = selectAtom;
|
|
854
|
+
exports.splitAtom = splitAtom;
|
|
855
|
+
exports.unstable_withStorageValidator = withStorageValidator;
|
|
856
|
+
exports.unwrap = unwrap;
|
|
857
|
+
|
|
858
|
+
}));
|