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
@@ -1,35 +1,19 @@
1
1
  import { getPositionInfoFromMouseEvent, getPositionInfoFromTouch } from './mouseUtils.js';
2
2
 
3
3
  class MouseHandler {
4
- _classNames;
5
- _element;
6
- _getMouseDelay;
7
- _getNode;
8
- _isMouseDelayMet;
9
- _isMouseStarted;
10
- _mouseDelayTimer;
11
- _mouseDownInfo;
12
- _onClickButton;
13
- _onClickTitle;
14
- _onMouseCapture;
15
- _onMouseDrag;
16
- _onMouseStart;
17
- _onMouseStop;
18
- _triggerEvent;
19
- _useContextMenu;
20
4
  constructor({
21
- classNames,
22
- element,
23
- getMouseDelay,
24
- getNode,
25
- onClickButton,
26
- onClickTitle,
27
- onMouseCapture,
28
- onMouseDrag,
29
- onMouseStart,
30
- onMouseStop,
31
- triggerEvent,
32
- useContextMenu
5
+ _classNames: classNames,
6
+ _element: element,
7
+ _getMouseDelay: getMouseDelay,
8
+ _getNode: getNode,
9
+ _onClickButton: onClickButton,
10
+ _onClickTitle: onClickTitle,
11
+ _onMouseCapture: onMouseCapture,
12
+ _onMouseDrag: onMouseDrag,
13
+ _onMouseStart: onMouseStart,
14
+ _onMouseStop: onMouseStop,
15
+ _triggerEvent: triggerEvent,
16
+ _useContextMenu: useContextMenu
33
17
  }) {
34
18
  this._classNames = classNames;
35
19
  this._element = element;
@@ -59,7 +43,7 @@ class MouseHandler {
59
43
  this._isMouseDelayMet = false;
60
44
  this._mouseDownInfo = null;
61
45
  }
62
- deinit() {
46
+ _deinit() {
63
47
  this._element.removeEventListener("click", this._handleClick);
64
48
  this._element.removeEventListener("dblclick", this._handleDblclick);
65
49
  if (this._useContextMenu) {
@@ -70,9 +54,9 @@ class MouseHandler {
70
54
  this._removeMouseMoveEventListeners();
71
55
  }
72
56
  _getClickTarget(element) {
73
- const button = element.closest(`.${this._classNames.toggler}`);
57
+ let button = element.closest(`.${this._classNames.toggler}`);
74
58
  if (button) {
75
- const node = this._getNode(button);
59
+ let node = this._getNode(button);
76
60
  if (node) {
77
61
  return {
78
62
  node,
@@ -80,9 +64,9 @@ class MouseHandler {
80
64
  };
81
65
  }
82
66
  } else {
83
- const treeElement = element.closest(`.${this._classNames.element}`);
67
+ let treeElement = element.closest(`.${this._classNames.element}`);
84
68
  if (treeElement) {
85
- const node = this._getNode(treeElement);
69
+ let node = this._getNode(treeElement);
86
70
  if (node) {
87
71
  return {
88
72
  node,
@@ -97,7 +81,7 @@ class MouseHandler {
97
81
  if (!e.target) {
98
82
  return;
99
83
  }
100
- const clickTarget = this._getClickTarget(e.target);
84
+ let clickTarget = this._getClickTarget(e.target);
101
85
  if (!clickTarget) {
102
86
  return;
103
87
  }
@@ -123,9 +107,9 @@ class MouseHandler {
123
107
  if (!e.target) {
124
108
  return;
125
109
  }
126
- const div = e.target.closest(`ul.${this._classNames.tree} .${this._classNames.element}`);
110
+ let div = e.target.closest(`ul.${this._classNames.tree} .${this._classNames.element}`);
127
111
  if (div) {
128
- const node = this._getNode(div);
112
+ let node = this._getNode(div);
129
113
  if (node) {
130
114
  e.preventDefault();
131
115
  e.stopPropagation();
@@ -142,7 +126,7 @@ class MouseHandler {
142
126
  if (!e.target) {
143
127
  return;
144
128
  }
145
- const clickTarget = this._getClickTarget(e.target);
129
+ let clickTarget = this._getClickTarget(e.target);
146
130
  if (clickTarget?.type === "label") {
147
131
  this._triggerEvent("tree.dblclick", {
148
132
  node: clickTarget.node,
@@ -207,7 +191,7 @@ class MouseHandler {
207
191
  document.addEventListener("touchend", this._touchEnd, {
208
192
  passive: false
209
193
  });
210
- const mouseDelay = this._getMouseDelay();
194
+ let mouseDelay = this._getMouseDelay();
211
195
  if (mouseDelay) {
212
196
  this._startMouseDelayTimer(mouseDelay);
213
197
  } else {
@@ -219,7 +203,7 @@ class MouseHandler {
219
203
  if (e.button !== 0) {
220
204
  return;
221
205
  }
222
- const result = this._handleMouseDown(getPositionInfoFromMouseEvent(e));
206
+ let result = this._handleMouseDown(getPositionInfoFromMouseEvent(e));
223
207
  if (result && e.cancelable) {
224
208
  e.preventDefault();
225
209
  }
@@ -251,7 +235,7 @@ class MouseHandler {
251
235
  if (e.touches.length > 1) {
252
236
  return;
253
237
  }
254
- const touch = e.touches[0];
238
+ let touch = e.touches[0];
255
239
  if (!touch) {
256
240
  return;
257
241
  }
@@ -261,7 +245,7 @@ class MouseHandler {
261
245
  if (e.touches.length > 1) {
262
246
  return;
263
247
  }
264
- const touch = e.touches[0];
248
+ let touch = e.touches[0];
265
249
  if (!touch) {
266
250
  return;
267
251
  }
@@ -271,7 +255,7 @@ class MouseHandler {
271
255
  if (e.touches.length > 1) {
272
256
  return;
273
257
  }
274
- const touch = e.touches[0];
258
+ let touch = e.touches[0];
275
259
  if (!touch) {
276
260
  return;
277
261
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mouseHandler.js","sources":["../src/mouseHandler.ts"],"sourcesContent":["import type { ClassNames } from \"./classNames\";\nimport type { TriggerEvent } from \"./methodTypes\";\nimport type { PositionInfo } from \"./mouseUtils\";\nimport type { Node } from \"./node\";\n\nimport {\n getPositionInfoFromMouseEvent,\n getPositionInfoFromTouch,\n} from \"./mouseUtils\";\n\nexport type GetMouseDelay = () => number;\nexport type GetNode = (element: HTMLElement) => Node | null;\nexport type MouseCapture = (positionInfo: PositionInfo) => boolean | null;\nexport type MouseStart = (positionInfo: PositionInfo) => boolean;\n\ninterface ClickTarget {\n node: Node;\n type: \"button\" | \"label\";\n}\n\ninterface MouseHandlerParams {\n classNames: ClassNames;\n element: HTMLElement;\n getMouseDelay: () => number;\n getNode: GetNode;\n onClickButton: (node: Node) => void;\n onClickTitle: (node: Node) => void;\n onMouseCapture: MouseCapture;\n onMouseDrag: (positionInfo: PositionInfo) => void;\n onMouseStart: MouseStart;\n onMouseStop: (positionInfo: PositionInfo) => void;\n triggerEvent: TriggerEvent;\n useContextMenu: boolean;\n}\n\nclass MouseHandler {\n private classNames: ClassNames;\n private element: HTMLElement;\n private getMouseDelay: GetMouseDelay;\n private getNode: GetNode;\n\n private isMouseDelayMet: boolean;\n\n private isMouseStarted: boolean;\n\n private mouseDelayTimer: null | number;\n\n private mouseDownInfo: null | PositionInfo;\n private onClickButton: (node: Node) => void;\n private onClickTitle: (node: Node) => void;\n\n private onMouseCapture: MouseCapture;\n\n private onMouseDrag: (positionInfo: PositionInfo) => void;\n\n private onMouseStart: MouseStart;\n\n private onMouseStop: (positionInfo: PositionInfo) => void;\n\n private triggerEvent: TriggerEvent;\n private useContextMenu: boolean;\n constructor({\n classNames,\n element,\n getMouseDelay,\n getNode,\n onClickButton,\n onClickTitle,\n onMouseCapture,\n onMouseDrag,\n onMouseStart,\n onMouseStop,\n triggerEvent,\n useContextMenu,\n }: MouseHandlerParams) {\n this.classNames = classNames;\n this.element = element;\n this.getMouseDelay = getMouseDelay;\n this.getNode = getNode;\n this.onClickButton = onClickButton;\n this.onClickTitle = onClickTitle;\n this.onMouseCapture = onMouseCapture;\n this.onMouseDrag = onMouseDrag;\n this.onMouseStart = onMouseStart;\n this.onMouseStop = onMouseStop;\n this.triggerEvent = triggerEvent;\n this.useContextMenu = useContextMenu;\n\n element.addEventListener(\"click\", this.handleClick);\n element.addEventListener(\"dblclick\", this.handleDblclick);\n element.addEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n element.addEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n\n if (useContextMenu) {\n element.addEventListener(\"contextmenu\", this.handleContextmenu);\n }\n\n this.isMouseStarted = false;\n this.mouseDelayTimer = null;\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n }\n public deinit(): void {\n this.element.removeEventListener(\"click\", this.handleClick);\n this.element.removeEventListener(\"dblclick\", this.handleDblclick);\n\n if (this.useContextMenu) {\n this.element.removeEventListener(\n \"contextmenu\",\n this.handleContextmenu,\n );\n }\n\n this.element.removeEventListener(\"mousedown\", this.mouseDown);\n this.element.removeEventListener(\"touchstart\", this.touchStart);\n this.removeMouseMoveEventListeners();\n }\n private getClickTarget(element: HTMLElement): ClickTarget | null {\n const button = element.closest<HTMLElement>(\n `.${this.classNames.toggler}`,\n );\n\n if (button) {\n const node = this.getNode(button);\n\n if (node) {\n return {\n node,\n type: \"button\",\n };\n }\n } else {\n const treeElement = element.closest<HTMLElement>(\n `.${this.classNames.element}`,\n );\n\n if (treeElement) {\n const node = this.getNode(treeElement);\n if (node) {\n return {\n node,\n type: \"label\",\n };\n }\n }\n }\n\n return null;\n }\n private handleClick = (e: MouseEvent): void => {\n if (!e.target) {\n return;\n }\n\n const clickTarget = this.getClickTarget(e.target as HTMLElement);\n\n if (!clickTarget) {\n return;\n }\n\n switch (clickTarget.type) {\n case \"button\":\n this.onClickButton(clickTarget.node);\n\n e.preventDefault();\n e.stopPropagation();\n break;\n\n case \"label\": {\n if (this.triggerEvent(\"tree.click\", {\n node: clickTarget.node,\n originalEvent: e,\n })) {\n this.onClickTitle(clickTarget.node);\n }\n break;\n }\n }\n };\n\n private handleContextmenu = (e: MouseEvent) => {\n if (!e.target) {\n return;\n }\n\n const div = (e.target as HTMLElement).closest<HTMLElement>(\n `ul.${this.classNames.tree} .${this.classNames.element}`,\n );\n\n if (div) {\n const node = this.getNode(div);\n if (node) {\n e.preventDefault();\n e.stopPropagation();\n\n this.triggerEvent(\"tree.contextmenu\", {\n node,\n originalEvent: e,\n });\n return false;\n }\n }\n\n return null;\n };\n\n private handleDblclick = (e: MouseEvent): void => {\n if (!e.target) {\n return;\n }\n\n const clickTarget = this.getClickTarget(e.target as HTMLElement);\n\n if (clickTarget?.type === \"label\") {\n this.triggerEvent(\"tree.dblclick\", {\n node: clickTarget.node,\n originalEvent: e,\n });\n }\n };\n\n private handleMouseDown(positionInfo: PositionInfo): boolean {\n // We may have missed mouseup (out of window)\n if (this.isMouseStarted) {\n this.handleMouseUp(positionInfo);\n }\n\n this.mouseDownInfo = positionInfo;\n\n if (!this.onMouseCapture(positionInfo)) {\n return false;\n }\n\n this.handleStartMouse();\n\n return true;\n }\n\n private handleMouseMove(\n e: MouseEvent | TouchEvent,\n positionInfo: PositionInfo,\n ): void {\n if (this.isMouseStarted) {\n this.onMouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n return;\n }\n\n if (!this.isMouseDelayMet) {\n return;\n }\n\n if (this.mouseDownInfo) {\n this.isMouseStarted = this.onMouseStart(this.mouseDownInfo);\n }\n\n if (this.isMouseStarted) {\n this.onMouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n } else {\n this.handleMouseUp(positionInfo);\n }\n }\n private handleMouseUp(positionInfo: PositionInfo): void {\n this.removeMouseMoveEventListeners();\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n\n if (this.isMouseStarted) {\n this.isMouseStarted = false;\n this.onMouseStop(positionInfo);\n }\n }\n\n private handleStartMouse(): void {\n document.addEventListener(\"mousemove\", this.mouseMove, {\n passive: false,\n });\n document.addEventListener(\"touchmove\", this.touchMove, {\n passive: false,\n });\n document.addEventListener(\"mouseup\", this.mouseUp, { passive: false });\n document.addEventListener(\"touchend\", this.touchEnd, {\n passive: false,\n });\n\n const mouseDelay = this.getMouseDelay();\n\n if (mouseDelay) {\n this.startMouseDelayTimer(mouseDelay);\n } else {\n this.isMouseDelayMet = true;\n }\n }\n\n private mouseDown = (e: MouseEvent): void => {\n // Left mouse button?\n if (e.button !== 0) {\n return;\n }\n\n const result = this.handleMouseDown(getPositionInfoFromMouseEvent(e));\n\n if (result && e.cancelable) {\n e.preventDefault();\n }\n };\n\n private mouseMove = (e: MouseEvent): void => {\n this.handleMouseMove(e, getPositionInfoFromMouseEvent(e));\n };\n\n private mouseUp = (e: MouseEvent): void => {\n this.handleMouseUp(getPositionInfoFromMouseEvent(e));\n };\n\n private removeMouseMoveEventListeners() {\n document.removeEventListener(\"mousemove\", this.mouseMove);\n document.removeEventListener(\"touchmove\", this.touchMove);\n document.removeEventListener(\"mouseup\", this.mouseUp);\n document.removeEventListener(\"touchend\", this.touchEnd);\n }\n\n private startMouseDelayTimer(mouseDelay: number): void {\n if (this.mouseDelayTimer) {\n clearTimeout(this.mouseDelayTimer);\n }\n\n this.mouseDelayTimer = window.setTimeout(() => {\n if (this.mouseDownInfo) {\n this.isMouseDelayMet = true;\n }\n }, mouseDelay);\n\n this.isMouseDelayMet = false;\n }\n\n private touchEnd = (e: TouchEvent): void => {\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.touches[0];\n\n if (!touch) {\n return;\n }\n\n this.handleMouseUp(getPositionInfoFromTouch(touch, e));\n };\n\n private touchMove = (e: TouchEvent): void => {\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.touches[0];\n\n if (!touch) {\n return;\n }\n\n this.handleMouseMove(e, getPositionInfoFromTouch(touch, e));\n };\n\n private touchStart = (e: TouchEvent): void => {\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.touches[0];\n\n if (!touch) {\n return;\n }\n\n this.handleMouseDown(getPositionInfoFromTouch(touch, e));\n };\n}\n\nexport default MouseHandler;\n"],"names":["classNames","element","getMouseDelay","getNode","isMouseDelayMet","isMouseStarted","mouseDelayTimer","mouseDownInfo","onClickButton","onClickTitle","onMouseCapture","onMouseDrag","onMouseStart","onMouseStop","triggerEvent","useContextMenu","handleClick","handleDblclick","mouseDown","touchStart","handleContextmenu","removeMouseMoveEventListeners","getClickTarget","handleMouseDown","handleMouseUp","handleStartMouse","handleMouseMove","mouseMove","touchMove","mouseUp","touchEnd","startMouseDelayTimer"],"mappings":"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"}
1
+ {"version":3,"file":"mouseHandler.js","sources":["../src/mouseHandler.ts"],"sourcesContent":["import type { ClassNames } from \"./classNames\";\nimport type { TriggerEvent } from \"./methodTypes\";\nimport type { PositionInfo } from \"./mouseUtils\";\nimport type { Node } from \"./node\";\n\nimport {\n getPositionInfoFromMouseEvent,\n getPositionInfoFromTouch,\n} from \"./mouseUtils\";\n\nexport type GetMouseDelay = () => number;\nexport type GetNode = (element: HTMLElement) => Node | null;\nexport type MouseCapture = (positionInfo: PositionInfo) => boolean | null;\nexport type MouseStart = (positionInfo: PositionInfo) => boolean;\n\ninterface ClickTarget {\n node: Node;\n type: \"button\" | \"label\";\n}\n\ninterface MouseHandlerParams {\n classNames: ClassNames;\n element: HTMLElement;\n getMouseDelay: () => number;\n getNode: GetNode;\n onClickButton: (node: Node) => void;\n onClickTitle: (node: Node) => void;\n onMouseCapture: MouseCapture;\n onMouseDrag: (positionInfo: PositionInfo) => void;\n onMouseStart: MouseStart;\n onMouseStop: (positionInfo: PositionInfo) => void;\n triggerEvent: TriggerEvent;\n useContextMenu: boolean;\n}\n\nclass MouseHandler {\n private classNames: ClassNames;\n private element: HTMLElement;\n private getMouseDelay: GetMouseDelay;\n private getNode: GetNode;\n\n private isMouseDelayMet: boolean;\n\n private isMouseStarted: boolean;\n\n private mouseDelayTimer: null | number;\n\n private mouseDownInfo: null | PositionInfo;\n private onClickButton: (node: Node) => void;\n private onClickTitle: (node: Node) => void;\n\n private onMouseCapture: MouseCapture;\n\n private onMouseDrag: (positionInfo: PositionInfo) => void;\n\n private onMouseStart: MouseStart;\n\n private onMouseStop: (positionInfo: PositionInfo) => void;\n\n private triggerEvent: TriggerEvent;\n private useContextMenu: boolean;\n constructor({\n classNames,\n element,\n getMouseDelay,\n getNode,\n onClickButton,\n onClickTitle,\n onMouseCapture,\n onMouseDrag,\n onMouseStart,\n onMouseStop,\n triggerEvent,\n useContextMenu,\n }: MouseHandlerParams) {\n this.classNames = classNames;\n this.element = element;\n this.getMouseDelay = getMouseDelay;\n this.getNode = getNode;\n this.onClickButton = onClickButton;\n this.onClickTitle = onClickTitle;\n this.onMouseCapture = onMouseCapture;\n this.onMouseDrag = onMouseDrag;\n this.onMouseStart = onMouseStart;\n this.onMouseStop = onMouseStop;\n this.triggerEvent = triggerEvent;\n this.useContextMenu = useContextMenu;\n\n element.addEventListener(\"click\", this.handleClick);\n element.addEventListener(\"dblclick\", this.handleDblclick);\n element.addEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n element.addEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n\n if (useContextMenu) {\n element.addEventListener(\"contextmenu\", this.handleContextmenu);\n }\n\n this.isMouseStarted = false;\n this.mouseDelayTimer = null;\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n }\n public deinit(): void {\n this.element.removeEventListener(\"click\", this.handleClick);\n this.element.removeEventListener(\"dblclick\", this.handleDblclick);\n\n if (this.useContextMenu) {\n this.element.removeEventListener(\"contextmenu\", this.handleContextmenu);\n }\n\n this.element.removeEventListener(\"mousedown\", this.mouseDown);\n this.element.removeEventListener(\"touchstart\", this.touchStart);\n this.removeMouseMoveEventListeners();\n }\n private getClickTarget(element: HTMLElement): ClickTarget | null {\n const button = element.closest<HTMLElement>(`.${this.classNames.toggler}`);\n\n if (button) {\n const node = this.getNode(button);\n\n if (node) {\n return {\n node,\n type: \"button\",\n };\n }\n } else {\n const treeElement = element.closest<HTMLElement>(\n `.${this.classNames.element}`,\n );\n\n if (treeElement) {\n const node = this.getNode(treeElement);\n if (node) {\n return {\n node,\n type: \"label\",\n };\n }\n }\n }\n\n return null;\n }\n private handleClick = (e: MouseEvent): void => {\n if (!e.target) {\n return;\n }\n\n const clickTarget = this.getClickTarget(e.target as HTMLElement);\n\n if (!clickTarget) {\n return;\n }\n\n switch (clickTarget.type) {\n case \"button\":\n this.onClickButton(clickTarget.node);\n\n e.preventDefault();\n e.stopPropagation();\n break;\n\n case \"label\": {\n if (\n this.triggerEvent(\"tree.click\", {\n node: clickTarget.node,\n originalEvent: e,\n })\n ) {\n this.onClickTitle(clickTarget.node);\n }\n break;\n }\n }\n };\n\n private handleContextmenu = (e: MouseEvent) => {\n if (!e.target) {\n return;\n }\n\n const div = (e.target as HTMLElement).closest<HTMLElement>(\n `ul.${this.classNames.tree} .${this.classNames.element}`,\n );\n\n if (div) {\n const node = this.getNode(div);\n if (node) {\n e.preventDefault();\n e.stopPropagation();\n\n this.triggerEvent(\"tree.contextmenu\", {\n node,\n originalEvent: e,\n });\n return false;\n }\n }\n\n return null;\n };\n\n private handleDblclick = (e: MouseEvent): void => {\n if (!e.target) {\n return;\n }\n\n const clickTarget = this.getClickTarget(e.target as HTMLElement);\n\n if (clickTarget?.type === \"label\") {\n this.triggerEvent(\"tree.dblclick\", {\n node: clickTarget.node,\n originalEvent: e,\n });\n }\n };\n\n private handleMouseDown(positionInfo: PositionInfo): boolean {\n // We may have missed mouseup (out of window)\n if (this.isMouseStarted) {\n this.handleMouseUp(positionInfo);\n }\n\n this.mouseDownInfo = positionInfo;\n\n if (!this.onMouseCapture(positionInfo)) {\n return false;\n }\n\n this.handleStartMouse();\n\n return true;\n }\n\n private handleMouseMove(\n e: MouseEvent | TouchEvent,\n positionInfo: PositionInfo,\n ): void {\n if (this.isMouseStarted) {\n this.onMouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n return;\n }\n\n if (!this.isMouseDelayMet) {\n return;\n }\n\n if (this.mouseDownInfo) {\n this.isMouseStarted = this.onMouseStart(this.mouseDownInfo);\n }\n\n if (this.isMouseStarted) {\n this.onMouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n } else {\n this.handleMouseUp(positionInfo);\n }\n }\n private handleMouseUp(positionInfo: PositionInfo): void {\n this.removeMouseMoveEventListeners();\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n\n if (this.isMouseStarted) {\n this.isMouseStarted = false;\n this.onMouseStop(positionInfo);\n }\n }\n\n private handleStartMouse(): void {\n document.addEventListener(\"mousemove\", this.mouseMove, {\n passive: false,\n });\n document.addEventListener(\"touchmove\", this.touchMove, {\n passive: false,\n });\n document.addEventListener(\"mouseup\", this.mouseUp, { passive: false });\n document.addEventListener(\"touchend\", this.touchEnd, {\n passive: false,\n });\n\n const mouseDelay = this.getMouseDelay();\n\n if (mouseDelay) {\n this.startMouseDelayTimer(mouseDelay);\n } else {\n this.isMouseDelayMet = true;\n }\n }\n\n private mouseDown = (e: MouseEvent): void => {\n // Left mouse button?\n if (e.button !== 0) {\n return;\n }\n\n const result = this.handleMouseDown(getPositionInfoFromMouseEvent(e));\n\n if (result && e.cancelable) {\n e.preventDefault();\n }\n };\n\n private mouseMove = (e: MouseEvent): void => {\n this.handleMouseMove(e, getPositionInfoFromMouseEvent(e));\n };\n\n private mouseUp = (e: MouseEvent): void => {\n this.handleMouseUp(getPositionInfoFromMouseEvent(e));\n };\n\n private removeMouseMoveEventListeners() {\n document.removeEventListener(\"mousemove\", this.mouseMove);\n document.removeEventListener(\"touchmove\", this.touchMove);\n document.removeEventListener(\"mouseup\", this.mouseUp);\n document.removeEventListener(\"touchend\", this.touchEnd);\n }\n\n private startMouseDelayTimer(mouseDelay: number): void {\n if (this.mouseDelayTimer) {\n clearTimeout(this.mouseDelayTimer);\n }\n\n this.mouseDelayTimer = window.setTimeout(() => {\n if (this.mouseDownInfo) {\n this.isMouseDelayMet = true;\n }\n }, mouseDelay);\n\n this.isMouseDelayMet = false;\n }\n\n private touchEnd = (e: TouchEvent): void => {\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.touches[0];\n\n if (!touch) {\n return;\n }\n\n this.handleMouseUp(getPositionInfoFromTouch(touch, e));\n };\n\n private touchMove = (e: TouchEvent): void => {\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.touches[0];\n\n if (!touch) {\n return;\n }\n\n this.handleMouseMove(e, getPositionInfoFromTouch(touch, e));\n };\n\n private touchStart = (e: TouchEvent): void => {\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.touches[0];\n\n if (!touch) {\n return;\n }\n\n this.handleMouseDown(getPositionInfoFromTouch(touch, e));\n };\n}\n\nexport default MouseHandler;\n"],"names":["classNames","element","getMouseDelay","getNode","onClickButton","onClickTitle","onMouseCapture","onMouseDrag","onMouseStart","onMouseStop","triggerEvent","useContextMenu","handleClick","handleDblclick","mouseDown","touchStart","handleContextmenu","isMouseStarted","mouseDelayTimer","isMouseDelayMet","mouseDownInfo","deinit","removeMouseMoveEventListeners","getClickTarget","handleMouseDown","handleMouseUp","handleStartMouse","handleMouseMove","mouseMove","touchMove","mouseUp","touchEnd","startMouseDelayTimer"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mouseUtils.d.ts","sourceRoot":"","sources":["../src/mouseUtils.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IACzB,aAAa,EAAE,KAAK,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;CACvB;AAED,eAAO,MAAM,6BAA6B,GAAI,GAAG,UAAU,KAAG,YAK5D,CAAC;AAEH,eAAO,MAAM,wBAAwB,GACjC,OAAO,KAAK,EACZ,GAAG,UAAU,KACd,YAKD,CAAC"}
1
+ {"version":3,"file":"mouseUtils.d.ts","sourceRoot":"","sources":["../src/mouseUtils.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,KAAK,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,eAAO,MAAM,6BAA6B,GAAI,GAAG,UAAU,KAAG,YAK5D,CAAC;AAEH,eAAO,MAAM,wBAAwB,GACnC,OAAO,KAAK,EACZ,GAAG,UAAU,KACZ,YAKD,CAAC"}
package/lib/mouseUtils.js CHANGED
@@ -1,10 +1,10 @@
1
- const getPositionInfoFromMouseEvent = e => ({
1
+ let getPositionInfoFromMouseEvent = e => ({
2
2
  originalEvent: e,
3
3
  pageX: e.pageX,
4
4
  pageY: e.pageY,
5
5
  target: e.target
6
6
  });
7
- const getPositionInfoFromTouch = (touch, e) => ({
7
+ let getPositionInfoFromTouch = (touch, e) => ({
8
8
  originalEvent: e,
9
9
  pageX: touch.pageX,
10
10
  pageY: touch.pageY,
@@ -1 +1 @@
1
- {"version":3,"file":"mouseUtils.js","sources":["../src/mouseUtils.ts"],"sourcesContent":["export interface PositionInfo {\n originalEvent: Event;\n pageX: number;\n pageY: number;\n target: HTMLElement;\n}\n\nexport const getPositionInfoFromMouseEvent = (e: MouseEvent): PositionInfo => ({\n originalEvent: e,\n pageX: e.pageX,\n pageY: e.pageY,\n target: e.target as HTMLElement,\n});\n\nexport const getPositionInfoFromTouch = (\n touch: Touch,\n e: TouchEvent,\n): PositionInfo => ({\n originalEvent: e,\n pageX: touch.pageX,\n pageY: touch.pageY,\n target: touch.target as HTMLElement,\n});\n"],"names":[],"mappings":"AAOO,MAAM,6BAA6B,GAAI,CAAa,KAAoB;AAC3E,EAAA,aAAa,EAAE,CAAC;EAChB,KAAK,EAAE,CAAC,CAAC,KAAK;EACd,KAAK,EAAE,CAAC,CAAC,KAAK;EACd,MAAM,EAAE,CAAC,CAAC;AACd,CAAC;MAEY,wBAAwB,GAAG,CACpC,KAAY,EACZ,CAAa,MACG;AAChB,EAAA,aAAa,EAAE,CAAC;EAChB,KAAK,EAAE,KAAK,CAAC,KAAK;EAClB,KAAK,EAAE,KAAK,CAAC,KAAK;EAClB,MAAM,EAAE,KAAK,CAAC;AAClB,CAAC;;"}
1
+ {"version":3,"file":"mouseUtils.js","sources":["../src/mouseUtils.ts"],"sourcesContent":["export interface PositionInfo {\n originalEvent: Event;\n pageX: number;\n pageY: number;\n target: HTMLElement;\n}\n\nexport const getPositionInfoFromMouseEvent = (e: MouseEvent): PositionInfo => ({\n originalEvent: e,\n pageX: e.pageX,\n pageY: e.pageY,\n target: e.target as HTMLElement,\n});\n\nexport const getPositionInfoFromTouch = (\n touch: Touch,\n e: TouchEvent,\n): PositionInfo => ({\n originalEvent: e,\n pageX: touch.pageX,\n pageY: touch.pageY,\n target: touch.target as HTMLElement,\n});\n"],"names":[],"mappings":"AAOO,IAAM,6BAA6B,GAAI,CAAa,KAAoB;AAC7E,EAAA,aAAa,EAAE,CAAC;EAChB,KAAK,EAAE,CAAC,CAAC,KAAK;EACd,KAAK,EAAE,CAAC,CAAC,KAAK;EACd,MAAM,EAAE,CAAC,CAAC;AACZ,CAAC;IAEY,wBAAwB,GAAG,CACtC,KAAY,EACZ,CAAa,MACK;AAClB,EAAA,aAAa,EAAE,CAAC;EAChB,KAAK,EAAE,KAAK,CAAC,KAAK;EAClB,KAAK,EAAE,KAAK,CAAC,KAAK;EAClB,MAAM,EAAE,KAAK,CAAC;AAChB,CAAC;;"}
package/lib/node.d.ts CHANGED
@@ -30,7 +30,8 @@ export declare class Node {
30
30
  [key: string]: unknown;
31
31
  /** The child nodes. */
32
32
  children: Node[];
33
- /** The `li` element, once the node is rendered. */
33
+ /** The `li` element, once the node is rendered. Nodes inside a closed
34
+ * folder are rendered when the folder is opened. */
34
35
  element?: HTMLElement;
35
36
  /** The id from the node data. */
36
37
  id?: NodeId;
package/lib/node.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
package/lib/node.js CHANGED
@@ -30,7 +30,8 @@ class Node {
30
30
 
31
31
  /** The child nodes. */
32
32
  children;
33
- /** The `li` element, once the node is rendered. */
33
+ /** The `li` element, once the node is rendered. Nodes inside a closed
34
+ * folder are rendered when the folder is opened. */
34
35
  element;
35
36
  /** The id from the node data. */
36
37
  id;
@@ -82,8 +83,8 @@ class Node {
82
83
  if (!this.parent) {
83
84
  return null;
84
85
  } else {
85
- const node = this._createNode(nodeInfo);
86
- const childIndex = this.parent.getChildIndex(this);
86
+ let node = this._createNode(nodeInfo);
87
+ let childIndex = this.parent.getChildIndex(this);
87
88
  this.parent.addChildAtPosition(node, childIndex + 1);
88
89
  node._loadChildrenFromData(nodeInfo);
89
90
  return node;
@@ -100,8 +101,8 @@ class Node {
100
101
  if (!this.parent) {
101
102
  return null;
102
103
  } else {
103
- const node = this._createNode(nodeInfo);
104
- const childIndex = this.parent.getChildIndex(this);
104
+ let node = this._createNode(nodeInfo);
105
+ let childIndex = this.parent.getChildIndex(this);
105
106
  this.parent.addChildAtPosition(node, childIndex);
106
107
  node._loadChildrenFromData(nodeInfo);
107
108
  return node;
@@ -146,12 +147,12 @@ class Node {
146
147
  if (!this.parent) {
147
148
  return null;
148
149
  } else {
149
- const newParent = this._createNode(nodeInfo);
150
+ let newParent = this._createNode(nodeInfo);
150
151
  if (this.tree) {
151
152
  newParent._setParent(this.tree);
152
153
  }
153
- const originalParent = this.parent;
154
- for (const child of originalParent.children) {
154
+ let originalParent = this.parent;
155
+ for (let child of originalParent.children) {
155
156
  newParent.addChild(child);
156
157
  }
157
158
  originalParent.children = [];
@@ -167,7 +168,7 @@ class Node {
167
168
  * @group Changing the tree
168
169
  */
169
170
  append(nodeInfo) {
170
- const node = this._createNode(nodeInfo);
171
+ let node = this._createNode(nodeInfo);
171
172
  this.addChild(node);
172
173
  node._loadChildrenFromData(nodeInfo);
173
174
  return node;
@@ -185,7 +186,7 @@ class Node {
185
186
  * @group Searching
186
187
  */
187
188
  filter(f) {
188
- const result = [];
189
+ let result = [];
189
190
  this.iterate(node => {
190
191
  if (f(node)) {
191
192
  result.push(node);
@@ -220,12 +221,12 @@ class Node {
220
221
  * @group Reading data back
221
222
  */
222
223
  getData(includeParent = false) {
223
- const getDataFromNodes = nodes => {
224
+ let getDataFromNodes = nodes => {
224
225
  return nodes.map(node => {
225
- const tmpNode = {};
226
- for (const k in node) {
226
+ let tmpNode = {};
227
+ for (let k in node) {
227
228
  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
+ let v = node[k];
229
230
  tmpNode[k] = v;
230
231
  }
231
232
  }
@@ -252,7 +253,7 @@ class Node {
252
253
  if (!this.hasChildren()) {
253
254
  return null;
254
255
  } else {
255
- const lastChild = this.children[this.children.length - 1];
256
+ let lastChild = this.children[this.children.length - 1];
256
257
  if (!(lastChild.hasChildren() && lastChild.is_open)) {
257
258
  return lastChild;
258
259
  } else {
@@ -289,7 +290,7 @@ class Node {
289
290
  } else if (!this.parent) {
290
291
  return null;
291
292
  } else {
292
- const nextSibling = this.getNextSibling();
293
+ let nextSibling = this.getNextSibling();
293
294
  if (nextSibling) {
294
295
  return nextSibling;
295
296
  } else {
@@ -307,7 +308,7 @@ class Node {
307
308
  if (!this.parent) {
308
309
  return null;
309
310
  } else {
310
- const nextIndex = this.parent.getChildIndex(this) + 1;
311
+ let nextIndex = this.parent.getChildIndex(this) + 1;
311
312
  if (nextIndex < this.parent.children.length) {
312
313
  return this.parent.children[nextIndex] ?? null;
313
314
  } else {
@@ -330,7 +331,7 @@ class Node {
330
331
  if (!this.parent) {
331
332
  return null;
332
333
  } else {
333
- const nextSibling = this.getNextSibling();
334
+ let nextSibling = this.getNextSibling();
334
335
  if (nextSibling) {
335
336
  // Next sibling
336
337
  return nextSibling;
@@ -387,7 +388,7 @@ class Node {
387
388
  * @group Searching
388
389
  */
389
390
  getNodeByNameMustExist(name) {
390
- const node = this.getNodeByCallback(n => n.name === name);
391
+ let node = this.getNodeByCallback(n => n.name === name);
391
392
  if (!node) {
392
393
  throw new Error(`Node with name ${name} not found`);
393
394
  }
@@ -431,7 +432,7 @@ class Node {
431
432
  if (!this.parent) {
432
433
  return null;
433
434
  } else {
434
- const previousSibling = this.getPreviousSibling();
435
+ let previousSibling = this.getPreviousSibling();
435
436
  if (!previousSibling) {
436
437
  return this.getParent();
437
438
  } else if (previousSibling.hasChildren()) {
@@ -451,7 +452,7 @@ class Node {
451
452
  if (!this.parent) {
452
453
  return null;
453
454
  } else {
454
- const previousIndex = this.parent.getChildIndex(this) - 1;
455
+ let previousIndex = this.parent.getChildIndex(this) - 1;
455
456
  if (previousIndex >= 0) {
456
457
  return this.parent.children[previousIndex] ?? null;
457
458
  } else {
@@ -470,7 +471,7 @@ class Node {
470
471
  if (!this.parent) {
471
472
  return null;
472
473
  } else {
473
- const previousSibling = this.getPreviousSibling();
474
+ let previousSibling = this.getPreviousSibling();
474
475
  if (!previousSibling) {
475
476
  return this.getParent();
476
477
  } else if (!previousSibling.hasChildren() || !previousSibling.is_open) {
@@ -498,15 +499,15 @@ class Node {
498
499
  * @hidden
499
500
  */
500
501
  initFromData(data) {
501
- const addNode = nodeData => {
502
+ let addNode = nodeData => {
502
503
  this.setData(nodeData);
503
504
  if (isNodeRecordWithChildren(nodeData) && nodeData.children.length) {
504
505
  addChildren(nodeData.children);
505
506
  }
506
507
  };
507
- const addChildren = childrenData => {
508
- for (const child of childrenData) {
509
- const node = this._createNode();
508
+ let addChildren = childrenData => {
509
+ for (let child of childrenData) {
510
+ let node = this._createNode();
510
511
  node.initFromData(child);
511
512
  this.addChild(node);
512
513
  }
@@ -553,9 +554,9 @@ class Node {
553
554
  * @group Searching
554
555
  */
555
556
  iterate(callback) {
556
- const _iterate = (node, level) => {
557
- for (const child of node.children) {
558
- const result = callback(child, level);
557
+ let _iterate = (node, level) => {
558
+ for (let child of node.children) {
559
+ let result = callback(child, level);
559
560
  if (result && child.hasChildren()) {
560
561
  _iterate(child, level + 1);
561
562
  }
@@ -571,8 +572,8 @@ class Node {
571
572
  */
572
573
  loadFromData(data) {
573
574
  this.removeChildren();
574
- for (const childData of data) {
575
- const node = this._createNode(childData);
575
+ for (let childData of data) {
576
+ let node = this._createNode(childData);
576
577
  this.addChild(node);
577
578
  if (isNodeRecordWithChildren(childData)) {
578
579
  node.loadFromData(childData.children);
@@ -630,7 +631,7 @@ class Node {
630
631
  * @group Changing the tree
631
632
  */
632
633
  prepend(nodeInfo) {
633
- const node = this._createNode(nodeInfo);
634
+ let node = this._createNode(nodeInfo);
634
635
  this.addChildAtPosition(node, 0);
635
636
  node._loadChildrenFromData(nodeInfo);
636
637
  return node;
@@ -692,9 +693,9 @@ class Node {
692
693
  } else if (typeof o === "string") {
693
694
  this.name = o;
694
695
  } else if (typeof o === "object") {
695
- for (const key in o) {
696
+ for (let key in o) {
696
697
  if (Object.prototype.hasOwnProperty.call(o, key)) {
697
- const value = o[key];
698
+ let value = o[key];
698
699
  if (key === "label" || key === "name") {
699
700
  // You can use the 'label' key instead of 'name'; this is a legacy feature
700
701
  if (typeof value === "string") {
@@ -709,7 +710,7 @@ class Node {
709
710
  }
710
711
  }
711
712
  _createNode(nodeData) {
712
- const nodeClass = this._getNodeClass();
713
+ let nodeClass = this._getNodeClass();
713
714
  return new nodeClass(nodeData);
714
715
  }
715
716
  _doRemoveChild(node) {