tree-element 0.1.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/README.md +43 -31
  2. package/lib/animation.d.ts +2 -2
  3. package/lib/animation.d.ts.map +1 -1
  4. package/lib/animation.js +16 -12
  5. package/lib/animation.js.map +1 -1
  6. package/lib/classNames.d.ts.map +1 -1
  7. package/lib/classNames.js +2 -2
  8. package/lib/classNames.js.map +1 -1
  9. package/lib/dataLoader.d.ts +1 -0
  10. package/lib/dataLoader.d.ts.map +1 -1
  11. package/lib/dataLoader.js +22 -20
  12. package/lib/dataLoader.js.map +1 -1
  13. package/lib/dragAndDropHandler/binarySearch.js +3 -3
  14. package/lib/dragAndDropHandler/binarySearch.js.map +1 -1
  15. package/lib/dragAndDropHandler/dragElement.d.ts.map +1 -1
  16. package/lib/dragAndDropHandler/dragElement.js +11 -13
  17. package/lib/dragAndDropHandler/dragElement.js.map +1 -1
  18. package/lib/dragAndDropHandler/generateHitAreas.d.ts.map +1 -1
  19. package/lib/dragAndDropHandler/generateHitAreas.js +25 -25
  20. package/lib/dragAndDropHandler/generateHitAreas.js.map +1 -1
  21. package/lib/dragAndDropHandler/index.d.ts.map +1 -1
  22. package/lib/dragAndDropHandler/index.js +125 -158
  23. package/lib/dragAndDropHandler/index.js.map +1 -1
  24. package/lib/dragAndDropHandler/iterateVisibleNodes.d.ts.map +1 -1
  25. package/lib/dragAndDropHandler/iterateVisibleNodes.js +23 -22
  26. package/lib/dragAndDropHandler/iterateVisibleNodes.js.map +1 -1
  27. package/lib/dragAndDropHandler/types.d.ts.map +1 -1
  28. package/lib/elementsRenderer.d.ts +20 -7
  29. package/lib/elementsRenderer.d.ts.map +1 -1
  30. package/lib/elementsRenderer.js +195 -136
  31. package/lib/elementsRenderer.js.map +1 -1
  32. package/lib/events.d.ts +44 -11
  33. package/lib/events.d.ts.map +1 -1
  34. package/lib/index.d.ts +36 -13
  35. package/lib/index.d.ts.map +1 -1
  36. package/lib/index.js +386 -349
  37. package/lib/index.js.map +1 -1
  38. package/lib/keyHandler.d.ts +13 -8
  39. package/lib/keyHandler.d.ts.map +1 -1
  40. package/lib/keyHandler.js +106 -51
  41. package/lib/keyHandler.js.map +1 -1
  42. package/lib/methodTypes.d.ts +3 -3
  43. package/lib/methodTypes.d.ts.map +1 -1
  44. package/lib/mouseHandler.d.ts +1 -1
  45. package/lib/mouseHandler.d.ts.map +1 -1
  46. package/lib/mouseHandler.js +36 -49
  47. package/lib/mouseHandler.js.map +1 -1
  48. package/lib/mouseUtils.d.ts.map +1 -1
  49. package/lib/mouseUtils.js +2 -2
  50. package/lib/mouseUtils.js.map +1 -1
  51. package/lib/node.d.ts +47 -16
  52. package/lib/node.d.ts.map +1 -1
  53. package/lib/node.js +169 -171
  54. package/lib/node.js.map +1 -1
  55. package/lib/nodeElement/borderDropHint.d.ts.map +1 -1
  56. package/lib/nodeElement/borderDropHint.js +4 -5
  57. package/lib/nodeElement/borderDropHint.js.map +1 -1
  58. package/lib/nodeElement/folderElement.d.ts +8 -5
  59. package/lib/nodeElement/folderElement.d.ts.map +1 -1
  60. package/lib/nodeElement/folderElement.js +75 -67
  61. package/lib/nodeElement/folderElement.js.map +1 -1
  62. package/lib/nodeElement/ghostDropHint.d.ts.map +1 -1
  63. package/lib/nodeElement/ghostDropHint.js +13 -13
  64. package/lib/nodeElement/ghostDropHint.js.map +1 -1
  65. package/lib/nodeElement/index.d.ts +2 -1
  66. package/lib/nodeElement/index.d.ts.map +1 -1
  67. package/lib/nodeElement/index.js +38 -30
  68. package/lib/nodeElement/index.js.map +1 -1
  69. package/lib/nodeUtils.d.ts.map +1 -1
  70. package/lib/nodeUtils.js +1 -1
  71. package/lib/nodeUtils.js.map +1 -1
  72. package/lib/options.d.ts +19 -3
  73. package/lib/options.d.ts.map +1 -1
  74. package/lib/positionUtils.js +3 -3
  75. package/lib/positionUtils.js.map +1 -1
  76. package/lib/requestUrl.d.ts +1 -1
  77. package/lib/requestUrl.d.ts.map +1 -1
  78. package/lib/requestUrl.js +6 -17
  79. package/lib/requestUrl.js.map +1 -1
  80. package/lib/saveStateHandler.d.ts.map +1 -1
  81. package/lib/saveStateHandler.js +59 -89
  82. package/lib/saveStateHandler.js.map +1 -1
  83. package/lib/scrollHandler/containerScrollParent.d.ts.map +1 -1
  84. package/lib/scrollHandler/containerScrollParent.js +11 -18
  85. package/lib/scrollHandler/containerScrollParent.js.map +1 -1
  86. package/lib/scrollHandler/createScrollParent.d.ts.map +1 -1
  87. package/lib/scrollHandler/createScrollParent.js +12 -13
  88. package/lib/scrollHandler/createScrollParent.js.map +1 -1
  89. package/lib/scrollHandler/documentScrollParent.d.ts.map +1 -1
  90. package/lib/scrollHandler/documentScrollParent.js +18 -27
  91. package/lib/scrollHandler/documentScrollParent.js.map +1 -1
  92. package/lib/scrollHandler/scrollParent.d.ts.map +1 -1
  93. package/lib/scrollHandler/scrollParent.js +30 -34
  94. package/lib/scrollHandler/scrollParent.js.map +1 -1
  95. package/lib/scrollHandler.d.ts.map +1 -1
  96. package/lib/scrollHandler.js +11 -14
  97. package/lib/scrollHandler.js.map +1 -1
  98. package/lib/selectNodeHandler.d.ts +4 -2
  99. package/lib/selectNodeHandler.d.ts.map +1 -1
  100. package/lib/selectNodeHandler.js +64 -83
  101. package/lib/selectNodeHandler.js.map +1 -1
  102. package/lib/setDefaultOptions.d.ts.map +1 -1
  103. package/lib/setDefaultOptions.js +34 -38
  104. package/lib/setDefaultOptions.js.map +1 -1
  105. package/lib/triggerCustomEvent.d.ts.map +1 -1
  106. package/lib/triggerCustomEvent.js +2 -2
  107. package/lib/triggerCustomEvent.js.map +1 -1
  108. package/lib/util.d.ts.map +1 -1
  109. package/lib/util.js +2 -2
  110. package/lib/util.js.map +1 -1
  111. package/lib/version.d.ts +1 -1
  112. package/lib/version.js +1 -1
  113. package/lib/version.js.map +1 -1
  114. package/package.json +43 -32
  115. package/src/animation.ts +14 -12
  116. package/src/classNames.ts +52 -52
  117. package/src/dataLoader.ts +79 -71
  118. package/src/dragAndDropHandler/binarySearch.ts +17 -17
  119. package/src/dragAndDropHandler/dragElement.ts +51 -50
  120. package/src/dragAndDropHandler/generateHitAreas.ts +156 -161
  121. package/src/dragAndDropHandler/index.ts +334 -348
  122. package/src/dragAndDropHandler/iterateVisibleNodes.ts +61 -63
  123. package/src/dragAndDropHandler/types.ts +5 -5
  124. package/src/elementsRenderer.ts +377 -294
  125. package/src/events.ts +241 -208
  126. package/src/header.txt +1 -1
  127. package/src/index.ts +259 -229
  128. package/src/keyHandler.ts +179 -115
  129. package/src/methodTypes.ts +7 -10
  130. package/src/mouseHandler.ts +316 -316
  131. package/src/mouseUtils.ts +14 -14
  132. package/src/node.ts +773 -771
  133. package/src/nodeElement/borderDropHint.ts +25 -25
  134. package/src/nodeElement/folderElement.ts +116 -102
  135. package/src/nodeElement/ghostDropHint.ts +64 -62
  136. package/src/nodeElement/index.ts +81 -73
  137. package/src/nodeUtils.ts +5 -5
  138. package/src/options.ts +25 -5
  139. package/src/requestUrl.ts +7 -14
  140. package/src/saveStateHandler.ts +191 -207
  141. package/src/scrollHandler/containerScrollParent.ts +40 -49
  142. package/src/scrollHandler/createScrollParent.ts +26 -27
  143. package/src/scrollHandler/documentScrollParent.ts +66 -72
  144. package/src/scrollHandler/scrollParent.ts +90 -86
  145. package/src/scrollHandler.ts +45 -45
  146. package/src/selectNodeHandler.ts +171 -165
  147. package/src/setDefaultOptions.ts +44 -32
  148. package/src/triggerCustomEvent.ts +7 -3
  149. package/src/util.ts +2 -3
  150. package/src/version.ts +1 -1
  151. package/tree_element.css +87 -69
  152. package/tree_element.debug.js +3866 -3831
  153. package/tree_element.debug.js.map +1 -1
  154. package/tree_element.js +2 -2
  155. package/tree_element.js.map +1 -1
package/lib/node.js CHANGED
@@ -26,37 +26,62 @@ prefix-private-members: all
26
26
  * :::
27
27
  */
28
28
  class Node {
29
- /** @hidden */
29
+ /**
30
+ @hidden
31
+ */
30
32
 
31
- /** The child nodes. */
33
+ /**
34
+ The child nodes.
35
+ */
32
36
  children;
33
- /** The `li` element, once the node is rendered. */
37
+ /** The `li` element, once the node is rendered. Nodes inside a closed
38
+ * folder are rendered when the folder is opened. */
34
39
  element;
35
- /** The id from the node data. */
40
+ /**
41
+ The id from the node data.
42
+ */
36
43
  id;
37
- /** @hidden */
44
+ /**
45
+ @hidden
46
+ */
38
47
  idMapping;
39
- /** Whether the node's children are being fetched. */
48
+ /**
49
+ Whether the node's children are being fetched.
50
+ */
40
51
  is_loading;
41
- /** Whether the folder is open. */
52
+ /**
53
+ Whether the folder is open.
54
+ */
42
55
  is_open;
43
- /** Whether the node data had an empty `children` array. */
56
+ /**
57
+ Whether the node data had an empty `children` array.
58
+ */
44
59
  isEmptyFolder;
45
- /** Whether the children still have to be fetched. */
46
- load_on_demand;
47
- /** The label. Also settable from the `label` key in node data. */
48
- name;
49
- /** @hidden */
60
+ /**
61
+ Whether the children still have to be fetched.
62
+ */
63
+ load_on_demand = false;
64
+ /**
65
+ The label. Also settable from the `label` key in node data.
66
+ */
67
+ name = "";
68
+ /**
69
+ @hidden
70
+ */
50
71
  nodeClass;
51
- /** The parent; `null` for the root node. */
72
+ /**
73
+ The parent; `null` for the root node.
74
+ */
52
75
  parent;
53
- /** The root node. */
76
+ /**
77
+ The root node.
78
+ */
54
79
  tree;
55
80
 
56
- /** @hidden */
81
+ /**
82
+ @hidden
83
+ */
57
84
  constructor(nodeData = null, isRoot = false, nodeClass = Node) {
58
- this.name = "";
59
- this.load_on_demand = false;
60
85
  this.isEmptyFolder = nodeData != null && isNodeRecordWithChildren(nodeData) && nodeData.children.length === 0;
61
86
  this.setData(nodeData);
62
87
  this.children = [];
@@ -79,15 +104,14 @@ class Node {
79
104
  * @group Changing the tree
80
105
  */
81
106
  addAfter(nodeInfo) {
82
- if (!this.parent) {
83
- return null;
84
- } else {
85
- const node = this._createNode(nodeInfo);
86
- const childIndex = this.parent.getChildIndex(this);
107
+ if (this.parent) {
108
+ let node = this._createNode(nodeInfo);
109
+ let childIndex = this.parent.getChildIndex(this);
87
110
  this.parent.addChildAtPosition(node, childIndex + 1);
88
111
  node._loadChildrenFromData(nodeInfo);
89
112
  return node;
90
113
  }
114
+ return null;
91
115
  }
92
116
 
93
117
  /**
@@ -97,15 +121,14 @@ class Node {
97
121
  * @group Changing the tree
98
122
  */
99
123
  addBefore(nodeInfo) {
100
- if (!this.parent) {
101
- return null;
102
- } else {
103
- const node = this._createNode(nodeInfo);
104
- const childIndex = this.parent.getChildIndex(this);
124
+ if (this.parent) {
125
+ let node = this._createNode(nodeInfo);
126
+ let childIndex = this.parent.getChildIndex(this);
105
127
  this.parent.addChildAtPosition(node, childIndex);
106
128
  node._loadChildrenFromData(nodeInfo);
107
129
  return node;
108
130
  }
131
+ return null;
109
132
  }
110
133
 
111
134
  /**
@@ -129,7 +152,9 @@ class Node {
129
152
  node._setParent(this);
130
153
  }
131
154
 
132
- /** @hidden */
155
+ /**
156
+ @hidden
157
+ */
133
158
  addNodeToIndex(node) {
134
159
  if (node.id != null) {
135
160
  this.idMapping?.set(node.id, node);
@@ -143,21 +168,20 @@ class Node {
143
168
  * @group Changing the tree
144
169
  */
145
170
  addParent(nodeInfo) {
146
- if (!this.parent) {
147
- return null;
148
- } else {
149
- const newParent = this._createNode(nodeInfo);
171
+ if (this.parent) {
172
+ let newParent = this._createNode(nodeInfo);
150
173
  if (this.tree) {
151
174
  newParent._setParent(this.tree);
152
175
  }
153
- const originalParent = this.parent;
154
- for (const child of originalParent.children) {
176
+ let originalParent = this.parent;
177
+ for (let child of originalParent.children) {
155
178
  newParent.addChild(child);
156
179
  }
157
180
  originalParent.children = [];
158
181
  originalParent.addChild(newParent);
159
182
  return newParent;
160
183
  }
184
+ return null;
161
185
  }
162
186
 
163
187
  /**
@@ -167,7 +191,7 @@ class Node {
167
191
  * @group Changing the tree
168
192
  */
169
193
  append(nodeInfo) {
170
- const node = this._createNode(nodeInfo);
194
+ let node = this._createNode(nodeInfo);
171
195
  this.addChild(node);
172
196
  node._loadChildrenFromData(nodeInfo);
173
197
  return node;
@@ -185,7 +209,7 @@ class Node {
185
209
  * @group Searching
186
210
  */
187
211
  filter(f) {
188
- const result = [];
212
+ let result = [];
189
213
  this.iterate(node => {
190
214
  if (f(node)) {
191
215
  result.push(node);
@@ -220,14 +244,15 @@ class Node {
220
244
  * @group Reading data back
221
245
  */
222
246
  getData(includeParent = false) {
223
- const getDataFromNodes = nodes => {
247
+ let getDataFromNodes = nodes => {
224
248
  return nodes.map(node => {
225
- const tmpNode = {};
226
- for (const k in node) {
227
- if (["parent", "children", "element", "idMapping", "load_on_demand", "nodeClass", "tree", "isEmptyFolder"].indexOf(k) === -1 && Object.prototype.hasOwnProperty.call(node, k)) {
228
- const v = node[k];
229
- tmpNode[k] = v;
249
+ let tmpNode = {};
250
+ for (let k in node) {
251
+ if (["children", "element", "idMapping", "isEmptyFolder", "load_on_demand", "nodeClass", "parent", "tree"].includes(k) || !Object.prototype.hasOwnProperty.call(node, k)) {
252
+ continue;
230
253
  }
254
+ let v = node[k];
255
+ tmpNode[k] = v;
231
256
  }
232
257
  if (node.hasChildren()) {
233
258
  tmpNode.children = getDataFromNodes(node.children);
@@ -235,11 +260,7 @@ class Node {
235
260
  return tmpNode;
236
261
  });
237
262
  };
238
- if (includeParent) {
239
- return getDataFromNodes([this]);
240
- } else {
241
- return getDataFromNodes(this.children);
242
- }
263
+ return getDataFromNodes(includeParent ? [this] : this.children);
243
264
  }
244
265
 
245
266
  /**
@@ -249,16 +270,11 @@ class Node {
249
270
  * @group Moving around the tree
250
271
  */
251
272
  getLastChild() {
252
- if (!this.hasChildren()) {
253
- return null;
254
- } else {
255
- const lastChild = this.children[this.children.length - 1];
256
- if (!(lastChild.hasChildren() && lastChild.is_open)) {
257
- return lastChild;
258
- } else {
259
- return lastChild.getLastChild();
260
- }
273
+ if (this.hasChildren()) {
274
+ let lastChild = this.children[this.children.length - 1];
275
+ return lastChild.hasChildren() && lastChild.is_open ? lastChild.getLastChild() : lastChild;
261
276
  }
277
+ return null;
262
278
  }
263
279
 
264
280
  /**
@@ -268,7 +284,7 @@ class Node {
268
284
  */
269
285
  getLevel() {
270
286
  let level = 0;
271
- let node = this; // eslint-disable-line @typescript-eslint/no-this-alias
287
+ let node = this; // eslint-disable-line @typescript-eslint/no-this-alias, unicorn/no-this-assignment
272
288
 
273
289
  while (node.parent) {
274
290
  level += 1;
@@ -286,16 +302,12 @@ class Node {
286
302
  getNextNode(includeChildren = true) {
287
303
  if (includeChildren && this.hasChildren()) {
288
304
  return this.children[0] ?? null;
289
- } else if (!this.parent) {
290
- return null;
291
- } else {
292
- const nextSibling = this.getNextSibling();
293
- if (nextSibling) {
294
- return nextSibling;
295
- } else {
296
- return this.parent.getNextNode(false);
297
- }
298
305
  }
306
+ if (this.parent) {
307
+ let nextSibling = this.getNextSibling();
308
+ return nextSibling ?? this.parent.getNextNode(false);
309
+ }
310
+ return null;
299
311
  }
300
312
 
301
313
  /**
@@ -304,16 +316,11 @@ class Node {
304
316
  * @group Moving around the tree
305
317
  */
306
318
  getNextSibling() {
307
- if (!this.parent) {
308
- return null;
309
- } else {
310
- const nextIndex = this.parent.getChildIndex(this) + 1;
311
- if (nextIndex < this.parent.children.length) {
312
- return this.parent.children[nextIndex] ?? null;
313
- } else {
314
- return null;
315
- }
319
+ if (this.parent) {
320
+ let nextIndex = this.parent.getChildIndex(this) + 1;
321
+ return nextIndex < this.parent.children.length ? this.parent.children[nextIndex] ?? null : null;
316
322
  }
323
+ return null;
317
324
  }
318
325
 
319
326
  /**
@@ -326,20 +333,17 @@ class Node {
326
333
  if (this.hasChildren() && this.is_open) {
327
334
  // First child
328
335
  return this.children[0] ?? null;
329
- } else {
330
- if (!this.parent) {
331
- return null;
332
- } else {
333
- const nextSibling = this.getNextSibling();
334
- if (nextSibling) {
335
- // Next sibling
336
- return nextSibling;
337
- } else {
338
- // Next node of parent
339
- return this.parent.getNextNode(false);
340
- }
336
+ }
337
+ if (this.parent) {
338
+ let nextSibling = this.getNextSibling();
339
+ if (nextSibling) {
340
+ // Next sibling
341
+ return nextSibling;
341
342
  }
343
+ // Next node of parent
344
+ return this.parent.getNextNode(false);
342
345
  }
346
+ return null;
343
347
  }
344
348
 
345
349
  /**
@@ -352,12 +356,12 @@ class Node {
352
356
  this.iterate(node => {
353
357
  if (result) {
354
358
  return false;
355
- } else if (callback(node)) {
359
+ }
360
+ if (callback(node)) {
356
361
  result = node;
357
362
  return false;
358
- } else {
359
- return true;
360
363
  }
364
+ return true;
361
365
  });
362
366
  return result;
363
367
  }
@@ -387,7 +391,7 @@ class Node {
387
391
  * @group Searching
388
392
  */
389
393
  getNodeByNameMustExist(name) {
390
- const node = this.getNodeByCallback(n => n.name === name);
394
+ let node = this.getNodeByCallback(n => n.name === name);
391
395
  if (!node) {
392
396
  throw new Error(`Node with name ${name} not found`);
393
397
  }
@@ -413,12 +417,12 @@ class Node {
413
417
  // Return parent except if it is the root node
414
418
  if (!this.parent) {
415
419
  return null;
416
- } else if (!this.parent.parent) {
417
- // Root node -> null
418
- return null;
419
- } else {
420
+ }
421
+ if (this.parent.parent) {
420
422
  return this.parent;
421
423
  }
424
+ // Root node -> null
425
+ return null;
422
426
  }
423
427
 
424
428
  /**
@@ -428,18 +432,14 @@ class Node {
428
432
  * @group Moving around the tree
429
433
  */
430
434
  getPreviousNode() {
431
- if (!this.parent) {
432
- return null;
433
- } else {
434
- const previousSibling = this.getPreviousSibling();
435
+ if (this.parent) {
436
+ let previousSibling = this.getPreviousSibling();
435
437
  if (!previousSibling) {
436
438
  return this.getParent();
437
- } else if (previousSibling.hasChildren()) {
438
- return previousSibling.getLastChild();
439
- } else {
440
- return previousSibling;
441
439
  }
440
+ return previousSibling.hasChildren() ? previousSibling.getLastChild() : previousSibling;
442
441
  }
442
+ return null;
443
443
  }
444
444
 
445
445
  /**
@@ -448,16 +448,11 @@ class Node {
448
448
  * @group Moving around the tree
449
449
  */
450
450
  getPreviousSibling() {
451
- if (!this.parent) {
452
- return null;
453
- } else {
454
- const previousIndex = this.parent.getChildIndex(this) - 1;
455
- if (previousIndex >= 0) {
456
- return this.parent.children[previousIndex] ?? null;
457
- } else {
458
- return null;
459
- }
451
+ if (this.parent) {
452
+ let previousIndex = this.parent.getChildIndex(this) - 1;
453
+ return previousIndex >= 0 ? this.parent.children[previousIndex] ?? null : null;
460
454
  }
455
+ return null;
461
456
  }
462
457
 
463
458
  /**
@@ -467,20 +462,19 @@ class Node {
467
462
  * @group Moving around the tree
468
463
  */
469
464
  getPreviousVisibleNode() {
470
- if (!this.parent) {
471
- return null;
472
- } else {
473
- const previousSibling = this.getPreviousSibling();
465
+ if (this.parent) {
466
+ let previousSibling = this.getPreviousSibling();
474
467
  if (!previousSibling) {
475
468
  return this.getParent();
476
- } else if (!previousSibling.hasChildren() || !previousSibling.is_open) {
469
+ }
470
+ if (!previousSibling.hasChildren() || !previousSibling.is_open) {
477
471
  // Previous sibling
478
472
  return previousSibling;
479
- } else {
480
- // Last child of previous sibling
481
- return previousSibling.getLastChild();
482
473
  }
474
+ // Last child of previous sibling
475
+ return previousSibling.getLastChild();
483
476
  }
477
+ return null;
484
478
  }
485
479
 
486
480
  /**
@@ -498,15 +492,15 @@ class Node {
498
492
  * @hidden
499
493
  */
500
494
  initFromData(data) {
501
- const addNode = nodeData => {
495
+ let addNode = nodeData => {
502
496
  this.setData(nodeData);
503
497
  if (isNodeRecordWithChildren(nodeData) && nodeData.children.length) {
504
498
  addChildren(nodeData.children);
505
499
  }
506
500
  };
507
- const addChildren = childrenData => {
508
- for (const child of childrenData) {
509
- const node = this._createNode();
501
+ let addChildren = childrenData => {
502
+ for (let child of childrenData) {
503
+ let node = this._createNode();
510
504
  node.initFromData(child);
511
505
  this.addChild(node);
512
506
  }
@@ -553,9 +547,9 @@ class Node {
553
547
  * @group Searching
554
548
  */
555
549
  iterate(callback) {
556
- const _iterate = (node, level) => {
557
- for (const child of node.children) {
558
- const result = callback(child, level);
550
+ let _iterate = (node, level) => {
551
+ for (let child of node.children) {
552
+ let result = callback(child, level);
559
553
  if (result && child.hasChildren()) {
560
554
  _iterate(child, level + 1);
561
555
  }
@@ -571,8 +565,8 @@ class Node {
571
565
  */
572
566
  loadFromData(data) {
573
567
  this.removeChildren();
574
- for (const childData of data) {
575
- const node = this._createNode(childData);
568
+ for (let childData of data) {
569
+ let node = this._createNode(childData);
576
570
  this.addChild(node);
577
571
  if (isNodeRecordWithChildren(childData)) {
578
572
  node.loadFromData(childData.children);
@@ -594,32 +588,31 @@ class Node {
594
588
  // - Node is parent of target node
595
589
  // - Or, parent is empty
596
590
  return false;
597
- } else {
598
- movedNode.parent._doRemoveChild(movedNode);
599
- switch (position) {
600
- case "after":
601
- {
602
- if (targetNode.parent) {
603
- targetNode.parent.addChildAtPosition(movedNode, targetNode.parent.getChildIndex(targetNode) + 1);
604
- return true;
605
- }
606
- return false;
607
- }
608
- case "before":
609
- {
610
- if (targetNode.parent) {
611
- targetNode.parent.addChildAtPosition(movedNode, targetNode.parent.getChildIndex(targetNode));
612
- return true;
613
- }
614
- return false;
591
+ }
592
+ movedNode.parent._doRemoveChild(movedNode);
593
+ switch (position) {
594
+ case "after":
595
+ {
596
+ if (targetNode.parent) {
597
+ targetNode.parent.addChildAtPosition(movedNode, targetNode.parent.getChildIndex(targetNode) + 1);
598
+ return true;
615
599
  }
616
- case "inside":
617
- {
618
- // move inside as first child
619
- targetNode.addChildAtPosition(movedNode, 0);
600
+ return false;
601
+ }
602
+ case "before":
603
+ {
604
+ if (targetNode.parent) {
605
+ targetNode.parent.addChildAtPosition(movedNode, targetNode.parent.getChildIndex(targetNode));
620
606
  return true;
621
607
  }
622
- }
608
+ return false;
609
+ }
610
+ case "inside":
611
+ {
612
+ // move inside as first child
613
+ targetNode.addChildAtPosition(movedNode, 0);
614
+ return true;
615
+ }
623
616
  }
624
617
  }
625
618
 
@@ -630,7 +623,7 @@ class Node {
630
623
  * @group Changing the tree
631
624
  */
632
625
  prepend(nodeInfo) {
633
- const node = this._createNode(nodeInfo);
626
+ let node = this._createNode(nodeInfo);
634
627
  this.addChildAtPosition(node, 0);
635
628
  node._loadChildrenFromData(nodeInfo);
636
629
  return node;
@@ -642,10 +635,11 @@ class Node {
642
635
  * @group Changing the tree
643
636
  */
644
637
  remove() {
645
- if (this.parent) {
646
- this.parent.removeChild(this);
647
- this.parent = null;
638
+ if (!this.parent) {
639
+ return;
648
640
  }
641
+ this.parent.removeChild(this);
642
+ this.parent = null;
649
643
  }
650
644
 
651
645
  /**
@@ -672,7 +666,9 @@ class Node {
672
666
  this.children = [];
673
667
  }
674
668
 
675
- /** @hidden */
669
+ /**
670
+ @hidden
671
+ */
676
672
  removeNodeFromIndex(node) {
677
673
  if (node.id != null) {
678
674
  this.idMapping?.delete(node.id);
@@ -689,27 +685,29 @@ class Node {
689
685
  setData(o) {
690
686
  if (!o) {
691
687
  return;
692
- } else if (typeof o === "string") {
688
+ }
689
+ if (typeof o === "string") {
693
690
  this.name = o;
694
691
  } else if (typeof o === "object") {
695
- for (const key in o) {
696
- if (Object.prototype.hasOwnProperty.call(o, key)) {
697
- const value = o[key];
698
- if (key === "label" || key === "name") {
699
- // You can use the 'label' key instead of 'name'; this is a legacy feature
700
- if (typeof value === "string") {
701
- this.name = value;
702
- }
703
- } else if (key !== "children" && key !== "parent") {
704
- // You can't update the children or the parent using this function
705
- this[key] = value;
692
+ for (let key in o) {
693
+ if (!Object.prototype.hasOwnProperty.call(o, key)) {
694
+ continue;
695
+ }
696
+ let value = o[key];
697
+ if (key === "label" || key === "name") {
698
+ // You can use the 'label' key instead of 'name'; this is a legacy feature
699
+ if (typeof value === "string") {
700
+ this.name = value;
706
701
  }
702
+ } else if (key !== "children" && key !== "parent") {
703
+ // You can't update the children or the parent using this function
704
+ this[key] = value;
707
705
  }
708
706
  }
709
707
  }
710
708
  }
711
709
  _createNode(nodeData) {
712
- const nodeClass = this._getNodeClass();
710
+ let nodeClass = this._getNodeClass();
713
711
  return new nodeClass(nodeData);
714
712
  }
715
713
  _doRemoveChild(node) {