1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | exports.__esModule = true;
|
6 | exports["default"] = void 0;
|
7 |
|
8 | var _toPath2 = _interopRequireDefault(require("lodash/toPath"));
|
9 |
|
10 | function 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 |
|
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 |
|
63 | var _default = createDeleteInWithCleanUp;
|
64 | exports["default"] = _default; |
\ | No newline at end of file |