UNPKG

24.4 kBJavaScriptView Raw
1(function (global, factory) {
2 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
3 typeof define === 'function' && define.amd ? define(['exports'], factory) :
4 (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jotaiVanilla = {}));
5})(this, (function (exports) { 'use strict';
6
7 var keyCount = 0;
8 function atom(read, write) {
9 var key = "atom" + ++keyCount;
10 var config = {
11 toString: function toString() {
12 return key;
13 }
14 };
15 if (typeof read === 'function') {
16 config.read = read;
17 } else {
18 config.init = read;
19 config.read = defaultRead;
20 config.write = defaultWrite;
21 }
22 if (write) {
23 config.write = write;
24 }
25 return config;
26 }
27 function defaultRead(get) {
28 return get(this);
29 }
30 function defaultWrite(get, set, arg) {
31 return set(this, typeof arg === 'function' ? arg(get(this)) : arg);
32 }
33
34 function _unsupportedIterableToArray(o, minLen) {
35 if (!o) return;
36 if (typeof o === "string") return _arrayLikeToArray(o, minLen);
37 var n = Object.prototype.toString.call(o).slice(8, -1);
38 if (n === "Object" && o.constructor) n = o.constructor.name;
39 if (n === "Map" || n === "Set") return Array.from(o);
40 if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
41 }
42 function _arrayLikeToArray(arr, len) {
43 if (len == null || len > arr.length) len = arr.length;
44 for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
45 return arr2;
46 }
47 function _createForOfIteratorHelperLoose(o, allowArrayLike) {
48 var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
49 if (it) return (it = it.call(o)).next.bind(it);
50 if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
51 if (it) o = it;
52 var i = 0;
53 return function () {
54 if (i >= o.length) return {
55 done: true
56 };
57 return {
58 done: false,
59 value: o[i++]
60 };
61 };
62 }
63 throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
64 }
65
66 var isSelfAtom = function isSelfAtom(atom, a) {
67 return atom.unstable_is ? atom.unstable_is(a) : a === atom;
68 };
69 var hasInitialValue = function hasInitialValue(atom) {
70 return 'init' in atom;
71 };
72 var isActuallyWritableAtom = function isActuallyWritableAtom(atom) {
73 return !!atom.write;
74 };
75 var cancelPromiseMap = new WeakMap();
76 var registerCancelPromise = function registerCancelPromise(promise, cancel) {
77 cancelPromiseMap.set(promise, cancel);
78 promise.catch(function () {}).finally(function () {
79 return cancelPromiseMap.delete(promise);
80 });
81 };
82 var cancelPromise = function cancelPromise(promise, next) {
83 var cancel = cancelPromiseMap.get(promise);
84 if (cancel) {
85 cancelPromiseMap.delete(promise);
86 cancel(next);
87 }
88 };
89 var resolvePromise = function resolvePromise(promise, value) {
90 promise.status = 'fulfilled';
91 promise.value = value;
92 };
93 var rejectPromise = function rejectPromise(promise, e) {
94 promise.status = 'rejected';
95 promise.reason = e;
96 };
97 var isPromiseLike = function isPromiseLike(x) {
98 return typeof (x == null ? void 0 : x.then) === 'function';
99 };
100 var isEqualAtomValue = function isEqualAtomValue(a, b) {
101 return !!a && 'v' in a && 'v' in b && Object.is(a.v, b.v);
102 };
103 var isEqualAtomError = function isEqualAtomError(a, b) {
104 return !!a && 'e' in a && 'e' in b && Object.is(a.e, b.e);
105 };
106 var hasPromiseAtomValue = function hasPromiseAtomValue(a) {
107 return !!a && 'v' in a && a.v instanceof Promise;
108 };
109 var isEqualPromiseAtomValue = function isEqualPromiseAtomValue(a, b) {
110 return 'v' in a && 'v' in b && a.v.orig && a.v.orig === b.v.orig;
111 };
112 var returnAtomValue = function returnAtomValue(atomState) {
113 if ('e' in atomState) {
114 throw atomState.e;
115 }
116 return atomState.v;
117 };
118 var createStore$1 = function createStore() {
119 var atomStateMap = new WeakMap();
120 var mountedMap = new WeakMap();
121 var pendingStack = [];
122 var pendingMap = new WeakMap();
123 var devListenersRev2;
124 var mountedAtoms;
125 {
126 devListenersRev2 = new Set();
127 mountedAtoms = new Set();
128 }
129 var getAtomState = function getAtomState(atom) {
130 return atomStateMap.get(atom);
131 };
132 var addPendingDependent = function addPendingDependent(atom, atomState) {
133 atomState.d.forEach(function (_, a) {
134 if (!pendingMap.has(a)) {
135 var _pendingStack;
136 var aState = getAtomState(a);
137 (_pendingStack = pendingStack[pendingStack.length - 1]) == null || _pendingStack.add(a);
138 pendingMap.set(a, [aState, new Set()]);
139 if (aState) {
140 addPendingDependent(a, aState);
141 }
142 }
143 pendingMap.get(a)[1].add(atom);
144 });
145 };
146 var setAtomState = function setAtomState(atom, atomState) {
147 {
148 Object.freeze(atomState);
149 }
150 var prevAtomState = getAtomState(atom);
151 atomStateMap.set(atom, atomState);
152 if (!pendingMap.has(atom)) {
153 var _pendingStack2;
154 (_pendingStack2 = pendingStack[pendingStack.length - 1]) == null || _pendingStack2.add(atom);
155 pendingMap.set(atom, [prevAtomState, new Set()]);
156 addPendingDependent(atom, atomState);
157 }
158 if (hasPromiseAtomValue(prevAtomState)) {
159 var _next = 'v' in atomState ? atomState.v instanceof Promise ? atomState.v : Promise.resolve(atomState.v) : Promise.reject(atomState.e);
160 if (prevAtomState.v !== _next) {
161 cancelPromise(prevAtomState.v, _next);
162 }
163 }
164 };
165 var updateDependencies = function updateDependencies(atom, nextAtomState, nextDependencies, keepPreviousDependencies) {
166 var dependencies = new Map(keepPreviousDependencies ? nextAtomState.d : null);
167 var changed = false;
168 nextDependencies.forEach(function (aState, a) {
169 if (!aState && isSelfAtom(atom, a)) {
170 aState = nextAtomState;
171 }
172 if (aState) {
173 dependencies.set(a, aState);
174 if (nextAtomState.d.get(a) !== aState) {
175 changed = true;
176 }
177 } else {
178 console.warn('[Bug] atom state not found');
179 }
180 });
181 if (changed || nextAtomState.d.size !== dependencies.size) {
182 nextAtomState.d = dependencies;
183 }
184 };
185 var setAtomValue = function setAtomValue(atom, value, nextDependencies, keepPreviousDependencies) {
186 var prevAtomState = getAtomState(atom);
187 var nextAtomState = {
188 d: (prevAtomState == null ? void 0 : prevAtomState.d) || new Map(),
189 v: value
190 };
191 if (nextDependencies) {
192 updateDependencies(atom, nextAtomState, nextDependencies, keepPreviousDependencies);
193 }
194 if (isEqualAtomValue(prevAtomState, nextAtomState) && prevAtomState.d === nextAtomState.d) {
195 return prevAtomState;
196 }
197 if (hasPromiseAtomValue(prevAtomState) && hasPromiseAtomValue(nextAtomState) && isEqualPromiseAtomValue(prevAtomState, nextAtomState)) {
198 if (prevAtomState.d === nextAtomState.d) {
199 return prevAtomState;
200 } else {
201 nextAtomState.v = prevAtomState.v;
202 }
203 }
204 setAtomState(atom, nextAtomState);
205 return nextAtomState;
206 };
207 var setAtomValueOrPromise = function setAtomValueOrPromise(atom, valueOrPromise, nextDependencies, abortPromise) {
208 if (isPromiseLike(valueOrPromise)) {
209 var continuePromise;
210 var updatePromiseDependencies = function updatePromiseDependencies() {
211 var prevAtomState = getAtomState(atom);
212 if (!hasPromiseAtomValue(prevAtomState) || prevAtomState.v !== promise) {
213 return;
214 }
215 var nextAtomState = setAtomValue(atom, promise, nextDependencies);
216 if (mountedMap.has(atom) && prevAtomState.d !== nextAtomState.d) {
217 mountDependencies(atom, nextAtomState, prevAtomState.d);
218 }
219 };
220 var promise = new Promise(function (resolve, reject) {
221 var settled = false;
222 valueOrPromise.then(function (v) {
223 if (!settled) {
224 settled = true;
225 resolvePromise(promise, v);
226 resolve(v);
227 updatePromiseDependencies();
228 }
229 }, function (e) {
230 if (!settled) {
231 settled = true;
232 rejectPromise(promise, e);
233 reject(e);
234 updatePromiseDependencies();
235 }
236 });
237 continuePromise = function continuePromise(next) {
238 if (!settled) {
239 settled = true;
240 next.then(function (v) {
241 return resolvePromise(promise, v);
242 }, function (e) {
243 return rejectPromise(promise, e);
244 });
245 resolve(next);
246 }
247 };
248 });
249 promise.orig = valueOrPromise;
250 promise.status = 'pending';
251 registerCancelPromise(promise, function (next) {
252 if (next) {
253 continuePromise(next);
254 }
255 abortPromise == null || abortPromise();
256 });
257 return setAtomValue(atom, promise, nextDependencies, true);
258 }
259 return setAtomValue(atom, valueOrPromise, nextDependencies);
260 };
261 var setAtomError = function setAtomError(atom, error, nextDependencies) {
262 var prevAtomState = getAtomState(atom);
263 var nextAtomState = {
264 d: (prevAtomState == null ? void 0 : prevAtomState.d) || new Map(),
265 e: error
266 };
267 if (nextDependencies) {
268 updateDependencies(atom, nextAtomState, nextDependencies);
269 }
270 if (isEqualAtomError(prevAtomState, nextAtomState) && prevAtomState.d === nextAtomState.d) {
271 return prevAtomState;
272 }
273 setAtomState(atom, nextAtomState);
274 return nextAtomState;
275 };
276 var readAtomState = function readAtomState(atom, force) {
277 var atomState = getAtomState(atom);
278 if (!force && atomState) {
279 if (mountedMap.has(atom)) {
280 return atomState;
281 }
282 if (Array.from(atomState.d).every(function (_ref) {
283 var a = _ref[0],
284 s = _ref[1];
285 if (a === atom) {
286 return true;
287 }
288 var aState = readAtomState(a);
289 return aState === s || isEqualAtomValue(aState, s);
290 })) {
291 return atomState;
292 }
293 }
294 var nextDependencies = new Map();
295 var isSync = true;
296 var getter = function getter(a) {
297 if (isSelfAtom(atom, a)) {
298 var _aState = getAtomState(a);
299 if (_aState) {
300 nextDependencies.set(a, _aState);
301 return returnAtomValue(_aState);
302 }
303 if (hasInitialValue(a)) {
304 nextDependencies.set(a, undefined);
305 return a.init;
306 }
307 throw new Error('no atom init');
308 }
309 var aState = readAtomState(a);
310 nextDependencies.set(a, aState);
311 return returnAtomValue(aState);
312 };
313 var controller;
314 var setSelf;
315 var options = {
316 get signal() {
317 if (!controller) {
318 controller = new AbortController();
319 }
320 return controller.signal;
321 },
322 get setSelf() {
323 if (!isActuallyWritableAtom(atom)) {
324 console.warn('setSelf function cannot be used with read-only atom');
325 }
326 if (!setSelf && isActuallyWritableAtom(atom)) {
327 setSelf = function setSelf() {
328 if (isSync) {
329 console.warn('setSelf function cannot be called in sync');
330 }
331 if (!isSync) {
332 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
333 args[_key] = arguments[_key];
334 }
335 return writeAtom.apply(void 0, [atom].concat(args));
336 }
337 };
338 }
339 return setSelf;
340 }
341 };
342 try {
343 var valueOrPromise = atom.read(getter, options);
344 return setAtomValueOrPromise(atom, valueOrPromise, nextDependencies, function () {
345 var _controller;
346 return (_controller = controller) == null ? void 0 : _controller.abort();
347 });
348 } catch (error) {
349 return setAtomError(atom, error, nextDependencies);
350 } finally {
351 isSync = false;
352 }
353 };
354 var readAtom = function readAtom(atom) {
355 return returnAtomValue(readAtomState(atom));
356 };
357 var recomputeDependents = function recomputeDependents(atom) {
358 var getDependents = function getDependents(a) {
359 var _mountedMap$get, _pendingMap$get;
360 var dependents = new Set((_mountedMap$get = mountedMap.get(a)) == null ? void 0 : _mountedMap$get.t);
361 (_pendingMap$get = pendingMap.get(a)) == null || _pendingMap$get[1].forEach(function (dependent) {
362 dependents.add(dependent);
363 });
364 return dependents;
365 };
366 var topsortedAtoms = new Array();
367 var markedAtoms = new Set();
368 var visit = function visit(n) {
369 if (markedAtoms.has(n)) {
370 return;
371 }
372 markedAtoms.add(n);
373 for (var _iterator = _createForOfIteratorHelperLoose(getDependents(n)), _step; !(_step = _iterator()).done;) {
374 var m = _step.value;
375 if (n !== m) {
376 visit(m);
377 }
378 }
379 topsortedAtoms.push(n);
380 };
381 visit(atom);
382 var changedAtoms = new Set([atom]);
383 for (var i = topsortedAtoms.length - 1; i >= 0; --i) {
384 var _a = topsortedAtoms[i];
385 var _prevAtomState = getAtomState(_a);
386 if (!_prevAtomState) {
387 continue;
388 }
389 var hasChangedDeps = false;
390 for (var _iterator2 = _createForOfIteratorHelperLoose(_prevAtomState.d.keys()), _step2; !(_step2 = _iterator2()).done;) {
391 var dep = _step2.value;
392 if (dep !== _a && changedAtoms.has(dep)) {
393 hasChangedDeps = true;
394 break;
395 }
396 }
397 if (hasChangedDeps) {
398 var nextAtomState = readAtomState(_a, true);
399 if (!isEqualAtomValue(_prevAtomState, nextAtomState)) {
400 changedAtoms.add(_a);
401 }
402 }
403 }
404 };
405 var writeAtomState = function writeAtomState(atom) {
406 var getter = function getter(a) {
407 return returnAtomValue(readAtomState(a));
408 };
409 var setter = function setter(a) {
410 var isSync = pendingStack.length > 0;
411 if (!isSync) {
412 pendingStack.push(new Set([a]));
413 }
414 var r;
415 for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
416 args[_key3 - 1] = arguments[_key3];
417 }
418 if (isSelfAtom(atom, a)) {
419 if (!hasInitialValue(a)) {
420 throw new Error('atom not writable');
421 }
422 var _prevAtomState2 = getAtomState(a);
423 var nextAtomState = setAtomValueOrPromise(a, args[0]);
424 if (!isEqualAtomValue(_prevAtomState2, nextAtomState)) {
425 recomputeDependents(a);
426 }
427 } else {
428 r = writeAtomState.apply(void 0, [a].concat(args));
429 }
430 if (!isSync) {
431 var flushed = flushPending(pendingStack.pop());
432 {
433 devListenersRev2.forEach(function (l) {
434 return l({
435 type: 'async-write',
436 flushed: flushed
437 });
438 });
439 }
440 }
441 return r;
442 };
443 for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
444 args[_key2 - 1] = arguments[_key2];
445 }
446 var result = atom.write.apply(atom, [getter, setter].concat(args));
447 return result;
448 };
449 var writeAtom = function writeAtom(atom) {
450 pendingStack.push(new Set([atom]));
451 for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
452 args[_key4 - 1] = arguments[_key4];
453 }
454 var result = writeAtomState.apply(void 0, [atom].concat(args));
455 var flushed = flushPending(pendingStack.pop());
456 {
457 devListenersRev2.forEach(function (l) {
458 return l({
459 type: 'write',
460 flushed: flushed
461 });
462 });
463 }
464 return result;
465 };
466 var mountAtom = function mountAtom(atom, initialDependent, onMountQueue) {
467 var _getAtomState;
468 var existingMount = mountedMap.get(atom);
469 if (existingMount) {
470 if (initialDependent) {
471 existingMount.t.add(initialDependent);
472 }
473 return existingMount;
474 }
475 var queue = onMountQueue || [];
476 (_getAtomState = getAtomState(atom)) == null || _getAtomState.d.forEach(function (_, a) {
477 if (a !== atom) {
478 mountAtom(a, atom, queue);
479 }
480 });
481 readAtomState(atom);
482 var mounted = {
483 t: new Set(initialDependent && [initialDependent]),
484 l: new Set()
485 };
486 mountedMap.set(atom, mounted);
487 {
488 mountedAtoms.add(atom);
489 }
490 if (isActuallyWritableAtom(atom) && atom.onMount) {
491 var onMount = atom.onMount;
492 queue.push(function () {
493 var onUnmount = onMount(function () {
494 for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
495 args[_key5] = arguments[_key5];
496 }
497 return writeAtom.apply(void 0, [atom].concat(args));
498 });
499 if (onUnmount) {
500 mounted.u = onUnmount;
501 }
502 });
503 }
504 if (!onMountQueue) {
505 queue.forEach(function (f) {
506 return f();
507 });
508 }
509 return mounted;
510 };
511 var canUnmountAtom = function canUnmountAtom(atom, mounted) {
512 return !mounted.l.size && (!mounted.t.size || mounted.t.size === 1 && mounted.t.has(atom));
513 };
514 var tryUnmountAtom = function tryUnmountAtom(atom, mounted) {
515 if (!canUnmountAtom(atom, mounted)) {
516 return;
517 }
518 var onUnmount = mounted.u;
519 if (onUnmount) {
520 onUnmount();
521 }
522 mountedMap.delete(atom);
523 {
524 mountedAtoms.delete(atom);
525 }
526 var atomState = getAtomState(atom);
527 if (atomState) {
528 if (hasPromiseAtomValue(atomState)) {
529 cancelPromise(atomState.v);
530 }
531 atomState.d.forEach(function (_, a) {
532 if (a !== atom) {
533 var mountedDep = mountedMap.get(a);
534 if (mountedDep) {
535 mountedDep.t.delete(atom);
536 tryUnmountAtom(a, mountedDep);
537 }
538 }
539 });
540 } else {
541 console.warn('[Bug] could not find atom state to unmount', atom);
542 }
543 };
544 var mountDependencies = function mountDependencies(atom, atomState, prevDependencies) {
545 var depSet = new Set(atomState.d.keys());
546 var maybeUnmountAtomSet = new Set();
547 prevDependencies == null || prevDependencies.forEach(function (_, a) {
548 if (depSet.has(a)) {
549 depSet.delete(a);
550 return;
551 }
552 maybeUnmountAtomSet.add(a);
553 var mounted = mountedMap.get(a);
554 if (mounted) {
555 mounted.t.delete(atom);
556 }
557 });
558 depSet.forEach(function (a) {
559 mountAtom(a, atom);
560 });
561 maybeUnmountAtomSet.forEach(function (a) {
562 var mounted = mountedMap.get(a);
563 if (mounted) {
564 tryUnmountAtom(a, mounted);
565 }
566 });
567 };
568 var flushPending = function flushPending(pendingAtoms) {
569 var flushed;
570 {
571 flushed = new Set();
572 }
573 var pending = [];
574 var collectPending = function collectPending(pendingAtom) {
575 var _getAtomState2;
576 if (!pendingMap.has(pendingAtom)) {
577 return;
578 }
579 var _ref2 = pendingMap.get(pendingAtom),
580 prevAtomState = _ref2[0],
581 dependents = _ref2[1];
582 pendingMap.delete(pendingAtom);
583 pending.push([pendingAtom, prevAtomState]);
584 dependents.forEach(collectPending);
585 (_getAtomState2 = getAtomState(pendingAtom)) == null || _getAtomState2.d.forEach(function (_, a) {
586 return collectPending(a);
587 });
588 };
589 pendingAtoms.forEach(collectPending);
590 pending.forEach(function (_ref3) {
591 var atom = _ref3[0],
592 prevAtomState = _ref3[1];
593 var atomState = getAtomState(atom);
594 if (!atomState) {
595 {
596 console.warn('[Bug] no atom state to flush');
597 }
598 return;
599 }
600 if (atomState !== prevAtomState) {
601 var mounted = mountedMap.get(atom);
602 if (mounted && atomState.d !== (prevAtomState == null ? void 0 : prevAtomState.d)) {
603 mountDependencies(atom, atomState, prevAtomState == null ? void 0 : prevAtomState.d);
604 }
605 if (mounted && !(!hasPromiseAtomValue(prevAtomState) && (isEqualAtomValue(prevAtomState, atomState) || isEqualAtomError(prevAtomState, atomState)))) {
606 mounted.l.forEach(function (listener) {
607 return listener();
608 });
609 {
610 flushed.add(atom);
611 }
612 }
613 }
614 });
615 {
616 return flushed;
617 }
618 };
619 var subscribeAtom = function subscribeAtom(atom, listener) {
620 var mounted = mountAtom(atom);
621 var flushed = flushPending([atom]);
622 var listeners = mounted.l;
623 listeners.add(listener);
624 {
625 devListenersRev2.forEach(function (l) {
626 return l({
627 type: 'sub',
628 flushed: flushed
629 });
630 });
631 }
632 return function () {
633 listeners.delete(listener);
634 tryUnmountAtom(atom, mounted);
635 {
636 devListenersRev2.forEach(function (l) {
637 return l({
638 type: 'unsub'
639 });
640 });
641 }
642 };
643 };
644 {
645 return {
646 get: readAtom,
647 set: writeAtom,
648 sub: subscribeAtom,
649 dev_subscribe_store: function dev_subscribe_store(l) {
650 devListenersRev2.add(l);
651 return function () {
652 devListenersRev2.delete(l);
653 };
654 },
655 dev_get_mounted_atoms: function dev_get_mounted_atoms() {
656 return mountedAtoms.values();
657 },
658 dev_get_atom_state: function dev_get_atom_state(a) {
659 return atomStateMap.get(a);
660 },
661 dev_get_mounted: function dev_get_mounted(a) {
662 return mountedMap.get(a);
663 },
664 dev_restore_atoms: function dev_restore_atoms(values) {
665 pendingStack.push(new Set());
666 for (var _iterator3 = _createForOfIteratorHelperLoose(values), _step3; !(_step3 = _iterator3()).done;) {
667 var _step3$value = _step3.value,
668 _atom = _step3$value[0],
669 valueOrPromise = _step3$value[1];
670 if (hasInitialValue(_atom)) {
671 setAtomValueOrPromise(_atom, valueOrPromise);
672 recomputeDependents(_atom);
673 }
674 }
675 var flushed = flushPending(pendingStack.pop());
676 devListenersRev2.forEach(function (l) {
677 return l({
678 type: 'restore',
679 flushed: flushed
680 });
681 });
682 }
683 };
684 }
685 };
686 var defaultStore;
687 var getDefaultStore$1 = function getDefaultStore() {
688 if (!defaultStore) {
689 defaultStore = createStore$1();
690 {
691 var _ref4;
692 (_ref4 = globalThis).__JOTAI_DEFAULT_STORE__ || (_ref4.__JOTAI_DEFAULT_STORE__ = defaultStore);
693 if (globalThis.__JOTAI_DEFAULT_STORE__ !== defaultStore) {
694 console.warn('Detected multiple Jotai instances. It may cause unexpected behavior with the default store. https://github.com/pmndrs/jotai/discussions/2044');
695 }
696 }
697 }
698 return defaultStore;
699 };
700
701 var createStore = createStore$1;
702 var getDefaultStore = getDefaultStore$1;
703
704 exports.atom = atom;
705 exports.createStore = createStore;
706 exports.getDefaultStore = getDefaultStore;
707
708}));