UNPKG

3 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _pick2 = require('lodash/pick');
8
9var _pick3 = _interopRequireDefault(_pick2);
10
11var _omit2 = require('lodash/omit');
12
13var _omit3 = _interopRequireDefault(_omit2);
14
15var _findIndex3 = require('lodash/findIndex');
16
17var _findIndex4 = _interopRequireDefault(_findIndex3);
18
19var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
20
21function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
23function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
24
25var moveTreeRows = function moveTreeRows() {
26 var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
27 operation = _ref.operation,
28 _ref$retain = _ref.retain,
29 retain = _ref$retain === undefined ? [] : _ref$retain,
30 _ref$idField = _ref.idField,
31 idField = _ref$idField === undefined ? 'id' : _ref$idField,
32 _ref$parentField = _ref.parentField,
33 parentField = _ref$parentField === undefined ? 'parent' : _ref$parentField;
34
35 if (!operation) {
36 throw new Error('tree.moveRows - Missing operation!');
37 }
38
39 return function (rows) {
40 var movedRows = operation(rows);
41 var cancelMoving = false;
42
43 if (movedRows) {
44 // Walk through the old row definition, patch parent relations and fields
45 // of the new one
46 movedRows = rows.map(function (row, i) {
47 var _extends3;
48
49 if (typeof row[parentField] === 'undefined' || row[parentField] === null) {
50 var _extends2;
51
52 return _extends({}, (0, _omit3.default)(movedRows[i], retain), (0, _pick3.default)(row, retain), (_extends2 = {}, _defineProperty(_extends2, idField, movedRows[i][idField]), _defineProperty(_extends2, parentField, undefined), _extends2));
53 }
54
55 // Find the index of the old parent
56 var index = (0, _findIndex4.default)(rows, _defineProperty({}, idField, row[parentField]));
57
58 if (index < 0) {
59 console.warn( // eslint-disable-line no-console
60 'tree.moveRows - Failed to find the old parent', rows, row, idField, parentField);
61
62 cancelMoving = true;
63
64 return null;
65 }
66
67 // Figure out the new id based on that index
68 var id = movedRows[index][idField];
69
70 return _extends({}, (0, _omit3.default)(movedRows[i], retain), (0, _pick3.default)(row, retain), (_extends3 = {}, _defineProperty(_extends3, idField, movedRows[i][idField]), _defineProperty(_extends3, parentField, id), _extends3));
71 });
72 }
73
74 if (cancelMoving) {
75 return rows;
76 }
77
78 return movedRows;
79 };
80};
81
82exports.default = moveTreeRows;
\No newline at end of file