feature-redux
Version:
feature-u redux integration
47 lines (33 loc) • 1.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = slicedReducer;
var _verify = require('./util/verify');
var _verify2 = _interopRequireDefault(_verify);
var _lodash = require('lodash.isstring');
var _lodash2 = _interopRequireDefault(_lodash);
var _lodash3 = require('lodash.isfunction');
var _lodash4 = _interopRequireDefault(_lodash3);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// NOTE: See README for complete description
function slicedReducer(slice, reducer) {
// validate parameters
var check = _verify2.default.prefix('slicedReducer() parameter violation: ');
check(slice, 'slice is required');
check((0, _lodash2.default)(slice), 'slice must be a string');
check(reducer, 'reducer is required');
check((0, _lodash4.default)(reducer), 'reducer must be a function');
// auto generate a standard selector for our sliced state
var nodeNames = slice.split('.');
function getSlicedState(appState) {
// console.log(`xx in selector getSlicedState(): `, {nodeNames, appState});
return nodeNames.reduce(function (runningNode, nodeName) {
return runningNode[nodeName];
}, appState);
}
// embellish/return the supplied reducer
reducer.slice = slice;
reducer.getSlicedState = getSlicedState;
return reducer;
}