Socket
Socket
Sign inDemoInstall

jotai

Package Overview
Dependencies
Maintainers
2
Versions
176
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

jotai - npm Package Compare versions

Comparing version 2.8.0 to 2.8.1

390

experimental.js

@@ -46,3 +46,3 @@ 'use strict';

if (it) return (it = it.call(o)).next.bind(it);
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike ) {
if (it) o = it;

@@ -72,43 +72,2 @@ var i = 0;

};
var createPendingPair = function createPendingPair() {
return [new Set(), new Set()];
};
var addPending = function addPending(pendingPair, pending) {
(pendingPair[0] || pendingPair[1]).add(pending);
};
var flushPending = function flushPending(pendingPair, isAsync) {
var pendingSet;
if (isAsync) {
if (pendingPair[0]) {
return;
}
pendingSet = pendingPair[1];
} else {
if (!pendingPair[0]) {
throw new Error('[Bug] cannot sync flush twice');
}
pendingSet = pendingPair[0];
}
var flushed = new Set();
while (pendingSet.size) {
var copy = new Set(pendingSet);
pendingSet.clear();
copy.forEach(function (pending) {
if (typeof pending === 'function') {
pending();
} else {
var _atom = pending[0],
atomState = pending[1];
if (!flushed.has(_atom) && atomState.m) {
atomState.m.l.forEach(function (listener) {
return listener();
});
flushed.add(_atom);
}
}
});
}
pendingPair[0] = undefined;
return flushed;
};
var CONTINUE_PROMISE = Symbol(process.env.NODE_ENV !== 'production' ? 'CONTINUE_PROMISE' : '');

@@ -127,3 +86,3 @@ var PENDING = 'pending';

var curr = promise;
var onFullfilled = function onFullfilled(me) {
var onFulfilled = function onFulfilled(me) {
return function (v) {

@@ -148,3 +107,3 @@ if (curr === me) {

};
promise.then(onFullfilled(promise), onRejected(promise));
promise.then(onFulfilled(promise), onRejected(promise));
continuePromise = function continuePromise(nextPromise, nextAbort) {

@@ -154,3 +113,3 @@ if (nextPromise) {

curr = nextPromise;
nextPromise.then(onFullfilled(nextPromise), onRejected(nextPromise));
nextPromise.then(onFulfilled(nextPromise), onRejected(nextPromise));
}

@@ -170,5 +129,16 @@ abort();

};
var isAtomStateInitialized = function isAtomStateInitialized(atomState) {
return 'v' in atomState || 'e' in atomState;
};
var returnAtomValue = function returnAtomValue(atomState) {
if ('e' in atomState) {
throw atomState.e;
}
if (process.env.NODE_ENV !== 'production' && !('v' in atomState)) {
throw new Error('[Bug] atom state is not initialized');
}
return atomState.v;
};
var getPendingContinuablePromise = function getPendingContinuablePromise(atomState) {
var _s;
var value = (_s = atomState.s) == null ? void 0 : _s.v;
var value = atomState.v;
if (isContinuablePromise(value) && value.status === PENDING) {

@@ -179,34 +149,49 @@ return value;

};
var returnAtomValue = function returnAtomValue(atomState) {
if ('e' in atomState.s) {
throw atomState.s.e;
var addPendingContinuablePromiseToDependency = function addPendingContinuablePromiseToDependency(atom, promise, dependencyAtomState) {
if (!dependencyAtomState.p.has(atom)) {
dependencyAtomState.p.add(atom);
promise.then(function () {
dependencyAtomState.p.delete(atom);
}, function () {
dependencyAtomState.p.delete(atom);
});
}
return atomState.s.v;
};
var setAtomStateValueOrPromise = function setAtomStateValueOrPromise(atomState, valueOrPromise, abortPromise, completePromise) {
if (abortPromise === void 0) {
abortPromise = function abortPromise() {};
var createPending = function createPending() {
return [new Map(), new Map(), new Set()];
};
var addPendingAtom = function addPendingAtom(pending, atom, atomState) {
if (!pending[0].has(atom)) {
pending[0].set(atom, new Set());
}
if (completePromise === void 0) {
completePromise = function completePromise() {};
pending[1].set(atom, atomState);
};
var addPendingDependent = function addPendingDependent(pending, atom, dependent) {
var dependents = pending[0].get(atom);
if (dependents) {
dependents.add(dependent);
}
var pendingPromise = getPendingContinuablePromise(atomState);
if (isPromiseLike(valueOrPromise)) {
if (pendingPromise) {
if (pendingPromise !== valueOrPromise) {
pendingPromise[CONTINUE_PROMISE](valueOrPromise, abortPromise);
}
} else {
var continuablePromise = createContinuablePromise(valueOrPromise, abortPromise, completePromise);
atomState.s = {
v: continuablePromise
};
}
} else {
if (pendingPromise) {
pendingPromise[CONTINUE_PROMISE](Promise.resolve(valueOrPromise), abortPromise);
}
atomState.s = {
v: valueOrPromise
};
};
var getPendingDependents = function getPendingDependents(pending, atom) {
return pending[0].get(atom);
};
var addPendingFunction = function addPendingFunction(pending, fn) {
pending[2].add(fn);
};
var flushPending = function flushPending(pending) {
while (pending[1].size || pending[2].size) {
pending[0].clear();
var _atomStates = new Set(pending[1].values());
pending[1].clear();
var _functions = new Set(pending[2]);
pending[2].clear();
_atomStates.forEach(function (atomState) {
var _atomState$m;
return (_atomState$m = atomState.m) == null ? void 0 : _atomState$m.l.forEach(function (l) {
return l();
});
});
_functions.forEach(function (fn) {
return fn();
});
}

@@ -221,3 +206,4 @@ };

d: new Map(),
t: new Set()
p: new Set(),
n: 0
};

@@ -228,11 +214,42 @@ atomStateMap.set(atom, atomState);

};
var clearDependencies = function clearDependencies(atom) {
var atomState = getAtomState(atom);
for (var _iterator = _createForOfIteratorHelperLoose(atomState.d.keys()), _step; !(_step = _iterator()).done;) {
var a = _step.value;
getAtomState(a).t.delete(atom);
var setAtomStateValueOrPromise = function setAtomStateValueOrPromise(atom, atomState, valueOrPromise, abortPromise, completePromise) {
if (abortPromise === void 0) {
abortPromise = function abortPromise() {};
}
atomState.d.clear();
if (completePromise === void 0) {
completePromise = function completePromise() {};
}
var hasPrevValue = ('v' in atomState);
var prevValue = atomState.v;
var pendingPromise = getPendingContinuablePromise(atomState);
if (isPromiseLike(valueOrPromise)) {
if (pendingPromise) {
if (pendingPromise !== valueOrPromise) {
pendingPromise[CONTINUE_PROMISE](valueOrPromise, abortPromise);
}
} else {
var continuablePromise = createContinuablePromise(valueOrPromise, abortPromise, completePromise);
if (continuablePromise.status === PENDING) {
for (var _iterator = _createForOfIteratorHelperLoose(atomState.d.keys()), _step; !(_step = _iterator()).done;) {
var a = _step.value;
var aState = getAtomState(a);
addPendingContinuablePromiseToDependency(atom, continuablePromise, aState);
}
}
atomState.v = continuablePromise;
delete atomState.e;
}
} else {
if (pendingPromise) {
pendingPromise[CONTINUE_PROMISE](Promise.resolve(valueOrPromise), abortPromise);
}
atomState.v = valueOrPromise;
delete atomState.e;
}
if (!hasPrevValue || !Object.is(prevValue, atomState.v)) {
++atomState.n;
}
};
var addDependency = function addDependency(atom, a, aState, isSync) {
var addDependency = function addDependency(pending, atom, a, aState) {
var _aState$m;
if (process.env.NODE_ENV !== 'production' && a === atom) {

@@ -242,13 +259,15 @@ throw new Error('[Bug] atom cannot depend on itself');

var atomState = getAtomState(atom);
atomState.d.set(a, aState.s);
aState.t.add(atom);
if (!isSync && atomState.m) {
var pendingPair = createPendingPair();
mountDependencies(pendingPair, atomState);
flushPending(pendingPair);
atomState.d.set(a, aState.n);
var continuablePromise = getPendingContinuablePromise(atomState);
if (continuablePromise) {
addPendingContinuablePromiseToDependency(atom, continuablePromise, aState);
}
(_aState$m = aState.m) == null || _aState$m.t.add(atom);
if (pending) {
addPendingDependent(pending, a, atom);
}
};
var readAtomState = function readAtomState(atom, force) {
var readAtomState = function readAtomState(pending, atom, force) {
var atomState = getAtomState(atom);
if (!force && 's' in atomState) {
if (!(force != null && force(atom)) && isAtomStateInitialized(atomState)) {
if (atomState.m) {

@@ -259,5 +278,4 @@ return atomState;

var a = _ref[0],
s = _ref[1];
var aState = readAtomState(a);
return 'v' in s && 'v' in aState.s && Object.is(s.v, aState.s.v);
n = _ref[1];
return readAtomState(pending, a, force).n === n;
})) {

@@ -267,3 +285,3 @@ return atomState;

}
clearDependencies(atom);
atomState.d.clear();
var isSync = true;

@@ -273,5 +291,5 @@ var getter = function getter(a) {

var _aState = getAtomState(a);
if (!_aState.s) {
if (!isAtomStateInitialized(_aState)) {
if (hasInitialValue(a)) {
setAtomStateValueOrPromise(_aState, a.init);
setAtomStateValueOrPromise(a, _aState, a.init);
} else {

@@ -283,4 +301,11 @@ throw new Error('no atom init');

}
var aState = readAtomState(a);
addDependency(atom, a, aState, isSync);
var aState = readAtomState(pending, a, force);
if (isSync) {
addDependency(pending, atom, a, aState);
} else {
var _pending = createPending();
addDependency(_pending, atom, a, aState);
mountDependencies(_pending, atom, atomState);
flushPending(_pending);
}
return returnAtomValue(aState);

@@ -319,3 +344,3 @@ };

var valueOrPromise = atom.read(getter, options);
setAtomStateValueOrPromise(atomState, valueOrPromise, function () {
setAtomStateValueOrPromise(atom, atomState, valueOrPromise, function () {
var _controller;

@@ -325,5 +350,5 @@ return (_controller = controller) == null ? void 0 : _controller.abort();

if (atomState.m) {
var pendingPair = createPendingPair();
mountDependencies(pendingPair, atomState);
flushPending(pendingPair);
var _pending2 = createPending();
mountDependencies(_pending2, atom, atomState);
flushPending(_pending2);
}

@@ -333,5 +358,5 @@ });

} catch (error) {
atomState.s = {
e: error
};
delete atomState.v;
atomState.e = error;
++atomState.n;
return atomState;

@@ -343,5 +368,18 @@ } finally {

var readAtom = function readAtom(atom) {
return returnAtomValue(readAtomState(atom));
return returnAtomValue(readAtomState(undefined, atom));
};
var recomputeDependents = function recomputeDependents(pendingPair, atom) {
var recomputeDependents = function recomputeDependents(pending, atom) {
var getDependents = function getDependents(a) {
var _aState$m2, _getPendingDependents;
var aState = getAtomState(a);
var dependents = new Set((_aState$m2 = aState.m) == null ? void 0 : _aState$m2.t);
for (var _iterator2 = _createForOfIteratorHelperLoose(aState.p), _step2; !(_step2 = _iterator2()).done;) {
var atomWithPendingContinuablePromise = _step2.value;
dependents.add(atomWithPendingContinuablePromise);
}
(_getPendingDependents = getPendingDependents(pending, a)) == null || _getPendingDependents.forEach(function (dependent) {
dependents.add(dependent);
});
return dependents;
};
var topsortedAtoms = [];

@@ -354,4 +392,4 @@ var markedAtoms = new Set();

markedAtoms.add(n);
for (var _iterator2 = _createForOfIteratorHelperLoose(getAtomState(n).t), _step2; !(_step2 = _iterator2()).done;) {
var m = _step2.value;
for (var _iterator3 = _createForOfIteratorHelperLoose(getDependents(n)), _step3; !(_step3 = _iterator3()).done;) {
var m = _step3.value;
if (n !== m) {

@@ -365,9 +403,13 @@ visit(m);

var changedAtoms = new Set([atom]);
var isMarked = function isMarked(a) {
return markedAtoms.has(a);
};
for (var i = topsortedAtoms.length - 1; i >= 0; --i) {
var a = topsortedAtoms[i];
var aState = getAtomState(a);
var prev = aState.s;
var hasPrevValue = ('v' in aState);
var prevValue = aState.v;
var hasChangedDeps = false;
for (var _iterator3 = _createForOfIteratorHelperLoose(aState.d.keys()), _step3; !(_step3 = _iterator3()).done;) {
var dep = _step3.value;
for (var _iterator4 = _createForOfIteratorHelperLoose(aState.d.keys()), _step4; !(_step4 = _iterator4()).done;) {
var dep = _step4.value;
if (dep !== a && changedAtoms.has(dep)) {

@@ -379,16 +421,15 @@ hasChangedDeps = true;

if (hasChangedDeps) {
if (aState.m || getPendingContinuablePromise(aState)) {
readAtomState(a, true);
mountDependencies(pendingPair, aState);
if (!prev || !('v' in prev) || !('v' in aState.s) || !Object.is(prev.v, aState.s.v)) {
addPending(pendingPair, [a, aState]);
changedAtoms.add(a);
}
readAtomState(pending, a, isMarked);
mountDependencies(pending, a, aState);
if (!hasPrevValue || !Object.is(prevValue, aState.v)) {
addPendingAtom(pending, a, aState);
changedAtoms.add(a);
}
}
markedAtoms.delete(a);
}
};
var writeAtomState = function writeAtomState(pendingPair, atom) {
var writeAtomState = function writeAtomState(pending, atom) {
var getter = function getter(a) {
return returnAtomValue(readAtomState(a));
return returnAtomValue(readAtomState(pending, a));
};

@@ -405,15 +446,15 @@ var setter = function setter(a) {

var aState = getAtomState(a);
var prev = aState.s;
var hasPrevValue = ('v' in aState);
var prevValue = aState.v;
var v = args[0];
setAtomStateValueOrPromise(aState, v);
mountDependencies(pendingPair, aState);
var curr = aState.s;
if (!prev || !('v' in prev) || !('v' in curr) || !Object.is(prev.v, curr.v)) {
addPending(pendingPair, [a, aState]);
recomputeDependents(pendingPair, a);
setAtomStateValueOrPromise(a, aState, v);
mountDependencies(pending, a, aState);
if (!hasPrevValue || !Object.is(prevValue, aState.v)) {
addPendingAtom(pending, a, aState);
recomputeDependents(pending, a);
}
} else {
r = writeAtomState.apply(void 0, [pendingPair, a].concat(args));
r = writeAtomState.apply(void 0, [pending, a].concat(args));
}
flushPending(pendingPair, true);
flushPending(pending);
return r;

@@ -428,23 +469,25 @@ };

var writeAtom = function writeAtom(atom) {
var pendingPair = createPendingPair();
var pending = createPending();
for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
args[_key4 - 1] = arguments[_key4];
}
var result = writeAtomState.apply(void 0, [pendingPair, atom].concat(args));
flushPending(pendingPair);
var result = writeAtomState.apply(void 0, [pending, atom].concat(args));
flushPending(pending);
return result;
};
var mountDependencies = function mountDependencies(pendingPair, atomState) {
var mountDependencies = function mountDependencies(pending, atom, atomState) {
if (atomState.m && !getPendingContinuablePromise(atomState)) {
for (var _iterator4 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step4; !(_step4 = _iterator4()).done;) {
var a = _step4.value;
for (var _iterator5 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step5; !(_step5 = _iterator5()).done;) {
var a = _step5.value;
if (!atomState.m.d.has(a)) {
mountAtom(pendingPair, a);
var aMounted = mountAtom(pending, a);
aMounted.t.add(atom);
atomState.m.d.add(a);
}
}
for (var _iterator5 = _createForOfIteratorHelperLoose(atomState.m.d || []), _step5; !(_step5 = _iterator5()).done;) {
var _a = _step5.value;
for (var _iterator6 = _createForOfIteratorHelperLoose(atomState.m.d || []), _step6; !(_step6 = _iterator6()).done;) {
var _a = _step6.value;
if (!atomState.d.has(_a)) {
unmountAtom(pendingPair, _a);
var _aMounted = unmountAtom(pending, _a);
_aMounted == null || _aMounted.t.delete(atom);
atomState.m.d.delete(_a);

@@ -455,13 +498,15 @@ }

};
var mountAtom = function mountAtom(pendingPair, atom) {
var mountAtom = function mountAtom(pending, atom) {
var atomState = getAtomState(atom);
if (!atomState.m) {
readAtomState(atom);
for (var _iterator6 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step6; !(_step6 = _iterator6()).done;) {
var a = _step6.value;
mountAtom(pendingPair, a);
readAtomState(pending, atom);
for (var _iterator7 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step7; !(_step7 = _iterator7()).done;) {
var a = _step7.value;
var aMounted = mountAtom(pending, a);
aMounted.t.add(atom);
}
atomState.m = {
l: new Set(),
d: new Set(atomState.d.keys())
d: new Set(atomState.d.keys()),
t: new Set()
};

@@ -471,3 +516,3 @@ if (isActuallyWritableAtom(atom) && atom.onMount) {

var onMount = atom.onMount;
addPending(pendingPair, function () {
addPendingFunction(pending, function () {
var onUnmount = onMount(function () {

@@ -477,3 +522,3 @@ for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {

}
return writeAtomState.apply(void 0, [pendingPair, atom].concat(args));
return writeAtomState.apply(void 0, [pending, atom].concat(args));
});

@@ -488,5 +533,5 @@ if (onUnmount) {

};
var unmountAtom = function unmountAtom(pendingPair, atom) {
var unmountAtom = function unmountAtom(pending, atom) {
var atomState = getAtomState(atom);
if (atomState.m && !atomState.m.l.size && !Array.from(atomState.t).some(function (a) {
if (atomState.m && !atomState.m.l.size && !Array.from(atomState.m.t).some(function (a) {
return getAtomState(a).m;

@@ -496,8 +541,9 @@ })) {

if (onUnmount) {
addPending(pendingPair, onUnmount);
addPendingFunction(pending, onUnmount);
}
delete atomState.m;
for (var _iterator7 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step7; !(_step7 = _iterator7()).done;) {
var a = _step7.value;
unmountAtom(pendingPair, a);
for (var _iterator8 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step8; !(_step8 = _iterator8()).done;) {
var a = _step8.value;
var aMounted = unmountAtom(pending, a);
aMounted == null || aMounted.t.delete(atom);
}

@@ -508,8 +554,10 @@ var pendingPromise = getPendingContinuablePromise(atomState);

}
return undefined;
}
return atomState.m;
};
var subscribeAtom = function subscribeAtom(atom, listener) {
var pendingPair = createPendingPair();
var mounted = mountAtom(pendingPair, atom);
flushPending(pendingPair);
var pending = createPending();
var mounted = mountAtom(pending, atom);
flushPending(pending);
var listeners = mounted.l;

@@ -519,5 +567,5 @@ listeners.add(listener);

listeners.delete(listener);
var pendingPair = createPendingPair();
unmountAtom(pendingPair, atom);
flushPending(pendingPair);
var pending = createPending();
unmountAtom(pending, atom);
flushPending(pending);
};

@@ -535,2 +583,22 @@ };

store[key] = fn;
},
dev4_restore_atoms: function dev4_restore_atoms(values) {
var pending = createPending();
for (var _iterator9 = _createForOfIteratorHelperLoose(values), _step9; !(_step9 = _iterator9()).done;) {
var _step9$value = _step9.value,
atom = _step9$value[0],
value = _step9$value[1];
if (hasInitialValue(atom)) {
var aState = getAtomState(atom);
var hasPrevValue = ('v' in aState);
var prevValue = aState.v;
setAtomStateValueOrPromise(atom, aState, value);
mountDependencies(pending, atom, aState);
if (!hasPrevValue || !Object.is(prevValue, aState.v)) {
addPendingAtom(pending, atom, aState);
recomputeDependents(pending, atom);
}
}
}
flushPending(pending);
}

@@ -537,0 +605,0 @@ };

{
"name": "jotai",
"description": "👻 Primitive and flexible state management for React",
"private": false,
"version": "2.8.0",
"description": "👻 Primitive and flexible state management for React",
"type": "commonjs",
"version": "2.8.1",
"main": "./index.js",

@@ -83,2 +84,3 @@ "types": "./index.d.ts",

"homepage": "https://github.com/pmndrs/jotai",
"packageManager": "pnpm@8.15.0",
"resolutions": {

@@ -99,4 +101,3 @@ "@types/react": "18.2.56",

}
},
"packageManager": "yarn@1.22.1"
}
}

@@ -60,3 +60,3 @@ 'use client';

if (it) return (it = it.call(o)).next.bind(it);
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike ) {
if (it) o = it;

@@ -63,0 +63,0 @@ var i = 0;

@@ -39,38 +39,2 @@ System.register([], (function (exports) {

const isActuallyWritableAtom = (atom) => !!atom.write;
const createPendingPair = () => [/* @__PURE__ */ new Set(), /* @__PURE__ */ new Set()];
const addPending = (pendingPair, pending) => {
(pendingPair[0] || pendingPair[1]).add(pending);
};
const flushPending = (pendingPair, isAsync) => {
let pendingSet;
if (isAsync) {
if (pendingPair[0]) {
return;
}
pendingSet = pendingPair[1];
} else {
if (!pendingPair[0]) {
throw new Error("[Bug] cannot sync flush twice");
}
pendingSet = pendingPair[0];
}
const flushed = /* @__PURE__ */ new Set();
while (pendingSet.size) {
const copy = new Set(pendingSet);
pendingSet.clear();
copy.forEach((pending) => {
if (typeof pending === "function") {
pending();
} else {
const [atom, atomState] = pending;
if (!flushed.has(atom) && atomState.m) {
atomState.m.l.forEach((listener) => listener());
flushed.add(atom);
}
}
});
}
pendingPair[0] = void 0;
return flushed;
};
const CONTINUE_PROMISE = Symbol(

@@ -89,3 +53,3 @@ "CONTINUE_PROMISE"

let curr = promise;
const onFullfilled = (me) => (v) => {
const onFulfilled = (me) => (v) => {
if (curr === me) {

@@ -106,3 +70,3 @@ p.status = FULFILLED;

};
promise.then(onFullfilled(promise), onRejected(promise));
promise.then(onFulfilled(promise), onRejected(promise));
continuePromise = (nextPromise, nextAbort) => {

@@ -112,3 +76,3 @@ if (nextPromise) {

curr = nextPromise;
nextPromise.then(onFullfilled(nextPromise), onRejected(nextPromise));
nextPromise.then(onFulfilled(nextPromise), onRejected(nextPromise));
}

@@ -126,5 +90,14 @@ abort();

const isPromiseLike = (x) => typeof (x == null ? void 0 : x.then) === "function";
const isAtomStateInitialized = (atomState) => "v" in atomState || "e" in atomState;
const returnAtomValue = (atomState) => {
if ("e" in atomState) {
throw atomState.e;
}
if (!("v" in atomState)) {
throw new Error("[Bug] atom state is not initialized");
}
return atomState.v;
};
const getPendingContinuablePromise = (atomState) => {
var _a;
const value = (_a = atomState.s) == null ? void 0 : _a.v;
const value = atomState.v;
if (isContinuablePromise(value) && value.status === PENDING) {

@@ -135,35 +108,46 @@ return value;

};
const returnAtomValue = (atomState) => {
if ("e" in atomState.s) {
throw atomState.s.e;
const addPendingContinuablePromiseToDependency = (atom, promise, dependencyAtomState) => {
if (!dependencyAtomState.p.has(atom)) {
dependencyAtomState.p.add(atom);
promise.then(
() => {
dependencyAtomState.p.delete(atom);
},
() => {
dependencyAtomState.p.delete(atom);
}
);
}
return atomState.s.v;
};
const setAtomStateValueOrPromise = (atomState, valueOrPromise, abortPromise = () => {
}, completePromise = () => {
}) => {
const pendingPromise = getPendingContinuablePromise(atomState);
if (isPromiseLike(valueOrPromise)) {
if (pendingPromise) {
if (pendingPromise !== valueOrPromise) {
pendingPromise[CONTINUE_PROMISE](valueOrPromise, abortPromise);
}
} else {
const continuablePromise = createContinuablePromise(
valueOrPromise,
abortPromise,
completePromise
);
atomState.s = { v: continuablePromise };
}
} else {
if (pendingPromise) {
pendingPromise[CONTINUE_PROMISE](
Promise.resolve(valueOrPromise),
abortPromise
);
}
atomState.s = { v: valueOrPromise };
const createPending = () => [/* @__PURE__ */ new Map(), /* @__PURE__ */ new Map(), /* @__PURE__ */ new Set()];
const addPendingAtom = (pending, atom, atomState) => {
if (!pending[0].has(atom)) {
pending[0].set(atom, /* @__PURE__ */ new Set());
}
pending[1].set(atom, atomState);
};
const addPendingDependent = (pending, atom, dependent) => {
const dependents = pending[0].get(atom);
if (dependents) {
dependents.add(dependent);
}
};
const getPendingDependents = (pending, atom) => pending[0].get(atom);
const addPendingFunction = (pending, fn) => {
pending[2].add(fn);
};
const flushPending = (pending) => {
while (pending[1].size || pending[2].size) {
pending[0].clear();
const atomStates = new Set(pending[1].values());
pending[1].clear();
const functions = new Set(pending[2]);
pending[2].clear();
atomStates.forEach((atomState) => {
var _a;
return (_a = atomState.m) == null ? void 0 : _a.l.forEach((l) => l());
});
functions.forEach((fn) => fn());
}
};
const createStore = exports("createStore", () => {

@@ -174,3 +158,3 @@ const atomStateMap = /* @__PURE__ */ new WeakMap();

if (!atomState) {
atomState = { d: /* @__PURE__ */ new Map(), t: /* @__PURE__ */ new Set() };
atomState = { d: /* @__PURE__ */ new Map(), p: /* @__PURE__ */ new Set(), n: 0 };
atomStateMap.set(atom, atomState);

@@ -180,10 +164,48 @@ }

};
const clearDependencies = (atom) => {
const atomState = getAtomState(atom);
for (const a of atomState.d.keys()) {
getAtomState(a).t.delete(atom);
const setAtomStateValueOrPromise = (atom, atomState, valueOrPromise, abortPromise = () => {
}, completePromise = () => {
}) => {
const hasPrevValue = "v" in atomState;
const prevValue = atomState.v;
const pendingPromise = getPendingContinuablePromise(atomState);
if (isPromiseLike(valueOrPromise)) {
if (pendingPromise) {
if (pendingPromise !== valueOrPromise) {
pendingPromise[CONTINUE_PROMISE](valueOrPromise, abortPromise);
}
} else {
const continuablePromise = createContinuablePromise(
valueOrPromise,
abortPromise,
completePromise
);
if (continuablePromise.status === PENDING) {
for (const a of atomState.d.keys()) {
const aState = getAtomState(a);
addPendingContinuablePromiseToDependency(
atom,
continuablePromise,
aState
);
}
}
atomState.v = continuablePromise;
delete atomState.e;
}
} else {
if (pendingPromise) {
pendingPromise[CONTINUE_PROMISE](
Promise.resolve(valueOrPromise),
abortPromise
);
}
atomState.v = valueOrPromise;
delete atomState.e;
}
atomState.d.clear();
if (!hasPrevValue || !Object.is(prevValue, atomState.v)) {
++atomState.n;
}
};
const addDependency = (atom, a, aState, isSync) => {
const addDependency = (pending, atom, a, aState) => {
var _a;
if (a === atom) {

@@ -193,24 +215,29 @@ throw new Error("[Bug] atom cannot depend on itself");

const atomState = getAtomState(atom);
atomState.d.set(a, aState.s);
aState.t.add(atom);
if (!isSync && atomState.m) {
const pendingPair = createPendingPair();
mountDependencies(pendingPair, atomState);
flushPending(pendingPair);
atomState.d.set(a, aState.n);
const continuablePromise = getPendingContinuablePromise(atomState);
if (continuablePromise) {
addPendingContinuablePromiseToDependency(atom, continuablePromise, aState);
}
(_a = aState.m) == null ? void 0 : _a.t.add(atom);
if (pending) {
addPendingDependent(pending, a, atom);
}
};
const readAtomState = (atom, force) => {
const readAtomState = (pending, atom, force) => {
const atomState = getAtomState(atom);
if (!force && "s" in atomState) {
if (!(force == null ? void 0 : force(atom)) && isAtomStateInitialized(atomState)) {
if (atomState.m) {
return atomState;
}
if (Array.from(atomState.d).every(([a, s]) => {
const aState = readAtomState(a);
return "v" in s && "v" in aState.s && Object.is(s.v, aState.s.v);
})) {
if (Array.from(atomState.d).every(
([a, n]) => (
// Recursively, read the atom state of the dependency, and
// check if the atom epoch number is unchanged
readAtomState(pending, a, force).n === n
)
)) {
return atomState;
}
}
clearDependencies(atom);
atomState.d.clear();
let isSync = true;

@@ -220,5 +247,5 @@ const getter = (a) => {

const aState2 = getAtomState(a);
if (!aState2.s) {
if (!isAtomStateInitialized(aState2)) {
if (hasInitialValue(a)) {
setAtomStateValueOrPromise(aState2, a.init);
setAtomStateValueOrPromise(a, aState2, a.init);
} else {

@@ -230,4 +257,11 @@ throw new Error("no atom init");

}
const aState = readAtomState(a);
addDependency(atom, a, aState, isSync);
const aState = readAtomState(pending, a, force);
if (isSync) {
addDependency(pending, atom, a, aState);
} else {
const pending2 = createPending();
addDependency(pending2, atom, a, aState);
mountDependencies(pending2, atom, atomState);
flushPending(pending2);
}
return returnAtomValue(aState);

@@ -264,2 +298,3 @@ };

setAtomStateValueOrPromise(
atom,
atomState,

@@ -270,5 +305,5 @@ valueOrPromise,

if (atomState.m) {
const pendingPair = createPendingPair();
mountDependencies(pendingPair, atomState);
flushPending(pendingPair);
const pending2 = createPending();
mountDependencies(pending2, atom, atomState);
flushPending(pending2);
}

@@ -279,3 +314,5 @@ }

} catch (error) {
atomState.s = { e: error };
delete atomState.v;
atomState.e = error;
++atomState.n;
return atomState;

@@ -286,4 +323,16 @@ } finally {

};
const readAtom = (atom) => returnAtomValue(readAtomState(atom));
const recomputeDependents = (pendingPair, atom) => {
const readAtom = (atom) => returnAtomValue(readAtomState(void 0, atom));
const recomputeDependents = (pending, atom) => {
const getDependents = (a) => {
var _a, _b;
const aState = getAtomState(a);
const dependents = new Set((_a = aState.m) == null ? void 0 : _a.t);
for (const atomWithPendingContinuablePromise of aState.p) {
dependents.add(atomWithPendingContinuablePromise);
}
(_b = getPendingDependents(pending, a)) == null ? void 0 : _b.forEach((dependent) => {
dependents.add(dependent);
});
return dependents;
};
const topsortedAtoms = [];

@@ -296,3 +345,3 @@ const markedAtoms = /* @__PURE__ */ new Set();

markedAtoms.add(n);
for (const m of getAtomState(n).t) {
for (const m of getDependents(n)) {
if (n !== m) {

@@ -306,6 +355,8 @@ visit(m);

const changedAtoms = /* @__PURE__ */ new Set([atom]);
const isMarked = (a) => markedAtoms.has(a);
for (let i = topsortedAtoms.length - 1; i >= 0; --i) {
const a = topsortedAtoms[i];
const aState = getAtomState(a);
const prev = aState.s;
const hasPrevValue = "v" in aState;
const prevValue = aState.v;
let hasChangedDeps = false;

@@ -319,15 +370,14 @@ for (const dep of aState.d.keys()) {

if (hasChangedDeps) {
if (aState.m || getPendingContinuablePromise(aState)) {
readAtomState(a, true);
mountDependencies(pendingPair, aState);
if (!prev || !("v" in prev) || !("v" in aState.s) || !Object.is(prev.v, aState.s.v)) {
addPending(pendingPair, [a, aState]);
changedAtoms.add(a);
}
readAtomState(pending, a, isMarked);
mountDependencies(pending, a, aState);
if (!hasPrevValue || !Object.is(prevValue, aState.v)) {
addPendingAtom(pending, a, aState);
changedAtoms.add(a);
}
}
markedAtoms.delete(a);
}
};
const writeAtomState = (pendingPair, atom, ...args) => {
const getter = (a) => returnAtomValue(readAtomState(a));
const writeAtomState = (pending, atom, ...args) => {
const getter = (a) => returnAtomValue(readAtomState(pending, a));
const setter = (a, ...args2) => {

@@ -340,15 +390,15 @@ let r;

const aState = getAtomState(a);
const prev = aState.s;
const hasPrevValue = "v" in aState;
const prevValue = aState.v;
const v = args2[0];
setAtomStateValueOrPromise(aState, v);
mountDependencies(pendingPair, aState);
const curr = aState.s;
if (!prev || !("v" in prev) || !("v" in curr) || !Object.is(prev.v, curr.v)) {
addPending(pendingPair, [a, aState]);
recomputeDependents(pendingPair, a);
setAtomStateValueOrPromise(a, aState, v);
mountDependencies(pending, a, aState);
if (!hasPrevValue || !Object.is(prevValue, aState.v)) {
addPendingAtom(pending, a, aState);
recomputeDependents(pending, a);
}
} else {
r = writeAtomState(pendingPair, a, ...args2);
r = writeAtomState(pending, a, ...args2);
}
flushPending(pendingPair, true);
flushPending(pending);
return r;

@@ -360,12 +410,13 @@ };

const writeAtom = (atom, ...args) => {
const pendingPair = createPendingPair();
const result = writeAtomState(pendingPair, atom, ...args);
flushPending(pendingPair);
const pending = createPending();
const result = writeAtomState(pending, atom, ...args);
flushPending(pending);
return result;
};
const mountDependencies = (pendingPair, atomState) => {
const mountDependencies = (pending, atom, atomState) => {
if (atomState.m && !getPendingContinuablePromise(atomState)) {
for (const a of atomState.d.keys()) {
if (!atomState.m.d.has(a)) {
mountAtom(pendingPair, a);
const aMounted = mountAtom(pending, a);
aMounted.t.add(atom);
atomState.m.d.add(a);

@@ -376,3 +427,4 @@ }

if (!atomState.d.has(a)) {
unmountAtom(pendingPair, a);
const aMounted = unmountAtom(pending, a);
aMounted == null ? void 0 : aMounted.t.delete(atom);
atomState.m.d.delete(a);

@@ -383,16 +435,21 @@ }

};
const mountAtom = (pendingPair, atom) => {
const mountAtom = (pending, atom) => {
const atomState = getAtomState(atom);
if (!atomState.m) {
readAtomState(atom);
readAtomState(pending, atom);
for (const a of atomState.d.keys()) {
mountAtom(pendingPair, a);
const aMounted = mountAtom(pending, a);
aMounted.t.add(atom);
}
atomState.m = { l: /* @__PURE__ */ new Set(), d: new Set(atomState.d.keys()) };
atomState.m = {
l: /* @__PURE__ */ new Set(),
d: new Set(atomState.d.keys()),
t: /* @__PURE__ */ new Set()
};
if (isActuallyWritableAtom(atom) && atom.onMount) {
const mounted = atomState.m;
const { onMount } = atom;
addPending(pendingPair, () => {
addPendingFunction(pending, () => {
const onUnmount = onMount(
(...args) => writeAtomState(pendingPair, atom, ...args)
(...args) => writeAtomState(pending, atom, ...args)
);

@@ -407,12 +464,13 @@ if (onUnmount) {

};
const unmountAtom = (pendingPair, atom) => {
const unmountAtom = (pending, atom) => {
const atomState = getAtomState(atom);
if (atomState.m && !atomState.m.l.size && !Array.from(atomState.t).some((a) => getAtomState(a).m)) {
if (atomState.m && !atomState.m.l.size && !Array.from(atomState.m.t).some((a) => getAtomState(a).m)) {
const onUnmount = atomState.m.u;
if (onUnmount) {
addPending(pendingPair, onUnmount);
addPendingFunction(pending, onUnmount);
}
delete atomState.m;
for (const a of atomState.d.keys()) {
unmountAtom(pendingPair, a);
const aMounted = unmountAtom(pending, a);
aMounted == null ? void 0 : aMounted.t.delete(atom);
}

@@ -424,8 +482,10 @@ const pendingPromise = getPendingContinuablePromise(atomState);

}
return void 0;
}
return atomState.m;
};
const subscribeAtom = (atom, listener) => {
const pendingPair = createPendingPair();
const mounted = mountAtom(pendingPair, atom);
flushPending(pendingPair);
const pending = createPending();
const mounted = mountAtom(pending, atom);
flushPending(pending);
const listeners = mounted.l;

@@ -435,5 +495,5 @@ listeners.add(listener);

listeners.delete(listener);
const pendingPair2 = createPendingPair();
unmountAtom(pendingPair2, atom);
flushPending(pendingPair2);
const pending2 = createPending();
unmountAtom(pending2, atom);
flushPending(pending2);
};

@@ -450,2 +510,19 @@ };

store[key] = fn;
},
dev4_restore_atoms: (values) => {
const pending = createPending();
for (const [atom, value] of values) {
if (hasInitialValue(atom)) {
const aState = getAtomState(atom);
const hasPrevValue = "v" in aState;
const prevValue = aState.v;
setAtomStateValueOrPromise(atom, aState, value);
mountDependencies(pending, atom, aState);
if (!hasPrevValue || !Object.is(prevValue, aState.v)) {
addPendingAtom(pending, atom, aState);
recomputeDependents(pending, atom);
}
}
}
flushPending(pending);
}

@@ -452,0 +529,0 @@ };

@@ -1,1 +0,1 @@

System.register([],function(_){"use strict";return{execute:function(){_("atom",I);let G=0;function I(t,r){const i=`atom${++G}`,d={toString:()=>i};return typeof t=="function"?d.read=t:(d.init=t,d.read=L,d.write=N),r&&(d.write=r),d}function L(t){return t(this)}function N(t,r,i){return r(this,typeof i=="function"?i(t(this)):i)}const T=(t,r)=>t.unstable_is?t.unstable_is(r):r===t,V=t=>"init"in t,B=t=>!!t.write,E=()=>[new Set,new Set],A=(t,r)=>{(t[0]||t[1]).add(r)},k=(t,r)=>{let i;if(r){if(t[0])return;i=t[1]}else{if(!t[0])throw new Error("[Bug] cannot sync flush twice");i=t[0]}const d=new Set;for(;i.size;){const f=new Set(i);i.clear(),f.forEach(g=>{if(typeof g=="function")g();else{const[j,S]=g;!d.has(j)&&S.m&&(S.m.l.forEach(b=>b()),d.add(j))}})}return t[0]=void 0,d},M=Symbol(""),F="pending",R="fulfilled",U="rejected",$=t=>typeof t=="object"&&t!==null&&M in t,D=new WeakMap,q=(t,r,i)=>{if(!D.has(t)){let d;const f=new Promise((g,j)=>{let S=t;const b=m=>v=>{S===m&&(f.status=R,f.value=v,g(v),i())},p=m=>v=>{S===m&&(f.status=U,f.reason=v,j(v),i())};t.then(b(t),p(t)),d=(m,v)=>{m&&(D.set(m,f),S=m,m.then(b(m),p(m))),r(),r=v}});f.status=F,f[M]=d,D.set(t,f)}return D.get(t)},x=t=>typeof(t==null?void 0:t.then)=="function",P=t=>{var r;const i=(r=t.s)==null?void 0:r.v;return $(i)&&i.status===F?i:null},W=t=>{if("e"in t.s)throw t.s.e;return t.s.v},z=(t,r,i=()=>{},d=()=>{})=>{const f=P(t);if(x(r))if(f)f!==r&&f[M](r,i);else{const g=q(r,i,d);t.s={v:g}}else f&&f[M](Promise.resolve(r),i),t.s={v:r}},H=_("createStore",()=>{const t=new WeakMap,r=n=>{let s=t.get(n);return s||(s={d:new Map,t:new Set},t.set(n,s)),s},i=n=>{const s=r(n);for(const e of s.d.keys())r(e).t.delete(n);s.d.clear()},d=(n,s,e,u)=>{const l=r(n);if(l.d.set(s,e.s),e.t.add(n),!u&&l.m){const c=E();p(c,l),k(c)}},f=(n,s)=>{const e=r(n);if(!s&&"s"in e&&(e.m||Array.from(e.d).every(([o,w])=>{const y=f(o);return"v"in w&&"v"in y.s&&Object.is(w.v,y.s.v)})))return e;i(n);let u=!0;const l=o=>{if(T(n,o)){const y=r(o);if(!y.s)if(V(o))z(y,o.init);else throw new Error("no atom init");return W(y)}const w=f(o);return d(n,o,w,u),W(w)};let c,a;const h={get signal(){return c||(c=new AbortController),c.signal},get setSelf(){return!a&&B(n)&&(a=(...o)=>{if(!u)return b(n,...o)}),a}};try{const o=n.read(l,h);return z(e,o,()=>c==null?void 0:c.abort(),()=>{if(e.m){const w=E();p(w,e),k(w)}}),e}catch(o){return e.s={e:o},e}finally{u=!1}},g=n=>W(f(n)),j=(n,s)=>{const e=[],u=new Set,l=a=>{if(!u.has(a)){u.add(a);for(const h of r(a).t)a!==h&&l(h);e.push(a)}};l(s);const c=new Set([s]);for(let a=e.length-1;a>=0;--a){const h=e[a],o=r(h),w=o.s;let y=!1;for(const O of o.d.keys())if(O!==h&&c.has(O)){y=!0;break}y&&(o.m||P(o))&&(f(h,!0),p(n,o),(!w||!("v"in w)||!("v"in o.s)||!Object.is(w.v,o.s.v))&&(A(n,[h,o]),c.add(h)))}},S=(n,s,...e)=>{const u=c=>W(f(c)),l=(c,...a)=>{let h;if(T(s,c)){if(!V(c))throw new Error("atom not writable");const o=r(c),w=o.s,y=a[0];z(o,y),p(n,o);const O=o.s;(!w||!("v"in w)||!("v"in O)||!Object.is(w.v,O.v))&&(A(n,[c,o]),j(n,c))}else h=S(n,c,...a);return k(n,!0),h};return s.write(u,l,...e)},b=(n,...s)=>{const e=E(),u=S(e,n,...s);return k(e),u},p=(n,s)=>{if(s.m&&!P(s)){for(const e of s.d.keys())s.m.d.has(e)||(m(n,e),s.m.d.add(e));for(const e of s.m.d||[])s.d.has(e)||(v(n,e),s.m.d.delete(e))}},m=(n,s)=>{const e=r(s);if(!e.m){f(s);for(const u of e.d.keys())m(n,u);if(e.m={l:new Set,d:new Set(e.d.keys())},B(s)&&s.onMount){const u=e.m,{onMount:l}=s;A(n,()=>{const c=l((...a)=>S(n,s,...a));c&&(u.u=c)})}}return e.m},v=(n,s)=>{const e=r(s);if(e.m&&!e.m.l.size&&!Array.from(e.t).some(u=>r(u).m)){const u=e.m.u;u&&A(n,u),delete e.m;for(const c of e.d.keys())v(n,c);const l=P(e);l&&l[M](void 0,()=>{})}};return{get:g,set:b,sub:(n,s)=>{const e=E(),u=m(e,n);k(e);const l=u.l;return l.add(s),()=>{l.delete(s);const c=E();v(c,n),k(c)}}}});let C;const J=_("getDefaultStore",()=>(C||(C=H()),C))}}});
System.register([],function(W){"use strict";return{execute:function(){W("atom",N);let L=0;function N(t,s){const a=`atom${++L}`,m={toString:()=>a};return typeof t=="function"?m.read=t:(m.init=t,m.read=R,m.write=T),s&&(m.write=s),m}function R(t){return t(this)}function T(t,s,a){return s(this,typeof a=="function"?a(t(this)):a)}const q=(t,s)=>t.unstable_is?t.unstable_is(s):s===t,B=t=>"init"in t,F=t=>!!t.write,A=Symbol(""),_="pending",U="fulfilled",$="rejected",x=t=>typeof t=="object"&&t!==null&&A in t,O=new WeakMap,Q=(t,s,a)=>{if(!O.has(t)){let m;const w=new Promise((E,V)=>{let g=t;const j=v=>p=>{g===v&&(w.status=U,w.value=p,E(p),a())},b=v=>p=>{g===v&&(w.status=$,w.reason=p,V(p),a())};t.then(j(t),b(t)),m=(v,p)=>{v&&(O.set(v,w),g=v,v.then(j(v),b(v))),s(),s=p}});w.status=_,w[A]=m,O.set(t,w)}return O.get(t)},X=t=>typeof(t==null?void 0:t.then)=="function",G=t=>"v"in t||"e"in t,P=t=>{if("e"in t)throw t.e;return t.v},D=t=>{const s=t.v;return x(s)&&s.status===_?s:null},H=(t,s,a)=>{a.p.has(t)||(a.p.add(t),s.then(()=>{a.p.delete(t)},()=>{a.p.delete(t)}))},M=()=>[new Map,new Map,new Set],I=(t,s,a)=>{t[0].has(s)||t[0].set(s,new Set),t[1].set(s,a)},Y=(t,s,a)=>{const m=t[0].get(s);m&&m.add(a)},Z=(t,s)=>t[0].get(s),J=(t,s)=>{t[2].add(s)},y=t=>{for(;t[1].size||t[2].size;){t[0].clear();const s=new Set(t[1].values());t[1].clear();const a=new Set(t[2]);t[2].clear(),s.forEach(m=>{var w;return(w=m.m)==null?void 0:w.l.forEach(E=>E())}),a.forEach(m=>m())}},tt=W("createStore",()=>{const t=new WeakMap,s=r=>{let e=t.get(r);return e||(e={d:new Map,p:new Set,n:0},t.set(r,e)),e},a=(r,e,n,o=()=>{},u=()=>{})=>{const c="v"in e,d=e.v,h=D(e);if(X(n))if(h)h!==n&&h[A](n,o);else{const i=Q(n,o,u);if(i.status===_)for(const l of e.d.keys()){const f=s(l);H(r,i,f)}e.v=i,delete e.e}else h&&h[A](Promise.resolve(n),o),e.v=n,delete e.e;(!c||!Object.is(d,e.v))&&++e.n},m=(r,e,n,o)=>{var u;const c=s(e);c.d.set(n,o.n);const d=D(c);d&&H(e,d,o),(u=o.m)==null||u.t.add(e),r&&Y(r,n,e)},w=(r,e,n)=>{const o=s(e);if(!(n!=null&&n(e))&&G(o)&&(o.m||Array.from(o.d).every(([l,f])=>w(r,l,n).n===f)))return o;o.d.clear();let u=!0;const c=l=>{if(q(e,l)){const S=s(l);if(!G(S))if(B(l))a(l,S,l.init);else throw new Error("no atom init");return P(S)}const f=w(r,l,n);if(u)m(r,e,l,f);else{const S=M();m(S,e,l,f),b(S,e,o),y(S)}return P(f)};let d,h;const i={get signal(){return d||(d=new AbortController),d.signal},get setSelf(){return!h&&F(e)&&(h=(...l)=>{if(!u)return j(e,...l)}),h}};try{const l=e.read(c,i);return a(e,o,l,()=>d==null?void 0:d.abort(),()=>{if(o.m){const f=M();b(f,e,o),y(f)}}),o}catch(l){return delete o.v,o.e=l,++o.n,o}finally{u=!1}},E=r=>P(w(void 0,r)),V=(r,e)=>{const n=i=>{var l,f;const S=s(i),z=new Set((l=S.m)==null?void 0:l.t);for(const k of S.p)z.add(k);return(f=Z(r,i))==null||f.forEach(k=>{z.add(k)}),z},o=[],u=new Set,c=i=>{if(!u.has(i)){u.add(i);for(const l of n(i))i!==l&&c(l);o.push(i)}};c(e);const d=new Set([e]),h=i=>u.has(i);for(let i=o.length-1;i>=0;--i){const l=o[i],f=s(l),S="v"in f,z=f.v;let k=!1;for(const K of f.d.keys())if(K!==l&&d.has(K)){k=!0;break}k&&(w(r,l,h),b(r,l,f),(!S||!Object.is(z,f.v))&&(I(r,l,f),d.add(l))),u.delete(l)}},g=(r,e,...n)=>{const o=c=>P(w(r,c)),u=(c,...d)=>{let h;if(q(e,c)){if(!B(c))throw new Error("atom not writable");const i=s(c),l="v"in i,f=i.v,S=d[0];a(c,i,S),b(r,c,i),(!l||!Object.is(f,i.v))&&(I(r,c,i),V(r,c))}else h=g(r,c,...d);return y(r),h};return e.write(o,u,...n)},j=(r,...e)=>{const n=M(),o=g(n,r,...e);return y(n),o},b=(r,e,n)=>{if(n.m&&!D(n)){for(const o of n.d.keys())n.m.d.has(o)||(v(r,o).t.add(e),n.m.d.add(o));for(const o of n.m.d||[])if(!n.d.has(o)){const u=p(r,o);u==null||u.t.delete(e),n.m.d.delete(o)}}},v=(r,e)=>{const n=s(e);if(!n.m){w(r,e);for(const o of n.d.keys())v(r,o).t.add(e);if(n.m={l:new Set,d:new Set(n.d.keys()),t:new Set},F(e)&&e.onMount){const o=n.m,{onMount:u}=e;J(r,()=>{const c=u((...d)=>g(r,e,...d));c&&(o.u=c)})}}return n.m},p=(r,e)=>{const n=s(e);if(n.m&&!n.m.l.size&&!Array.from(n.m.t).some(o=>s(o).m)){const o=n.m.u;o&&J(r,o),delete n.m;for(const c of n.d.keys()){const d=p(r,c);d==null||d.t.delete(e)}const u=D(n);u&&u[A](void 0,()=>{});return}return n.m};return{get:E,set:j,sub:(r,e)=>{const n=M(),o=v(n,r);y(n);const u=o.l;return u.add(e),()=>{u.delete(e);const c=M();p(c,r),y(c)}}}});let C;const et=W("getDefaultStore",()=>(C||(C=tt()),C))}}});

@@ -242,3 +242,3 @@ System.register([], (function (exports) {

const atomState = getAtomState(atom);
if (!force && atomState) {
if (!(force == null ? void 0 : force(atom)) && atomState) {
if (mountedMap.has(atom)) {

@@ -251,3 +251,3 @@ return atomState;

}
const aState = readAtomState(a);
const aState = readAtomState(a, force);
return aState === s || isEqualAtomValue(aState, s);

@@ -273,3 +273,3 @@ })) {

}
const aState = readAtomState(a);
const aState = readAtomState(a, force);
nextDependencies.set(a, aState);

@@ -344,2 +344,3 @@ return returnAtomValue(aState);

const changedAtoms = /* @__PURE__ */ new Set([atom]);
const isMarked = (a) => markedAtoms.has(a);
for (let i = topsortedAtoms.length - 1; i >= 0; --i) {

@@ -359,3 +360,4 @@ const a = topsortedAtoms[i];

if (hasChangedDeps) {
const nextAtomState = readAtomState(a, true);
const nextAtomState = readAtomState(a, isMarked);
addPendingDependent(a, nextAtomState);
if (!isEqualAtomValue(prevAtomState, nextAtomState)) {

@@ -365,2 +367,3 @@ changedAtoms.add(a);

}
markedAtoms.delete(a);
}

@@ -367,0 +370,0 @@ };

@@ -1,1 +0,1 @@

System.register([],function(W){"use strict";return{execute:function(){W("atom",N);let L=0;function N(r,i){const h=`atom${++L}`,v={toString:()=>h};return typeof r=="function"?v.read=r:(v.init=r,v.read=R,v.write=T),i&&(v.write=i),v}function R(r){return r(this)}function T(r,i,h){return i(this,typeof h=="function"?h(r(this)):h)}const M=(r,i)=>r.unstable_is?r.unstable_is(i):i===r,$=r=>"init"in r,A=r=>!!r.write,m=new WeakMap,U=(r,i)=>{m.set(r,i),r.catch(()=>{}).finally(()=>m.delete(r))},O=(r,i)=>{const h=m.get(r);h&&(m.delete(r),h(i))},_=(r,i)=>{r.status="fulfilled",r.value=i},C=(r,i)=>{r.status="rejected",r.reason=i},V=r=>typeof(r==null?void 0:r.then)=="function",E=(r,i)=>!!r&&"v"in r&&"v"in i&&Object.is(r.v,i.v),q=(r,i)=>!!r&&"e"in r&&"e"in i&&Object.is(r.e,i.e),S=r=>!!r&&"v"in r&&r.v instanceof Promise,K=(r,i)=>"v"in r&&"v"in i&&r.v.orig&&r.v.orig===i.v.orig,y=r=>{if("e"in r)throw r.e;return r.v},x=()=>{const r=new WeakMap,i=new WeakMap,h=[],v=new WeakMap,g=t=>r.get(t),B=(t,s)=>{s.d.forEach((u,n)=>{var e;if(!v.has(n)){const c=g(n);(e=h[h.length-1])==null||e.add(n),v.set(n,[c,new Set]),c&&B(n,c)}v.get(n)[1].add(t)})},F=(t,s)=>{var u;const n=g(t);if(r.set(t,s),v.has(t)||((u=h[h.length-1])==null||u.add(t),v.set(t,[n,new Set]),B(t,s)),S(n)){const e="v"in s?s.v instanceof Promise?s.v:Promise.resolve(s.v):Promise.reject(s.e);n.v!==e&&O(n.v,e)}},G=(t,s,u,n)=>{const e=new Map(n?s.d:null);let c=!1;u.forEach((o,a)=>{!o&&M(t,a)&&(o=s),o&&(e.set(a,o),s.d.get(a)!==o&&(c=!0))}),(c||s.d.size!==e.size)&&(s.d=e)},k=(t,s,u,n)=>{const e=g(t),c={d:(e==null?void 0:e.d)||new Map,v:s};if(u&&G(t,c,u,n),E(e,c)&&e.d===c.d)return e;if(S(e)&&S(c)&&K(e,c)){if(e.d===c.d)return e;c.v=e.v}return F(t,c),c},H=(t,s,u,n)=>{if(V(s)){let e;const c=()=>{const a=g(t);if(!S(a)||a.v!==o)return;const d=k(t,o,u);i.has(t)&&a.d!==d.d&&J(t,d,a.d)},o=new Promise((a,d)=>{let l=!1;s.then(f=>{l||(l=!0,_(o,f),a(f),c())},f=>{l||(l=!0,C(o,f),d(f),c())}),e=f=>{l||(l=!0,f.then(w=>_(o,w),w=>C(o,w)),a(f))}});return o.orig=s,o.status="pending",U(o,a=>{a&&e(a),n==null||n()}),k(t,o,u,!0)}return k(t,s,u)},Q=(t,s,u)=>{const n=g(t),e={d:(n==null?void 0:n.d)||new Map,e:s};return u&&G(t,e,u),q(n,e)&&n.d===e.d?n:(F(t,e),e)},p=(t,s)=>{const u=g(t);if(!s&&u&&(i.has(t)||Array.from(u.d).every(([l,f])=>{if(l===t)return!0;const w=p(l);return w===f||E(w,f)})))return u;const n=new Map;let e=!0;const c=l=>{if(M(t,l)){const w=g(l);if(w)return n.set(l,w),y(w);if($(l))return n.set(l,void 0),l.init;throw new Error("no atom init")}const f=p(l);return n.set(l,f),y(f)};let o,a;const d={get signal(){return o||(o=new AbortController),o.signal},get setSelf(){return!a&&A(t)&&(a=(...l)=>{if(!e)return z(t,...l)}),a}};try{const l=t.read(c,d);return H(t,l,n,()=>o==null?void 0:o.abort())}catch(l){return Q(t,l,n)}finally{e=!1}},X=t=>y(p(t)),Y=t=>{const s=o=>{var a,d;const l=new Set((a=i.get(o))==null?void 0:a.t);return(d=v.get(o))==null||d[1].forEach(f=>{l.add(f)}),l},u=new Array,n=new Set,e=o=>{if(!n.has(o)){n.add(o);for(const a of s(o))o!==a&&e(a);u.push(o)}};e(t);const c=new Set([t]);for(let o=u.length-1;o>=0;--o){const a=u[o],d=g(a);if(!d)continue;let l=!1;for(const f of d.d.keys())if(f!==a&&c.has(f)){l=!0;break}if(l){const f=p(a,!0);E(d,f)||c.add(a)}}},I=(t,...s)=>{const u=e=>y(p(e)),n=(e,...c)=>{const o=h.length>0;o||h.push(new Set([e]));let a;if(M(t,e)){if(!$(e))throw new Error("atom not writable");const d=g(e),l=H(e,c[0]);E(d,l)||Y(e)}else a=I(e,...c);return o||j(h.pop()),a};return t.write(u,n,...s)},z=(t,...s)=>{h.push(new Set([t]));const u=I(t,...s);return j(h.pop()),u},D=(t,s,u)=>{var n;const e=i.get(t);if(e)return s&&e.t.add(s),e;const c=u||[];(n=g(t))==null||n.d.forEach((a,d)=>{d!==t&&D(d,t,c)}),p(t);const o={t:new Set(s&&[s]),l:new Set};if(i.set(t,o),A(t)&&t.onMount){const{onMount:a}=t;c.push(()=>{const d=a((...l)=>z(t,...l));d&&(o.u=d)})}return u||c.forEach(a=>a()),o},Z=(t,s)=>!s.l.size&&(!s.t.size||s.t.size===1&&s.t.has(t)),P=(t,s)=>{if(!Z(t,s))return;const u=s.u;u&&u(),i.delete(t);const n=g(t);n&&(S(n)&&O(n.v),n.d.forEach((e,c)=>{if(c!==t){const o=i.get(c);o&&(o.t.delete(t),P(c,o))}}))},J=(t,s,u)=>{const n=new Set(s.d.keys()),e=new Set;u==null||u.forEach((c,o)=>{if(n.has(o)){n.delete(o);return}e.add(o);const a=i.get(o);a&&a.t.delete(t)}),n.forEach(c=>{D(c,t)}),e.forEach(c=>{const o=i.get(c);o&&P(c,o)})},j=t=>{const s=[],u=n=>{var e;if(!v.has(n))return;const[c,o]=v.get(n);v.delete(n),s.push([n,c]),o.forEach(u),(e=g(n))==null||e.d.forEach((a,d)=>u(d))};t.forEach(u),s.forEach(([n,e])=>{const c=g(n);if(c&&c!==e){const o=i.get(n);o&&c.d!==(e==null?void 0:e.d)&&J(n,c,e==null?void 0:e.d),o&&!(!S(e)&&(E(e,c)||q(e,c)))&&o.l.forEach(a=>a())}})};return{get:X,set:z,sub:(t,s)=>{const u=D(t);j([t]);const n=u.l;return n.add(s),()=>{n.delete(s),P(t,u)}}}};let b;W({createStore:x,getDefaultStore:()=>(b||(b=x()),b)})}}});
System.register([],function($){"use strict";return{execute:function(){$("atom",N);let L=0;function N(o,a){const h=`atom${++L}`,g={toString:()=>h};return typeof o=="function"?g.read=o:(g.init=o,g.read=R,g.write=T),a&&(g.write=a),g}function R(o){return o(this)}function T(o,a,h){return a(this,typeof h=="function"?h(o(this)):h)}const M=(o,a)=>o.unstable_is?o.unstable_is(a):a===o,A=o=>"init"in o,O=o=>!!o.write,m=new WeakMap,U=(o,a)=>{m.set(o,a),o.catch(()=>{}).finally(()=>m.delete(o))},_=(o,a)=>{const h=m.get(o);h&&(m.delete(o),h(a))},C=(o,a)=>{o.status="fulfilled",o.value=a},q=(o,a)=>{o.status="rejected",o.reason=a},V=o=>typeof(o==null?void 0:o.then)=="function",E=(o,a)=>!!o&&"v"in o&&"v"in a&&Object.is(o.v,a.v),x=(o,a)=>!!o&&"e"in o&&"e"in a&&Object.is(o.e,a.e),S=o=>!!o&&"v"in o&&o.v instanceof Promise,K=(o,a)=>"v"in o&&"v"in a&&o.v.orig&&o.v.orig===a.v.orig,y=o=>{if("e"in o)throw o.e;return o.v},B=()=>{const o=new WeakMap,a=new WeakMap,h=[],g=new WeakMap,w=t=>o.get(t),k=(t,r)=>{r.d.forEach((c,e)=>{var n;if(!g.has(e)){const i=w(e);(n=h[h.length-1])==null||n.add(e),g.set(e,[i,new Set]),i&&k(e,i)}g.get(e)[1].add(t)})},F=(t,r)=>{var c;const e=w(t);if(o.set(t,r),g.has(t)||((c=h[h.length-1])==null||c.add(t),g.set(t,[e,new Set]),k(t,r)),S(e)){const n="v"in r?r.v instanceof Promise?r.v:Promise.resolve(r.v):Promise.reject(r.e);e.v!==n&&_(e.v,n)}},G=(t,r,c,e)=>{const n=new Map(e?r.d:null);let i=!1;c.forEach((s,l)=>{!s&&M(t,l)&&(s=r),s&&(n.set(l,s),r.d.get(l)!==s&&(i=!0))}),(i||r.d.size!==n.size)&&(r.d=n)},z=(t,r,c,e)=>{const n=w(t),i={d:(n==null?void 0:n.d)||new Map,v:r};if(c&&G(t,i,c,e),E(n,i)&&n.d===i.d)return n;if(S(n)&&S(i)&&K(n,i)){if(n.d===i.d)return n;i.v=n.v}return F(t,i),i},H=(t,r,c,e)=>{if(V(r)){let n;const i=()=>{const l=w(t);if(!S(l)||l.v!==s)return;const f=z(t,s,c);a.has(t)&&l.d!==f.d&&J(t,f,l.d)},s=new Promise((l,f)=>{let u=!1;r.then(d=>{u||(u=!0,C(s,d),l(d),i())},d=>{u||(u=!0,q(s,d),f(d),i())}),n=d=>{u||(u=!0,d.then(v=>C(s,v),v=>q(s,v)),l(d))}});return s.orig=r,s.status="pending",U(s,l=>{l&&n(l),e==null||e()}),z(t,s,c,!0)}return z(t,r,c)},Q=(t,r,c)=>{const e=w(t),n={d:(e==null?void 0:e.d)||new Map,e:r};return c&&G(t,n,c),x(e,n)&&e.d===n.d?e:(F(t,n),n)},p=(t,r)=>{const c=w(t);if(!(r!=null&&r(t))&&c&&(a.has(t)||Array.from(c.d).every(([u,d])=>{if(u===t)return!0;const v=p(u,r);return v===d||E(v,d)})))return c;const e=new Map;let n=!0;const i=u=>{if(M(t,u)){const v=w(u);if(v)return e.set(u,v),y(v);if(A(u))return e.set(u,void 0),u.init;throw new Error("no atom init")}const d=p(u,r);return e.set(u,d),y(d)};let s,l;const f={get signal(){return s||(s=new AbortController),s.signal},get setSelf(){return!l&&O(t)&&(l=(...u)=>{if(!n)return D(t,...u)}),l}};try{const u=t.read(i,f);return H(t,u,e,()=>s==null?void 0:s.abort())}catch(u){return Q(t,u,e)}finally{n=!1}},X=t=>y(p(t)),Y=t=>{const r=l=>{var f,u;const d=new Set((f=a.get(l))==null?void 0:f.t);return(u=g.get(l))==null||u[1].forEach(v=>{d.add(v)}),d},c=new Array,e=new Set,n=l=>{if(!e.has(l)){e.add(l);for(const f of r(l))l!==f&&n(f);c.push(l)}};n(t);const i=new Set([t]),s=l=>e.has(l);for(let l=c.length-1;l>=0;--l){const f=c[l],u=w(f);if(!u)continue;let d=!1;for(const v of u.d.keys())if(v!==f&&i.has(v)){d=!0;break}if(d){const v=p(f,s);k(f,v),E(u,v)||i.add(f)}e.delete(f)}},I=(t,...r)=>{const c=n=>y(p(n)),e=(n,...i)=>{const s=h.length>0;s||h.push(new Set([n]));let l;if(M(t,n)){if(!A(n))throw new Error("atom not writable");const f=w(n),u=H(n,i[0]);E(f,u)||Y(n)}else l=I(n,...i);return s||W(h.pop()),l};return t.write(c,e,...r)},D=(t,...r)=>{h.push(new Set([t]));const c=I(t,...r);return W(h.pop()),c},P=(t,r,c)=>{var e;const n=a.get(t);if(n)return r&&n.t.add(r),n;const i=c||[];(e=w(t))==null||e.d.forEach((l,f)=>{f!==t&&P(f,t,i)}),p(t);const s={t:new Set(r&&[r]),l:new Set};if(a.set(t,s),O(t)&&t.onMount){const{onMount:l}=t;i.push(()=>{const f=l((...u)=>D(t,...u));f&&(s.u=f)})}return c||i.forEach(l=>l()),s},Z=(t,r)=>!r.l.size&&(!r.t.size||r.t.size===1&&r.t.has(t)),j=(t,r)=>{if(!Z(t,r))return;const c=r.u;c&&c(),a.delete(t);const e=w(t);e&&(S(e)&&_(e.v),e.d.forEach((n,i)=>{if(i!==t){const s=a.get(i);s&&(s.t.delete(t),j(i,s))}}))},J=(t,r,c)=>{const e=new Set(r.d.keys()),n=new Set;c==null||c.forEach((i,s)=>{if(e.has(s)){e.delete(s);return}n.add(s);const l=a.get(s);l&&l.t.delete(t)}),e.forEach(i=>{P(i,t)}),n.forEach(i=>{const s=a.get(i);s&&j(i,s)})},W=t=>{const r=[],c=e=>{var n;if(!g.has(e))return;const[i,s]=g.get(e);g.delete(e),r.push([e,i]),s.forEach(c),(n=w(e))==null||n.d.forEach((l,f)=>c(f))};t.forEach(c),r.forEach(([e,n])=>{const i=w(e);if(i&&i!==n){const s=a.get(e);s&&i.d!==(n==null?void 0:n.d)&&J(e,i,n==null?void 0:n.d),s&&!(!S(n)&&(E(n,i)||x(n,i)))&&s.l.forEach(l=>l())}})};return{get:X,set:D,sub:(t,r)=>{const c=P(t);W([t]);const e=c.l;return e.add(r),()=>{e.delete(r),j(t,c)}}}};let b;$({createStore:B,getDefaultStore:()=>(b||(b=B()),b)})}}});

@@ -90,4 +90,3 @@ System.register(['jotai/vanilla'], (function (exports) {

shouldRemove = fn;
if (!shouldRemove)
return;
if (!shouldRemove) return;
for (const [key, value] of atoms) {

@@ -136,4 +135,3 @@ if (shouldRemove(value[1], key)) {

const deepFreeze = (obj) => {
if (typeof obj !== "object" || obj === null)
return;
if (typeof obj !== "object" || obj === null) return;
Object.freeze(obj);

@@ -140,0 +138,0 @@ const propNames = Object.getOwnPropertyNames(obj);

@@ -72,4 +72,2 @@ import type { Atom, WritableAtom } from './atom';

type Store = PrdStore & Partial<DevStoreRev2>;
export type INTERNAL_DevStoreRev2 = DevStoreRev2;
export type INTERNAL_PrdStore = PrdStore;
/**

@@ -76,0 +74,0 @@ * Create a new store. Each store is an independent, isolated universe of atom

@@ -18,2 +18,4 @@ import type { Atom, WritableAtom } from './atom';

readonly d: Set<AnyAtom>;
/** Set of mounted atoms that depends on the atom. */
readonly t: Set<AnyAtom>;
/** Function to run when the atom is unmounted. */

@@ -29,19 +31,19 @@ u?: OnUnmount;

* Map of atoms that the atom depends on.
* The map value is value/error of the dependency.
* The map value is the epoch number of the dependency.
*/
readonly d: Map<AnyAtom, {
readonly v: AnyValue;
} | {
readonly e: AnyError;
}>;
/** Set of atoms that depends on the atom. */
readonly t: Set<AnyAtom>;
readonly d: Map<AnyAtom, number>;
/**
* Set of atoms with pending promise that depend on the atom.
*
* This may cause memory leaks, but it's for the capability to continue promises
*/
readonly p: Set<AnyAtom>;
/** The epoch number of the atom. */
n: number;
/** Object to store mounted state of the atom. */
m?: Mounted;
/** Atom value, atom error or empty. */
s?: {
readonly v: Value;
} | {
readonly e: AnyError;
};
/** Atom value */
v?: Value;
/** Atom error */
e?: AnyError;
};

@@ -51,2 +53,6 @@ type DevStoreRev4 = {

dev4_override_method: <K extends keyof PrdStore>(key: K, fn: PrdStore[K]) => void;
dev4_restore_atoms: (values: Iterable<readonly [
AnyAtom,
AnyValue
]>) => void;
};

@@ -53,0 +59,0 @@ type PrdStore = {

@@ -72,4 +72,2 @@ import type { Atom, WritableAtom } from './atom';

type Store = PrdStore & Partial<DevStoreRev2>;
export type INTERNAL_DevStoreRev2 = DevStoreRev2;
export type INTERNAL_PrdStore = PrdStore;
/**

@@ -76,0 +74,0 @@ * Create a new store. Each store is an independent, isolated universe of atom

@@ -18,2 +18,4 @@ import type { Atom, WritableAtom } from './atom';

readonly d: Set<AnyAtom>;
/** Set of mounted atoms that depends on the atom. */
readonly t: Set<AnyAtom>;
/** Function to run when the atom is unmounted. */

@@ -29,19 +31,19 @@ u?: OnUnmount;

* Map of atoms that the atom depends on.
* The map value is value/error of the dependency.
* The map value is the epoch number of the dependency.
*/
readonly d: Map<AnyAtom, {
readonly v: AnyValue;
} | {
readonly e: AnyError;
}>;
/** Set of atoms that depends on the atom. */
readonly t: Set<AnyAtom>;
readonly d: Map<AnyAtom, number>;
/**
* Set of atoms with pending promise that depend on the atom.
*
* This may cause memory leaks, but it's for the capability to continue promises
*/
readonly p: Set<AnyAtom>;
/** The epoch number of the atom. */
n: number;
/** Object to store mounted state of the atom. */
m?: Mounted;
/** Atom value, atom error or empty. */
s?: {
readonly v: Value;
} | {
readonly e: AnyError;
};
/** Atom value */
v?: Value;
/** Atom error */
e?: AnyError;
};

@@ -51,2 +53,6 @@ type DevStoreRev4 = {

dev4_override_method: <K extends keyof PrdStore>(key: K, fn: PrdStore[K]) => void;
dev4_restore_atoms: (values: Iterable<readonly [
AnyAtom,
AnyValue
]>) => void;
};

@@ -53,0 +59,0 @@ type PrdStore = {

@@ -50,3 +50,3 @@ (function (global, factory) {

if (it) return (it = it.call(o)).next.bind(it);
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike ) {
if (it) o = it;

@@ -76,43 +76,2 @@ var i = 0;

};
var createPendingPair = function createPendingPair() {
return [new Set(), new Set()];
};
var addPending = function addPending(pendingPair, pending) {
(pendingPair[0] || pendingPair[1]).add(pending);
};
var flushPending = function flushPending(pendingPair, isAsync) {
var pendingSet;
if (isAsync) {
if (pendingPair[0]) {
return;
}
pendingSet = pendingPair[1];
} else {
if (!pendingPair[0]) {
throw new Error('[Bug] cannot sync flush twice');
}
pendingSet = pendingPair[0];
}
var flushed = new Set();
while (pendingSet.size) {
var copy = new Set(pendingSet);
pendingSet.clear();
copy.forEach(function (pending) {
if (typeof pending === 'function') {
pending();
} else {
var _atom = pending[0],
atomState = pending[1];
if (!flushed.has(_atom) && atomState.m) {
atomState.m.l.forEach(function (listener) {
return listener();
});
flushed.add(_atom);
}
}
});
}
pendingPair[0] = undefined;
return flushed;
};
var CONTINUE_PROMISE = Symbol('CONTINUE_PROMISE' );

@@ -131,3 +90,3 @@ var PENDING = 'pending';

var curr = promise;
var onFullfilled = function onFullfilled(me) {
var onFulfilled = function onFulfilled(me) {
return function (v) {

@@ -152,3 +111,3 @@ if (curr === me) {

};
promise.then(onFullfilled(promise), onRejected(promise));
promise.then(onFulfilled(promise), onRejected(promise));
continuePromise = function continuePromise(nextPromise, nextAbort) {

@@ -158,3 +117,3 @@ if (nextPromise) {

curr = nextPromise;
nextPromise.then(onFullfilled(nextPromise), onRejected(nextPromise));
nextPromise.then(onFulfilled(nextPromise), onRejected(nextPromise));
}

@@ -174,5 +133,16 @@ abort();

};
var isAtomStateInitialized = function isAtomStateInitialized(atomState) {
return 'v' in atomState || 'e' in atomState;
};
var returnAtomValue = function returnAtomValue(atomState) {
if ('e' in atomState) {
throw atomState.e;
}
if (!('v' in atomState)) {
throw new Error('[Bug] atom state is not initialized');
}
return atomState.v;
};
var getPendingContinuablePromise = function getPendingContinuablePromise(atomState) {
var _s;
var value = (_s = atomState.s) == null ? void 0 : _s.v;
var value = atomState.v;
if (isContinuablePromise(value) && value.status === PENDING) {

@@ -183,34 +153,49 @@ return value;

};
var returnAtomValue = function returnAtomValue(atomState) {
if ('e' in atomState.s) {
throw atomState.s.e;
var addPendingContinuablePromiseToDependency = function addPendingContinuablePromiseToDependency(atom, promise, dependencyAtomState) {
if (!dependencyAtomState.p.has(atom)) {
dependencyAtomState.p.add(atom);
promise.then(function () {
dependencyAtomState.p.delete(atom);
}, function () {
dependencyAtomState.p.delete(atom);
});
}
return atomState.s.v;
};
var setAtomStateValueOrPromise = function setAtomStateValueOrPromise(atomState, valueOrPromise, abortPromise, completePromise) {
if (abortPromise === void 0) {
abortPromise = function abortPromise() {};
var createPending = function createPending() {
return [new Map(), new Map(), new Set()];
};
var addPendingAtom = function addPendingAtom(pending, atom, atomState) {
if (!pending[0].has(atom)) {
pending[0].set(atom, new Set());
}
if (completePromise === void 0) {
completePromise = function completePromise() {};
pending[1].set(atom, atomState);
};
var addPendingDependent = function addPendingDependent(pending, atom, dependent) {
var dependents = pending[0].get(atom);
if (dependents) {
dependents.add(dependent);
}
var pendingPromise = getPendingContinuablePromise(atomState);
if (isPromiseLike(valueOrPromise)) {
if (pendingPromise) {
if (pendingPromise !== valueOrPromise) {
pendingPromise[CONTINUE_PROMISE](valueOrPromise, abortPromise);
}
} else {
var continuablePromise = createContinuablePromise(valueOrPromise, abortPromise, completePromise);
atomState.s = {
v: continuablePromise
};
}
} else {
if (pendingPromise) {
pendingPromise[CONTINUE_PROMISE](Promise.resolve(valueOrPromise), abortPromise);
}
atomState.s = {
v: valueOrPromise
};
};
var getPendingDependents = function getPendingDependents(pending, atom) {
return pending[0].get(atom);
};
var addPendingFunction = function addPendingFunction(pending, fn) {
pending[2].add(fn);
};
var flushPending = function flushPending(pending) {
while (pending[1].size || pending[2].size) {
pending[0].clear();
var _atomStates = new Set(pending[1].values());
pending[1].clear();
var _functions = new Set(pending[2]);
pending[2].clear();
_atomStates.forEach(function (atomState) {
var _atomState$m;
return (_atomState$m = atomState.m) == null ? void 0 : _atomState$m.l.forEach(function (l) {
return l();
});
});
_functions.forEach(function (fn) {
return fn();
});
}

@@ -225,3 +210,4 @@ };

d: new Map(),
t: new Set()
p: new Set(),
n: 0
};

@@ -232,11 +218,42 @@ atomStateMap.set(atom, atomState);

};
var clearDependencies = function clearDependencies(atom) {
var atomState = getAtomState(atom);
for (var _iterator = _createForOfIteratorHelperLoose(atomState.d.keys()), _step; !(_step = _iterator()).done;) {
var a = _step.value;
getAtomState(a).t.delete(atom);
var setAtomStateValueOrPromise = function setAtomStateValueOrPromise(atom, atomState, valueOrPromise, abortPromise, completePromise) {
if (abortPromise === void 0) {
abortPromise = function abortPromise() {};
}
atomState.d.clear();
if (completePromise === void 0) {
completePromise = function completePromise() {};
}
var hasPrevValue = ('v' in atomState);
var prevValue = atomState.v;
var pendingPromise = getPendingContinuablePromise(atomState);
if (isPromiseLike(valueOrPromise)) {
if (pendingPromise) {
if (pendingPromise !== valueOrPromise) {
pendingPromise[CONTINUE_PROMISE](valueOrPromise, abortPromise);
}
} else {
var continuablePromise = createContinuablePromise(valueOrPromise, abortPromise, completePromise);
if (continuablePromise.status === PENDING) {
for (var _iterator = _createForOfIteratorHelperLoose(atomState.d.keys()), _step; !(_step = _iterator()).done;) {
var a = _step.value;
var aState = getAtomState(a);
addPendingContinuablePromiseToDependency(atom, continuablePromise, aState);
}
}
atomState.v = continuablePromise;
delete atomState.e;
}
} else {
if (pendingPromise) {
pendingPromise[CONTINUE_PROMISE](Promise.resolve(valueOrPromise), abortPromise);
}
atomState.v = valueOrPromise;
delete atomState.e;
}
if (!hasPrevValue || !Object.is(prevValue, atomState.v)) {
++atomState.n;
}
};
var addDependency = function addDependency(atom, a, aState, isSync) {
var addDependency = function addDependency(pending, atom, a, aState) {
var _aState$m;
if (a === atom) {

@@ -246,13 +263,15 @@ throw new Error('[Bug] atom cannot depend on itself');

var atomState = getAtomState(atom);
atomState.d.set(a, aState.s);
aState.t.add(atom);
if (!isSync && atomState.m) {
var pendingPair = createPendingPair();
mountDependencies(pendingPair, atomState);
flushPending(pendingPair);
atomState.d.set(a, aState.n);
var continuablePromise = getPendingContinuablePromise(atomState);
if (continuablePromise) {
addPendingContinuablePromiseToDependency(atom, continuablePromise, aState);
}
(_aState$m = aState.m) == null || _aState$m.t.add(atom);
if (pending) {
addPendingDependent(pending, a, atom);
}
};
var readAtomState = function readAtomState(atom, force) {
var readAtomState = function readAtomState(pending, atom, force) {
var atomState = getAtomState(atom);
if (!force && 's' in atomState) {
if (!(force != null && force(atom)) && isAtomStateInitialized(atomState)) {
if (atomState.m) {

@@ -263,5 +282,4 @@ return atomState;

var a = _ref[0],
s = _ref[1];
var aState = readAtomState(a);
return 'v' in s && 'v' in aState.s && Object.is(s.v, aState.s.v);
n = _ref[1];
return readAtomState(pending, a, force).n === n;
})) {

@@ -271,3 +289,3 @@ return atomState;

}
clearDependencies(atom);
atomState.d.clear();
var isSync = true;

@@ -277,5 +295,5 @@ var getter = function getter(a) {

var _aState = getAtomState(a);
if (!_aState.s) {
if (!isAtomStateInitialized(_aState)) {
if (hasInitialValue(a)) {
setAtomStateValueOrPromise(_aState, a.init);
setAtomStateValueOrPromise(a, _aState, a.init);
} else {

@@ -287,4 +305,11 @@ throw new Error('no atom init');

}
var aState = readAtomState(a);
addDependency(atom, a, aState, isSync);
var aState = readAtomState(pending, a, force);
if (isSync) {
addDependency(pending, atom, a, aState);
} else {
var _pending = createPending();
addDependency(_pending, atom, a, aState);
mountDependencies(_pending, atom, atomState);
flushPending(_pending);
}
return returnAtomValue(aState);

@@ -323,3 +348,3 @@ };

var valueOrPromise = atom.read(getter, options);
setAtomStateValueOrPromise(atomState, valueOrPromise, function () {
setAtomStateValueOrPromise(atom, atomState, valueOrPromise, function () {
var _controller;

@@ -329,5 +354,5 @@ return (_controller = controller) == null ? void 0 : _controller.abort();

if (atomState.m) {
var pendingPair = createPendingPair();
mountDependencies(pendingPair, atomState);
flushPending(pendingPair);
var _pending2 = createPending();
mountDependencies(_pending2, atom, atomState);
flushPending(_pending2);
}

@@ -337,5 +362,5 @@ });

} catch (error) {
atomState.s = {
e: error
};
delete atomState.v;
atomState.e = error;
++atomState.n;
return atomState;

@@ -347,5 +372,18 @@ } finally {

var readAtom = function readAtom(atom) {
return returnAtomValue(readAtomState(atom));
return returnAtomValue(readAtomState(undefined, atom));
};
var recomputeDependents = function recomputeDependents(pendingPair, atom) {
var recomputeDependents = function recomputeDependents(pending, atom) {
var getDependents = function getDependents(a) {
var _aState$m2, _getPendingDependents;
var aState = getAtomState(a);
var dependents = new Set((_aState$m2 = aState.m) == null ? void 0 : _aState$m2.t);
for (var _iterator2 = _createForOfIteratorHelperLoose(aState.p), _step2; !(_step2 = _iterator2()).done;) {
var atomWithPendingContinuablePromise = _step2.value;
dependents.add(atomWithPendingContinuablePromise);
}
(_getPendingDependents = getPendingDependents(pending, a)) == null || _getPendingDependents.forEach(function (dependent) {
dependents.add(dependent);
});
return dependents;
};
var topsortedAtoms = [];

@@ -358,4 +396,4 @@ var markedAtoms = new Set();

markedAtoms.add(n);
for (var _iterator2 = _createForOfIteratorHelperLoose(getAtomState(n).t), _step2; !(_step2 = _iterator2()).done;) {
var m = _step2.value;
for (var _iterator3 = _createForOfIteratorHelperLoose(getDependents(n)), _step3; !(_step3 = _iterator3()).done;) {
var m = _step3.value;
if (n !== m) {

@@ -369,9 +407,13 @@ visit(m);

var changedAtoms = new Set([atom]);
var isMarked = function isMarked(a) {
return markedAtoms.has(a);
};
for (var i = topsortedAtoms.length - 1; i >= 0; --i) {
var a = topsortedAtoms[i];
var aState = getAtomState(a);
var prev = aState.s;
var hasPrevValue = ('v' in aState);
var prevValue = aState.v;
var hasChangedDeps = false;
for (var _iterator3 = _createForOfIteratorHelperLoose(aState.d.keys()), _step3; !(_step3 = _iterator3()).done;) {
var dep = _step3.value;
for (var _iterator4 = _createForOfIteratorHelperLoose(aState.d.keys()), _step4; !(_step4 = _iterator4()).done;) {
var dep = _step4.value;
if (dep !== a && changedAtoms.has(dep)) {

@@ -383,16 +425,15 @@ hasChangedDeps = true;

if (hasChangedDeps) {
if (aState.m || getPendingContinuablePromise(aState)) {
readAtomState(a, true);
mountDependencies(pendingPair, aState);
if (!prev || !('v' in prev) || !('v' in aState.s) || !Object.is(prev.v, aState.s.v)) {
addPending(pendingPair, [a, aState]);
changedAtoms.add(a);
}
readAtomState(pending, a, isMarked);
mountDependencies(pending, a, aState);
if (!hasPrevValue || !Object.is(prevValue, aState.v)) {
addPendingAtom(pending, a, aState);
changedAtoms.add(a);
}
}
markedAtoms.delete(a);
}
};
var writeAtomState = function writeAtomState(pendingPair, atom) {
var writeAtomState = function writeAtomState(pending, atom) {
var getter = function getter(a) {
return returnAtomValue(readAtomState(a));
return returnAtomValue(readAtomState(pending, a));
};

@@ -409,15 +450,15 @@ var setter = function setter(a) {

var aState = getAtomState(a);
var prev = aState.s;
var hasPrevValue = ('v' in aState);
var prevValue = aState.v;
var v = args[0];
setAtomStateValueOrPromise(aState, v);
mountDependencies(pendingPair, aState);
var curr = aState.s;
if (!prev || !('v' in prev) || !('v' in curr) || !Object.is(prev.v, curr.v)) {
addPending(pendingPair, [a, aState]);
recomputeDependents(pendingPair, a);
setAtomStateValueOrPromise(a, aState, v);
mountDependencies(pending, a, aState);
if (!hasPrevValue || !Object.is(prevValue, aState.v)) {
addPendingAtom(pending, a, aState);
recomputeDependents(pending, a);
}
} else {
r = writeAtomState.apply(void 0, [pendingPair, a].concat(args));
r = writeAtomState.apply(void 0, [pending, a].concat(args));
}
flushPending(pendingPair, true);
flushPending(pending);
return r;

@@ -432,23 +473,25 @@ };

var writeAtom = function writeAtom(atom) {
var pendingPair = createPendingPair();
var pending = createPending();
for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
args[_key4 - 1] = arguments[_key4];
}
var result = writeAtomState.apply(void 0, [pendingPair, atom].concat(args));
flushPending(pendingPair);
var result = writeAtomState.apply(void 0, [pending, atom].concat(args));
flushPending(pending);
return result;
};
var mountDependencies = function mountDependencies(pendingPair, atomState) {
var mountDependencies = function mountDependencies(pending, atom, atomState) {
if (atomState.m && !getPendingContinuablePromise(atomState)) {
for (var _iterator4 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step4; !(_step4 = _iterator4()).done;) {
var a = _step4.value;
for (var _iterator5 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step5; !(_step5 = _iterator5()).done;) {
var a = _step5.value;
if (!atomState.m.d.has(a)) {
mountAtom(pendingPair, a);
var aMounted = mountAtom(pending, a);
aMounted.t.add(atom);
atomState.m.d.add(a);
}
}
for (var _iterator5 = _createForOfIteratorHelperLoose(atomState.m.d || []), _step5; !(_step5 = _iterator5()).done;) {
var _a = _step5.value;
for (var _iterator6 = _createForOfIteratorHelperLoose(atomState.m.d || []), _step6; !(_step6 = _iterator6()).done;) {
var _a = _step6.value;
if (!atomState.d.has(_a)) {
unmountAtom(pendingPair, _a);
var _aMounted = unmountAtom(pending, _a);
_aMounted == null || _aMounted.t.delete(atom);
atomState.m.d.delete(_a);

@@ -459,13 +502,15 @@ }

};
var mountAtom = function mountAtom(pendingPair, atom) {
var mountAtom = function mountAtom(pending, atom) {
var atomState = getAtomState(atom);
if (!atomState.m) {
readAtomState(atom);
for (var _iterator6 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step6; !(_step6 = _iterator6()).done;) {
var a = _step6.value;
mountAtom(pendingPair, a);
readAtomState(pending, atom);
for (var _iterator7 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step7; !(_step7 = _iterator7()).done;) {
var a = _step7.value;
var aMounted = mountAtom(pending, a);
aMounted.t.add(atom);
}
atomState.m = {
l: new Set(),
d: new Set(atomState.d.keys())
d: new Set(atomState.d.keys()),
t: new Set()
};

@@ -475,3 +520,3 @@ if (isActuallyWritableAtom(atom) && atom.onMount) {

var onMount = atom.onMount;
addPending(pendingPair, function () {
addPendingFunction(pending, function () {
var onUnmount = onMount(function () {

@@ -481,3 +526,3 @@ for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {

}
return writeAtomState.apply(void 0, [pendingPair, atom].concat(args));
return writeAtomState.apply(void 0, [pending, atom].concat(args));
});

@@ -492,5 +537,5 @@ if (onUnmount) {

};
var unmountAtom = function unmountAtom(pendingPair, atom) {
var unmountAtom = function unmountAtom(pending, atom) {
var atomState = getAtomState(atom);
if (atomState.m && !atomState.m.l.size && !Array.from(atomState.t).some(function (a) {
if (atomState.m && !atomState.m.l.size && !Array.from(atomState.m.t).some(function (a) {
return getAtomState(a).m;

@@ -500,8 +545,9 @@ })) {

if (onUnmount) {
addPending(pendingPair, onUnmount);
addPendingFunction(pending, onUnmount);
}
delete atomState.m;
for (var _iterator7 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step7; !(_step7 = _iterator7()).done;) {
var a = _step7.value;
unmountAtom(pendingPair, a);
for (var _iterator8 = _createForOfIteratorHelperLoose(atomState.d.keys()), _step8; !(_step8 = _iterator8()).done;) {
var a = _step8.value;
var aMounted = unmountAtom(pending, a);
aMounted == null || aMounted.t.delete(atom);
}

@@ -512,8 +558,10 @@ var pendingPromise = getPendingContinuablePromise(atomState);

}
return undefined;
}
return atomState.m;
};
var subscribeAtom = function subscribeAtom(atom, listener) {
var pendingPair = createPendingPair();
var mounted = mountAtom(pendingPair, atom);
flushPending(pendingPair);
var pending = createPending();
var mounted = mountAtom(pending, atom);
flushPending(pending);
var listeners = mounted.l;

@@ -523,5 +571,5 @@ listeners.add(listener);

listeners.delete(listener);
var pendingPair = createPendingPair();
unmountAtom(pendingPair, atom);
flushPending(pendingPair);
var pending = createPending();
unmountAtom(pending, atom);
flushPending(pending);
};

@@ -539,2 +587,22 @@ };

store[key] = fn;
},
dev4_restore_atoms: function dev4_restore_atoms(values) {
var pending = createPending();
for (var _iterator9 = _createForOfIteratorHelperLoose(values), _step9; !(_step9 = _iterator9()).done;) {
var _step9$value = _step9.value,
atom = _step9$value[0],
value = _step9$value[1];
if (hasInitialValue(atom)) {
var aState = getAtomState(atom);
var hasPrevValue = ('v' in aState);
var prevValue = aState.v;
setAtomStateValueOrPromise(atom, aState, value);
mountDependencies(pending, atom, aState);
if (!hasPrevValue || !Object.is(prevValue, aState.v)) {
addPendingAtom(pending, atom, aState);
recomputeDependents(pending, atom);
}
}
}
flushPending(pending);
}

@@ -541,0 +609,0 @@ };

@@ -1,1 +0,1 @@

!function(n,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((n="undefined"!=typeof globalThis?globalThis:n||self).jotaiExperimental={})}(this,(function(n){"use strict";var r=0;function t(n){return n(this)}function e(n,r,t){return r(this,"function"==typeof t?t(n(this)):t)}function o(n,r){(null==r||r>n.length)&&(r=n.length);for(var t=0,e=new Array(r);t<r;t++)e[t]=n[t];return e}function i(n,r){var t="undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(t)return(t=t.call(n)).next.bind(t);if(Array.isArray(n)||(t=function(n,r){if(n){if("string"==typeof n)return o(n,r);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?o(n,r):void 0}}(n))||r&&n&&"number"==typeof n.length){t&&(n=t);var e=0;return function(){return e>=n.length?{done:!0}:{done:!1,value:n[e++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=function(n,r){return n.unstable_is?n.unstable_is(r):r===n},f=function(n){return"init"in n},v=function(n){return!!n.write},c=function(){return[new Set,new Set]},s=function(n,r){(n[0]||n[1]).add(r)},l=function(n,r){var t;if(r){if(n[0])return;t=n[1]}else{if(!n[0])throw new Error("[Bug] cannot sync flush twice");t=n[0]}for(var e=new Set;t.size;){var o=new Set(t);t.clear(),o.forEach((function(n){if("function"==typeof n)n();else{var r=n[0],t=n[1];!e.has(r)&&t.m&&(t.m.l.forEach((function(n){return n()})),e.add(r))}}))}return n[0]=void 0,e},d=Symbol(""),y="pending",m=new WeakMap,h=function(n){var r,t,e=null==(r=n.s)?void 0:r.v;return"object"==typeof(t=e)&&null!==t&&d in t&&e.status===y?e:null},p=function(n){if("e"in n.s)throw n.s.e;return n.s.v},w=function(n,r,t,e){void 0===t&&(t=function(){}),void 0===e&&(e=function(){});var o,i=h(n);if("function"==typeof(null==(o=r)?void 0:o.then))if(i)i!==r&&i[d](r,t);else{var a=function(n,r,t){if(!m.has(n)){var e,o=new Promise((function(i,a){var u=n,f=function(n){return function(r){u===n&&(o.status="fulfilled",o.value=r,i(r),t())}},v=function(n){return function(r){u===n&&(o.status="rejected",o.reason=r,a(r),t())}};n.then(f(n),v(n)),e=function(n,t){n&&(m.set(n,o),u=n,n.then(f(n),v(n))),r(),r=t}}));o.status=y,o[d]=e,m.set(n,o)}return m.get(n)}(r,t,e);n.s={v:a}}else i&&i[d](Promise.resolve(r),t),n.s={v:r}},b=function(){var n=new WeakMap,r=function(r){var t=n.get(r);return t||(t={d:new Map,t:new Set},n.set(r,t)),t},t=function n(t,e){var s=r(t);if(!e&&"s"in s){if(s.m)return s;if(Array.from(s.d).every((function(r){var t=r[0],e=r[1],o=n(t);return"v"in e&&"v"in o.s&&Object.is(e.v,o.s.v)})))return s}!function(n){for(var t,e=r(n),o=i(e.d.keys());!(t=o()).done;){var a=t.value;r(a).t.delete(n)}e.d.clear()}(t);var d,y,m=!0,h={get signal(){return d||(d=new AbortController),d.signal},get setSelf(){return!y&&v(t)&&(y=function(){if(!m){for(var n=arguments.length,r=new Array(n),e=0;e<n;e++)r[e]=arguments[e];return o.apply(void 0,[t].concat(r))}}),y}};try{var b=t.read((function(e){if(u(t,e)){var o=r(e);if(!o.s){if(!f(e))throw new Error("no atom init");w(o,e.init)}return p(o)}var i=n(e);return function(n,t,e,o){var i=r(n);if(i.d.set(t,e.s),e.t.add(n),!o&&i.m){var u=c();a(u,i),l(u)}}(t,e,i,m),p(i)}),h);return w(s,b,(function(){var n;return null==(n=d)?void 0:n.abort()}),(function(){if(s.m){var n=c();a(n,s),l(n)}})),s}catch(n){return s.s={e:n},s}finally{m=!1}},e=function n(e,o){for(var v=arguments.length,c=new Array(v>2?v-2:0),d=2;d<v;d++)c[d-2]=arguments[d];var y=o.write.apply(o,[function(n){return p(t(n))},function(v){for(var c,d=arguments.length,y=new Array(d>1?d-1:0),m=1;m<d;m++)y[m-1]=arguments[m];if(u(o,v)){if(!f(v))throw new Error("atom not writable");var p=r(v),b=p.s,g=y[0];w(p,g),a(e,p);var S=p.s;b&&"v"in b&&"v"in S&&Object.is(b.v,S.v)||(s(e,[v,p]),function(n,e){var o=[],u=new Set;!function n(t){if(!u.has(t)){u.add(t);for(var e,a=i(r(t).t);!(e=a()).done;){var f=e.value;t!==f&&n(f)}o.push(t)}}(e);for(var f=new Set([e]),v=o.length-1;v>=0;--v){for(var c,l=o[v],d=r(l),y=d.s,m=!1,p=i(d.d.keys());!(c=p()).done;){var w=c.value;if(w!==l&&f.has(w)){m=!0;break}}m&&(d.m||h(d))&&(t(l,!0),a(n,d),y&&"v"in y&&"v"in d.s&&Object.is(y.v,d.s.v)||(s(n,[l,d]),f.add(l)))}}(e,v))}else c=n.apply(void 0,[e,v].concat(y));return l(e,!0),c}].concat(c));return y},o=function(n){for(var r=c(),t=arguments.length,o=new Array(t>1?t-1:0),i=1;i<t;i++)o[i-1]=arguments[i];var a=e.apply(void 0,[r,n].concat(o));return l(r),a},a=function(n,r){if(r.m&&!h(r)){for(var t,e=i(r.d.keys());!(t=e()).done;){var o=t.value;r.m.d.has(o)||(y(n,o),r.m.d.add(o))}for(var a,u=i(r.m.d||[]);!(a=u()).done;){var f=a.value;r.d.has(f)||(m(n,f),r.m.d.delete(f))}}},y=function n(o,a){var u=r(a);if(!u.m){t(a);for(var f,c=i(u.d.keys());!(f=c()).done;){var l=f.value;n(o,l)}if(u.m={l:new Set,d:new Set(u.d.keys())},v(a)&&a.onMount){var d=u.m,y=a.onMount;s(o,(function(){var n=y((function(){for(var n=arguments.length,r=new Array(n),t=0;t<n;t++)r[t]=arguments[t];return e.apply(void 0,[o,a].concat(r))}));n&&(d.u=n)}))}}return u.m},m=function n(t,e){var o=r(e);if(o.m&&!o.m.l.size&&!Array.from(o.t).some((function(n){return r(n).m}))){var a=o.m.u;a&&s(t,a),delete o.m;for(var u,f=i(o.d.keys());!(u=f()).done;){n(t,u.value)}var v=h(o);v&&v[d](void 0,(function(){}))}};return{get:function(n){return p(t(n))},set:o,sub:function(n,r){var t=c(),e=y(t,n);l(t);var o=e.l;return o.add(r),function(){o.delete(r);var t=c();m(t,n),l(t)}}}};n.atom=function(n,o){var i="atom"+ ++r,a={toString:function(){return i}};return"function"==typeof n?a.read=n:(a.init=n,a.read=t,a.write=e),o&&(a.write=o),a},n.createStore=b,n.getDefaultStore=function(){return a||(a=b()),a}}));
!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((n="undefined"!=typeof globalThis?globalThis:n||self).jotaiExperimental={})}(this,(function(n){"use strict";var e=0;function t(n){return n(this)}function r(n,e,t){return e(this,"function"==typeof t?t(n(this)):t)}function o(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}function a(n,e){var t="undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(t)return(t=t.call(n)).next.bind(t);if(Array.isArray(n)||(t=function(n,e){if(n){if("string"==typeof n)return o(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?o(n,e):void 0}}(n))||e){t&&(n=t);var r=0;return function(){return r>=n.length?{done:!0}:{done:!1,value:n[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=function(n,e){return n.unstable_is?n.unstable_is(e):e===n},f=function(n){return"init"in n},c=function(n){return!!n.write},v=Symbol(""),l="pending",d=new WeakMap,s=function(n){return"v"in n||"e"in n},m=function(n){if("e"in n)throw n.e;return n.v},p=function(n){var e,t=n.v;return"object"==typeof(e=t)&&null!==e&&v in e&&t.status===l?t:null},y=function(n,e,t){t.p.has(n)||(t.p.add(n),e.then((function(){t.p.delete(n)}),(function(){t.p.delete(n)})))},h=function(){return[new Map,new Map,new Set]},w=function(n,e,t){n[0].has(e)||n[0].set(e,new Set),n[1].set(e,t)},g=function(n,e){n[2].add(e)},b=function(n){for(;n[1].size||n[2].size;){n[0].clear();var e=new Set(n[1].values());n[1].clear();var t=new Set(n[2]);n[2].clear(),e.forEach((function(n){var e;return null==(e=n.m)?void 0:e.l.forEach((function(n){return n()}))})),t.forEach((function(n){return n()}))}},S=function(){var n=new WeakMap,e=function(e){var t=n.get(e);return t||(t={d:new Map,p:new Set,n:0},n.set(e,t)),t},t=function(n,t,r,o,i){void 0===o&&(o=function(){}),void 0===i&&(i=function(){});var u,f="v"in t,c=t.v,s=p(t);if("function"==typeof(null==(u=r)?void 0:u.then))if(s)s!==r&&s[v](r,o);else{var m=function(n,e,t){if(!d.has(n)){var r,o=new Promise((function(a,i){var u=n,f=function(n){return function(e){u===n&&(o.status="fulfilled",o.value=e,a(e),t())}},c=function(n){return function(e){u===n&&(o.status="rejected",o.reason=e,i(e),t())}};n.then(f(n),c(n)),r=function(n,t){n&&(d.set(n,o),u=n,n.then(f(n),c(n))),e(),e=t}}));o.status=l,o[v]=r,d.set(n,o)}return d.get(n)}(r,o,i);if(m.status===l)for(var h,w=a(t.d.keys());!(h=w()).done;){var g=h.value,b=e(g);y(n,m,b)}t.v=m,delete t.e}else s&&s[v](Promise.resolve(r),o),t.v=r,delete t.e;f&&Object.is(c,t.v)||++t.n},r=function(n,t,r,o){var a,i=e(t);i.d.set(r,o.n);var u=p(i);u&&y(t,u,o),null==(a=o.m)||a.t.add(t),n&&function(n,e,t){var r=n[0].get(e);r&&r.add(t)}(n,r,t)},o=function n(o,a,i){var v=e(a);if((null==i||!i(a))&&s(v)){if(v.m)return v;if(Array.from(v.d).every((function(e){var t=e[0],r=e[1];return n(o,t,i).n===r})))return v}v.d.clear();var l,d,p=!0,y={get signal(){return l||(l=new AbortController),l.signal},get setSelf(){return!d&&c(a)&&(d=function(){if(!p){for(var n=arguments.length,e=new Array(n),t=0;t<n;t++)e[t]=arguments[t];return A.apply(void 0,[a].concat(e))}}),d}};try{var w=a.read((function(c){if(u(a,c)){var l=e(c);if(!s(l)){if(!f(c))throw new Error("no atom init");t(c,l,c.init)}return m(l)}var d=n(o,c,i);if(p)r(o,a,c,d);else{var y=h();r(y,a,c,d),j(y,a,v),b(y)}return m(d)}),y);return t(a,v,w,(function(){var n;return null==(n=l)?void 0:n.abort()}),(function(){if(v.m){var n=h();j(n,a,v),b(n)}})),v}catch(n){return delete v.v,v.e=n,++v.n,v}finally{p=!1}},i=function(n,t){var r=[],i=new Set;!function t(o){if(!i.has(o)){i.add(o);for(var u,f=a(function(t){for(var r,o,i,u=e(t),f=new Set(null==(r=u.m)?void 0:r.t),c=a(u.p);!(i=c()).done;){var v=i.value;f.add(v)}return null==(o=function(n,e){return n[0].get(e)}(n,t))||o.forEach((function(n){f.add(n)})),f}(o));!(u=f()).done;){var c=u.value;o!==c&&t(c)}r.push(o)}}(t);for(var u=new Set([t]),f=function(n){return i.has(n)},c=r.length-1;c>=0;--c){for(var v,l=r[c],d=e(l),s=("v"in d),m=d.v,p=!1,y=a(d.d.keys());!(v=y()).done;){var h=v.value;if(h!==l&&u.has(h)){p=!0;break}}p&&(o(n,l,f),j(n,l,d),s&&Object.is(m,d.v)||(w(n,l,d),u.add(l))),i.delete(l)}},S=function n(r,a){for(var c=arguments.length,v=new Array(c>2?c-2:0),l=2;l<c;l++)v[l-2]=arguments[l];var d=a.write.apply(a,[function(n){return m(o(r,n))},function(o){for(var c,v=arguments.length,l=new Array(v>1?v-1:0),d=1;d<v;d++)l[d-1]=arguments[d];if(u(a,o)){if(!f(o))throw new Error("atom not writable");var s=e(o),m="v"in s,p=s.v,y=l[0];t(o,s,y),j(r,o,s),m&&Object.is(p,s.v)||(w(r,o,s),i(r,o))}else c=n.apply(void 0,[r,o].concat(l));return b(r),c}].concat(v));return d},A=function(n){for(var e=h(),t=arguments.length,r=new Array(t>1?t-1:0),o=1;o<t;o++)r[o-1]=arguments[o];var a=S.apply(void 0,[e,n].concat(r));return b(e),a},j=function(n,e,t){if(t.m&&!p(t)){for(var r,o=a(t.d.keys());!(r=o()).done;){var i=r.value;if(!t.m.d.has(i))k(n,i).t.add(e),t.m.d.add(i)}for(var u,f=a(t.m.d||[]);!(u=f()).done;){var c=u.value;if(!t.d.has(c)){var v=E(n,c);null==v||v.t.delete(e),t.m.d.delete(c)}}}},k=function n(t,r){var i=e(r);if(!i.m){o(t,r);for(var u,f=a(i.d.keys());!(u=f()).done;){var v=u.value;n(t,v).t.add(r)}if(i.m={l:new Set,d:new Set(i.d.keys()),t:new Set},c(r)&&r.onMount){var l=i.m,d=r.onMount;g(t,(function(){var n=d((function(){for(var n=arguments.length,e=new Array(n),o=0;o<n;o++)e[o]=arguments[o];return S.apply(void 0,[t,r].concat(e))}));n&&(l.u=n)}))}}return i.m},E=function n(t,r){var o=e(r);if(!o.m||o.m.l.size||Array.from(o.m.t).some((function(n){return e(n).m})))return o.m;var i=o.m.u;i&&g(t,i),delete o.m;for(var u,f=a(o.d.keys());!(u=f()).done;){var c=n(t,u.value);null==c||c.t.delete(r)}var l=p(o);l&&l[v](void 0,(function(){}))};return{get:function(n){return m(o(void 0,n))},set:A,sub:function(n,e){var t=h(),r=k(t,n);b(t);var o=r.l;return o.add(e),function(){o.delete(e);var t=h();E(t,n),b(t)}}}};n.atom=function(n,o){var a="atom"+ ++e,i={toString:function(){return a}};return"function"==typeof n?i.read=n:(i.init=n,i.read=t,i.write=r),o&&(i.write=o),i},n.createStore=S,n.getDefaultStore=function(){return i||(i=S()),i}}));

@@ -59,3 +59,3 @@ 'use client';

if (it) return (it = it.call(o)).next.bind(it);
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike ) {
if (it) o = it;

@@ -62,0 +62,0 @@ var i = 0;

@@ -1,1 +0,1 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("jotai/react"),require("jotai/vanilla/utils"),require("jotai/vanilla")):"function"==typeof define&&define.amd?define(["exports","react","jotai/react","jotai/vanilla/utils","jotai/vanilla"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).jotaiReactUtils={},e.React,e.jotaiReact,e.jotaiVanillaUtils,e.jotaiVanilla)}(this,(function(e,t,r,n,a){"use strict";function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function i(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return o(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u=new WeakMap;var l=function(e){var t=u.get(e);return t||(t=new WeakSet,u.set(e,t)),t};e.useAtomCallback=function(e,n){var o=t.useMemo((function(){return a.atom(null,(function(t,r){for(var n=arguments.length,a=new Array(n>2?n-2:0),o=2;o<n;o++)a[o-2]=arguments[o];return e.apply(void 0,[t,r].concat(a))}))}),[e]);return r.useSetAtom(o,n)},e.useHydrateAtoms=function(e,t){for(var n,a=r.useStore(t),o=l(a),u=i(e);!(n=u()).done;){var c=n.value,s=c[0],f=c[1];(!o.has(s)||null!=t&&t.dangerouslyForceHydrate)&&(o.add(s),a.set(s,f))}},e.useReducerAtom=function(e,n,a){var o=r.useAtom(e,a),i=o[0],u=o[1];return[i,t.useCallback((function(e){u((function(t){return n(t,e)}))}),[u,n])]},e.useResetAtom=function(e,a){var o=r.useSetAtom(e,a);return t.useCallback((function(){return o(n.RESET)}),[o])}}));
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("react"),require("jotai/react"),require("jotai/vanilla/utils"),require("jotai/vanilla")):"function"==typeof define&&define.amd?define(["exports","react","jotai/react","jotai/vanilla/utils","jotai/vanilla"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).jotaiReactUtils={},t.React,t.jotaiReact,t.jotaiVanillaUtils,t.jotaiVanilla)}(this,(function(t,e,r,n,a){"use strict";function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function i(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(r)return(r=r.call(t)).next.bind(r);if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return o(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(t,e):void 0}}(t))||e){r&&(t=r);var n=0;return function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u=new WeakMap;var l=function(t){var e=u.get(t);return e||(e=new WeakSet,u.set(t,e)),e};t.useAtomCallback=function(t,n){var o=e.useMemo((function(){return a.atom(null,(function(e,r){for(var n=arguments.length,a=new Array(n>2?n-2:0),o=2;o<n;o++)a[o-2]=arguments[o];return t.apply(void 0,[e,r].concat(a))}))}),[t]);return r.useSetAtom(o,n)},t.useHydrateAtoms=function(t,e){for(var n,a=r.useStore(e),o=l(a),u=i(t);!(n=u()).done;){var c=n.value,s=c[0],f=c[1];(!o.has(s)||null!=e&&e.dangerouslyForceHydrate)&&(o.add(s),a.set(s,f))}},t.useReducerAtom=function(t,n,a){var o=r.useAtom(t,a),i=o[0],u=o[1];return[i,e.useCallback((function(t){u((function(e){return n(e,t)}))}),[u,n])]},t.useResetAtom=function(t,a){var o=r.useSetAtom(t,a);return e.useCallback((function(){return o(n.RESET)}),[o])}}));

@@ -50,3 +50,3 @@ (function (global, factory) {

if (it) return (it = it.call(o)).next.bind(it);
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike ) {
if (it) o = it;

@@ -279,3 +279,3 @@ var i = 0;

var atomState = getAtomState(atom);
if (!force && atomState) {
if (!(force != null && force(atom)) && atomState) {
if (mountedMap.has(atom)) {

@@ -290,3 +290,3 @@ return atomState;

}
var aState = readAtomState(a);
var aState = readAtomState(a, force);
return aState === s || isEqualAtomValue(aState, s);

@@ -312,3 +312,3 @@ })) {

}
var aState = readAtomState(a);
var aState = readAtomState(a, force);
nextDependencies.set(a, aState);

@@ -387,5 +387,8 @@ return returnAtomValue(aState);

var changedAtoms = new Set([atom]);
var isMarked = function isMarked(a) {
return markedAtoms.has(a);
};
for (var i = topsortedAtoms.length - 1; i >= 0; --i) {
var _a = topsortedAtoms[i];
var _prevAtomState = getAtomState(_a);
var a = topsortedAtoms[i];
var _prevAtomState = getAtomState(a);
if (!_prevAtomState) {

@@ -397,3 +400,3 @@ continue;

var dep = _step2.value;
if (dep !== _a && changedAtoms.has(dep)) {
if (dep !== a && changedAtoms.has(dep)) {
hasChangedDeps = true;

@@ -404,7 +407,9 @@ break;

if (hasChangedDeps) {
var nextAtomState = readAtomState(_a, true);
var nextAtomState = readAtomState(a, isMarked);
addPendingDependent(a, nextAtomState);
if (!isEqualAtomValue(_prevAtomState, nextAtomState)) {
changedAtoms.add(_a);
changedAtoms.add(a);
}
}
markedAtoms.delete(a);
}

@@ -675,7 +680,7 @@ };

var _step3$value = _step3.value,
_atom = _step3$value[0],
atom = _step3$value[0],
valueOrPromise = _step3$value[1];
if (hasInitialValue(_atom)) {
setAtomValueOrPromise(_atom, valueOrPromise);
recomputeDependents(_atom);
if (hasInitialValue(atom)) {
setAtomValueOrPromise(atom, valueOrPromise);
recomputeDependents(atom);
}

@@ -682,0 +687,0 @@ }

@@ -1,1 +0,1 @@

!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).jotaiVanilla={})}(this,(function(n){"use strict";var t=0;function r(n){return n(this)}function e(n,t,r){return t(this,"function"==typeof r?r(n(this)):r)}function i(n,t){(null==t||t>n.length)&&(t=n.length);for(var r=0,e=new Array(t);r<t;r++)e[r]=n[r];return e}function o(n,t){var r="undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(r)return(r=r.call(n)).next.bind(r);if(Array.isArray(n)||(r=function(n,t){if(n){if("string"==typeof n)return i(n,t);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(n,t):void 0}}(n))||t&&n&&"number"==typeof n.length){r&&(n=r);var e=0;return function(){return e>=n.length?{done:!0}:{done:!1,value:n[e++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=function(n,t){return n.unstable_is?n.unstable_is(t):t===n},f=function(n){return"init"in n},c=function(n){return!!n.write},v=new WeakMap,l=function(n,t){var r=v.get(n);r&&(v.delete(n),r(t))},d=function(n,t){n.status="fulfilled",n.value=t},s=function(n,t){n.status="rejected",n.reason=t},h=function(n,t){return!!n&&"v"in n&&"v"in t&&Object.is(n.v,t.v)},p=function(n,t){return!!n&&"e"in n&&"e"in t&&Object.is(n.e,t.e)},g=function(n){return!!n&&"v"in n&&n.v instanceof Promise},w=function(n){if("e"in n)throw n.e;return n.v},y=function(){var n=new WeakMap,t=new WeakMap,r=[],e=new WeakMap,i=function(t){return n.get(t)},a=function n(t,o){o.d.forEach((function(o,a){if(!e.has(a)){var u,f=i(a);null==(u=r[r.length-1])||u.add(a),e.set(a,[f,new Set]),f&&n(a,f)}e.get(a)[1].add(t)}))},y=function(t,o){var u,f=i(t);(n.set(t,o),e.has(t))||(null==(u=r[r.length-1])||u.add(t),e.set(t,[f,new Set]),a(t,o));if(g(f)){var c="v"in o?o.v instanceof Promise?o.v:Promise.resolve(o.v):Promise.reject(o.e);f.v!==c&&l(f.v,c)}},b=function(n,t,r,e){var i=new Map(e?t.d:null),o=!1;r.forEach((function(r,e){!r&&u(n,e)&&(r=t),r&&(i.set(e,r),t.d.get(e)!==r&&(o=!0))})),(o||t.d.size!==i.size)&&(t.d=i)},m=function(n,t,r,e){var o,a,u=i(n),f={d:(null==u?void 0:u.d)||new Map,v:t};if(r&&b(n,f,r,e),h(u,f)&&u.d===f.d)return u;if(g(u)&&g(f)&&(a=f,"v"in(o=u)&&"v"in a&&o.v.orig&&o.v.orig===a.v.orig)){if(u.d===f.d)return u;f.v=u.v}return y(n,f),f},S=function(n,r,e,o){if("function"==typeof(null==(c=r)?void 0:c.then)){var a,u=function(){var r=i(n);if(g(r)&&r.v===f){var o=m(n,f,e);t.has(n)&&r.d!==o.d&&P(n,o,r.d)}},f=new Promise((function(n,t){var e=!1;r.then((function(t){e||(e=!0,d(f,t),n(t),u())}),(function(n){e||(e=!0,s(f,n),t(n),u())})),a=function(t){e||(e=!0,t.then((function(n){return d(f,n)}),(function(n){return s(f,n)})),n(t))}}));return f.orig=r,f.status="pending",function(n,t){v.set(n,t),n.catch((function(){})).finally((function(){return v.delete(n)}))}(f,(function(n){n&&a(n),null==o||o()})),m(n,f,e,!0)}var c;return m(n,r,e)},E=function n(r,e){var o=i(r);if(!e&&o){if(t.has(r))return o;if(Array.from(o.d).every((function(t){var e=t[0],i=t[1];if(e===r)return!0;var o=n(e);return o===i||h(o,i)})))return o}var a,v,l=new Map,d=!0,s={get signal(){return a||(a=new AbortController),a.signal},get setSelf(){return!v&&c(r)&&(v=function(){if(!d){for(var n=arguments.length,t=new Array(n),e=0;e<n;e++)t[e]=arguments[e];return j.apply(void 0,[r].concat(t))}}),v}};try{var g=r.read((function(t){if(u(r,t)){var e=i(t);if(e)return l.set(t,e),w(e);if(f(t))return l.set(t,void 0),t.init;throw new Error("no atom init")}var o=n(t);return l.set(t,o),w(o)}),s);return S(r,g,l,(function(){var n;return null==(n=a)?void 0:n.abort()}))}catch(n){return function(n,t,r){var e=i(n),o={d:(null==e?void 0:e.d)||new Map,e:t};return r&&b(n,o,r),p(e,o)&&e.d===o.d?e:(y(n,o),o)}(r,n,l)}finally{d=!1}},A=function(n){var r=new Array,a=new Set;!function n(i){if(!a.has(i)){a.add(i);for(var u,f=o(function(n){var r,i,o=new Set(null==(r=t.get(n))?void 0:r.t);return null==(i=e.get(n))||i[1].forEach((function(n){o.add(n)})),o}(i));!(u=f()).done;){var c=u.value;i!==c&&n(c)}r.push(i)}}(n);for(var u=new Set([n]),f=r.length-1;f>=0;--f){var c=r[f],v=i(c);if(v){for(var l,d=!1,s=o(v.d.keys());!(l=s()).done;){var p=l.value;if(p!==c&&u.has(p)){d=!0;break}}if(d){var g=E(c,!0);h(v,g)||u.add(c)}}}},M=function n(t){for(var e=arguments.length,o=new Array(e>1?e-1:0),a=1;a<e;a++)o[a-1]=arguments[a];var c=t.write.apply(t,[function(n){return w(E(n))},function(e){var o,a=r.length>0;a||r.push(new Set([e]));for(var c=arguments.length,v=new Array(c>1?c-1:0),l=1;l<c;l++)v[l-1]=arguments[l];if(u(t,e)){if(!f(e))throw new Error("atom not writable");var d=i(e),s=S(e,v[0]);h(d,s)||A(e)}else o=n.apply(void 0,[e].concat(v));return a||x(r.pop()),o}].concat(o));return c},j=function(n){r.push(new Set([n]));for(var t=arguments.length,e=new Array(t>1?t-1:0),i=1;i<t;i++)e[i-1]=arguments[i];var o=M.apply(void 0,[n].concat(e));return x(r.pop()),o},k=function n(r,e,o){var a,u=t.get(r);if(u)return e&&u.t.add(e),u;var f=o||[];null==(a=i(r))||a.d.forEach((function(t,e){e!==r&&n(e,r,f)})),E(r);var v={t:new Set(e&&[e]),l:new Set};if(t.set(r,v),c(r)&&r.onMount){var l=r.onMount;f.push((function(){var n=l((function(){for(var n=arguments.length,t=new Array(n),e=0;e<n;e++)t[e]=arguments[e];return j.apply(void 0,[r].concat(t))}));n&&(v.u=n)}))}return o||f.forEach((function(n){return n()})),v},z=function n(r,e){if(function(n,t){return!t.l.size&&(!t.t.size||1===t.t.size&&t.t.has(n))}(r,e)){var o=e.u;o&&o(),t.delete(r);var a=i(r);a&&(g(a)&&l(a.v),a.d.forEach((function(e,i){if(i!==r){var o=t.get(i);o&&(o.t.delete(r),n(i,o))}})))}},P=function(n,r,e){var i=new Set(r.d.keys()),o=new Set;null==e||e.forEach((function(r,e){if(i.has(e))i.delete(e);else{o.add(e);var a=t.get(e);a&&a.t.delete(n)}})),i.forEach((function(t){k(t,n)})),o.forEach((function(n){var r=t.get(n);r&&z(n,r)}))},x=function(n){var r=[];n.forEach((function n(t){var o;if(e.has(t)){var a=e.get(t),u=a[0],f=a[1];e.delete(t),r.push([t,u]),f.forEach(n),null==(o=i(t))||o.d.forEach((function(t,r){return n(r)}))}})),r.forEach((function(n){var r=n[0],e=n[1],o=i(r);if(o&&o!==e){var a=t.get(r);a&&o.d!==(null==e?void 0:e.d)&&P(r,o,null==e?void 0:e.d),a&&(g(e)||!h(e,o)&&!p(e,o))&&a.l.forEach((function(n){return n()}))}}))};return{get:function(n){return w(E(n))},set:j,sub:function(n,t){var r=k(n);x([n]);var e=r.l;return e.add(t),function(){e.delete(t),z(n,r)}}}},b=y,m=function(){return a||(a=y()),a};n.atom=function(n,i){var o="atom"+ ++t,a={toString:function(){return o}};return"function"==typeof n?a.read=n:(a.init=n,a.read=r,a.write=e),i&&(a.write=i),a},n.createStore=b,n.getDefaultStore=m}));
!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).jotaiVanilla={})}(this,(function(n){"use strict";var t=0;function r(n){return n(this)}function e(n,t,r){return t(this,"function"==typeof r?r(n(this)):r)}function i(n,t){(null==t||t>n.length)&&(t=n.length);for(var r=0,e=new Array(t);r<t;r++)e[r]=n[r];return e}function o(n,t){var r="undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(r)return(r=r.call(n)).next.bind(r);if(Array.isArray(n)||(r=function(n,t){if(n){if("string"==typeof n)return i(n,t);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(n,t):void 0}}(n))||t){r&&(n=r);var e=0;return function(){return e>=n.length?{done:!0}:{done:!1,value:n[e++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=function(n,t){return n.unstable_is?n.unstable_is(t):t===n},f=function(n){return"init"in n},c=function(n){return!!n.write},v=new WeakMap,l=function(n,t){var r=v.get(n);r&&(v.delete(n),r(t))},d=function(n,t){n.status="fulfilled",n.value=t},s=function(n,t){n.status="rejected",n.reason=t},h=function(n,t){return!!n&&"v"in n&&"v"in t&&Object.is(n.v,t.v)},p=function(n,t){return!!n&&"e"in n&&"e"in t&&Object.is(n.e,t.e)},g=function(n){return!!n&&"v"in n&&n.v instanceof Promise},w=function(n){if("e"in n)throw n.e;return n.v},y=function(){var n=new WeakMap,t=new WeakMap,r=[],e=new WeakMap,i=function(t){return n.get(t)},a=function n(t,o){o.d.forEach((function(o,a){if(!e.has(a)){var u,f=i(a);null==(u=r[r.length-1])||u.add(a),e.set(a,[f,new Set]),f&&n(a,f)}e.get(a)[1].add(t)}))},y=function(t,o){var u,f=i(t);(n.set(t,o),e.has(t))||(null==(u=r[r.length-1])||u.add(t),e.set(t,[f,new Set]),a(t,o));if(g(f)){var c="v"in o?o.v instanceof Promise?o.v:Promise.resolve(o.v):Promise.reject(o.e);f.v!==c&&l(f.v,c)}},b=function(n,t,r,e){var i=new Map(e?t.d:null),o=!1;r.forEach((function(r,e){!r&&u(n,e)&&(r=t),r&&(i.set(e,r),t.d.get(e)!==r&&(o=!0))})),(o||t.d.size!==i.size)&&(t.d=i)},m=function(n,t,r,e){var o,a,u=i(n),f={d:(null==u?void 0:u.d)||new Map,v:t};if(r&&b(n,f,r,e),h(u,f)&&u.d===f.d)return u;if(g(u)&&g(f)&&(a=f,"v"in(o=u)&&"v"in a&&o.v.orig&&o.v.orig===a.v.orig)){if(u.d===f.d)return u;f.v=u.v}return y(n,f),f},S=function(n,r,e,o){if("function"==typeof(null==(c=r)?void 0:c.then)){var a,u=function(){var r=i(n);if(g(r)&&r.v===f){var o=m(n,f,e);t.has(n)&&r.d!==o.d&&P(n,o,r.d)}},f=new Promise((function(n,t){var e=!1;r.then((function(t){e||(e=!0,d(f,t),n(t),u())}),(function(n){e||(e=!0,s(f,n),t(n),u())})),a=function(t){e||(e=!0,t.then((function(n){return d(f,n)}),(function(n){return s(f,n)})),n(t))}}));return f.orig=r,f.status="pending",function(n,t){v.set(n,t),n.catch((function(){})).finally((function(){return v.delete(n)}))}(f,(function(n){n&&a(n),null==o||o()})),m(n,f,e,!0)}var c;return m(n,r,e)},E=function n(r,e){var o=i(r);if((null==e||!e(r))&&o){if(t.has(r))return o;if(Array.from(o.d).every((function(t){var i=t[0],o=t[1];if(i===r)return!0;var a=n(i,e);return a===o||h(a,o)})))return o}var a,v,l=new Map,d=!0,s={get signal(){return a||(a=new AbortController),a.signal},get setSelf(){return!v&&c(r)&&(v=function(){if(!d){for(var n=arguments.length,t=new Array(n),e=0;e<n;e++)t[e]=arguments[e];return j.apply(void 0,[r].concat(t))}}),v}};try{var g=r.read((function(t){if(u(r,t)){var o=i(t);if(o)return l.set(t,o),w(o);if(f(t))return l.set(t,void 0),t.init;throw new Error("no atom init")}var a=n(t,e);return l.set(t,a),w(a)}),s);return S(r,g,l,(function(){var n;return null==(n=a)?void 0:n.abort()}))}catch(n){return function(n,t,r){var e=i(n),o={d:(null==e?void 0:e.d)||new Map,e:t};return r&&b(n,o,r),p(e,o)&&e.d===o.d?e:(y(n,o),o)}(r,n,l)}finally{d=!1}},A=function(n){var r=new Array,u=new Set;!function n(i){if(!u.has(i)){u.add(i);for(var a,f=o(function(n){var r,i,o=new Set(null==(r=t.get(n))?void 0:r.t);return null==(i=e.get(n))||i[1].forEach((function(n){o.add(n)})),o}(i));!(a=f()).done;){var c=a.value;i!==c&&n(c)}r.push(i)}}(n);for(var f=new Set([n]),c=function(n){return u.has(n)},v=r.length-1;v>=0;--v){var l=r[v],d=i(l);if(d){for(var s,p=!1,g=o(d.d.keys());!(s=g()).done;){var w=s.value;if(w!==l&&f.has(w)){p=!0;break}}if(p){var y=E(l,c);a(l,y),h(d,y)||f.add(l)}u.delete(l)}}},M=function n(t){for(var e=arguments.length,o=new Array(e>1?e-1:0),a=1;a<e;a++)o[a-1]=arguments[a];var c=t.write.apply(t,[function(n){return w(E(n))},function(e){var o,a=r.length>0;a||r.push(new Set([e]));for(var c=arguments.length,v=new Array(c>1?c-1:0),l=1;l<c;l++)v[l-1]=arguments[l];if(u(t,e)){if(!f(e))throw new Error("atom not writable");var d=i(e),s=S(e,v[0]);h(d,s)||A(e)}else o=n.apply(void 0,[e].concat(v));return a||x(r.pop()),o}].concat(o));return c},j=function(n){r.push(new Set([n]));for(var t=arguments.length,e=new Array(t>1?t-1:0),i=1;i<t;i++)e[i-1]=arguments[i];var o=M.apply(void 0,[n].concat(e));return x(r.pop()),o},k=function n(r,e,o){var a,u=t.get(r);if(u)return e&&u.t.add(e),u;var f=o||[];null==(a=i(r))||a.d.forEach((function(t,e){e!==r&&n(e,r,f)})),E(r);var v={t:new Set(e&&[e]),l:new Set};if(t.set(r,v),c(r)&&r.onMount){var l=r.onMount;f.push((function(){var n=l((function(){for(var n=arguments.length,t=new Array(n),e=0;e<n;e++)t[e]=arguments[e];return j.apply(void 0,[r].concat(t))}));n&&(v.u=n)}))}return o||f.forEach((function(n){return n()})),v},z=function n(r,e){if(function(n,t){return!t.l.size&&(!t.t.size||1===t.t.size&&t.t.has(n))}(r,e)){var o=e.u;o&&o(),t.delete(r);var a=i(r);a&&(g(a)&&l(a.v),a.d.forEach((function(e,i){if(i!==r){var o=t.get(i);o&&(o.t.delete(r),n(i,o))}})))}},P=function(n,r,e){var i=new Set(r.d.keys()),o=new Set;null==e||e.forEach((function(r,e){if(i.has(e))i.delete(e);else{o.add(e);var a=t.get(e);a&&a.t.delete(n)}})),i.forEach((function(t){k(t,n)})),o.forEach((function(n){var r=t.get(n);r&&z(n,r)}))},x=function(n){var r=[];n.forEach((function n(t){var o;if(e.has(t)){var a=e.get(t),u=a[0],f=a[1];e.delete(t),r.push([t,u]),f.forEach(n),null==(o=i(t))||o.d.forEach((function(t,r){return n(r)}))}})),r.forEach((function(n){var r=n[0],e=n[1],o=i(r);if(o&&o!==e){var a=t.get(r);a&&o.d!==(null==e?void 0:e.d)&&P(r,o,null==e?void 0:e.d),a&&(g(e)||!h(e,o)&&!p(e,o))&&a.l.forEach((function(n){return n()}))}}))};return{get:function(n){return w(E(n))},set:j,sub:function(n,t){var r=k(n);x([n]);var e=r.l;return e.add(t),function(){e.delete(t),z(n,r)}}}},b=y,m=function(){return a||(a=y()),a};n.atom=function(n,i){var o="atom"+ ++t,a={toString:function(){return o}};return"function"==typeof n?a.read=n:(a.init=n,a.read=r,a.write=e),i&&(a.write=i),a},n.createStore=b,n.getDefaultStore=m}));

@@ -53,3 +53,3 @@ (function (global, factory) {

if (it) return (it = it.call(o)).next.bind(it);
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike ) {
if (it) o = it;

@@ -450,9 +450,9 @@ var i = 0;

if (e.storageArea === getStringStorage() && e.key === key) {
var _newValue;
var newValue;
try {
_newValue = JSON.parse(e.newValue || '');
newValue = JSON.parse(e.newValue || '');
} catch (_unused2) {
_newValue = initialValue;
newValue = initialValue;
}
callback(_newValue);
callback(newValue);
}

@@ -459,0 +459,0 @@ };

@@ -1,1 +0,1 @@

!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("jotai/vanilla")):"function"==typeof define&&define.amd?define(["exports","jotai/vanilla"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).jotaiVanillaUtils={},t.jotaiVanilla)}(this,(function(t,n){"use strict";var e=Symbol("");function r(){return r=Object.assign?Object.assign.bind():function(t){for(var n=1;n<arguments.length;n++){var e=arguments[n];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t},r.apply(this,arguments)}function o(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,r=new Array(n);e<n;e++)r[e]=t[e];return r}function i(t,n){var e="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(e)return(e=e.call(t)).next.bind(e);if(Array.isArray(t)||(e=function(t,n){if(t){if("string"==typeof t)return o(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?o(t,n):void 0}}(t))||n&&t&&"number"==typeof t.length){e&&(t=e);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a=function(t,n,e){return(n.has(e)?n:n.set(e,t())).get(e)},u=new WeakMap;var f=new WeakSet,c=function t(n){if("object"==typeof n&&null!==n){Object.freeze(n);for(var e,r=i(Object.getOwnPropertyNames(n));!(e=r()).done;){t(n[e.value])}return n}};function l(t){if(f.has(t))return t;f.add(t);var n=t.read;if(t.read=function(t,e){return c(n.call(this,t,e))},"write"in t){var e=t.write;t.write=function(n,r){for(var o=arguments.length,i=new Array(o>2?o-2:0),a=2;a<o;a++)i[a-2]=arguments[a];return e.call.apply(e,[this,n,function(){for(var n=arguments.length,e=new Array(n),o=0;o<n;o++)e[o]=arguments[o];return e[0]===t&&(e[1]=c(e[1])),r.apply(void 0,e)}].concat(i))}}return t}var s=function(t,n,e){return(n.has(e)?n:n.set(e,t())).get(e)},v=new WeakMap,d={},m=function(t){return!!t.write};var h=function(t){return"function"==typeof(null==t?void 0:t.then)};function p(t,n){var e,r;void 0===t&&(t=function(){try{return window.localStorage}catch(t){return}});var o={getItem:function(o,i){var a,u,f=function(t){if(e!==(t=t||"")){try{r=JSON.parse(t,null==n?void 0:n.reviver)}catch(t){return i}e=t}return r},c=null!=(a=null==(u=t())?void 0:u.getItem(o))?a:null;return h(c)?c.then(f):f(c)},setItem:function(e,r){var o;return null==(o=t())?void 0:o.setItem(e,JSON.stringify(r,null==n?void 0:n.replacer))},removeItem:function(n){var e;return null==(e=t())?void 0:e.removeItem(n)}};return"undefined"!=typeof window&&"function"==typeof window.addEventListener&&window.Storage&&(o.subscribe=function(n,e,r){if(!(t()instanceof window.Storage))return function(){};var o=function(o){if(o.storageArea===t()&&o.key===n){var i;try{i=JSON.parse(o.newValue||"")}catch(t){i=r}e(i)}};return window.addEventListener("storage",o),function(){window.removeEventListener("storage",o)}}),o}var y=p();var b=new WeakMap,w={state:"loading"};var g=function(t,n,e){return(n.has(e)?n:n.set(e,t())).get(e)},O=new WeakMap,k=function(){};t.RESET=e,t.atomFamily=function(t,n){var e=null,r=new Map,o=function o(a){var u;if(void 0===n)u=r.get(a);else for(var f,c=i(r);!(f=c()).done;){var l=f.value,s=l[0],v=l[1];if(n(s,a)){u=v;break}}if(void 0!==u){if(null==e||!e(u[1],a))return u[0];o.remove(a)}var d=t(a);return r.set(a,[d,Date.now()]),d};return o.remove=function(t){if(void 0===n)r.delete(t);else for(var e,o=i(r);!(e=o()).done;){var a=e.value[0];if(n(a,t)){r.delete(a);break}}},o.setShouldRemove=function(t){if(e=t)for(var n,o=i(r);!(n=o()).done;){var a=n.value,u=a[0],f=a[1];e(f[1],u)&&r.delete(u)}},o},t.atomWithDefault=function(t){var r=Symbol(),o=n.atom(r),i=n.atom((function(n,e){var i=n(o);return i!==r?i:t(n,e)}),(function(t,n,a){if(a===e)n(o,r);else if("function"==typeof a){var u=t(i);n(o,a(u))}else n(o,a)}));return i},t.atomWithLazy=function(t){var e=n.atom(void 0);return delete e.init,Object.defineProperty(e,"init",{get:function(){return t()}}),e},t.atomWithObservable=function(t,e){var r=function(t){if("e"in t)throw t.e;return t.d},o=n.atom((function(r){var o,i,a,u=t(r),f=null==(o=(i=u)[Symbol.observable])?void 0:o.call(i);f&&(u=f);var c,l,s,v,d=function(){return new Promise((function(t){a=t}))},m=e&&"initialValue"in e?{d:"function"==typeof e.initialValue?e.initialValue():e.initialValue}:d(),h=function(t){l=t,null==a||a(t),null==c||c(t)},p=function(){return!c},y=function(){s&&(clearTimeout(v),s.unsubscribe()),s=u.subscribe({next:function(t){return h({d:t})},error:function(t){return h({e:t})},complete:function(){}}),p()&&null!=e&&e.unstable_timeout&&(v=setTimeout((function(){s&&(s.unsubscribe(),s=void 0)}),e.unstable_timeout))};y();var b=n.atom(l||m);return b.onMount=function(t){return c=t,l&&t(l),s?clearTimeout(v):y(),function(){c=void 0,s&&(s.unsubscribe(),s=void 0)}},[b,u,d,y,p]}));return n.atom((function(t){var n=t(o),e=t(n[0]);return e instanceof Promise?e.then(r):r(e)}),(function(t,n,e){var r=t(o),i=r[0],a=r[1],u=r[2],f=r[3],c=r[4];if(!("next"in a))throw new Error("observable is not subject");c()&&(n(i,u()),f()),a.next(e)}))},t.atomWithReducer=function(t,e){return n.atom(t,(function(t,n,r){n(this,e(t(this),r))}))},t.atomWithRefresh=function(t,e){var r=n.atom(0);return n.atom((function(n,e){return n(r),t(n,e)}),(function(t,n){for(var o=arguments.length,i=new Array(o>2?o-2:0),a=2;a<o;a++)i[a-2]=arguments[a];if(0===i.length)n(r,(function(t){return t+1}));else if(e)return e.apply(void 0,[t,n].concat(i))}))},t.atomWithReset=function(t){var r=n.atom(t,(function(n,o,i){var a="function"==typeof i?i(n(r)):i;o(r,a===e?t:a)}));return r},t.atomWithStorage=function(t,r,o,i){void 0===o&&(o=y);var a=null==i?void 0:i.getOnInit,u=n.atom(a?o.getItem(t,r):r);return u.onMount=function(n){var e;return n(o.getItem(t,r)),o.subscribe&&(e=o.subscribe(t,n,r)),e},n.atom((function(t){return t(u)}),(function(n,i,a){var f="function"==typeof a?a(n(u)):a;return f===e?(i(u,r),o.removeItem(t)):f instanceof Promise?f.then((function(n){return i(u,n),o.setItem(t,n)})):(i(u,f),o.setItem(t,f))}))},t.createJSONStorage=p,t.freezeAtom=l,t.freezeAtomCreator=function(t){return function(){return l(t.apply(void 0,arguments))}},t.loadable=function(t){return e=function(){var e=new WeakMap,r=n.atom(0),o=n.atom((function(n,o){var i,a=o.setSelf;n(r);try{i=n(t)}catch(t){return{state:"hasError",error:t}}if(!(i instanceof Promise))return{state:"hasData",data:i};var u=i,f=e.get(u);if(f)return f;"fulfilled"===u.status?e.set(u,{state:"hasData",data:u.value}):"rejected"===u.status?e.set(u,{state:"hasError",error:u.reason}):u.then((function(t){e.set(u,{state:"hasData",data:t})}),(function(t){e.set(u,{state:"hasError",error:t})})).finally(a);var c=e.get(u);return c||(e.set(u,w),w)}),(function(t,n){n(r,(function(t){return t+1}))}));return n.atom((function(t){return t(o)}))},r=t,(b.has(r)?b:b.set(r,e())).get(r);var e,r},t.selectAtom=function(t,e,r){return void 0===r&&(r=Object.is),o=function(){var o=Symbol(),i=n.atom((function(n){var a=n(i);return function(t){var n=t[0],i=t[1];if(i===o)return e(n);var a=e(n,i);return r(i,a)?i:a}([n(t),a])}));return i.init=o,i},i=e,f=r,c=a((function(){return new WeakMap}),u,t),l=a((function(){return new WeakMap}),c,i),a(o,l,f);var o,i,f,c,l},t.splitAtom=function(t,e){return r=function(){var r=new WeakMap,o=function o(a,u){var f=r.get(a);if(f)return f;var c=u&&r.get(u),l=[],s=[];return a.forEach((function(r,u){var f=e?e(r):u;s[u]=f;var v=c&&c.atomList[c.keyList.indexOf(f)];if(v)l[u]=v;else{var d=function(n){var e=n(i),r=n(t),u=o(r,null==e?void 0:e.arr).keyList.indexOf(f);if(u<0||u>=r.length){var c=a[o(a).keyList.indexOf(f)];if(c)return c;throw new Error("splitAtom: index out of bounds for read")}return r[u]};l[u]=m(t)?n.atom(d,(function(n,e,r){var a=n(i),u=n(t),c=o(u,null==a?void 0:a.arr).keyList.indexOf(f);if(c<0||c>=u.length)throw new Error("splitAtom: index out of bounds for write");var l="function"==typeof r?r(u[c]):r;Object.is(u[c],l)||e(t,[].concat(u.slice(0,c),[l],u.slice(c+1)))})):n.atom(d)}})),f=c&&c.keyList.length===s.length&&c.keyList.every((function(t,n){return t===s[n]}))?c:{arr:a,atomList:l,keyList:s},r.set(a,f),f},i=n.atom((function(n){var e=n(i),r=n(t);return o(r,null==e?void 0:e.arr)}));i.init=void 0;var a=m(t)?n.atom((function(t){return t(i).atomList}),(function(n,e,r){switch(r.type){case"remove":var o=n(a).indexOf(r.atom);if(o>=0){var i=n(t);e(t,[].concat(i.slice(0,o),i.slice(o+1)))}break;case"insert":var u=r.before?n(a).indexOf(r.before):n(a).length;if(u>=0){var f=n(t);e(t,[].concat(f.slice(0,u),[r.value],f.slice(u)))}break;case"move":var c=n(a).indexOf(r.atom),l=r.before?n(a).indexOf(r.before):n(a).length;if(c>=0&&l>=0){var s=n(t);e(t,c<l?[].concat(s.slice(0,c),s.slice(c+1,l),[s[c]],s.slice(l)):[].concat(s.slice(0,l),[s[c]],s.slice(l,c),s.slice(c+1)))}}})):n.atom((function(t){return t(i).atomList}));return a},o=e||d,i=s((function(){return new WeakMap}),v,t),s(r,i,o);var r,o,i},t.unstable_withStorageValidator=function(t){return function(n){return r({},n,{getItem:function(e,r){var o=function(n){return t(n)?n:r},i=n.getItem(e,r);return h(i)?i.then(o):o(i)}})}},t.unwrap=function(t,e){return void 0===e&&(e=k),r=function(){var r=new WeakMap,o=new WeakMap,i=n.atom(0),a=n.atom((function(n,u){var f=u.setSelf;n(i);var c=n(a),l=n(t);if(!(l instanceof Promise))return{v:l};if(l!==(null==c?void 0:c.p)&&("fulfilled"===l.status?o.set(l,l.value):"rejected"===l.status?r.set(l,l.reason):l.then((function(t){return o.set(l,t)}),(function(t){return r.set(l,t)})).finally(f)),r.has(l))throw r.get(l);return o.has(l)?{p:l,v:o.get(l)}:c&&"v"in c?{p:l,f:e(c.v),v:c.v}:{p:l,f:e()}}),(function(t,n){n(i,(function(t){return t+1}))}));return a.init=void 0,n.atom((function(t){var n=t(a);return"f"in n?n.f:n.v}),(function(n,e){for(var r=arguments.length,o=new Array(r>2?r-2:0),i=2;i<r;i++)o[i-2]=arguments[i];return e.apply(void 0,[t].concat(o))}))},o=e,i=g((function(){return new WeakMap}),O,t),g(r,i,o);var r,o,i}}));
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("jotai/vanilla")):"function"==typeof define&&define.amd?define(["exports","jotai/vanilla"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).jotaiVanillaUtils={},t.jotaiVanilla)}(this,(function(t,n){"use strict";var e=Symbol("");function r(){return r=Object.assign?Object.assign.bind():function(t){for(var n=1;n<arguments.length;n++){var e=arguments[n];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t},r.apply(this,arguments)}function o(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,r=new Array(n);e<n;e++)r[e]=t[e];return r}function i(t,n){var e="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(e)return(e=e.call(t)).next.bind(e);if(Array.isArray(t)||(e=function(t,n){if(t){if("string"==typeof t)return o(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?o(t,n):void 0}}(t))||n){e&&(t=e);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a=function(t,n,e){return(n.has(e)?n:n.set(e,t())).get(e)},u=new WeakMap;var f=new WeakSet,c=function t(n){if("object"==typeof n&&null!==n){Object.freeze(n);for(var e,r=i(Object.getOwnPropertyNames(n));!(e=r()).done;){t(n[e.value])}return n}};function l(t){if(f.has(t))return t;f.add(t);var n=t.read;if(t.read=function(t,e){return c(n.call(this,t,e))},"write"in t){var e=t.write;t.write=function(n,r){for(var o=arguments.length,i=new Array(o>2?o-2:0),a=2;a<o;a++)i[a-2]=arguments[a];return e.call.apply(e,[this,n,function(){for(var n=arguments.length,e=new Array(n),o=0;o<n;o++)e[o]=arguments[o];return e[0]===t&&(e[1]=c(e[1])),r.apply(void 0,e)}].concat(i))}}return t}var s=function(t,n,e){return(n.has(e)?n:n.set(e,t())).get(e)},v=new WeakMap,d={},m=function(t){return!!t.write};var h=function(t){return"function"==typeof(null==t?void 0:t.then)};function p(t,n){var e,r;void 0===t&&(t=function(){try{return window.localStorage}catch(t){return}});var o={getItem:function(o,i){var a,u,f=function(t){if(e!==(t=t||"")){try{r=JSON.parse(t,null==n?void 0:n.reviver)}catch(t){return i}e=t}return r},c=null!=(a=null==(u=t())?void 0:u.getItem(o))?a:null;return h(c)?c.then(f):f(c)},setItem:function(e,r){var o;return null==(o=t())?void 0:o.setItem(e,JSON.stringify(r,null==n?void 0:n.replacer))},removeItem:function(n){var e;return null==(e=t())?void 0:e.removeItem(n)}};return"undefined"!=typeof window&&"function"==typeof window.addEventListener&&window.Storage&&(o.subscribe=function(n,e,r){if(!(t()instanceof window.Storage))return function(){};var o=function(o){if(o.storageArea===t()&&o.key===n){var i;try{i=JSON.parse(o.newValue||"")}catch(t){i=r}e(i)}};return window.addEventListener("storage",o),function(){window.removeEventListener("storage",o)}}),o}var y=p();var b=new WeakMap,w={state:"loading"};var g=function(t,n,e){return(n.has(e)?n:n.set(e,t())).get(e)},O=new WeakMap,k=function(){};t.RESET=e,t.atomFamily=function(t,n){var e=null,r=new Map,o=function o(a){var u;if(void 0===n)u=r.get(a);else for(var f,c=i(r);!(f=c()).done;){var l=f.value,s=l[0],v=l[1];if(n(s,a)){u=v;break}}if(void 0!==u){if(null==e||!e(u[1],a))return u[0];o.remove(a)}var d=t(a);return r.set(a,[d,Date.now()]),d};return o.remove=function(t){if(void 0===n)r.delete(t);else for(var e,o=i(r);!(e=o()).done;){var a=e.value[0];if(n(a,t)){r.delete(a);break}}},o.setShouldRemove=function(t){if(e=t)for(var n,o=i(r);!(n=o()).done;){var a=n.value,u=a[0],f=a[1];e(f[1],u)&&r.delete(u)}},o},t.atomWithDefault=function(t){var r=Symbol(),o=n.atom(r),i=n.atom((function(n,e){var i=n(o);return i!==r?i:t(n,e)}),(function(t,n,a){if(a===e)n(o,r);else if("function"==typeof a){var u=t(i);n(o,a(u))}else n(o,a)}));return i},t.atomWithLazy=function(t){var e=n.atom(void 0);return delete e.init,Object.defineProperty(e,"init",{get:function(){return t()}}),e},t.atomWithObservable=function(t,e){var r=function(t){if("e"in t)throw t.e;return t.d},o=n.atom((function(r){var o,i,a,u=t(r),f=null==(o=(i=u)[Symbol.observable])?void 0:o.call(i);f&&(u=f);var c,l,s,v,d=function(){return new Promise((function(t){a=t}))},m=e&&"initialValue"in e?{d:"function"==typeof e.initialValue?e.initialValue():e.initialValue}:d(),h=function(t){l=t,null==a||a(t),null==c||c(t)},p=function(){return!c},y=function(){s&&(clearTimeout(v),s.unsubscribe()),s=u.subscribe({next:function(t){return h({d:t})},error:function(t){return h({e:t})},complete:function(){}}),p()&&null!=e&&e.unstable_timeout&&(v=setTimeout((function(){s&&(s.unsubscribe(),s=void 0)}),e.unstable_timeout))};y();var b=n.atom(l||m);return b.onMount=function(t){return c=t,l&&t(l),s?clearTimeout(v):y(),function(){c=void 0,s&&(s.unsubscribe(),s=void 0)}},[b,u,d,y,p]}));return n.atom((function(t){var n=t(o),e=t(n[0]);return e instanceof Promise?e.then(r):r(e)}),(function(t,n,e){var r=t(o),i=r[0],a=r[1],u=r[2],f=r[3],c=r[4];if(!("next"in a))throw new Error("observable is not subject");c()&&(n(i,u()),f()),a.next(e)}))},t.atomWithReducer=function(t,e){return n.atom(t,(function(t,n,r){n(this,e(t(this),r))}))},t.atomWithRefresh=function(t,e){var r=n.atom(0);return n.atom((function(n,e){return n(r),t(n,e)}),(function(t,n){for(var o=arguments.length,i=new Array(o>2?o-2:0),a=2;a<o;a++)i[a-2]=arguments[a];if(0===i.length)n(r,(function(t){return t+1}));else if(e)return e.apply(void 0,[t,n].concat(i))}))},t.atomWithReset=function(t){var r=n.atom(t,(function(n,o,i){var a="function"==typeof i?i(n(r)):i;o(r,a===e?t:a)}));return r},t.atomWithStorage=function(t,r,o,i){void 0===o&&(o=y);var a=null==i?void 0:i.getOnInit,u=n.atom(a?o.getItem(t,r):r);return u.onMount=function(n){var e;return n(o.getItem(t,r)),o.subscribe&&(e=o.subscribe(t,n,r)),e},n.atom((function(t){return t(u)}),(function(n,i,a){var f="function"==typeof a?a(n(u)):a;return f===e?(i(u,r),o.removeItem(t)):f instanceof Promise?f.then((function(n){return i(u,n),o.setItem(t,n)})):(i(u,f),o.setItem(t,f))}))},t.createJSONStorage=p,t.freezeAtom=l,t.freezeAtomCreator=function(t){return function(){return l(t.apply(void 0,arguments))}},t.loadable=function(t){return e=function(){var e=new WeakMap,r=n.atom(0),o=n.atom((function(n,o){var i,a=o.setSelf;n(r);try{i=n(t)}catch(t){return{state:"hasError",error:t}}if(!(i instanceof Promise))return{state:"hasData",data:i};var u=i,f=e.get(u);if(f)return f;"fulfilled"===u.status?e.set(u,{state:"hasData",data:u.value}):"rejected"===u.status?e.set(u,{state:"hasError",error:u.reason}):u.then((function(t){e.set(u,{state:"hasData",data:t})}),(function(t){e.set(u,{state:"hasError",error:t})})).finally(a);var c=e.get(u);return c||(e.set(u,w),w)}),(function(t,n){n(r,(function(t){return t+1}))}));return n.atom((function(t){return t(o)}))},r=t,(b.has(r)?b:b.set(r,e())).get(r);var e,r},t.selectAtom=function(t,e,r){return void 0===r&&(r=Object.is),o=function(){var o=Symbol(),i=n.atom((function(n){var a=n(i);return function(t){var n=t[0],i=t[1];if(i===o)return e(n);var a=e(n,i);return r(i,a)?i:a}([n(t),a])}));return i.init=o,i},i=e,f=r,c=a((function(){return new WeakMap}),u,t),l=a((function(){return new WeakMap}),c,i),a(o,l,f);var o,i,f,c,l},t.splitAtom=function(t,e){return r=function(){var r=new WeakMap,o=function o(a,u){var f=r.get(a);if(f)return f;var c=u&&r.get(u),l=[],s=[];return a.forEach((function(r,u){var f=e?e(r):u;s[u]=f;var v=c&&c.atomList[c.keyList.indexOf(f)];if(v)l[u]=v;else{var d=function(n){var e=n(i),r=n(t),u=o(r,null==e?void 0:e.arr).keyList.indexOf(f);if(u<0||u>=r.length){var c=a[o(a).keyList.indexOf(f)];if(c)return c;throw new Error("splitAtom: index out of bounds for read")}return r[u]};l[u]=m(t)?n.atom(d,(function(n,e,r){var a=n(i),u=n(t),c=o(u,null==a?void 0:a.arr).keyList.indexOf(f);if(c<0||c>=u.length)throw new Error("splitAtom: index out of bounds for write");var l="function"==typeof r?r(u[c]):r;Object.is(u[c],l)||e(t,[].concat(u.slice(0,c),[l],u.slice(c+1)))})):n.atom(d)}})),f=c&&c.keyList.length===s.length&&c.keyList.every((function(t,n){return t===s[n]}))?c:{arr:a,atomList:l,keyList:s},r.set(a,f),f},i=n.atom((function(n){var e=n(i),r=n(t);return o(r,null==e?void 0:e.arr)}));i.init=void 0;var a=m(t)?n.atom((function(t){return t(i).atomList}),(function(n,e,r){switch(r.type){case"remove":var o=n(a).indexOf(r.atom);if(o>=0){var i=n(t);e(t,[].concat(i.slice(0,o),i.slice(o+1)))}break;case"insert":var u=r.before?n(a).indexOf(r.before):n(a).length;if(u>=0){var f=n(t);e(t,[].concat(f.slice(0,u),[r.value],f.slice(u)))}break;case"move":var c=n(a).indexOf(r.atom),l=r.before?n(a).indexOf(r.before):n(a).length;if(c>=0&&l>=0){var s=n(t);e(t,c<l?[].concat(s.slice(0,c),s.slice(c+1,l),[s[c]],s.slice(l)):[].concat(s.slice(0,l),[s[c]],s.slice(l,c),s.slice(c+1)))}}})):n.atom((function(t){return t(i).atomList}));return a},o=e||d,i=s((function(){return new WeakMap}),v,t),s(r,i,o);var r,o,i},t.unstable_withStorageValidator=function(t){return function(n){return r({},n,{getItem:function(e,r){var o=function(n){return t(n)?n:r},i=n.getItem(e,r);return h(i)?i.then(o):o(i)}})}},t.unwrap=function(t,e){return void 0===e&&(e=k),r=function(){var r=new WeakMap,o=new WeakMap,i=n.atom(0),a=n.atom((function(n,u){var f=u.setSelf;n(i);var c=n(a),l=n(t);if(!(l instanceof Promise))return{v:l};if(l!==(null==c?void 0:c.p)&&("fulfilled"===l.status?o.set(l,l.value):"rejected"===l.status?r.set(l,l.reason):l.then((function(t){return o.set(l,t)}),(function(t){return r.set(l,t)})).finally(f)),r.has(l))throw r.get(l);return o.has(l)?{p:l,v:o.get(l)}:c&&"v"in c?{p:l,f:e(c.v),v:c.v}:{p:l,f:e()}}),(function(t,n){n(i,(function(t){return t+1}))}));return a.init=void 0,n.atom((function(t){var n=t(a);return"f"in n?n.f:n.v}),(function(n,e){for(var r=arguments.length,o=new Array(r>2?r-2:0),i=2;i<r;i++)o[i-2]=arguments[i];return e.apply(void 0,[t].concat(o))}))},o=e,i=g((function(){return new WeakMap}),O,t),g(r,i,o);var r,o,i}}));

@@ -46,3 +46,3 @@ 'use strict';

if (it) return (it = it.call(o)).next.bind(it);
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike ) {
if (it) o = it;

@@ -275,3 +275,3 @@ var i = 0;

var atomState = getAtomState(atom);
if (!force && atomState) {
if (!(force != null && force(atom)) && atomState) {
if (mountedMap.has(atom)) {

@@ -286,3 +286,3 @@ return atomState;

}
var aState = readAtomState(a);
var aState = readAtomState(a, force);
return aState === s || isEqualAtomValue(aState, s);

@@ -308,3 +308,3 @@ })) {

}
var aState = readAtomState(a);
var aState = readAtomState(a, force);
nextDependencies.set(a, aState);

@@ -383,5 +383,8 @@ return returnAtomValue(aState);

var changedAtoms = new Set([atom]);
var isMarked = function isMarked(a) {
return markedAtoms.has(a);
};
for (var i = topsortedAtoms.length - 1; i >= 0; --i) {
var _a = topsortedAtoms[i];
var _prevAtomState = getAtomState(_a);
var a = topsortedAtoms[i];
var _prevAtomState = getAtomState(a);
if (!_prevAtomState) {

@@ -393,3 +396,3 @@ continue;

var dep = _step2.value;
if (dep !== _a && changedAtoms.has(dep)) {
if (dep !== a && changedAtoms.has(dep)) {
hasChangedDeps = true;

@@ -400,7 +403,9 @@ break;

if (hasChangedDeps) {
var nextAtomState = readAtomState(_a, true);
var nextAtomState = readAtomState(a, isMarked);
addPendingDependent(a, nextAtomState);
if (!isEqualAtomValue(_prevAtomState, nextAtomState)) {
changedAtoms.add(_a);
changedAtoms.add(a);
}
}
markedAtoms.delete(a);
}

@@ -671,7 +676,7 @@ };

var _step3$value = _step3.value,
_atom = _step3$value[0],
atom = _step3$value[0],
valueOrPromise = _step3$value[1];
if (hasInitialValue(_atom)) {
setAtomValueOrPromise(_atom, valueOrPromise);
recomputeDependents(_atom);
if (hasInitialValue(atom)) {
setAtomValueOrPromise(atom, valueOrPromise);
recomputeDependents(atom);
}

@@ -678,0 +683,0 @@ }

@@ -69,4 +69,2 @@ import type { Atom, WritableAtom } from './atom';

type Store = PrdStore & Partial<DevStoreRev2>;
export type INTERNAL_DevStoreRev2 = DevStoreRev2;
export type INTERNAL_PrdStore = PrdStore;
/**

@@ -73,0 +71,0 @@ * Create a new store. Each store is an independent, isolated universe of atom

@@ -18,2 +18,4 @@ import type { Atom, WritableAtom } from './atom';

readonly d: Set<AnyAtom>;
/** Set of mounted atoms that depends on the atom. */
readonly t: Set<AnyAtom>;
/** Function to run when the atom is unmounted. */

@@ -29,19 +31,19 @@ u?: OnUnmount;

* Map of atoms that the atom depends on.
* The map value is value/error of the dependency.
* The map value is the epoch number of the dependency.
*/
readonly d: Map<AnyAtom, {
readonly v: AnyValue;
} | {
readonly e: AnyError;
}>;
/** Set of atoms that depends on the atom. */
readonly t: Set<AnyAtom>;
readonly d: Map<AnyAtom, number>;
/**
* Set of atoms with pending promise that depend on the atom.
*
* This may cause memory leaks, but it's for the capability to continue promises
*/
readonly p: Set<AnyAtom>;
/** The epoch number of the atom. */
n: number;
/** Object to store mounted state of the atom. */
m?: Mounted;
/** Atom value, atom error or empty. */
s?: {
readonly v: Value;
} | {
readonly e: AnyError;
};
/** Atom value */
v?: Value;
/** Atom error */
e?: AnyError;
};

@@ -51,2 +53,3 @@ type DevStoreRev4 = {

dev4_override_method: <K extends keyof PrdStore>(key: K, fn: PrdStore[K]) => void;
dev4_restore_atoms: (values: Iterable<readonly [AnyAtom, AnyValue]>) => void;
};

@@ -53,0 +56,0 @@ type PrdStore = {

@@ -51,3 +51,3 @@ 'use strict';

if (it) return (it = it.call(o)).next.bind(it);
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike ) {
if (it) o = it;

@@ -448,9 +448,9 @@ var i = 0;

if (e.storageArea === getStringStorage() && e.key === key) {
var _newValue;
var newValue;
try {
_newValue = JSON.parse(e.newValue || '');
newValue = JSON.parse(e.newValue || '');
} catch (_unused2) {
_newValue = initialValue;
newValue = initialValue;
}
callback(_newValue);
callback(newValue);
}

@@ -457,0 +457,0 @@ };

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc