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/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Html-tree
1
+ # Tree-element
2
2
 
3
3
  Tree widget in plain javascript. No jQuery, no framework, no runtime dependencies.
4
4
 
@@ -11,6 +11,10 @@ Tree widget in plain javascript. No jQuery, no framework, no runtime dependencie
11
11
 
12
12
  Full documentation: https://mbraak.github.io/tree-element/
13
13
 
14
+ npm package: https://www.npmjs.com/package/tree-element
15
+
16
+ ![screenshot](https://raw.github.com/mbraak/tree-element/master/screenshot.png)
17
+
14
18
  ## Install
15
19
 
16
20
  ```sh
@@ -75,32 +79,32 @@ new TreeElement({
75
79
 
76
80
  ## Options
77
81
 
78
- | Option | Default | Description |
79
- | ----------------- | -------------------- | --------------------------------------------------------------------------------- |
80
- | `animationSpeed` | `"fast"` | `"fast"`, `"slow"`, or a number of milliseconds |
81
- | `autoEscape` | `true` | Escape node names. Set to `false` to render html in a name |
82
- | `autoOpen` | `false` | `true` opens everything, a number opens that many levels (`0` is the first level) |
83
- | `buttonLeft` | `true` | Put the open/close button left of the title |
82
+ | Option | Default | Description |
83
+ | ----------------- | ----------------------- | --------------------------------------------------------------------------------- |
84
+ | `animationSpeed` | `"fast"` | `"fast"`, `"slow"`, or a number of milliseconds |
85
+ | `autoEscape` | `true` | Escape node names. Set to `false` to render html in a name |
86
+ | `autoOpen` | `false` | `true` opens everything, a number opens that many levels (`0` is the first level) |
87
+ | `buttonLeft` | `true` | Put the open/close button left of the title |
84
88
  | `classPrefix` | `"tree-element"` | The prefix of all css classes |
85
- | `closedIcon` | `►` (`◄` in rtl) | Html string or element |
89
+ | `closedIcon` | `►` (`◄` in rtl) | Html string or element |
86
90
  | `commonClassName` | `"tree-element-common"` | The class that every element gets |
87
- | `data` | | The nodes to display |
88
- | `dataFilter` | | Transforms the response of `dataUrl` into node data |
89
- | `dataUrl` | `data-url` attribute | Url, or a function returning a url |
90
- | `dragAndDrop` | `false` | Enable drag and drop |
91
- | `keyboardSupport` | `true` | Navigate with the arrow keys |
92
- | `nodeClass` | `Node` | Subclass of `Node` to use for nodes |
93
- | `openFolderDelay` | `500` | Milliseconds before a folder opens while dragging over it. `false` disables it |
94
- | `openedIcon` | `▼` | Html string or element |
95
- | `rtl` | `data-rtl` attribute | Right-to-left rendering |
96
- | `saveState` | `false` | `true`, or a string to use as the storage key |
97
- | `selectable` | `true` | Allow selecting nodes |
98
- | `showEmptyFolder` | `false` | Show the open/close button for nodes without children |
99
- | `slide` | `true` | Animate opening and closing |
100
- | `startDndDelay` | `300` | Milliseconds to hold before a drag starts |
101
- | `tabIndex` | `0` | Tab index of the tree element |
91
+ | `data` | | The nodes to display |
92
+ | `dataFilter` | | Transforms the response of `dataUrl` into node data |
93
+ | `dataUrl` | `data-url` attribute | Url, or a function returning a url |
94
+ | `dragAndDrop` | `false` | Enable drag and drop |
95
+ | `keyboardSupport` | `true` | Navigate with the arrow keys |
96
+ | `nodeClass` | `Node` | Subclass of `Node` to use for nodes |
97
+ | `openFolderDelay` | `500` | Milliseconds before a folder opens while dragging over it. `false` disables it |
98
+ | `openedIcon` | `▼` | Html string or element |
99
+ | `rtl` | `data-rtl` attribute | Right-to-left rendering |
100
+ | `saveState` | `false` | `true`, or a string to use as the storage key |
101
+ | `selectable` | `true` | Allow selecting nodes |
102
+ | `showEmptyFolder` | `false` | Show the open/close button for nodes without children |
103
+ | `slide` | `true` | Animate opening and closing |
104
+ | `startDndDelay` | `300` | Milliseconds to hold before a drag starts |
105
+ | `tabIndex` | `0` | Tab index of the tree element |
102
106
  | `treeClassName` | `"tree-element"` | The class of the root `ul` |
103
- | `useContextMenu` | `true` | Fire `tree.contextmenu` on right click |
107
+ | `useContextMenu` | `true` | Fire `tree.contextmenu` on right click |
104
108
 
105
109
  ### Callbacks
106
110
 
@@ -188,11 +192,11 @@ const data: NodeData[] = [{ name: "root", id: 1 }];
188
192
 
189
193
  ## Entry points
190
194
 
191
- | | |
192
- | ------------------------- | ------------------------------------------------------------ |
193
- | `import "tree-element"` | `lib/index.js`, unbundled es modules |
194
- | `require`, script tag | `tree_element.js`, minified iife exposing the global `TreeElement` |
195
- | `tree-element/tree_element.css` | The stylesheet |
195
+ | | |
196
+ | ------------------------------- | ------------------------------------------------------------------ |
197
+ | `import "tree-element"` | `lib/index.js`, unbundled es modules |
198
+ | `require`, script tag | `tree_element.js`, minified iife exposing the global `TreeElement` |
199
+ | `tree-element/tree_element.css` | The stylesheet |
196
200
 
197
201
  `tree_element.debug.js` is the same bundle without minification.
198
202
 
@@ -216,6 +220,22 @@ pnpm ci # lint, typecheck, check the docs and test
216
220
 
217
221
  `pnpm test` runs the vitest unit tests and the playwright browser tests.
218
222
 
223
+ ### Releasing
224
+
225
+ Describe the changes under "Unreleased" in `CHANGELOG.md` as you go. To release,
226
+ make sure `master` is pushed and CI is green, then run:
227
+
228
+ ```sh
229
+ pnpm release patch # or minor, major, or an explicit version
230
+ ```
231
+
232
+ Add `--dry-run` to see the version bump and changelog change without committing.
233
+
234
+ This bumps the version, moves the unreleased changes in the changelog to the new
235
+ version, commits, tags `v<version>` and pushes. The
236
+ [Release workflow](.github/workflows/release.yml) then runs the checks, publishes
237
+ to npm with provenance and creates the GitHub release.
238
+
219
239
  ## License
220
240
 
221
241
  Apache-2.0. See [LICENSE](LICENSE).
package/lib/animation.js CHANGED
@@ -1,12 +1,12 @@
1
- const getAnimationDuration = duration => {
1
+ let getAnimationDuration = duration => {
2
2
  if (typeof duration === "number") {
3
3
  return duration;
4
4
  }
5
5
  return duration === "slow" ? 600 : 200;
6
6
  };
7
- const slideDown = (element, animationSpeed, onFinished) => {
7
+ let slideDown = (element, animationSpeed, onFinished) => {
8
8
  element.style.display = "block";
9
- const animation = element.animate([{
9
+ let animation = element.animate([{
10
10
  height: "0",
11
11
  overflow: "hidden"
12
12
  }, {
@@ -19,8 +19,8 @@ const slideDown = (element, animationSpeed, onFinished) => {
19
19
  onFinished();
20
20
  };
21
21
  };
22
- const slideUp = (element, animationSpeed, onFinished) => {
23
- const animation = element.animate([{
22
+ let slideUp = (element, animationSpeed, onFinished) => {
23
+ let animation = element.animate([{
24
24
  height: `${element.scrollHeight}px`,
25
25
  overflow: "hidden"
26
26
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"animation.js","sources":["../src/animation.ts"],"sourcesContent":["export type AnimationSpeed = \"fast\" | \"slow\" | number;\n\nexport const getAnimationDuration = (duration: AnimationSpeed): number => {\n if (typeof duration === \"number\") {\n return duration;\n }\n\n return duration === \"slow\" ? 600 : 200;\n};\n\nexport const slideDown = (\n element: HTMLElement,\n animationSpeed: AnimationSpeed,\n onFinished: () => void,\n): void => {\n element.style.display = \"block\";\n\n const animation = element.animate(\n [\n { height: \"0\", overflow: \"hidden\" },\n { height: `${element.scrollHeight}px`, overflow: \"hidden\" },\n ],\n { duration: getAnimationDuration(animationSpeed) },\n );\n\n animation.onfinish = () => {\n onFinished();\n };\n};\n\nexport const slideUp = (\n element: HTMLElement,\n animationSpeed: AnimationSpeed,\n onFinished: () => void,\n): void => {\n const animation = element.animate(\n [\n { height: `${element.scrollHeight}px`, overflow: \"hidden\" },\n { height: \"0\", overflow: \"hidden\" },\n ],\n { duration: getAnimationDuration(animationSpeed) },\n );\n\n animation.onfinish = () => {\n element.style.display = \"none\";\n onFinished();\n };\n};"],"names":[],"mappings":"AAEO,MAAM,oBAAoB,GAAI,QAAwB,IAAa;AACxE,EAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAChC,IAAA,OAAO,QAAQ;AACjB,EAAA;AAEA,EAAA,OAAO,QAAQ,KAAK,MAAM,GAAG,GAAG,GAAG,GAAG;AACxC;AAEO,MAAM,SAAS,GAAG,CACvB,OAAoB,EACpB,cAA8B,EAC9B,UAAsB,KACb;AACT,EAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;AAE/B,EAAA,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAC/B,CACE;AAAE,IAAA,MAAM,EAAE,GAAG;AAAE,IAAA,QAAQ,EAAE;AAAS,GAAC,EACnC;AAAE,IAAA,MAAM,EAAE,CAAA,EAAG,OAAO,CAAC,YAAY,CAAA,EAAA,CAAI;AAAE,IAAA,QAAQ,EAAE;AAAS,GAAC,CAC5D,EACD;IAAE,QAAQ,EAAE,oBAAoB,CAAC,cAAc;AAAE,GACnD,CAAC;EAED,SAAS,CAAC,QAAQ,GAAG,MAAM;AACzB,IAAA,UAAU,EAAE;EACd,CAAC;AACH;AAEO,MAAM,OAAO,GAAG,CACrB,OAAoB,EACpB,cAA8B,EAC9B,UAAsB,KACb;AACT,EAAA,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAC/B,CACE;AAAE,IAAA,MAAM,EAAE,CAAA,EAAG,OAAO,CAAC,YAAY,CAAA,EAAA,CAAI;AAAE,IAAA,QAAQ,EAAE;AAAS,GAAC,EAC3D;AAAE,IAAA,MAAM,EAAE,GAAG;AAAE,IAAA,QAAQ,EAAE;AAAS,GAAC,CACpC,EACD;IAAE,QAAQ,EAAE,oBAAoB,CAAC,cAAc;AAAE,GACnD,CAAC;EAED,SAAS,CAAC,QAAQ,GAAG,MAAM;AACzB,IAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;AAC9B,IAAA,UAAU,EAAE;EACd,CAAC;AACH;;"}
1
+ {"version":3,"file":"animation.js","sources":["../src/animation.ts"],"sourcesContent":["export type AnimationSpeed = \"fast\" | \"slow\" | number;\n\nexport const getAnimationDuration = (duration: AnimationSpeed): number => {\n if (typeof duration === \"number\") {\n return duration;\n }\n\n return duration === \"slow\" ? 600 : 200;\n};\n\nexport const slideDown = (\n element: HTMLElement,\n animationSpeed: AnimationSpeed,\n onFinished: () => void,\n): void => {\n element.style.display = \"block\";\n\n const animation = element.animate(\n [\n { height: \"0\", overflow: \"hidden\" },\n { height: `${element.scrollHeight}px`, overflow: \"hidden\" },\n ],\n { duration: getAnimationDuration(animationSpeed) },\n );\n\n animation.onfinish = () => {\n onFinished();\n };\n};\n\nexport const slideUp = (\n element: HTMLElement,\n animationSpeed: AnimationSpeed,\n onFinished: () => void,\n): void => {\n const animation = element.animate(\n [\n { height: `${element.scrollHeight}px`, overflow: \"hidden\" },\n { height: \"0\", overflow: \"hidden\" },\n ],\n { duration: getAnimationDuration(animationSpeed) },\n );\n\n animation.onfinish = () => {\n element.style.display = \"none\";\n onFinished();\n };\n};\n"],"names":[],"mappings":"AAEO,IAAM,oBAAoB,GAAI,QAAwB,IAAa;AACxE,EAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAChC,IAAA,OAAO,QAAQ;AACjB,EAAA;AAEA,EAAA,OAAO,QAAQ,KAAK,MAAM,GAAG,GAAG,GAAG,GAAG;AACxC;AAEO,IAAM,SAAS,GAAG,CACvB,OAAoB,EACpB,cAA8B,EAC9B,UAAsB,KACb;AACT,EAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;AAE/B,EAAA,IAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAC/B,CACE;AAAE,IAAA,MAAM,EAAE,GAAG;AAAE,IAAA,QAAQ,EAAE;AAAS,GAAC,EACnC;AAAE,IAAA,MAAM,EAAE,CAAA,EAAG,OAAO,CAAC,YAAY,CAAA,EAAA,CAAI;AAAE,IAAA,QAAQ,EAAE;AAAS,GAAC,CAC5D,EACD;IAAE,QAAQ,EAAE,oBAAoB,CAAC,cAAc;AAAE,GACnD,CAAC;EAED,SAAS,CAAC,QAAQ,GAAG,MAAM;AACzB,IAAA,UAAU,EAAE;EACd,CAAC;AACH;AAEO,IAAM,OAAO,GAAG,CACrB,OAAoB,EACpB,cAA8B,EAC9B,UAAsB,KACb;AACT,EAAA,IAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAC/B,CACE;AAAE,IAAA,MAAM,EAAE,CAAA,EAAG,OAAO,CAAC,YAAY,CAAA,EAAA,CAAI;AAAE,IAAA,QAAQ,EAAE;AAAS,GAAC,EAC3D;AAAE,IAAA,MAAM,EAAE,GAAG;AAAE,IAAA,QAAQ,EAAE;AAAS,GAAC,CACpC,EACD;IAAE,QAAQ,EAAE,oBAAoB,CAAC,cAAc;AAAE,GACnD,CAAC;EAED,SAAS,CAAC,QAAQ,GAAG,MAAM;AACzB,IAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;AAC9B,IAAA,UAAU,EAAE;EACd,CAAC;AACH;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"classNames.d.ts","sourceRoot":"","sources":["../src/classNames.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAOnD,QAAA,MAAM,gBAAgB,GAAI,kDAIvB,iBAAiB,KAAG,UAwBrB,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"classNames.d.ts","sourceRoot":"","sources":["../src/classNames.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAOnD,QAAA,MAAM,gBAAgB,GAAI,kDAIvB,iBAAiB,KAAG,UAwBrB,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
package/lib/classNames.js CHANGED
@@ -1,11 +1,11 @@
1
- const DEFAULT_CLASS_PREFIX = "tree-element";
1
+ let DEFAULT_CLASS_PREFIX = "tree-element";
2
2
 
3
3
  /* Create the class names that the widget puts on the elements it creates.
4
4
  * They are all derived from classPrefix, except for the class of the root
5
5
  * element and the class that every element gets, which have an option of
6
6
  * their own.
7
7
  */
8
- const createClassNames = ({
8
+ let createClassNames = ({
9
9
  classPrefix,
10
10
  commonClassName,
11
11
  treeClassName
@@ -1 +1 @@
1
- {"version":3,"file":"classNames.js","sources":["../src/classNames.ts"],"sourcesContent":["export interface ClassNames {\n border: string;\n circle: string;\n closed: string;\n common: string;\n dnd: string;\n dragging: string;\n element: string;\n folder: string;\n ghost: string;\n inside: string;\n line: string;\n loading: string;\n moving: string;\n rtl: string;\n selected: string;\n title: string;\n titleButtonLeft: string;\n titleButtonRight: string;\n titleFolder: string;\n toggler: string;\n togglerLeft: string;\n togglerRight: string;\n tree: string;\n}\n\nexport interface ClassNamesOptions {\n classPrefix: string;\n commonClassName?: string;\n treeClassName?: string;\n}\n\nexport const DEFAULT_CLASS_PREFIX = \"tree-element\";\n\n/* Create the class names that the widget puts on the elements it creates.\n * They are all derived from classPrefix, except for the class of the root\n * element and the class that every element gets, which have an option of\n * their own.\n */\nconst createClassNames = ({\n classPrefix,\n commonClassName,\n treeClassName,\n}: ClassNamesOptions): ClassNames => ({\n border: `${classPrefix}-border`,\n circle: `${classPrefix}-circle`,\n closed: `${classPrefix}-closed`,\n common: commonClassName ?? `${classPrefix}-common`,\n dnd: `${classPrefix}-dnd`,\n dragging: `${classPrefix}-dragging`,\n element: `${classPrefix}-element`,\n folder: `${classPrefix}-folder`,\n ghost: `${classPrefix}-ghost`,\n inside: `${classPrefix}-inside`,\n line: `${classPrefix}-line`,\n loading: `${classPrefix}-loading`,\n moving: `${classPrefix}-moving`,\n rtl: `${classPrefix}-rtl`,\n selected: `${classPrefix}-selected`,\n title: `${classPrefix}-title`,\n titleButtonLeft: `${classPrefix}-title-button-left`,\n titleButtonRight: `${classPrefix}-title-button-right`,\n titleFolder: `${classPrefix}-title-folder`,\n toggler: `${classPrefix}-toggler`,\n togglerLeft: `${classPrefix}-toggler-left`,\n togglerRight: `${classPrefix}-toggler-right`,\n tree: treeClassName ?? classPrefix,\n});\n\nexport default createClassNames;\n"],"names":[],"mappings":"AAgCO,MAAM,oBAAoB,GAAG;;AAEpC;AACA;AACA;AACA;AACA;AACA,MAAM,gBAAgB,GAAG,CAAC;EACtB,WAAW;EACX,eAAe;AACf,EAAA;AACe,CAAC,MAAkB;EAClC,MAAM,EAAE,CAAA,EAAG,WAAW,CAAA,OAAA,CAAS;EAC/B,MAAM,EAAE,CAAA,EAAG,WAAW,CAAA,OAAA,CAAS;EAC/B,MAAM,EAAE,CAAA,EAAG,WAAW,CAAA,OAAA,CAAS;AAC/B,EAAA,MAAM,EAAE,eAAe,IAAI,CAAA,EAAG,WAAW,CAAA,OAAA,CAAS;EAClD,GAAG,EAAE,CAAA,EAAG,WAAW,CAAA,IAAA,CAAM;EACzB,QAAQ,EAAE,CAAA,EAAG,WAAW,CAAA,SAAA,CAAW;EACnC,OAAO,EAAE,CAAA,EAAG,WAAW,CAAA,QAAA,CAAU;EACjC,MAAM,EAAE,CAAA,EAAG,WAAW,CAAA,OAAA,CAAS;EAC/B,KAAK,EAAE,CAAA,EAAG,WAAW,CAAA,MAAA,CAAQ;EAC7B,MAAM,EAAE,CAAA,EAAG,WAAW,CAAA,OAAA,CAAS;EAC/B,IAAI,EAAE,CAAA,EAAG,WAAW,CAAA,KAAA,CAAO;EAC3B,OAAO,EAAE,CAAA,EAAG,WAAW,CAAA,QAAA,CAAU;EACjC,MAAM,EAAE,CAAA,EAAG,WAAW,CAAA,OAAA,CAAS;EAC/B,GAAG,EAAE,CAAA,EAAG,WAAW,CAAA,IAAA,CAAM;EACzB,QAAQ,EAAE,CAAA,EAAG,WAAW,CAAA,SAAA,CAAW;EACnC,KAAK,EAAE,CAAA,EAAG,WAAW,CAAA,MAAA,CAAQ;EAC7B,eAAe,EAAE,CAAA,EAAG,WAAW,CAAA,kBAAA,CAAoB;EACnD,gBAAgB,EAAE,CAAA,EAAG,WAAW,CAAA,mBAAA,CAAqB;EACrD,WAAW,EAAE,CAAA,EAAG,WAAW,CAAA,aAAA,CAAe;EAC1C,OAAO,EAAE,CAAA,EAAG,WAAW,CAAA,QAAA,CAAU;EACjC,WAAW,EAAE,CAAA,EAAG,WAAW,CAAA,aAAA,CAAe;EAC1C,YAAY,EAAE,CAAA,EAAG,WAAW,CAAA,cAAA,CAAgB;EAC5C,IAAI,EAAE,aAAa,IAAI;AAC3B,CAAC;;"}
1
+ {"version":3,"file":"classNames.js","sources":["../src/classNames.ts"],"sourcesContent":["export interface ClassNames {\n border: string;\n circle: string;\n closed: string;\n common: string;\n dnd: string;\n dragging: string;\n element: string;\n folder: string;\n ghost: string;\n inside: string;\n line: string;\n loading: string;\n moving: string;\n rtl: string;\n selected: string;\n title: string;\n titleButtonLeft: string;\n titleButtonRight: string;\n titleFolder: string;\n toggler: string;\n togglerLeft: string;\n togglerRight: string;\n tree: string;\n}\n\nexport interface ClassNamesOptions {\n classPrefix: string;\n commonClassName?: string;\n treeClassName?: string;\n}\n\nexport const DEFAULT_CLASS_PREFIX = \"tree-element\";\n\n/* Create the class names that the widget puts on the elements it creates.\n * They are all derived from classPrefix, except for the class of the root\n * element and the class that every element gets, which have an option of\n * their own.\n */\nconst createClassNames = ({\n classPrefix,\n commonClassName,\n treeClassName,\n}: ClassNamesOptions): ClassNames => ({\n border: `${classPrefix}-border`,\n circle: `${classPrefix}-circle`,\n closed: `${classPrefix}-closed`,\n common: commonClassName ?? `${classPrefix}-common`,\n dnd: `${classPrefix}-dnd`,\n dragging: `${classPrefix}-dragging`,\n element: `${classPrefix}-element`,\n folder: `${classPrefix}-folder`,\n ghost: `${classPrefix}-ghost`,\n inside: `${classPrefix}-inside`,\n line: `${classPrefix}-line`,\n loading: `${classPrefix}-loading`,\n moving: `${classPrefix}-moving`,\n rtl: `${classPrefix}-rtl`,\n selected: `${classPrefix}-selected`,\n title: `${classPrefix}-title`,\n titleButtonLeft: `${classPrefix}-title-button-left`,\n titleButtonRight: `${classPrefix}-title-button-right`,\n titleFolder: `${classPrefix}-title-folder`,\n toggler: `${classPrefix}-toggler`,\n togglerLeft: `${classPrefix}-toggler-left`,\n togglerRight: `${classPrefix}-toggler-right`,\n tree: treeClassName ?? classPrefix,\n});\n\nexport default createClassNames;\n"],"names":[],"mappings":"AAgCO,IAAM,oBAAoB,GAAG;;AAEpC;AACA;AACA;AACA;AACA;AACA,IAAM,gBAAgB,GAAG,CAAC;EACxB,WAAW;EACX,eAAe;AACf,EAAA;AACiB,CAAC,MAAkB;EACpC,MAAM,EAAE,CAAA,EAAG,WAAW,CAAA,OAAA,CAAS;EAC/B,MAAM,EAAE,CAAA,EAAG,WAAW,CAAA,OAAA,CAAS;EAC/B,MAAM,EAAE,CAAA,EAAG,WAAW,CAAA,OAAA,CAAS;AAC/B,EAAA,MAAM,EAAE,eAAe,IAAI,CAAA,EAAG,WAAW,CAAA,OAAA,CAAS;EAClD,GAAG,EAAE,CAAA,EAAG,WAAW,CAAA,IAAA,CAAM;EACzB,QAAQ,EAAE,CAAA,EAAG,WAAW,CAAA,SAAA,CAAW;EACnC,OAAO,EAAE,CAAA,EAAG,WAAW,CAAA,QAAA,CAAU;EACjC,MAAM,EAAE,CAAA,EAAG,WAAW,CAAA,OAAA,CAAS;EAC/B,KAAK,EAAE,CAAA,EAAG,WAAW,CAAA,MAAA,CAAQ;EAC7B,MAAM,EAAE,CAAA,EAAG,WAAW,CAAA,OAAA,CAAS;EAC/B,IAAI,EAAE,CAAA,EAAG,WAAW,CAAA,KAAA,CAAO;EAC3B,OAAO,EAAE,CAAA,EAAG,WAAW,CAAA,QAAA,CAAU;EACjC,MAAM,EAAE,CAAA,EAAG,WAAW,CAAA,OAAA,CAAS;EAC/B,GAAG,EAAE,CAAA,EAAG,WAAW,CAAA,IAAA,CAAM;EACzB,QAAQ,EAAE,CAAA,EAAG,WAAW,CAAA,SAAA,CAAW;EACnC,KAAK,EAAE,CAAA,EAAG,WAAW,CAAA,MAAA,CAAQ;EAC7B,eAAe,EAAE,CAAA,EAAG,WAAW,CAAA,kBAAA,CAAoB;EACnD,gBAAgB,EAAE,CAAA,EAAG,WAAW,CAAA,mBAAA,CAAqB;EACrD,WAAW,EAAE,CAAA,EAAG,WAAW,CAAA,aAAA,CAAe;EAC1C,OAAO,EAAE,CAAA,EAAG,WAAW,CAAA,QAAA,CAAU;EACjC,WAAW,EAAE,CAAA,EAAG,WAAW,CAAA,aAAA,CAAe;EAC1C,YAAY,EAAE,CAAA,EAAG,WAAW,CAAA,cAAA,CAAgB;EAC5C,IAAI,EAAE,aAAa,IAAI;AACzB,CAAC;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"dataLoader.d.ts","sourceRoot":"","sources":["../src/dataLoader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAY,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAE3C,UAAU,gBAAgB;IACtB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;CAC9B;AAED,MAAM,CAAC,OAAO,OAAO,UAAU;IAC3B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,YAAY,CAAe;gBAEvB,EACR,UAAU,EACV,UAAU,EACV,QAAQ,EACR,WAAW,EACX,YAAY,GACf,EAAE,gBAAgB;IASZ,MAAM,IAAI,IAAI;IAIR,WAAW,CACpB,GAAG,EAAE,UAAU,EACf,IAAI,CAAC,EAAE,IAAI,GACZ,OAAO,CAAC,IAAI,CAAC;CA+CnB"}
1
+ {"version":3,"file":"dataLoader.d.ts","sourceRoot":"","sources":["../src/dataLoader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAY,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAE3C,UAAU,gBAAgB;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,YAAY,CAAe;gBAEvB,EACV,UAAU,EACV,UAAU,EACV,QAAQ,EACR,WAAW,EACX,YAAY,GACb,EAAE,gBAAgB;IASZ,MAAM,IAAI,IAAI;IAIR,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAgDtE"}
package/lib/dataLoader.js CHANGED
@@ -1,16 +1,10 @@
1
1
  class DataLoader {
2
- _abortController;
3
- _classNames;
4
- _dataFilter;
5
- _loadData;
6
- _treeElement;
7
- _triggerEvent;
8
2
  constructor({
9
- classNames,
10
- dataFilter,
11
- loadData,
12
- treeElement,
13
- triggerEvent
3
+ _classNames: classNames,
4
+ _dataFilter: dataFilter,
5
+ _loadData: loadData,
6
+ _treeElement: treeElement,
7
+ _triggerEvent: triggerEvent
14
8
  }) {
15
9
  this._abortController = new AbortController();
16
10
  this._classNames = classNames;
@@ -19,26 +13,26 @@ class DataLoader {
19
13
  this._treeElement = treeElement;
20
14
  this._triggerEvent = triggerEvent;
21
15
  }
22
- deinit() {
16
+ _deinit() {
23
17
  this._abortController.abort();
24
18
  }
25
- async loadFromUrl(url, node) {
26
- const element = node?.element ?? this._treeElement;
19
+ async _loadFromUrl(url, node) {
20
+ let element = node?.element ?? this._treeElement;
27
21
  element.classList.add(this._classNames.loading);
28
22
  this._triggerEvent("tree.loading_data", {
29
23
  element,
30
24
  node
31
25
  });
32
- const stopLoading = () => {
26
+ let stopLoading = () => {
33
27
  element.classList.remove(this._classNames.loading);
34
28
  this._triggerEvent("tree.loaded_data", {
35
29
  element,
36
30
  node
37
31
  });
38
32
  };
39
- const handleResponse = async response => {
33
+ let handleResponse = async response => {
40
34
  if (response.ok) {
41
- const data = await response.json();
35
+ let data = await response.json();
42
36
  stopLoading();
43
37
  this._loadData(this._dataFilter ? this._dataFilter(data) : data, node);
44
38
  } else {
@@ -48,9 +42,9 @@ class DataLoader {
48
42
  });
49
43
  }
50
44
  };
51
- const signal = this._abortController.signal;
52
- url.setSearchParam("_", Date.now().toString());
53
- return fetch(url.toString(), {
45
+ let signal = this._abortController.signal;
46
+ url._setSearchParam("_", Date.now().toString());
47
+ return fetch(url._value(), {
54
48
  headers: {
55
49
  "Content-Type": "application/json"
56
50
  },
@@ -60,7 +54,10 @@ class DataLoader {
60
54
  // The request was aborted by deinit.
61
55
  return;
62
56
  }
63
- throw error;
57
+ stopLoading();
58
+ this._triggerEvent("tree.load_failed", {
59
+ error
60
+ });
64
61
  });
65
62
  }
66
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dataLoader.js","sources":["../src/dataLoader.ts"],"sourcesContent":["import type { ClassNames } from \"./classNames\";\nimport type { LoadData, TriggerEvent } from \"./methodTypes\";\nimport type { Node, NodeData } from \"./node\";\nimport type { DataFilter } from \"./options\";\nimport type RequestUrl from \"./requestUrl\";\n\ninterface DataLoaderParams {\n classNames: ClassNames;\n dataFilter?: DataFilter;\n loadData: LoadData;\n treeElement: HTMLElement;\n triggerEvent: TriggerEvent;\n}\n\nexport default class DataLoader {\n private abortController: AbortController;\n private classNames: ClassNames;\n private dataFilter?: DataFilter;\n private loadData: LoadData;\n private treeElement: HTMLElement;\n private triggerEvent: TriggerEvent;\n\n constructor({\n classNames,\n dataFilter,\n loadData,\n treeElement,\n triggerEvent,\n }: DataLoaderParams) {\n this.abortController = new AbortController();\n this.classNames = classNames;\n this.dataFilter = dataFilter;\n this.loadData = loadData;\n this.treeElement = treeElement;\n this.triggerEvent = triggerEvent;\n }\n\n public deinit(): void {\n this.abortController.abort();\n }\n\n public async loadFromUrl(\n url: RequestUrl,\n node?: Node,\n ): Promise<void> {\n const element = node?.element ?? this.treeElement;\n element.classList.add(this.classNames.loading);\n\n this.triggerEvent(\"tree.loading_data\", {\n element,\n node,\n });\n\n const stopLoading = (): void => {\n element.classList.remove(this.classNames.loading);\n this.triggerEvent(\"tree.loaded_data\", {\n element,\n node,\n });\n };\n\n const handleResponse = async (response: Response): Promise<void> => {\n if (response.ok) {\n const data = (await response.json()) as NodeData[];\n\n stopLoading();\n this.loadData(\n this.dataFilter ? this.dataFilter(data) : data,\n node\n );\n } else {\n stopLoading();\n\n this.triggerEvent(\"tree.load_failed\", { response });\n }\n };\n\n const signal = this.abortController.signal;\n url.setSearchParam(\"_\", Date.now().toString());\n\n return fetch(url.toString(), { headers: { \"Content-Type\": \"application/json\" }, signal })\n .then(handleResponse)\n .catch((error: unknown) => {\n if (this.abortController.signal.aborted) {\n // The request was aborted by deinit.\n return;\n }\n\n throw error;\n });\n }\n}\n"],"names":["abortController","classNames","dataFilter","loadData","treeElement","triggerEvent"],"mappings":"AAce,MAAM,UAAU,CAAC;EACpBA,gBAAe;EACfC,WAAU;EACVC,WAAU;EACVC,SAAQ;EACRC,YAAW;EACXC,aAAY;AAEpB,EAAA,WAAW,CAAC;IACR,UAAU;IACV,UAAU;IACV,QAAQ;IACR,WAAW;AACX,IAAA;AACc,GAAC,EAAE;AACjB,IAAA,IAAI,CAACL,gBAAe,GAAG,IAAI,eAAe,EAAE;IAC5C,IAAI,CAACC,WAAU,GAAG,UAAU;IAC5B,IAAI,CAACC,WAAU,GAAG,UAAU;IAC5B,IAAI,CAACC,SAAQ,GAAG,QAAQ;IACxB,IAAI,CAACC,YAAW,GAAG,WAAW;IAC9B,IAAI,CAACC,aAAY,GAAG,YAAY;AACpC,EAAA;AAEO,EAAA,MAAM,GAAS;AAClB,IAAA,IAAI,CAACL,gBAAe,CAAC,KAAK,EAAE;AAChC,EAAA;AAEA,EAAA,MAAa,WAAW,CACpB,GAAe,EACf,IAAW,EACE;IACb,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,IAAI,CAACI,YAAW;IACjD,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAACH,WAAU,CAAC,OAAO,CAAC;AAE9C,IAAA,IAAI,CAACI,aAAY,CAAC,mBAAmB,EAAE;MACnC,OAAO;AACP,MAAA;AACJ,KAAC,CAAC;IAEF,MAAM,WAAW,GAAG,MAAY;MAC5B,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAACJ,WAAU,CAAC,OAAO,CAAC;AACjD,MAAA,IAAI,CAACI,aAAY,CAAC,kBAAkB,EAAE;QAClC,OAAO;AACP,QAAA;AACJ,OAAC,CAAC;IACN,CAAC;AAED,IAAA,MAAM,cAAc,GAAG,MAAO,QAAkB,IAAoB;MAChE,IAAI,QAAQ,CAAC,EAAE,EAAE;AACb,QAAA,MAAM,IAAI,GAAI,MAAM,QAAQ,CAAC,IAAI,EAAiB;AAElD,QAAA,WAAW,EAAE;AACb,QAAA,IAAI,CAACF,SAAQ,CACT,IAAI,CAACD,WAAU,GAAG,IAAI,CAACA,WAAU,CAAC,IAAI,CAAC,GAAG,IAAI,EAC9C,IACJ,CAAC;AACL,MAAA,CAAC,MAAM;AACH,QAAA,WAAW,EAAE;AAEb,QAAA,IAAI,CAACG,aAAY,CAAC,kBAAkB,EAAE;AAAE,UAAA;AAAS,SAAC,CAAC;AACvD,MAAA;IACJ,CAAC;AAED,IAAA,MAAM,MAAM,GAAG,IAAI,CAACL,gBAAe,CAAC,MAAM;AAC1C,IAAA,GAAG,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;AAE9C,IAAA,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;AAAE,MAAA,OAAO,EAAE;AAAE,QAAA,cAAc,EAAE;OAAoB;AAAE,MAAA;KAAQ,CAAC,CACpF,IAAI,CAAC,cAAc,CAAC,CACpB,KAAK,CAAE,KAAc,IAAK;AACvB,MAAA,IAAI,IAAI,CAACA,gBAAe,CAAC,MAAM,CAAC,OAAO,EAAE;AACrC;AACA,QAAA;AACJ,MAAA;AAEA,MAAA,MAAM,KAAK;AACf,IAAA,CAAC,CAAC;AACV,EAAA;AACJ;;"}
1
+ {"version":3,"file":"dataLoader.js","sources":["../src/dataLoader.ts"],"sourcesContent":["import type { ClassNames } from \"./classNames\";\nimport type { LoadData, TriggerEvent } from \"./methodTypes\";\nimport type { Node, NodeData } from \"./node\";\nimport type { DataFilter } from \"./options\";\nimport type RequestUrl from \"./requestUrl\";\n\ninterface DataLoaderParams {\n classNames: ClassNames;\n dataFilter?: DataFilter;\n loadData: LoadData;\n treeElement: HTMLElement;\n triggerEvent: TriggerEvent;\n}\n\nexport default class DataLoader {\n private abortController: AbortController;\n private classNames: ClassNames;\n private dataFilter?: DataFilter;\n private loadData: LoadData;\n private treeElement: HTMLElement;\n private triggerEvent: TriggerEvent;\n\n constructor({\n classNames,\n dataFilter,\n loadData,\n treeElement,\n triggerEvent,\n }: DataLoaderParams) {\n this.abortController = new AbortController();\n this.classNames = classNames;\n this.dataFilter = dataFilter;\n this.loadData = loadData;\n this.treeElement = treeElement;\n this.triggerEvent = triggerEvent;\n }\n\n public deinit(): void {\n this.abortController.abort();\n }\n\n public async loadFromUrl(url: RequestUrl, node?: Node): Promise<void> {\n const element = node?.element ?? this.treeElement;\n element.classList.add(this.classNames.loading);\n\n this.triggerEvent(\"tree.loading_data\", {\n element,\n node,\n });\n\n const stopLoading = (): void => {\n element.classList.remove(this.classNames.loading);\n this.triggerEvent(\"tree.loaded_data\", {\n element,\n node,\n });\n };\n\n const handleResponse = async (response: Response): Promise<void> => {\n if (response.ok) {\n const data = (await response.json()) as NodeData[];\n\n stopLoading();\n this.loadData(this.dataFilter ? this.dataFilter(data) : data, node);\n } else {\n stopLoading();\n\n this.triggerEvent(\"tree.load_failed\", { response });\n }\n };\n\n const signal = this.abortController.signal;\n url.setSearchParam(\"_\", Date.now().toString());\n\n return fetch(url.value(), {\n headers: { \"Content-Type\": \"application/json\" },\n signal,\n })\n .then(handleResponse)\n .catch((error: unknown) => {\n if (this.abortController.signal.aborted) {\n // The request was aborted by deinit.\n return;\n }\n\n stopLoading();\n this.triggerEvent(\"tree.load_failed\", { error });\n });\n }\n}\n"],"names":["abortController","classNames","dataFilter","loadData","treeElement","triggerEvent","deinit","loadFromUrl","setSearchParam","value"],"mappings":"AAce,MAAM,UAAU,CAAC;AAQ9B,EAAA,WAAW,CAAC;IACV,WAAA,EAAA,UAAU;IACV,WAAA,EAAA,UAAU;IACV,SAAA,EAAA,QAAQ;IACR,YAAA,EAAA,WAAW;AACX,IAAA,aAAA,EAAA;AACgB,GAAC,EAAE;AACnB,IAAA,IAAI,CAACA,gBAAe,GAAG,IAAI,eAAe,EAAE;IAC5C,IAAI,CAACC,WAAU,GAAG,UAAU;IAC5B,IAAI,CAACC,WAAU,GAAG,UAAU;IAC5B,IAAI,CAACC,SAAQ,GAAG,QAAQ;IACxB,IAAI,CAACC,YAAW,GAAG,WAAW;IAC9B,IAAI,CAACC,aAAY,GAAG,YAAY;AAClC,EAAA;AAEOC,EAAAA,OAAMA,GAAS;AACpB,IAAA,IAAI,CAACN,gBAAe,CAAC,KAAK,EAAE;AAC9B,EAAA;AAEA,EAAA,MAAaO,YAAWA,CAAC,GAAe,EAAE,IAAW,EAAiB;IACpE,IAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,IAAI,CAACH,YAAW;IACjD,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAACH,WAAU,CAAC,OAAO,CAAC;AAE9C,IAAA,IAAI,CAACI,aAAY,CAAC,mBAAmB,EAAE;MACrC,OAAO;AACP,MAAA;AACF,KAAC,CAAC;IAEF,IAAM,WAAW,GAAG,MAAY;MAC9B,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAACJ,WAAU,CAAC,OAAO,CAAC;AACjD,MAAA,IAAI,CAACI,aAAY,CAAC,kBAAkB,EAAE;QACpC,OAAO;AACP,QAAA;AACF,OAAC,CAAC;IACJ,CAAC;AAED,IAAA,IAAM,cAAc,GAAG,MAAO,QAAkB,IAAoB;MAClE,IAAI,QAAQ,CAAC,EAAE,EAAE;AACf,QAAA,IAAM,IAAI,GAAI,MAAM,QAAQ,CAAC,IAAI,EAAiB;AAElD,QAAA,WAAW,EAAE;AACb,QAAA,IAAI,CAACF,SAAQ,CAAC,IAAI,CAACD,WAAU,GAAG,IAAI,CAACA,WAAU,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC;AACrE,MAAA,CAAC,MAAM;AACL,QAAA,WAAW,EAAE;AAEb,QAAA,IAAI,CAACG,aAAY,CAAC,kBAAkB,EAAE;AAAE,UAAA;AAAS,SAAC,CAAC;AACrD,MAAA;IACF,CAAC;AAED,IAAA,IAAM,MAAM,GAAG,IAAI,CAACL,gBAAe,CAAC,MAAM;AAC1C,IAAA,GAAG,CAACQ,eAAc,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;AAE9C,IAAA,OAAO,KAAK,CAAC,GAAG,CAACC,MAAK,EAAE,EAAE;AACxB,MAAA,OAAO,EAAE;AAAE,QAAA,cAAc,EAAE;OAAoB;AAC/C,MAAA;KACD,CAAC,CACC,IAAI,CAAC,cAAc,CAAC,CACpB,KAAK,CAAE,KAAc,IAAK;AACzB,MAAA,IAAI,IAAI,CAACT,gBAAe,CAAC,MAAM,CAAC,OAAO,EAAE;AACvC;AACA,QAAA;AACF,MAAA;AAEA,MAAA,WAAW,EAAE;AACb,MAAA,IAAI,CAACK,aAAY,CAAC,kBAAkB,EAAE;AAAE,QAAA;AAAM,OAAC,CAAC;AAClD,IAAA,CAAC,CAAC;AACN,EAAA;AACF;;"}
@@ -2,12 +2,12 @@ function binarySearch(items, compareFn) {
2
2
  let low = 0;
3
3
  let high = items.length;
4
4
  while (low < high) {
5
- const mid = low + high >> 1;
6
- const item = items[mid];
5
+ let mid = low + high >> 1;
6
+ let item = items[mid];
7
7
  if (item === undefined) {
8
8
  return null;
9
9
  }
10
- const compareResult = compareFn(item);
10
+ let compareResult = compareFn(item);
11
11
  if (compareResult > 0) {
12
12
  high = mid;
13
13
  } else if (compareResult < 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"binarySearch.js","sources":["../../src/dragAndDropHandler/binarySearch.ts"],"sourcesContent":["function binarySearch<T>(items: T[], compareFn: (a: T) => number): null | T {\n let low = 0;\n let high = items.length;\n\n while (low < high) {\n const mid = (low + high) >> 1;\n const item = items[mid];\n\n if (item === undefined) {\n return null;\n }\n\n const compareResult = compareFn(item);\n\n if (compareResult > 0) {\n high = mid;\n } else if (compareResult < 0) {\n low = mid + 1;\n } else {\n return item;\n }\n }\n\n return null;\n}\n\nexport default binarySearch;\n"],"names":[],"mappings":"AAAA,SAAS,YAAY,CAAI,KAAU,EAAE,SAA2B,EAAY;EACxE,IAAI,GAAG,GAAG,CAAC;AACX,EAAA,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM;EAEvB,OAAO,GAAG,GAAG,IAAI,EAAE;AACf,IAAA,MAAM,GAAG,GAAI,GAAG,GAAG,IAAI,IAAK,CAAC;AAC7B,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC;IAEvB,IAAI,IAAI,KAAK,SAAS,EAAE;AACpB,MAAA,OAAO,IAAI;AACf,IAAA;AAEA,IAAA,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC;IAErC,IAAI,aAAa,GAAG,CAAC,EAAE;AACnB,MAAA,IAAI,GAAG,GAAG;AACd,IAAA,CAAC,MAAM,IAAI,aAAa,GAAG,CAAC,EAAE;MAC1B,GAAG,GAAG,GAAG,GAAG,CAAC;AACjB,IAAA,CAAC,MAAM;AACH,MAAA,OAAO,IAAI;AACf,IAAA;AACJ,EAAA;AAEA,EAAA,OAAO,IAAI;AACf;;"}
1
+ {"version":3,"file":"binarySearch.js","sources":["../../src/dragAndDropHandler/binarySearch.ts"],"sourcesContent":["function binarySearch<T>(items: T[], compareFn: (a: T) => number): null | T {\n let low = 0;\n let high = items.length;\n\n while (low < high) {\n const mid = (low + high) >> 1;\n const item = items[mid];\n\n if (item === undefined) {\n return null;\n }\n\n const compareResult = compareFn(item);\n\n if (compareResult > 0) {\n high = mid;\n } else if (compareResult < 0) {\n low = mid + 1;\n } else {\n return item;\n }\n }\n\n return null;\n}\n\nexport default binarySearch;\n"],"names":[],"mappings":"AAAA,SAAS,YAAY,CAAI,KAAU,EAAE,SAA2B,EAAY;EAC1E,IAAI,GAAG,GAAG,CAAC;AACX,EAAA,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM;EAEvB,OAAO,GAAG,GAAG,IAAI,EAAE;AACjB,IAAA,IAAM,GAAG,GAAI,GAAG,GAAG,IAAI,IAAK,CAAC;AAC7B,IAAA,IAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC;IAEvB,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,MAAA,OAAO,IAAI;AACb,IAAA;AAEA,IAAA,IAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC;IAErC,IAAI,aAAa,GAAG,CAAC,EAAE;AACrB,MAAA,IAAI,GAAG,GAAG;AACZ,IAAA,CAAC,MAAM,IAAI,aAAa,GAAG,CAAC,EAAE;MAC5B,GAAG,GAAG,GAAG,GAAG,CAAC;AACf,IAAA,CAAC,MAAM;AACL,MAAA,OAAO,IAAI;AACb,IAAA;AACF,EAAA;AAEA,EAAA,OAAO,IAAI;AACb;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"dragElement.d.ts","sourceRoot":"","sources":["../../src/dragAndDropHandler/dragElement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,UAAU,iBAAiB;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,WAAW,CAAC;CAC5B;AAED,cAAM,WAAW;IACb,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;gBAEZ,EACR,UAAU,EACV,UAAU,EACV,QAAQ,EACR,OAAO,EACP,OAAO,EACP,WAAW,GACd,EAAE,iBAAiB;IASb,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKxC,MAAM,IAAI,IAAI;IAIrB,OAAO,CAAC,aAAa;CAkBxB;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"dragElement.d.ts","sourceRoot":"","sources":["../../src/dragAndDropHandler/dragElement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,UAAU,iBAAiB;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,cAAM,WAAW;IACf,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;gBAEZ,EACV,UAAU,EACV,UAAU,EACV,QAAQ,EACR,OAAO,EACP,OAAO,EACP,WAAW,GACZ,EAAE,iBAAiB;IASb,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKxC,MAAM,IAAI,IAAI;IAIrB,OAAO,CAAC,aAAa;CAkBtB;AAED,eAAe,WAAW,CAAC"}
@@ -1,29 +1,26 @@
1
1
  class DragElement {
2
- _element;
3
- _offsetX;
4
- _offsetY;
5
2
  constructor({
6
- autoEscape,
7
- classNames,
8
- nodeName,
9
- offsetX,
10
- offsetY,
11
- treeElement
3
+ _autoEscape: autoEscape,
4
+ _classNames: classNames,
5
+ _nodeName: nodeName,
6
+ _offsetX: offsetX,
7
+ _offsetY: offsetY,
8
+ _treeElement: treeElement
12
9
  }) {
13
10
  this._offsetX = offsetX;
14
11
  this._offsetY = offsetY;
15
12
  this._element = this._createElement(nodeName, autoEscape, classNames);
16
13
  treeElement.appendChild(this._element);
17
14
  }
18
- move(pageX, pageY) {
15
+ _move(pageX, pageY) {
19
16
  this._element.style.left = `${pageX - this._offsetX}px`;
20
17
  this._element.style.top = `${pageY - this._offsetY}px`;
21
18
  }
22
- remove() {
19
+ _remove() {
23
20
  this._element.remove();
24
21
  }
25
22
  _createElement(nodeName, autoEscape, classNames) {
26
- const element = document.createElement("span");
23
+ let element = document.createElement("span");
27
24
  element.classList.add(classNames.title, classNames.dragging);
28
25
  if (autoEscape) {
29
26
  element.textContent = nodeName;
@@ -1 +1 @@
1
- {"version":3,"file":"dragElement.js","sources":["../../src/dragAndDropHandler/dragElement.ts"],"sourcesContent":["import type { ClassNames } from \"../classNames\";\n\ninterface DragElementParams {\n autoEscape: boolean;\n classNames: ClassNames;\n nodeName: string;\n offsetX: number;\n offsetY: number;\n treeElement: HTMLElement;\n}\n\nclass DragElement {\n private element: HTMLElement;\n private offsetX: number;\n private offsetY: number;\n\n constructor({\n autoEscape,\n classNames,\n nodeName,\n offsetX,\n offsetY,\n treeElement,\n }: DragElementParams) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n this.element = this.createElement(nodeName, autoEscape, classNames);\n\n treeElement.appendChild(this.element);\n }\n\n public move(pageX: number, pageY: number): void {\n this.element.style.left = `${pageX - this.offsetX}px`;\n this.element.style.top = `${pageY - this.offsetY}px`;\n }\n\n public remove(): void {\n this.element.remove();\n }\n\n private createElement(\n nodeName: string,\n autoEscape: boolean,\n classNames: ClassNames,\n ) {\n const element = document.createElement(\"span\");\n element.classList.add(classNames.title, classNames.dragging);\n\n if (autoEscape) {\n element.textContent = nodeName;\n } else {\n element.innerHTML = nodeName;\n }\n\n element.style.position = \"absolute\";\n\n return element;\n }\n}\n\nexport default DragElement;\n"],"names":["element","offsetX","offsetY","createElement"],"mappings":"AAWA,MAAM,WAAW,CAAC;EACNA,QAAO;EACPC,QAAO;EACPC,QAAO;AAEf,EAAA,WAAW,CAAC;IACR,UAAU;IACV,UAAU;IACV,QAAQ;IACR,OAAO;IACP,OAAO;AACP,IAAA;AACe,GAAC,EAAE;IAClB,IAAI,CAACD,QAAO,GAAG,OAAO;IACtB,IAAI,CAACC,QAAO,GAAG,OAAO;AAEtB,IAAA,IAAI,CAACF,QAAO,GAAG,IAAI,CAACG,cAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC;AAEnE,IAAA,WAAW,CAAC,WAAW,CAAC,IAAI,CAACH,QAAO,CAAC;AACzC,EAAA;AAEO,EAAA,IAAI,CAAC,KAAa,EAAE,KAAa,EAAQ;AAC5C,IAAA,IAAI,CAACA,QAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,EAAG,KAAK,GAAG,IAAI,CAACC,QAAO,CAAA,EAAA,CAAI;AACrD,IAAA,IAAI,CAACD,QAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,KAAK,GAAG,IAAI,CAACE,QAAO,CAAA,EAAA,CAAI;AACxD,EAAA;AAEO,EAAA,MAAM,GAAS;AAClB,IAAA,IAAI,CAACF,QAAO,CAAC,MAAM,EAAE;AACzB,EAAA;AAEQG,EAAAA,cAAaA,CACjB,QAAgB,EAChB,UAAmB,EACnB,UAAsB,EACxB;AACE,IAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC9C,IAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;AAE5D,IAAA,IAAI,UAAU,EAAE;MACZ,OAAO,CAAC,WAAW,GAAG,QAAQ;AAClC,IAAA,CAAC,MAAM;MACH,OAAO,CAAC,SAAS,GAAG,QAAQ;AAChC,IAAA;AAEA,IAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;AAEnC,IAAA,OAAO,OAAO;AAClB,EAAA;AACJ;;"}
1
+ {"version":3,"file":"dragElement.js","sources":["../../src/dragAndDropHandler/dragElement.ts"],"sourcesContent":["import type { ClassNames } from \"../classNames\";\n\ninterface DragElementParams {\n autoEscape: boolean;\n classNames: ClassNames;\n nodeName: string;\n offsetX: number;\n offsetY: number;\n treeElement: HTMLElement;\n}\n\nclass DragElement {\n private element: HTMLElement;\n private offsetX: number;\n private offsetY: number;\n\n constructor({\n autoEscape,\n classNames,\n nodeName,\n offsetX,\n offsetY,\n treeElement,\n }: DragElementParams) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n this.element = this.createElement(nodeName, autoEscape, classNames);\n\n treeElement.appendChild(this.element);\n }\n\n public move(pageX: number, pageY: number): void {\n this.element.style.left = `${pageX - this.offsetX}px`;\n this.element.style.top = `${pageY - this.offsetY}px`;\n }\n\n public remove(): void {\n this.element.remove();\n }\n\n private createElement(\n nodeName: string,\n autoEscape: boolean,\n classNames: ClassNames,\n ) {\n const element = document.createElement(\"span\");\n element.classList.add(classNames.title, classNames.dragging);\n\n if (autoEscape) {\n element.textContent = nodeName;\n } else {\n element.innerHTML = nodeName;\n }\n\n element.style.position = \"absolute\";\n\n return element;\n }\n}\n\nexport default DragElement;\n"],"names":["offsetX","offsetY","element","createElement","move","remove"],"mappings":"AAWA,MAAM,WAAW,CAAC;AAKhB,EAAA,WAAW,CAAC;IACV,WAAA,EAAA,UAAU;IACV,WAAA,EAAA,UAAU;IACV,SAAA,EAAA,QAAQ;IACR,QAAA,EAAA,OAAO;IACP,QAAA,EAAA,OAAO;AACP,IAAA,YAAA,EAAA;AACiB,GAAC,EAAE;IACpB,IAAI,CAACA,QAAO,GAAG,OAAO;IACtB,IAAI,CAACC,QAAO,GAAG,OAAO;AAEtB,IAAA,IAAI,CAACC,QAAO,GAAG,IAAI,CAACC,cAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC;AAEnE,IAAA,WAAW,CAAC,WAAW,CAAC,IAAI,CAACD,QAAO,CAAC;AACvC,EAAA;AAEOE,EAAAA,KAAIA,CAAC,KAAa,EAAE,KAAa,EAAQ;AAC9C,IAAA,IAAI,CAACF,QAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,EAAG,KAAK,GAAG,IAAI,CAACF,QAAO,CAAA,EAAA,CAAI;AACrD,IAAA,IAAI,CAACE,QAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,KAAK,GAAG,IAAI,CAACD,QAAO,CAAA,EAAA,CAAI;AACtD,EAAA;AAEOI,EAAAA,OAAMA,GAAS;AACpB,IAAA,IAAI,CAACH,QAAO,CAAC,MAAM,EAAE;AACvB,EAAA;AAEQC,EAAAA,cAAaA,CACnB,QAAgB,EAChB,UAAmB,EACnB,UAAsB,EACtB;AACA,IAAA,IAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC9C,IAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;AAE5D,IAAA,IAAI,UAAU,EAAE;MACd,OAAO,CAAC,WAAW,GAAG,QAAQ;AAChC,IAAA,CAAC,MAAM;MACL,OAAO,CAAC,SAAS,GAAG,QAAQ;AAC9B,IAAA;AAEA,IAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;AAEnC,IAAA,OAAO,OAAO;AAChB,EAAA;AACF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"generateHitAreas.d.ts","sourceRoot":"","sources":["../../src/dragAndDropHandler/generateHitAreas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAKvC,UAAU,WAAW;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,IAAI,GAAG,QAAQ,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,oBAAoB,GAC7B,MAAM,IAAI,EACV,aAAa,IAAI,KAClB,WAAW,EA8Gb,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACjC,UAAU,OAAO,EAAE,EACnB,kBAAkB,WAAW,EAAE,EAC/B,KAAK,MAAM,EACX,QAAQ,MAAM,SAsBjB,CAAC;AAEF,eAAO,MAAM,6BAA6B,GACtC,cAAc,WAAW,EAAE,EAC3B,YAAY,MAAM,KACnB,OAAO,EA4BT,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAAI,MAAM,IAAI,EAAE,aAAa,IAAI,EAAE,YAAY,MAAM,cAItE,CAAC;AAEN,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"generateHitAreas.d.ts","sourceRoot":"","sources":["../../src/dragAndDropHandler/generateHitAreas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAKvC,UAAU,WAAW;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,IAAI,GAAG,QAAQ,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,eAAO,MAAM,oBAAoB,GAC/B,MAAM,IAAI,EACV,aAAa,IAAI,KAChB,WAAW,EA8Gb,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,UAAU,OAAO,EAAE,EACnB,kBAAkB,WAAW,EAAE,EAC/B,KAAK,MAAM,EACX,QAAQ,MAAM,SAsBf,CAAC;AAEF,eAAO,MAAM,6BAA6B,GACxC,cAAc,WAAW,EAAE,EAC3B,YAAY,MAAM,KACjB,OAAO,EAuBT,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAAI,MAAM,IAAI,EAAE,aAAa,IAAI,EAAE,YAAY,MAAM,cAIxE,CAAC;AAEJ,eAAe,gBAAgB,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import { getOffsetTop } from '../positionUtils.js';
2
2
  import iterateVisibleNodes from './iterateVisibleNodes.js';
3
3
 
4
- const generateHitPositions = (tree, currentNode) => {
5
- const hitPositions = [];
4
+ let generateHitPositions = (tree, currentNode) => {
5
+ let hitPositions = [];
6
6
  let lastTop = 0;
7
- const addHitPosition = (node, position, top) => {
7
+ let addHitPosition = (node, position, top) => {
8
8
  hitPositions.push({
9
9
  node,
10
10
  position,
@@ -12,7 +12,7 @@ const generateHitPositions = (tree, currentNode) => {
12
12
  });
13
13
  lastTop = top;
14
14
  };
15
- const handleAfterOpenFolder = (node, nextNode) => {
15
+ let handleAfterOpenFolder = (node, nextNode) => {
16
16
  if (node === currentNode || nextNode === currentNode) {
17
17
  // Cannot move before or after current item
18
18
  addHitPosition(node, null, lastTop);
@@ -20,8 +20,8 @@ const generateHitPositions = (tree, currentNode) => {
20
20
  addHitPosition(node, "after", lastTop);
21
21
  }
22
22
  };
23
- const handleClosedFolder = (node, nextNode, element) => {
24
- const top = getOffsetTop(element);
23
+ let handleClosedFolder = (node, nextNode, element) => {
24
+ let top = getOffsetTop(element);
25
25
  if (node === currentNode) {
26
26
  // Cannot move after current item
27
27
  addHitPosition(node, null, top);
@@ -34,13 +34,13 @@ const generateHitPositions = (tree, currentNode) => {
34
34
  }
35
35
  }
36
36
  };
37
- const handleFirstNode = node => {
37
+ let handleFirstNode = node => {
38
38
  if (node !== currentNode && node.element) {
39
39
  addHitPosition(node, "before", getOffsetTop(node.element));
40
40
  }
41
41
  };
42
- const handleNode = (node, nextNode, element) => {
43
- const top = getOffsetTop(element);
42
+ let handleNode = (node, nextNode, element) => {
43
+ let top = getOffsetTop(element);
44
44
  if (node === currentNode) {
45
45
  // Cannot move inside current item
46
46
  addHitPosition(node, null, top);
@@ -54,13 +54,13 @@ const generateHitPositions = (tree, currentNode) => {
54
54
  addHitPosition(node, "after", top);
55
55
  }
56
56
  };
57
- const handleOpenFolder = (node, element) => {
57
+ let handleOpenFolder = (node, element) => {
58
58
  if (node === currentNode) {
59
59
  // Cannot move inside current item
60
60
 
61
61
  // Dnd over the current element is not possible: add a position with type None for the top and the bottom.
62
- const top = getOffsetTop(element);
63
- const height = element.clientHeight;
62
+ let top = getOffsetTop(element);
63
+ let height = element.clientHeight;
64
64
  addHitPosition(node, null, top);
65
65
  if (height > 5) {
66
66
  // Subtract 5 pixels to allow more space for the next element.
@@ -80,21 +80,21 @@ const generateHitPositions = (tree, currentNode) => {
80
80
  return true;
81
81
  };
82
82
  iterateVisibleNodes(tree, {
83
- handleAfterOpenFolder,
84
- handleClosedFolder,
85
- handleFirstNode,
86
- handleNode,
87
- handleOpenFolder
83
+ _handleAfterOpenFolder: handleAfterOpenFolder,
84
+ _handleClosedFolder: handleClosedFolder,
85
+ _handleFirstNode: handleFirstNode,
86
+ _handleNode: handleNode,
87
+ _handleOpenFolder: handleOpenFolder
88
88
  });
89
89
  return hitPositions;
90
90
  };
91
- const generateHitAreasForGroup = (hitAreas, positionsInGroup, top, bottom) => {
91
+ let generateHitAreasForGroup = (hitAreas, positionsInGroup, top, bottom) => {
92
92
  // limit positions in group
93
- const positionCount = Math.min(positionsInGroup.length, 4);
94
- const areaHeight = Math.round((bottom - top) / positionCount);
93
+ let positionCount = Math.min(positionsInGroup.length, 4);
94
+ let areaHeight = Math.round((bottom - top) / positionCount);
95
95
  let areaTop = top;
96
96
  for (let i = 0; i < positionCount; i++) {
97
- const position = positionsInGroup[i];
97
+ let position = positionsInGroup[i];
98
98
  if (position.position) {
99
99
  hitAreas.push({
100
100
  bottom: areaTop + areaHeight,
@@ -106,14 +106,14 @@ const generateHitAreasForGroup = (hitAreas, positionsInGroup, top, bottom) => {
106
106
  areaTop += areaHeight;
107
107
  }
108
108
  };
109
- const generateHitAreasFromPositions = (hitPositions, treeBottom) => {
109
+ let generateHitAreasFromPositions = (hitPositions, treeBottom) => {
110
110
  if (!hitPositions.length) {
111
111
  return [];
112
112
  }
113
113
  let previousTop = hitPositions[0].top;
114
114
  let group = [];
115
- const hitAreas = [];
116
- for (const position of hitPositions) {
115
+ let hitAreas = [];
116
+ for (let position of hitPositions) {
117
117
  if (position.top !== previousTop && group.length) {
118
118
  generateHitAreasForGroup(hitAreas, group, previousTop, position.top);
119
119
  previousTop = position.top;
@@ -124,7 +124,7 @@ const generateHitAreasFromPositions = (hitPositions, treeBottom) => {
124
124
  generateHitAreasForGroup(hitAreas, group, previousTop, treeBottom);
125
125
  return hitAreas;
126
126
  };
127
- const generateHitAreas = (tree, currentNode, treeBottom) => generateHitAreasFromPositions(generateHitPositions(tree, currentNode), treeBottom);
127
+ let generateHitAreas = (tree, currentNode, treeBottom) => generateHitAreasFromPositions(generateHitPositions(tree, currentNode), treeBottom);
128
128
 
129
129
  export { generateHitAreas as default, generateHitAreasForGroup, generateHitAreasFromPositions, generateHitPositions };
130
130
  //# sourceMappingURL=generateHitAreas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateHitAreas.js","sources":["../../src/dragAndDropHandler/generateHitAreas.ts"],"sourcesContent":["import type { Node, Position } from \"../node\";\nimport type { HitArea } from \"./types\";\n\nimport { getOffsetTop } from \"../positionUtils\";\nimport iterateVisibleNodes from \"./iterateVisibleNodes\";\n\ninterface HitPosition {\n node: Node;\n position: null | Position;\n top: number;\n}\n\nexport const generateHitPositions = (\n tree: Node,\n currentNode: Node,\n): HitPosition[] => {\n const hitPositions: HitPosition[] = [];\n let lastTop = 0;\n\n const addHitPosition = (\n node: Node,\n position: null | Position,\n top: number,\n ) => {\n hitPositions.push({\n node,\n position,\n top,\n });\n lastTop = top;\n };\n\n const handleAfterOpenFolder = (node: Node, nextNode: Node | null) => {\n if (node === currentNode || nextNode === currentNode) {\n // Cannot move before or after current item\n addHitPosition(node, null, lastTop);\n } else {\n addHitPosition(node, \"after\", lastTop);\n }\n };\n\n const handleClosedFolder = (\n node: Node,\n nextNode: Node | null,\n element: HTMLElement,\n ) => {\n const top = getOffsetTop(element);\n\n if (node === currentNode) {\n // Cannot move after current item\n addHitPosition(node, null, top);\n } else {\n addHitPosition(node, \"inside\", top);\n\n // Cannot move before current item\n if (nextNode !== currentNode) {\n addHitPosition(node, \"after\", top);\n }\n }\n };\n\n const handleFirstNode = (node: Node) => {\n if (node !== currentNode && node.element) {\n addHitPosition(node, \"before\", getOffsetTop(node.element));\n }\n };\n\n const handleNode = (\n node: Node,\n nextNode: Node | null,\n element: HTMLElement,\n ) => {\n const top = getOffsetTop(element);\n\n if (node === currentNode) {\n // Cannot move inside current item\n addHitPosition(node, null, top);\n } else {\n addHitPosition(node, \"inside\", top);\n }\n\n if (nextNode === currentNode || node === currentNode) {\n // Cannot move before or after current item\n addHitPosition(node, null, top);\n } else {\n addHitPosition(node, \"after\", top);\n }\n };\n\n const handleOpenFolder = (node: Node, element: HTMLElement) => {\n if (node === currentNode) {\n // Cannot move inside current item\n\n // Dnd over the current element is not possible: add a position with type None for the top and the bottom.\n const top = getOffsetTop(element);\n const height = element.clientHeight;\n addHitPosition(node, null, top);\n\n if (height > 5) {\n // Subtract 5 pixels to allow more space for the next element.\n addHitPosition(node, null, top + height - 5);\n }\n\n // Stop iterating\n return false;\n }\n\n // Cannot move before current item\n if (node.children[0] !== currentNode) {\n addHitPosition(node, \"inside\", getOffsetTop(element));\n }\n\n // Continue iterating\n return true;\n };\n\n iterateVisibleNodes(tree, {\n handleAfterOpenFolder,\n handleClosedFolder,\n handleFirstNode,\n handleNode,\n handleOpenFolder,\n });\n\n return hitPositions;\n};\n\nexport const generateHitAreasForGroup = (\n hitAreas: HitArea[],\n positionsInGroup: HitPosition[],\n top: number,\n bottom: number,\n) => {\n // limit positions in group\n const positionCount = Math.min(positionsInGroup.length, 4);\n\n const areaHeight = Math.round((bottom - top) / positionCount);\n let areaTop = top;\n\n for (let i = 0; i < positionCount; i++) {\n const position = positionsInGroup[i] as HitPosition;\n\n if (position.position) {\n hitAreas.push({\n bottom: areaTop + areaHeight,\n node: position.node,\n position: position.position,\n top: areaTop,\n });\n }\n\n areaTop += areaHeight;\n }\n};\n\nexport const generateHitAreasFromPositions = (\n hitPositions: HitPosition[],\n treeBottom: number,\n): HitArea[] => {\n if (!hitPositions.length) {\n return [];\n }\n\n let previousTop = (hitPositions[0] as HitPosition).top;\n let group: HitPosition[] = [];\n const hitAreas: HitArea[] = [];\n\n for (const position of hitPositions) {\n if (position.top !== previousTop && group.length) {\n generateHitAreasForGroup(\n hitAreas,\n group,\n previousTop,\n position.top,\n );\n\n previousTop = position.top;\n group = [];\n }\n\n group.push(position);\n }\n\n generateHitAreasForGroup(hitAreas, group, previousTop, treeBottom);\n\n return hitAreas;\n};\n\nconst generateHitAreas = (tree: Node, currentNode: Node, treeBottom: number) =>\n generateHitAreasFromPositions(\n generateHitPositions(tree, currentNode),\n treeBottom,\n );\n\nexport default generateHitAreas;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generateHitAreas.js","sources":["../../src/dragAndDropHandler/generateHitAreas.ts"],"sourcesContent":["import type { Node, Position } from \"../node\";\nimport type { HitArea } from \"./types\";\n\nimport { getOffsetTop } from \"../positionUtils\";\nimport iterateVisibleNodes from \"./iterateVisibleNodes\";\n\ninterface HitPosition {\n node: Node;\n position: null | Position;\n top: number;\n}\n\nexport const generateHitPositions = (\n tree: Node,\n currentNode: Node,\n): HitPosition[] => {\n const hitPositions: HitPosition[] = [];\n let lastTop = 0;\n\n const addHitPosition = (\n node: Node,\n position: null | Position,\n top: number,\n ) => {\n hitPositions.push({\n node,\n position,\n top,\n });\n lastTop = top;\n };\n\n const handleAfterOpenFolder = (node: Node, nextNode: Node | null) => {\n if (node === currentNode || nextNode === currentNode) {\n // Cannot move before or after current item\n addHitPosition(node, null, lastTop);\n } else {\n addHitPosition(node, \"after\", lastTop);\n }\n };\n\n const handleClosedFolder = (\n node: Node,\n nextNode: Node | null,\n element: HTMLElement,\n ) => {\n const top = getOffsetTop(element);\n\n if (node === currentNode) {\n // Cannot move after current item\n addHitPosition(node, null, top);\n } else {\n addHitPosition(node, \"inside\", top);\n\n // Cannot move before current item\n if (nextNode !== currentNode) {\n addHitPosition(node, \"after\", top);\n }\n }\n };\n\n const handleFirstNode = (node: Node) => {\n if (node !== currentNode && node.element) {\n addHitPosition(node, \"before\", getOffsetTop(node.element));\n }\n };\n\n const handleNode = (\n node: Node,\n nextNode: Node | null,\n element: HTMLElement,\n ) => {\n const top = getOffsetTop(element);\n\n if (node === currentNode) {\n // Cannot move inside current item\n addHitPosition(node, null, top);\n } else {\n addHitPosition(node, \"inside\", top);\n }\n\n if (nextNode === currentNode || node === currentNode) {\n // Cannot move before or after current item\n addHitPosition(node, null, top);\n } else {\n addHitPosition(node, \"after\", top);\n }\n };\n\n const handleOpenFolder = (node: Node, element: HTMLElement) => {\n if (node === currentNode) {\n // Cannot move inside current item\n\n // Dnd over the current element is not possible: add a position with type None for the top and the bottom.\n const top = getOffsetTop(element);\n const height = element.clientHeight;\n addHitPosition(node, null, top);\n\n if (height > 5) {\n // Subtract 5 pixels to allow more space for the next element.\n addHitPosition(node, null, top + height - 5);\n }\n\n // Stop iterating\n return false;\n }\n\n // Cannot move before current item\n if (node.children[0] !== currentNode) {\n addHitPosition(node, \"inside\", getOffsetTop(element));\n }\n\n // Continue iterating\n return true;\n };\n\n iterateVisibleNodes(tree, {\n handleAfterOpenFolder,\n handleClosedFolder,\n handleFirstNode,\n handleNode,\n handleOpenFolder,\n });\n\n return hitPositions;\n};\n\nexport const generateHitAreasForGroup = (\n hitAreas: HitArea[],\n positionsInGroup: HitPosition[],\n top: number,\n bottom: number,\n) => {\n // limit positions in group\n const positionCount = Math.min(positionsInGroup.length, 4);\n\n const areaHeight = Math.round((bottom - top) / positionCount);\n let areaTop = top;\n\n for (let i = 0; i < positionCount; i++) {\n const position = positionsInGroup[i] as HitPosition;\n\n if (position.position) {\n hitAreas.push({\n bottom: areaTop + areaHeight,\n node: position.node,\n position: position.position,\n top: areaTop,\n });\n }\n\n areaTop += areaHeight;\n }\n};\n\nexport const generateHitAreasFromPositions = (\n hitPositions: HitPosition[],\n treeBottom: number,\n): HitArea[] => {\n if (!hitPositions.length) {\n return [];\n }\n\n let previousTop = (hitPositions[0] as HitPosition).top;\n let group: HitPosition[] = [];\n const hitAreas: HitArea[] = [];\n\n for (const position of hitPositions) {\n if (position.top !== previousTop && group.length) {\n generateHitAreasForGroup(hitAreas, group, previousTop, position.top);\n\n previousTop = position.top;\n group = [];\n }\n\n group.push(position);\n }\n\n generateHitAreasForGroup(hitAreas, group, previousTop, treeBottom);\n\n return hitAreas;\n};\n\nconst generateHitAreas = (tree: Node, currentNode: Node, treeBottom: number) =>\n generateHitAreasFromPositions(\n generateHitPositions(tree, currentNode),\n treeBottom,\n );\n\nexport default generateHitAreas;\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dragAndDropHandler/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dragAndDropHandler/index.ts"],"names":[],"mappings":"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"}