tree-element 0.4.0 → 0.4.1

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 (74) hide show
  1. package/README.md +22 -20
  2. package/lib/dataLoader.d.ts.map +1 -1
  3. package/lib/dataLoader.js +4 -1
  4. package/lib/dataLoader.js.map +1 -1
  5. package/lib/dragAndDropHandler/generateHitAreas.d.ts.map +1 -1
  6. package/lib/dragAndDropHandler/generateHitAreas.js +3 -2
  7. package/lib/dragAndDropHandler/generateHitAreas.js.map +1 -1
  8. package/lib/dragAndDropHandler/index.d.ts +2 -4
  9. package/lib/dragAndDropHandler/index.d.ts.map +1 -1
  10. package/lib/dragAndDropHandler/index.js +2 -9
  11. package/lib/dragAndDropHandler/index.js.map +1 -1
  12. package/lib/elementsRenderer.d.ts +7 -2
  13. package/lib/elementsRenderer.d.ts.map +1 -1
  14. package/lib/elementsRenderer.js +70 -23
  15. package/lib/elementsRenderer.js.map +1 -1
  16. package/lib/events.d.ts +13 -7
  17. package/lib/events.d.ts.map +1 -1
  18. package/lib/folderOpenState.d.ts +8 -0
  19. package/lib/folderOpenState.d.ts.map +1 -0
  20. package/lib/folderOpenState.js +22 -0
  21. package/lib/folderOpenState.js.map +1 -0
  22. package/lib/index.d.ts +17 -16
  23. package/lib/index.d.ts.map +1 -1
  24. package/lib/index.js +93 -49
  25. package/lib/index.js.map +1 -1
  26. package/lib/keyHandler.d.ts +2 -0
  27. package/lib/keyHandler.d.ts.map +1 -1
  28. package/lib/keyHandler.js +18 -0
  29. package/lib/keyHandler.js.map +1 -1
  30. package/lib/mouseHandler.d.ts.map +1 -1
  31. package/lib/mouseHandler.js +12 -12
  32. package/lib/mouseHandler.js.map +1 -1
  33. package/lib/node.d.ts +12 -10
  34. package/lib/node.d.ts.map +1 -1
  35. package/lib/node.js +12 -10
  36. package/lib/node.js.map +1 -1
  37. package/lib/nodeElement/folderElement.d.ts +7 -5
  38. package/lib/nodeElement/folderElement.d.ts.map +1 -1
  39. package/lib/nodeElement/folderElement.js +33 -53
  40. package/lib/nodeElement/folderElement.js.map +1 -1
  41. package/lib/options.d.ts +19 -17
  42. package/lib/options.d.ts.map +1 -1
  43. package/lib/options.js +12 -0
  44. package/lib/options.js.map +1 -0
  45. package/lib/saveStateHandler.d.ts.map +1 -1
  46. package/lib/saveStateHandler.js +6 -6
  47. package/lib/saveStateHandler.js.map +1 -1
  48. package/lib/selectNodeHandler.d.ts.map +1 -1
  49. package/lib/selectNodeHandler.js +13 -1
  50. package/lib/selectNodeHandler.js.map +1 -1
  51. package/lib/version.d.ts +1 -1
  52. package/lib/version.js +1 -1
  53. package/lib/version.js.map +1 -1
  54. package/package.json +35 -29
  55. package/src/dataLoader.ts +3 -1
  56. package/src/dragAndDropHandler/generateHitAreas.ts +3 -2
  57. package/src/dragAndDropHandler/index.ts +3 -17
  58. package/src/elementsRenderer.ts +84 -33
  59. package/src/events.ts +13 -7
  60. package/src/folderOpenState.ts +38 -0
  61. package/src/index.ts +109 -59
  62. package/src/keyHandler.ts +20 -0
  63. package/src/mouseHandler.ts +15 -13
  64. package/src/node.ts +12 -10
  65. package/src/nodeElement/folderElement.ts +45 -70
  66. package/src/options.ts +36 -17
  67. package/src/saveStateHandler.ts +5 -8
  68. package/src/selectNodeHandler.ts +12 -1
  69. package/src/version.ts +1 -1
  70. package/tree_element.css +32 -5
  71. package/tree_element.debug.js +291 -165
  72. package/tree_element.debug.js.map +1 -1
  73. package/tree_element.js +2 -2
  74. package/tree_element.js.map +1 -1
package/README.md CHANGED
@@ -1,9 +1,9 @@
1
1
  # Tree-element
2
2
 
3
- Tree widget in plain javascript. No jQuery, no framework, no runtime dependencies.
3
+ Tree widget in plain JavaScript. No jQuery, no framework, no runtime dependencies.
4
4
 
5
- - Loads data from a javascript array or from a url
6
- - Drag and drop, with autoscroll
5
+ - Loads data from a JavaScript array or from a URL
6
+ - Drag and drop, with automatic scrolling
7
7
  - Keyboard support
8
8
  - Saves the open and selected nodes to local storage
9
9
  - Right-to-left support
@@ -15,13 +15,15 @@ npm package: https://www.npmjs.com/package/tree-element
15
15
 
16
16
  ![screenshot](https://raw.github.com/mbraak/tree-element/master/screenshot.png)
17
17
 
18
+ The preceding screenshot is from https://mbraak.github.io/tree-element-example/
19
+
18
20
  ## Install
19
21
 
20
22
  ```sh
21
23
  npm install tree-element
22
24
  ```
23
25
 
24
- Or use the bundle directly with a script tag; it exposes a global `TreeElement`:
26
+ Or use the bundle directly with a script tag. It exposes a global `TreeElement`:
25
27
 
26
28
  ```html
27
29
  <link rel="stylesheet" href="tree_element.css" />
@@ -57,7 +59,7 @@ Nodes are plain objects. `name` is displayed, `children` nests, and `id` is
57
59
  optional but needed for `getNodeById` and for saving state. Any other key you
58
60
  set is kept on the node and can be read back with `getNodesByProperty`.
59
61
 
60
- ### Loading from a url
62
+ ### Loading from a URL
61
63
 
62
64
  ```js
63
65
  new TreeElement({
@@ -66,7 +68,7 @@ new TreeElement({
66
68
  });
67
69
  ```
68
70
 
69
- The url can also be set with a `data-url` attribute on the element. Pass a
71
+ The URL can also be set with a `data-url` attribute on the element. Pass a
70
72
  function to compute it per node, which is how load-on-demand works: set
71
73
  `load_on_demand: true` on a node and its children are fetched when it opens.
72
74
 
@@ -84,21 +86,21 @@ new TreeElement({
84
86
  | `animationSpeed` | `"fast"` | `"fast"`, `"slow"`, or a number of milliseconds. `0` for reduced motion |
85
87
  | `ariaLabel` | | The accessible name of the tree |
86
88
  | `ariaLabelledBy` | | The id of the element that names the tree |
87
- | `autoEscape` | `true` | Escape node names. Set to `false` to render html in a name |
89
+ | `autoEscape` | `true` | Escape node names. Set to `false` to render HTML in a name |
88
90
  | `autoOpen` | `false` | `true` opens everything, a number opens that many levels (`0` is the first level) |
89
91
  | `buttonLeft` | `true` | Put the open/close button left of the title |
90
- | `classPrefix` | `"tree-element"` | The prefix of all css classes |
91
- | `closedIcon` | svg triangle ▶ (◀ rtl) | Html string or element |
92
+ | `classPrefix` | `"tree-element"` | The prefix of all CSS classes |
93
+ | `closedIcon` | SVG triangle ▶ (◀ rtl) | HTML string or element |
92
94
  | `commonClassName` | `"tree-element-common"` | The class that every element gets |
93
95
  | `data` | | The nodes to display |
94
96
  | `dataFilter` | | Transforms the response of `dataUrl` into node data |
95
- | `dataUrl` | `data-url` attribute | Url, or a function returning a url |
97
+ | `dataUrl` | `data-url` attribute | URL, or a function returning a URL |
96
98
  | `dragAndDrop` | `false` | Enable drag and drop |
97
99
  | `keyboardSupport` | `true` | Navigate with the keyboard |
98
100
  | `multiSelect` | `false` | A click adds a node to the selection, or removes it |
99
101
  | `nodeClass` | `Node` | Subclass of `Node` to use for nodes |
100
102
  | `openFolderDelay` | `500` | Milliseconds before a folder opens while dragging over it. `false` disables it |
101
- | `openedIcon` | svg triangle ▼ | Html string or element |
103
+ | `openedIcon` | SVG triangle ▼ | HTML string or element |
102
104
  | `rtl` | `data-rtl` attribute | Right-to-left rendering |
103
105
  | `saveState` | `false` | `true`, or a string to use as the storage key |
104
106
  | `selectable` | `true` | Allow selecting nodes |
@@ -167,7 +169,7 @@ Nodes are `Node` instances. Get one with `getNodeById`, `getNodeByName`,
167
169
  **Nodes**: `appendNode(data, parentNode)`, `prependNode(data, parentNode)`, `addNodeAfter(data, node)`, `addNodeBefore(data, node)`, `addParentNode(data, node)`, `updateNode(node, data)`, `removeNode(node)`, `moveNode(node, targetNode, position)`
168
170
 
169
171
  **Opening**: `openNode(node, slide?)`, `closeNode(node, slide?)`, `toggle(node, slide?)`.
170
- `openNode`, `closeNode` and `toggle` return a promise that is resolved when the folder is open or closed.
172
+ `openNode`, `closeNode` and `toggle` return a promise that's resolved when the folder is open or closed.
171
173
 
172
174
  **Selection**: `selectNode(node, options?)`, `getSelectedNode()`, `getSelectedNodes()`, `isNodeSelected(node)`, `addToSelection(node, mustSetFocus?)`, `removeFromSelection(node)`, `moveUp()`, `moveDown()`
173
175
 
@@ -175,7 +177,7 @@ Nodes are `Node` instances. Get one with `getNodeById`, `getNodeByName`,
175
177
 
176
178
  **Other**: `scrollToNode(node)`, `isDragging()`, `refreshHitAreas()`, `setOption(name, value)`, `getTree()`, `getVersion()`, `deinit()`
177
179
 
178
- ## Typescript
180
+ ## TypeScript
179
181
 
180
182
  The public types are exported from the package entry point:
181
183
 
@@ -193,15 +195,15 @@ const options: Partial<TreeElementOptions> = { dragAndDrop: true };
193
195
  const data: NodeData[] = [{ name: "root", id: 1 }];
194
196
  ```
195
197
 
196
- `Node` is exported as a type only, so it cannot be used with `instanceof`.
198
+ `Node` is exported as a type only, so it can't be used with `instanceof`.
197
199
 
198
200
  ## Entry points
199
201
 
200
202
  | | |
201
203
  | ------------------------------- | ------------------------------------------------------------------ |
202
204
  | `import "tree-element"` | `lib/index.js`, unbundled es modules |
203
- | `require`, script tag | `tree_element.js`, minified iife exposing the global `TreeElement` |
204
- | `tree-element/tree_element.css` | The stylesheet |
205
+ | `require`, script tag | `tree_element.js`, minified IIFE exposing the global `TreeElement` |
206
+ | `tree-element/tree_element.css` | The style sheet |
205
207
 
206
208
  `tree_element.debug.js` is the same bundle without minification.
207
209
 
@@ -223,10 +225,10 @@ pnpm docs-check # type-check the code snippets in the docs
223
225
  pnpm ci # lint, typecheck, check the docs and test
224
226
  ```
225
227
 
226
- `pnpm test` runs the vitest unit tests and the playwright browser tests. The
228
+ `pnpm test` runs the Vitest unit tests and the Playwright browser tests. The
227
229
  browser tests include accessibility checks: axe scans the rendered tree
228
230
  (including color contrast) and keyboard-only tests cover tabbing into the tree,
229
- the arrow keys, `Home`, `End` and `Enter`. They are in
231
+ the arrow keys, `Home`, `End` and `Enter`. They're in
230
232
  `playwright/accessibility.test.ts`.
231
233
 
232
234
  ### Releasing
@@ -241,9 +243,9 @@ pnpm release patch # or minor, major, or an explicit version
241
243
  Add `--dry-run` to see the version bump and changelog change without committing.
242
244
 
243
245
  This bumps the version, moves the unreleased changes in the changelog to the new
244
- version, commits, tags `v<version>` and pushes. The
246
+ version, commits, tags `v<version>`, and pushes. The
245
247
  [Release workflow](.github/workflows/release.yml) then runs the checks, publishes
246
- to npm with provenance and creates the GitHub release.
248
+ to npm with provenance, and creates the GitHub release.
247
249
 
248
250
  ## License
249
251
 
@@ -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;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;CAwDtE"}
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;CA0DtE"}
package/lib/dataLoader.js CHANGED
@@ -52,9 +52,12 @@ class DataLoader {
52
52
  };
53
53
  let signal = this._abortController.signal;
54
54
  url._setSearchParam("_", Date.now().toString());
55
+
56
+ // Accept, not Content-Type: the request has no body. A cross-origin request
57
+ // with only an Accept header also needs no CORS preflight.
55
58
  return fetch(url._value(), {
56
59
  headers: {
57
- "Content-Type": "application/json"
60
+ Accept: "application/json"
58
61
  },
59
62
  signal
60
63
  }).then(handleResponse).catch(error => {
@@ -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(url: RequestUrl, node?: Node): Promise<void> {\n const element = node?.element ?? this.treeElement;\n element.classList.add(this.classNames.loading);\n\n // Tell screen readers that the children of the folder are loading\n if (node) {\n element.setAttribute(\"aria-busy\", \"true\");\n }\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 if (node) {\n element.removeAttribute(\"aria-busy\");\n }\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;AACA,IAAA,IAAI,IAAI,EAAE;AACR,MAAA,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC;AAC3C,IAAA;AAEA,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,IAAI,EAAE;AACR,QAAA,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC;AACtC,MAAA;AACA,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;;"}
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 // Tell screen readers that the children of the folder are loading\n if (node) {\n element.setAttribute(\"aria-busy\", \"true\");\n }\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 if (node) {\n element.removeAttribute(\"aria-busy\");\n }\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 // Accept, not Content-Type: the request has no body. A cross-origin request\n // with only an Accept header also needs no CORS preflight.\n return fetch(url.value(), {\n headers: { Accept: \"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;AACA,IAAA,IAAI,IAAI,EAAE;AACR,MAAA,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC;AAC3C,IAAA;AAEA,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,IAAI,EAAE;AACR,QAAA,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC;AACtC,MAAA;AACA,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;AACA;AACA,IAAA,OAAO,KAAK,CAAC,GAAG,CAACC,MAAK,EAAE,EAAE;AACxB,MAAA,OAAO,EAAE;AAAE,QAAA,MAAM,EAAE;OAAoB;AACvC,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;;"}
@@ -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;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
+ {"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,EA+Gb,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"}
@@ -13,8 +13,9 @@ let generateHitPositions = (tree, currentNode) => {
13
13
  lastTop = top;
14
14
  };
15
15
  let handleAfterOpenFolder = (node, nextNode) => {
16
- if (node === currentNode || nextNode === currentNode) {
17
- // Cannot move before or after current item
16
+ // Not called for the current node: handleOpenFolder stops iterating there
17
+ if (nextNode === currentNode) {
18
+ // Dropping the current node after this folder would leave it where it is
18
19
  addHitPosition(node, null, lastTop);
19
20
  } else {
20
21
  addHitPosition(node, "after", lastTop);
@@ -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(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
+ {"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 // Not called for the current node: handleOpenFolder stops iterating there\n if (nextNode === currentNode) {\n // Dropping the current node after this folder would leave it where it is\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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"}
@@ -20,7 +20,6 @@ interface DragAndDropHandlerParams {
20
20
  openFolderDelay: false | number;
21
21
  openNode: OpenNode;
22
22
  refreshElements: RefreshElements;
23
- slide: boolean;
24
23
  treeElement: HTMLElement;
25
24
  triggerEvent: TriggerEvent;
26
25
  }
@@ -48,14 +47,13 @@ export declare class DragAndDropHandler {
48
47
  private openNode;
49
48
  private previousGhost;
50
49
  private refreshElements;
51
- private slide;
52
50
  private treeElement;
53
51
  private triggerEvent;
54
- constructor({ autoEscape, classNames, getNodeElement, getNodeElementForNode, getScrollLeft, getTree, onCanMove, onCanMoveTo, onDragMove, onDragStop, onIsMoveHandle, openFolderDelay, openNode, refreshElements, slide, treeElement, triggerEvent, }: DragAndDropHandlerParams);
52
+ constructor({ autoEscape, classNames, getNodeElement, getNodeElementForNode, getScrollLeft, getTree, onCanMove, onCanMoveTo, onDragMove, onDragStop, onIsMoveHandle, openFolderDelay, openNode, refreshElements, treeElement, triggerEvent, }: DragAndDropHandlerParams);
55
53
  mouseCapture(positionInfo: PositionInfo): boolean | null;
56
54
  mouseDrag(positionInfo: PositionInfo): boolean;
57
55
  mouseStart(positionInfo: PositionInfo): boolean;
58
- mouseStop(positionInfo: PositionInfo): boolean;
56
+ mouseStop(positionInfo: PositionInfo): void;
59
57
  refresh(): void;
60
58
  private canMoveToArea;
61
59
  private clear;
@@ -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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"}
@@ -19,7 +19,6 @@ class DragAndDropHandler {
19
19
  _openFolderDelay: openFolderDelay,
20
20
  _openNode: openNode,
21
21
  _refreshElements: refreshElements,
22
- _slide: slide,
23
22
  _treeElement: treeElement,
24
23
  _triggerEvent: triggerEvent
25
24
  }) {
@@ -37,7 +36,6 @@ class DragAndDropHandler {
37
36
  this._openFolderDelay = openFolderDelay;
38
37
  this._openNode = openNode;
39
38
  this._refreshElements = refreshElements;
40
- this._slide = slide;
41
39
  this._treeElement = treeElement;
42
40
  this._triggerEvent = triggerEvent;
43
41
  this._hoveredArea = null;
@@ -70,9 +68,6 @@ class DragAndDropHandler {
70
68
  this._dragElement._move(positionInfo.pageX, positionInfo.pageY);
71
69
  let area = this._findHoveredArea(positionInfo.pageX, positionInfo.pageY);
72
70
  if (area && this._canMoveToArea(area, this._currentItem)) {
73
- if (!area.node.isFolder()) {
74
- this._stopOpenFolderTimer();
75
- }
76
71
  if (this._hoveredArea !== area) {
77
72
  this._hoveredArea = area;
78
73
 
@@ -131,7 +126,6 @@ class DragAndDropHandler {
131
126
  if (!this._hoveredArea && currentItem && this._onDragStop) {
132
127
  this._onDragStop(currentItem._node, positionInfo.originalEvent);
133
128
  }
134
- return false;
135
129
  }
136
130
  _refresh() {
137
131
  this._removeHitAreas();
@@ -222,8 +216,7 @@ class DragAndDropHandler {
222
216
  }
223
217
  }
224
218
  _mustCaptureElement(element) {
225
- let nodeName = element.nodeName;
226
- return nodeName !== "INPUT" && nodeName !== "SELECT" && nodeName !== "TEXTAREA";
219
+ return !["INPUT", "SELECT", "TEXTAREA"].includes(element.nodeName);
227
220
  }
228
221
  _mustOpenFolderTimer(area) {
229
222
  let node = area.node;
@@ -242,7 +235,7 @@ class DragAndDropHandler {
242
235
  }
243
236
  _startOpenFolderTimer(folder) {
244
237
  let openFolder = () => {
245
- void this._openNode(folder, this._slide).then(() => {
238
+ void this._openNode(folder).then(() => {
246
239
  this._refresh();
247
240
  this._updateDropHint();
248
241
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/dragAndDropHandler/index.ts"],"sourcesContent":["import type { ClassNames } from \"../classNames\";\nimport type {\n GetScrollLeft,\n GetTree,\n OpenNode,\n RefreshElements,\n TriggerEvent,\n} from \"../methodTypes\";\nimport type { PositionInfo } from \"../mouseUtils\";\nimport type { Node } from \"../node\";\nimport type NodeElement from \"../nodeElement\";\nimport type {\n DragMethod,\n OnCanMove,\n OnCanMoveTo,\n OnIsMoveHandle,\n} from \"../options\";\nimport type { DropHint, HitArea } from \"./types\";\n\nimport { getElementPosition } from \"../positionUtils\";\nimport binarySearch from \"./binarySearch\";\nimport DragElement from \"./dragElement\";\nimport generateHitAreas from \"./generateHitAreas\";\n\ninterface Dimensions {\n bottom: number;\n left: number;\n right: number;\n top: number;\n}\n\ninterface DragAndDropHandlerParams {\n autoEscape?: boolean;\n classNames: ClassNames;\n getNodeElement: GetNodeElement;\n getNodeElementForNode: GetNodeElementForNode;\n getScrollLeft: GetScrollLeft;\n getTree: GetTree;\n onCanMove?: OnCanMove;\n onCanMoveTo?: OnCanMoveTo;\n onDragMove?: DragMethod;\n onDragStop?: DragMethod;\n onIsMoveHandle?: OnIsMoveHandle;\n openFolderDelay: false | number;\n openNode: OpenNode;\n refreshElements: RefreshElements;\n slide: boolean;\n treeElement: HTMLElement;\n triggerEvent: TriggerEvent;\n}\ntype GetNodeElement = (element: HTMLElement) => NodeElement | null;\n\ntype GetNodeElementForNode = (node: Node) => NodeElement;\n\nexport class DragAndDropHandler {\n public currentItem: NodeElement | null;\n public hitAreas: HitArea[];\n public hoveredArea: HitArea | null;\n public isDragging: boolean;\n\n private autoEscape?: boolean;\n private classNames: ClassNames;\n private dragElement: DragElement | null;\n private getNodeElement: GetNodeElement;\n private getNodeElementForNode: GetNodeElementForNode;\n private getScrollLeft: GetScrollLeft;\n private getTree: GetTree;\n private onCanMove?: OnCanMove;\n private onCanMoveTo?: OnCanMoveTo;\n private onDragMove?: DragMethod;\n private onDragStop?: DragMethod;\n private onIsMoveHandle?: OnIsMoveHandle;\n private openFolderDelay: false | number;\n private openFolderTimer: null | number;\n private openNode: OpenNode;\n private previousGhost: DropHint | null;\n private refreshElements: RefreshElements;\n private slide: boolean;\n private treeElement: HTMLElement;\n private triggerEvent: TriggerEvent;\n\n constructor({\n autoEscape,\n classNames,\n getNodeElement,\n getNodeElementForNode,\n getScrollLeft,\n getTree,\n onCanMove,\n onCanMoveTo,\n onDragMove,\n onDragStop,\n onIsMoveHandle,\n openFolderDelay,\n openNode,\n refreshElements,\n slide,\n treeElement,\n triggerEvent,\n }: DragAndDropHandlerParams) {\n this.autoEscape = autoEscape;\n this.classNames = classNames;\n this.getNodeElement = getNodeElement;\n this.getNodeElementForNode = getNodeElementForNode;\n this.getScrollLeft = getScrollLeft;\n this.getTree = getTree;\n this.onCanMove = onCanMove;\n this.onCanMoveTo = onCanMoveTo;\n this.onDragMove = onDragMove;\n this.onDragStop = onDragStop;\n this.onIsMoveHandle = onIsMoveHandle;\n this.openFolderDelay = openFolderDelay;\n this.openNode = openNode;\n this.refreshElements = refreshElements;\n this.slide = slide;\n this.treeElement = treeElement;\n this.triggerEvent = triggerEvent;\n\n this.hoveredArea = null;\n this.hitAreas = [];\n this.isDragging = false;\n this.currentItem = null;\n\n this.dragElement = null;\n this.openFolderTimer = null;\n this.previousGhost = null;\n }\n\n public mouseCapture(positionInfo: PositionInfo): boolean | null {\n const element = positionInfo.target;\n\n if (!this.mustCaptureElement(element)) {\n return null;\n }\n\n if (this.onIsMoveHandle && !this.onIsMoveHandle(element)) {\n return null;\n }\n\n let nodeElement = this.getNodeElement(element);\n\n if (nodeElement && this.onCanMove && !this.onCanMove(nodeElement.node)) {\n nodeElement = null;\n }\n\n this.currentItem = nodeElement;\n return this.currentItem != null;\n }\n\n public mouseDrag(positionInfo: PositionInfo): boolean {\n if (!this.currentItem || !this.dragElement) {\n return false;\n }\n\n this.dragElement.move(positionInfo.pageX, positionInfo.pageY);\n\n const area = this.findHoveredArea(positionInfo.pageX, positionInfo.pageY);\n\n if (area && this.canMoveToArea(area, this.currentItem)) {\n if (!area.node.isFolder()) {\n this.stopOpenFolderTimer();\n }\n\n if (this.hoveredArea !== area) {\n this.hoveredArea = area;\n\n // If this is a closed folder, start timer to open it\n if (this.mustOpenFolderTimer(area)) {\n this.startOpenFolderTimer(area.node);\n } else {\n this.stopOpenFolderTimer();\n }\n\n this.updateDropHint();\n }\n } else {\n this.removeDropHint();\n this.stopOpenFolderTimer();\n this.hoveredArea = area;\n }\n\n if (!area && this.onDragMove) {\n this.onDragMove(this.currentItem.node, positionInfo.originalEvent);\n }\n\n return true;\n }\n\n public mouseStart(positionInfo: PositionInfo): boolean {\n if (!this.currentItem) {\n return false;\n }\n\n this.refresh();\n\n const { left, top } = getElementPosition(positionInfo.target);\n\n const node = this.currentItem.node;\n\n this.dragElement = new DragElement({\n autoEscape: this.autoEscape ?? true,\n classNames: this.classNames,\n nodeName: node.name,\n offsetX: positionInfo.pageX - left,\n offsetY: positionInfo.pageY - top,\n treeElement: this.treeElement,\n });\n\n this.isDragging = true;\n this.currentItem.element.classList.add(this.classNames.moving);\n\n return true;\n }\n\n public mouseStop(positionInfo: PositionInfo): boolean {\n this.moveItem(positionInfo);\n this.clear();\n this.removeHover();\n this.removeDropHint();\n this.removeHitAreas();\n\n const currentItem = this.currentItem;\n\n if (this.currentItem) {\n this.currentItem.element.classList.remove(this.classNames.moving);\n this.currentItem = null;\n }\n\n this.isDragging = false;\n\n if (!this.hoveredArea && currentItem && this.onDragStop) {\n this.onDragStop(currentItem.node, positionInfo.originalEvent);\n }\n\n return false;\n }\n\n public refresh(): void {\n this.removeHitAreas();\n\n if (!this.currentItem) {\n return;\n }\n\n const currentNode = this.currentItem.node;\n this.generateHitAreas(currentNode);\n this.currentItem = this.getNodeElementForNode(currentNode);\n\n if (this.isDragging) {\n this.currentItem.element.classList.add(this.classNames.moving);\n }\n }\n\n private canMoveToArea(area: HitArea, currentItem: NodeElement): boolean {\n return this.onCanMoveTo\n ? this.onCanMoveTo(currentItem.node, area.node, area.position)\n : true;\n }\n\n private clear(): void {\n if (!this.dragElement) {\n return;\n }\n\n this.dragElement.remove();\n this.dragElement = null;\n }\n\n private findHoveredArea(x: number, y: number): HitArea | null {\n const dimensions = this.getTreeDimensions();\n\n if (\n x < dimensions.left ||\n y < dimensions.top ||\n x > dimensions.right ||\n y > dimensions.bottom\n ) {\n return null;\n }\n\n return binarySearch<HitArea>(this.hitAreas, (area) => {\n if (y < area.top) {\n return 1;\n }\n return y > area.bottom ? -1 : 0;\n });\n }\n\n private generateHitAreas(currentNode: Node): void {\n const tree = this.getTree();\n\n this.hitAreas = tree\n ? generateHitAreas(tree, currentNode, this.getTreeDimensions().bottom)\n : [];\n }\n\n private getTreeDimensions(): Dimensions {\n // Return the dimensions of the tree. Add a margin to the bottom to allow\n // to drag-and-drop after the last element.\n const treePosition = getElementPosition(this.treeElement);\n const left = treePosition.left + this.getScrollLeft();\n const top = treePosition.top;\n\n return {\n bottom: top + this.treeElement.clientHeight + 16,\n left,\n right: left + this.treeElement.clientWidth,\n top,\n };\n }\n\n /*\n Move the dragged node to the selected position in the tree.\n */\n private moveItem(positionInfo: PositionInfo): void {\n if (!(\n this.currentItem &&\n this.hoveredArea?.position &&\n this.canMoveToArea(this.hoveredArea, this.currentItem)\n )) {\n return;\n }\n\n const movedNode = this.currentItem.node;\n const targetNode = this.hoveredArea.node;\n const position = this.hoveredArea.position;\n const previousParent = movedNode.parent;\n\n if (position === \"inside\") {\n this.hoveredArea.node.is_open = true;\n }\n\n const doMove = (): void => {\n const tree = this.getTree();\n\n if (!tree) {\n return;\n }\n\n tree.moveNode(movedNode, targetNode, position);\n\n this.treeElement.textContent = \"\";\n this.refreshElements(null);\n };\n\n if (\n this.triggerEvent(\"tree.move\", {\n moveInfo: {\n doMove,\n movedNode,\n originalEvent: positionInfo.originalEvent,\n position,\n previousParent,\n targetNode,\n },\n })\n ) {\n doMove();\n }\n }\n\n private mustCaptureElement(element: HTMLElement): boolean {\n const nodeName = element.nodeName;\n\n return (\n nodeName !== \"INPUT\" && nodeName !== \"SELECT\" && nodeName !== \"TEXTAREA\"\n );\n }\n\n private mustOpenFolderTimer(area: HitArea): boolean {\n const node = area.node;\n\n return node.isFolder() && !node.is_open && area.position === \"inside\";\n }\n\n private removeDropHint(): void {\n if (this.previousGhost) {\n this.previousGhost.remove();\n }\n }\n\n private removeHitAreas(): void {\n this.hitAreas = [];\n }\n\n private removeHover(): void {\n this.hoveredArea = null;\n }\n\n private startOpenFolderTimer(folder: Node): void {\n const openFolder = (): void => {\n void this.openNode(folder, this.slide).then(() => {\n this.refresh();\n this.updateDropHint();\n });\n };\n\n this.stopOpenFolderTimer();\n\n const openFolderDelay = this.openFolderDelay;\n\n if (openFolderDelay !== false) {\n this.openFolderTimer = window.setTimeout(openFolder, openFolderDelay);\n }\n }\n\n private stopOpenFolderTimer(): void {\n if (!this.openFolderTimer) {\n return;\n }\n\n clearTimeout(this.openFolderTimer);\n this.openFolderTimer = null;\n }\n\n private updateDropHint(): void {\n if (!this.hoveredArea) {\n return;\n }\n\n // remove previous drop hint\n this.removeDropHint();\n\n // add new drop hint\n const nodeElement = this.getNodeElementForNode(this.hoveredArea.node);\n this.previousGhost = nodeElement.addDropHint(this.hoveredArea.position);\n }\n}\n"],"names":["autoEscape","classNames","getNodeElement","getNodeElementForNode","getScrollLeft","getTree","onCanMove","onCanMoveTo","onDragMove","onDragStop","onIsMoveHandle","openFolderDelay","openNode","refreshElements","slide","treeElement","triggerEvent","hoveredArea","hitAreas","isDragging","currentItem","dragElement","openFolderTimer","previousGhost","mouseCapture","mustCaptureElement","node","mouseDrag","move","findHoveredArea","canMoveToArea","stopOpenFolderTimer","mustOpenFolderTimer","startOpenFolderTimer","updateDropHint","removeDropHint","mouseStart","refresh","element","mouseStop","moveItem","clear","removeHover","removeHitAreas","generateHitAreas","remove","getTreeDimensions","addDropHint"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/dragAndDropHandler/index.ts"],"sourcesContent":["import type { ClassNames } from \"../classNames\";\nimport type {\n GetScrollLeft,\n GetTree,\n OpenNode,\n RefreshElements,\n TriggerEvent,\n} from \"../methodTypes\";\nimport type { PositionInfo } from \"../mouseUtils\";\nimport type { Node } from \"../node\";\nimport type NodeElement from \"../nodeElement\";\nimport type {\n DragMethod,\n OnCanMove,\n OnCanMoveTo,\n OnIsMoveHandle,\n} from \"../options\";\nimport type { DropHint, HitArea } from \"./types\";\n\nimport { getElementPosition } from \"../positionUtils\";\nimport binarySearch from \"./binarySearch\";\nimport DragElement from \"./dragElement\";\nimport generateHitAreas from \"./generateHitAreas\";\n\ninterface Dimensions {\n bottom: number;\n left: number;\n right: number;\n top: number;\n}\n\ninterface DragAndDropHandlerParams {\n autoEscape?: boolean;\n classNames: ClassNames;\n getNodeElement: GetNodeElement;\n getNodeElementForNode: GetNodeElementForNode;\n getScrollLeft: GetScrollLeft;\n getTree: GetTree;\n onCanMove?: OnCanMove;\n onCanMoveTo?: OnCanMoveTo;\n onDragMove?: DragMethod;\n onDragStop?: DragMethod;\n onIsMoveHandle?: OnIsMoveHandle;\n openFolderDelay: false | number;\n openNode: OpenNode;\n refreshElements: RefreshElements;\n treeElement: HTMLElement;\n triggerEvent: TriggerEvent;\n}\ntype GetNodeElement = (element: HTMLElement) => NodeElement | null;\n\ntype GetNodeElementForNode = (node: Node) => NodeElement;\n\nexport class DragAndDropHandler {\n public currentItem: NodeElement | null;\n public hitAreas: HitArea[];\n public hoveredArea: HitArea | null;\n public isDragging: boolean;\n\n private autoEscape?: boolean;\n private classNames: ClassNames;\n private dragElement: DragElement | null;\n private getNodeElement: GetNodeElement;\n private getNodeElementForNode: GetNodeElementForNode;\n private getScrollLeft: GetScrollLeft;\n private getTree: GetTree;\n private onCanMove?: OnCanMove;\n private onCanMoveTo?: OnCanMoveTo;\n private onDragMove?: DragMethod;\n private onDragStop?: DragMethod;\n private onIsMoveHandle?: OnIsMoveHandle;\n private openFolderDelay: false | number;\n private openFolderTimer: null | number;\n private openNode: OpenNode;\n private previousGhost: DropHint | null;\n private refreshElements: RefreshElements;\n private treeElement: HTMLElement;\n private triggerEvent: TriggerEvent;\n\n constructor({\n autoEscape,\n classNames,\n getNodeElement,\n getNodeElementForNode,\n getScrollLeft,\n getTree,\n onCanMove,\n onCanMoveTo,\n onDragMove,\n onDragStop,\n onIsMoveHandle,\n openFolderDelay,\n openNode,\n refreshElements,\n treeElement,\n triggerEvent,\n }: DragAndDropHandlerParams) {\n this.autoEscape = autoEscape;\n this.classNames = classNames;\n this.getNodeElement = getNodeElement;\n this.getNodeElementForNode = getNodeElementForNode;\n this.getScrollLeft = getScrollLeft;\n this.getTree = getTree;\n this.onCanMove = onCanMove;\n this.onCanMoveTo = onCanMoveTo;\n this.onDragMove = onDragMove;\n this.onDragStop = onDragStop;\n this.onIsMoveHandle = onIsMoveHandle;\n this.openFolderDelay = openFolderDelay;\n this.openNode = openNode;\n this.refreshElements = refreshElements;\n this.treeElement = treeElement;\n this.triggerEvent = triggerEvent;\n\n this.hoveredArea = null;\n this.hitAreas = [];\n this.isDragging = false;\n this.currentItem = null;\n\n this.dragElement = null;\n this.openFolderTimer = null;\n this.previousGhost = null;\n }\n\n public mouseCapture(positionInfo: PositionInfo): boolean | null {\n const element = positionInfo.target;\n\n if (!this.mustCaptureElement(element)) {\n return null;\n }\n\n if (this.onIsMoveHandle && !this.onIsMoveHandle(element)) {\n return null;\n }\n\n let nodeElement = this.getNodeElement(element);\n\n if (nodeElement && this.onCanMove && !this.onCanMove(nodeElement.node)) {\n nodeElement = null;\n }\n\n this.currentItem = nodeElement;\n return this.currentItem != null;\n }\n\n public mouseDrag(positionInfo: PositionInfo): boolean {\n if (!this.currentItem || !this.dragElement) {\n return false;\n }\n\n this.dragElement.move(positionInfo.pageX, positionInfo.pageY);\n\n const area = this.findHoveredArea(positionInfo.pageX, positionInfo.pageY);\n\n if (area && this.canMoveToArea(area, this.currentItem)) {\n if (this.hoveredArea !== area) {\n this.hoveredArea = area;\n\n // If this is a closed folder, start timer to open it\n if (this.mustOpenFolderTimer(area)) {\n this.startOpenFolderTimer(area.node);\n } else {\n this.stopOpenFolderTimer();\n }\n\n this.updateDropHint();\n }\n } else {\n this.removeDropHint();\n this.stopOpenFolderTimer();\n this.hoveredArea = area;\n }\n\n if (!area && this.onDragMove) {\n this.onDragMove(this.currentItem.node, positionInfo.originalEvent);\n }\n\n return true;\n }\n\n public mouseStart(positionInfo: PositionInfo): boolean {\n if (!this.currentItem) {\n return false;\n }\n\n this.refresh();\n\n const { left, top } = getElementPosition(positionInfo.target);\n\n const node = this.currentItem.node;\n\n this.dragElement = new DragElement({\n autoEscape: this.autoEscape ?? true,\n classNames: this.classNames,\n nodeName: node.name,\n offsetX: positionInfo.pageX - left,\n offsetY: positionInfo.pageY - top,\n treeElement: this.treeElement,\n });\n\n this.isDragging = true;\n this.currentItem.element.classList.add(this.classNames.moving);\n\n return true;\n }\n\n public mouseStop(positionInfo: PositionInfo): void {\n this.moveItem(positionInfo);\n this.clear();\n this.removeHover();\n this.removeDropHint();\n this.removeHitAreas();\n\n const currentItem = this.currentItem;\n\n if (this.currentItem) {\n this.currentItem.element.classList.remove(this.classNames.moving);\n this.currentItem = null;\n }\n\n this.isDragging = false;\n\n if (!this.hoveredArea && currentItem && this.onDragStop) {\n this.onDragStop(currentItem.node, positionInfo.originalEvent);\n }\n }\n\n public refresh(): void {\n this.removeHitAreas();\n\n if (!this.currentItem) {\n return;\n }\n\n const currentNode = this.currentItem.node;\n this.generateHitAreas(currentNode);\n this.currentItem = this.getNodeElementForNode(currentNode);\n\n if (this.isDragging) {\n this.currentItem.element.classList.add(this.classNames.moving);\n }\n }\n\n private canMoveToArea(area: HitArea, currentItem: NodeElement): boolean {\n return this.onCanMoveTo\n ? this.onCanMoveTo(currentItem.node, area.node, area.position)\n : true;\n }\n\n private clear(): void {\n if (!this.dragElement) {\n return;\n }\n\n this.dragElement.remove();\n this.dragElement = null;\n }\n\n private findHoveredArea(x: number, y: number): HitArea | null {\n const dimensions = this.getTreeDimensions();\n\n if (\n x < dimensions.left ||\n y < dimensions.top ||\n x > dimensions.right ||\n y > dimensions.bottom\n ) {\n return null;\n }\n\n return binarySearch<HitArea>(this.hitAreas, (area) => {\n if (y < area.top) {\n return 1;\n }\n return y > area.bottom ? -1 : 0;\n });\n }\n\n private generateHitAreas(currentNode: Node): void {\n const tree = this.getTree();\n\n this.hitAreas = tree\n ? generateHitAreas(tree, currentNode, this.getTreeDimensions().bottom)\n : [];\n }\n\n private getTreeDimensions(): Dimensions {\n // Return the dimensions of the tree. Add a margin to the bottom to allow\n // to drag-and-drop after the last element.\n const treePosition = getElementPosition(this.treeElement);\n const left = treePosition.left + this.getScrollLeft();\n const top = treePosition.top;\n\n return {\n bottom: top + this.treeElement.clientHeight + 16,\n left,\n right: left + this.treeElement.clientWidth,\n top,\n };\n }\n\n /*\n Move the dragged node to the selected position in the tree.\n */\n private moveItem(positionInfo: PositionInfo): void {\n if (!(\n this.currentItem &&\n this.hoveredArea?.position &&\n this.canMoveToArea(this.hoveredArea, this.currentItem)\n )) {\n return;\n }\n\n const movedNode = this.currentItem.node;\n const targetNode = this.hoveredArea.node;\n const position = this.hoveredArea.position;\n const previousParent = movedNode.parent;\n\n if (position === \"inside\") {\n this.hoveredArea.node.is_open = true;\n }\n\n const doMove = (): void => {\n const tree = this.getTree();\n\n if (!tree) {\n return;\n }\n\n tree.moveNode(movedNode, targetNode, position);\n\n this.treeElement.textContent = \"\";\n this.refreshElements(null);\n };\n\n if (\n this.triggerEvent(\"tree.move\", {\n moveInfo: {\n doMove,\n movedNode,\n originalEvent: positionInfo.originalEvent,\n position,\n previousParent,\n targetNode,\n },\n })\n ) {\n doMove();\n }\n }\n\n private mustCaptureElement(element: HTMLElement): boolean {\n return ![\"INPUT\", \"SELECT\", \"TEXTAREA\"].includes(element.nodeName);\n }\n\n private mustOpenFolderTimer(area: HitArea): boolean {\n const node = area.node;\n\n return node.isFolder() && !node.is_open && area.position === \"inside\";\n }\n\n private removeDropHint(): void {\n if (this.previousGhost) {\n this.previousGhost.remove();\n }\n }\n\n private removeHitAreas(): void {\n this.hitAreas = [];\n }\n\n private removeHover(): void {\n this.hoveredArea = null;\n }\n\n private startOpenFolderTimer(folder: Node): void {\n const openFolder = (): void => {\n void this.openNode(folder).then(() => {\n this.refresh();\n this.updateDropHint();\n });\n };\n\n this.stopOpenFolderTimer();\n\n const openFolderDelay = this.openFolderDelay;\n\n if (openFolderDelay !== false) {\n this.openFolderTimer = window.setTimeout(openFolder, openFolderDelay);\n }\n }\n\n private stopOpenFolderTimer(): void {\n if (!this.openFolderTimer) {\n return;\n }\n\n clearTimeout(this.openFolderTimer);\n this.openFolderTimer = null;\n }\n\n private updateDropHint(): void {\n if (!this.hoveredArea) {\n return;\n }\n\n // remove previous drop hint\n this.removeDropHint();\n\n // add new drop hint\n const nodeElement = this.getNodeElementForNode(this.hoveredArea.node);\n this.previousGhost = nodeElement.addDropHint(this.hoveredArea.position);\n }\n}\n"],"names":["autoEscape","classNames","getNodeElement","getNodeElementForNode","getScrollLeft","getTree","onCanMove","onCanMoveTo","onDragMove","onDragStop","onIsMoveHandle","openFolderDelay","openNode","refreshElements","treeElement","triggerEvent","hoveredArea","hitAreas","isDragging","currentItem","dragElement","openFolderTimer","previousGhost","mouseCapture","mustCaptureElement","node","mouseDrag","move","findHoveredArea","canMoveToArea","mustOpenFolderTimer","startOpenFolderTimer","stopOpenFolderTimer","updateDropHint","removeDropHint","mouseStart","refresh","element","mouseStop","moveItem","clear","removeHover","removeHitAreas","generateHitAreas","remove","getTreeDimensions","addDropHint"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { ClassNames } from "./classNames.js";
2
+ import type { FolderIcons } from "./folderOpenState.js";
2
3
  import type { GetTree, IsNodeSelected } from "./methodTypes.js";
3
4
  import type { Node } from "./node.js";
4
5
  import type { IconElement, OnCreateLi } from "./options.js";
@@ -22,8 +23,7 @@ interface ElementsRendererParams {
22
23
  tabIndex?: number;
23
24
  }
24
25
  export default class ElementsRenderer {
25
- closedIconElement?: globalThis.Node;
26
- openedIconElement?: globalThis.Node;
26
+ icons: FolderIcons;
27
27
  private ariaLabel?;
28
28
  private ariaLabelledBy?;
29
29
  private autoEscape;
@@ -49,6 +49,9 @@ export default class ElementsRenderer {
49
49
  renderChildren(node: Node): HTMLUListElement | null;
50
50
  renderFromNode(node: Node): void;
51
51
  renderFromRoot(): void;
52
+ setDragAndDrop(dragAndDrop: boolean): void;
53
+ setMultiSelect(multiSelect: boolean): void;
54
+ setTabIndex(tabIndex: number | undefined): void;
52
55
  private attachNodeData;
53
56
  private createButtonElement;
54
57
  private createDomElements;
@@ -58,11 +61,13 @@ export default class ElementsRenderer {
58
61
  private createLiTemplate;
59
62
  private createNodeLi;
60
63
  private createNodeTemplate;
64
+ private createTemplates;
61
65
  private createTitleSpanTemplate;
62
66
  private createUlTemplate;
63
67
  private fillNode;
64
68
  private getButtonClasses;
65
69
  private mustRenderChildren;
70
+ private updateTemplates;
66
71
  }
67
72
  export {};
68
73
  //# sourceMappingURL=elementsRenderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"elementsRenderer.d.ts","sourceRoot":"","sources":["../src/elementsRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"elementsRenderer.d.ts","sourceRoot":"","sources":["../src/elementsRenderer.ts"],"names":[],"mappings":"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"}