UNPKG

redux-store-templates

Version:

Set of helpers to create useful and commonly used redux store patterns

87 lines (71 loc) 2.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createSelector = exports.createReducer = void 0; var _internals = require("../.internals"); var createReducer = function createReducer() { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, _ref$initial = _ref.initial, initial = _ref$initial === void 0 ? false : _ref$initial, toggleOn = _ref.toggleOn, makeTrueOn = _ref.makeTrueOn, makeFalseOn = _ref.makeFalseOn, setOn = _ref.setOn, resetOn = _ref.resetOn; var resetState = initial; var handleAction = Object.create(null); if (toggleOn) { (0, _internals.readAsArray)(toggleOn).forEach(function (opt) { handleAction[opt.type] = function (state) { return !state; }; }); } if (makeTrueOn) { (0, _internals.readAsArray)(makeTrueOn).forEach(function (opt) { handleAction[opt.type] = function () { return true; }; }); } if (makeFalseOn) { (0, _internals.readAsArray)(makeFalseOn).forEach(function (opt) { handleAction[opt.type] = function () { return false; }; }); } if (setOn) { (0, _internals.readAsArray)(setOn).forEach(function (opt) { var readActionPayload = (0, _internals.createPathReader)(opt.payloadPath); handleAction[opt.type] = function (state, action) { var value = readActionPayload(action); if (typeof value != 'boolean') { (0, _internals.warn)("toggle: setOn: action \"".concat(opt.type, "\" should have property ").concat(opt.payloadPath)); } return !!value; }; }); } if (resetOn) { (0, _internals.readAsArray)(resetOn).forEach(function (opt) { handleAction[opt.type] = function () { return resetState; }; }); } return function () { var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initial; var action = arguments.length > 1 ? arguments[1] : undefined; return handleAction[action.type] ? handleAction[action.type](state, action) : state; }; }; exports.createReducer = createReducer; var createSelector = function createSelector(_ref2) { var selector = _ref2.selector; return function (state) { return selector(state); }; }; exports.createSelector = createSelector;