UNPKG

redux-store-templates

Version:

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

99 lines (81 loc) 2.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createSelector = exports.createReducer = void 0; var _internals = require("../.internals"); var add = function add(state, delta) { return typeof delta === "number" ? state + delta : state; }; var createReducer = function createReducer() { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, _ref$initial = _ref.initial, initial = _ref$initial === void 0 ? 0 : _ref$initial, incrementOn = _ref.incrementOn, decrementOn = _ref.decrementOn, incrementByOn = _ref.incrementByOn, decrementByOn = _ref.decrementByOn, setOn = _ref.setOn, resetOn = _ref.resetOn; var resetState = 0; var handleAction = Object.create(null); if (incrementOn) { (0, _internals.readAsArray)(incrementOn).forEach(function (opt) { handleAction[opt.type] = function (state) { return add(state, 1); }; }); } if (decrementOn) { (0, _internals.readAsArray)(decrementOn).forEach(function (opt) { handleAction[opt.type] = function (state) { return add(state, -1); }; }); } if (incrementByOn) { (0, _internals.readAsArray)(incrementByOn).forEach(function (opt) { var readActionPayload = (0, _internals.createPathReader)(opt.payloadPath); handleAction[opt.type] = function (state, action) { return add(state, readActionPayload(action)); }; }); } if (decrementByOn) { (0, _internals.readAsArray)(decrementByOn).forEach(function (opt) { var readActionPayload = (0, _internals.createPathReader)(opt.payloadPath); handleAction[opt.type] = function (state, action) { return add(state, -readActionPayload(action)); }; }); } if (setOn) { (0, _internals.readAsArray)(setOn).forEach(function (opt) { var readActionPayload = (0, _internals.createPathReader)(opt.payloadPath); handleAction[opt.type] = function (state, action) { var val = readActionPayload(action); return val; }; }); } 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;