redux-form
Version:
A higher order component decorator for forms using Redux and React
37 lines (31 loc) • 1.06 kB
JavaScript
import _toPath from 'lodash-es/toPath';
var createDeleteInWithCleanUp = function createDeleteInWithCleanUp(_ref) {
var deepEqual = _ref.deepEqual;
var empty = _ref.empty;
var getIn = _ref.getIn;
var deleteIn = _ref.deleteIn;
var setIn = _ref.setIn;
var deleteInWithCleanUp = function deleteInWithCleanUp(state, path) {
if (path[path.length - 1] === ']') {
// array path
var pathTokens = _toPath(path);
pathTokens.pop();
var parent = getIn(state, pathTokens.join('.'));
return parent ? setIn(state, path, undefined) : state;
}
var result = deleteIn(state, path);
var dotIndex = path.lastIndexOf('.');
if (dotIndex > 0) {
var parentPath = path.substring(0, dotIndex);
if (parentPath[parentPath.length - 1] !== ']') {
var _parent = getIn(result, parentPath);
if (deepEqual(_parent, empty)) {
return deleteInWithCleanUp(result, parentPath);
}
}
}
return result;
};
return deleteInWithCleanUp;
};
export default createDeleteInWithCleanUp;