redux-form
Version:
A higher order component decorator for forms using Redux and React
49 lines (35 loc) • 1.27 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports["default"] = void 0;
var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _toPath2 = _interopRequireDefault(require("lodash/toPath"));
var setInWithPath = function setInWithPath(state, value, path, pathIndex) {
var _extends2;
if (pathIndex >= path.length) {
return value;
}
var first = path[pathIndex];
var firstState = state && (Array.isArray(state) ? state[Number(first)] : state[first]);
var next = setInWithPath(firstState, value, path, pathIndex + 1);
if (!state) {
if (isNaN(first)) {
var _ref;
return _ref = {}, _ref[first] = next, _ref;
}
var initialized = [];
initialized[parseInt(first, 10)] = next;
return initialized;
}
if (Array.isArray(state)) {
var copy = [].concat(state);
copy[parseInt(first, 10)] = next;
return copy;
}
return (0, _extends3["default"])({}, state, (_extends2 = {}, _extends2[first] = next, _extends2));
};
var setIn = function setIn(state, field, value) {
return setInWithPath(state, value, (0, _toPath2["default"])(field), 0);
};
var _default = setIn;
exports["default"] = _default;