nrgy
Version:
The library for reactive programming using efficient computing and MVC/MVVM patterns
49 lines (38 loc) • 1.4 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true});
var _chunkDUWWIS26cjs = require('./chunk-DUWWIS26.cjs');
var _chunk4OYRW4HCcjs = require('./chunk-4OYRW4HC.cjs');
// src/react/useAtom.ts
var _react = require('react');
function useAtom(source) {
const [value, setValue] = _react.useState.call(void 0, source);
_react.useEffect.call(void 0, () => {
const subscription = _chunk4OYRW4HCcjs.effect.call(void 0, source, (value2) => setValue(value2));
return subscription.destroy;
}, [source]);
return value;
}
// src/react/useAtoms.ts
var EMPTY_ATOMS_SOURCES = {};
var EMPTY_ATOMS_RESULTS = {};
var useAtoms = function(sources) {
const sourcesArg = sources != null ? sources : EMPTY_ATOMS_SOURCES;
const $result = _react.useMemo.call(void 0, () => createComputedAtoms(sourcesArg), [sourcesArg]);
return useAtom($result);
};
function createComputedAtoms(sources) {
if (sources === EMPTY_ATOMS_SOURCES) {
return _chunk4OYRW4HCcjs.compute.call(void 0, () => EMPTY_ATOMS_RESULTS);
}
return _chunk4OYRW4HCcjs.compute.call(void 0,
() => {
const sourceAtoms = sources;
const result = {};
for (const key of Object.keys(sourceAtoms)) {
result[key] = sourceAtoms[key]();
}
return result;
},
{ equal: _chunkDUWWIS26cjs.objectEquals }
);
}
exports.useAtom = useAtom; exports.useAtoms = useAtoms;