recoil-toolkit
Version:
37 lines • 1.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.reduxSelector = exports.reduxState = void 0;
var recoil_1 = require("recoil");
var _core_1 = require("../_core");
var reduxSelectorsMap = new Map();
var reduxSelectorsMapInv = new Map();
function getSelectorId(selectorFunc) {
var cachedSelectorId = reduxSelectorsMapInv.get(selectorFunc);
if (!cachedSelectorId) {
var id = (0, _core_1.uniqueId)();
reduxSelectorsMapInv.set(selectorFunc, id);
reduxSelectorsMap.set(id, selectorFunc);
cachedSelectorId = id;
}
return cachedSelectorId;
}
exports.reduxState = (0, recoil_1.atom)({
key: '@recoil-toolkit.reduxState',
default: undefined,
});
var reduxSelectorFamily = (0, recoil_1.selectorFamily)({
key: '@recoil-toolkit.reduxSelectors',
get: function (selectorId) {
return function (_a) {
var get = _a.get;
var currentReduxState = get(exports.reduxState);
var selectorFunc = reduxSelectorsMap.get(selectorId);
return currentReduxState && selectorFunc ? selectorFunc(currentReduxState) : undefined;
};
},
});
function reduxSelector(selector) {
return reduxSelectorFamily(getSelectorId(selector));
}
exports.reduxSelector = reduxSelector;
//# sourceMappingURL=atoms.js.map