@actualwave/redux-create-reducer
Version:
Function that combines reducers and calls them when action of same name received
52 lines (38 loc) • 1.1 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
function baseStateCreator() {
return {};
}
function createReducerFromActionHandlers(actionHandlers, initialStateCreator) {
if (initialStateCreator === undefined) {
initialStateCreator = baseStateCreator;
}
return function(state, action) {
if (state === undefined) {
state = initialStateCreator();
}
const reducer = actionHandlers[action.type];
if (reducer) {
return reducer(state, action);
}
return state;
};
}
function createReducer(exports) {
const reducer = createReducerFromActionHandlers(exports, exports.default);
return function(state, action) {
if (action.type === 'default') {
return state;
}
return reducer(state, action);
};
}
function createReducers(exportsMap) {
return Object.keys(exportsMap).reduce(function(reducers, key) {
reducers[key] = createReducer(exportsMap[key]);
return reducers;
}, {});
}
exports.createReducer = createReducer;
exports.createReducers = createReducers;
exports.default = createReducer;