UNPKG

nrgy

Version:

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

70 lines (55 loc) 2.32 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-DUWWIS26.cjs'); var _chunk4OYRW4HCcjs = require('./chunk-4OYRW4HC.cjs'); // src/rxjs-react/useObservable.ts var _rxjs = require('rxjs'); // src/rxjs-react/useSelector.ts var _react = require('react'); function useSelector(source$, initialValue, selector, comparator = _chunk4OYRW4HCcjs.defaultEquals) { const [value, setValue] = _react.useState.call(void 0, () => selector(initialValue)); _react.useEffect.call(void 0, () => { const subscription = source$.subscribe((state) => { const value2 = selector(state); setValue( (prevValue) => comparator(value2, prevValue) ? prevValue : value2 ); }); return () => subscription.unsubscribe(); }, [comparator, selector, source$]); return value; } // src/rxjs-react/useObservable.ts function useObservable(source$, initialValue, comparator) { return useSelector(source$, initialValue, _rxjs.identity, comparator); } // src/rxjs-react/useObserver.ts // src/rxjs-react/useIsomorphicLayoutEffect.ts var IS_BROWSER = typeof window !== "undefined"; var useIsomorphicLayoutEffect = IS_BROWSER ? _react.useLayoutEffect : ( /* istanbul ignore next: both are not called on server */ _react.useEffect ); // src/rxjs-react/useObserver.ts function useObserver(source$, observerOrNext) { const argsRef = _react.useRef.call(void 0, ); useIsomorphicLayoutEffect(() => { argsRef.current = typeof observerOrNext === "function" ? { next: observerOrNext } : observerOrNext; }); _react.useEffect.call(void 0, () => { const subscription = source$.subscribe({ next: (value) => { var _a, _b; return (_b = (_a = argsRef.current) == null ? void 0 : _a.next) == null ? void 0 : _b.call(_a, value); }, error: (error) => { var _a, _b; return (_b = (_a = argsRef.current) == null ? void 0 : _a.error) == null ? void 0 : _b.call(_a, error); }, complete: () => { var _a, _b; return (_b = (_a = argsRef.current) == null ? void 0 : _a.complete) == null ? void 0 : _b.call(_a); } }); return () => subscription.unsubscribe(); }, [source$]); } exports.useObservable = useObservable; exports.useObserver = useObserver; exports.useSelector = useSelector;