UNPKG

fluidstate-alien

Version:

Alien Signals-based reactive layer for fluidstate

65 lines (64 loc) 1.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getReactiveLayer = void 0; var _alienSignals = require("./alien-signals"); /** * Returns a `ReactiveLayer` implementation backed by the Alien Signals library. * This function provides the bridge between `fluidstate`'s abstract reactivity * API and Alien Signals's reactivity implementation. */ const getReactiveLayer = () => ({ createAtom: (name, options) => { const alienAtom = (0, _alienSignals.atom)(options); const result = { name, reportChanged: _alienSignals.reportChanged.bind(alienAtom), reportObserved: _alienSignals.reportObserved.bind(alienAtom) }; return result; }, createComputedAtom: (name, calculate, options) => { const get = (0, _alienSignals.computed)(calculate, options); const result = { name, get }; return result; }, createReaction: (fn, options) => { const stopEffect = (0, _alienSignals.effect)(fn, options); const result = { stop: stopEffect }; return result; }, untrack: action => { const prevActiveSub = (0, _alienSignals.getCurrentSub)(); (0, _alienSignals.setCurrentSub)(undefined); try { return action(); } finally { (0, _alienSignals.setCurrentSub)(prevActiveSub); } }, runTransaction: transaction => { (0, _alienSignals.startBatch)(); try { return transaction(); } finally { (0, _alienSignals.endBatch)(); } }, runAction: action => { (0, _alienSignals.startBatch)(); try { return action(); } finally { (0, _alienSignals.endBatch)(); } } }); exports.getReactiveLayer = getReactiveLayer; //# sourceMappingURL=reactive-layer.js.map