redux-form
Version:
A higher order component decorator for forms using Redux and React
43 lines (33 loc) • 1.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _invariant = require('invariant');
var _invariant2 = _interopRequireDefault(_invariant);
var _plain = require('./structure/plain');
var _plain2 = _interopRequireDefault(_plain);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var createFormValueSelector = function createFormValueSelector(_ref) {
var getIn = _ref.getIn;
return function (form) {
var getFormState = arguments.length <= 1 || arguments[1] === undefined ? function (state) {
return getIn(state, 'form');
} : arguments[1];
(0, _invariant2.default)(form, 'Form value must be specified');
return function (state) {
for (var _len = arguments.length, fields = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
fields[_key - 1] = arguments[_key];
}
(0, _invariant2.default)(fields.length, 'No fields specified');
return fields.length === 1 ?
// only selecting one field, so return its value
getIn(getFormState(state), form + '.values.' + fields[0]) :
// selecting many fields, so return an object of field values
fields.reduce(function (accumulator, field) {
var value = getIn(getFormState(state), form + '.values.' + field);
return value === undefined ? accumulator : _plain2.default.setIn(accumulator, field, value);
}, {});
};
};
};
exports.default = createFormValueSelector;