tree-element 0.1.0 → 0.2.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 (149) hide show
  1. package/README.md +49 -29
  2. package/lib/animation.js +5 -5
  3. package/lib/animation.js.map +1 -1
  4. package/lib/classNames.d.ts.map +1 -1
  5. package/lib/classNames.js +2 -2
  6. package/lib/classNames.js.map +1 -1
  7. package/lib/dataLoader.d.ts.map +1 -1
  8. package/lib/dataLoader.js +18 -21
  9. package/lib/dataLoader.js.map +1 -1
  10. package/lib/dragAndDropHandler/binarySearch.js +3 -3
  11. package/lib/dragAndDropHandler/binarySearch.js.map +1 -1
  12. package/lib/dragAndDropHandler/dragElement.d.ts.map +1 -1
  13. package/lib/dragAndDropHandler/dragElement.js +9 -12
  14. package/lib/dragAndDropHandler/dragElement.js.map +1 -1
  15. package/lib/dragAndDropHandler/generateHitAreas.d.ts.map +1 -1
  16. package/lib/dragAndDropHandler/generateHitAreas.js +25 -25
  17. package/lib/dragAndDropHandler/generateHitAreas.js.map +1 -1
  18. package/lib/dragAndDropHandler/index.d.ts.map +1 -1
  19. package/lib/dragAndDropHandler/index.js +90 -114
  20. package/lib/dragAndDropHandler/index.js.map +1 -1
  21. package/lib/dragAndDropHandler/iterateVisibleNodes.d.ts.map +1 -1
  22. package/lib/dragAndDropHandler/iterateVisibleNodes.js +10 -10
  23. package/lib/dragAndDropHandler/iterateVisibleNodes.js.map +1 -1
  24. package/lib/dragAndDropHandler/types.d.ts.map +1 -1
  25. package/lib/elementsRenderer.d.ts +15 -6
  26. package/lib/elementsRenderer.d.ts.map +1 -1
  27. package/lib/elementsRenderer.js +157 -121
  28. package/lib/elementsRenderer.js.map +1 -1
  29. package/lib/events.d.ts +11 -4
  30. package/lib/events.d.ts.map +1 -1
  31. package/lib/index.d.ts +5 -5
  32. package/lib/index.d.ts.map +1 -1
  33. package/lib/index.js +249 -252
  34. package/lib/index.js.map +1 -1
  35. package/lib/keyHandler.d.ts +2 -3
  36. package/lib/keyHandler.d.ts.map +1 -1
  37. package/lib/keyHandler.js +26 -25
  38. package/lib/keyHandler.js.map +1 -1
  39. package/lib/methodTypes.d.ts +1 -1
  40. package/lib/methodTypes.d.ts.map +1 -1
  41. package/lib/mouseHandler.d.ts.map +1 -1
  42. package/lib/mouseHandler.js +26 -42
  43. package/lib/mouseHandler.js.map +1 -1
  44. package/lib/mouseUtils.d.ts.map +1 -1
  45. package/lib/mouseUtils.js +2 -2
  46. package/lib/mouseUtils.js.map +1 -1
  47. package/lib/node.d.ts +2 -1
  48. package/lib/node.d.ts.map +1 -1
  49. package/lib/node.js +36 -35
  50. package/lib/node.js.map +1 -1
  51. package/lib/nodeElement/borderDropHint.d.ts.map +1 -1
  52. package/lib/nodeElement/borderDropHint.js +4 -5
  53. package/lib/nodeElement/borderDropHint.js.map +1 -1
  54. package/lib/nodeElement/folderElement.d.ts +7 -4
  55. package/lib/nodeElement/folderElement.d.ts.map +1 -1
  56. package/lib/nodeElement/folderElement.js +61 -42
  57. package/lib/nodeElement/folderElement.js.map +1 -1
  58. package/lib/nodeElement/ghostDropHint.d.ts.map +1 -1
  59. package/lib/nodeElement/ghostDropHint.js +5 -9
  60. package/lib/nodeElement/ghostDropHint.js.map +1 -1
  61. package/lib/nodeElement/index.d.ts +2 -1
  62. package/lib/nodeElement/index.d.ts.map +1 -1
  63. package/lib/nodeElement/index.js +34 -26
  64. package/lib/nodeElement/index.js.map +1 -1
  65. package/lib/nodeUtils.d.ts.map +1 -1
  66. package/lib/nodeUtils.js +1 -1
  67. package/lib/nodeUtils.js.map +1 -1
  68. package/lib/options.d.ts.map +1 -1
  69. package/lib/positionUtils.js +3 -3
  70. package/lib/positionUtils.js.map +1 -1
  71. package/lib/requestUrl.d.ts +1 -1
  72. package/lib/requestUrl.d.ts.map +1 -1
  73. package/lib/requestUrl.js +4 -6
  74. package/lib/requestUrl.js.map +1 -1
  75. package/lib/saveStateHandler.d.ts.map +1 -1
  76. package/lib/saveStateHandler.js +38 -48
  77. package/lib/saveStateHandler.js.map +1 -1
  78. package/lib/scrollHandler/containerScrollParent.d.ts.map +1 -1
  79. package/lib/scrollHandler/containerScrollParent.js +9 -11
  80. package/lib/scrollHandler/containerScrollParent.js.map +1 -1
  81. package/lib/scrollHandler/createScrollParent.d.ts.map +1 -1
  82. package/lib/scrollHandler/createScrollParent.js +10 -10
  83. package/lib/scrollHandler/createScrollParent.js.map +1 -1
  84. package/lib/scrollHandler/documentScrollParent.d.ts.map +1 -1
  85. package/lib/scrollHandler/documentScrollParent.js +16 -19
  86. package/lib/scrollHandler/documentScrollParent.js.map +1 -1
  87. package/lib/scrollHandler/scrollParent.d.ts.map +1 -1
  88. package/lib/scrollHandler/scrollParent.js +11 -17
  89. package/lib/scrollHandler/scrollParent.js.map +1 -1
  90. package/lib/scrollHandler.d.ts.map +1 -1
  91. package/lib/scrollHandler.js +11 -14
  92. package/lib/scrollHandler.js.map +1 -1
  93. package/lib/selectNodeHandler.d.ts +2 -2
  94. package/lib/selectNodeHandler.d.ts.map +1 -1
  95. package/lib/selectNodeHandler.js +45 -54
  96. package/lib/selectNodeHandler.js.map +1 -1
  97. package/lib/setDefaultOptions.d.ts.map +1 -1
  98. package/lib/setDefaultOptions.js +23 -28
  99. package/lib/setDefaultOptions.js.map +1 -1
  100. package/lib/triggerCustomEvent.d.ts.map +1 -1
  101. package/lib/triggerCustomEvent.js +2 -2
  102. package/lib/triggerCustomEvent.js.map +1 -1
  103. package/lib/util.d.ts.map +1 -1
  104. package/lib/util.js +2 -2
  105. package/lib/util.js.map +1 -1
  106. package/lib/version.d.ts +1 -1
  107. package/lib/version.js +1 -1
  108. package/lib/version.js.map +1 -1
  109. package/package.json +7 -3
  110. package/src/animation.ts +1 -1
  111. package/src/classNames.ts +52 -52
  112. package/src/dataLoader.ts +68 -70
  113. package/src/dragAndDropHandler/binarySearch.ts +17 -17
  114. package/src/dragAndDropHandler/dragElement.ts +50 -50
  115. package/src/dragAndDropHandler/generateHitAreas.ts +156 -161
  116. package/src/dragAndDropHandler/index.ts +342 -351
  117. package/src/dragAndDropHandler/iterateVisibleNodes.ts +59 -63
  118. package/src/dragAndDropHandler/types.ts +5 -5
  119. package/src/elementsRenderer.ts +351 -298
  120. package/src/events.ts +216 -209
  121. package/src/header.txt +1 -1
  122. package/src/index.ts +52 -82
  123. package/src/keyHandler.ts +125 -115
  124. package/src/methodTypes.ts +4 -7
  125. package/src/mouseHandler.ts +314 -317
  126. package/src/mouseUtils.ts +14 -14
  127. package/src/node.ts +761 -766
  128. package/src/nodeElement/borderDropHint.ts +25 -25
  129. package/src/nodeElement/folderElement.ts +135 -112
  130. package/src/nodeElement/ghostDropHint.ts +62 -62
  131. package/src/nodeElement/index.ts +88 -74
  132. package/src/nodeUtils.ts +5 -5
  133. package/src/options.ts +6 -2
  134. package/src/requestUrl.ts +3 -3
  135. package/src/saveStateHandler.ts +204 -206
  136. package/src/scrollHandler/containerScrollParent.ts +49 -52
  137. package/src/scrollHandler/createScrollParent.ts +27 -27
  138. package/src/scrollHandler/documentScrollParent.ts +70 -70
  139. package/src/scrollHandler/scrollParent.ts +98 -98
  140. package/src/scrollHandler.ts +45 -45
  141. package/src/selectNodeHandler.ts +176 -166
  142. package/src/setDefaultOptions.ts +25 -22
  143. package/src/triggerCustomEvent.ts +7 -3
  144. package/src/util.ts +2 -2
  145. package/src/version.ts +1 -1
  146. package/tree_element.debug.js +3770 -3799
  147. package/tree_element.debug.js.map +1 -1
  148. package/tree_element.js +2 -2
  149. package/tree_element.js.map +1 -1
package/lib/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*
2
- Html-tree 0.1.0
2
+ Tree-element 0.2.0
3
3
 
4
4
  Copyright 2026 Marco Braak
5
5
 
@@ -41,8 +41,6 @@ import version from './version.js';
41
41
  // as its global, instead of an object of named exports.
42
42
 
43
43
  class TreeElement {
44
- /** @hidden */
45
- tree;
46
44
  _classNames;
47
45
  _dataLoader;
48
46
  _dndHandler;
@@ -56,6 +54,7 @@ class TreeElement {
56
54
  _saveStateHandler;
57
55
  _scrollHandler;
58
56
  _selectNodeHandler;
57
+ _tree;
59
58
  _triggerEventProvider;
60
59
 
61
60
  /** @hidden */
@@ -69,9 +68,9 @@ class TreeElement {
69
68
  this._classNames = createClassNames(this._options);
70
69
  this._triggerEventProvider = overrideTriggerEventProvider ?? triggerCustomEvent;
71
70
  this._isInitialized = false;
72
- this.tree = new Node({}, true);
71
+ this._tree = new Node({}, true);
73
72
  this._nodeMap = new WeakMap();
74
- const {
73
+ let {
75
74
  autoEscape,
76
75
  buttonLeft,
77
76
  closedIcon,
@@ -94,125 +93,125 @@ class TreeElement {
94
93
  slide,
95
94
  tabIndex
96
95
  } = this._options;
97
- const classNames = this._classNames;
98
- const closeNode = this.closeNode.bind(this);
99
- const getNodeElement = this._getNodeElement.bind(this);
100
- const getNodeElementForNode = this._getNodeElementForNode.bind(this);
101
- const getNodeById = this.getNodeById.bind(this);
102
- const getSelectedNode = this.getSelectedNode.bind(this);
103
- const getTree = this.getTree.bind(this);
104
- const isFocusOnTree = this._isFocusOnTree.bind(this);
105
- const loadData = this.loadData.bind(this);
106
- const openNode = this.openNode.bind(this);
107
- const openParents = this._openParents.bind(this);
108
- const refreshElements = this._refreshElements.bind(this);
109
- const refreshHitAreas = this.refreshHitAreas.bind(this);
110
- const setNodeElement = this._setNodeElement.bind(this);
111
- const treeElement = this._htmlElement;
112
- const triggerEvent = this._triggerEvent.bind(this);
113
- const saveState = () => {
114
- saveStateHandler.saveState();
96
+ let classNames = this._classNames;
97
+ let closeNode = this.closeNode.bind(this);
98
+ let getNodeElement = this._getNodeElement.bind(this);
99
+ let getNodeElementForNode = this._getNodeElementForNode.bind(this);
100
+ let getNodeById = this.getNodeById.bind(this);
101
+ let getSelectedNode = this.getSelectedNode.bind(this);
102
+ let getTree = this.getTree.bind(this);
103
+ let isFocusOnTree = this._isFocusOnTree.bind(this);
104
+ let loadData = this.loadData.bind(this);
105
+ let openNode = this.openNode.bind(this);
106
+ let openParents = this._openParents.bind(this);
107
+ let refreshElements = this._refreshElements.bind(this);
108
+ let refreshHitAreas = this.refreshHitAreas.bind(this);
109
+ let setNodeElement = this._setNodeElement.bind(this);
110
+ let treeElement = this._htmlElement;
111
+ let triggerEvent = this._triggerEvent.bind(this);
112
+ let saveState = () => {
113
+ saveStateHandler._saveState();
115
114
  };
116
- const selectNodeHandler = new SelectNodeHandler({
117
- getNodeById,
118
- getNodeElementForNode,
119
- getOnCanSelectNode: () => this._options.onCanSelectNode,
120
- getSelectable: () => this._options.selectable,
121
- openParents,
122
- saveState,
123
- triggerEvent
115
+ let selectNodeHandler = new SelectNodeHandler({
116
+ _getNodeById: getNodeById,
117
+ _getNodeElementForNode: getNodeElementForNode,
118
+ _getOnCanSelectNode: () => this._options.onCanSelectNode,
119
+ _getSelectable: () => this._options.selectable,
120
+ _openParents: openParents,
121
+ _saveState: saveState,
122
+ _triggerEvent: triggerEvent
124
123
  });
125
- const addToSelection = selectNodeHandler.addToSelection.bind(selectNodeHandler);
126
- const getSelectedNodes = selectNodeHandler.getSelectedNodes.bind(selectNodeHandler);
127
- const isNodeSelected = selectNodeHandler.isNodeSelected.bind(selectNodeHandler);
128
- const removeFromSelection = selectNodeHandler.removeFromSelection.bind(selectNodeHandler);
129
- const selectNode = selectNodeHandler.selectSingleNode.bind(selectNodeHandler);
130
- const getMouseDelay = () => this._options.startDndDelay ?? 0;
131
- const dataLoader = new DataLoader({
132
- classNames,
133
- dataFilter,
134
- loadData,
135
- treeElement,
136
- triggerEvent
124
+ let addToSelection = selectNodeHandler._addToSelection.bind(selectNodeHandler);
125
+ let getSelectedNodes = selectNodeHandler._getSelectedNodes.bind(selectNodeHandler);
126
+ let isNodeSelected = selectNodeHandler._isNodeSelected.bind(selectNodeHandler);
127
+ let removeFromSelection = selectNodeHandler._removeFromSelection.bind(selectNodeHandler);
128
+ let selectNode = selectNodeHandler._selectSingleNode.bind(selectNodeHandler);
129
+ let getMouseDelay = () => this._options.startDndDelay ?? 0;
130
+ let dataLoader = new DataLoader({
131
+ _classNames: classNames,
132
+ _dataFilter: dataFilter,
133
+ _loadData: loadData,
134
+ _treeElement: treeElement,
135
+ _triggerEvent: triggerEvent
137
136
  });
138
- const saveStateHandler = new SaveStateHandler({
139
- addToSelection,
140
- getNodeById,
141
- getSelectedNodes,
142
- getTree,
143
- onGetStateFromStorage,
144
- onSetStateFromStorage,
145
- openNode,
146
- refreshElements,
147
- removeFromSelection,
148
- saveState: saveStateOption
137
+ let saveStateHandler = new SaveStateHandler({
138
+ _addToSelection: addToSelection,
139
+ _getNodeById: getNodeById,
140
+ _getSelectedNodes: getSelectedNodes,
141
+ _getTree: getTree,
142
+ _onGetStateFromStorage: onGetStateFromStorage,
143
+ _onSetStateFromStorage: onSetStateFromStorage,
144
+ _openNode: openNode,
145
+ _refreshElements: refreshElements,
146
+ _removeFromSelection: removeFromSelection,
147
+ _saveState: saveStateOption
149
148
  });
150
- const scrollHandler = new ScrollHandler({
151
- refreshHitAreas,
152
- treeElement
149
+ let scrollHandler = new ScrollHandler({
150
+ _refreshHitAreas: refreshHitAreas,
151
+ _treeElement: treeElement
153
152
  });
154
- const getScrollLeft = scrollHandler.getScrollLeft.bind(scrollHandler);
155
- const dndHandler = new DragAndDropHandler({
156
- autoEscape,
157
- classNames,
158
- getNodeElement,
159
- getNodeElementForNode,
160
- getScrollLeft,
161
- getTree,
162
- onCanMove,
163
- onCanMoveTo,
164
- onDragMove,
165
- onDragStop,
166
- onIsMoveHandle,
167
- openFolderDelay,
168
- openNode,
169
- refreshElements,
170
- slide,
171
- treeElement,
172
- triggerEvent
153
+ let getScrollLeft = scrollHandler._getScrollLeft.bind(scrollHandler);
154
+ let dndHandler = new DragAndDropHandler({
155
+ _autoEscape: autoEscape,
156
+ _classNames: classNames,
157
+ _getNodeElement: getNodeElement,
158
+ _getNodeElementForNode: getNodeElementForNode,
159
+ _getScrollLeft: getScrollLeft,
160
+ _getTree: getTree,
161
+ _onCanMove: onCanMove,
162
+ _onCanMoveTo: onCanMoveTo,
163
+ _onDragMove: onDragMove,
164
+ _onDragStop: onDragStop,
165
+ _onIsMoveHandle: onIsMoveHandle,
166
+ _openFolderDelay: openFolderDelay,
167
+ _openNode: openNode,
168
+ _refreshElements: refreshElements,
169
+ _slide: slide,
170
+ _treeElement: treeElement,
171
+ _triggerEvent: triggerEvent
173
172
  });
174
- const keyHandler = new KeyHandler({
175
- closeNode,
176
- getSelectedNode,
177
- isFocusOnTree,
178
- keyboardSupport,
179
- openNode,
180
- selectNode
173
+ let keyHandler = new KeyHandler({
174
+ _closeNode: closeNode,
175
+ _getSelectedNode: getSelectedNode,
176
+ _isFocusOnTree: isFocusOnTree,
177
+ _keyboardSupport: keyboardSupport,
178
+ _openNode: openNode,
179
+ _selectNode: selectNode
181
180
  });
182
- const renderer = new ElementsRenderer({
183
- autoEscape,
184
- buttonLeft,
185
- classNames,
186
- closedIcon,
187
- dragAndDrop,
188
- getTree,
189
- htmlElement: treeElement,
190
- isNodeSelected,
191
- onCreateLi,
192
- openedIcon,
193
- rtl,
194
- setNodeElement,
195
- showEmptyFolder,
196
- tabIndex
181
+ let renderer = new ElementsRenderer({
182
+ _autoEscape: autoEscape,
183
+ _buttonLeft: buttonLeft,
184
+ _classNames: classNames,
185
+ _closedIcon: closedIcon,
186
+ _dragAndDrop: dragAndDrop,
187
+ _getTree: getTree,
188
+ _htmlElement: treeElement,
189
+ _isNodeSelected: isNodeSelected,
190
+ _onCreateLi: onCreateLi,
191
+ _openedIcon: openedIcon,
192
+ _rtl: rtl,
193
+ _setNodeElement: setNodeElement,
194
+ _showEmptyFolder: showEmptyFolder,
195
+ _tabIndex: tabIndex
197
196
  });
198
- const getNode = this.getNode.bind(this);
199
- const onMouseCapture = this._mouseCapture.bind(this);
200
- const onMouseDrag = this._mouseDrag.bind(this);
201
- const onMouseStart = this._mouseStart.bind(this);
202
- const onMouseStop = this._mouseStop.bind(this);
203
- const mouseHandler = new MouseHandler({
204
- classNames,
205
- element: treeElement,
206
- getMouseDelay,
207
- getNode,
208
- onClickButton: this.toggle.bind(this),
209
- onClickTitle: selectNode,
210
- onMouseCapture,
211
- onMouseDrag,
212
- onMouseStart,
213
- onMouseStop,
214
- triggerEvent,
215
- useContextMenu: this._options.useContextMenu
197
+ let getNode = this.getNode.bind(this);
198
+ let onMouseCapture = this._mouseCapture.bind(this);
199
+ let onMouseDrag = this._mouseDrag.bind(this);
200
+ let onMouseStart = this._mouseStart.bind(this);
201
+ let onMouseStop = this._mouseStop.bind(this);
202
+ let mouseHandler = new MouseHandler({
203
+ _classNames: classNames,
204
+ _element: treeElement,
205
+ _getMouseDelay: getMouseDelay,
206
+ _getNode: getNode,
207
+ _onClickButton: this.toggle.bind(this),
208
+ _onClickTitle: selectNode,
209
+ _onMouseCapture: onMouseCapture,
210
+ _onMouseDrag: onMouseDrag,
211
+ _onMouseStart: onMouseStart,
212
+ _onMouseStop: onMouseStop,
213
+ _triggerEvent: triggerEvent,
214
+ _useContextMenu: this._options.useContextMenu
216
215
  });
217
216
  this._dataLoader = dataLoader;
218
217
  this._dndHandler = dndHandler;
@@ -232,7 +231,7 @@ class TreeElement {
232
231
  * @group Changing the tree
233
232
  */
234
233
  addNodeAfter(nodeData, existingNode) {
235
- const newNode = existingNode.addAfter(nodeData);
234
+ let newNode = existingNode.addAfter(nodeData);
236
235
  if (newNode) {
237
236
  this._refreshElements(existingNode.parent);
238
237
  }
@@ -246,7 +245,7 @@ class TreeElement {
246
245
  * @group Changing the tree
247
246
  */
248
247
  addNodeBefore(nodeData, existingNode) {
249
- const newNode = existingNode.addBefore(nodeData);
248
+ let newNode = existingNode.addBefore(nodeData);
250
249
  if (newNode) {
251
250
  this._refreshElements(existingNode.parent);
252
251
  }
@@ -261,7 +260,7 @@ class TreeElement {
261
260
  * @group Changing the tree
262
261
  */
263
262
  addParentNode(nodeData, existingNode) {
264
- const newNode = existingNode.addParent(nodeData);
263
+ let newNode = existingNode.addParent(nodeData);
265
264
  if (newNode) {
266
265
  this._refreshElements(newNode.parent);
267
266
  }
@@ -275,9 +274,9 @@ class TreeElement {
275
274
  * @group Selection
276
275
  */
277
276
  addToSelection(node, mustSetFocus) {
278
- this._selectNodeHandler.addToSelection(node);
277
+ this._selectNodeHandler._addToSelection(node);
279
278
  this._openParents(node);
280
- this._getNodeElementForNode(node).select(mustSetFocus ?? true);
279
+ this._getNodeElementForNode(node)._select(mustSetFocus ?? true);
281
280
  this._saveState();
282
281
  }
283
282
 
@@ -293,7 +292,7 @@ class TreeElement {
293
292
  * @group Changing the tree
294
293
  */
295
294
  appendNode(nodeData, parentNode) {
296
- const node = parentNode.append(nodeData);
295
+ let node = parentNode.append(nodeData);
297
296
  this._refreshElements(parentNode);
298
297
  return node;
299
298
  }
@@ -306,7 +305,7 @@ class TreeElement {
306
305
  */
307
306
  closeNode(node, slide) {
308
307
  if (node.isFolder() || node.isEmptyFolder) {
309
- this._createFolderElement(node).close(slide ?? this._options.slide, this._options.animationSpeed);
308
+ this._createFolderElement(node)._close(slide ?? this._options.slide, this._options.animationSpeed);
310
309
  this._saveState();
311
310
  }
312
311
  }
@@ -318,11 +317,11 @@ class TreeElement {
318
317
  * @group Other
319
318
  */
320
319
  deinit() {
321
- this._htmlElement.textContent = '';
322
- this._dataLoader.deinit();
323
- this._keyHandler.deinit();
324
- this._mouseHandler.deinit();
325
- this.tree = new Node({}, true);
320
+ this._htmlElement.textContent = "";
321
+ this._dataLoader._deinit();
322
+ this._keyHandler._deinit();
323
+ this._mouseHandler._deinit();
324
+ this._tree = new Node({}, true);
326
325
  }
327
326
 
328
327
  /**
@@ -331,7 +330,7 @@ class TreeElement {
331
330
  * @group Finding nodes
332
331
  */
333
332
  getNode(element) {
334
- const liElement = element.closest(`li.${this._classNames.common}`);
333
+ let liElement = element.closest(`li.${this._classNames.common}`);
335
334
  if (liElement) {
336
335
  return this._nodeMap.get(liElement) ?? null;
337
336
  } else {
@@ -350,7 +349,7 @@ class TreeElement {
350
349
  * @group Finding nodes
351
350
  */
352
351
  getNodeByCallback(callback) {
353
- return this.tree.getNodeByCallback(callback);
352
+ return this._tree.getNodeByCallback(callback);
354
353
  }
355
354
 
356
355
  /**
@@ -364,7 +363,7 @@ class TreeElement {
364
363
  * @group Finding nodes
365
364
  */
366
365
  getNodeById(id) {
367
- return this.tree.getNodeById(id);
366
+ return this._tree.getNodeById(id);
368
367
  }
369
368
 
370
369
  /**
@@ -373,7 +372,7 @@ class TreeElement {
373
372
  * @group Finding nodes
374
373
  */
375
374
  getNodeByName(name) {
376
- return this.tree.getNodeByName(name);
375
+ return this._tree.getNodeByName(name);
377
376
  }
378
377
 
379
378
  /**
@@ -383,7 +382,7 @@ class TreeElement {
383
382
  * @group Finding nodes
384
383
  */
385
384
  getNodeByNameMustExist(name) {
386
- return this.tree.getNodeByNameMustExist(name);
385
+ return this._tree.getNodeByNameMustExist(name);
387
386
  }
388
387
 
389
388
  /**
@@ -397,16 +396,16 @@ class TreeElement {
397
396
  * @group Finding nodes
398
397
  */
399
398
  getNodesByProperty(key, value) {
400
- return this.tree.getNodesByProperty(key, value);
399
+ return this._tree.getNodesByProperty(key, value);
401
400
  }
402
401
 
403
402
  /**
404
- * Returns the selected node, or `false` when nothing is selected.
403
+ * Returns the selected node, or `null` when nothing is selected.
405
404
  *
406
405
  * @group Selection
407
406
  */
408
407
  getSelectedNode() {
409
- return this._selectNodeHandler.getSelectedNode();
408
+ return this._selectNodeHandler._getSelectedNode();
410
409
  }
411
410
 
412
411
  /**
@@ -415,7 +414,7 @@ class TreeElement {
415
414
  * @group Selection
416
415
  */
417
416
  getSelectedNodes() {
418
- return this._selectNodeHandler.getSelectedNodes();
417
+ return this._selectNodeHandler._getSelectedNodes();
419
418
  }
420
419
 
421
420
  /**
@@ -425,7 +424,7 @@ class TreeElement {
425
424
  * @group State
426
425
  */
427
426
  getState() {
428
- return this._saveStateHandler.getState();
427
+ return this._saveStateHandler._getState();
429
428
  }
430
429
 
431
430
  /**
@@ -434,7 +433,7 @@ class TreeElement {
434
433
  * @group State
435
434
  */
436
435
  getStateFromStorage() {
437
- return this._saveStateHandler.getStateFromStorage();
436
+ return this._saveStateHandler._getStateFromStorage();
438
437
  }
439
438
 
440
439
  /**
@@ -444,7 +443,7 @@ class TreeElement {
444
443
  * @group Finding nodes
445
444
  */
446
445
  getTree() {
447
- return this.tree;
446
+ return this._tree;
448
447
  }
449
448
 
450
449
  /**
@@ -462,7 +461,7 @@ class TreeElement {
462
461
  * @group Other
463
462
  */
464
463
  isDragging() {
465
- return this._dndHandler.isDragging;
464
+ return this._dndHandler._isDragging;
466
465
  }
467
466
 
468
467
  /**
@@ -471,7 +470,7 @@ class TreeElement {
471
470
  * @group Selection
472
471
  */
473
472
  isNodeSelected(node) {
474
- return this._selectNodeHandler.isNodeSelected(node);
473
+ return this._selectNodeHandler._isNodeSelected(node);
475
474
  }
476
475
 
477
476
  /**
@@ -490,7 +489,7 @@ class TreeElement {
490
489
  this._initTree(data);
491
490
  }
492
491
  if (this.isDragging()) {
493
- this._dndHandler.refresh();
492
+ this._dndHandler._refresh();
494
493
  }
495
494
  }
496
495
  this._triggerEvent("tree.set_data", {
@@ -506,9 +505,9 @@ class TreeElement {
506
505
  * @group Loading data
507
506
  */
508
507
  async loadDataFromUrl(url, parentNode) {
509
- const requestUrl = url ? new RequestUrl(url) : this._createRequestUrl(parentNode);
508
+ let requestUrl = url ? new RequestUrl(url) : this._createRequestUrl(parentNode);
510
509
  if (requestUrl) {
511
- await this._dataLoader.loadFromUrl(requestUrl, parentNode);
510
+ await this._dataLoader._loadFromUrl(requestUrl, parentNode);
512
511
  }
513
512
  }
514
513
 
@@ -518,10 +517,7 @@ class TreeElement {
518
517
  * @group Selection
519
518
  */
520
519
  moveDown() {
521
- const selectedNode = this.getSelectedNode();
522
- if (selectedNode) {
523
- this._keyHandler.moveDown(selectedNode);
524
- }
520
+ this._keyHandler._moveDown();
525
521
  }
526
522
 
527
523
  /**
@@ -536,7 +532,7 @@ class TreeElement {
536
532
  * @group Changing the tree
537
533
  */
538
534
  moveNode(node, targetNode, position) {
539
- this.tree.moveNode(node, targetNode, position);
535
+ this._tree.moveNode(node, targetNode, position);
540
536
  this._refreshElements(null);
541
537
  }
542
538
 
@@ -546,10 +542,7 @@ class TreeElement {
546
542
  * @group Selection
547
543
  */
548
544
  moveUp() {
549
- const selectedNode = this.getSelectedNode();
550
- if (selectedNode) {
551
- this._keyHandler.moveUp(selectedNode);
552
- }
545
+ this._keyHandler._moveUp();
553
546
  }
554
547
 
555
548
  /**
@@ -567,13 +560,13 @@ class TreeElement {
567
560
  * @group Opening and closing
568
561
  */
569
562
  async openNode(node, slide) {
570
- const mustSlide = slide ?? this._options.slide;
571
- const doOpenNode = async (openedNode, slideOption) => {
563
+ let mustSlide = slide ?? this._options.slide;
564
+ let doOpenNode = async (openedNode, slideOption) => {
572
565
  if (!node.children.length) {
573
566
  return;
574
567
  }
575
- const folderElement = this._createFolderElement(openedNode);
576
- await folderElement.open(slideOption, this._options.animationSpeed);
568
+ let folderElement = this._createFolderElement(openedNode);
569
+ await folderElement._open(slideOption, this._options.animationSpeed);
577
570
  };
578
571
  if (node.isFolder() || node.isEmptyFolder) {
579
572
  if (node.load_on_demand) {
@@ -600,7 +593,7 @@ class TreeElement {
600
593
  * @group Changing the tree
601
594
  */
602
595
  prependNode(nodeData, parentNode) {
603
- const node = parentNode.prepend(nodeData);
596
+ let node = parentNode.prepend(nodeData);
604
597
  this._refreshElements(parentNode);
605
598
  return node;
606
599
  }
@@ -622,7 +615,7 @@ class TreeElement {
622
615
  * @group Other
623
616
  */
624
617
  refreshHitAreas() {
625
- this._dndHandler.refresh();
618
+ this._dndHandler._refresh();
626
619
  }
627
620
 
628
621
  /**
@@ -631,8 +624,8 @@ class TreeElement {
631
624
  * @group Selection
632
625
  */
633
626
  removeFromSelection(node) {
634
- this._selectNodeHandler.removeFromSelection(node);
635
- this._getNodeElementForNode(node).deselect();
627
+ this._selectNodeHandler._removeFromSelection(node);
628
+ this._getNodeElementForNode(node)._deselect();
636
629
  this._saveState();
637
630
  }
638
631
 
@@ -642,9 +635,9 @@ class TreeElement {
642
635
  * @group Changing the tree
643
636
  */
644
637
  removeNode(node) {
645
- this._selectNodeHandler.removeFromSelection(node, true); // including children
638
+ this._selectNodeHandler._removeFromSelection(node, true); // including children
646
639
 
647
- const parent = node.parent;
640
+ let parent = node.parent;
648
641
  node.remove();
649
642
  this._refreshElements(parent);
650
643
  }
@@ -658,8 +651,8 @@ class TreeElement {
658
651
  if (!node.element) {
659
652
  return;
660
653
  }
661
- const top = getOffsetTop(node.element) - getOffsetTop(this._htmlElement);
662
- this._scrollHandler.scrollToY(top);
654
+ let top = getOffsetTop(node.element) - getOffsetTop(this._htmlElement);
655
+ this._scrollHandler._scrollToY(top);
663
656
  }
664
657
 
665
658
  /**
@@ -675,10 +668,10 @@ class TreeElement {
675
668
  if (!node) {
676
669
  // Called with empty node -> deselect current node
677
670
  this._deselectCurrentNode();
678
- this._saveStateHandler.saveState();
671
+ this._saveStateHandler._saveState();
679
672
  return;
680
673
  }
681
- this._selectNodeHandler.selectSingleNode(node, options);
674
+ this._selectNodeHandler._selectSingleNode(node, options);
682
675
  }
683
676
 
684
677
  /**
@@ -692,13 +685,15 @@ class TreeElement {
692
685
  }
693
686
 
694
687
  /**
695
- * Applies a state to the tree.
688
+ * Applies a state to the tree, and saves it to storage when `saveState` is
689
+ * enabled.
696
690
  *
697
691
  * @group State
698
692
  */
699
693
  setState(state) {
700
- this._saveStateHandler.setInitialState(state);
694
+ this._saveStateHandler._setInitialState(state);
701
695
  this._refreshElements(null);
696
+ this._saveState();
702
697
  }
703
698
 
704
699
  /**
@@ -708,7 +703,7 @@ class TreeElement {
708
703
  * @group Opening and closing
709
704
  */
710
705
  toggle(node, slide = null) {
711
- const mustSlide = slide ?? this._options.slide;
706
+ let mustSlide = slide ?? this._options.slide;
712
707
  if (node.is_open) {
713
708
  this.closeNode(node, mustSlide);
714
709
  } else {
@@ -723,7 +718,7 @@ class TreeElement {
723
718
  * @group Other
724
719
  */
725
720
  toJson() {
726
- return JSON.stringify(this.tree.getData());
721
+ return JSON.stringify(this._tree.getData());
727
722
  }
728
723
 
729
724
  /**
@@ -742,13 +737,13 @@ class TreeElement {
742
737
  * @group Changing the tree
743
738
  */
744
739
  updateNode(node, data) {
745
- const idIsChanged = typeof data === "object" && data.id && data.id !== node.id;
740
+ let idIsChanged = typeof data === "object" && data.id && data.id !== node.id;
746
741
  if (idIsChanged) {
747
- this.tree.removeNodeFromIndex(node);
742
+ this._tree.removeNodeFromIndex(node);
748
743
  }
749
744
  node.setData(data);
750
745
  if (idIsChanged) {
751
- this.tree.addNodeToIndex(node);
746
+ this._tree.addNodeToIndex(node);
752
747
  }
753
748
  if (typeof data === "object" && data.children && data.children instanceof Array) {
754
749
  node.removeChildren();
@@ -759,44 +754,46 @@ class TreeElement {
759
754
  this._refreshElements(node);
760
755
  }
761
756
  _createFolderElement(node) {
762
- const classNames = this._classNames;
763
- const closedIconElement = this._renderer.closedIconElement;
764
- const getScrollLeft = this._scrollHandler.getScrollLeft.bind(this._scrollHandler);
765
- const openedIconElement = this._renderer.openedIconElement;
766
- const tabIndex = this._options.tabIndex;
767
- const treeElement = this._htmlElement;
768
- const triggerEvent = this._triggerEvent.bind(this);
757
+ let classNames = this._classNames;
758
+ let closedIconElement = this._renderer._closedIconElement;
759
+ let getScrollLeft = this._scrollHandler._getScrollLeft.bind(this._scrollHandler);
760
+ let openedIconElement = this._renderer._openedIconElement;
761
+ let renderChildren = this._renderer._renderChildren.bind(this._renderer);
762
+ let tabIndex = this._options.tabIndex;
763
+ let treeElement = this._htmlElement;
764
+ let triggerEvent = this._triggerEvent.bind(this);
769
765
  return new FolderElement({
770
- classNames,
771
- closedIconElement,
772
- getScrollLeft,
773
- node,
774
- openedIconElement,
775
- tabIndex,
776
- treeElement,
777
- triggerEvent
766
+ _classNames: classNames,
767
+ _closedIconElement: closedIconElement,
768
+ _getScrollLeft: getScrollLeft,
769
+ _node: node,
770
+ _openedIconElement: openedIconElement,
771
+ _renderChildren: renderChildren,
772
+ _tabIndex: tabIndex,
773
+ _treeElement: treeElement,
774
+ _triggerEvent: triggerEvent
778
775
  });
779
776
  }
780
777
  _createNodeElement(node) {
781
- const classNames = this._classNames;
782
- const getScrollLeft = this._scrollHandler.getScrollLeft.bind(this._scrollHandler);
783
- const tabIndex = this._options.tabIndex;
784
- const treeElement = this._htmlElement;
778
+ let classNames = this._classNames;
779
+ let getScrollLeft = this._scrollHandler._getScrollLeft.bind(this._scrollHandler);
780
+ let tabIndex = this._options.tabIndex;
781
+ let treeElement = this._htmlElement;
785
782
  return new NodeElement({
786
- classNames,
787
- getScrollLeft,
788
- node,
789
- tabIndex,
790
- treeElement
783
+ _classNames: classNames,
784
+ _getScrollLeft: getScrollLeft,
785
+ _node: node,
786
+ _tabIndex: tabIndex,
787
+ _treeElement: treeElement
791
788
  });
792
789
  }
793
790
 
794
791
  /* Create a RequestUrl based on the url in the options.
795
- * Add a 'node' query parameter for loading on demand
796
- * Add a 'selected_node' query parameter if a node is selected.
797
- */
792
+ * Add a 'node' query parameter for loading on demand
793
+ * Add a 'selected_node' query parameter if a node is selected.
794
+ */
798
795
  _createRequestUrl(node) {
799
- const dataUrl = this._options.dataUrl;
796
+ let dataUrl = this._options.dataUrl;
800
797
  let url;
801
798
  if (typeof dataUrl === "function") {
802
799
  url = dataUrl(node);
@@ -806,21 +803,21 @@ class TreeElement {
806
803
  if (!url) {
807
804
  return null;
808
805
  }
809
- const requestUrl = new RequestUrl(url);
806
+ let requestUrl = new RequestUrl(url);
810
807
  if (node?.id) {
811
808
  // Load on demand of a subtree; add node parameter
812
- requestUrl.setSearchParam('node', node.id.toString());
809
+ requestUrl._setSearchParam("node", node.id.toString());
813
810
  } else {
814
811
  // Add selected_node parameter
815
- const selectedNodeId = this._getNodeIdToBeSelected();
812
+ let selectedNodeId = this._getNodeIdToBeSelected();
816
813
  if (selectedNodeId) {
817
- requestUrl.setSearchParam('selected_node', selectedNodeId.toString());
814
+ requestUrl._setSearchParam("selected_node", selectedNodeId.toString());
818
815
  }
819
816
  }
820
817
  return requestUrl;
821
818
  }
822
819
  _deselectCurrentNode() {
823
- const node = this.getSelectedNode();
820
+ let node = this.getSelectedNode();
824
821
  if (node) {
825
822
  this.removeFromSelection(node);
826
823
  }
@@ -828,9 +825,9 @@ class TreeElement {
828
825
 
829
826
  // Deselect the children of the node.
830
827
  _deselectNodes(parentNode) {
831
- const selectedNodesUnderParent = this._selectNodeHandler.getSelectedNodesUnder(parentNode);
832
- for (const n of selectedNodesUnderParent) {
833
- this._selectNodeHandler.removeFromSelection(n);
828
+ let selectedNodesUnderParent = this._selectNodeHandler._getSelectedNodesUnder(parentNode);
829
+ for (let n of selectedNodesUnderParent) {
830
+ this._selectNodeHandler._removeFromSelection(n);
834
831
  }
835
832
  }
836
833
 
@@ -848,7 +845,7 @@ class TreeElement {
848
845
  return 0;
849
846
  }
850
847
  _getNodeElement(element) {
851
- const node = this.getNode(element);
848
+ let node = this.getNode(element);
852
849
  if (node) {
853
850
  return this._getNodeElementForNode(node);
854
851
  } else {
@@ -863,13 +860,13 @@ class TreeElement {
863
860
  }
864
861
  }
865
862
  _getNodeIdToBeSelected() {
866
- return this._saveStateHandler.getNodeIdToBeSelected();
863
+ return this._saveStateHandler._getNodeIdToBeSelected();
867
864
  }
868
865
  _initData() {
869
866
  if (this._options.data) {
870
867
  this.loadData(this._options.data);
871
868
  } else {
872
- const dataUrl = this._createRequestUrl();
869
+ let dataUrl = this._createRequestUrl();
873
870
  if (dataUrl) {
874
871
  void this.loadDataFromUrl();
875
872
  } else {
@@ -878,16 +875,16 @@ class TreeElement {
878
875
  }
879
876
  }
880
877
  _initTree(data) {
881
- const doInit = () => {
878
+ let doInit = () => {
882
879
  if (!this._isInitialized) {
883
880
  this._isInitialized = true;
884
881
  this._triggerEvent("tree.init");
885
882
  }
886
883
  };
887
- this.tree = new this._options.nodeClass(null, true, this._options.nodeClass);
888
- this._selectNodeHandler.clear();
889
- this.tree.loadFromData(data);
890
- const mustLoadOnDemand = this._setInitialState();
884
+ this._tree = new this._options.nodeClass(null, true, this._options.nodeClass);
885
+ this._selectNodeHandler._clear();
886
+ this._tree.loadFromData(data);
887
+ let mustLoadOnDemand = this._setInitialState();
891
888
  this._refreshElements(null);
892
889
  if (mustLoadOnDemand) {
893
890
  // Load data on demand and then init the tree
@@ -899,7 +896,7 @@ class TreeElement {
899
896
 
900
897
  // Does an HTML element of the tree have the focus?
901
898
  _isFocusOnTree() {
902
- const activeElement = document.activeElement;
899
+ let activeElement = document.activeElement;
903
900
 
904
901
  /* istanbul ignore if */
905
902
  if (!activeElement) {
@@ -907,15 +904,15 @@ class TreeElement {
907
904
  }
908
905
 
909
906
  // The keyboard must still work for input elements.
910
- const tagName = activeElement.tagName;
907
+ let tagName = activeElement.tagName;
911
908
  if (tagName !== "A" && tagName !== "SPAN") {
912
909
  return false;
913
910
  }
914
- const node = this.getNode(activeElement);
915
- return node?.tree === this.tree;
911
+ let node = this.getNode(activeElement);
912
+ return node?.tree === this._tree;
916
913
  }
917
914
  _isSelectedNodeInSubtree(subtree) {
918
- const selectedNode = this.getSelectedNode();
915
+ let selectedNode = this.getSelectedNode();
919
916
  if (!selectedNode) {
920
917
  return false;
921
918
  } else {
@@ -937,15 +934,15 @@ class TreeElement {
937
934
  if (!this._options.dragAndDrop) {
938
935
  return false;
939
936
  }
940
- return this._dndHandler.mouseCapture(positionInfo);
937
+ return this._dndHandler._mouseCapture(positionInfo);
941
938
  }
942
939
  _mouseDrag(positionInfo) {
943
940
  /* istanbul ignore if */
944
941
  if (!this._options.dragAndDrop) {
945
942
  return false;
946
943
  }
947
- const result = this._dndHandler.mouseDrag(positionInfo);
948
- this._scrollHandler.checkScrolling(positionInfo);
944
+ let result = this._dndHandler._mouseDrag(positionInfo);
945
+ this._scrollHandler._checkScrolling(positionInfo);
949
946
  return result;
950
947
  }
951
948
  _mouseStart(positionInfo) {
@@ -953,18 +950,18 @@ class TreeElement {
953
950
  if (!this._options.dragAndDrop) {
954
951
  return false;
955
952
  }
956
- return this._dndHandler.mouseStart(positionInfo);
953
+ return this._dndHandler._mouseStart(positionInfo);
957
954
  }
958
955
  _mouseStop(positionInfo) {
959
956
  /* istanbul ignore if */
960
957
  if (!this._options.dragAndDrop) {
961
958
  return false;
962
959
  }
963
- this._scrollHandler.stopScrolling();
964
- return this._dndHandler.mouseStop(positionInfo);
960
+ this._scrollHandler._stopScrolling();
961
+ return this._dndHandler._mouseStop(positionInfo);
965
962
  }
966
963
  _openParents(node) {
967
- const parent = node.parent;
964
+ let parent = node.parent;
968
965
  if (parent?.parent && !parent.is_open) {
969
966
  void this.openNode(parent, false);
970
967
  }
@@ -975,48 +972,48 @@ class TreeElement {
975
972
  from_node: redraw this subtree
976
973
  */
977
974
  _refreshElements(fromNode) {
978
- const mustSetFocus = this._isFocusOnTree();
979
- const mustSelect = fromNode ? this._isSelectedNodeInSubtree(fromNode) : false;
980
- this._renderer.render(fromNode);
975
+ let mustSetFocus = this._isFocusOnTree();
976
+ let mustSelect = fromNode ? this._isSelectedNodeInSubtree(fromNode) : false;
977
+ this._renderer._render(fromNode);
981
978
  if (mustSelect) {
982
979
  this._selectCurrentNode(mustSetFocus);
983
980
  }
984
981
  this._triggerEvent("tree.refresh");
985
982
  }
986
983
  _saveState() {
987
- this._saveStateHandler.saveState();
984
+ this._saveStateHandler._saveState();
988
985
  }
989
986
  _selectCurrentNode(mustSetFocus) {
990
- const node = this.getSelectedNode();
987
+ let node = this.getSelectedNode();
991
988
  if (node) {
992
- const nodeElement = this._getNodeElementForNode(node);
993
- nodeElement.select(mustSetFocus);
989
+ let nodeElement = this._getNodeElementForNode(node);
990
+ nodeElement._select(mustSetFocus);
994
991
  }
995
992
  }
996
993
 
997
994
  // Set initial state, either by restoring the state or auto-opening nodes
998
995
  // result: must load nodes on demand?
999
996
  _setInitialState() {
1000
- const restoreState = () => {
997
+ let restoreState = () => {
1001
998
  // result: is state restored, must load on demand?
1002
- const state = this._saveStateHandler.getStateFromStorage();
999
+ let state = this._saveStateHandler._getStateFromStorage();
1003
1000
  if (!state) {
1004
1001
  return [false, false];
1005
1002
  } else {
1006
- const mustLoadOnDemand = this._saveStateHandler.setInitialState(state);
1003
+ let mustLoadOnDemand = this._saveStateHandler._setInitialState(state);
1007
1004
 
1008
1005
  // return true: the state is restored
1009
1006
  return [true, mustLoadOnDemand];
1010
1007
  }
1011
1008
  };
1012
- const autoOpenNodes = () => {
1009
+ let autoOpenNodes = () => {
1013
1010
  // result: must load on demand?
1014
1011
  if (this._options.autoOpen === false) {
1015
1012
  return false;
1016
1013
  }
1017
- const maxLevel = this._getAutoOpenMaxLevel();
1014
+ let maxLevel = this._getAutoOpenMaxLevel();
1018
1015
  let mustLoadOnDemand = false;
1019
- this.tree.iterate((node, level) => {
1016
+ this._tree.iterate((node, level) => {
1020
1017
  if (node.load_on_demand) {
1021
1018
  mustLoadOnDemand = true;
1022
1019
  return false;
@@ -1040,29 +1037,29 @@ class TreeElement {
1040
1037
  // Set the initial state for nodes that are loaded on demand
1041
1038
  async _setInitialStateOnDemand() {
1042
1039
  return new Promise(resolve => {
1043
- const restoreState = () => {
1044
- const state = this._saveStateHandler.getStateFromStorage();
1040
+ let restoreState = () => {
1041
+ let state = this._saveStateHandler._getStateFromStorage();
1045
1042
  if (!state) {
1046
1043
  return false;
1047
1044
  } else {
1048
- void this._saveStateHandler.setInitialStateOnDemand(state).then(() => {
1045
+ void this._saveStateHandler._setInitialStateOnDemand(state).then(() => {
1049
1046
  resolve();
1050
1047
  });
1051
1048
  return true;
1052
1049
  }
1053
1050
  };
1054
- const autoOpenNodes = () => {
1055
- const maxLevel = this._getAutoOpenMaxLevel();
1051
+ let autoOpenNodes = () => {
1052
+ let maxLevel = this._getAutoOpenMaxLevel();
1056
1053
  let loadingCount = 0;
1057
- const loadAndOpenNode = node => {
1054
+ let loadAndOpenNode = node => {
1058
1055
  loadingCount += 1;
1059
1056
  void this.openNode(node, false).then(() => {
1060
1057
  loadingCount -= 1;
1061
1058
  openNodes();
1062
1059
  });
1063
1060
  };
1064
- const openNodes = () => {
1065
- this.tree.iterate((node, level) => {
1061
+ let openNodes = () => {
1062
+ this._tree.iterate((node, level) => {
1066
1063
  if (node.load_on_demand) {
1067
1064
  if (!node.is_loading) {
1068
1065
  loadAndOpenNode(node);