react-obsidian
Version:
Dependency injection framework for React and React Native applications
24 lines • 1.08 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.useObservers = void 0;
const react_1 = require("react");
const MediatorObservable_1 = require("./mediator/MediatorObservable");
const mapObservablesToValues_1 = require("./mapObservablesToValues");
function useObservers(observables) {
const [values, setValues] = (0, react_1.useState)(() => (0, mapObservablesToValues_1.mapObservablesToValues)(observables));
(0, react_1.useEffect)(() => {
const mediator = new MediatorObservable_1.MediatorObservable();
const unsubscribers = [];
Object.keys(observables).forEach((key) => {
const onNext = (value) => setValues({ ...values, [key]: value });
mediator.addSource(observables[key], onNext);
unsubscribers.push(() => {
observables[key].unsubscribe(onNext);
});
});
return () => unsubscribers.forEach((unsubscribe) => unsubscribe());
}, []);
return values;
}
exports.useObservers = useObservers;
//# sourceMappingURL=useObservers.js.map
;