redux-store-templates
Version:
Set of helpers to create useful and commonly used redux store patterns
99 lines (81 loc) • 2.8 kB
JavaScript
;
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;