UNPKG

nrgy

Version:

The library for reactive programming using efficient computing and MVC/MVVM patterns

49 lines (46 loc) 1.17 kB
import { objectEquals } from "./chunk-JYWBIFMU.js"; import { compute, effect } from "./chunk-6EESSQRU.js"; // src/react/useAtom.ts import { useEffect, useState } from "react"; function useAtom(source) { const [value, setValue] = useState(source); useEffect(() => { const subscription = effect(source, (value2) => setValue(value2)); return subscription.destroy; }, [source]); return value; } // src/react/useAtoms.ts import { useMemo } from "react"; var EMPTY_ATOMS_SOURCES = {}; var EMPTY_ATOMS_RESULTS = {}; var useAtoms = function(sources) { const sourcesArg = sources != null ? sources : EMPTY_ATOMS_SOURCES; const $result = useMemo(() => createComputedAtoms(sourcesArg), [sourcesArg]); return useAtom($result); }; function createComputedAtoms(sources) { if (sources === EMPTY_ATOMS_SOURCES) { return compute(() => EMPTY_ATOMS_RESULTS); } return compute( () => { const sourceAtoms = sources; const result = {}; for (const key of Object.keys(sourceAtoms)) { result[key] = sourceAtoms[key](); } return result; }, { equal: objectEquals } ); } export { useAtom, useAtoms };