UNPKG

@bemedev/app-react

Version:
24 lines (20 loc) 940 B
'use strict'; var useSyncExternalStoreWithSelector = require('@bemedev/react-sync'); var types = require('@bemedev/types'); var dequal = require('dequal'); var react = require('react'); var utils_getSnapshot = require('./utils/getSnapshot.cjs'); const useSelector = (service, selector, compare = dequal.dequal) => { const initialStateCacheRef = react.useRef(types.t.any(undefined)); const subscribe = react.useCallback((listerner) => { const unsubscribe = service.subscribe(listerner); return unsubscribe; }, [service]); const boundGetSnapshot = react.useCallback(() => { return utils_getSnapshot.getSnapshot(service, initialStateCacheRef); }, [service]); const selectedSnapshot = useSyncExternalStoreWithSelector(subscribe, boundGetSnapshot, boundGetSnapshot, selector, compare); return selectedSnapshot; }; exports.useSelector = useSelector; //# sourceMappingURL=useSelector.cjs.map