redux-modules
Version:
A library for defining clear, boilerplate free Redux reducers.
35 lines (28 loc) • 1.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var registerModule = function registerModule(store, combineReducers, staticReducers) {
var registeredModules = _extends({}, staticReducers);
var moduleIsUnregistered = function moduleIsUnregistered(_ref) {
var name = _ref.name;
return !registeredModules.hasOwnProperty(name);
};
store.replaceReducer(combineReducers(registeredModules));
return function (modules) {
var unregisteredModules = modules.filter(moduleIsUnregistered);
if (unregisteredModules.length === 0) {
return;
}
for (var i = 0; i < unregisteredModules.length; ++i) {
var _unregisteredModules$ = unregisteredModules[i],
name = _unregisteredModules$.name,
_reducer = _unregisteredModules$.reducer;
registeredModules[name] = _reducer;
}
var reducer = combineReducers(registeredModules);
store.replaceReducer(reducer);
};
};
exports.default = registerModule;