UNPKG

redux-store-templates

Version:

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

68 lines (55 loc) 2.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 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 ? [] : _ref$initial, setOn = _ref.setOn, addOn = _ref.addOn, removeOn = _ref.removeOn, emptyOn = _ref.emptyOn; var defaultState = initial; var emptyState = []; var handleAction = Object.create(null); if (setOn) { (0, _internals.readAsArray)(setOn).forEach(function (opt) { var readActionPayload = (0, _internals.createPathReader)(opt.payloadPath); handleAction[opt.type] = function (state, action) { return (0, _internals.applyAddIds)([], readActionPayload(action)); }; }); } if (addOn) { (0, _internals.readAsArray)(addOn).forEach(function (opt) { var readActionPayload = (0, _internals.createPathReader)(opt.payloadPath); handleAction[opt.type] = function (state, action) { return (0, _internals.applyAddIds)(state, readActionPayload(action)); }; }); } if (removeOn) { (0, _internals.readAsArray)(removeOn).forEach(function (opt) { var readActionPayload = (0, _internals.createPathReader)(opt.payloadPath); handleAction[opt.type] = function (state, action) { return (0, _internals.applyRemoveIds)(state, readActionPayload(action)); }; }); } if (emptyOn) { (0, _internals.readAsArray)(emptyOn).forEach(function (opt) { handleAction[opt.type] = function () { return emptyState; }; }); } return function () { var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState; var action = arguments.length > 1 ? arguments[1] : undefined; return handleAction[action.type] ? handleAction[action.type](state, action) : state; }; }; exports.createReducer = createReducer;