UNPKG

1.71 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5exports.__esModule = true;
6exports["default"] = void 0;
7
8var _toPath2 = _interopRequireDefault(require("lodash/toPath"));
9
10function createDeleteInWithCleanUp(structure) {
11 var shouldDeleteDefault = function shouldDeleteDefault(structure) {
12 return function (state, path) {
13 return structure.getIn(state, path) !== undefined;
14 };
15 };
16
17 var deepEqual = structure.deepEqual,
18 empty = structure.empty,
19 getIn = structure.getIn,
20 deleteIn = structure.deleteIn,
21 setIn = structure.setIn;
22 return function (shouldDelete) {
23 if (shouldDelete === void 0) {
24 shouldDelete = shouldDeleteDefault;
25 }
26
27 var deleteInWithCleanUp = function deleteInWithCleanUp(state, path) {
28 if (path[path.length - 1] === ']') {
29 // array path
30 var pathTokens = (0, _toPath2["default"])(path);
31 pathTokens.pop();
32 var parent = getIn(state, pathTokens.join('.'));
33 return parent ? setIn(state, path) : state;
34 }
35
36 var result = state;
37
38 if (shouldDelete(structure)(state, path)) {
39 result = deleteIn(state, path);
40 }
41
42 var dotIndex = path.lastIndexOf('.');
43
44 if (dotIndex > 0) {
45 var parentPath = path.substring(0, dotIndex);
46
47 if (parentPath[parentPath.length - 1] !== ']') {
48 var _parent = getIn(result, parentPath);
49
50 if (deepEqual(_parent, empty)) {
51 return deleteInWithCleanUp(result, parentPath);
52 }
53 }
54 }
55
56 return result;
57 };
58
59 return deleteInWithCleanUp;
60 };
61}
62
63var _default = createDeleteInWithCleanUp;
64exports["default"] = _default;
\No newline at end of file