UNPKG

redux-modules

Version:

A library for defining clear, boilerplate free Redux reducers.

65 lines (47 loc) 1.69 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _mapValues2 = require('lodash/mapValues'); var _mapValues3 = _interopRequireDefault(_mapValues2); var _get2 = require('lodash/get'); var _get3 = _interopRequireDefault(_get2); exports.default = connectModule; var _connectModules = require('./connectModules'); var _connectModules2 = _interopRequireDefault(_connectModules); var _toObject = require('../utils/toObject'); var _toObject2 = _interopRequireDefault(_toObject); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function getSelector(module) { return (0, _get3.default)(module, 'selector', function () { return Object.create(null); }); } function createModuleSelector(modules) { if (!Array.isArray(modules)) { return getSelector(modules); } if (modules.length === 1) { return getSelector(modules[0]); } var selectorMap = (0, _toObject2.default)(modules, 'name', getSelector); return function moduleSelector(state, props) { return (0, _mapValues3.default)(selectorMap, function (selector) { return selector(state, props); }); }; } function connectModule() { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } if (args.length === 1) { var _module = args[0]; var formattedSelector = createModuleSelector(_module); return connectModule(formattedSelector, _module); } var selector = args[0], module = args[1]; var formattedModules = Array.isArray(module) ? module : [module]; return (0, _connectModules2.default)(selector, formattedModules); }