UNPKG

recoil-toolkit

Version:
30 lines 1.08 kB
import { atom, selectorFamily } from 'recoil'; import { uniqueId } from '../_core'; const reduxSelectorsMap = new Map(); const reduxSelectorsMapInv = new Map(); function getSelectorId(selectorFunc) { let cachedSelectorId = reduxSelectorsMapInv.get(selectorFunc); if (!cachedSelectorId) { const id = uniqueId(); reduxSelectorsMapInv.set(selectorFunc, id); reduxSelectorsMap.set(id, selectorFunc); cachedSelectorId = id; } return cachedSelectorId; } export const reduxState = atom({ key: '@recoil-toolkit.reduxState', default: undefined, }); const reduxSelectorFamily = selectorFamily({ key: '@recoil-toolkit.reduxSelectors', get: (selectorId) => ({ get }) => { const currentReduxState = get(reduxState); const selectorFunc = reduxSelectorsMap.get(selectorId); return currentReduxState && selectorFunc ? selectorFunc(currentReduxState) : undefined; }, }); export function reduxSelector(selector) { return reduxSelectorFamily(getSelectorId(selector)); } //# sourceMappingURL=atoms.js.map