tree-element 0.1.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 (182) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +221 -0
  3. package/lib/animation.d.ts +5 -0
  4. package/lib/animation.d.ts.map +1 -0
  5. package/lib/animation.js +39 -0
  6. package/lib/animation.js.map +1 -0
  7. package/lib/classNames.d.ts +34 -0
  8. package/lib/classNames.d.ts.map +1 -0
  9. package/lib/classNames.js +39 -0
  10. package/lib/classNames.js.map +1 -0
  11. package/lib/dataLoader.d.ts +25 -0
  12. package/lib/dataLoader.d.ts.map +1 -0
  13. package/lib/dataLoader.js +69 -0
  14. package/lib/dataLoader.js.map +1 -0
  15. package/lib/dragAndDropHandler/binarySearch.d.ts +3 -0
  16. package/lib/dragAndDropHandler/binarySearch.d.ts.map +1 -0
  17. package/lib/dragAndDropHandler/binarySearch.js +23 -0
  18. package/lib/dragAndDropHandler/binarySearch.js.map +1 -0
  19. package/lib/dragAndDropHandler/dragElement.d.ts +20 -0
  20. package/lib/dragAndDropHandler/dragElement.d.ts.map +1 -0
  21. package/lib/dragAndDropHandler/dragElement.js +39 -0
  22. package/lib/dragAndDropHandler/dragElement.js.map +1 -0
  23. package/lib/dragAndDropHandler/generateHitAreas.d.ts +13 -0
  24. package/lib/dragAndDropHandler/generateHitAreas.d.ts.map +1 -0
  25. package/lib/dragAndDropHandler/generateHitAreas.js +130 -0
  26. package/lib/dragAndDropHandler/generateHitAreas.js.map +1 -0
  27. package/lib/dragAndDropHandler/index.d.ts +76 -0
  28. package/lib/dragAndDropHandler/index.d.ts.map +1 -0
  29. package/lib/dragAndDropHandler/index.js +311 -0
  30. package/lib/dragAndDropHandler/index.js.map +1 -0
  31. package/lib/dragAndDropHandler/iterateVisibleNodes.d.ts +11 -0
  32. package/lib/dragAndDropHandler/iterateVisibleNodes.d.ts.map +1 -0
  33. package/lib/dragAndDropHandler/iterateVisibleNodes.js +54 -0
  34. package/lib/dragAndDropHandler/iterateVisibleNodes.js.map +1 -0
  35. package/lib/dragAndDropHandler/types.d.ts +11 -0
  36. package/lib/dragAndDropHandler/types.d.ts.map +1 -0
  37. package/lib/elementsRenderer.d.ts +53 -0
  38. package/lib/elementsRenderer.d.ts.map +1 -0
  39. package/lib/elementsRenderer.js +251 -0
  40. package/lib/elementsRenderer.js.map +1 -0
  41. package/lib/events.d.ts +224 -0
  42. package/lib/events.d.ts.map +1 -0
  43. package/lib/index.d.ts +367 -0
  44. package/lib/index.d.ts.map +1 -0
  45. package/lib/index.js +1098 -0
  46. package/lib/index.js.map +1 -0
  47. package/lib/keyHandler.d.ts +29 -0
  48. package/lib/keyHandler.d.ts.map +1 -0
  49. package/lib/keyHandler.js +107 -0
  50. package/lib/keyHandler.js.map +1 -0
  51. package/lib/methodTypes.d.ts +21 -0
  52. package/lib/methodTypes.d.ts.map +1 -0
  53. package/lib/mouseHandler.d.ts +60 -0
  54. package/lib/mouseHandler.d.ts.map +1 -0
  55. package/lib/mouseHandler.js +283 -0
  56. package/lib/mouseHandler.js.map +1 -0
  57. package/lib/mouseUtils.d.ts +9 -0
  58. package/lib/mouseUtils.d.ts.map +1 -0
  59. package/lib/mouseUtils.js +15 -0
  60. package/lib/mouseUtils.js.map +1 -0
  61. package/lib/node.d.ts +320 -0
  62. package/lib/node.d.ts.map +1 -0
  63. package/lib/node.js +737 -0
  64. package/lib/node.js.map +1 -0
  65. package/lib/nodeElement/borderDropHint.d.ts +9 -0
  66. package/lib/nodeElement/borderDropHint.d.ts.map +1 -0
  67. package/lib/nodeElement/borderDropHint.js +24 -0
  68. package/lib/nodeElement/borderDropHint.js.map +1 -0
  69. package/lib/nodeElement/folderElement.d.ts +22 -0
  70. package/lib/nodeElement/folderElement.d.ts.map +1 -0
  71. package/lib/nodeElement/folderElement.js +100 -0
  72. package/lib/nodeElement/folderElement.js.map +1 -0
  73. package/lib/nodeElement/ghostDropHint.d.ts +18 -0
  74. package/lib/nodeElement/ghostDropHint.d.ts.map +1 -0
  75. package/lib/nodeElement/ghostDropHint.js +67 -0
  76. package/lib/nodeElement/ghostDropHint.js.map +1 -0
  77. package/lib/nodeElement/index.d.ts +28 -0
  78. package/lib/nodeElement/index.d.ts.map +1 -0
  79. package/lib/nodeElement/index.js +66 -0
  80. package/lib/nodeElement/index.js.map +1 -0
  81. package/lib/nodeUtils.d.ts +7 -0
  82. package/lib/nodeUtils.d.ts.map +1 -0
  83. package/lib/nodeUtils.js +4 -0
  84. package/lib/nodeUtils.js.map +1 -0
  85. package/lib/options.d.ts +310 -0
  86. package/lib/options.d.ts.map +1 -0
  87. package/lib/package.json +3 -0
  88. package/lib/positionUtils.d.ts +8 -0
  89. package/lib/positionUtils.d.ts.map +1 -0
  90. package/lib/positionUtils.js +14 -0
  91. package/lib/positionUtils.js.map +1 -0
  92. package/lib/requestUrl.d.ts +9 -0
  93. package/lib/requestUrl.d.ts.map +1 -0
  94. package/lib/requestUrl.js +37 -0
  95. package/lib/requestUrl.js.map +1 -0
  96. package/lib/saveStateHandler.d.ts +46 -0
  97. package/lib/saveStateHandler.d.ts.map +1 -0
  98. package/lib/saveStateHandler.js +204 -0
  99. package/lib/saveStateHandler.js.map +1 -0
  100. package/lib/scrollHandler/containerScrollParent.d.ts +12 -0
  101. package/lib/scrollHandler/containerScrollParent.d.ts.map +1 -0
  102. package/lib/scrollHandler/containerScrollParent.js +49 -0
  103. package/lib/scrollHandler/containerScrollParent.js.map +1 -0
  104. package/lib/scrollHandler/createScrollParent.d.ts +4 -0
  105. package/lib/scrollHandler/createScrollParent.d.ts.map +1 -0
  106. package/lib/scrollHandler/createScrollParent.js +38 -0
  107. package/lib/scrollHandler/createScrollParent.js.map +1 -0
  108. package/lib/scrollHandler/documentScrollParent.d.ts +22 -0
  109. package/lib/scrollHandler/documentScrollParent.d.ts.map +1 -0
  110. package/lib/scrollHandler/documentScrollParent.js +71 -0
  111. package/lib/scrollHandler/documentScrollParent.js.map +1 -0
  112. package/lib/scrollHandler/scrollParent.d.ts +26 -0
  113. package/lib/scrollHandler/scrollParent.d.ts.map +1 -0
  114. package/lib/scrollHandler/scrollParent.js +79 -0
  115. package/lib/scrollHandler/scrollParent.js.map +1 -0
  116. package/lib/scrollHandler.d.ts +20 -0
  117. package/lib/scrollHandler.d.ts.map +1 -0
  118. package/lib/scrollHandler.js +41 -0
  119. package/lib/scrollHandler.js.map +1 -0
  120. package/lib/selectNodeHandler.d.ts +38 -0
  121. package/lib/selectNodeHandler.d.ts.map +1 -0
  122. package/lib/selectNodeHandler.js +166 -0
  123. package/lib/selectNodeHandler.js.map +1 -0
  124. package/lib/setDefaultOptions.d.ts +4 -0
  125. package/lib/setDefaultOptions.d.ts.map +1 -0
  126. package/lib/setDefaultOptions.js +86 -0
  127. package/lib/setDefaultOptions.js.map +1 -0
  128. package/lib/triggerCustomEvent.d.ts +3 -0
  129. package/lib/triggerCustomEvent.d.ts.map +1 -0
  130. package/lib/triggerCustomEvent.js +13 -0
  131. package/lib/triggerCustomEvent.js.map +1 -0
  132. package/lib/util.d.ts +3 -0
  133. package/lib/util.d.ts.map +1 -0
  134. package/lib/util.js +5 -0
  135. package/lib/util.js.map +1 -0
  136. package/lib/version.d.ts +3 -0
  137. package/lib/version.d.ts.map +1 -0
  138. package/lib/version.js +5 -0
  139. package/lib/version.js.map +1 -0
  140. package/package.json +110 -0
  141. package/src/animation.ts +48 -0
  142. package/src/classNames.ts +70 -0
  143. package/src/dataLoader.ts +92 -0
  144. package/src/dragAndDropHandler/binarySearch.ts +27 -0
  145. package/src/dragAndDropHandler/dragElement.ts +62 -0
  146. package/src/dragAndDropHandler/generateHitAreas.ts +195 -0
  147. package/src/dragAndDropHandler/index.ts +442 -0
  148. package/src/dragAndDropHandler/iterateVisibleNodes.ts +91 -0
  149. package/src/dragAndDropHandler/types.ts +12 -0
  150. package/src/elementsRenderer.ts +367 -0
  151. package/src/events.ts +237 -0
  152. package/src/header.txt +16 -0
  153. package/src/index.ts +1290 -0
  154. package/src/keyHandler.ts +139 -0
  155. package/src/methodTypes.ts +44 -0
  156. package/src/mouseHandler.ts +391 -0
  157. package/src/mouseUtils.ts +23 -0
  158. package/src/node.ts +831 -0
  159. package/src/nodeElement/borderDropHint.ts +37 -0
  160. package/src/nodeElement/folderElement.ts +140 -0
  161. package/src/nodeElement/ghostDropHint.ts +84 -0
  162. package/src/nodeElement/index.ts +103 -0
  163. package/src/nodeUtils.ts +12 -0
  164. package/src/options.ts +325 -0
  165. package/src/positionUtils.ts +18 -0
  166. package/src/requestUrl.ts +41 -0
  167. package/src/saveStateHandler.ts +279 -0
  168. package/src/scrollHandler/containerScrollParent.ts +71 -0
  169. package/src/scrollHandler/createScrollParent.ts +51 -0
  170. package/src/scrollHandler/documentScrollParent.ts +104 -0
  171. package/src/scrollHandler/scrollParent.ts +117 -0
  172. package/src/scrollHandler.ts +55 -0
  173. package/src/selectNodeHandler.ts +192 -0
  174. package/src/setDefaultOptions.ts +79 -0
  175. package/src/triggerCustomEvent.ts +14 -0
  176. package/src/util.ts +5 -0
  177. package/src/version.ts +4 -0
  178. package/tree_element.css +195 -0
  179. package/tree_element.debug.js +4153 -0
  180. package/tree_element.debug.js.map +1 -0
  181. package/tree_element.js +21 -0
  182. package/tree_element.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mouseHandler.js","sources":["../src/mouseHandler.ts"],"sourcesContent":["import type { ClassNames } from \"./classNames\";\nimport type { TriggerEvent } from \"./methodTypes\";\nimport type { PositionInfo } from \"./mouseUtils\";\nimport type { Node } from \"./node\";\n\nimport {\n getPositionInfoFromMouseEvent,\n getPositionInfoFromTouch,\n} from \"./mouseUtils\";\n\nexport type GetMouseDelay = () => number;\nexport type GetNode = (element: HTMLElement) => Node | null;\nexport type MouseCapture = (positionInfo: PositionInfo) => boolean | null;\nexport type MouseStart = (positionInfo: PositionInfo) => boolean;\n\ninterface ClickTarget {\n node: Node;\n type: \"button\" | \"label\";\n}\n\ninterface MouseHandlerParams {\n classNames: ClassNames;\n element: HTMLElement;\n getMouseDelay: () => number;\n getNode: GetNode;\n onClickButton: (node: Node) => void;\n onClickTitle: (node: Node) => void;\n onMouseCapture: MouseCapture;\n onMouseDrag: (positionInfo: PositionInfo) => void;\n onMouseStart: MouseStart;\n onMouseStop: (positionInfo: PositionInfo) => void;\n triggerEvent: TriggerEvent;\n useContextMenu: boolean;\n}\n\nclass MouseHandler {\n private classNames: ClassNames;\n private element: HTMLElement;\n private getMouseDelay: GetMouseDelay;\n private getNode: GetNode;\n\n private isMouseDelayMet: boolean;\n\n private isMouseStarted: boolean;\n\n private mouseDelayTimer: null | number;\n\n private mouseDownInfo: null | PositionInfo;\n private onClickButton: (node: Node) => void;\n private onClickTitle: (node: Node) => void;\n\n private onMouseCapture: MouseCapture;\n\n private onMouseDrag: (positionInfo: PositionInfo) => void;\n\n private onMouseStart: MouseStart;\n\n private onMouseStop: (positionInfo: PositionInfo) => void;\n\n private triggerEvent: TriggerEvent;\n private useContextMenu: boolean;\n constructor({\n classNames,\n element,\n getMouseDelay,\n getNode,\n onClickButton,\n onClickTitle,\n onMouseCapture,\n onMouseDrag,\n onMouseStart,\n onMouseStop,\n triggerEvent,\n useContextMenu,\n }: MouseHandlerParams) {\n this.classNames = classNames;\n this.element = element;\n this.getMouseDelay = getMouseDelay;\n this.getNode = getNode;\n this.onClickButton = onClickButton;\n this.onClickTitle = onClickTitle;\n this.onMouseCapture = onMouseCapture;\n this.onMouseDrag = onMouseDrag;\n this.onMouseStart = onMouseStart;\n this.onMouseStop = onMouseStop;\n this.triggerEvent = triggerEvent;\n this.useContextMenu = useContextMenu;\n\n element.addEventListener(\"click\", this.handleClick);\n element.addEventListener(\"dblclick\", this.handleDblclick);\n element.addEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n element.addEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n\n if (useContextMenu) {\n element.addEventListener(\"contextmenu\", this.handleContextmenu);\n }\n\n this.isMouseStarted = false;\n this.mouseDelayTimer = null;\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n }\n public deinit(): void {\n this.element.removeEventListener(\"click\", this.handleClick);\n this.element.removeEventListener(\"dblclick\", this.handleDblclick);\n\n if (this.useContextMenu) {\n this.element.removeEventListener(\n \"contextmenu\",\n this.handleContextmenu,\n );\n }\n\n this.element.removeEventListener(\"mousedown\", this.mouseDown);\n this.element.removeEventListener(\"touchstart\", this.touchStart);\n this.removeMouseMoveEventListeners();\n }\n private getClickTarget(element: HTMLElement): ClickTarget | null {\n const button = element.closest<HTMLElement>(\n `.${this.classNames.toggler}`,\n );\n\n if (button) {\n const node = this.getNode(button);\n\n if (node) {\n return {\n node,\n type: \"button\",\n };\n }\n } else {\n const treeElement = element.closest<HTMLElement>(\n `.${this.classNames.element}`,\n );\n\n if (treeElement) {\n const node = this.getNode(treeElement);\n if (node) {\n return {\n node,\n type: \"label\",\n };\n }\n }\n }\n\n return null;\n }\n private handleClick = (e: MouseEvent): void => {\n if (!e.target) {\n return;\n }\n\n const clickTarget = this.getClickTarget(e.target as HTMLElement);\n\n if (!clickTarget) {\n return;\n }\n\n switch (clickTarget.type) {\n case \"button\":\n this.onClickButton(clickTarget.node);\n\n e.preventDefault();\n e.stopPropagation();\n break;\n\n case \"label\": {\n if (this.triggerEvent(\"tree.click\", {\n node: clickTarget.node,\n originalEvent: e,\n })) {\n this.onClickTitle(clickTarget.node);\n }\n break;\n }\n }\n };\n\n private handleContextmenu = (e: MouseEvent) => {\n if (!e.target) {\n return;\n }\n\n const div = (e.target as HTMLElement).closest<HTMLElement>(\n `ul.${this.classNames.tree} .${this.classNames.element}`,\n );\n\n if (div) {\n const node = this.getNode(div);\n if (node) {\n e.preventDefault();\n e.stopPropagation();\n\n this.triggerEvent(\"tree.contextmenu\", {\n node,\n originalEvent: e,\n });\n return false;\n }\n }\n\n return null;\n };\n\n private handleDblclick = (e: MouseEvent): void => {\n if (!e.target) {\n return;\n }\n\n const clickTarget = this.getClickTarget(e.target as HTMLElement);\n\n if (clickTarget?.type === \"label\") {\n this.triggerEvent(\"tree.dblclick\", {\n node: clickTarget.node,\n originalEvent: e,\n });\n }\n };\n\n private handleMouseDown(positionInfo: PositionInfo): boolean {\n // We may have missed mouseup (out of window)\n if (this.isMouseStarted) {\n this.handleMouseUp(positionInfo);\n }\n\n this.mouseDownInfo = positionInfo;\n\n if (!this.onMouseCapture(positionInfo)) {\n return false;\n }\n\n this.handleStartMouse();\n\n return true;\n }\n\n private handleMouseMove(\n e: MouseEvent | TouchEvent,\n positionInfo: PositionInfo,\n ): void {\n if (this.isMouseStarted) {\n this.onMouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n return;\n }\n\n if (!this.isMouseDelayMet) {\n return;\n }\n\n if (this.mouseDownInfo) {\n this.isMouseStarted = this.onMouseStart(this.mouseDownInfo);\n }\n\n if (this.isMouseStarted) {\n this.onMouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n } else {\n this.handleMouseUp(positionInfo);\n }\n }\n private handleMouseUp(positionInfo: PositionInfo): void {\n this.removeMouseMoveEventListeners();\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n\n if (this.isMouseStarted) {\n this.isMouseStarted = false;\n this.onMouseStop(positionInfo);\n }\n }\n\n private handleStartMouse(): void {\n document.addEventListener(\"mousemove\", this.mouseMove, {\n passive: false,\n });\n document.addEventListener(\"touchmove\", this.touchMove, {\n passive: false,\n });\n document.addEventListener(\"mouseup\", this.mouseUp, { passive: false });\n document.addEventListener(\"touchend\", this.touchEnd, {\n passive: false,\n });\n\n const mouseDelay = this.getMouseDelay();\n\n if (mouseDelay) {\n this.startMouseDelayTimer(mouseDelay);\n } else {\n this.isMouseDelayMet = true;\n }\n }\n\n private mouseDown = (e: MouseEvent): void => {\n // Left mouse button?\n if (e.button !== 0) {\n return;\n }\n\n const result = this.handleMouseDown(getPositionInfoFromMouseEvent(e));\n\n if (result && e.cancelable) {\n e.preventDefault();\n }\n };\n\n private mouseMove = (e: MouseEvent): void => {\n this.handleMouseMove(e, getPositionInfoFromMouseEvent(e));\n };\n\n private mouseUp = (e: MouseEvent): void => {\n this.handleMouseUp(getPositionInfoFromMouseEvent(e));\n };\n\n private removeMouseMoveEventListeners() {\n document.removeEventListener(\"mousemove\", this.mouseMove);\n document.removeEventListener(\"touchmove\", this.touchMove);\n document.removeEventListener(\"mouseup\", this.mouseUp);\n document.removeEventListener(\"touchend\", this.touchEnd);\n }\n\n private startMouseDelayTimer(mouseDelay: number): void {\n if (this.mouseDelayTimer) {\n clearTimeout(this.mouseDelayTimer);\n }\n\n this.mouseDelayTimer = window.setTimeout(() => {\n if (this.mouseDownInfo) {\n this.isMouseDelayMet = true;\n }\n }, mouseDelay);\n\n this.isMouseDelayMet = false;\n }\n\n private touchEnd = (e: TouchEvent): void => {\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.touches[0];\n\n if (!touch) {\n return;\n }\n\n this.handleMouseUp(getPositionInfoFromTouch(touch, e));\n };\n\n private touchMove = (e: TouchEvent): void => {\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.touches[0];\n\n if (!touch) {\n return;\n }\n\n this.handleMouseMove(e, getPositionInfoFromTouch(touch, e));\n };\n\n private touchStart = (e: TouchEvent): void => {\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.touches[0];\n\n if (!touch) {\n return;\n }\n\n this.handleMouseDown(getPositionInfoFromTouch(touch, e));\n };\n}\n\nexport default MouseHandler;\n"],"names":["classNames","element","getMouseDelay","getNode","isMouseDelayMet","isMouseStarted","mouseDelayTimer","mouseDownInfo","onClickButton","onClickTitle","onMouseCapture","onMouseDrag","onMouseStart","onMouseStop","triggerEvent","useContextMenu","handleClick","handleDblclick","mouseDown","touchStart","handleContextmenu","removeMouseMoveEventListeners","getClickTarget","handleMouseDown","handleMouseUp","handleStartMouse","handleMouseMove","mouseMove","touchMove","mouseUp","touchEnd","startMouseDelayTimer"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface PositionInfo {
2
+ originalEvent: Event;
3
+ pageX: number;
4
+ pageY: number;
5
+ target: HTMLElement;
6
+ }
7
+ export declare const getPositionInfoFromMouseEvent: (e: MouseEvent) => PositionInfo;
8
+ export declare const getPositionInfoFromTouch: (touch: Touch, e: TouchEvent) => PositionInfo;
9
+ //# sourceMappingURL=mouseUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mouseUtils.d.ts","sourceRoot":"","sources":["../src/mouseUtils.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IACzB,aAAa,EAAE,KAAK,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;CACvB;AAED,eAAO,MAAM,6BAA6B,GAAI,GAAG,UAAU,KAAG,YAK5D,CAAC;AAEH,eAAO,MAAM,wBAAwB,GACjC,OAAO,KAAK,EACZ,GAAG,UAAU,KACd,YAKD,CAAC"}
@@ -0,0 +1,15 @@
1
+ const getPositionInfoFromMouseEvent = e => ({
2
+ originalEvent: e,
3
+ pageX: e.pageX,
4
+ pageY: e.pageY,
5
+ target: e.target
6
+ });
7
+ const getPositionInfoFromTouch = (touch, e) => ({
8
+ originalEvent: e,
9
+ pageX: touch.pageX,
10
+ pageY: touch.pageY,
11
+ target: touch.target
12
+ });
13
+
14
+ export { getPositionInfoFromMouseEvent, getPositionInfoFromTouch };
15
+ //# sourceMappingURL=mouseUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mouseUtils.js","sources":["../src/mouseUtils.ts"],"sourcesContent":["export interface PositionInfo {\n originalEvent: Event;\n pageX: number;\n pageY: number;\n target: HTMLElement;\n}\n\nexport const getPositionInfoFromMouseEvent = (e: MouseEvent): PositionInfo => ({\n originalEvent: e,\n pageX: e.pageX,\n pageY: e.pageY,\n target: e.target as HTMLElement,\n});\n\nexport const getPositionInfoFromTouch = (\n touch: Touch,\n e: TouchEvent,\n): PositionInfo => ({\n originalEvent: e,\n pageX: touch.pageX,\n pageY: touch.pageY,\n target: touch.target as HTMLElement,\n});\n"],"names":[],"mappings":"AAOO,MAAM,6BAA6B,GAAI,CAAa,KAAoB;AAC3E,EAAA,aAAa,EAAE,CAAC;EAChB,KAAK,EAAE,CAAC,CAAC,KAAK;EACd,KAAK,EAAE,CAAC,CAAC,KAAK;EACd,MAAM,EAAE,CAAC,CAAC;AACd,CAAC;MAEY,wBAAwB,GAAG,CACpC,KAAY,EACZ,CAAa,MACG;AAChB,EAAA,aAAa,EAAE,CAAC;EAChB,KAAK,EAAE,KAAK,CAAC,KAAK;EAClB,KAAK,EAAE,KAAK,CAAC,KAAK;EAClB,MAAM,EAAE,KAAK,CAAC;AAClB,CAAC;;"}
package/lib/node.d.ts ADDED
@@ -0,0 +1,320 @@
1
+ export type NodeData = NodeRecord | string;
2
+ export type NodeId = number | string;
3
+ export interface NodeRecord {
4
+ [key: string]: unknown;
5
+ children?: NodeData[];
6
+ id?: NodeId;
7
+ }
8
+ export type Position = "after" | "before" | "inside";
9
+ type IterateCallback = (node: Node, level: number) => boolean;
10
+ /**
11
+ * @groupDescription Properties
12
+ * Any other key in the node data is copied onto the node, so
13
+ * `{ name: "node1", color: "green" }` gives you `node.color`.
14
+ *
15
+ * @groupDescription Searching
16
+ * These work on any node, and search that node's subtree. Called on the root
17
+ * node, they search the whole tree — which is what the tree's own methods of
18
+ * the same name do.
19
+ *
20
+ * @groupDescription Changing the tree
21
+ * ::: warning
22
+ * These methods change the data without re-rendering. The tree's
23
+ * [methods](/reference/methods) — `appendNode`, `removeNode`, `moveNode` and
24
+ * friends — do the same and refresh the display, so prefer those. If you do
25
+ * use these, call `tree.refresh()` afterwards.
26
+ * :::
27
+ */
28
+ export declare class Node {
29
+ /** @hidden */
30
+ [key: string]: unknown;
31
+ /** The child nodes. */
32
+ children: Node[];
33
+ /** The `li` element, once the node is rendered. */
34
+ element?: HTMLElement;
35
+ /** The id from the node data. */
36
+ id?: NodeId;
37
+ /** @hidden */
38
+ idMapping?: Map<NodeId, Node>;
39
+ /** Whether the node's children are being fetched. */
40
+ is_loading?: boolean;
41
+ /** Whether the folder is open. */
42
+ is_open?: boolean;
43
+ /** Whether the node data had an empty `children` array. */
44
+ isEmptyFolder: boolean;
45
+ /** Whether the children still have to be fetched. */
46
+ load_on_demand: boolean;
47
+ /** The label. Also settable from the `label` key in node data. */
48
+ name: string;
49
+ /** @hidden */
50
+ nodeClass?: typeof Node;
51
+ /** The parent; `null` for the root node. */
52
+ parent: Node | null;
53
+ /** The root node. */
54
+ tree?: Node;
55
+ /** @hidden */
56
+ constructor(nodeData?: NodeData | null, isRoot?: boolean, nodeClass?: typeof Node);
57
+ /**
58
+ * Adds a sibling after this node.
59
+ *
60
+ * @returns The new node, or `null` when the node has no parent.
61
+ * @group Changing the tree
62
+ */
63
+ addAfter(nodeInfo: NodeData): Node | null;
64
+ /**
65
+ * Adds a sibling before this node.
66
+ *
67
+ * @returns The new node, or `null` when the node has no parent.
68
+ * @group Changing the tree
69
+ */
70
+ addBefore(nodeInfo: NodeData): Node | null;
71
+ /**
72
+ * Adds an existing `Node` object as the last child.
73
+ *
74
+ * @group Changing the tree
75
+ */
76
+ addChild(node: Node): void;
77
+ /**
78
+ * Adds an existing `Node` object as a child, at this position in
79
+ * `children`. The index starts at `0`.
80
+ *
81
+ * @group Changing the tree
82
+ */
83
+ addChildAtPosition(node: Node, index: number): void;
84
+ /** @hidden */
85
+ addNodeToIndex(node: Node): void;
86
+ /**
87
+ * Inserts a new parent between this node and its current parent.
88
+ *
89
+ * @returns The new node, or `null` when the node has no parent.
90
+ * @group Changing the tree
91
+ */
92
+ addParent(nodeInfo: NodeData): Node | null;
93
+ /**
94
+ * Adds a child at the end.
95
+ *
96
+ * @returns The new node.
97
+ * @group Changing the tree
98
+ */
99
+ append(nodeInfo: NodeData): Node;
100
+ /**
101
+ * Returns all nodes in the subtree for which the callback returns
102
+ * `true`.
103
+ *
104
+ * @example
105
+ * ```js
106
+ * const folders = tree.getTree().filter((node) => node.isFolder());
107
+ * ```
108
+ *
109
+ * @group Searching
110
+ */
111
+ filter(f: (node: Node) => boolean): Node[];
112
+ /**
113
+ * Returns the position of a child in `children`, or `-1`.
114
+ *
115
+ * @group Inspecting a node
116
+ */
117
+ getChildIndex(node: Node): number;
118
+ /**
119
+ * Returns the subtree as plain data, ready for `JSON.stringify`.
120
+ * Internal properties (`parent`, `children`, `element`, `tree`,
121
+ * `idMapping`, `nodeClass`, `load_on_demand`, `isEmptyFolder`) are left
122
+ * out; your own properties are kept.
123
+ *
124
+ * ```js
125
+ * tree.getTree().getData();
126
+ * // [{ name: "node1", id: 1, children: [{ name: "child1", id: 2 }] }]
127
+ * ```
128
+ *
129
+ * @param includeParent - Make the result the node itself rather than its
130
+ * children. Default `false`.
131
+ * @group Reading data back
132
+ */
133
+ getData(includeParent?: boolean): NodeRecord[];
134
+ /**
135
+ * Returns the last child, or `null`. When that child is an open folder,
136
+ * its own last child, and so on.
137
+ *
138
+ * @group Moving around the tree
139
+ */
140
+ getLastChild(): Node | null;
141
+ /**
142
+ * Returns the depth of the node, counting the top level as `1`.
143
+ *
144
+ * @group Inspecting a node
145
+ */
146
+ getLevel(): number;
147
+ /**
148
+ * Returns the next node in the tree, regardless of whether it is
149
+ * visible. `getNextNode(false)` skips the node's own children.
150
+ *
151
+ * @group Moving around the tree
152
+ */
153
+ getNextNode(includeChildren?: boolean): Node | null;
154
+ /**
155
+ * Returns the next sibling, or `null`.
156
+ *
157
+ * @group Moving around the tree
158
+ */
159
+ getNextSibling(): Node | null;
160
+ /**
161
+ * Like `getNextNode`, but skipping nodes inside closed folders — this is
162
+ * what the arrow keys use.
163
+ *
164
+ * @group Moving around the tree
165
+ */
166
+ getNextVisibleNode(): Node | null;
167
+ /**
168
+ * Returns the first node for which the callback returns `true`.
169
+ *
170
+ * @group Searching
171
+ */
172
+ getNodeByCallback(callback: (node: Node) => boolean): Node | null;
173
+ /**
174
+ * Returns the node with this id. Only available on the root node, which
175
+ * keeps the id index.
176
+ *
177
+ * @group Searching
178
+ */
179
+ getNodeById(nodeId: NodeId): Node | null;
180
+ /**
181
+ * Returns the first node with this name.
182
+ *
183
+ * @group Searching
184
+ */
185
+ getNodeByName(name: string): Node | null;
186
+ /**
187
+ * Like `getNodeByName`, but throws when there is no such node.
188
+ *
189
+ * @group Searching
190
+ */
191
+ getNodeByNameMustExist(name: string): Node;
192
+ /**
193
+ * Returns all nodes with this property value.
194
+ *
195
+ * @group Searching
196
+ */
197
+ getNodesByProperty(key: string, value: unknown): Node[];
198
+ /**
199
+ * Returns the parent: `null` for a top-level node — the root node is not
200
+ * returned.
201
+ *
202
+ * @group Moving around the tree
203
+ */
204
+ getParent(): Node | null;
205
+ /**
206
+ * Returns the previous node in the tree, regardless of whether it is
207
+ * visible.
208
+ *
209
+ * @group Moving around the tree
210
+ */
211
+ getPreviousNode(): Node | null;
212
+ /**
213
+ * Returns the previous sibling, or `null`.
214
+ *
215
+ * @group Moving around the tree
216
+ */
217
+ getPreviousSibling(): Node | null;
218
+ /**
219
+ * Like `getPreviousNode`, but skipping nodes inside closed folders —
220
+ * this is what the arrow keys use.
221
+ *
222
+ * @group Moving around the tree
223
+ */
224
+ getPreviousVisibleNode(): Node | null;
225
+ /**
226
+ * Whether the node has children.
227
+ *
228
+ * @group Inspecting a node
229
+ */
230
+ hasChildren(): boolean;
231
+ /**
232
+ * Init Node from data without making it the root of the tree.
233
+ *
234
+ * @hidden
235
+ */
236
+ initFromData(data: NodeData): void;
237
+ /**
238
+ * `true` when the node has children, or is marked `load_on_demand`.
239
+ *
240
+ * @group Inspecting a node
241
+ */
242
+ isFolder(): boolean;
243
+ /**
244
+ * Whether this node is an ancestor of the other node.
245
+ *
246
+ * @group Inspecting a node
247
+ */
248
+ isParentOf(node: Node): boolean;
249
+ /**
250
+ * Walks the subtree, calling the callback with `(node, level)`. Return
251
+ * `false` from the callback to stop descending into that node:
252
+ *
253
+ * ```js
254
+ * tree.getTree().iterate((node, level) => {
255
+ * console.log(" ".repeat(level) + node.name);
256
+ * return level <= 2; // don't go deeper than level 2
257
+ * });
258
+ * ```
259
+ *
260
+ * @group Searching
261
+ */
262
+ iterate(callback: IterateCallback): void;
263
+ /**
264
+ * Replaces the children with new node data.
265
+ *
266
+ * @group Changing the tree
267
+ */
268
+ loadFromData(data: NodeData[]): this;
269
+ /**
270
+ * Moves a node relative to another node. Called on the root node.
271
+ *
272
+ * @param position - `"before"`, `"after"` or `"inside"`.
273
+ * @returns `false` when the move is impossible, for instance moving a
274
+ * node into its own subtree.
275
+ * @group Changing the tree
276
+ */
277
+ moveNode(movedNode: Node, targetNode: Node, position: Position): boolean;
278
+ /**
279
+ * Adds a child at the start.
280
+ *
281
+ * @returns The new node.
282
+ * @group Changing the tree
283
+ */
284
+ prepend(nodeInfo: NodeData): Node;
285
+ /**
286
+ * Removes this node from its parent.
287
+ *
288
+ * @group Changing the tree
289
+ */
290
+ remove(): void;
291
+ /**
292
+ * Removes a child and its children.
293
+ *
294
+ * @group Changing the tree
295
+ */
296
+ removeChild(node: Node): void;
297
+ /**
298
+ * Removes all children.
299
+ *
300
+ * @group Changing the tree
301
+ */
302
+ removeChildren(): void;
303
+ /** @hidden */
304
+ removeNodeFromIndex(node: Node): void;
305
+ /**
306
+ * Updates the node's properties from node data. `children` and `parent`
307
+ * are ignored. A string sets the name. Existing node values are not
308
+ * removed.
309
+ *
310
+ * @group Changing the tree
311
+ */
312
+ setData(o: NodeData | null): void;
313
+ private createNode;
314
+ private doRemoveChild;
315
+ private getNodeClass;
316
+ private loadChildrenFromData;
317
+ private setParent;
318
+ }
319
+ export {};
320
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}