redux-store-templates
Version:
Set of helpers to create useful and commonly used redux store patterns
54 lines (43 loc) • 1.51 kB
JavaScript
;
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 ? "" : _ref$initial,
setOn = _ref.setOn,
resetOn = _ref.resetOn;
var resetState = initial;
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 readActionPayload(action);
};
});
}
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;