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.
- package/LICENSE +201 -0
- package/README.md +221 -0
- package/lib/animation.d.ts +5 -0
- package/lib/animation.d.ts.map +1 -0
- package/lib/animation.js +39 -0
- package/lib/animation.js.map +1 -0
- package/lib/classNames.d.ts +34 -0
- package/lib/classNames.d.ts.map +1 -0
- package/lib/classNames.js +39 -0
- package/lib/classNames.js.map +1 -0
- package/lib/dataLoader.d.ts +25 -0
- package/lib/dataLoader.d.ts.map +1 -0
- package/lib/dataLoader.js +69 -0
- package/lib/dataLoader.js.map +1 -0
- package/lib/dragAndDropHandler/binarySearch.d.ts +3 -0
- package/lib/dragAndDropHandler/binarySearch.d.ts.map +1 -0
- package/lib/dragAndDropHandler/binarySearch.js +23 -0
- package/lib/dragAndDropHandler/binarySearch.js.map +1 -0
- package/lib/dragAndDropHandler/dragElement.d.ts +20 -0
- package/lib/dragAndDropHandler/dragElement.d.ts.map +1 -0
- package/lib/dragAndDropHandler/dragElement.js +39 -0
- package/lib/dragAndDropHandler/dragElement.js.map +1 -0
- package/lib/dragAndDropHandler/generateHitAreas.d.ts +13 -0
- package/lib/dragAndDropHandler/generateHitAreas.d.ts.map +1 -0
- package/lib/dragAndDropHandler/generateHitAreas.js +130 -0
- package/lib/dragAndDropHandler/generateHitAreas.js.map +1 -0
- package/lib/dragAndDropHandler/index.d.ts +76 -0
- package/lib/dragAndDropHandler/index.d.ts.map +1 -0
- package/lib/dragAndDropHandler/index.js +311 -0
- package/lib/dragAndDropHandler/index.js.map +1 -0
- package/lib/dragAndDropHandler/iterateVisibleNodes.d.ts +11 -0
- package/lib/dragAndDropHandler/iterateVisibleNodes.d.ts.map +1 -0
- package/lib/dragAndDropHandler/iterateVisibleNodes.js +54 -0
- package/lib/dragAndDropHandler/iterateVisibleNodes.js.map +1 -0
- package/lib/dragAndDropHandler/types.d.ts +11 -0
- package/lib/dragAndDropHandler/types.d.ts.map +1 -0
- package/lib/elementsRenderer.d.ts +53 -0
- package/lib/elementsRenderer.d.ts.map +1 -0
- package/lib/elementsRenderer.js +251 -0
- package/lib/elementsRenderer.js.map +1 -0
- package/lib/events.d.ts +224 -0
- package/lib/events.d.ts.map +1 -0
- package/lib/index.d.ts +367 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +1098 -0
- package/lib/index.js.map +1 -0
- package/lib/keyHandler.d.ts +29 -0
- package/lib/keyHandler.d.ts.map +1 -0
- package/lib/keyHandler.js +107 -0
- package/lib/keyHandler.js.map +1 -0
- package/lib/methodTypes.d.ts +21 -0
- package/lib/methodTypes.d.ts.map +1 -0
- package/lib/mouseHandler.d.ts +60 -0
- package/lib/mouseHandler.d.ts.map +1 -0
- package/lib/mouseHandler.js +283 -0
- package/lib/mouseHandler.js.map +1 -0
- package/lib/mouseUtils.d.ts +9 -0
- package/lib/mouseUtils.d.ts.map +1 -0
- package/lib/mouseUtils.js +15 -0
- package/lib/mouseUtils.js.map +1 -0
- package/lib/node.d.ts +320 -0
- package/lib/node.d.ts.map +1 -0
- package/lib/node.js +737 -0
- package/lib/node.js.map +1 -0
- package/lib/nodeElement/borderDropHint.d.ts +9 -0
- package/lib/nodeElement/borderDropHint.d.ts.map +1 -0
- package/lib/nodeElement/borderDropHint.js +24 -0
- package/lib/nodeElement/borderDropHint.js.map +1 -0
- package/lib/nodeElement/folderElement.d.ts +22 -0
- package/lib/nodeElement/folderElement.d.ts.map +1 -0
- package/lib/nodeElement/folderElement.js +100 -0
- package/lib/nodeElement/folderElement.js.map +1 -0
- package/lib/nodeElement/ghostDropHint.d.ts +18 -0
- package/lib/nodeElement/ghostDropHint.d.ts.map +1 -0
- package/lib/nodeElement/ghostDropHint.js +67 -0
- package/lib/nodeElement/ghostDropHint.js.map +1 -0
- package/lib/nodeElement/index.d.ts +28 -0
- package/lib/nodeElement/index.d.ts.map +1 -0
- package/lib/nodeElement/index.js +66 -0
- package/lib/nodeElement/index.js.map +1 -0
- package/lib/nodeUtils.d.ts +7 -0
- package/lib/nodeUtils.d.ts.map +1 -0
- package/lib/nodeUtils.js +4 -0
- package/lib/nodeUtils.js.map +1 -0
- package/lib/options.d.ts +310 -0
- package/lib/options.d.ts.map +1 -0
- package/lib/package.json +3 -0
- package/lib/positionUtils.d.ts +8 -0
- package/lib/positionUtils.d.ts.map +1 -0
- package/lib/positionUtils.js +14 -0
- package/lib/positionUtils.js.map +1 -0
- package/lib/requestUrl.d.ts +9 -0
- package/lib/requestUrl.d.ts.map +1 -0
- package/lib/requestUrl.js +37 -0
- package/lib/requestUrl.js.map +1 -0
- package/lib/saveStateHandler.d.ts +46 -0
- package/lib/saveStateHandler.d.ts.map +1 -0
- package/lib/saveStateHandler.js +204 -0
- package/lib/saveStateHandler.js.map +1 -0
- package/lib/scrollHandler/containerScrollParent.d.ts +12 -0
- package/lib/scrollHandler/containerScrollParent.d.ts.map +1 -0
- package/lib/scrollHandler/containerScrollParent.js +49 -0
- package/lib/scrollHandler/containerScrollParent.js.map +1 -0
- package/lib/scrollHandler/createScrollParent.d.ts +4 -0
- package/lib/scrollHandler/createScrollParent.d.ts.map +1 -0
- package/lib/scrollHandler/createScrollParent.js +38 -0
- package/lib/scrollHandler/createScrollParent.js.map +1 -0
- package/lib/scrollHandler/documentScrollParent.d.ts +22 -0
- package/lib/scrollHandler/documentScrollParent.d.ts.map +1 -0
- package/lib/scrollHandler/documentScrollParent.js +71 -0
- package/lib/scrollHandler/documentScrollParent.js.map +1 -0
- package/lib/scrollHandler/scrollParent.d.ts +26 -0
- package/lib/scrollHandler/scrollParent.d.ts.map +1 -0
- package/lib/scrollHandler/scrollParent.js +79 -0
- package/lib/scrollHandler/scrollParent.js.map +1 -0
- package/lib/scrollHandler.d.ts +20 -0
- package/lib/scrollHandler.d.ts.map +1 -0
- package/lib/scrollHandler.js +41 -0
- package/lib/scrollHandler.js.map +1 -0
- package/lib/selectNodeHandler.d.ts +38 -0
- package/lib/selectNodeHandler.d.ts.map +1 -0
- package/lib/selectNodeHandler.js +166 -0
- package/lib/selectNodeHandler.js.map +1 -0
- package/lib/setDefaultOptions.d.ts +4 -0
- package/lib/setDefaultOptions.d.ts.map +1 -0
- package/lib/setDefaultOptions.js +86 -0
- package/lib/setDefaultOptions.js.map +1 -0
- package/lib/triggerCustomEvent.d.ts +3 -0
- package/lib/triggerCustomEvent.d.ts.map +1 -0
- package/lib/triggerCustomEvent.js +13 -0
- package/lib/triggerCustomEvent.js.map +1 -0
- package/lib/util.d.ts +3 -0
- package/lib/util.d.ts.map +1 -0
- package/lib/util.js +5 -0
- package/lib/util.js.map +1 -0
- package/lib/version.d.ts +3 -0
- package/lib/version.d.ts.map +1 -0
- package/lib/version.js +5 -0
- package/lib/version.js.map +1 -0
- package/package.json +110 -0
- package/src/animation.ts +48 -0
- package/src/classNames.ts +70 -0
- package/src/dataLoader.ts +92 -0
- package/src/dragAndDropHandler/binarySearch.ts +27 -0
- package/src/dragAndDropHandler/dragElement.ts +62 -0
- package/src/dragAndDropHandler/generateHitAreas.ts +195 -0
- package/src/dragAndDropHandler/index.ts +442 -0
- package/src/dragAndDropHandler/iterateVisibleNodes.ts +91 -0
- package/src/dragAndDropHandler/types.ts +12 -0
- package/src/elementsRenderer.ts +367 -0
- package/src/events.ts +237 -0
- package/src/header.txt +16 -0
- package/src/index.ts +1290 -0
- package/src/keyHandler.ts +139 -0
- package/src/methodTypes.ts +44 -0
- package/src/mouseHandler.ts +391 -0
- package/src/mouseUtils.ts +23 -0
- package/src/node.ts +831 -0
- package/src/nodeElement/borderDropHint.ts +37 -0
- package/src/nodeElement/folderElement.ts +140 -0
- package/src/nodeElement/ghostDropHint.ts +84 -0
- package/src/nodeElement/index.ts +103 -0
- package/src/nodeUtils.ts +12 -0
- package/src/options.ts +325 -0
- package/src/positionUtils.ts +18 -0
- package/src/requestUrl.ts +41 -0
- package/src/saveStateHandler.ts +279 -0
- package/src/scrollHandler/containerScrollParent.ts +71 -0
- package/src/scrollHandler/createScrollParent.ts +51 -0
- package/src/scrollHandler/documentScrollParent.ts +104 -0
- package/src/scrollHandler/scrollParent.ts +117 -0
- package/src/scrollHandler.ts +55 -0
- package/src/selectNodeHandler.ts +192 -0
- package/src/setDefaultOptions.ts +79 -0
- package/src/triggerCustomEvent.ts +14 -0
- package/src/util.ts +5 -0
- package/src/version.ts +4 -0
- package/tree_element.css +195 -0
- package/tree_element.debug.js +4153 -0
- package/tree_element.debug.js.map +1 -0
- package/tree_element.js +21 -0
- 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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"}
|