@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,779 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function _arrayLikeToArray(r, a) {
|
|
4
|
+
(null == a || a > r.length) && (a = r.length);
|
|
5
|
+
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
|
|
6
|
+
return n;
|
|
7
|
+
}
|
|
8
|
+
function _createForOfIteratorHelperLoose(r, e) {
|
|
9
|
+
var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
10
|
+
if (t) return (t = t.call(r)).next.bind(t);
|
|
11
|
+
if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e) {
|
|
12
|
+
t && (r = t);
|
|
13
|
+
var o = 0;
|
|
14
|
+
return function () {
|
|
15
|
+
return o >= r.length ? {
|
|
16
|
+
done: true
|
|
17
|
+
} : {
|
|
18
|
+
done: false,
|
|
19
|
+
value: r[o++]
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
24
|
+
}
|
|
25
|
+
function _unsupportedIterableToArray(r, a) {
|
|
26
|
+
if (r) {
|
|
27
|
+
if ("string" == typeof r) return _arrayLikeToArray(r, a);
|
|
28
|
+
var t = {}.toString.call(r).slice(8, -1);
|
|
29
|
+
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;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function hasInitialValue(atom) {
|
|
34
|
+
return 'init' in atom;
|
|
35
|
+
}
|
|
36
|
+
function isActuallyWritableAtom(atom) {
|
|
37
|
+
return !!atom.write;
|
|
38
|
+
}
|
|
39
|
+
function isAtomStateInitialized(atomState) {
|
|
40
|
+
return 'v' in atomState || 'e' in atomState;
|
|
41
|
+
}
|
|
42
|
+
function returnAtomValue(atomState) {
|
|
43
|
+
if ('e' in atomState) {
|
|
44
|
+
throw atomState.e;
|
|
45
|
+
}
|
|
46
|
+
if (process.env.NODE_ENV !== 'production' && !('v' in atomState)) {
|
|
47
|
+
throw new Error('[Bug] atom state is not initialized');
|
|
48
|
+
}
|
|
49
|
+
return atomState.v;
|
|
50
|
+
}
|
|
51
|
+
function isPromiseLike(p) {
|
|
52
|
+
return typeof (p == null ? void 0 : p.then) === 'function';
|
|
53
|
+
}
|
|
54
|
+
function addPendingPromiseToDependency(atom, promise, dependencyAtomState) {
|
|
55
|
+
if (!dependencyAtomState.p.has(atom)) {
|
|
56
|
+
dependencyAtomState.p.add(atom);
|
|
57
|
+
var cleanup = function cleanup() {
|
|
58
|
+
return dependencyAtomState.p.delete(atom);
|
|
59
|
+
};
|
|
60
|
+
promise.then(cleanup, cleanup);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function getMountedOrPendingDependents(atom, atomState, mountedMap) {
|
|
64
|
+
var dependents = new Set();
|
|
65
|
+
for (var _iterator = _createForOfIteratorHelperLoose(((_mountedMap$get = mountedMap.get(atom)) == null ? void 0 : _mountedMap$get.t) || []), _step; !(_step = _iterator()).done;) {
|
|
66
|
+
var _mountedMap$get;
|
|
67
|
+
var a = _step.value;
|
|
68
|
+
dependents.add(a);
|
|
69
|
+
}
|
|
70
|
+
for (var _iterator2 = _createForOfIteratorHelperLoose(atomState.p), _step2; !(_step2 = _iterator2()).done;) {
|
|
71
|
+
var atomWithPendingPromise = _step2.value;
|
|
72
|
+
dependents.add(atomWithPendingPromise);
|
|
73
|
+
}
|
|
74
|
+
return dependents;
|
|
75
|
+
}
|
|
76
|
+
var createStoreHook = function createStoreHook() {
|
|
77
|
+
var callbacks = new Set();
|
|
78
|
+
var notify = function notify() {
|
|
79
|
+
return callbacks.forEach(function (fn) {
|
|
80
|
+
return fn();
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
notify.add = function (fn) {
|
|
84
|
+
callbacks.add(fn);
|
|
85
|
+
return function () {
|
|
86
|
+
return callbacks.delete(fn);
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
return notify;
|
|
90
|
+
};
|
|
91
|
+
var createStoreHookForAtoms = function createStoreHookForAtoms() {
|
|
92
|
+
var all = {};
|
|
93
|
+
var callbacks = new WeakMap();
|
|
94
|
+
var notify = function notify(atom) {
|
|
95
|
+
var _callbacks$get, _callbacks$get2;
|
|
96
|
+
(_callbacks$get = callbacks.get(all)) == null || _callbacks$get.forEach(function (fn) {
|
|
97
|
+
return fn(atom);
|
|
98
|
+
});
|
|
99
|
+
(_callbacks$get2 = callbacks.get(atom)) == null || _callbacks$get2.forEach(function (fn) {
|
|
100
|
+
return fn();
|
|
101
|
+
});
|
|
102
|
+
};
|
|
103
|
+
notify.add = function (atom, fn) {
|
|
104
|
+
var key = atom || all;
|
|
105
|
+
var fns = callbacks.get(key);
|
|
106
|
+
if (!fns) {
|
|
107
|
+
fns = new Set();
|
|
108
|
+
callbacks.set(key, fns);
|
|
109
|
+
}
|
|
110
|
+
fns.add(fn);
|
|
111
|
+
return function () {
|
|
112
|
+
fns.delete(fn);
|
|
113
|
+
if (!fns.size) {
|
|
114
|
+
callbacks.delete(key);
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
return notify;
|
|
119
|
+
};
|
|
120
|
+
function initializeStoreHooks(storeHooks) {
|
|
121
|
+
var _ref, _ref2, _ref3, _ref4, _ref5, _ref6;
|
|
122
|
+
(_ref = storeHooks).i || (_ref.i = createStoreHookForAtoms());
|
|
123
|
+
(_ref2 = storeHooks).r || (_ref2.r = createStoreHookForAtoms());
|
|
124
|
+
(_ref3 = storeHooks).c || (_ref3.c = createStoreHookForAtoms());
|
|
125
|
+
(_ref4 = storeHooks).m || (_ref4.m = createStoreHookForAtoms());
|
|
126
|
+
(_ref5 = storeHooks).u || (_ref5.u = createStoreHookForAtoms());
|
|
127
|
+
(_ref6 = storeHooks).f || (_ref6.f = createStoreHook());
|
|
128
|
+
return storeHooks;
|
|
129
|
+
}
|
|
130
|
+
var BUILDING_BLOCK_atomRead = function BUILDING_BLOCK_atomRead(_store, atom) {
|
|
131
|
+
for (var _len = arguments.length, params = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
|
132
|
+
params[_key - 2] = arguments[_key];
|
|
133
|
+
}
|
|
134
|
+
return atom.read.apply(atom, params);
|
|
135
|
+
};
|
|
136
|
+
var BUILDING_BLOCK_atomWrite = function BUILDING_BLOCK_atomWrite(_store, atom) {
|
|
137
|
+
for (var _len2 = arguments.length, params = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
|
|
138
|
+
params[_key2 - 2] = arguments[_key2];
|
|
139
|
+
}
|
|
140
|
+
return atom.write.apply(atom, params);
|
|
141
|
+
};
|
|
142
|
+
var BUILDING_BLOCK_atomOnInit = function BUILDING_BLOCK_atomOnInit(store, atom) {
|
|
143
|
+
return atom.INTERNAL_onInit == null ? void 0 : atom.INTERNAL_onInit(store);
|
|
144
|
+
};
|
|
145
|
+
var BUILDING_BLOCK_atomOnMount = function BUILDING_BLOCK_atomOnMount(_store, atom, setAtom) {
|
|
146
|
+
return atom.onMount == null ? void 0 : atom.onMount(setAtom);
|
|
147
|
+
};
|
|
148
|
+
var BUILDING_BLOCK_ensureAtomState = function BUILDING_BLOCK_ensureAtomState(store, atom) {
|
|
149
|
+
var buildingBlocks = getInternalBuildingBlocks(store);
|
|
150
|
+
var atomStateMap = buildingBlocks[0];
|
|
151
|
+
var storeHooks = buildingBlocks[6];
|
|
152
|
+
var atomOnInit = buildingBlocks[9];
|
|
153
|
+
if (process.env.NODE_ENV !== 'production' && !atom) {
|
|
154
|
+
throw new Error('Atom is undefined or null');
|
|
155
|
+
}
|
|
156
|
+
var atomState = atomStateMap.get(atom);
|
|
157
|
+
if (!atomState) {
|
|
158
|
+
atomState = {
|
|
159
|
+
d: new Map(),
|
|
160
|
+
p: new Set(),
|
|
161
|
+
n: 0
|
|
162
|
+
};
|
|
163
|
+
atomStateMap.set(atom, atomState);
|
|
164
|
+
storeHooks.i == null || storeHooks.i(atom);
|
|
165
|
+
atomOnInit == null || atomOnInit(store, atom);
|
|
166
|
+
}
|
|
167
|
+
return atomState;
|
|
168
|
+
};
|
|
169
|
+
var BUILDING_BLOCK_flushCallbacks = function BUILDING_BLOCK_flushCallbacks(store) {
|
|
170
|
+
var buildingBlocks = getInternalBuildingBlocks(store);
|
|
171
|
+
var mountedMap = buildingBlocks[1];
|
|
172
|
+
var changedAtoms = buildingBlocks[3];
|
|
173
|
+
var mountCallbacks = buildingBlocks[4];
|
|
174
|
+
var unmountCallbacks = buildingBlocks[5];
|
|
175
|
+
var storeHooks = buildingBlocks[6];
|
|
176
|
+
var recomputeInvalidatedAtoms = buildingBlocks[13];
|
|
177
|
+
var errors = [];
|
|
178
|
+
var call = function call(fn) {
|
|
179
|
+
try {
|
|
180
|
+
fn();
|
|
181
|
+
} catch (e) {
|
|
182
|
+
errors.push(e);
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
var _loop = function _loop() {
|
|
186
|
+
if (storeHooks.f) {
|
|
187
|
+
call(storeHooks.f);
|
|
188
|
+
}
|
|
189
|
+
var callbacks = new Set();
|
|
190
|
+
var add = callbacks.add.bind(callbacks);
|
|
191
|
+
changedAtoms.forEach(function (atom) {
|
|
192
|
+
var _mountedMap$get2;
|
|
193
|
+
return (_mountedMap$get2 = mountedMap.get(atom)) == null ? void 0 : _mountedMap$get2.l.forEach(add);
|
|
194
|
+
});
|
|
195
|
+
changedAtoms.clear();
|
|
196
|
+
unmountCallbacks.forEach(add);
|
|
197
|
+
unmountCallbacks.clear();
|
|
198
|
+
mountCallbacks.forEach(add);
|
|
199
|
+
mountCallbacks.clear();
|
|
200
|
+
callbacks.forEach(call);
|
|
201
|
+
if (changedAtoms.size) {
|
|
202
|
+
recomputeInvalidatedAtoms(store);
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
do {
|
|
206
|
+
_loop();
|
|
207
|
+
} while (changedAtoms.size || unmountCallbacks.size || mountCallbacks.size);
|
|
208
|
+
if (errors.length) {
|
|
209
|
+
throw new AggregateError(errors);
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
var BUILDING_BLOCK_recomputeInvalidatedAtoms = function BUILDING_BLOCK_recomputeInvalidatedAtoms(store) {
|
|
213
|
+
var buildingBlocks = getInternalBuildingBlocks(store);
|
|
214
|
+
var mountedMap = buildingBlocks[1];
|
|
215
|
+
var invalidatedAtoms = buildingBlocks[2];
|
|
216
|
+
var changedAtoms = buildingBlocks[3];
|
|
217
|
+
var ensureAtomState = buildingBlocks[11];
|
|
218
|
+
var readAtomState = buildingBlocks[14];
|
|
219
|
+
var mountDependencies = buildingBlocks[17];
|
|
220
|
+
var topSortedReversed = [];
|
|
221
|
+
var visiting = new WeakSet();
|
|
222
|
+
var visited = new WeakSet();
|
|
223
|
+
var stack = Array.from(changedAtoms);
|
|
224
|
+
while (stack.length) {
|
|
225
|
+
var a = stack[stack.length - 1];
|
|
226
|
+
var aState = ensureAtomState(store, a);
|
|
227
|
+
if (visited.has(a)) {
|
|
228
|
+
stack.pop();
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
if (visiting.has(a)) {
|
|
232
|
+
if (invalidatedAtoms.get(a) === aState.n) {
|
|
233
|
+
topSortedReversed.push([a, aState]);
|
|
234
|
+
} else if (process.env.NODE_ENV !== 'production' && invalidatedAtoms.has(a)) {
|
|
235
|
+
throw new Error('[Bug] invalidated atom exists');
|
|
236
|
+
}
|
|
237
|
+
visited.add(a);
|
|
238
|
+
stack.pop();
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
visiting.add(a);
|
|
242
|
+
for (var _iterator3 = _createForOfIteratorHelperLoose(getMountedOrPendingDependents(a, aState, mountedMap)), _step3; !(_step3 = _iterator3()).done;) {
|
|
243
|
+
var d = _step3.value;
|
|
244
|
+
if (!visiting.has(d)) {
|
|
245
|
+
stack.push(d);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
for (var i = topSortedReversed.length - 1; i >= 0; --i) {
|
|
250
|
+
var _ref7 = topSortedReversed[i],
|
|
251
|
+
_a = _ref7[0],
|
|
252
|
+
_aState = _ref7[1];
|
|
253
|
+
var hasChangedDeps = false;
|
|
254
|
+
for (var _iterator4 = _createForOfIteratorHelperLoose(_aState.d.keys()), _step4; !(_step4 = _iterator4()).done;) {
|
|
255
|
+
var dep = _step4.value;
|
|
256
|
+
if (dep !== _a && changedAtoms.has(dep)) {
|
|
257
|
+
hasChangedDeps = true;
|
|
258
|
+
break;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
if (hasChangedDeps) {
|
|
262
|
+
readAtomState(store, _a);
|
|
263
|
+
mountDependencies(store, _a);
|
|
264
|
+
}
|
|
265
|
+
invalidatedAtoms.delete(_a);
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
var storeMutationSet = new WeakSet();
|
|
269
|
+
var BUILDING_BLOCK_readAtomState = function BUILDING_BLOCK_readAtomState(store, atom) {
|
|
270
|
+
var buildingBlocks = getInternalBuildingBlocks(store);
|
|
271
|
+
var mountedMap = buildingBlocks[1];
|
|
272
|
+
var invalidatedAtoms = buildingBlocks[2];
|
|
273
|
+
var changedAtoms = buildingBlocks[3];
|
|
274
|
+
var storeHooks = buildingBlocks[6];
|
|
275
|
+
var atomRead = buildingBlocks[7];
|
|
276
|
+
var ensureAtomState = buildingBlocks[11];
|
|
277
|
+
var flushCallbacks = buildingBlocks[12];
|
|
278
|
+
var recomputeInvalidatedAtoms = buildingBlocks[13];
|
|
279
|
+
var readAtomState = buildingBlocks[14];
|
|
280
|
+
var writeAtomState = buildingBlocks[16];
|
|
281
|
+
var mountDependencies = buildingBlocks[17];
|
|
282
|
+
var setAtomStateValueOrPromise = buildingBlocks[20];
|
|
283
|
+
var registerAbortHandler = buildingBlocks[26];
|
|
284
|
+
var atomState = ensureAtomState(store, atom);
|
|
285
|
+
if (isAtomStateInitialized(atomState)) {
|
|
286
|
+
if (mountedMap.has(atom) && invalidatedAtoms.get(atom) !== atomState.n) {
|
|
287
|
+
return atomState;
|
|
288
|
+
}
|
|
289
|
+
var hasChangedDeps = false;
|
|
290
|
+
for (var _iterator5 = _createForOfIteratorHelperLoose(atomState.d), _step5; !(_step5 = _iterator5()).done;) {
|
|
291
|
+
var _step5$value = _step5.value,
|
|
292
|
+
a = _step5$value[0],
|
|
293
|
+
n = _step5$value[1];
|
|
294
|
+
if (readAtomState(store, a).n !== n) {
|
|
295
|
+
hasChangedDeps = true;
|
|
296
|
+
break;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
if (!hasChangedDeps) {
|
|
300
|
+
return atomState;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
var isSync = true;
|
|
304
|
+
var prevDeps = new Set(atomState.d.keys());
|
|
305
|
+
var nextDeps = new Map();
|
|
306
|
+
var pruneDependencies = function pruneDependencies() {
|
|
307
|
+
for (var _iterator6 = _createForOfIteratorHelperLoose(prevDeps), _step6; !(_step6 = _iterator6()).done;) {
|
|
308
|
+
var _a2 = _step6.value;
|
|
309
|
+
if (!nextDeps.has(_a2)) {
|
|
310
|
+
atomState.d.delete(_a2);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
};
|
|
314
|
+
var mountDependenciesIfAsync = function mountDependenciesIfAsync() {
|
|
315
|
+
if (mountedMap.has(atom)) {
|
|
316
|
+
var shouldRecompute = !changedAtoms.size;
|
|
317
|
+
mountDependencies(store, atom);
|
|
318
|
+
if (shouldRecompute) {
|
|
319
|
+
recomputeInvalidatedAtoms(store);
|
|
320
|
+
flushCallbacks(store);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
var getter = function getter(a) {
|
|
325
|
+
if (a === atom) {
|
|
326
|
+
var _aState2 = ensureAtomState(store, a);
|
|
327
|
+
if (!isAtomStateInitialized(_aState2)) {
|
|
328
|
+
if (hasInitialValue(a)) {
|
|
329
|
+
setAtomStateValueOrPromise(store, a, a.init);
|
|
330
|
+
} else {
|
|
331
|
+
throw new Error('no atom init');
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
return returnAtomValue(_aState2);
|
|
335
|
+
}
|
|
336
|
+
var aState = readAtomState(store, a);
|
|
337
|
+
try {
|
|
338
|
+
return returnAtomValue(aState);
|
|
339
|
+
} finally {
|
|
340
|
+
nextDeps.set(a, aState.n);
|
|
341
|
+
atomState.d.set(a, aState.n);
|
|
342
|
+
if (isPromiseLike(atomState.v)) {
|
|
343
|
+
addPendingPromiseToDependency(atom, atomState.v, aState);
|
|
344
|
+
}
|
|
345
|
+
if (mountedMap.has(atom)) {
|
|
346
|
+
var _mountedMap$get3;
|
|
347
|
+
(_mountedMap$get3 = mountedMap.get(a)) == null || _mountedMap$get3.t.add(atom);
|
|
348
|
+
}
|
|
349
|
+
if (!isSync) {
|
|
350
|
+
mountDependenciesIfAsync();
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
};
|
|
354
|
+
var controller;
|
|
355
|
+
var setSelf;
|
|
356
|
+
var options = {
|
|
357
|
+
get signal() {
|
|
358
|
+
if (!controller) {
|
|
359
|
+
controller = new AbortController();
|
|
360
|
+
}
|
|
361
|
+
return controller.signal;
|
|
362
|
+
},
|
|
363
|
+
get setSelf() {
|
|
364
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
365
|
+
console.warn('[DEPRECATED] setSelf is deprecated and will be removed in v3.');
|
|
366
|
+
}
|
|
367
|
+
if (process.env.NODE_ENV !== 'production' && !isActuallyWritableAtom(atom)) {
|
|
368
|
+
console.warn('setSelf function cannot be used with read-only atom');
|
|
369
|
+
}
|
|
370
|
+
if (!setSelf && isActuallyWritableAtom(atom)) {
|
|
371
|
+
setSelf = function setSelf() {
|
|
372
|
+
if (process.env.NODE_ENV !== 'production' && isSync) {
|
|
373
|
+
console.warn('setSelf function cannot be called in sync');
|
|
374
|
+
}
|
|
375
|
+
if (!isSync) {
|
|
376
|
+
try {
|
|
377
|
+
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
|
378
|
+
args[_key3] = arguments[_key3];
|
|
379
|
+
}
|
|
380
|
+
return writeAtomState.apply(void 0, [store, atom].concat(args));
|
|
381
|
+
} finally {
|
|
382
|
+
recomputeInvalidatedAtoms(store);
|
|
383
|
+
flushCallbacks(store);
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
return setSelf;
|
|
389
|
+
}
|
|
390
|
+
};
|
|
391
|
+
var prevEpochNumber = atomState.n;
|
|
392
|
+
try {
|
|
393
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
394
|
+
storeMutationSet.delete(store);
|
|
395
|
+
}
|
|
396
|
+
var _valueOrPromise = atomRead(store, atom, getter, options);
|
|
397
|
+
if (process.env.NODE_ENV !== 'production' && storeMutationSet.has(store)) {
|
|
398
|
+
console.warn('Detected store mutation during atom read. This is not supported.');
|
|
399
|
+
}
|
|
400
|
+
setAtomStateValueOrPromise(store, atom, _valueOrPromise);
|
|
401
|
+
if (isPromiseLike(_valueOrPromise)) {
|
|
402
|
+
registerAbortHandler(store, _valueOrPromise, function () {
|
|
403
|
+
var _controller;
|
|
404
|
+
return (_controller = controller) == null ? void 0 : _controller.abort();
|
|
405
|
+
});
|
|
406
|
+
var settle = function settle() {
|
|
407
|
+
pruneDependencies();
|
|
408
|
+
mountDependenciesIfAsync();
|
|
409
|
+
};
|
|
410
|
+
_valueOrPromise.then(settle, settle);
|
|
411
|
+
} else {
|
|
412
|
+
pruneDependencies();
|
|
413
|
+
}
|
|
414
|
+
storeHooks.r == null || storeHooks.r(atom);
|
|
415
|
+
return atomState;
|
|
416
|
+
} catch (error) {
|
|
417
|
+
delete atomState.v;
|
|
418
|
+
atomState.e = error;
|
|
419
|
+
++atomState.n;
|
|
420
|
+
return atomState;
|
|
421
|
+
} finally {
|
|
422
|
+
isSync = false;
|
|
423
|
+
if (prevEpochNumber !== atomState.n && invalidatedAtoms.get(atom) === prevEpochNumber) {
|
|
424
|
+
invalidatedAtoms.set(atom, atomState.n);
|
|
425
|
+
changedAtoms.add(atom);
|
|
426
|
+
storeHooks.c == null || storeHooks.c(atom);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
};
|
|
430
|
+
var BUILDING_BLOCK_invalidateDependents = function BUILDING_BLOCK_invalidateDependents(store, atom) {
|
|
431
|
+
var buildingBlocks = getInternalBuildingBlocks(store);
|
|
432
|
+
var mountedMap = buildingBlocks[1];
|
|
433
|
+
var invalidatedAtoms = buildingBlocks[2];
|
|
434
|
+
var ensureAtomState = buildingBlocks[11];
|
|
435
|
+
var stack = [atom];
|
|
436
|
+
while (stack.length) {
|
|
437
|
+
var a = stack.pop();
|
|
438
|
+
var aState = ensureAtomState(store, a);
|
|
439
|
+
for (var _iterator7 = _createForOfIteratorHelperLoose(getMountedOrPendingDependents(a, aState, mountedMap)), _step7; !(_step7 = _iterator7()).done;) {
|
|
440
|
+
var d = _step7.value;
|
|
441
|
+
var dState = ensureAtomState(store, d);
|
|
442
|
+
if (invalidatedAtoms.get(d) !== dState.n) {
|
|
443
|
+
invalidatedAtoms.set(d, dState.n);
|
|
444
|
+
stack.push(d);
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
};
|
|
449
|
+
var BUILDING_BLOCK_writeAtomState = function BUILDING_BLOCK_writeAtomState(store, atom) {
|
|
450
|
+
var buildingBlocks = getInternalBuildingBlocks(store);
|
|
451
|
+
var changedAtoms = buildingBlocks[3];
|
|
452
|
+
var storeHooks = buildingBlocks[6];
|
|
453
|
+
var atomWrite = buildingBlocks[8];
|
|
454
|
+
var ensureAtomState = buildingBlocks[11];
|
|
455
|
+
var flushCallbacks = buildingBlocks[12];
|
|
456
|
+
var recomputeInvalidatedAtoms = buildingBlocks[13];
|
|
457
|
+
var readAtomState = buildingBlocks[14];
|
|
458
|
+
var invalidateDependents = buildingBlocks[15];
|
|
459
|
+
var writeAtomState = buildingBlocks[16];
|
|
460
|
+
var mountDependencies = buildingBlocks[17];
|
|
461
|
+
var setAtomStateValueOrPromise = buildingBlocks[20];
|
|
462
|
+
var isSync = true;
|
|
463
|
+
var getter = function getter(a) {
|
|
464
|
+
return returnAtomValue(readAtomState(store, a));
|
|
465
|
+
};
|
|
466
|
+
var setter = function setter(a) {
|
|
467
|
+
var aState = ensureAtomState(store, a);
|
|
468
|
+
try {
|
|
469
|
+
for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {
|
|
470
|
+
args[_key5 - 1] = arguments[_key5];
|
|
471
|
+
}
|
|
472
|
+
if (a === atom) {
|
|
473
|
+
if (!hasInitialValue(a)) {
|
|
474
|
+
throw new Error('atom not writable');
|
|
475
|
+
}
|
|
476
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
477
|
+
storeMutationSet.add(store);
|
|
478
|
+
}
|
|
479
|
+
var prevEpochNumber = aState.n;
|
|
480
|
+
var v = args[0];
|
|
481
|
+
setAtomStateValueOrPromise(store, a, v);
|
|
482
|
+
mountDependencies(store, a);
|
|
483
|
+
if (prevEpochNumber !== aState.n) {
|
|
484
|
+
changedAtoms.add(a);
|
|
485
|
+
invalidateDependents(store, a);
|
|
486
|
+
storeHooks.c == null || storeHooks.c(a);
|
|
487
|
+
}
|
|
488
|
+
return undefined;
|
|
489
|
+
} else {
|
|
490
|
+
return writeAtomState.apply(void 0, [store, a].concat(args));
|
|
491
|
+
}
|
|
492
|
+
} finally {
|
|
493
|
+
if (!isSync) {
|
|
494
|
+
recomputeInvalidatedAtoms(store);
|
|
495
|
+
flushCallbacks(store);
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
};
|
|
499
|
+
try {
|
|
500
|
+
for (var _len4 = arguments.length, args = new Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {
|
|
501
|
+
args[_key4 - 2] = arguments[_key4];
|
|
502
|
+
}
|
|
503
|
+
return atomWrite.apply(void 0, [store, atom, getter, setter].concat(args));
|
|
504
|
+
} finally {
|
|
505
|
+
isSync = false;
|
|
506
|
+
}
|
|
507
|
+
};
|
|
508
|
+
var BUILDING_BLOCK_mountDependencies = function BUILDING_BLOCK_mountDependencies(store, atom) {
|
|
509
|
+
var buildingBlocks = getInternalBuildingBlocks(store);
|
|
510
|
+
var mountedMap = buildingBlocks[1];
|
|
511
|
+
var changedAtoms = buildingBlocks[3];
|
|
512
|
+
var storeHooks = buildingBlocks[6];
|
|
513
|
+
var ensureAtomState = buildingBlocks[11];
|
|
514
|
+
var invalidateDependents = buildingBlocks[15];
|
|
515
|
+
var mountAtom = buildingBlocks[18];
|
|
516
|
+
var unmountAtom = buildingBlocks[19];
|
|
517
|
+
var atomState = ensureAtomState(store, atom);
|
|
518
|
+
var mounted = mountedMap.get(atom);
|
|
519
|
+
if (mounted) {
|
|
520
|
+
for (var _iterator8 = _createForOfIteratorHelperLoose(atomState.d), _step8; !(_step8 = _iterator8()).done;) {
|
|
521
|
+
var _step8$value = _step8.value,
|
|
522
|
+
a = _step8$value[0],
|
|
523
|
+
n = _step8$value[1];
|
|
524
|
+
if (!mounted.d.has(a)) {
|
|
525
|
+
var aState = ensureAtomState(store, a);
|
|
526
|
+
var aMounted = mountAtom(store, a);
|
|
527
|
+
aMounted.t.add(atom);
|
|
528
|
+
mounted.d.add(a);
|
|
529
|
+
if (n !== aState.n) {
|
|
530
|
+
changedAtoms.add(a);
|
|
531
|
+
invalidateDependents(store, a);
|
|
532
|
+
storeHooks.c == null || storeHooks.c(a);
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
for (var _iterator9 = _createForOfIteratorHelperLoose(mounted.d), _step9; !(_step9 = _iterator9()).done;) {
|
|
537
|
+
var _a3 = _step9.value;
|
|
538
|
+
if (!atomState.d.has(_a3)) {
|
|
539
|
+
mounted.d.delete(_a3);
|
|
540
|
+
var _aMounted = unmountAtom(store, _a3);
|
|
541
|
+
_aMounted == null || _aMounted.t.delete(atom);
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
};
|
|
546
|
+
var BUILDING_BLOCK_mountAtom = function BUILDING_BLOCK_mountAtom(store, atom) {
|
|
547
|
+
var buildingBlocks = getInternalBuildingBlocks(store);
|
|
548
|
+
var mountedMap = buildingBlocks[1];
|
|
549
|
+
var mountCallbacks = buildingBlocks[4];
|
|
550
|
+
var storeHooks = buildingBlocks[6];
|
|
551
|
+
var atomOnMount = buildingBlocks[10];
|
|
552
|
+
var ensureAtomState = buildingBlocks[11];
|
|
553
|
+
var flushCallbacks = buildingBlocks[12];
|
|
554
|
+
var recomputeInvalidatedAtoms = buildingBlocks[13];
|
|
555
|
+
var readAtomState = buildingBlocks[14];
|
|
556
|
+
var writeAtomState = buildingBlocks[16];
|
|
557
|
+
var mountAtom = buildingBlocks[18];
|
|
558
|
+
var atomState = ensureAtomState(store, atom);
|
|
559
|
+
var mounted = mountedMap.get(atom);
|
|
560
|
+
if (!mounted) {
|
|
561
|
+
readAtomState(store, atom);
|
|
562
|
+
for (var _iterator0 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step0; !(_step0 = _iterator0()).done;) {
|
|
563
|
+
var a = _step0.value;
|
|
564
|
+
var aMounted = mountAtom(store, a);
|
|
565
|
+
aMounted.t.add(atom);
|
|
566
|
+
}
|
|
567
|
+
mounted = {
|
|
568
|
+
l: new Set(),
|
|
569
|
+
d: new Set(atomState.d.keys()),
|
|
570
|
+
t: new Set()
|
|
571
|
+
};
|
|
572
|
+
mountedMap.set(atom, mounted);
|
|
573
|
+
if (isActuallyWritableAtom(atom)) {
|
|
574
|
+
var processOnMount = function processOnMount() {
|
|
575
|
+
var isSync = true;
|
|
576
|
+
var setAtom = function setAtom() {
|
|
577
|
+
try {
|
|
578
|
+
for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
|
|
579
|
+
args[_key6] = arguments[_key6];
|
|
580
|
+
}
|
|
581
|
+
return writeAtomState.apply(void 0, [store, atom].concat(args));
|
|
582
|
+
} finally {
|
|
583
|
+
if (!isSync) {
|
|
584
|
+
recomputeInvalidatedAtoms(store);
|
|
585
|
+
flushCallbacks(store);
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
};
|
|
589
|
+
try {
|
|
590
|
+
var onUnmount = atomOnMount(store, atom, setAtom);
|
|
591
|
+
if (onUnmount) {
|
|
592
|
+
mounted.u = function () {
|
|
593
|
+
isSync = true;
|
|
594
|
+
try {
|
|
595
|
+
onUnmount();
|
|
596
|
+
} finally {
|
|
597
|
+
isSync = false;
|
|
598
|
+
}
|
|
599
|
+
};
|
|
600
|
+
}
|
|
601
|
+
} finally {
|
|
602
|
+
isSync = false;
|
|
603
|
+
}
|
|
604
|
+
};
|
|
605
|
+
mountCallbacks.add(processOnMount);
|
|
606
|
+
}
|
|
607
|
+
storeHooks.m == null || storeHooks.m(atom);
|
|
608
|
+
}
|
|
609
|
+
return mounted;
|
|
610
|
+
};
|
|
611
|
+
var BUILDING_BLOCK_unmountAtom = function BUILDING_BLOCK_unmountAtom(store, atom) {
|
|
612
|
+
var buildingBlocks = getInternalBuildingBlocks(store);
|
|
613
|
+
var mountedMap = buildingBlocks[1];
|
|
614
|
+
var unmountCallbacks = buildingBlocks[5];
|
|
615
|
+
var storeHooks = buildingBlocks[6];
|
|
616
|
+
var ensureAtomState = buildingBlocks[11];
|
|
617
|
+
var unmountAtom = buildingBlocks[19];
|
|
618
|
+
var atomState = ensureAtomState(store, atom);
|
|
619
|
+
var mounted = mountedMap.get(atom);
|
|
620
|
+
if (!mounted || mounted.l.size) {
|
|
621
|
+
return mounted;
|
|
622
|
+
}
|
|
623
|
+
var isDependent = false;
|
|
624
|
+
for (var _iterator1 = _createForOfIteratorHelperLoose(mounted.t), _step1; !(_step1 = _iterator1()).done;) {
|
|
625
|
+
var _mountedMap$get4;
|
|
626
|
+
var _a4 = _step1.value;
|
|
627
|
+
if ((_mountedMap$get4 = mountedMap.get(_a4)) != null && _mountedMap$get4.d.has(atom)) {
|
|
628
|
+
isDependent = true;
|
|
629
|
+
break;
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
if (!isDependent) {
|
|
633
|
+
if (mounted.u) {
|
|
634
|
+
unmountCallbacks.add(mounted.u);
|
|
635
|
+
}
|
|
636
|
+
mounted = undefined;
|
|
637
|
+
mountedMap.delete(atom);
|
|
638
|
+
for (var _iterator10 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step10; !(_step10 = _iterator10()).done;) {
|
|
639
|
+
var a = _step10.value;
|
|
640
|
+
var aMounted = unmountAtom(store, a);
|
|
641
|
+
aMounted == null || aMounted.t.delete(atom);
|
|
642
|
+
}
|
|
643
|
+
storeHooks.u == null || storeHooks.u(atom);
|
|
644
|
+
return undefined;
|
|
645
|
+
}
|
|
646
|
+
return mounted;
|
|
647
|
+
};
|
|
648
|
+
var BUILDING_BLOCK_setAtomStateValueOrPromise = function BUILDING_BLOCK_setAtomStateValueOrPromise(store, atom, valueOrPromise) {
|
|
649
|
+
var buildingBlocks = getInternalBuildingBlocks(store);
|
|
650
|
+
var ensureAtomState = buildingBlocks[11];
|
|
651
|
+
var abortPromise = buildingBlocks[27];
|
|
652
|
+
var atomState = ensureAtomState(store, atom);
|
|
653
|
+
var hasPrevValue = 'v' in atomState;
|
|
654
|
+
var prevValue = atomState.v;
|
|
655
|
+
if (isPromiseLike(valueOrPromise)) {
|
|
656
|
+
for (var _iterator11 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step11; !(_step11 = _iterator11()).done;) {
|
|
657
|
+
var a = _step11.value;
|
|
658
|
+
addPendingPromiseToDependency(atom, valueOrPromise, ensureAtomState(store, a));
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
atomState.v = valueOrPromise;
|
|
662
|
+
delete atomState.e;
|
|
663
|
+
if (!hasPrevValue || !Object.is(prevValue, atomState.v)) {
|
|
664
|
+
++atomState.n;
|
|
665
|
+
if (isPromiseLike(prevValue)) {
|
|
666
|
+
abortPromise(store, prevValue);
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
};
|
|
670
|
+
var BUILDING_BLOCK_storeGet = function BUILDING_BLOCK_storeGet(store, atom) {
|
|
671
|
+
var readAtomState = getInternalBuildingBlocks(store)[14];
|
|
672
|
+
return returnAtomValue(readAtomState(store, atom));
|
|
673
|
+
};
|
|
674
|
+
var BUILDING_BLOCK_storeSet = function BUILDING_BLOCK_storeSet(store, atom) {
|
|
675
|
+
var buildingBlocks = getInternalBuildingBlocks(store);
|
|
676
|
+
var flushCallbacks = buildingBlocks[12];
|
|
677
|
+
var recomputeInvalidatedAtoms = buildingBlocks[13];
|
|
678
|
+
var writeAtomState = buildingBlocks[16];
|
|
679
|
+
try {
|
|
680
|
+
for (var _len7 = arguments.length, args = new Array(_len7 > 2 ? _len7 - 2 : 0), _key7 = 2; _key7 < _len7; _key7++) {
|
|
681
|
+
args[_key7 - 2] = arguments[_key7];
|
|
682
|
+
}
|
|
683
|
+
return writeAtomState.apply(void 0, [store, atom].concat(args));
|
|
684
|
+
} finally {
|
|
685
|
+
recomputeInvalidatedAtoms(store);
|
|
686
|
+
flushCallbacks(store);
|
|
687
|
+
}
|
|
688
|
+
};
|
|
689
|
+
var BUILDING_BLOCK_storeSub = function BUILDING_BLOCK_storeSub(store, atom, listener) {
|
|
690
|
+
var buildingBlocks = getInternalBuildingBlocks(store);
|
|
691
|
+
var flushCallbacks = buildingBlocks[12];
|
|
692
|
+
var mountAtom = buildingBlocks[18];
|
|
693
|
+
var unmountAtom = buildingBlocks[19];
|
|
694
|
+
var mounted = mountAtom(store, atom);
|
|
695
|
+
var listeners = mounted.l;
|
|
696
|
+
listeners.add(listener);
|
|
697
|
+
flushCallbacks(store);
|
|
698
|
+
return function () {
|
|
699
|
+
listeners.delete(listener);
|
|
700
|
+
unmountAtom(store, atom);
|
|
701
|
+
flushCallbacks(store);
|
|
702
|
+
};
|
|
703
|
+
};
|
|
704
|
+
var BUILDING_BLOCK_registerAbortHandler = function BUILDING_BLOCK_registerAbortHandler(store, promise, abortHandler) {
|
|
705
|
+
var buildingBlocks = getInternalBuildingBlocks(store);
|
|
706
|
+
var abortHandlersMap = buildingBlocks[25];
|
|
707
|
+
var abortHandlers = abortHandlersMap.get(promise);
|
|
708
|
+
if (!abortHandlers) {
|
|
709
|
+
abortHandlers = new Set();
|
|
710
|
+
abortHandlersMap.set(promise, abortHandlers);
|
|
711
|
+
var cleanup = function cleanup() {
|
|
712
|
+
return abortHandlersMap.delete(promise);
|
|
713
|
+
};
|
|
714
|
+
promise.then(cleanup, cleanup);
|
|
715
|
+
}
|
|
716
|
+
abortHandlers.add(abortHandler);
|
|
717
|
+
};
|
|
718
|
+
var BUILDING_BLOCK_abortPromise = function BUILDING_BLOCK_abortPromise(store, promise) {
|
|
719
|
+
var buildingBlocks = getInternalBuildingBlocks(store);
|
|
720
|
+
var abortHandlersMap = buildingBlocks[25];
|
|
721
|
+
var abortHandlers = abortHandlersMap.get(promise);
|
|
722
|
+
abortHandlers == null || abortHandlers.forEach(function (fn) {
|
|
723
|
+
return fn();
|
|
724
|
+
});
|
|
725
|
+
};
|
|
726
|
+
var buildingBlockMap = new WeakMap();
|
|
727
|
+
var getInternalBuildingBlocks = function getInternalBuildingBlocks(store) {
|
|
728
|
+
var buildingBlocks = buildingBlockMap.get(store);
|
|
729
|
+
if (process.env.NODE_ENV !== 'production' && !buildingBlocks) {
|
|
730
|
+
throw new Error('Store must be created by buildStore to read its building blocks');
|
|
731
|
+
}
|
|
732
|
+
return buildingBlocks;
|
|
733
|
+
};
|
|
734
|
+
function getBuildingBlocks(store) {
|
|
735
|
+
var buildingBlocks = getInternalBuildingBlocks(store);
|
|
736
|
+
var enhanceBuildingBlocks = buildingBlocks[24];
|
|
737
|
+
if (enhanceBuildingBlocks) {
|
|
738
|
+
return enhanceBuildingBlocks(buildingBlocks);
|
|
739
|
+
}
|
|
740
|
+
return buildingBlocks;
|
|
741
|
+
}
|
|
742
|
+
function buildStore() {
|
|
743
|
+
for (var _len8 = arguments.length, buildArgs = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
|
|
744
|
+
buildArgs[_key8] = arguments[_key8];
|
|
745
|
+
}
|
|
746
|
+
var store = {
|
|
747
|
+
get: function get(atom) {
|
|
748
|
+
var storeGet = getInternalBuildingBlocks(store)[21];
|
|
749
|
+
return storeGet(store, atom);
|
|
750
|
+
},
|
|
751
|
+
set: function set(atom) {
|
|
752
|
+
var storeSet = getInternalBuildingBlocks(store)[22];
|
|
753
|
+
for (var _len9 = arguments.length, args = new Array(_len9 > 1 ? _len9 - 1 : 0), _key9 = 1; _key9 < _len9; _key9++) {
|
|
754
|
+
args[_key9 - 1] = arguments[_key9];
|
|
755
|
+
}
|
|
756
|
+
return storeSet.apply(void 0, [store, atom].concat(args));
|
|
757
|
+
},
|
|
758
|
+
sub: function sub(atom, listener) {
|
|
759
|
+
var storeSub = getInternalBuildingBlocks(store)[23];
|
|
760
|
+
return storeSub(store, atom, listener);
|
|
761
|
+
}
|
|
762
|
+
};
|
|
763
|
+
var buildingBlocks = [new WeakMap(), new WeakMap(), new WeakMap(), new Set(), new Set(), new Set(), {}, BUILDING_BLOCK_atomRead, BUILDING_BLOCK_atomWrite, BUILDING_BLOCK_atomOnInit, BUILDING_BLOCK_atomOnMount, BUILDING_BLOCK_ensureAtomState, BUILDING_BLOCK_flushCallbacks, BUILDING_BLOCK_recomputeInvalidatedAtoms, BUILDING_BLOCK_readAtomState, BUILDING_BLOCK_invalidateDependents, BUILDING_BLOCK_writeAtomState, BUILDING_BLOCK_mountDependencies, BUILDING_BLOCK_mountAtom, BUILDING_BLOCK_unmountAtom, BUILDING_BLOCK_setAtomStateValueOrPromise, BUILDING_BLOCK_storeGet, BUILDING_BLOCK_storeSet, BUILDING_BLOCK_storeSub, undefined, new WeakMap(), BUILDING_BLOCK_registerAbortHandler, BUILDING_BLOCK_abortPromise].map(function (fn, i) {
|
|
764
|
+
return buildArgs[i] || fn;
|
|
765
|
+
});
|
|
766
|
+
buildingBlockMap.set(store, Object.freeze(buildingBlocks));
|
|
767
|
+
return store;
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
exports.INTERNAL_addPendingPromiseToDependency = addPendingPromiseToDependency;
|
|
771
|
+
exports.INTERNAL_buildStoreRev2 = buildStore;
|
|
772
|
+
exports.INTERNAL_getBuildingBlocksRev2 = getBuildingBlocks;
|
|
773
|
+
exports.INTERNAL_getMountedOrPendingDependents = getMountedOrPendingDependents;
|
|
774
|
+
exports.INTERNAL_hasInitialValue = hasInitialValue;
|
|
775
|
+
exports.INTERNAL_initializeStoreHooksRev2 = initializeStoreHooks;
|
|
776
|
+
exports.INTERNAL_isActuallyWritableAtom = isActuallyWritableAtom;
|
|
777
|
+
exports.INTERNAL_isAtomStateInitialized = isAtomStateInitialized;
|
|
778
|
+
exports.INTERNAL_isPromiseLike = isPromiseLike;
|
|
779
|
+
exports.INTERNAL_returnAtomValue = returnAtomValue;
|