UNPKG

@dhmk/atom

Version:

Lightweight mobx-like observable values, computed values and side-effects

35 lines (34 loc) 918 B
import { runtime } from "./runtime"; export var removeAtom = function (a, self) { a.observers.delete(self); if (!a.observers.size) a.dispose(); }; export function useAtom(a) { var self = runtime.currentAtom; if (!self) return; if (a.runId === self.runId) return; a.runId = self.runId; if (self.prevDepsIndex < self.prevDeps.length && a === self.prevDeps[self.prevDepsIndex]) { self.prevDepsIndex++; self.isObserved ? self.deps.push(a) : self.depsForUnobserved.add(a); return; } if (!self.isObserved) { self.depsForUnobserved.add(a); return; } var cid = a.observers.get(self); if (cid !== self.runId) { a.observers.set(self, self.runId); self.deps.push(a); } } export function reportError(e) { return function () { throw e; }; }