jqtree 1.7.2 → 1.7.3
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/bower.json +1 -1
- package/docs/_config.yml +1 -1
- package/docs/_entries/10_changelog.md +5 -0
- package/docs/tree.jquery.js +2 -2
- package/lib/version.js +1 -1
- package/package.json +4 -3
- package/src/version.ts +1 -1
- package/tree.jquery.debug.js +2 -2
- package/tree.jquery.debug.js.map +1 -1
- package/tree.jquery.js +2 -2
- package/tree.jquery.js.map +1 -1
package/tree.jquery.debug.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.jquery.debug.js","sources":["src/version.ts","src/node.ts","src/dragAndDropHandler.ts","src/util.ts","src/elementsRenderer.ts","src/dataLoader.ts","src/keyHandler.ts","src/simple.widget.ts","src/mouse.widget.ts","src/saveStateHandler.ts","src/scrollHandler.ts","src/selectNodeHandler.ts","src/nodeElement.ts","src/tree.jquery.ts"],"sourcesContent":["const version = \"1.7.2\";\n\nexport default version;\n","interface NodeRecordWithChildren extends NodeRecord {\n children: NodeData[];\n}\n\nexport enum Position {\n Before = 1,\n After,\n Inside,\n None,\n}\n\nconst positionNames: Record<string, Position> = {\n before: Position.Before,\n after: Position.After,\n inside: Position.Inside,\n none: Position.None,\n};\n\ntype IterateCallback = (node: Node, level: number) => boolean;\n\nexport const getPositionName = (position: Position): string => {\n for (const name in positionNames) {\n if (Object.prototype.hasOwnProperty.call(positionNames, name)) {\n if (positionNames[name] === position) {\n return name;\n }\n }\n }\n\n return \"\";\n};\n\nexport const getPosition = (name: string): Position | undefined =>\n positionNames[name];\n\nconst isNodeRecordWithChildren = (\n data: NodeData\n): data is NodeRecordWithChildren =>\n typeof data === \"object\" &&\n \"children\" in data &&\n data[\"children\"] instanceof Array;\n\nexport class Node implements INode {\n public id?: NodeId;\n public name: string;\n public children: Node[];\n public parent: Node | null;\n public idMapping: Map<NodeId, Node>;\n public tree?: Node;\n public nodeClass?: typeof Node;\n public load_on_demand: boolean;\n public is_open: boolean;\n public element: HTMLElement;\n public is_loading: boolean;\n public isEmptyFolder: boolean;\n\n [key: string]: unknown;\n\n constructor(o: NodeData | null = null, isRoot = false, nodeClass = Node) {\n this.name = \"\";\n this.isEmptyFolder = false;\n this.load_on_demand = false;\n\n this.setData(o);\n\n this.children = [];\n this.parent = null;\n\n if (isRoot) {\n this.idMapping = new Map<NodeId, Node>();\n this.tree = this;\n this.nodeClass = nodeClass;\n }\n }\n\n /*\n Set the data of this node.\n\n setData(string): set the name of the node\n setdata(object): set attributes of the node\n\n Examples:\n setdata('node1')\n\n setData({ name: 'node1', id: 1});\n\n setData({ name: 'node2', id: 2, color: 'green'});\n\n * This is an internal function; it is not in the docs\n * Does not remove existing node values\n */\n public setData(o: NodeData | null): void {\n if (!o) {\n return;\n } else if (typeof o === \"string\") {\n this.name = o;\n } else if (typeof o === \"object\") {\n for (const key in o) {\n if (Object.prototype.hasOwnProperty.call(o, key)) {\n const value = o[key];\n\n if (key === \"label\" || key === \"name\") {\n // You can use the 'label' key instead of 'name'; this is a legacy feature\n if (typeof value === \"string\") {\n this.name = value;\n }\n } else if (key !== \"children\" && key !== \"parent\") {\n // You can't update the children or the parent using this function\n this[key] = value;\n }\n }\n }\n }\n }\n\n /*\n Create tree from data.\n\n Structure of data is:\n [\n {\n name: 'node1',\n children: [\n { name: 'child1' },\n { name: 'child2' }\n ]\n },\n {\n name: 'node2'\n }\n ]\n */\n public loadFromData(data: NodeData[]): Node {\n this.removeChildren();\n\n for (const o of data) {\n const node = this.createNode(o);\n this.addChild(node);\n\n if (isNodeRecordWithChildren(o)) {\n if (o.children.length === 0) {\n node.isEmptyFolder = true;\n } else {\n node.loadFromData(o.children);\n }\n }\n }\n\n return this;\n }\n\n /*\n Add child.\n\n tree.addChild(\n new Node('child1')\n );\n */\n public addChild(node: Node): void {\n this.children.push(node);\n node.setParent(this);\n }\n\n /*\n Add child at position. Index starts at 0.\n\n tree.addChildAtPosition(\n new Node('abc'),\n 1\n );\n */\n public addChildAtPosition(node: Node, index: number): void {\n this.children.splice(index, 0, node);\n node.setParent(this);\n }\n\n /*\n Remove child. This also removes the children of the node.\n\n tree.removeChild(tree.children[0]);\n */\n public removeChild(node: Node): void {\n // remove children from the index\n node.removeChildren();\n\n this.doRemoveChild(node);\n }\n\n /*\n Get child index.\n\n var index = getChildIndex(node);\n */\n public getChildIndex(node: Node): number {\n return this.children.indexOf(node);\n }\n\n /*\n Does the tree have children?\n\n if (tree.hasChildren()) {\n //\n }\n */\n public hasChildren(): boolean {\n return this.children.length !== 0;\n }\n\n public isFolder(): boolean {\n return this.hasChildren() || this.load_on_demand;\n }\n\n /*\n Iterate over all the nodes in the tree.\n\n Calls callback with (node, level).\n\n The callback must return true to continue the iteration on current node.\n\n tree.iterate(\n function(node, level) {\n console.log(node.name);\n\n // stop iteration after level 2\n return (level <= 2);\n }\n );\n\n */\n public iterate(callback: IterateCallback): void {\n const _iterate = (node: Node, level: number): void => {\n if (node.children) {\n for (const child of node.children) {\n const result = callback(child, level);\n\n if (result && child.hasChildren()) {\n _iterate(child, level + 1);\n }\n }\n }\n };\n\n _iterate(this, 0);\n }\n\n /*\n Move node relative to another node.\n\n Argument position: Position.BEFORE, Position.AFTER or Position.Inside\n\n // move node1 after node2\n tree.moveNode(node1, node2, Position.AFTER);\n */\n public moveNode(\n movedNode: Node,\n targetNode: Node,\n position: Position\n ): boolean {\n if (!movedNode.parent || movedNode.isParentOf(targetNode)) {\n // - Node is parent of target node\n // - Or, parent is empty\n return false;\n } else {\n movedNode.parent.doRemoveChild(movedNode);\n\n switch (position) {\n case Position.After: {\n if (targetNode.parent) {\n targetNode.parent.addChildAtPosition(\n movedNode,\n targetNode.parent.getChildIndex(targetNode) + 1\n );\n return true;\n }\n return false;\n }\n\n case Position.Before: {\n if (targetNode.parent) {\n targetNode.parent.addChildAtPosition(\n movedNode,\n targetNode.parent.getChildIndex(targetNode)\n );\n return true;\n }\n return false;\n }\n\n case Position.Inside: {\n // move inside as first child\n targetNode.addChildAtPosition(movedNode, 0);\n return true;\n }\n\n default:\n return false;\n }\n }\n }\n\n /*\n Get the tree as data.\n */\n public getData(includeParent = false): NodeRecord[] {\n const getDataFromNodes = (nodes: Node[]): Record<string, unknown>[] => {\n return nodes.map((node) => {\n const tmpNode: Record<string, unknown> = {};\n\n for (const k in node) {\n if (\n [\n \"parent\",\n \"children\",\n \"element\",\n \"idMapping\",\n \"load_on_demand\",\n \"nodeClass\",\n \"tree\",\n \"isEmptyFolder\",\n ].indexOf(k) === -1 &&\n Object.prototype.hasOwnProperty.call(node, k)\n ) {\n const v = node[k];\n tmpNode[k] = v;\n }\n }\n\n if (node.hasChildren()) {\n tmpNode[\"children\"] = getDataFromNodes(node.children);\n }\n\n return tmpNode;\n });\n };\n\n if (includeParent) {\n return getDataFromNodes([this]);\n } else {\n return getDataFromNodes(this.children);\n }\n }\n\n public getNodeByName(name: string): Node | null {\n return this.getNodeByCallback((node: Node) => node.name === name);\n }\n\n public getNodeByNameMustExist(name: string): Node {\n const node = this.getNodeByCallback((n: Node) => n.name === name);\n\n if (!node) {\n throw `Node with name ${name} not found`;\n }\n\n return node;\n }\n\n public getNodeByCallback(callback: (node: Node) => boolean): Node | null {\n let result: Node | null = null;\n\n this.iterate((node: Node) => {\n if (result) {\n return false;\n } else if (callback(node)) {\n result = node;\n return false;\n } else {\n return true;\n }\n });\n\n return result;\n }\n\n public addAfter(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const node = this.createNode(nodeInfo);\n\n const childIndex = this.parent.getChildIndex(this);\n this.parent.addChildAtPosition(node, childIndex + 1);\n\n if (\n isNodeRecordWithChildren(nodeInfo) &&\n nodeInfo.children.length\n ) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n }\n\n public addBefore(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const node = this.createNode(nodeInfo);\n\n const childIndex = this.parent.getChildIndex(this);\n this.parent.addChildAtPosition(node, childIndex);\n\n if (\n isNodeRecordWithChildren(nodeInfo) &&\n nodeInfo.children.length\n ) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n }\n\n public addParent(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const newParent = this.createNode(nodeInfo);\n\n if (this.tree) {\n newParent.setParent(this.tree);\n }\n const originalParent = this.parent;\n\n for (const child of originalParent.children) {\n newParent.addChild(child);\n }\n\n originalParent.children = [];\n originalParent.addChild(newParent);\n return newParent;\n }\n }\n\n public remove(): void {\n if (this.parent) {\n this.parent.removeChild(this);\n this.parent = null;\n }\n }\n\n public append(nodeInfo: NodeData): Node {\n const node = this.createNode(nodeInfo);\n this.addChild(node);\n\n if (isNodeRecordWithChildren(nodeInfo) && nodeInfo.children.length) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n\n public prepend(nodeInfo: NodeData): Node {\n const node = this.createNode(nodeInfo);\n this.addChildAtPosition(node, 0);\n\n if (isNodeRecordWithChildren(nodeInfo) && nodeInfo.children.length) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n\n public isParentOf(node: Node): boolean {\n let parent = node.parent;\n\n while (parent) {\n if (parent === this) {\n return true;\n }\n\n parent = parent.parent;\n }\n\n return false;\n }\n\n public getLevel(): number {\n let level = 0;\n let node: Node = this; // eslint-disable-line @typescript-eslint/no-this-alias\n\n while (node.parent) {\n level += 1;\n node = node.parent;\n }\n\n return level;\n }\n\n public getNodeById(nodeId: NodeId): Node | null {\n return this.idMapping.get(nodeId) || null;\n }\n\n public addNodeToIndex(node: Node): void {\n if (node.id != null) {\n this.idMapping.set(node.id, node);\n }\n }\n\n public removeNodeFromIndex(node: Node): void {\n if (node.id != null) {\n this.idMapping.delete(node.id);\n }\n }\n\n public removeChildren(): void {\n this.iterate((child: Node) => {\n this.tree?.removeNodeFromIndex(child);\n return true;\n });\n\n this.children = [];\n }\n\n public getPreviousSibling(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousIndex = this.parent.getChildIndex(this) - 1;\n if (previousIndex >= 0) {\n return this.parent.children[previousIndex] || null;\n } else {\n return null;\n }\n }\n }\n\n public getNextSibling(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const nextIndex = this.parent.getChildIndex(this) + 1;\n if (nextIndex < this.parent.children.length) {\n return this.parent.children[nextIndex] || null;\n } else {\n return null;\n }\n }\n }\n\n public getNodesByProperty(key: string, value: unknown): Node[] {\n return this.filter((node: Node) => node[key] === value);\n }\n\n public filter(f: (node: Node) => boolean): Node[] {\n const result: Node[] = [];\n\n this.iterate((node: Node) => {\n if (f(node)) {\n result.push(node);\n }\n\n return true;\n });\n\n return result;\n }\n\n public getNextNode(includeChildren = true): Node | null {\n if (includeChildren && this.hasChildren()) {\n return this.children[0] || null;\n } else if (!this.parent) {\n return null;\n } else {\n const nextSibling = this.getNextSibling();\n\n if (nextSibling) {\n return nextSibling;\n } else {\n return this.parent.getNextNode(false);\n }\n }\n }\n\n public getNextVisibleNode(): Node | null {\n if (this.hasChildren() && this.is_open) {\n // First child\n return this.children[0] || null;\n } else {\n if (!this.parent) {\n return null;\n } else {\n const nextSibling = this.getNextSibling();\n if (nextSibling) {\n // Next sibling\n return nextSibling;\n } else {\n // Next node of parent\n return this.parent.getNextNode(false);\n }\n }\n }\n }\n\n public getPreviousNode(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousSibling = this.getPreviousSibling();\n\n if (!previousSibling) {\n return this.getParent();\n } else if (previousSibling.hasChildren()) {\n return previousSibling.getLastChild();\n } else {\n return previousSibling;\n }\n }\n }\n\n public getPreviousVisibleNode(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousSibling = this.getPreviousSibling();\n\n if (!previousSibling) {\n return this.getParent();\n } else if (\n !previousSibling.hasChildren() ||\n !previousSibling.is_open\n ) {\n // Previous sibling\n return previousSibling;\n } else {\n // Last child of previous sibling\n return previousSibling.getLastChild();\n }\n }\n }\n\n public getParent(): Node | null {\n // Return parent except if it is the root node\n if (!this.parent) {\n return null;\n } else if (!this.parent.parent) {\n // Root node -> null\n return null;\n } else {\n return this.parent;\n }\n }\n\n public getLastChild(): Node | null {\n if (!this.hasChildren()) {\n return null;\n } else {\n const lastChild = this.children[this.children.length - 1];\n\n if (!lastChild) {\n return null;\n }\n\n if (!(lastChild.hasChildren() && lastChild.is_open)) {\n return lastChild;\n } else {\n return lastChild?.getLastChild();\n }\n }\n }\n\n // Init Node from data without making it the root of the tree\n public initFromData(data: NodeData): void {\n const addNode = (nodeData: NodeData): void => {\n this.setData(nodeData);\n\n if (\n isNodeRecordWithChildren(nodeData) &&\n nodeData.children.length\n ) {\n addChildren(nodeData.children);\n }\n };\n\n const addChildren = (childrenData: NodeData[]): void => {\n for (const child of childrenData) {\n const node = this.createNode();\n node.initFromData(child);\n this.addChild(node);\n }\n };\n\n addNode(data);\n }\n\n private setParent(parent: Node): void {\n this.parent = parent;\n this.tree = parent.tree;\n this.tree?.addNodeToIndex(this);\n }\n\n private doRemoveChild(node: Node): void {\n this.children.splice(this.getChildIndex(node), 1);\n this.tree?.removeNodeFromIndex(node);\n }\n\n private getNodeClass(): typeof Node {\n return this.nodeClass || this?.tree?.nodeClass || Node;\n }\n\n private createNode(nodeData?: NodeData): Node {\n const nodeClass = this.getNodeClass();\n return new nodeClass(nodeData);\n }\n}\n","import { getPositionName, Node, Position } from \"./node\";\nimport { DropHint, HitArea, PositionInfo } from \"./types\";\nimport { NodeElement } from \"./nodeElement\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\ninterface Dimensions {\n left: number;\n top: number;\n right: number;\n bottom: number;\n}\n\nexport class DragAndDropHandler {\n public hitAreas: HitArea[];\n public isDragging: boolean;\n public currentItem: NodeElement | null;\n public hoveredArea: HitArea | null;\n public positionInfo: PositionInfo | null;\n\n private treeWidget: JqTreeWidget;\n private dragElement: DragElement | null;\n private previousGhost: DropHint | null;\n private openFolderTimer: number | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n this.hoveredArea = null;\n this.hitAreas = [];\n this.isDragging = false;\n this.currentItem = null;\n this.positionInfo = null;\n }\n\n public mouseCapture(positionInfo: PositionInfo): boolean | null {\n const $element = jQuery(positionInfo.target);\n\n if (!this.mustCaptureElement($element)) {\n return null;\n }\n\n if (\n this.treeWidget.options.onIsMoveHandle &&\n !this.treeWidget.options.onIsMoveHandle($element)\n ) {\n return null;\n }\n\n let nodeElement = this.treeWidget._getNodeElement($element);\n\n if (nodeElement && this.treeWidget.options.onCanMove) {\n if (!this.treeWidget.options.onCanMove(nodeElement.node)) {\n nodeElement = null;\n }\n }\n\n this.currentItem = nodeElement;\n return this.currentItem != null;\n }\n\n public mouseStart(positionInfo: PositionInfo): boolean {\n if (\n !this.currentItem ||\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return false;\n }\n\n this.refresh();\n\n const offset = jQuery(positionInfo.target).offset();\n const left = offset ? offset.left : 0;\n const top = offset ? offset.top : 0;\n\n const node = this.currentItem.node;\n\n this.dragElement = new DragElement(\n node.name,\n positionInfo.pageX - left,\n positionInfo.pageY - top,\n this.treeWidget.element,\n this.treeWidget.options.autoEscape ?? true\n );\n\n this.isDragging = true;\n this.positionInfo = positionInfo;\n this.currentItem.$element.addClass(\"jqtree-moving\");\n return true;\n }\n\n public mouseDrag(positionInfo: PositionInfo): boolean {\n if (\n !this.currentItem ||\n !this.dragElement ||\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return false;\n }\n\n this.dragElement.move(positionInfo.pageX, positionInfo.pageY);\n this.positionInfo = positionInfo;\n\n const area = this.findHoveredArea(\n positionInfo.pageX,\n positionInfo.pageY\n );\n\n if (area && this.canMoveToArea(area)) {\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) {\n if (this.treeWidget.options.onDragMove) {\n this.treeWidget.options.onDragMove(\n this.currentItem.node,\n positionInfo.originalEvent\n );\n }\n }\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.removeClass(\"jqtree-moving\");\n this.currentItem = null;\n }\n\n this.isDragging = false;\n this.positionInfo = null;\n\n if (!this.hoveredArea && currentItem) {\n if (this.treeWidget.options.onDragStop) {\n this.treeWidget.options.onDragStop(\n currentItem.node,\n positionInfo.originalEvent\n );\n }\n }\n\n return false;\n }\n\n public refresh(): void {\n this.removeHitAreas();\n\n if (this.currentItem) {\n this.generateHitAreas();\n\n this.currentItem = this.treeWidget._getNodeElementForNode(\n this.currentItem.node\n );\n\n if (this.isDragging) {\n this.currentItem.$element.addClass(\"jqtree-moving\");\n }\n }\n }\n\n private generateHitAreas(): void {\n if (!this.currentItem) {\n this.hitAreas = [];\n } else {\n const hitAreasGenerator = new HitAreasGenerator(\n this.treeWidget.tree,\n this.currentItem.node,\n this.getTreeDimensions().bottom\n );\n this.hitAreas = hitAreasGenerator.generate();\n }\n }\n\n private mustCaptureElement($element: JQuery<HTMLElement>): boolean {\n return !$element.is(\"input,select,textarea\");\n }\n\n private canMoveToArea(area: HitArea): boolean {\n if (!this.treeWidget.options.onCanMoveTo) {\n return true;\n }\n\n if (!this.currentItem) {\n return false;\n }\n\n const positionName = getPositionName(area.position);\n\n return this.treeWidget.options.onCanMoveTo(\n this.currentItem.node,\n area.node,\n positionName\n );\n }\n\n private removeHitAreas(): void {\n this.hitAreas = [];\n }\n\n private clear(): void {\n if (this.dragElement) {\n this.dragElement.remove();\n this.dragElement = null;\n }\n }\n\n private removeDropHint(): void {\n if (this.previousGhost) {\n this.previousGhost.remove();\n }\n }\n\n private removeHover(): void {\n this.hoveredArea = 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 let low = 0;\n let high = this.hitAreas.length;\n while (low < high) {\n const mid = (low + high) >> 1;\n const area = this.hitAreas[mid];\n\n if (!area) {\n return null;\n }\n\n if (y < area.top) {\n high = mid;\n } else if (y > area.bottom) {\n low = mid + 1;\n } else {\n return area;\n }\n }\n\n return null;\n }\n\n private mustOpenFolderTimer(area: HitArea): boolean {\n const node = area.node;\n\n return (\n node.isFolder() &&\n !node.is_open &&\n area.position === Position.Inside\n );\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.treeWidget._getNodeElementForNode(\n this.hoveredArea.node\n );\n this.previousGhost = nodeElement.addDropHint(this.hoveredArea.position);\n }\n\n private startOpenFolderTimer(folder: Node): void {\n const openFolder = (): void => {\n this.treeWidget._openNode(\n folder,\n this.treeWidget.options.slide,\n () => {\n this.refresh();\n this.updateDropHint();\n }\n );\n };\n\n this.stopOpenFolderTimer();\n\n const openFolderDelay = this.treeWidget.options.openFolderDelay;\n\n if (openFolderDelay !== false) {\n this.openFolderTimer = window.setTimeout(\n openFolder,\n openFolderDelay\n );\n }\n }\n\n private stopOpenFolderTimer(): void {\n if (this.openFolderTimer) {\n clearTimeout(this.openFolderTimer);\n this.openFolderTimer = null;\n }\n }\n\n private moveItem(positionInfo: PositionInfo): void {\n if (\n this.currentItem &&\n this.hoveredArea &&\n this.hoveredArea.position !== Position.None &&\n this.canMoveToArea(this.hoveredArea)\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 === Position.Inside) {\n this.hoveredArea.node.is_open = true;\n }\n\n const doMove = (): void => {\n this.treeWidget.tree.moveNode(movedNode, targetNode, position);\n this.treeWidget.element.empty();\n this.treeWidget._refreshElements(null);\n };\n\n const event = this.treeWidget._triggerEvent(\"tree.move\", {\n move_info: {\n moved_node: movedNode,\n target_node: targetNode,\n position: getPositionName(position),\n previous_parent: previousParent,\n do_move: doMove,\n original_event: positionInfo.originalEvent,\n },\n });\n\n if (!event.isDefaultPrevented()) {\n doMove();\n }\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 offset = this.treeWidget.element.offset();\n\n if (!offset) {\n return { left: 0, top: 0, right: 0, bottom: 0 };\n } else {\n const el = this.treeWidget.element;\n const width = el.width() || 0;\n const height = el.height() || 0;\n const left = offset.left + this.treeWidget._getScrollLeft();\n\n return {\n left,\n top: offset.top,\n right: left + width,\n bottom: offset.top + height + 16,\n };\n }\n }\n}\n\nabstract class VisibleNodeIterator {\n private tree: Node;\n\n constructor(tree: Node) {\n this.tree = tree;\n }\n\n protected iterate(): void {\n let isFirstNode = true;\n\n const _iterateNode = (node: Node, nextNode: Node | null): void => {\n let mustIterateInside =\n (node.is_open || !node.element) && node.hasChildren();\n\n let $element: JQuery<HTMLElement> | null = null;\n\n if (node.element) {\n $element = jQuery(node.element);\n\n if (!$element.is(\":visible\")) {\n return;\n }\n\n if (isFirstNode) {\n this.handleFirstNode(node);\n isFirstNode = false;\n }\n\n if (!node.hasChildren()) {\n this.handleNode(node, nextNode, $element);\n } else if (node.is_open) {\n if (!this.handleOpenFolder(node, $element)) {\n mustIterateInside = false;\n }\n } else {\n this.handleClosedFolder(node, nextNode, $element);\n }\n }\n\n if (mustIterateInside) {\n const childrenLength = node.children.length;\n node.children.forEach((_, i) => {\n const child = node.children[i];\n\n if (child) {\n if (i === childrenLength - 1) {\n _iterateNode(child, null);\n } else {\n const nextChild = node.children[i + 1];\n\n if (nextChild) {\n _iterateNode(child, nextChild);\n }\n }\n }\n });\n\n if (node.is_open && $element) {\n this.handleAfterOpenFolder(node, nextNode);\n }\n }\n };\n\n _iterateNode(this.tree, null);\n }\n\n protected abstract handleNode(\n node: Node,\n nextNode: Node | null,\n $element: JQuery\n ): void;\n\n /*\n override\n return\n - true: continue iterating\n - false: stop iterating\n */\n protected abstract handleOpenFolder(node: Node, $element: JQuery): boolean;\n\n protected abstract handleClosedFolder(\n node: Node,\n nextNode: Node | null,\n $element: JQuery\n ): void;\n\n protected abstract handleAfterOpenFolder(\n node: Node,\n nextNode: Node | null\n ): void;\n\n protected abstract handleFirstNode(node: Node): void;\n}\n\nexport class HitAreasGenerator extends VisibleNodeIterator {\n private currentNode: Node;\n private treeBottom: number;\n private positions: HitArea[];\n private lastTop: number;\n\n constructor(tree: Node, currentNode: Node, treeBottom: number) {\n super(tree);\n\n this.currentNode = currentNode;\n this.treeBottom = treeBottom;\n }\n\n public generate(): HitArea[] {\n this.positions = [];\n this.lastTop = 0;\n\n this.iterate();\n\n return this.generateHitAreas(this.positions);\n }\n\n protected generateHitAreas(positions: HitArea[]): HitArea[] {\n let previousTop = -1;\n let group = [];\n const hitAreas: HitArea[] = [];\n\n for (const position of positions) {\n if (position.top !== previousTop && group.length) {\n if (group.length) {\n this.generateHitAreasForGroup(\n hitAreas,\n group,\n previousTop,\n position.top\n );\n }\n\n previousTop = position.top;\n group = [];\n }\n\n group.push(position);\n }\n\n this.generateHitAreasForGroup(\n hitAreas,\n group,\n previousTop,\n this.treeBottom\n );\n\n return hitAreas;\n }\n\n protected handleOpenFolder(node: Node, $element: JQuery): boolean {\n if (node === this.currentNode) {\n // Cannot move inside current item\n // Stop iterating\n return false;\n }\n\n // Cannot move before current item\n if (node.children[0] !== this.currentNode) {\n this.addPosition(node, Position.Inside, this.getTop($element));\n }\n\n // Continue iterating\n return true;\n }\n\n protected handleClosedFolder(\n node: Node,\n nextNode: Node,\n $element: JQuery\n ): void {\n const top = this.getTop($element);\n\n if (node === this.currentNode) {\n // Cannot move after current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.Inside, top);\n\n // Cannot move before current item\n if (nextNode !== this.currentNode) {\n this.addPosition(node, Position.After, top);\n }\n }\n }\n\n protected handleFirstNode(node: Node): void {\n if (node !== this.currentNode) {\n this.addPosition(\n node,\n Position.Before,\n this.getTop(jQuery(node.element))\n );\n }\n }\n\n protected handleAfterOpenFolder(node: Node, nextNode: Node): void {\n if (node === this.currentNode || nextNode === this.currentNode) {\n // Cannot move before or after current item\n this.addPosition(node, Position.None, this.lastTop);\n } else {\n this.addPosition(node, Position.After, this.lastTop);\n }\n }\n\n protected handleNode(node: Node, nextNode: Node, $element: JQuery): void {\n const top = this.getTop($element);\n\n if (node === this.currentNode) {\n // Cannot move inside current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.Inside, top);\n }\n\n if (nextNode === this.currentNode || node === this.currentNode) {\n // Cannot move before or after current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.After, top);\n }\n }\n\n private getTop($element: JQuery<HTMLElement>): number {\n const offset = $element.offset();\n\n return offset ? offset.top : 0;\n }\n\n private addPosition(node: Node, position: number, top: number): void {\n const area = {\n top,\n bottom: 0,\n node,\n position,\n };\n\n this.positions.push(area);\n this.lastTop = top;\n }\n\n private generateHitAreasForGroup(\n hitAreas: HitArea[],\n positionsInGroup: HitArea[],\n top: number,\n bottom: number\n ): void {\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 let i = 0;\n while (i < positionCount) {\n const position = positionsInGroup[i];\n\n if (position) {\n hitAreas.push({\n top: areaTop,\n bottom: areaTop + areaHeight,\n node: position.node,\n position: position.position,\n });\n }\n\n areaTop += areaHeight;\n i += 1;\n }\n }\n}\n\nclass DragElement {\n private offsetX: number;\n private offsetY: number;\n private $element: JQuery;\n\n constructor(\n nodeName: string,\n offsetX: number,\n offsetY: number,\n $tree: JQuery,\n autoEscape: boolean\n ) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n this.$element = jQuery(\"<span>\").addClass(\n \"jqtree-title jqtree-dragging\"\n );\n\n if (autoEscape) {\n this.$element.text(nodeName);\n } else {\n this.$element.html(nodeName);\n }\n\n this.$element.css(\"position\", \"absolute\");\n $tree.append(this.$element);\n }\n\n public move(pageX: number, pageY: number): void {\n this.$element.offset({\n left: pageX - this.offsetX,\n top: pageY - this.offsetY,\n });\n }\n\n public remove(): void {\n this.$element.remove();\n }\n}\n","export const isInt = (n: unknown): boolean =>\n typeof n === \"number\" && n % 1 === 0;\n\nexport const isFunction = (v: unknown): boolean => typeof v === \"function\";\n\nexport const getBoolString = (value: unknown): string =>\n value ? \"true\" : \"false\";\n","import { getBoolString } from \"./util\";\nimport { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\ntype IconElement = string | HTMLElement | JQuery<HTMLElement>;\n\nexport default class ElementsRenderer {\n public openedIconElement?: HTMLElement | Text;\n public closedIconElement?: HTMLElement | Text;\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n this.openedIconElement = this.createButtonElement(\n treeWidget.options.openedIcon || \"+\",\n );\n this.closedIconElement = this.createButtonElement(\n treeWidget.options.closedIcon || \"-\",\n );\n }\n\n public render(fromNode: Node | null): void {\n if (fromNode && fromNode.parent) {\n this.renderFromNode(fromNode);\n } else {\n this.renderFromRoot();\n }\n }\n\n public renderFromRoot(): void {\n const $element = this.treeWidget.element;\n $element.empty();\n\n if ($element[0]) {\n this.createDomElements(\n $element[0],\n this.treeWidget.tree.children,\n true,\n 1,\n );\n }\n }\n\n public renderFromNode(node: Node): void {\n // remember current li\n const $previousLi = jQuery(node.element);\n\n // create element\n const li = this.createLi(node, node.getLevel());\n this.attachNodeData(node, li);\n\n // add element to dom\n $previousLi.after(li);\n\n // remove previous li\n $previousLi.remove();\n\n // create children\n if (node.children) {\n this.createDomElements(\n li,\n node.children,\n false,\n node.getLevel() + 1,\n );\n }\n }\n\n private createDomElements(\n element: Element,\n children: Node[],\n isRootNode: boolean,\n level: number,\n ): void {\n const ul = this.createUl(isRootNode);\n element.appendChild(ul);\n\n for (const child of children) {\n const li = this.createLi(child, level);\n ul.appendChild(li);\n\n this.attachNodeData(child, li);\n\n if (child.hasChildren()) {\n this.createDomElements(li, child.children, false, level + 1);\n }\n }\n }\n\n private attachNodeData(node: Node, li: HTMLElement): void {\n node.element = li;\n jQuery(li).data(\"node\", node);\n }\n\n private createUl(isRootNode: boolean): HTMLUListElement {\n let classString;\n let role;\n\n if (!isRootNode) {\n classString = \"\";\n role = \"group\";\n } else {\n classString = \"jqtree-tree\";\n role = \"tree\";\n\n if (this.treeWidget.options.rtl) {\n classString += \" jqtree-rtl\";\n }\n }\n\n if (this.treeWidget.options.dragAndDrop) {\n classString += \" jqtree-dnd\";\n }\n\n const ul = document.createElement(\"ul\");\n ul.className = `jqtree_common ${classString}`;\n\n ul.setAttribute(\"role\", role);\n\n return ul;\n }\n\n private createLi(node: Node, level: number): HTMLLIElement {\n const isSelected = Boolean(\n this.treeWidget.selectNodeHandler.isNodeSelected(node),\n );\n\n const mustShowFolder =\n node.isFolder() ||\n (node.isEmptyFolder && this.treeWidget.options.showEmptyFolder);\n\n const li = mustShowFolder\n ? this.createFolderLi(node, level, isSelected)\n : this.createNodeLi(node, level, isSelected);\n\n if (this.treeWidget.options.onCreateLi) {\n this.treeWidget.options.onCreateLi(node, jQuery(li), isSelected);\n }\n\n return li;\n }\n\n private setTreeItemAriaAttributes(\n element: HTMLElement,\n name: string,\n level: number,\n isSelected: boolean,\n ) {\n element.setAttribute(\"aria-label\", name);\n element.setAttribute(\"aria-level\", `${level}`);\n element.setAttribute(\"aria-selected\", getBoolString(isSelected));\n element.setAttribute(\"role\", \"treeitem\");\n }\n\n private createFolderLi(\n node: Node,\n level: number,\n isSelected: boolean,\n ): HTMLLIElement {\n const buttonClasses = this.getButtonClasses(node);\n const folderClasses = this.getFolderClasses(node, isSelected);\n\n const iconElement = node.is_open\n ? this.openedIconElement\n : this.closedIconElement;\n\n // li\n const li = document.createElement(\"li\");\n li.className = `jqtree_common ${folderClasses}`;\n li.setAttribute(\"role\", \"none\");\n\n // div\n const div = document.createElement(\"div\");\n div.className = \"jqtree-element jqtree_common\";\n div.setAttribute(\"role\", \"none\");\n\n li.appendChild(div);\n\n // button link\n const buttonLink = document.createElement(\"a\");\n buttonLink.className = buttonClasses;\n\n if (iconElement) {\n buttonLink.appendChild(iconElement.cloneNode(true));\n }\n\n if (this.treeWidget.options.buttonLeft) {\n div.appendChild(buttonLink);\n }\n\n // title span\n const titleSpan = this.createTitleSpan(\n node.name,\n isSelected,\n true,\n level,\n );\n titleSpan.setAttribute(\"aria-expanded\", getBoolString(node.is_open));\n div.appendChild(titleSpan);\n\n if (!this.treeWidget.options.buttonLeft) {\n div.appendChild(buttonLink);\n }\n\n return li;\n }\n\n private createNodeLi(\n node: Node,\n level: number,\n isSelected: boolean,\n ): HTMLLIElement {\n const liClasses = [\"jqtree_common\"];\n\n if (isSelected) {\n liClasses.push(\"jqtree-selected\");\n }\n\n const classString = liClasses.join(\" \");\n\n // li\n const li = document.createElement(\"li\");\n li.className = classString;\n li.setAttribute(\"role\", \"none\");\n\n // div\n const div = document.createElement(\"div\");\n div.className = \"jqtree-element jqtree_common\";\n div.setAttribute(\"role\", \"none\");\n\n li.appendChild(div);\n\n // title span\n const titleSpan = this.createTitleSpan(\n node.name,\n isSelected,\n false,\n level,\n );\n div.appendChild(titleSpan);\n\n return li;\n }\n\n private createTitleSpan(\n nodeName: string,\n isSelected: boolean,\n isFolder: boolean,\n level: number,\n ): HTMLSpanElement {\n const titleSpan = document.createElement(\"span\");\n\n let classes = \"jqtree-title jqtree_common\";\n\n if (isFolder) {\n classes += \" jqtree-title-folder\";\n }\n\n classes += ` jqtree-title-button-${\n this.treeWidget.options.buttonLeft ? \"left\" : \"right\"\n }`;\n\n titleSpan.className = classes;\n\n if (isSelected) {\n const tabIndex = this.treeWidget.options.tabIndex;\n\n if (tabIndex !== undefined) {\n titleSpan.setAttribute(\"tabindex\", `${tabIndex}`);\n }\n }\n\n this.setTreeItemAriaAttributes(titleSpan, nodeName, level, isSelected);\n\n if (this.treeWidget.options.autoEscape) {\n titleSpan.textContent = nodeName;\n } else {\n titleSpan.innerHTML = nodeName;\n }\n\n return titleSpan;\n }\n\n private getButtonClasses(node: Node): string {\n const classes = [\"jqtree-toggler\", \"jqtree_common\"];\n\n if (!node.is_open) {\n classes.push(\"jqtree-closed\");\n }\n\n if (this.treeWidget.options.buttonLeft) {\n classes.push(\"jqtree-toggler-left\");\n } else {\n classes.push(\"jqtree-toggler-right\");\n }\n\n return classes.join(\" \");\n }\n\n private getFolderClasses(node: Node, isSelected: boolean): string {\n const classes = [\"jqtree-folder\"];\n\n if (!node.is_open) {\n classes.push(\"jqtree-closed\");\n }\n\n if (isSelected) {\n classes.push(\"jqtree-selected\");\n }\n\n if (node.is_loading) {\n classes.push(\"jqtree-loading\");\n }\n\n return classes.join(\" \");\n }\n\n private createButtonElement(\n value: IconElement,\n ): HTMLElement | Text | undefined {\n if (typeof value === \"string\") {\n // convert value to html\n const div = document.createElement(\"div\");\n div.innerHTML = value;\n\n return document.createTextNode(div.innerHTML);\n } else {\n return jQuery(value)[0];\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport type HandleFinishedLoading = () => void;\n\nexport default class DataLoader {\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n }\n\n public loadFromUrl(\n urlInfo: string | JQuery.AjaxSettings | null,\n parentNode: Node | null,\n onFinished: HandleFinishedLoading | null\n ): void {\n if (!urlInfo) {\n return;\n }\n\n const $el = this.getDomElement(parentNode);\n this.addLoadingClass($el);\n this.notifyLoading(true, parentNode, $el);\n\n const stopLoading = (): void => {\n this.removeLoadingClass($el);\n this.notifyLoading(false, parentNode, $el);\n };\n\n const handleSuccess = (data: string | NodeData[]): void => {\n stopLoading();\n this.treeWidget.loadData(this.parseData(data), parentNode);\n\n if (onFinished && typeof onFinished === \"function\") {\n onFinished();\n }\n };\n\n const handleError = (jqXHR: JQuery.jqXHR): void => {\n stopLoading();\n\n if (this.treeWidget.options.onLoadFailed) {\n this.treeWidget.options.onLoadFailed(jqXHR);\n }\n };\n\n this.submitRequest(urlInfo, handleSuccess, handleError);\n }\n\n private addLoadingClass($el: JQuery<HTMLElement>): void {\n if ($el) {\n $el.addClass(\"jqtree-loading\");\n }\n }\n\n private removeLoadingClass($el: JQuery<HTMLElement>): void {\n if ($el) {\n $el.removeClass(\"jqtree-loading\");\n }\n }\n\n private getDomElement(parentNode: Node | null): JQuery<HTMLElement> {\n if (parentNode) {\n return jQuery(parentNode.element);\n } else {\n return this.treeWidget.element;\n }\n }\n\n private notifyLoading(\n isLoading: boolean,\n node: Node | null,\n $el: JQuery\n ): void {\n if (this.treeWidget.options.onLoading) {\n this.treeWidget.options.onLoading(isLoading, node, $el);\n }\n\n this.treeWidget._triggerEvent(\"tree.loading_data\", {\n isLoading,\n node,\n $el,\n });\n }\n\n private submitRequest(\n urlInfoInput: string | JQuery.AjaxSettings,\n handleSuccess: JQuery.Ajax.SuccessCallback<any>,\n handleError: JQuery.Ajax.ErrorCallback<any>\n ): void {\n const urlInfo =\n typeof urlInfoInput === \"string\"\n ? { url: urlInfoInput }\n : urlInfoInput;\n\n const ajaxSettings: JQuery.AjaxSettings = {\n method: \"GET\",\n cache: false,\n dataType: \"json\",\n success: handleSuccess,\n error: handleError,\n ...urlInfo,\n };\n\n ajaxSettings.method = ajaxSettings.method?.toUpperCase() || \"GET\";\n\n void jQuery.ajax(ajaxSettings);\n }\n\n private parseData(data: string | NodeData[]): NodeData[] {\n const { dataFilter } = this.treeWidget.options;\n\n const getParsedData = () => {\n if (typeof data === \"string\") {\n return JSON.parse(data) as NodeData[];\n } else {\n return data;\n }\n };\n\n const parsedData = getParsedData();\n\n if (dataFilter) {\n return dataFilter(parsedData);\n } else {\n return parsedData;\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport default class KeyHandler {\n private static LEFT = 37;\n private static UP = 38;\n private static RIGHT = 39;\n private static DOWN = 40;\n\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n if (treeWidget.options.keyboardSupport) {\n jQuery(document).on(\"keydown.jqtree\", this.handleKeyDown);\n }\n }\n\n public deinit(): void {\n jQuery(document).off(\"keydown.jqtree\");\n }\n\n public moveDown(selectedNode: Node): boolean {\n return this.selectNode(selectedNode.getNextVisibleNode());\n }\n\n public moveUp(selectedNode: Node): boolean {\n return this.selectNode(selectedNode.getPreviousVisibleNode());\n }\n\n public moveRight(selectedNode: Node): boolean {\n if (!selectedNode.isFolder()) {\n return true;\n } else {\n // folder node\n if (selectedNode.is_open) {\n // Right moves to the first child of an open node\n return this.selectNode(selectedNode.getNextVisibleNode());\n } else {\n // Right expands a closed node\n this.treeWidget.openNode(selectedNode);\n return false;\n }\n }\n }\n\n public moveLeft(selectedNode: Node): boolean {\n if (selectedNode.isFolder() && selectedNode.is_open) {\n // Left on an open node closes the node\n this.treeWidget.closeNode(selectedNode);\n return false;\n } else {\n // Left on a closed or end node moves focus to the node's parent\n return this.selectNode(selectedNode.getParent());\n }\n }\n\n public selectNode(node: Node | null): boolean {\n if (!node) {\n return true;\n } else {\n this.treeWidget.selectNode(node);\n\n if (\n !this.treeWidget.scrollHandler.isScrolledIntoView(\n jQuery(node.element).find(\".jqtree-element\")\n )\n ) {\n this.treeWidget.scrollToNode(node);\n }\n\n return false;\n }\n }\n\n private handleKeyDown = (e: JQuery.Event): boolean => {\n if (!this.canHandleKeyboard()) {\n return true;\n }\n\n const selectedNode = this.treeWidget.getSelectedNode();\n if (!selectedNode) {\n return true;\n }\n\n const key = e.which;\n\n switch (key) {\n case KeyHandler.DOWN:\n return this.moveDown(selectedNode);\n\n case KeyHandler.UP:\n return this.moveUp(selectedNode);\n\n case KeyHandler.RIGHT:\n return this.moveRight(selectedNode);\n\n case KeyHandler.LEFT:\n return this.moveLeft(selectedNode);\n\n default:\n return true;\n }\n };\n\n private canHandleKeyboard(): boolean {\n return (\n (this.treeWidget.options.keyboardSupport || false) &&\n this.treeWidget.selectNodeHandler.isFocusOnTree()\n );\n }\n}\n","const register = (widgetClass: unknown, widgetName: string): void => {\n const getDataKey = (): string => `simple_widget_${widgetName}`;\n\n const getWidgetData = (\n el: HTMLElement,\n dataKey: string\n ): SimpleWidget<unknown> | null => {\n const widget = jQuery.data(el, dataKey) as unknown;\n\n if (widget && widget instanceof SimpleWidget) {\n return widget;\n } else {\n return null;\n }\n };\n\n const createWidget = ($el: JQuery, options: unknown): JQuery => {\n const dataKey = getDataKey();\n\n for (const el of $el.get()) {\n const existingWidget = getWidgetData(el, dataKey);\n\n if (!existingWidget) {\n const simpleWidgetClass = widgetClass as typeof SimpleWidget;\n const widget = new simpleWidgetClass(el, options);\n\n if (!jQuery.data(el, dataKey)) {\n jQuery.data(el, dataKey, widget);\n }\n\n // Call init after setting data, so we can call methods\n widget.init();\n }\n }\n\n return $el;\n };\n\n const destroyWidget = ($el: JQuery): void => {\n const dataKey = getDataKey();\n\n for (const el of $el.get()) {\n const widget = getWidgetData(el, dataKey);\n\n if (widget) {\n widget.destroy();\n }\n\n jQuery.removeData(el, dataKey);\n }\n };\n\n const callFunction = (\n $el: JQuery,\n functionName: string,\n args: unknown[]\n ): unknown => {\n let result = null;\n\n for (const el of $el.get()) {\n const widget = jQuery.data(el, getDataKey()) as unknown;\n\n if (widget && widget instanceof SimpleWidget) {\n const simpleWidget = widget as SimpleWidget<unknown>;\n const widgetFunction = simpleWidget[functionName];\n\n if (widgetFunction && typeof widgetFunction === \"function\") {\n result = widgetFunction.apply(widget, args) as unknown;\n }\n }\n }\n\n return result;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n (jQuery.fn as any)[widgetName] = function (\n this: JQuery,\n argument1: unknown,\n ...args: unknown[]\n ) {\n if (!argument1) {\n return createWidget(this, null);\n } else if (typeof argument1 === \"object\") {\n const options = argument1 as unknown;\n return createWidget(this, options);\n } else if (typeof argument1 === \"string\" && argument1[0] !== \"_\") {\n const functionName = argument1;\n\n if (functionName === \"destroy\") {\n return destroyWidget(this);\n } else if (functionName === \"get_widget_class\") {\n return widgetClass;\n } else {\n return callFunction(this, functionName, args);\n }\n } else {\n return undefined;\n }\n };\n};\n\nexport default class SimpleWidget<WidgetOptions> {\n public static register(widgetClass: unknown, widgetName: string): void {\n register(widgetClass, widgetName);\n }\n\n [key: string]: unknown;\n\n protected static defaults: unknown = {};\n\n public options: WidgetOptions;\n\n public $el: JQuery<HTMLElement>;\n\n constructor(el: HTMLElement, options: WidgetOptions) {\n this.$el = jQuery(el);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const defaults = (this.constructor as any)[\"defaults\"] as WidgetOptions;\n this.options = { ...defaults, ...options };\n }\n\n public destroy(): void {\n this.deinit();\n }\n\n public init(): void {\n //\n }\n\n public deinit(): void {\n //\n }\n}\n","/*\nThis widget does the same a the mouse widget in jqueryui.\n*/\nimport SimpleWidget from \"./simple.widget\";\nimport { PositionInfo } from \"./types\";\n\nconst getPositionInfoFromMouseEvent = (e: MouseEvent): PositionInfo => ({\n pageX: e.pageX,\n pageY: e.pageY,\n target: e.target as HTMLElement,\n originalEvent: e,\n});\n\nconst getPositionInfoFromTouch = (\n touch: Touch,\n e: TouchEvent\n): PositionInfo => ({\n pageX: touch.pageX,\n pageY: touch.pageY,\n target: touch.target as HTMLElement,\n originalEvent: e,\n});\n\nabstract class MouseWidget<WidgetOptions> extends SimpleWidget<WidgetOptions> {\n protected isMouseStarted: boolean;\n protected mouseDownInfo: PositionInfo | null;\n private mouseDelayTimer: number | null;\n private isMouseDelayMet: boolean;\n\n public init(): void {\n const element = this.$el.get(0);\n\n if (element) {\n element.addEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n element.addEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n }\n\n this.isMouseStarted = false;\n this.mouseDelayTimer = null;\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n }\n\n public deinit(): void {\n const el = this.$el.get(0);\n\n if (el) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (el as any).removeEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (el as any).removeEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n }\n\n this.removeMouseMoveEventListeners();\n }\n\n protected abstract mouseCapture(positionInfo: PositionInfo): boolean | null;\n\n protected abstract mouseStart(positionInfo: PositionInfo): boolean;\n\n protected abstract mouseDrag(positionInfo: PositionInfo): void;\n\n protected abstract mouseStop(positionInfo: PositionInfo): void;\n\n protected abstract getMouseDelay(): number;\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 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.mouseCapture(positionInfo)) {\n return false;\n }\n\n this.handleStartMouse();\n\n return true;\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 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 mouseMove = (e: MouseEvent): void => {\n this.handleMouseMove(e, getPositionInfoFromMouseEvent(e));\n };\n\n private handleMouseMove(\n e: MouseEvent | TouchEvent,\n positionInfo: PositionInfo\n ): void {\n if (this.isMouseStarted) {\n this.mouseDrag(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.mouseStart(this.mouseDownInfo) !== false;\n }\n\n if (this.isMouseStarted) {\n this.mouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n } else {\n this.handleMouseUp(positionInfo);\n }\n }\n\n private mouseUp = (e: MouseEvent): void => {\n this.handleMouseUp(getPositionInfoFromMouseEvent(e));\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.mouseStop(positionInfo);\n }\n }\n\n private removeMouseMoveEventListeners() {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"mousemove\", this.mouseMove, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"touchmove\", this.touchMove, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"mouseup\", this.mouseUp, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"touchend\", this.touchEnd, {\n passive: false,\n });\n }\n\n private touchStart = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n if (!touch) {\n return;\n }\n\n this.handleMouseDown(getPositionInfoFromTouch(touch, e));\n };\n\n private touchMove = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n if (!touch) {\n return;\n }\n\n this.handleMouseMove(e, getPositionInfoFromTouch(touch, e));\n };\n\n private touchEnd = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n if (!touch) {\n return;\n }\n\n this.handleMouseUp(getPositionInfoFromTouch(touch, e));\n };\n}\n\nexport default MouseWidget;\n","import { isInt } from \"./util\";\nimport { JqTreeWidget } from \"./tree.jquery\";\nimport { Node } from \"./node\";\n\nexport interface SavedState {\n open_nodes: NodeId[];\n selected_node: NodeId[];\n}\n\nexport default class SaveStateHandler {\n private treeWidget: JqTreeWidget;\n private _supportsLocalStorage: boolean | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n }\n\n public saveState(): void {\n const state = JSON.stringify(this.getState());\n\n if (this.treeWidget.options.onSetStateFromStorage) {\n this.treeWidget.options.onSetStateFromStorage(state);\n } else if (this.supportsLocalStorage()) {\n localStorage.setItem(this.getKeyName(), state);\n }\n }\n\n public getStateFromStorage(): SavedState | null {\n const jsonData = this.loadFromStorage();\n\n if (jsonData) {\n return this.parseState(jsonData) as unknown as SavedState;\n } else {\n return null;\n }\n }\n\n public getState(): SavedState {\n const getOpenNodeIds = (): NodeId[] => {\n const openNodes: NodeId[] = [];\n\n this.treeWidget.tree.iterate((node: Node) => {\n if (node.is_open && node.id && node.hasChildren()) {\n openNodes.push(node.id);\n }\n return true;\n });\n\n return openNodes;\n };\n\n const getSelectedNodeIds = (): NodeId[] => {\n const selectedNodeIds: NodeId[] = [];\n\n this.treeWidget.getSelectedNodes().forEach((node) => {\n if (node.id != null) {\n selectedNodeIds.push(node.id);\n }\n });\n\n return selectedNodeIds;\n };\n\n return {\n open_nodes: getOpenNodeIds(),\n selected_node: getSelectedNodeIds(),\n };\n }\n\n /*\n Set initial state\n Don't handle nodes that are loaded on demand\n\n result: must load on demand\n */\n public setInitialState(state: SavedState): boolean {\n if (!state) {\n return false;\n } else {\n let mustLoadOnDemand = false;\n\n if (state.open_nodes) {\n mustLoadOnDemand = this.openInitialNodes(state.open_nodes);\n }\n\n if (state.selected_node) {\n this.resetSelection();\n this.selectInitialNodes(state.selected_node);\n }\n\n return mustLoadOnDemand;\n }\n }\n\n public setInitialStateOnDemand(\n state: SavedState,\n cbFinished: () => void\n ): void {\n if (state) {\n this.doSetInitialStateOnDemand(\n state.open_nodes,\n state.selected_node,\n cbFinished\n );\n } else {\n cbFinished();\n }\n }\n\n public getNodeIdToBeSelected(): NodeId | null {\n const state = this.getStateFromStorage();\n\n if (state && state.selected_node) {\n return state.selected_node[0] || null;\n } else {\n return null;\n }\n }\n\n private parseState(jsonData: string): SavedState {\n const state = JSON.parse(jsonData) as Record<string, unknown>;\n\n // Check if selected_node is an int (instead of an array)\n if (state && state.selected_node && isInt(state.selected_node)) {\n // Convert to array\n state.selected_node = [state.selected_node];\n }\n\n return state as unknown as SavedState;\n }\n\n private loadFromStorage(): string | null {\n if (this.treeWidget.options.onGetStateFromStorage) {\n return this.treeWidget.options.onGetStateFromStorage();\n } else if (this.supportsLocalStorage()) {\n return localStorage.getItem(this.getKeyName());\n } else {\n return null;\n }\n }\n\n private openInitialNodes(nodeIds: NodeId[]): boolean {\n let mustLoadOnDemand = false;\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (node) {\n if (!node.load_on_demand) {\n node.is_open = true;\n } else {\n mustLoadOnDemand = true;\n }\n }\n }\n\n return mustLoadOnDemand;\n }\n\n private selectInitialNodes(nodeIds: NodeId[]): boolean {\n let selectCount = 0;\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (node) {\n selectCount += 1;\n\n this.treeWidget.selectNodeHandler.addToSelection(node);\n }\n }\n\n return selectCount !== 0;\n }\n\n private resetSelection(): void {\n const selectNodeHandler = this.treeWidget.selectNodeHandler;\n\n const selectedNodes = selectNodeHandler.getSelectedNodes();\n\n selectedNodes.forEach((node) => {\n selectNodeHandler.removeFromSelection(node);\n });\n }\n\n private doSetInitialStateOnDemand(\n nodeIdsParam: NodeId[],\n selectedNodes: NodeId[],\n cbFinished: () => void\n ): void {\n let loadingCount = 0;\n let nodeIds = nodeIdsParam;\n\n const openNodes = (): void => {\n const newNodesIds = [];\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (!node) {\n newNodesIds.push(nodeId);\n } else {\n if (!node.is_loading) {\n if (node.load_on_demand) {\n loadAndOpenNode(node);\n } else {\n this.treeWidget._openNode(node, false, null);\n }\n }\n }\n }\n\n nodeIds = newNodesIds;\n\n if (this.selectInitialNodes(selectedNodes)) {\n this.treeWidget._refreshElements(null);\n }\n\n if (loadingCount === 0) {\n cbFinished();\n }\n };\n\n const loadAndOpenNode = (node: Node): void => {\n loadingCount += 1;\n this.treeWidget._openNode(node, false, () => {\n loadingCount -= 1;\n openNodes();\n });\n };\n\n openNodes();\n }\n\n private getKeyName(): string {\n if (typeof this.treeWidget.options.saveState === \"string\") {\n return this.treeWidget.options.saveState;\n } else {\n return \"tree\";\n }\n }\n\n private supportsLocalStorage(): boolean {\n const testSupport = (): boolean => {\n // Is local storage supported?\n if (localStorage == null) {\n return false;\n } else {\n // Check if it's possible to store an item. Safari does not allow this in private browsing mode.\n try {\n const key = \"_storage_test\";\n sessionStorage.setItem(key, \"value\");\n sessionStorage.removeItem(key);\n } catch (error) {\n return false;\n }\n\n return true;\n }\n };\n\n if (this._supportsLocalStorage == null) {\n this._supportsLocalStorage = testSupport();\n }\n\n return this._supportsLocalStorage;\n }\n}\n","import { JqTreeWidget } from \"./tree.jquery\";\nimport { HitArea, PositionInfo } from \"./types\";\n\nexport default class ScrollHandler {\n private treeWidget: JqTreeWidget;\n private previousTop: number;\n private isInitialized: boolean;\n private $scrollParent: JQuery | null;\n private scrollParentTop: number;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n this.previousTop = -1;\n this.isInitialized = false;\n }\n\n public checkScrolling(): void {\n this.ensureInit();\n this.checkVerticalScrolling();\n this.checkHorizontalScrolling();\n }\n\n public scrollToY(top: number): void {\n this.ensureInit();\n\n if (this.$scrollParent && this.$scrollParent[0]) {\n this.$scrollParent[0].scrollTop = top;\n } else {\n const offset = this.treeWidget.$el.offset();\n const treeTop = offset ? offset.top : 0;\n\n jQuery(document).scrollTop(top + treeTop);\n }\n }\n\n public isScrolledIntoView($element: JQuery): boolean {\n this.ensureInit();\n\n let elementBottom: number;\n let viewBottom: number;\n let elementTop: number;\n let viewTop: number;\n\n const elHeight = $element.height() || 0;\n\n if (this.$scrollParent) {\n viewTop = 0;\n viewBottom = this.$scrollParent.height() || 0;\n\n const offset = $element.offset();\n const originalTop = offset ? offset.top : 0;\n\n elementTop = originalTop - this.scrollParentTop;\n elementBottom = elementTop + elHeight;\n } else {\n viewTop = jQuery(window).scrollTop() || 0;\n\n const windowHeight = jQuery(window).height() || 0;\n viewBottom = viewTop + windowHeight;\n\n const offset = $element.offset();\n\n elementTop = offset ? offset.top : 0;\n elementBottom = elementTop + elHeight;\n }\n\n return elementBottom <= viewBottom && elementTop >= viewTop;\n }\n\n public getScrollLeft(): number {\n if (!this.$scrollParent) {\n return 0;\n } else {\n return this.$scrollParent.scrollLeft() || 0;\n }\n }\n\n private initScrollParent(): void {\n const getParentWithOverflow = (): JQuery | null => {\n const cssAttributes = [\"overflow\", \"overflow-y\"];\n\n const hasOverFlow = ($el: JQuery): boolean => {\n for (const attr of cssAttributes) {\n const overflowValue = $el.css(attr);\n if (\n overflowValue === \"auto\" ||\n overflowValue === \"scroll\"\n ) {\n return true;\n }\n }\n\n return false;\n };\n\n if (hasOverFlow(this.treeWidget.$el)) {\n return this.treeWidget.$el;\n }\n\n for (const el of this.treeWidget.$el.parents().get()) {\n const $el = jQuery(el);\n if (hasOverFlow($el)) {\n return $el;\n }\n }\n\n return null;\n };\n\n const setDocumentAsScrollParent = (): void => {\n this.scrollParentTop = 0;\n this.$scrollParent = null;\n };\n\n if (this.treeWidget.$el.css(\"position\") === \"fixed\") {\n setDocumentAsScrollParent();\n }\n\n const $scrollParent = getParentWithOverflow();\n\n if (\n $scrollParent &&\n $scrollParent.length &&\n $scrollParent[0]?.tagName !== \"HTML\"\n ) {\n this.$scrollParent = $scrollParent;\n\n const offset = this.$scrollParent.offset();\n this.scrollParentTop = offset ? offset.top : 0;\n } else {\n setDocumentAsScrollParent();\n }\n\n this.isInitialized = true;\n }\n\n private ensureInit(): void {\n if (!this.isInitialized) {\n this.initScrollParent();\n }\n }\n\n private handleVerticalScrollingWithScrollParent(area: HitArea): void {\n const scrollParent = this.$scrollParent && this.$scrollParent[0];\n\n if (!scrollParent) {\n return;\n }\n\n const distanceBottom =\n this.scrollParentTop + scrollParent.offsetHeight - area.bottom;\n\n if (distanceBottom < 20) {\n scrollParent.scrollTop += 20;\n this.treeWidget.refreshHitAreas();\n this.previousTop = -1;\n } else if (area.top - this.scrollParentTop < 20) {\n scrollParent.scrollTop -= 20;\n this.treeWidget.refreshHitAreas();\n this.previousTop = -1;\n }\n }\n\n private handleVerticalScrollingWithDocument(area: HitArea): void {\n const scrollTop = jQuery(document).scrollTop() || 0;\n const distanceTop = area.top - scrollTop;\n\n if (distanceTop < 20) {\n jQuery(document).scrollTop(scrollTop - 20);\n } else {\n const windowHeight = jQuery(window).height() || 0;\n\n if (windowHeight - (area.bottom - scrollTop) < 20) {\n jQuery(document).scrollTop(scrollTop + 20);\n }\n }\n }\n\n private checkVerticalScrolling(): void {\n const hoveredArea = this.treeWidget.dndHandler.hoveredArea;\n\n if (hoveredArea && hoveredArea.top !== this.previousTop) {\n this.previousTop = hoveredArea.top;\n\n if (this.$scrollParent) {\n this.handleVerticalScrollingWithScrollParent(hoveredArea);\n } else {\n this.handleVerticalScrollingWithDocument(hoveredArea);\n }\n }\n }\n\n private checkHorizontalScrolling(): void {\n const positionInfo = this.treeWidget.dndHandler.positionInfo;\n\n if (!positionInfo) {\n return;\n }\n\n if (this.$scrollParent) {\n this.handleHorizontalScrollingWithParent(positionInfo);\n } else {\n this.handleHorizontalScrollingWithDocument(positionInfo);\n }\n }\n\n private handleHorizontalScrollingWithParent(\n positionInfo: PositionInfo\n ): void {\n if (\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return;\n }\n\n const $scrollParent = this.$scrollParent;\n const scrollParentOffset = $scrollParent && $scrollParent.offset();\n\n if (!($scrollParent && scrollParentOffset)) {\n return;\n }\n\n const scrollParent = $scrollParent[0];\n\n if (!scrollParent) {\n return;\n }\n\n const canScrollRight =\n scrollParent.scrollLeft + scrollParent.clientWidth <\n scrollParent.scrollWidth;\n const canScrollLeft = scrollParent.scrollLeft > 0;\n\n const rightEdge = scrollParentOffset.left + scrollParent.clientWidth;\n const leftEdge = scrollParentOffset.left;\n const isNearRightEdge = positionInfo.pageX > rightEdge - 20;\n const isNearLeftEdge = positionInfo.pageX < leftEdge + 20;\n\n if (isNearRightEdge && canScrollRight) {\n scrollParent.scrollLeft = Math.min(\n scrollParent.scrollLeft + 20,\n scrollParent.scrollWidth\n );\n } else if (isNearLeftEdge && canScrollLeft) {\n scrollParent.scrollLeft = Math.max(scrollParent.scrollLeft - 20, 0);\n }\n }\n\n private handleHorizontalScrollingWithDocument(\n positionInfo: PositionInfo\n ): void {\n if (\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return;\n }\n\n const $document = jQuery(document);\n\n const scrollLeft = $document.scrollLeft() || 0;\n const windowWidth = jQuery(window).width() || 0;\n\n const canScrollLeft = scrollLeft > 0;\n\n const isNearRightEdge = positionInfo.pageX > windowWidth - 20;\n const isNearLeftEdge = positionInfo.pageX - scrollLeft < 20;\n\n if (isNearRightEdge) {\n $document.scrollLeft(scrollLeft + 20);\n } else if (isNearLeftEdge && canScrollLeft) {\n $document.scrollLeft(Math.max(scrollLeft - 20, 0));\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport default class SelectNodeHandler {\n private treeWidget: JqTreeWidget;\n private selectedNodes: Set<NodeId>;\n private selectedSingleNode: Node | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n this.selectedNodes = new Set<NodeId>();\n this.clear();\n }\n\n public getSelectedNode(): Node | false {\n const selectedNodes = this.getSelectedNodes();\n\n if (selectedNodes.length) {\n return selectedNodes[0] || false;\n } else {\n return false;\n }\n }\n\n public getSelectedNodes(): Node[] {\n if (this.selectedSingleNode) {\n return [this.selectedSingleNode];\n } else {\n const selectedNodes: Node[] = [];\n\n this.selectedNodes.forEach((id) => {\n const node = this.treeWidget.getNodeById(id);\n if (node) {\n selectedNodes.push(node);\n }\n });\n\n return selectedNodes;\n }\n }\n\n public getSelectedNodesUnder(parent: Node): Node[] {\n if (this.selectedSingleNode) {\n if (parent.isParentOf(this.selectedSingleNode)) {\n return [this.selectedSingleNode];\n } else {\n return [];\n }\n } else {\n const selectedNodes = [];\n\n for (const id in this.selectedNodes) {\n if (\n Object.prototype.hasOwnProperty.call(this.selectedNodes, id)\n ) {\n const node = this.treeWidget.getNodeById(id);\n if (node && parent.isParentOf(node)) {\n selectedNodes.push(node);\n }\n }\n }\n\n return selectedNodes;\n }\n }\n\n public isNodeSelected(node: Node): boolean {\n if (node.id != null) {\n return this.selectedNodes.has(node.id);\n } else if (this.selectedSingleNode) {\n return this.selectedSingleNode.element === node.element;\n } else {\n return false;\n }\n }\n\n public clear(): void {\n this.selectedNodes.clear();\n this.selectedSingleNode = null;\n }\n\n public removeFromSelection(node: Node, includeChildren = false): void {\n if (node.id == null) {\n if (\n this.selectedSingleNode &&\n node.element === this.selectedSingleNode.element\n ) {\n this.selectedSingleNode = null;\n }\n } else {\n this.selectedNodes.delete(node.id);\n\n if (includeChildren) {\n node.iterate(() => {\n if (node.id != null) {\n this.selectedNodes.delete(node.id);\n }\n return true;\n });\n }\n }\n }\n\n public addToSelection(node: Node): void {\n if (node.id != null) {\n this.selectedNodes.add(node.id);\n } else {\n this.selectedSingleNode = node;\n }\n }\n\n public isFocusOnTree(): boolean {\n const activeElement = document.activeElement;\n\n return Boolean(\n activeElement &&\n activeElement.tagName === \"SPAN\" &&\n this.treeWidget._containsElement(activeElement as HTMLElement)\n );\n }\n}\n","import { Position, Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\nimport { DropHint } from \"./types\";\n\nexport type OnFinishOpenNode = (node: Node) => void;\n\nexport class NodeElement {\n public node: Node;\n public $element: JQuery<HTMLElement>;\n protected treeWidget: JqTreeWidget;\n\n constructor(node: Node, treeWidget: JqTreeWidget) {\n this.init(node, treeWidget);\n }\n\n public init(node: Node, treeWidget: JqTreeWidget): void {\n this.node = node;\n this.treeWidget = treeWidget;\n\n if (!node.element) {\n const element = this.treeWidget.element.get(0);\n\n if (element) {\n node.element = element;\n }\n }\n\n if (node.element) {\n this.$element = jQuery(node.element);\n }\n }\n\n public addDropHint(position: number): DropHint {\n if (this.mustShowBorderDropHint(position)) {\n return new BorderDropHint(\n this.$element,\n this.treeWidget._getScrollLeft(),\n );\n } else {\n return new GhostDropHint(this.node, this.$element, position);\n }\n }\n\n public select(mustSetFocus: boolean): void {\n const $li = this.getLi();\n\n $li.addClass(\"jqtree-selected\");\n\n const $span = this.getSpan();\n $span.attr(\"tabindex\", this.treeWidget.options.tabIndex ?? null);\n $span.attr(\"aria-selected\", \"true\");\n\n if (mustSetFocus) {\n $span.trigger(\"focus\");\n }\n }\n\n public deselect(): void {\n const $li = this.getLi();\n\n $li.removeClass(\"jqtree-selected\");\n\n const $span = this.getSpan();\n $span.removeAttr(\"tabindex\");\n $span.attr(\"aria-selected\", \"false\");\n\n $span.trigger(\"blur\");\n }\n\n protected getUl(): JQuery<HTMLElement> {\n return this.$element.children(\"ul:first\");\n }\n\n protected getSpan(): JQuery<HTMLElement> {\n return this.$element\n .children(\".jqtree-element\")\n .find(\"span.jqtree-title\");\n }\n\n protected getLi(): JQuery<HTMLElement> {\n return this.$element;\n }\n\n protected mustShowBorderDropHint(position: Position): boolean {\n return position === Position.Inside;\n }\n}\n\nexport class FolderElement extends NodeElement {\n public open(\n onFinished: OnFinishOpenNode | null,\n slide = true,\n animationSpeed: JQuery.Duration = \"fast\",\n ): void {\n if (this.node.is_open) {\n return;\n }\n\n this.node.is_open = true;\n\n const $button = this.getButton();\n $button.removeClass(\"jqtree-closed\");\n $button.html(\"\");\n\n const buttonEl = $button.get(0);\n\n if (buttonEl) {\n const openedIconElement =\n this.treeWidget.renderer.openedIconElement;\n\n if (openedIconElement) {\n const icon = openedIconElement.cloneNode(true);\n buttonEl.appendChild(icon);\n }\n }\n\n const doOpen = (): void => {\n const $li = this.getLi();\n $li.removeClass(\"jqtree-closed\");\n\n const $titleSpan = this.getSpan();\n $titleSpan.attr(\"aria-expanded\", \"true\");\n\n if (onFinished) {\n onFinished(this.node);\n }\n\n this.treeWidget._triggerEvent(\"tree.open\", {\n node: this.node,\n });\n };\n\n if (slide) {\n this.getUl().slideDown(animationSpeed, doOpen);\n } else {\n this.getUl().show();\n doOpen();\n }\n }\n\n public close(\n slide = true,\n animationSpeed: JQuery.Duration | undefined = \"fast\",\n ): void {\n if (!this.node.is_open) {\n return;\n }\n\n this.node.is_open = false;\n\n const $button = this.getButton();\n $button.addClass(\"jqtree-closed\");\n $button.html(\"\");\n\n const buttonEl = $button.get(0);\n\n if (buttonEl) {\n const closedIconElement =\n this.treeWidget.renderer.closedIconElement;\n\n if (closedIconElement) {\n const icon = closedIconElement.cloneNode(true);\n buttonEl.appendChild(icon);\n }\n }\n\n const doClose = (): void => {\n const $li = this.getLi();\n $li.addClass(\"jqtree-closed\");\n\n const $titleSpan = this.getSpan();\n $titleSpan.attr(\"aria-expanded\", \"false\");\n\n this.treeWidget._triggerEvent(\"tree.close\", {\n node: this.node,\n });\n };\n\n if (slide) {\n this.getUl().slideUp(animationSpeed, doClose);\n } else {\n this.getUl().hide();\n doClose();\n }\n }\n\n protected mustShowBorderDropHint(position: Position): boolean {\n return !this.node.is_open && position === Position.Inside;\n }\n\n private getButton(): JQuery {\n return this.$element\n .children(\".jqtree-element\")\n .find(\"a.jqtree-toggler\");\n }\n}\n\nexport class BorderDropHint implements DropHint {\n private $hint: JQuery<Element>;\n\n constructor($element: JQuery<Element>, scrollLeft: number) {\n const $div = $element.children(\".jqtree-element\");\n\n const elWidth = $element.width() || 0;\n const width = Math.max(elWidth + scrollLeft - 4, 0);\n\n const elHeight = $div.outerHeight() || 0;\n const height = Math.max(elHeight - 4, 0);\n\n this.$hint = jQuery('<span class=\"jqtree-border\"></span>');\n $div.append(this.$hint);\n\n this.$hint.css({ width, height });\n }\n\n public remove(): void {\n this.$hint.remove();\n }\n}\n\nclass GhostDropHint implements DropHint {\n private $element: JQuery<Element>;\n private node: Node;\n private $ghost: JQuery;\n\n constructor(node: Node, $element: JQuery<Element>, position: Position) {\n this.$element = $element;\n\n this.node = node;\n this.$ghost = jQuery(\n `<li class=\"jqtree_common jqtree-ghost\"><span class=\"jqtree_common jqtree-circle\"></span>\n <span class=\"jqtree_common jqtree-line\"></span></li>`,\n );\n\n if (position === Position.After) {\n this.moveAfter();\n } else if (position === Position.Before) {\n this.moveBefore();\n } else if (position === Position.Inside) {\n if (node.isFolder() && node.is_open) {\n this.moveInsideOpenFolder();\n } else {\n this.moveInside();\n }\n }\n }\n\n public remove(): void {\n this.$ghost.remove();\n }\n\n public moveAfter(): void {\n this.$element.after(this.$ghost);\n }\n\n public moveBefore(): void {\n this.$element.before(this.$ghost);\n }\n\n public moveInsideOpenFolder(): void {\n const childElement = this.node.children[0]?.element;\n\n if (childElement) {\n jQuery(childElement).before(this.$ghost);\n }\n }\n\n public moveInside(): void {\n this.$element.after(this.$ghost);\n this.$ghost.addClass(\"jqtree-inside\");\n }\n}\n","import __version__ from \"./version\";\nimport { DragAndDropHandler } from \"./dragAndDropHandler\";\nimport ElementsRenderer from \"./elementsRenderer\";\nimport DataLoader, { HandleFinishedLoading } from \"./dataLoader\";\nimport KeyHandler from \"./keyHandler\";\nimport MouseWidget from \"./mouse.widget\";\nimport { PositionInfo } from \"./types\";\nimport SaveStateHandler, { SavedState } from \"./saveStateHandler\";\nimport ScrollHandler from \"./scrollHandler\";\nimport SelectNodeHandler from \"./selectNodeHandler\";\nimport SimpleWidget from \"./simple.widget\";\nimport { Node, getPosition } from \"./node\";\nimport { isFunction } from \"./util\";\nimport { FolderElement, NodeElement, OnFinishOpenNode } from \"./nodeElement\";\nimport { JQTreeOptions } from \"./jqtreeOptions\";\n\ninterface ClickTarget {\n node: Node;\n type: \"button\" | \"label\";\n}\n\ninterface SelectNodeOptions {\n mustToggle?: boolean;\n mustSetFocus?: boolean;\n}\n\nconst NODE_PARAM_IS_EMPTY = \"Node parameter is empty\";\nconst PARAM_IS_EMPTY = \"Parameter is empty: \";\n\nexport class JqTreeWidget extends MouseWidget<JQTreeOptions> {\n protected static defaults: JQTreeOptions = {\n animationSpeed: \"fast\",\n autoEscape: true,\n autoOpen: false, // true / false / int (open n levels starting at 0)\n buttonLeft: true,\n // The symbol to use for a closed node - ► BLACK RIGHT-POINTING POINTER\n // http://www.fileformat.info/info/unicode/char/25ba/index.htm\n closedIcon: undefined,\n data: undefined,\n dataFilter: undefined,\n dataUrl: undefined,\n dragAndDrop: false,\n keyboardSupport: true,\n nodeClass: Node,\n onCanMove: undefined, // Can this node be moved?\n onCanMoveTo: undefined, // Can this node be moved to this position? function(moved_node, target_node, position)\n onCanSelectNode: undefined,\n onCreateLi: undefined,\n onDragMove: undefined,\n onDragStop: undefined,\n onGetStateFromStorage: undefined,\n onIsMoveHandle: undefined,\n onLoadFailed: undefined,\n onLoading: undefined,\n onSetStateFromStorage: undefined,\n openedIcon: \"▼\",\n openFolderDelay: 500, // The delay for opening a folder during drag and drop; the value is in milliseconds\n // The symbol to use for an open node - ▼ BLACK DOWN-POINTING TRIANGLE\n // http://www.fileformat.info/info/unicode/char/25bc/index.htm\n rtl: undefined, // right-to-left support; true / false (default)\n saveState: false, // true / false / string (cookie name)\n selectable: true,\n showEmptyFolder: false,\n slide: true, // must display slide animation?\n startDndDelay: 300, // The delay for starting dnd (in milliseconds)\n tabIndex: 0,\n useContextMenu: true,\n };\n\n public element: JQuery;\n public tree: Node;\n public dndHandler: DragAndDropHandler;\n public renderer: ElementsRenderer;\n public dataLoader: DataLoader;\n public scrollHandler: ScrollHandler;\n public selectNodeHandler: SelectNodeHandler;\n\n private isInitialized: boolean;\n private saveStateHandler: SaveStateHandler;\n private keyHandler: KeyHandler;\n\n public toggle(node: Node, slideParam: null | boolean = null): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const slide = slideParam ?? this.options.slide;\n\n if (node.is_open) {\n this.closeNode(node, slide);\n } else {\n this.openNode(node, slide);\n }\n\n return this.element;\n }\n\n public getTree(): Node {\n return this.tree;\n }\n\n public selectNode(\n node: Node | null,\n optionsParam?: SelectNodeOptions\n ): JQuery {\n this.doSelectNode(node, optionsParam);\n return this.element;\n }\n\n public getSelectedNode(): Node | false {\n return this.selectNodeHandler.getSelectedNode();\n }\n\n public toJson(): string {\n return JSON.stringify(this.tree.getData());\n }\n\n public loadData(data: NodeData[], parentNode: Node | null): JQuery {\n this.doLoadData(data, parentNode);\n return this.element;\n }\n\n /*\n signatures:\n - loadDataFromUrl(url, parent_node=null, on_finished=null)\n loadDataFromUrl('/my_data');\n loadDataFromUrl('/my_data', node1);\n loadDataFromUrl('/my_data', node1, function() { console.log('finished'); });\n loadDataFromUrl('/my_data', null, function() { console.log('finished'); });\n\n - loadDataFromUrl(parent_node=null, on_finished=null)\n loadDataFromUrl();\n loadDataFromUrl(node1);\n loadDataFromUrl(null, function() { console.log('finished'); });\n loadDataFromUrl(node1, function() { console.log('finished'); });\n */\n public loadDataFromUrl(\n param1: string | null | Node,\n param2?: Node | null | HandleFinishedLoading,\n param3?: HandleFinishedLoading\n ): JQuery {\n if (typeof param1 === \"string\") {\n // first parameter is url\n this.doLoadDataFromUrl(\n param1,\n param2 as Node | null,\n param3 ?? null\n );\n } else {\n // first parameter is not url\n this.doLoadDataFromUrl(\n null,\n param1,\n param2 as HandleFinishedLoading | null\n );\n }\n\n return this.element;\n }\n\n public reload(onFinished: HandleFinishedLoading | null): JQuery {\n this.doLoadDataFromUrl(null, null, onFinished);\n return this.element;\n }\n\n public refresh(): JQuery {\n this._refreshElements(null);\n return this.element;\n }\n\n public getNodeById(nodeId: NodeId): Node | null {\n return this.tree.getNodeById(nodeId);\n }\n\n public getNodeByName(name: string): Node | null {\n return this.tree.getNodeByName(name);\n }\n\n public getNodeByNameMustExist(name: string): Node {\n return this.tree.getNodeByNameMustExist(name);\n }\n\n public getNodesByProperty(key: string, value: unknown): Node[] {\n return this.tree.getNodesByProperty(key, value);\n }\n\n public getNodeByHtmlElement(\n element: HTMLElement | JQuery<HTMLElement>\n ): Node | null {\n return this.getNode(jQuery(element));\n }\n\n public getNodeByCallback(callback: (node: Node) => boolean): Node | null {\n return this.tree.getNodeByCallback(callback);\n }\n\n public openNode(\n node: Node,\n param1?: boolean | OnFinishOpenNode,\n param2?: OnFinishOpenNode\n ): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const parseParams = (): [boolean, OnFinishOpenNode | null] => {\n let onFinished: OnFinishOpenNode | null;\n let slide: boolean | null;\n\n if (isFunction(param1)) {\n onFinished = param1 as OnFinishOpenNode | null;\n slide = null;\n } else {\n slide = param1 as boolean;\n onFinished = param2 as OnFinishOpenNode;\n }\n\n if (slide == null) {\n slide = this.options.slide ?? false;\n }\n\n return [slide, onFinished];\n };\n\n const [slide, onFinished] = parseParams();\n\n this._openNode(node, slide, onFinished);\n return this.element;\n }\n\n public closeNode(node: Node, slideParam?: null | boolean): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const slide = slideParam ?? this.options.slide;\n\n if (node.isFolder() || node.isEmptyFolder) {\n new FolderElement(node, this).close(\n slide,\n this.options.animationSpeed\n );\n\n this.saveState();\n }\n\n return this.element;\n }\n\n public isDragging(): boolean {\n return this.dndHandler.isDragging;\n }\n\n public refreshHitAreas(): JQuery {\n this.dndHandler.refresh();\n return this.element;\n }\n\n public addNodeAfter(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n const newNode = existingNode.addAfter(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(existingNode.parent);\n }\n\n return newNode;\n }\n\n public addNodeBefore(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n if (!existingNode) {\n throw Error(PARAM_IS_EMPTY + \"existingNode\");\n }\n\n const newNode = existingNode.addBefore(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(existingNode.parent);\n }\n\n return newNode;\n }\n\n public addParentNode(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n if (!existingNode) {\n throw Error(PARAM_IS_EMPTY + \"existingNode\");\n }\n\n const newNode = existingNode.addParent(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(newNode.parent);\n }\n\n return newNode;\n }\n\n public removeNode(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n if (!node.parent) {\n throw Error(\"Node has no parent\");\n }\n\n this.selectNodeHandler.removeFromSelection(node, true); // including children\n\n const parent = node.parent;\n node.remove();\n this._refreshElements(parent);\n\n return this.element;\n }\n\n public appendNode(newNodeInfo: NodeData, parentNodeParam?: Node): Node {\n const parentNode = parentNodeParam || this.tree;\n\n const node = parentNode.append(newNodeInfo);\n\n this._refreshElements(parentNode);\n\n return node;\n }\n\n public prependNode(newNodeInfo: NodeData, parentNodeParam?: Node): Node {\n const parentNode = parentNodeParam ?? this.tree;\n\n const node = parentNode.prepend(newNodeInfo);\n\n this._refreshElements(parentNode);\n\n return node;\n }\n\n public updateNode(node: Node, data: NodeData): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const idIsChanged =\n typeof data === \"object\" && data.id && data.id !== node.id;\n\n if (idIsChanged) {\n this.tree.removeNodeFromIndex(node);\n }\n\n node.setData(data);\n\n if (idIsChanged) {\n this.tree.addNodeToIndex(node);\n }\n\n if (\n typeof data === \"object\" &&\n data[\"children\"] &&\n data[\"children\"] instanceof Array\n ) {\n node.removeChildren();\n\n if (data.children.length) {\n node.loadFromData(data.children as Node[]);\n }\n }\n\n this._refreshElements(node);\n\n return this.element;\n }\n\n private isSelectedNodeInSubtree(subtree: Node): boolean {\n const selectedNode = this.getSelectedNode();\n\n if (!selectedNode) {\n return false;\n } else {\n return subtree === selectedNode || subtree.isParentOf(selectedNode);\n }\n }\n\n public moveNode(node: Node, targetNode: Node, position: string): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n if (!targetNode) {\n throw Error(PARAM_IS_EMPTY + \"targetNode\");\n }\n\n const positionIndex = getPosition(position);\n\n if (positionIndex !== undefined) {\n this.tree.moveNode(node, targetNode, positionIndex);\n this._refreshElements(null);\n }\n\n return this.element;\n }\n\n public getStateFromStorage(): SavedState | null {\n return this.saveStateHandler.getStateFromStorage();\n }\n\n public addToSelection(node: Node, mustSetFocus?: boolean): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this.selectNodeHandler.addToSelection(node);\n\n this._getNodeElementForNode(node).select(\n mustSetFocus === undefined ? true : mustSetFocus\n );\n\n this.saveState();\n\n return this.element;\n }\n\n public getSelectedNodes(): Node[] {\n return this.selectNodeHandler.getSelectedNodes();\n }\n\n public isNodeSelected(node: Node): boolean {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n return this.selectNodeHandler.isNodeSelected(node);\n }\n\n public removeFromSelection(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this.selectNodeHandler.removeFromSelection(node);\n\n this._getNodeElementForNode(node).deselect();\n this.saveState();\n\n return this.element;\n }\n\n public scrollToNode(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const nodeOffset = jQuery(node.element).offset();\n const nodeTop = nodeOffset ? nodeOffset.top : 0;\n\n const treeOffset = this.$el.offset();\n const treeTop = treeOffset ? treeOffset.top : 0;\n\n const top = nodeTop - treeTop;\n\n this.scrollHandler.scrollToY(top);\n\n return this.element;\n }\n\n public getState(): SavedState | null {\n return this.saveStateHandler.getState();\n }\n\n public setState(state: SavedState): JQuery {\n this.saveStateHandler.setInitialState(state);\n this._refreshElements(null);\n\n return this.element;\n }\n\n public setOption(option: string, value: unknown): JQuery {\n (this.options as unknown as Record<string, unknown>)[option] = value;\n return this.element;\n }\n\n public moveDown(): JQuery {\n const selectedNode = this.getSelectedNode();\n if (selectedNode) {\n this.keyHandler.moveDown(selectedNode);\n }\n\n return this.element;\n }\n\n public moveUp(): JQuery {\n const selectedNode = this.getSelectedNode();\n if (selectedNode) {\n this.keyHandler.moveUp(selectedNode);\n }\n\n return this.element;\n }\n\n public getVersion(): string {\n return __version__;\n }\n\n public _triggerEvent(\n eventName: string,\n values?: Record<string, unknown>\n ): JQuery.Event {\n const event = jQuery.Event(eventName, values);\n this.element.trigger(event);\n return event;\n }\n\n public _openNode(\n node: Node,\n slide = true,\n onFinished: OnFinishOpenNode | null\n ): void {\n const doOpenNode = (\n _node: Node,\n _slide: boolean,\n _onFinished: OnFinishOpenNode | null\n ): void => {\n const folderElement = new FolderElement(_node, this);\n folderElement.open(\n _onFinished,\n _slide,\n this.options.animationSpeed\n );\n };\n\n if (node.isFolder() || node.isEmptyFolder) {\n if (node.load_on_demand) {\n this.loadFolderOnDemand(node, slide, onFinished);\n } else {\n let parent = node.parent;\n\n while (parent) {\n // nb: do not open root element\n if (parent.parent) {\n doOpenNode(parent, false, null);\n }\n parent = parent.parent;\n }\n\n doOpenNode(node, slide, onFinished);\n this.saveState();\n }\n }\n }\n\n /*\n Redraw the tree or part of the tree.\n from_node: redraw this subtree\n */\n public _refreshElements(fromNode: Node | null): void {\n const mustSetFocus = this.selectNodeHandler.isFocusOnTree();\n const mustSelect = fromNode\n ? this.isSelectedNodeInSubtree(fromNode)\n : false;\n\n this.renderer.render(fromNode);\n\n if (mustSelect) {\n this.selectCurrentNode(mustSetFocus);\n }\n\n this._triggerEvent(\"tree.refresh\");\n }\n\n public _getNodeElementForNode(node: Node): NodeElement {\n if (node.isFolder()) {\n return new FolderElement(node, this);\n } else {\n return new NodeElement(node, this);\n }\n }\n\n public _getNodeElement($element: JQuery<HTMLElement>): NodeElement | null {\n const node = this.getNode($element);\n if (node) {\n return this._getNodeElementForNode(node);\n } else {\n return null;\n }\n }\n\n public _containsElement(element: HTMLElement): boolean {\n const node = this.getNode(jQuery(element));\n\n return node != null && node.tree === this.tree;\n }\n\n public _getScrollLeft(): number {\n return this.scrollHandler.getScrollLeft();\n }\n\n public init(): void {\n super.init();\n\n this.element = this.$el;\n this.isInitialized = false;\n\n this.options.rtl = this.getRtlOption();\n\n if (this.options.closedIcon == null) {\n this.options.closedIcon = this.getDefaultClosedIcon();\n }\n\n this.renderer = new ElementsRenderer(this);\n this.dataLoader = new DataLoader(this);\n this.saveStateHandler = new SaveStateHandler(this);\n this.selectNodeHandler = new SelectNodeHandler(this);\n this.dndHandler = new DragAndDropHandler(this);\n this.scrollHandler = new ScrollHandler(this);\n this.keyHandler = new KeyHandler(this);\n\n this.initData();\n\n this.element.on(\"click\", this.handleClick);\n this.element.on(\"dblclick\", this.handleDblclick);\n\n if (this.options.useContextMenu) {\n this.element.on(\"contextmenu\", this.handleContextmenu);\n }\n }\n\n public deinit(): void {\n this.element.empty();\n this.element.off();\n\n this.keyHandler.deinit();\n\n this.tree = new Node({}, true);\n\n super.deinit();\n }\n\n protected mouseCapture(positionInfo: PositionInfo): boolean | null {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseCapture(positionInfo);\n } else {\n return false;\n }\n }\n\n protected mouseStart(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseStart(positionInfo);\n } else {\n return false;\n }\n }\n\n protected mouseDrag(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n const result = this.dndHandler.mouseDrag(positionInfo);\n\n this.scrollHandler.checkScrolling();\n return result;\n } else {\n return false;\n }\n }\n\n protected mouseStop(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseStop(positionInfo);\n } else {\n return false;\n }\n }\n\n protected getMouseDelay(): number {\n return this.options.startDndDelay ?? 0;\n }\n\n private initData(): void {\n if (this.options.data) {\n this.doLoadData(this.options.data, null);\n } else {\n const dataUrl = this.getDataUrlInfo(null);\n\n if (dataUrl) {\n this.doLoadDataFromUrl(null, null, null);\n } else {\n this.doLoadData([], null);\n }\n }\n }\n\n private getDataUrlInfo(node: Node | null): JQuery.AjaxSettings | null {\n const dataUrl =\n this.options.dataUrl || (this.element.data(\"url\") as string | null);\n\n const getUrlFromString = (url: string): JQuery.AjaxSettings => {\n const urlInfo: JQuery.AjaxSettings = { url };\n\n setUrlInfoData(urlInfo);\n\n return urlInfo;\n };\n\n const setUrlInfoData = (urlInfo: JQuery.AjaxSettings): void => {\n if (node?.id) {\n // Load on demand of a subtree; add node parameter\n const data = { node: node.id };\n urlInfo[\"data\"] = data;\n } else {\n // Add selected_node parameter\n const selectedNodeId = this.getNodeIdToBeSelected();\n if (selectedNodeId) {\n const data = { selected_node: selectedNodeId };\n urlInfo[\"data\"] = data;\n }\n }\n };\n\n if (typeof dataUrl === \"function\") {\n return dataUrl(node);\n } else if (typeof dataUrl === \"string\") {\n return getUrlFromString(dataUrl);\n } else if (dataUrl && typeof dataUrl === \"object\") {\n setUrlInfoData(dataUrl);\n return dataUrl;\n } else {\n return null;\n }\n }\n\n private getNodeIdToBeSelected(): NodeId | null {\n if (this.options.saveState) {\n return this.saveStateHandler.getNodeIdToBeSelected();\n } else {\n return null;\n }\n }\n\n private initTree(data: NodeData[]): void {\n const doInit = (): void => {\n if (!this.isInitialized) {\n this.isInitialized = true;\n this._triggerEvent(\"tree.init\");\n }\n };\n\n if (!this.options.nodeClass) {\n return;\n }\n\n this.tree = new this.options.nodeClass(\n null,\n true,\n this.options.nodeClass\n );\n\n this.selectNodeHandler.clear();\n\n this.tree.loadFromData(data);\n\n const mustLoadOnDemand = this.setInitialState();\n\n this._refreshElements(null);\n\n if (!mustLoadOnDemand) {\n doInit();\n } else {\n // Load data on demand and then init the tree\n this.setInitialStateOnDemand(doInit);\n }\n }\n\n // Set initial state, either by restoring the state or auto-opening nodes\n // result: must load nodes on demand?\n private setInitialState(): boolean {\n const restoreState = (): [boolean, boolean] => {\n // result: is state restored, must load on demand?\n if (!this.options.saveState) {\n return [false, false];\n } else {\n const state = this.saveStateHandler.getStateFromStorage();\n\n if (!state) {\n return [false, false];\n } else {\n const mustLoadOnDemand =\n this.saveStateHandler.setInitialState(state);\n\n // return true: the state is restored\n return [true, mustLoadOnDemand];\n }\n }\n };\n\n const autoOpenNodes = (): boolean => {\n // result: must load on demand?\n if (this.options.autoOpen === false) {\n return false;\n }\n\n const maxLevel = this.getAutoOpenMaxLevel();\n let mustLoadOnDemand = false;\n\n this.tree.iterate((node: Node, level: number) => {\n if (node.load_on_demand) {\n mustLoadOnDemand = true;\n return false;\n } else if (!node.hasChildren()) {\n return false;\n } else {\n node.is_open = true;\n return level !== maxLevel;\n }\n });\n\n return mustLoadOnDemand;\n };\n\n let [isRestored, mustLoadOnDemand] = restoreState(); // eslint-disable-line prefer-const\n\n if (!isRestored) {\n mustLoadOnDemand = autoOpenNodes();\n }\n\n return mustLoadOnDemand;\n }\n\n // Set the initial state for nodes that are loaded on demand\n // Call cb_finished when done\n private setInitialStateOnDemand(cbFinished: () => void): void {\n const restoreState = (): boolean => {\n if (!this.options.saveState) {\n return false;\n } else {\n const state = this.saveStateHandler.getStateFromStorage();\n\n if (!state) {\n return false;\n } else {\n this.saveStateHandler.setInitialStateOnDemand(\n state,\n cbFinished\n );\n\n return true;\n }\n }\n };\n\n const autoOpenNodes = (): void => {\n const maxLevel = this.getAutoOpenMaxLevel();\n let loadingCount = 0;\n\n const loadAndOpenNode = (node: Node): void => {\n loadingCount += 1;\n this._openNode(node, false, () => {\n loadingCount -= 1;\n openNodes();\n });\n };\n\n const openNodes = (): void => {\n this.tree.iterate((node: Node, level: number) => {\n if (node.load_on_demand) {\n if (!node.is_loading) {\n loadAndOpenNode(node);\n }\n\n return false;\n } else {\n this._openNode(node, false, null);\n\n return level !== maxLevel;\n }\n });\n\n if (loadingCount === 0) {\n cbFinished();\n }\n };\n\n openNodes();\n };\n\n if (!restoreState()) {\n autoOpenNodes();\n }\n }\n\n private getAutoOpenMaxLevel(): number {\n if (this.options.autoOpen === true) {\n return -1;\n } else if (typeof this.options.autoOpen === \"number\") {\n return this.options.autoOpen;\n } else if (typeof this.options.autoOpen === \"string\") {\n return parseInt(this.options.autoOpen, 10);\n } else {\n return 0;\n }\n }\n\n private handleClick = (\n e: JQuery.ClickEvent<HTMLElement, any, HTMLElement, HTMLElement>\n ): void => {\n const clickTarget = this.getClickTarget(e.target);\n\n if (clickTarget) {\n if (clickTarget.type === \"button\") {\n this.toggle(clickTarget.node, this.options.slide);\n\n e.preventDefault();\n e.stopPropagation();\n } else if (clickTarget.type === \"label\") {\n const node = clickTarget.node;\n const event = this._triggerEvent(\"tree.click\", {\n node,\n click_event: e,\n });\n\n if (!event.isDefaultPrevented()) {\n this.doSelectNode(node);\n }\n }\n }\n };\n\n private handleDblclick = (\n e: JQuery.DoubleClickEvent<HTMLElement, any, HTMLElement, HTMLElement>\n ): void => {\n const clickTarget = this.getClickTarget(e.target);\n\n if (clickTarget?.type === \"label\") {\n this._triggerEvent(\"tree.dblclick\", {\n node: clickTarget.node,\n click_event: e,\n });\n }\n };\n\n private getClickTarget(element: EventTarget): ClickTarget | null {\n const $target = jQuery(element);\n\n const $button = $target.closest(\".jqtree-toggler\");\n\n if ($button.length) {\n const node = this.getNode($button as JQuery<HTMLElement>);\n\n if (node) {\n return {\n type: \"button\",\n node,\n };\n }\n } else {\n const $el = $target.closest(\".jqtree-element\");\n if ($el.length) {\n const node = this.getNode($el as JQuery<HTMLElement>);\n if (node) {\n return {\n type: \"label\",\n node,\n };\n }\n }\n }\n\n return null;\n }\n\n private getNode($element: JQuery<HTMLElement>): null | Node {\n const $li = $element.closest(\"li.jqtree_common\");\n if ($li.length === 0) {\n return null;\n } else {\n return $li.data(\"node\") as Node;\n }\n }\n\n private handleContextmenu = (\n e: JQuery.ContextMenuEvent<HTMLElement, any, HTMLElement, HTMLElement>\n ) => {\n const $div = jQuery(e.target).closest(\"ul.jqtree-tree .jqtree-element\");\n if ($div.length) {\n const node = this.getNode($div);\n if (node) {\n e.preventDefault();\n e.stopPropagation();\n\n this._triggerEvent(\"tree.contextmenu\", {\n node,\n click_event: e,\n });\n return false;\n }\n }\n\n return null;\n };\n\n private saveState(): void {\n if (this.options.saveState) {\n this.saveStateHandler.saveState();\n }\n }\n\n private selectCurrentNode(mustSetFocus: boolean): void {\n const node = this.getSelectedNode();\n if (node) {\n const nodeElement = this._getNodeElementForNode(node);\n if (nodeElement) {\n nodeElement.select(mustSetFocus);\n }\n }\n }\n\n private deselectCurrentNode(): void {\n const node = this.getSelectedNode();\n if (node) {\n this.removeFromSelection(node);\n }\n }\n\n private getDefaultClosedIcon(): string {\n if (this.options.rtl) {\n // triangle to the left\n return \"◀\";\n } else {\n // triangle to the right\n return \"►\";\n }\n }\n\n private getRtlOption(): boolean {\n if (this.options.rtl != null) {\n return this.options.rtl;\n } else {\n const dataRtl = this.element.data(\"rtl\") as unknown;\n\n if (\n dataRtl !== null &&\n dataRtl !== false &&\n dataRtl !== undefined\n ) {\n return true;\n } else {\n return false;\n }\n }\n }\n\n private doSelectNode(\n node: Node | null,\n optionsParam?: SelectNodeOptions\n ): void {\n const saveState = (): void => {\n if (this.options.saveState) {\n this.saveStateHandler.saveState();\n }\n };\n\n if (!node) {\n // Called with empty node -> deselect current node\n this.deselectCurrentNode();\n saveState();\n return;\n }\n const defaultOptions = { mustSetFocus: true, mustToggle: true };\n const selectOptions = { ...defaultOptions, ...(optionsParam || {}) };\n\n const canSelect = (): boolean => {\n if (this.options.onCanSelectNode) {\n return (\n this.options.selectable === true &&\n this.options.onCanSelectNode(node)\n );\n } else {\n return this.options.selectable === true;\n }\n };\n\n const openParents = (): void => {\n const parent = node.parent;\n\n if (parent && parent.parent && !parent.is_open) {\n this.openNode(parent, false);\n }\n };\n\n if (!canSelect()) {\n return;\n }\n\n if (this.selectNodeHandler.isNodeSelected(node)) {\n if (selectOptions.mustToggle) {\n this.deselectCurrentNode();\n this._triggerEvent(\"tree.select\", {\n node: null,\n previous_node: node,\n });\n }\n } else {\n const deselectedNode = this.getSelectedNode() || null;\n this.deselectCurrentNode();\n this.addToSelection(node, selectOptions.mustSetFocus);\n\n this._triggerEvent(\"tree.select\", {\n node,\n deselected_node: deselectedNode,\n });\n openParents();\n }\n\n saveState();\n }\n\n private doLoadData(data: NodeData[] | null, parentNode: Node | null): void {\n if (data) {\n if (parentNode) {\n this.deselectNodes(parentNode);\n this.loadSubtree(data, parentNode);\n } else {\n this.initTree(data);\n }\n\n if (this.isDragging()) {\n this.dndHandler.refresh();\n }\n }\n\n this._triggerEvent(\"tree.load_data\", {\n tree_data: data,\n parent_node: parentNode,\n });\n }\n\n private deselectNodes(parentNode: Node): void {\n const selectedNodesUnderParent =\n this.selectNodeHandler.getSelectedNodesUnder(parentNode);\n for (const n of selectedNodesUnderParent) {\n this.selectNodeHandler.removeFromSelection(n);\n }\n }\n\n private loadSubtree(data: NodeData[], parentNode: Node): void {\n parentNode.loadFromData(data);\n\n parentNode.load_on_demand = false;\n parentNode.is_loading = false;\n\n this._refreshElements(parentNode);\n }\n\n private doLoadDataFromUrl(\n urlInfoParam: string | JQuery.AjaxSettings | null,\n parentNode: Node | null,\n onFinished: HandleFinishedLoading | null\n ): void {\n const urlInfo = urlInfoParam || this.getDataUrlInfo(parentNode);\n\n this.dataLoader.loadFromUrl(urlInfo, parentNode, onFinished);\n }\n\n private loadFolderOnDemand(\n node: Node,\n slide = true,\n onFinished: OnFinishOpenNode | null\n ): void {\n node.is_loading = true;\n\n this.doLoadDataFromUrl(null, node, () => {\n this._openNode(node, slide, onFinished);\n });\n }\n}\n\nSimpleWidget.register(JqTreeWidget, \"tree\");\n"],"names":["version","Position","positionNames","before","Before","after","After","inside","Inside","none","None","getPositionName","position","name","Object","prototype","hasOwnProperty","call","getPosition","isNodeRecordWithChildren","data","_typeof","Array","Node","o","arguments","length","undefined","isRoot","nodeClass","_classCallCheck","_defineProperty","isEmptyFolder","load_on_demand","setData","children","parent","idMapping","Map","tree","_createClass","key","value","loadFromData","removeChildren","_iterator","_createForOfIteratorHelper","_step","s","n","done","node","createNode","addChild","err","e","f","push","setParent","addChildAtPosition","index","splice","removeChild","doRemoveChild","getChildIndex","indexOf","hasChildren","isFolder","iterate","callback","_iterate","level","_iterator2","_step2","child","result","moveNode","movedNode","targetNode","isParentOf","getData","includeParent","getDataFromNodes","nodes","map","tmpNode","k","v","getNodeByName","getNodeByCallback","getNodeByNameMustExist","concat","addAfter","nodeInfo","childIndex","addBefore","addParent","newParent","originalParent","_iterator3","_step3","remove","append","prepend","getLevel","getNodeById","nodeId","get","addNodeToIndex","id","set","removeNodeFromIndex","_this","_this$tree","getPreviousSibling","previousIndex","getNextSibling","nextIndex","getNodesByProperty","filter","getNextNode","includeChildren","nextSibling","getNextVisibleNode","is_open","getPreviousNode","previousSibling","getParent","getLastChild","getPreviousVisibleNode","lastChild","initFromData","_this2","addNode","nodeData","addChildren","childrenData","_iterator4","_step4","_this$tree2","_this$tree3","getNodeClass","_this$tree4","DragAndDropHandler","treeWidget","hoveredArea","hitAreas","isDragging","currentItem","positionInfo","mouseCapture","$element","jQuery","target","mustCaptureElement","options","onIsMoveHandle","nodeElement","_getNodeElement","onCanMove","mouseStart","_this$treeWidget$opti","pageX","pageY","refresh","offset","left","top","dragElement","DragElement","element","autoEscape","addClass","mouseDrag","move","area","findHoveredArea","canMoveToArea","stopOpenFolderTimer","mustOpenFolderTimer","startOpenFolderTimer","updateDropHint","removeDropHint","onDragMove","originalEvent","mouseStop","moveItem","clear","removeHover","removeHitAreas","removeClass","onDragStop","generateHitAreas","_getNodeElementForNode","hitAreasGenerator","HitAreasGenerator","getTreeDimensions","bottom","generate","is","onCanMoveTo","positionName","previousGhost","x","y","dimensions","right","low","high","mid","addDropHint","folder","openFolder","_openNode","slide","openFolderDelay","openFolderTimer","window","setTimeout","clearTimeout","previousParent","doMove","empty","_refreshElements","event","_triggerEvent","move_info","moved_node","target_node","previous_parent","do_move","original_event","isDefaultPrevented","el","width","height","_getScrollLeft","VisibleNodeIterator","_this3","isFirstNode","_iterateNode","nextNode","mustIterateInside","handleFirstNode","handleNode","handleOpenFolder","handleClosedFolder","childrenLength","forEach","_","i","nextChild","handleAfterOpenFolder","_VisibleNodeIterator","_inherits","_super","_createSuper","currentNode","treeBottom","_this4","_assertThisInitialized","positions","lastTop","previousTop","group","generateHitAreasForGroup","addPosition","getTop","positionsInGroup","positionCount","Math","min","areaHeight","round","areaTop","nodeName","offsetX","offsetY","$tree","text","html","css","isInt","isFunction","getBoolString","ElementsRenderer","openedIconElement","createButtonElement","openedIcon","closedIconElement","closedIcon","render","fromNode","renderFromNode","renderFromRoot","createDomElements","$previousLi","li","createLi","attachNodeData","isRootNode","ul","createUl","appendChild","classString","role","rtl","dragAndDrop","document","createElement","className","setAttribute","isSelected","Boolean","selectNodeHandler","isNodeSelected","mustShowFolder","showEmptyFolder","createFolderLi","createNodeLi","onCreateLi","setTreeItemAriaAttributes","buttonClasses","getButtonClasses","folderClasses","getFolderClasses","iconElement","div","buttonLink","cloneNode","buttonLeft","titleSpan","createTitleSpan","liClasses","join","classes","tabIndex","textContent","innerHTML","is_loading","createTextNode","DataLoader","loadFromUrl","urlInfo","parentNode","onFinished","$el","getDomElement","addLoadingClass","notifyLoading","stopLoading","removeLoadingClass","handleSuccess","loadData","parseData","handleError","jqXHR","onLoadFailed","submitRequest","isLoading","onLoading","urlInfoInput","_ajaxSettings$method","url","ajaxSettings","_objectSpread","method","cache","dataType","success","error","toUpperCase","ajax","dataFilter","getParsedData","JSON","parse","parsedData","KeyHandler","canHandleKeyboard","selectedNode","getSelectedNode","which","DOWN","moveDown","UP","moveUp","RIGHT","moveRight","LEFT","moveLeft","keyboardSupport","on","handleKeyDown","deinit","off","selectNode","openNode","closeNode","scrollHandler","isScrolledIntoView","find","scrollToNode","isFocusOnTree","register","widgetClass","widgetName","getDataKey","getWidgetData","dataKey","widget","SimpleWidget","createWidget","existingWidget","simpleWidgetClass","init","destroyWidget","destroy","removeData","callFunction","functionName","args","simpleWidget","widgetFunction","apply","fn","argument1","_len","_key","defaults","constructor","getPositionInfoFromMouseEvent","getPositionInfoFromTouch","touch","MouseWidget","_SimpleWidget","button","handleMouseDown","cancelable","preventDefault","handleMouseMove","handleMouseUp","touches","changedTouches","addEventListener","mouseDown","passive","touchStart","isMouseStarted","mouseDelayTimer","isMouseDelayMet","mouseDownInfo","removeEventListener","removeMouseMoveEventListeners","handleStartMouse","mouseMove","touchMove","mouseUp","touchEnd","mouseDelay","getMouseDelay","startMouseDelayTimer","SaveStateHandler","saveState","state","stringify","getState","onSetStateFromStorage","supportsLocalStorage","localStorage","setItem","getKeyName","getStateFromStorage","jsonData","loadFromStorage","parseState","getOpenNodeIds","openNodes","getSelectedNodeIds","selectedNodeIds","getSelectedNodes","open_nodes","selected_node","setInitialState","mustLoadOnDemand","openInitialNodes","resetSelection","selectInitialNodes","setInitialStateOnDemand","cbFinished","doSetInitialStateOnDemand","getNodeIdToBeSelected","onGetStateFromStorage","getItem","nodeIds","selectCount","addToSelection","selectedNodes","removeFromSelection","nodeIdsParam","loadingCount","newNodesIds","loadAndOpenNode","testSupport","sessionStorage","removeItem","_supportsLocalStorage","ScrollHandler","isInitialized","checkScrolling","ensureInit","checkVerticalScrolling","checkHorizontalScrolling","scrollToY","$scrollParent","scrollTop","treeTop","elementBottom","viewBottom","elementTop","viewTop","elHeight","originalTop","scrollParentTop","windowHeight","getScrollLeft","scrollLeft","initScrollParent","_$scrollParent$","getParentWithOverflow","cssAttributes","hasOverFlow","_i","_cssAttributes","attr","overflowValue","parents","setDocumentAsScrollParent","tagName","handleVerticalScrollingWithScrollParent","scrollParent","distanceBottom","offsetHeight","refreshHitAreas","handleVerticalScrollingWithDocument","distanceTop","dndHandler","handleHorizontalScrollingWithParent","handleHorizontalScrollingWithDocument","scrollParentOffset","canScrollRight","clientWidth","scrollWidth","canScrollLeft","rightEdge","leftEdge","isNearRightEdge","isNearLeftEdge","max","$document","windowWidth","SelectNodeHandler","Set","selectedSingleNode","getSelectedNodesUnder","has","add","activeElement","_containsElement","NodeElement","mustShowBorderDropHint","BorderDropHint","GhostDropHint","select","mustSetFocus","$li","getLi","$span","getSpan","trigger","deselect","removeAttr","getUl","FolderElement","_NodeElement","open","animationSpeed","$button","getButton","buttonEl","renderer","icon","doOpen","$titleSpan","slideDown","show","close","doClose","slideUp","hide","$div","elWidth","outerHeight","$hint","$ghost","moveAfter","moveBefore","moveInsideOpenFolder","moveInside","_this$node$children$","childElement","NODE_PARAM_IS_EMPTY","PARAM_IS_EMPTY","JqTreeWidget","_MouseWidget","clickTarget","getClickTarget","type","toggle","stopPropagation","click_event","doSelectNode","closest","getNode","slideParam","Error","getTree","optionsParam","toJson","doLoadData","loadDataFromUrl","param1","param2","param3","doLoadDataFromUrl","reload","getNodeByHtmlElement","parseParams","_this2$options$slide","_parseParams","_parseParams2","_slicedToArray","addNodeAfter","newNodeInfo","existingNode","newNode","addNodeBefore","addParentNode","removeNode","appendNode","parentNodeParam","prependNode","updateNode","idIsChanged","isSelectedNodeInSubtree","subtree","positionIndex","saveStateHandler","nodeOffset","nodeTop","treeOffset","setState","setOption","option","keyHandler","getVersion","__version__","eventName","values","Event","doOpenNode","_node","_slide","_onFinished","folderElement","loadFolderOnDemand","mustSelect","selectCurrentNode","_get","_getPrototypeOf","getRtlOption","getDefaultClosedIcon","dataLoader","initData","handleClick","handleDblclick","useContextMenu","handleContextmenu","_this$options$startDn","startDndDelay","dataUrl","getDataUrlInfo","getUrlFromString","setUrlInfoData","selectedNodeId","initTree","_this5","doInit","_this6","restoreState","autoOpenNodes","autoOpen","maxLevel","getAutoOpenMaxLevel","_restoreState","_restoreState2","isRestored","_this7","parseInt","$target","deselectCurrentNode","dataRtl","_this8","defaultOptions","mustToggle","selectOptions","canSelect","onCanSelectNode","selectable","openParents","previous_node","deselectedNode","deselected_node","deselectNodes","loadSubtree","tree_data","parent_node","selectedNodesUnderParent","urlInfoParam","_this9"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tree.jquery.debug.js","sources":["src/version.ts","src/node.ts","src/dragAndDropHandler.ts","src/util.ts","src/elementsRenderer.ts","src/dataLoader.ts","src/keyHandler.ts","src/simple.widget.ts","src/mouse.widget.ts","src/saveStateHandler.ts","src/scrollHandler.ts","src/selectNodeHandler.ts","src/nodeElement.ts","src/tree.jquery.ts"],"sourcesContent":["const version = \"1.7.3\";\n\nexport default version;\n","interface NodeRecordWithChildren extends NodeRecord {\n children: NodeData[];\n}\n\nexport enum Position {\n Before = 1,\n After,\n Inside,\n None,\n}\n\nconst positionNames: Record<string, Position> = {\n before: Position.Before,\n after: Position.After,\n inside: Position.Inside,\n none: Position.None,\n};\n\ntype IterateCallback = (node: Node, level: number) => boolean;\n\nexport const getPositionName = (position: Position): string => {\n for (const name in positionNames) {\n if (Object.prototype.hasOwnProperty.call(positionNames, name)) {\n if (positionNames[name] === position) {\n return name;\n }\n }\n }\n\n return \"\";\n};\n\nexport const getPosition = (name: string): Position | undefined =>\n positionNames[name];\n\nconst isNodeRecordWithChildren = (\n data: NodeData\n): data is NodeRecordWithChildren =>\n typeof data === \"object\" &&\n \"children\" in data &&\n data[\"children\"] instanceof Array;\n\nexport class Node implements INode {\n public id?: NodeId;\n public name: string;\n public children: Node[];\n public parent: Node | null;\n public idMapping: Map<NodeId, Node>;\n public tree?: Node;\n public nodeClass?: typeof Node;\n public load_on_demand: boolean;\n public is_open: boolean;\n public element: HTMLElement;\n public is_loading: boolean;\n public isEmptyFolder: boolean;\n\n [key: string]: unknown;\n\n constructor(o: NodeData | null = null, isRoot = false, nodeClass = Node) {\n this.name = \"\";\n this.isEmptyFolder = false;\n this.load_on_demand = false;\n\n this.setData(o);\n\n this.children = [];\n this.parent = null;\n\n if (isRoot) {\n this.idMapping = new Map<NodeId, Node>();\n this.tree = this;\n this.nodeClass = nodeClass;\n }\n }\n\n /*\n Set the data of this node.\n\n setData(string): set the name of the node\n setdata(object): set attributes of the node\n\n Examples:\n setdata('node1')\n\n setData({ name: 'node1', id: 1});\n\n setData({ name: 'node2', id: 2, color: 'green'});\n\n * This is an internal function; it is not in the docs\n * Does not remove existing node values\n */\n public setData(o: NodeData | null): void {\n if (!o) {\n return;\n } else if (typeof o === \"string\") {\n this.name = o;\n } else if (typeof o === \"object\") {\n for (const key in o) {\n if (Object.prototype.hasOwnProperty.call(o, key)) {\n const value = o[key];\n\n if (key === \"label\" || key === \"name\") {\n // You can use the 'label' key instead of 'name'; this is a legacy feature\n if (typeof value === \"string\") {\n this.name = value;\n }\n } else if (key !== \"children\" && key !== \"parent\") {\n // You can't update the children or the parent using this function\n this[key] = value;\n }\n }\n }\n }\n }\n\n /*\n Create tree from data.\n\n Structure of data is:\n [\n {\n name: 'node1',\n children: [\n { name: 'child1' },\n { name: 'child2' }\n ]\n },\n {\n name: 'node2'\n }\n ]\n */\n public loadFromData(data: NodeData[]): Node {\n this.removeChildren();\n\n for (const o of data) {\n const node = this.createNode(o);\n this.addChild(node);\n\n if (isNodeRecordWithChildren(o)) {\n if (o.children.length === 0) {\n node.isEmptyFolder = true;\n } else {\n node.loadFromData(o.children);\n }\n }\n }\n\n return this;\n }\n\n /*\n Add child.\n\n tree.addChild(\n new Node('child1')\n );\n */\n public addChild(node: Node): void {\n this.children.push(node);\n node.setParent(this);\n }\n\n /*\n Add child at position. Index starts at 0.\n\n tree.addChildAtPosition(\n new Node('abc'),\n 1\n );\n */\n public addChildAtPosition(node: Node, index: number): void {\n this.children.splice(index, 0, node);\n node.setParent(this);\n }\n\n /*\n Remove child. This also removes the children of the node.\n\n tree.removeChild(tree.children[0]);\n */\n public removeChild(node: Node): void {\n // remove children from the index\n node.removeChildren();\n\n this.doRemoveChild(node);\n }\n\n /*\n Get child index.\n\n var index = getChildIndex(node);\n */\n public getChildIndex(node: Node): number {\n return this.children.indexOf(node);\n }\n\n /*\n Does the tree have children?\n\n if (tree.hasChildren()) {\n //\n }\n */\n public hasChildren(): boolean {\n return this.children.length !== 0;\n }\n\n public isFolder(): boolean {\n return this.hasChildren() || this.load_on_demand;\n }\n\n /*\n Iterate over all the nodes in the tree.\n\n Calls callback with (node, level).\n\n The callback must return true to continue the iteration on current node.\n\n tree.iterate(\n function(node, level) {\n console.log(node.name);\n\n // stop iteration after level 2\n return (level <= 2);\n }\n );\n\n */\n public iterate(callback: IterateCallback): void {\n const _iterate = (node: Node, level: number): void => {\n if (node.children) {\n for (const child of node.children) {\n const result = callback(child, level);\n\n if (result && child.hasChildren()) {\n _iterate(child, level + 1);\n }\n }\n }\n };\n\n _iterate(this, 0);\n }\n\n /*\n Move node relative to another node.\n\n Argument position: Position.BEFORE, Position.AFTER or Position.Inside\n\n // move node1 after node2\n tree.moveNode(node1, node2, Position.AFTER);\n */\n public moveNode(\n movedNode: Node,\n targetNode: Node,\n position: Position\n ): boolean {\n if (!movedNode.parent || movedNode.isParentOf(targetNode)) {\n // - Node is parent of target node\n // - Or, parent is empty\n return false;\n } else {\n movedNode.parent.doRemoveChild(movedNode);\n\n switch (position) {\n case Position.After: {\n if (targetNode.parent) {\n targetNode.parent.addChildAtPosition(\n movedNode,\n targetNode.parent.getChildIndex(targetNode) + 1\n );\n return true;\n }\n return false;\n }\n\n case Position.Before: {\n if (targetNode.parent) {\n targetNode.parent.addChildAtPosition(\n movedNode,\n targetNode.parent.getChildIndex(targetNode)\n );\n return true;\n }\n return false;\n }\n\n case Position.Inside: {\n // move inside as first child\n targetNode.addChildAtPosition(movedNode, 0);\n return true;\n }\n\n default:\n return false;\n }\n }\n }\n\n /*\n Get the tree as data.\n */\n public getData(includeParent = false): NodeRecord[] {\n const getDataFromNodes = (nodes: Node[]): Record<string, unknown>[] => {\n return nodes.map((node) => {\n const tmpNode: Record<string, unknown> = {};\n\n for (const k in node) {\n if (\n [\n \"parent\",\n \"children\",\n \"element\",\n \"idMapping\",\n \"load_on_demand\",\n \"nodeClass\",\n \"tree\",\n \"isEmptyFolder\",\n ].indexOf(k) === -1 &&\n Object.prototype.hasOwnProperty.call(node, k)\n ) {\n const v = node[k];\n tmpNode[k] = v;\n }\n }\n\n if (node.hasChildren()) {\n tmpNode[\"children\"] = getDataFromNodes(node.children);\n }\n\n return tmpNode;\n });\n };\n\n if (includeParent) {\n return getDataFromNodes([this]);\n } else {\n return getDataFromNodes(this.children);\n }\n }\n\n public getNodeByName(name: string): Node | null {\n return this.getNodeByCallback((node: Node) => node.name === name);\n }\n\n public getNodeByNameMustExist(name: string): Node {\n const node = this.getNodeByCallback((n: Node) => n.name === name);\n\n if (!node) {\n throw `Node with name ${name} not found`;\n }\n\n return node;\n }\n\n public getNodeByCallback(callback: (node: Node) => boolean): Node | null {\n let result: Node | null = null;\n\n this.iterate((node: Node) => {\n if (result) {\n return false;\n } else if (callback(node)) {\n result = node;\n return false;\n } else {\n return true;\n }\n });\n\n return result;\n }\n\n public addAfter(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const node = this.createNode(nodeInfo);\n\n const childIndex = this.parent.getChildIndex(this);\n this.parent.addChildAtPosition(node, childIndex + 1);\n\n if (\n isNodeRecordWithChildren(nodeInfo) &&\n nodeInfo.children.length\n ) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n }\n\n public addBefore(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const node = this.createNode(nodeInfo);\n\n const childIndex = this.parent.getChildIndex(this);\n this.parent.addChildAtPosition(node, childIndex);\n\n if (\n isNodeRecordWithChildren(nodeInfo) &&\n nodeInfo.children.length\n ) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n }\n\n public addParent(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const newParent = this.createNode(nodeInfo);\n\n if (this.tree) {\n newParent.setParent(this.tree);\n }\n const originalParent = this.parent;\n\n for (const child of originalParent.children) {\n newParent.addChild(child);\n }\n\n originalParent.children = [];\n originalParent.addChild(newParent);\n return newParent;\n }\n }\n\n public remove(): void {\n if (this.parent) {\n this.parent.removeChild(this);\n this.parent = null;\n }\n }\n\n public append(nodeInfo: NodeData): Node {\n const node = this.createNode(nodeInfo);\n this.addChild(node);\n\n if (isNodeRecordWithChildren(nodeInfo) && nodeInfo.children.length) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n\n public prepend(nodeInfo: NodeData): Node {\n const node = this.createNode(nodeInfo);\n this.addChildAtPosition(node, 0);\n\n if (isNodeRecordWithChildren(nodeInfo) && nodeInfo.children.length) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n\n public isParentOf(node: Node): boolean {\n let parent = node.parent;\n\n while (parent) {\n if (parent === this) {\n return true;\n }\n\n parent = parent.parent;\n }\n\n return false;\n }\n\n public getLevel(): number {\n let level = 0;\n let node: Node = this; // eslint-disable-line @typescript-eslint/no-this-alias\n\n while (node.parent) {\n level += 1;\n node = node.parent;\n }\n\n return level;\n }\n\n public getNodeById(nodeId: NodeId): Node | null {\n return this.idMapping.get(nodeId) || null;\n }\n\n public addNodeToIndex(node: Node): void {\n if (node.id != null) {\n this.idMapping.set(node.id, node);\n }\n }\n\n public removeNodeFromIndex(node: Node): void {\n if (node.id != null) {\n this.idMapping.delete(node.id);\n }\n }\n\n public removeChildren(): void {\n this.iterate((child: Node) => {\n this.tree?.removeNodeFromIndex(child);\n return true;\n });\n\n this.children = [];\n }\n\n public getPreviousSibling(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousIndex = this.parent.getChildIndex(this) - 1;\n if (previousIndex >= 0) {\n return this.parent.children[previousIndex] || null;\n } else {\n return null;\n }\n }\n }\n\n public getNextSibling(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const nextIndex = this.parent.getChildIndex(this) + 1;\n if (nextIndex < this.parent.children.length) {\n return this.parent.children[nextIndex] || null;\n } else {\n return null;\n }\n }\n }\n\n public getNodesByProperty(key: string, value: unknown): Node[] {\n return this.filter((node: Node) => node[key] === value);\n }\n\n public filter(f: (node: Node) => boolean): Node[] {\n const result: Node[] = [];\n\n this.iterate((node: Node) => {\n if (f(node)) {\n result.push(node);\n }\n\n return true;\n });\n\n return result;\n }\n\n public getNextNode(includeChildren = true): Node | null {\n if (includeChildren && this.hasChildren()) {\n return this.children[0] || null;\n } else if (!this.parent) {\n return null;\n } else {\n const nextSibling = this.getNextSibling();\n\n if (nextSibling) {\n return nextSibling;\n } else {\n return this.parent.getNextNode(false);\n }\n }\n }\n\n public getNextVisibleNode(): Node | null {\n if (this.hasChildren() && this.is_open) {\n // First child\n return this.children[0] || null;\n } else {\n if (!this.parent) {\n return null;\n } else {\n const nextSibling = this.getNextSibling();\n if (nextSibling) {\n // Next sibling\n return nextSibling;\n } else {\n // Next node of parent\n return this.parent.getNextNode(false);\n }\n }\n }\n }\n\n public getPreviousNode(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousSibling = this.getPreviousSibling();\n\n if (!previousSibling) {\n return this.getParent();\n } else if (previousSibling.hasChildren()) {\n return previousSibling.getLastChild();\n } else {\n return previousSibling;\n }\n }\n }\n\n public getPreviousVisibleNode(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousSibling = this.getPreviousSibling();\n\n if (!previousSibling) {\n return this.getParent();\n } else if (\n !previousSibling.hasChildren() ||\n !previousSibling.is_open\n ) {\n // Previous sibling\n return previousSibling;\n } else {\n // Last child of previous sibling\n return previousSibling.getLastChild();\n }\n }\n }\n\n public getParent(): Node | null {\n // Return parent except if it is the root node\n if (!this.parent) {\n return null;\n } else if (!this.parent.parent) {\n // Root node -> null\n return null;\n } else {\n return this.parent;\n }\n }\n\n public getLastChild(): Node | null {\n if (!this.hasChildren()) {\n return null;\n } else {\n const lastChild = this.children[this.children.length - 1];\n\n if (!lastChild) {\n return null;\n }\n\n if (!(lastChild.hasChildren() && lastChild.is_open)) {\n return lastChild;\n } else {\n return lastChild?.getLastChild();\n }\n }\n }\n\n // Init Node from data without making it the root of the tree\n public initFromData(data: NodeData): void {\n const addNode = (nodeData: NodeData): void => {\n this.setData(nodeData);\n\n if (\n isNodeRecordWithChildren(nodeData) &&\n nodeData.children.length\n ) {\n addChildren(nodeData.children);\n }\n };\n\n const addChildren = (childrenData: NodeData[]): void => {\n for (const child of childrenData) {\n const node = this.createNode();\n node.initFromData(child);\n this.addChild(node);\n }\n };\n\n addNode(data);\n }\n\n private setParent(parent: Node): void {\n this.parent = parent;\n this.tree = parent.tree;\n this.tree?.addNodeToIndex(this);\n }\n\n private doRemoveChild(node: Node): void {\n this.children.splice(this.getChildIndex(node), 1);\n this.tree?.removeNodeFromIndex(node);\n }\n\n private getNodeClass(): typeof Node {\n return this.nodeClass || this?.tree?.nodeClass || Node;\n }\n\n private createNode(nodeData?: NodeData): Node {\n const nodeClass = this.getNodeClass();\n return new nodeClass(nodeData);\n }\n}\n","import { getPositionName, Node, Position } from \"./node\";\nimport { DropHint, HitArea, PositionInfo } from \"./types\";\nimport { NodeElement } from \"./nodeElement\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\ninterface Dimensions {\n left: number;\n top: number;\n right: number;\n bottom: number;\n}\n\nexport class DragAndDropHandler {\n public hitAreas: HitArea[];\n public isDragging: boolean;\n public currentItem: NodeElement | null;\n public hoveredArea: HitArea | null;\n public positionInfo: PositionInfo | null;\n\n private treeWidget: JqTreeWidget;\n private dragElement: DragElement | null;\n private previousGhost: DropHint | null;\n private openFolderTimer: number | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n this.hoveredArea = null;\n this.hitAreas = [];\n this.isDragging = false;\n this.currentItem = null;\n this.positionInfo = null;\n }\n\n public mouseCapture(positionInfo: PositionInfo): boolean | null {\n const $element = jQuery(positionInfo.target);\n\n if (!this.mustCaptureElement($element)) {\n return null;\n }\n\n if (\n this.treeWidget.options.onIsMoveHandle &&\n !this.treeWidget.options.onIsMoveHandle($element)\n ) {\n return null;\n }\n\n let nodeElement = this.treeWidget._getNodeElement($element);\n\n if (nodeElement && this.treeWidget.options.onCanMove) {\n if (!this.treeWidget.options.onCanMove(nodeElement.node)) {\n nodeElement = null;\n }\n }\n\n this.currentItem = nodeElement;\n return this.currentItem != null;\n }\n\n public mouseStart(positionInfo: PositionInfo): boolean {\n if (\n !this.currentItem ||\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return false;\n }\n\n this.refresh();\n\n const offset = jQuery(positionInfo.target).offset();\n const left = offset ? offset.left : 0;\n const top = offset ? offset.top : 0;\n\n const node = this.currentItem.node;\n\n this.dragElement = new DragElement(\n node.name,\n positionInfo.pageX - left,\n positionInfo.pageY - top,\n this.treeWidget.element,\n this.treeWidget.options.autoEscape ?? true\n );\n\n this.isDragging = true;\n this.positionInfo = positionInfo;\n this.currentItem.$element.addClass(\"jqtree-moving\");\n return true;\n }\n\n public mouseDrag(positionInfo: PositionInfo): boolean {\n if (\n !this.currentItem ||\n !this.dragElement ||\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return false;\n }\n\n this.dragElement.move(positionInfo.pageX, positionInfo.pageY);\n this.positionInfo = positionInfo;\n\n const area = this.findHoveredArea(\n positionInfo.pageX,\n positionInfo.pageY\n );\n\n if (area && this.canMoveToArea(area)) {\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) {\n if (this.treeWidget.options.onDragMove) {\n this.treeWidget.options.onDragMove(\n this.currentItem.node,\n positionInfo.originalEvent\n );\n }\n }\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.removeClass(\"jqtree-moving\");\n this.currentItem = null;\n }\n\n this.isDragging = false;\n this.positionInfo = null;\n\n if (!this.hoveredArea && currentItem) {\n if (this.treeWidget.options.onDragStop) {\n this.treeWidget.options.onDragStop(\n currentItem.node,\n positionInfo.originalEvent\n );\n }\n }\n\n return false;\n }\n\n public refresh(): void {\n this.removeHitAreas();\n\n if (this.currentItem) {\n this.generateHitAreas();\n\n this.currentItem = this.treeWidget._getNodeElementForNode(\n this.currentItem.node\n );\n\n if (this.isDragging) {\n this.currentItem.$element.addClass(\"jqtree-moving\");\n }\n }\n }\n\n private generateHitAreas(): void {\n if (!this.currentItem) {\n this.hitAreas = [];\n } else {\n const hitAreasGenerator = new HitAreasGenerator(\n this.treeWidget.tree,\n this.currentItem.node,\n this.getTreeDimensions().bottom\n );\n this.hitAreas = hitAreasGenerator.generate();\n }\n }\n\n private mustCaptureElement($element: JQuery<HTMLElement>): boolean {\n return !$element.is(\"input,select,textarea\");\n }\n\n private canMoveToArea(area: HitArea): boolean {\n if (!this.treeWidget.options.onCanMoveTo) {\n return true;\n }\n\n if (!this.currentItem) {\n return false;\n }\n\n const positionName = getPositionName(area.position);\n\n return this.treeWidget.options.onCanMoveTo(\n this.currentItem.node,\n area.node,\n positionName\n );\n }\n\n private removeHitAreas(): void {\n this.hitAreas = [];\n }\n\n private clear(): void {\n if (this.dragElement) {\n this.dragElement.remove();\n this.dragElement = null;\n }\n }\n\n private removeDropHint(): void {\n if (this.previousGhost) {\n this.previousGhost.remove();\n }\n }\n\n private removeHover(): void {\n this.hoveredArea = 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 let low = 0;\n let high = this.hitAreas.length;\n while (low < high) {\n const mid = (low + high) >> 1;\n const area = this.hitAreas[mid];\n\n if (!area) {\n return null;\n }\n\n if (y < area.top) {\n high = mid;\n } else if (y > area.bottom) {\n low = mid + 1;\n } else {\n return area;\n }\n }\n\n return null;\n }\n\n private mustOpenFolderTimer(area: HitArea): boolean {\n const node = area.node;\n\n return (\n node.isFolder() &&\n !node.is_open &&\n area.position === Position.Inside\n );\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.treeWidget._getNodeElementForNode(\n this.hoveredArea.node\n );\n this.previousGhost = nodeElement.addDropHint(this.hoveredArea.position);\n }\n\n private startOpenFolderTimer(folder: Node): void {\n const openFolder = (): void => {\n this.treeWidget._openNode(\n folder,\n this.treeWidget.options.slide,\n () => {\n this.refresh();\n this.updateDropHint();\n }\n );\n };\n\n this.stopOpenFolderTimer();\n\n const openFolderDelay = this.treeWidget.options.openFolderDelay;\n\n if (openFolderDelay !== false) {\n this.openFolderTimer = window.setTimeout(\n openFolder,\n openFolderDelay\n );\n }\n }\n\n private stopOpenFolderTimer(): void {\n if (this.openFolderTimer) {\n clearTimeout(this.openFolderTimer);\n this.openFolderTimer = null;\n }\n }\n\n private moveItem(positionInfo: PositionInfo): void {\n if (\n this.currentItem &&\n this.hoveredArea &&\n this.hoveredArea.position !== Position.None &&\n this.canMoveToArea(this.hoveredArea)\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 === Position.Inside) {\n this.hoveredArea.node.is_open = true;\n }\n\n const doMove = (): void => {\n this.treeWidget.tree.moveNode(movedNode, targetNode, position);\n this.treeWidget.element.empty();\n this.treeWidget._refreshElements(null);\n };\n\n const event = this.treeWidget._triggerEvent(\"tree.move\", {\n move_info: {\n moved_node: movedNode,\n target_node: targetNode,\n position: getPositionName(position),\n previous_parent: previousParent,\n do_move: doMove,\n original_event: positionInfo.originalEvent,\n },\n });\n\n if (!event.isDefaultPrevented()) {\n doMove();\n }\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 offset = this.treeWidget.element.offset();\n\n if (!offset) {\n return { left: 0, top: 0, right: 0, bottom: 0 };\n } else {\n const el = this.treeWidget.element;\n const width = el.width() || 0;\n const height = el.height() || 0;\n const left = offset.left + this.treeWidget._getScrollLeft();\n\n return {\n left,\n top: offset.top,\n right: left + width,\n bottom: offset.top + height + 16,\n };\n }\n }\n}\n\nabstract class VisibleNodeIterator {\n private tree: Node;\n\n constructor(tree: Node) {\n this.tree = tree;\n }\n\n protected iterate(): void {\n let isFirstNode = true;\n\n const _iterateNode = (node: Node, nextNode: Node | null): void => {\n let mustIterateInside =\n (node.is_open || !node.element) && node.hasChildren();\n\n let $element: JQuery<HTMLElement> | null = null;\n\n if (node.element) {\n $element = jQuery(node.element);\n\n if (!$element.is(\":visible\")) {\n return;\n }\n\n if (isFirstNode) {\n this.handleFirstNode(node);\n isFirstNode = false;\n }\n\n if (!node.hasChildren()) {\n this.handleNode(node, nextNode, $element);\n } else if (node.is_open) {\n if (!this.handleOpenFolder(node, $element)) {\n mustIterateInside = false;\n }\n } else {\n this.handleClosedFolder(node, nextNode, $element);\n }\n }\n\n if (mustIterateInside) {\n const childrenLength = node.children.length;\n node.children.forEach((_, i) => {\n const child = node.children[i];\n\n if (child) {\n if (i === childrenLength - 1) {\n _iterateNode(child, null);\n } else {\n const nextChild = node.children[i + 1];\n\n if (nextChild) {\n _iterateNode(child, nextChild);\n }\n }\n }\n });\n\n if (node.is_open && $element) {\n this.handleAfterOpenFolder(node, nextNode);\n }\n }\n };\n\n _iterateNode(this.tree, null);\n }\n\n protected abstract handleNode(\n node: Node,\n nextNode: Node | null,\n $element: JQuery\n ): void;\n\n /*\n override\n return\n - true: continue iterating\n - false: stop iterating\n */\n protected abstract handleOpenFolder(node: Node, $element: JQuery): boolean;\n\n protected abstract handleClosedFolder(\n node: Node,\n nextNode: Node | null,\n $element: JQuery\n ): void;\n\n protected abstract handleAfterOpenFolder(\n node: Node,\n nextNode: Node | null\n ): void;\n\n protected abstract handleFirstNode(node: Node): void;\n}\n\nexport class HitAreasGenerator extends VisibleNodeIterator {\n private currentNode: Node;\n private treeBottom: number;\n private positions: HitArea[];\n private lastTop: number;\n\n constructor(tree: Node, currentNode: Node, treeBottom: number) {\n super(tree);\n\n this.currentNode = currentNode;\n this.treeBottom = treeBottom;\n }\n\n public generate(): HitArea[] {\n this.positions = [];\n this.lastTop = 0;\n\n this.iterate();\n\n return this.generateHitAreas(this.positions);\n }\n\n protected generateHitAreas(positions: HitArea[]): HitArea[] {\n let previousTop = -1;\n let group = [];\n const hitAreas: HitArea[] = [];\n\n for (const position of positions) {\n if (position.top !== previousTop && group.length) {\n if (group.length) {\n this.generateHitAreasForGroup(\n hitAreas,\n group,\n previousTop,\n position.top\n );\n }\n\n previousTop = position.top;\n group = [];\n }\n\n group.push(position);\n }\n\n this.generateHitAreasForGroup(\n hitAreas,\n group,\n previousTop,\n this.treeBottom\n );\n\n return hitAreas;\n }\n\n protected handleOpenFolder(node: Node, $element: JQuery): boolean {\n if (node === this.currentNode) {\n // Cannot move inside current item\n // Stop iterating\n return false;\n }\n\n // Cannot move before current item\n if (node.children[0] !== this.currentNode) {\n this.addPosition(node, Position.Inside, this.getTop($element));\n }\n\n // Continue iterating\n return true;\n }\n\n protected handleClosedFolder(\n node: Node,\n nextNode: Node,\n $element: JQuery\n ): void {\n const top = this.getTop($element);\n\n if (node === this.currentNode) {\n // Cannot move after current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.Inside, top);\n\n // Cannot move before current item\n if (nextNode !== this.currentNode) {\n this.addPosition(node, Position.After, top);\n }\n }\n }\n\n protected handleFirstNode(node: Node): void {\n if (node !== this.currentNode) {\n this.addPosition(\n node,\n Position.Before,\n this.getTop(jQuery(node.element))\n );\n }\n }\n\n protected handleAfterOpenFolder(node: Node, nextNode: Node): void {\n if (node === this.currentNode || nextNode === this.currentNode) {\n // Cannot move before or after current item\n this.addPosition(node, Position.None, this.lastTop);\n } else {\n this.addPosition(node, Position.After, this.lastTop);\n }\n }\n\n protected handleNode(node: Node, nextNode: Node, $element: JQuery): void {\n const top = this.getTop($element);\n\n if (node === this.currentNode) {\n // Cannot move inside current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.Inside, top);\n }\n\n if (nextNode === this.currentNode || node === this.currentNode) {\n // Cannot move before or after current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.After, top);\n }\n }\n\n private getTop($element: JQuery<HTMLElement>): number {\n const offset = $element.offset();\n\n return offset ? offset.top : 0;\n }\n\n private addPosition(node: Node, position: number, top: number): void {\n const area = {\n top,\n bottom: 0,\n node,\n position,\n };\n\n this.positions.push(area);\n this.lastTop = top;\n }\n\n private generateHitAreasForGroup(\n hitAreas: HitArea[],\n positionsInGroup: HitArea[],\n top: number,\n bottom: number\n ): void {\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 let i = 0;\n while (i < positionCount) {\n const position = positionsInGroup[i];\n\n if (position) {\n hitAreas.push({\n top: areaTop,\n bottom: areaTop + areaHeight,\n node: position.node,\n position: position.position,\n });\n }\n\n areaTop += areaHeight;\n i += 1;\n }\n }\n}\n\nclass DragElement {\n private offsetX: number;\n private offsetY: number;\n private $element: JQuery;\n\n constructor(\n nodeName: string,\n offsetX: number,\n offsetY: number,\n $tree: JQuery,\n autoEscape: boolean\n ) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n this.$element = jQuery(\"<span>\").addClass(\n \"jqtree-title jqtree-dragging\"\n );\n\n if (autoEscape) {\n this.$element.text(nodeName);\n } else {\n this.$element.html(nodeName);\n }\n\n this.$element.css(\"position\", \"absolute\");\n $tree.append(this.$element);\n }\n\n public move(pageX: number, pageY: number): void {\n this.$element.offset({\n left: pageX - this.offsetX,\n top: pageY - this.offsetY,\n });\n }\n\n public remove(): void {\n this.$element.remove();\n }\n}\n","export const isInt = (n: unknown): boolean =>\n typeof n === \"number\" && n % 1 === 0;\n\nexport const isFunction = (v: unknown): boolean => typeof v === \"function\";\n\nexport const getBoolString = (value: unknown): string =>\n value ? \"true\" : \"false\";\n","import { getBoolString } from \"./util\";\nimport { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\ntype IconElement = string | HTMLElement | JQuery<HTMLElement>;\n\nexport default class ElementsRenderer {\n public openedIconElement?: HTMLElement | Text;\n public closedIconElement?: HTMLElement | Text;\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n this.openedIconElement = this.createButtonElement(\n treeWidget.options.openedIcon || \"+\",\n );\n this.closedIconElement = this.createButtonElement(\n treeWidget.options.closedIcon || \"-\",\n );\n }\n\n public render(fromNode: Node | null): void {\n if (fromNode && fromNode.parent) {\n this.renderFromNode(fromNode);\n } else {\n this.renderFromRoot();\n }\n }\n\n public renderFromRoot(): void {\n const $element = this.treeWidget.element;\n $element.empty();\n\n if ($element[0]) {\n this.createDomElements(\n $element[0],\n this.treeWidget.tree.children,\n true,\n 1,\n );\n }\n }\n\n public renderFromNode(node: Node): void {\n // remember current li\n const $previousLi = jQuery(node.element);\n\n // create element\n const li = this.createLi(node, node.getLevel());\n this.attachNodeData(node, li);\n\n // add element to dom\n $previousLi.after(li);\n\n // remove previous li\n $previousLi.remove();\n\n // create children\n if (node.children) {\n this.createDomElements(\n li,\n node.children,\n false,\n node.getLevel() + 1,\n );\n }\n }\n\n private createDomElements(\n element: Element,\n children: Node[],\n isRootNode: boolean,\n level: number,\n ): void {\n const ul = this.createUl(isRootNode);\n element.appendChild(ul);\n\n for (const child of children) {\n const li = this.createLi(child, level);\n ul.appendChild(li);\n\n this.attachNodeData(child, li);\n\n if (child.hasChildren()) {\n this.createDomElements(li, child.children, false, level + 1);\n }\n }\n }\n\n private attachNodeData(node: Node, li: HTMLElement): void {\n node.element = li;\n jQuery(li).data(\"node\", node);\n }\n\n private createUl(isRootNode: boolean): HTMLUListElement {\n let classString;\n let role;\n\n if (!isRootNode) {\n classString = \"\";\n role = \"group\";\n } else {\n classString = \"jqtree-tree\";\n role = \"tree\";\n\n if (this.treeWidget.options.rtl) {\n classString += \" jqtree-rtl\";\n }\n }\n\n if (this.treeWidget.options.dragAndDrop) {\n classString += \" jqtree-dnd\";\n }\n\n const ul = document.createElement(\"ul\");\n ul.className = `jqtree_common ${classString}`;\n\n ul.setAttribute(\"role\", role);\n\n return ul;\n }\n\n private createLi(node: Node, level: number): HTMLLIElement {\n const isSelected = Boolean(\n this.treeWidget.selectNodeHandler.isNodeSelected(node),\n );\n\n const mustShowFolder =\n node.isFolder() ||\n (node.isEmptyFolder && this.treeWidget.options.showEmptyFolder);\n\n const li = mustShowFolder\n ? this.createFolderLi(node, level, isSelected)\n : this.createNodeLi(node, level, isSelected);\n\n if (this.treeWidget.options.onCreateLi) {\n this.treeWidget.options.onCreateLi(node, jQuery(li), isSelected);\n }\n\n return li;\n }\n\n private setTreeItemAriaAttributes(\n element: HTMLElement,\n name: string,\n level: number,\n isSelected: boolean,\n ) {\n element.setAttribute(\"aria-label\", name);\n element.setAttribute(\"aria-level\", `${level}`);\n element.setAttribute(\"aria-selected\", getBoolString(isSelected));\n element.setAttribute(\"role\", \"treeitem\");\n }\n\n private createFolderLi(\n node: Node,\n level: number,\n isSelected: boolean,\n ): HTMLLIElement {\n const buttonClasses = this.getButtonClasses(node);\n const folderClasses = this.getFolderClasses(node, isSelected);\n\n const iconElement = node.is_open\n ? this.openedIconElement\n : this.closedIconElement;\n\n // li\n const li = document.createElement(\"li\");\n li.className = `jqtree_common ${folderClasses}`;\n li.setAttribute(\"role\", \"none\");\n\n // div\n const div = document.createElement(\"div\");\n div.className = \"jqtree-element jqtree_common\";\n div.setAttribute(\"role\", \"none\");\n\n li.appendChild(div);\n\n // button link\n const buttonLink = document.createElement(\"a\");\n buttonLink.className = buttonClasses;\n\n if (iconElement) {\n buttonLink.appendChild(iconElement.cloneNode(true));\n }\n\n if (this.treeWidget.options.buttonLeft) {\n div.appendChild(buttonLink);\n }\n\n // title span\n const titleSpan = this.createTitleSpan(\n node.name,\n isSelected,\n true,\n level,\n );\n titleSpan.setAttribute(\"aria-expanded\", getBoolString(node.is_open));\n div.appendChild(titleSpan);\n\n if (!this.treeWidget.options.buttonLeft) {\n div.appendChild(buttonLink);\n }\n\n return li;\n }\n\n private createNodeLi(\n node: Node,\n level: number,\n isSelected: boolean,\n ): HTMLLIElement {\n const liClasses = [\"jqtree_common\"];\n\n if (isSelected) {\n liClasses.push(\"jqtree-selected\");\n }\n\n const classString = liClasses.join(\" \");\n\n // li\n const li = document.createElement(\"li\");\n li.className = classString;\n li.setAttribute(\"role\", \"none\");\n\n // div\n const div = document.createElement(\"div\");\n div.className = \"jqtree-element jqtree_common\";\n div.setAttribute(\"role\", \"none\");\n\n li.appendChild(div);\n\n // title span\n const titleSpan = this.createTitleSpan(\n node.name,\n isSelected,\n false,\n level,\n );\n div.appendChild(titleSpan);\n\n return li;\n }\n\n private createTitleSpan(\n nodeName: string,\n isSelected: boolean,\n isFolder: boolean,\n level: number,\n ): HTMLSpanElement {\n const titleSpan = document.createElement(\"span\");\n\n let classes = \"jqtree-title jqtree_common\";\n\n if (isFolder) {\n classes += \" jqtree-title-folder\";\n }\n\n classes += ` jqtree-title-button-${\n this.treeWidget.options.buttonLeft ? \"left\" : \"right\"\n }`;\n\n titleSpan.className = classes;\n\n if (isSelected) {\n const tabIndex = this.treeWidget.options.tabIndex;\n\n if (tabIndex !== undefined) {\n titleSpan.setAttribute(\"tabindex\", `${tabIndex}`);\n }\n }\n\n this.setTreeItemAriaAttributes(titleSpan, nodeName, level, isSelected);\n\n if (this.treeWidget.options.autoEscape) {\n titleSpan.textContent = nodeName;\n } else {\n titleSpan.innerHTML = nodeName;\n }\n\n return titleSpan;\n }\n\n private getButtonClasses(node: Node): string {\n const classes = [\"jqtree-toggler\", \"jqtree_common\"];\n\n if (!node.is_open) {\n classes.push(\"jqtree-closed\");\n }\n\n if (this.treeWidget.options.buttonLeft) {\n classes.push(\"jqtree-toggler-left\");\n } else {\n classes.push(\"jqtree-toggler-right\");\n }\n\n return classes.join(\" \");\n }\n\n private getFolderClasses(node: Node, isSelected: boolean): string {\n const classes = [\"jqtree-folder\"];\n\n if (!node.is_open) {\n classes.push(\"jqtree-closed\");\n }\n\n if (isSelected) {\n classes.push(\"jqtree-selected\");\n }\n\n if (node.is_loading) {\n classes.push(\"jqtree-loading\");\n }\n\n return classes.join(\" \");\n }\n\n private createButtonElement(\n value: IconElement,\n ): HTMLElement | Text | undefined {\n if (typeof value === \"string\") {\n // convert value to html\n const div = document.createElement(\"div\");\n div.innerHTML = value;\n\n return document.createTextNode(div.innerHTML);\n } else {\n return jQuery(value)[0];\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport type HandleFinishedLoading = () => void;\n\nexport default class DataLoader {\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n }\n\n public loadFromUrl(\n urlInfo: string | JQuery.AjaxSettings | null,\n parentNode: Node | null,\n onFinished: HandleFinishedLoading | null\n ): void {\n if (!urlInfo) {\n return;\n }\n\n const $el = this.getDomElement(parentNode);\n this.addLoadingClass($el);\n this.notifyLoading(true, parentNode, $el);\n\n const stopLoading = (): void => {\n this.removeLoadingClass($el);\n this.notifyLoading(false, parentNode, $el);\n };\n\n const handleSuccess = (data: string | NodeData[]): void => {\n stopLoading();\n this.treeWidget.loadData(this.parseData(data), parentNode);\n\n if (onFinished && typeof onFinished === \"function\") {\n onFinished();\n }\n };\n\n const handleError = (jqXHR: JQuery.jqXHR): void => {\n stopLoading();\n\n if (this.treeWidget.options.onLoadFailed) {\n this.treeWidget.options.onLoadFailed(jqXHR);\n }\n };\n\n this.submitRequest(urlInfo, handleSuccess, handleError);\n }\n\n private addLoadingClass($el: JQuery<HTMLElement>): void {\n if ($el) {\n $el.addClass(\"jqtree-loading\");\n }\n }\n\n private removeLoadingClass($el: JQuery<HTMLElement>): void {\n if ($el) {\n $el.removeClass(\"jqtree-loading\");\n }\n }\n\n private getDomElement(parentNode: Node | null): JQuery<HTMLElement> {\n if (parentNode) {\n return jQuery(parentNode.element);\n } else {\n return this.treeWidget.element;\n }\n }\n\n private notifyLoading(\n isLoading: boolean,\n node: Node | null,\n $el: JQuery\n ): void {\n if (this.treeWidget.options.onLoading) {\n this.treeWidget.options.onLoading(isLoading, node, $el);\n }\n\n this.treeWidget._triggerEvent(\"tree.loading_data\", {\n isLoading,\n node,\n $el,\n });\n }\n\n private submitRequest(\n urlInfoInput: string | JQuery.AjaxSettings,\n handleSuccess: JQuery.Ajax.SuccessCallback<any>,\n handleError: JQuery.Ajax.ErrorCallback<any>\n ): void {\n const urlInfo =\n typeof urlInfoInput === \"string\"\n ? { url: urlInfoInput }\n : urlInfoInput;\n\n const ajaxSettings: JQuery.AjaxSettings = {\n method: \"GET\",\n cache: false,\n dataType: \"json\",\n success: handleSuccess,\n error: handleError,\n ...urlInfo,\n };\n\n ajaxSettings.method = ajaxSettings.method?.toUpperCase() || \"GET\";\n\n void jQuery.ajax(ajaxSettings);\n }\n\n private parseData(data: string | NodeData[]): NodeData[] {\n const { dataFilter } = this.treeWidget.options;\n\n const getParsedData = () => {\n if (typeof data === \"string\") {\n return JSON.parse(data) as NodeData[];\n } else {\n return data;\n }\n };\n\n const parsedData = getParsedData();\n\n if (dataFilter) {\n return dataFilter(parsedData);\n } else {\n return parsedData;\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport default class KeyHandler {\n private static LEFT = 37;\n private static UP = 38;\n private static RIGHT = 39;\n private static DOWN = 40;\n\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n if (treeWidget.options.keyboardSupport) {\n jQuery(document).on(\"keydown.jqtree\", this.handleKeyDown);\n }\n }\n\n public deinit(): void {\n jQuery(document).off(\"keydown.jqtree\");\n }\n\n public moveDown(selectedNode: Node): boolean {\n return this.selectNode(selectedNode.getNextVisibleNode());\n }\n\n public moveUp(selectedNode: Node): boolean {\n return this.selectNode(selectedNode.getPreviousVisibleNode());\n }\n\n public moveRight(selectedNode: Node): boolean {\n if (!selectedNode.isFolder()) {\n return true;\n } else {\n // folder node\n if (selectedNode.is_open) {\n // Right moves to the first child of an open node\n return this.selectNode(selectedNode.getNextVisibleNode());\n } else {\n // Right expands a closed node\n this.treeWidget.openNode(selectedNode);\n return false;\n }\n }\n }\n\n public moveLeft(selectedNode: Node): boolean {\n if (selectedNode.isFolder() && selectedNode.is_open) {\n // Left on an open node closes the node\n this.treeWidget.closeNode(selectedNode);\n return false;\n } else {\n // Left on a closed or end node moves focus to the node's parent\n return this.selectNode(selectedNode.getParent());\n }\n }\n\n public selectNode(node: Node | null): boolean {\n if (!node) {\n return true;\n } else {\n this.treeWidget.selectNode(node);\n\n if (\n !this.treeWidget.scrollHandler.isScrolledIntoView(\n jQuery(node.element).find(\".jqtree-element\")\n )\n ) {\n this.treeWidget.scrollToNode(node);\n }\n\n return false;\n }\n }\n\n private handleKeyDown = (e: JQuery.Event): boolean => {\n if (!this.canHandleKeyboard()) {\n return true;\n }\n\n const selectedNode = this.treeWidget.getSelectedNode();\n if (!selectedNode) {\n return true;\n }\n\n const key = e.which;\n\n switch (key) {\n case KeyHandler.DOWN:\n return this.moveDown(selectedNode);\n\n case KeyHandler.UP:\n return this.moveUp(selectedNode);\n\n case KeyHandler.RIGHT:\n return this.moveRight(selectedNode);\n\n case KeyHandler.LEFT:\n return this.moveLeft(selectedNode);\n\n default:\n return true;\n }\n };\n\n private canHandleKeyboard(): boolean {\n return (\n (this.treeWidget.options.keyboardSupport || false) &&\n this.treeWidget.selectNodeHandler.isFocusOnTree()\n );\n }\n}\n","const register = (widgetClass: unknown, widgetName: string): void => {\n const getDataKey = (): string => `simple_widget_${widgetName}`;\n\n const getWidgetData = (\n el: HTMLElement,\n dataKey: string\n ): SimpleWidget<unknown> | null => {\n const widget = jQuery.data(el, dataKey) as unknown;\n\n if (widget && widget instanceof SimpleWidget) {\n return widget;\n } else {\n return null;\n }\n };\n\n const createWidget = ($el: JQuery, options: unknown): JQuery => {\n const dataKey = getDataKey();\n\n for (const el of $el.get()) {\n const existingWidget = getWidgetData(el, dataKey);\n\n if (!existingWidget) {\n const simpleWidgetClass = widgetClass as typeof SimpleWidget;\n const widget = new simpleWidgetClass(el, options);\n\n if (!jQuery.data(el, dataKey)) {\n jQuery.data(el, dataKey, widget);\n }\n\n // Call init after setting data, so we can call methods\n widget.init();\n }\n }\n\n return $el;\n };\n\n const destroyWidget = ($el: JQuery): void => {\n const dataKey = getDataKey();\n\n for (const el of $el.get()) {\n const widget = getWidgetData(el, dataKey);\n\n if (widget) {\n widget.destroy();\n }\n\n jQuery.removeData(el, dataKey);\n }\n };\n\n const callFunction = (\n $el: JQuery,\n functionName: string,\n args: unknown[]\n ): unknown => {\n let result = null;\n\n for (const el of $el.get()) {\n const widget = jQuery.data(el, getDataKey()) as unknown;\n\n if (widget && widget instanceof SimpleWidget) {\n const simpleWidget = widget as SimpleWidget<unknown>;\n const widgetFunction = simpleWidget[functionName];\n\n if (widgetFunction && typeof widgetFunction === \"function\") {\n result = widgetFunction.apply(widget, args) as unknown;\n }\n }\n }\n\n return result;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n (jQuery.fn as any)[widgetName] = function (\n this: JQuery,\n argument1: unknown,\n ...args: unknown[]\n ) {\n if (!argument1) {\n return createWidget(this, null);\n } else if (typeof argument1 === \"object\") {\n const options = argument1 as unknown;\n return createWidget(this, options);\n } else if (typeof argument1 === \"string\" && argument1[0] !== \"_\") {\n const functionName = argument1;\n\n if (functionName === \"destroy\") {\n return destroyWidget(this);\n } else if (functionName === \"get_widget_class\") {\n return widgetClass;\n } else {\n return callFunction(this, functionName, args);\n }\n } else {\n return undefined;\n }\n };\n};\n\nexport default class SimpleWidget<WidgetOptions> {\n public static register(widgetClass: unknown, widgetName: string): void {\n register(widgetClass, widgetName);\n }\n\n [key: string]: unknown;\n\n protected static defaults: unknown = {};\n\n public options: WidgetOptions;\n\n public $el: JQuery<HTMLElement>;\n\n constructor(el: HTMLElement, options: WidgetOptions) {\n this.$el = jQuery(el);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const defaults = (this.constructor as any)[\"defaults\"] as WidgetOptions;\n this.options = { ...defaults, ...options };\n }\n\n public destroy(): void {\n this.deinit();\n }\n\n public init(): void {\n //\n }\n\n public deinit(): void {\n //\n }\n}\n","/*\nThis widget does the same a the mouse widget in jqueryui.\n*/\nimport SimpleWidget from \"./simple.widget\";\nimport { PositionInfo } from \"./types\";\n\nconst getPositionInfoFromMouseEvent = (e: MouseEvent): PositionInfo => ({\n pageX: e.pageX,\n pageY: e.pageY,\n target: e.target as HTMLElement,\n originalEvent: e,\n});\n\nconst getPositionInfoFromTouch = (\n touch: Touch,\n e: TouchEvent\n): PositionInfo => ({\n pageX: touch.pageX,\n pageY: touch.pageY,\n target: touch.target as HTMLElement,\n originalEvent: e,\n});\n\nabstract class MouseWidget<WidgetOptions> extends SimpleWidget<WidgetOptions> {\n protected isMouseStarted: boolean;\n protected mouseDownInfo: PositionInfo | null;\n private mouseDelayTimer: number | null;\n private isMouseDelayMet: boolean;\n\n public init(): void {\n const element = this.$el.get(0);\n\n if (element) {\n element.addEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n element.addEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n }\n\n this.isMouseStarted = false;\n this.mouseDelayTimer = null;\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n }\n\n public deinit(): void {\n const el = this.$el.get(0);\n\n if (el) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (el as any).removeEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (el as any).removeEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n }\n\n this.removeMouseMoveEventListeners();\n }\n\n protected abstract mouseCapture(positionInfo: PositionInfo): boolean | null;\n\n protected abstract mouseStart(positionInfo: PositionInfo): boolean;\n\n protected abstract mouseDrag(positionInfo: PositionInfo): void;\n\n protected abstract mouseStop(positionInfo: PositionInfo): void;\n\n protected abstract getMouseDelay(): number;\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 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.mouseCapture(positionInfo)) {\n return false;\n }\n\n this.handleStartMouse();\n\n return true;\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 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 mouseMove = (e: MouseEvent): void => {\n this.handleMouseMove(e, getPositionInfoFromMouseEvent(e));\n };\n\n private handleMouseMove(\n e: MouseEvent | TouchEvent,\n positionInfo: PositionInfo\n ): void {\n if (this.isMouseStarted) {\n this.mouseDrag(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.mouseStart(this.mouseDownInfo) !== false;\n }\n\n if (this.isMouseStarted) {\n this.mouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n } else {\n this.handleMouseUp(positionInfo);\n }\n }\n\n private mouseUp = (e: MouseEvent): void => {\n this.handleMouseUp(getPositionInfoFromMouseEvent(e));\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.mouseStop(positionInfo);\n }\n }\n\n private removeMouseMoveEventListeners() {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"mousemove\", this.mouseMove, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"touchmove\", this.touchMove, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"mouseup\", this.mouseUp, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"touchend\", this.touchEnd, {\n passive: false,\n });\n }\n\n private touchStart = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n if (!touch) {\n return;\n }\n\n this.handleMouseDown(getPositionInfoFromTouch(touch, e));\n };\n\n private touchMove = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n if (!touch) {\n return;\n }\n\n this.handleMouseMove(e, getPositionInfoFromTouch(touch, e));\n };\n\n private touchEnd = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n if (!touch) {\n return;\n }\n\n this.handleMouseUp(getPositionInfoFromTouch(touch, e));\n };\n}\n\nexport default MouseWidget;\n","import { isInt } from \"./util\";\nimport { JqTreeWidget } from \"./tree.jquery\";\nimport { Node } from \"./node\";\n\nexport interface SavedState {\n open_nodes: NodeId[];\n selected_node: NodeId[];\n}\n\nexport default class SaveStateHandler {\n private treeWidget: JqTreeWidget;\n private _supportsLocalStorage: boolean | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n }\n\n public saveState(): void {\n const state = JSON.stringify(this.getState());\n\n if (this.treeWidget.options.onSetStateFromStorage) {\n this.treeWidget.options.onSetStateFromStorage(state);\n } else if (this.supportsLocalStorage()) {\n localStorage.setItem(this.getKeyName(), state);\n }\n }\n\n public getStateFromStorage(): SavedState | null {\n const jsonData = this.loadFromStorage();\n\n if (jsonData) {\n return this.parseState(jsonData) as unknown as SavedState;\n } else {\n return null;\n }\n }\n\n public getState(): SavedState {\n const getOpenNodeIds = (): NodeId[] => {\n const openNodes: NodeId[] = [];\n\n this.treeWidget.tree.iterate((node: Node) => {\n if (node.is_open && node.id && node.hasChildren()) {\n openNodes.push(node.id);\n }\n return true;\n });\n\n return openNodes;\n };\n\n const getSelectedNodeIds = (): NodeId[] => {\n const selectedNodeIds: NodeId[] = [];\n\n this.treeWidget.getSelectedNodes().forEach((node) => {\n if (node.id != null) {\n selectedNodeIds.push(node.id);\n }\n });\n\n return selectedNodeIds;\n };\n\n return {\n open_nodes: getOpenNodeIds(),\n selected_node: getSelectedNodeIds(),\n };\n }\n\n /*\n Set initial state\n Don't handle nodes that are loaded on demand\n\n result: must load on demand\n */\n public setInitialState(state: SavedState): boolean {\n if (!state) {\n return false;\n } else {\n let mustLoadOnDemand = false;\n\n if (state.open_nodes) {\n mustLoadOnDemand = this.openInitialNodes(state.open_nodes);\n }\n\n if (state.selected_node) {\n this.resetSelection();\n this.selectInitialNodes(state.selected_node);\n }\n\n return mustLoadOnDemand;\n }\n }\n\n public setInitialStateOnDemand(\n state: SavedState,\n cbFinished: () => void\n ): void {\n if (state) {\n this.doSetInitialStateOnDemand(\n state.open_nodes,\n state.selected_node,\n cbFinished\n );\n } else {\n cbFinished();\n }\n }\n\n public getNodeIdToBeSelected(): NodeId | null {\n const state = this.getStateFromStorage();\n\n if (state && state.selected_node) {\n return state.selected_node[0] || null;\n } else {\n return null;\n }\n }\n\n private parseState(jsonData: string): SavedState {\n const state = JSON.parse(jsonData) as Record<string, unknown>;\n\n // Check if selected_node is an int (instead of an array)\n if (state && state.selected_node && isInt(state.selected_node)) {\n // Convert to array\n state.selected_node = [state.selected_node];\n }\n\n return state as unknown as SavedState;\n }\n\n private loadFromStorage(): string | null {\n if (this.treeWidget.options.onGetStateFromStorage) {\n return this.treeWidget.options.onGetStateFromStorage();\n } else if (this.supportsLocalStorage()) {\n return localStorage.getItem(this.getKeyName());\n } else {\n return null;\n }\n }\n\n private openInitialNodes(nodeIds: NodeId[]): boolean {\n let mustLoadOnDemand = false;\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (node) {\n if (!node.load_on_demand) {\n node.is_open = true;\n } else {\n mustLoadOnDemand = true;\n }\n }\n }\n\n return mustLoadOnDemand;\n }\n\n private selectInitialNodes(nodeIds: NodeId[]): boolean {\n let selectCount = 0;\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (node) {\n selectCount += 1;\n\n this.treeWidget.selectNodeHandler.addToSelection(node);\n }\n }\n\n return selectCount !== 0;\n }\n\n private resetSelection(): void {\n const selectNodeHandler = this.treeWidget.selectNodeHandler;\n\n const selectedNodes = selectNodeHandler.getSelectedNodes();\n\n selectedNodes.forEach((node) => {\n selectNodeHandler.removeFromSelection(node);\n });\n }\n\n private doSetInitialStateOnDemand(\n nodeIdsParam: NodeId[],\n selectedNodes: NodeId[],\n cbFinished: () => void\n ): void {\n let loadingCount = 0;\n let nodeIds = nodeIdsParam;\n\n const openNodes = (): void => {\n const newNodesIds = [];\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (!node) {\n newNodesIds.push(nodeId);\n } else {\n if (!node.is_loading) {\n if (node.load_on_demand) {\n loadAndOpenNode(node);\n } else {\n this.treeWidget._openNode(node, false, null);\n }\n }\n }\n }\n\n nodeIds = newNodesIds;\n\n if (this.selectInitialNodes(selectedNodes)) {\n this.treeWidget._refreshElements(null);\n }\n\n if (loadingCount === 0) {\n cbFinished();\n }\n };\n\n const loadAndOpenNode = (node: Node): void => {\n loadingCount += 1;\n this.treeWidget._openNode(node, false, () => {\n loadingCount -= 1;\n openNodes();\n });\n };\n\n openNodes();\n }\n\n private getKeyName(): string {\n if (typeof this.treeWidget.options.saveState === \"string\") {\n return this.treeWidget.options.saveState;\n } else {\n return \"tree\";\n }\n }\n\n private supportsLocalStorage(): boolean {\n const testSupport = (): boolean => {\n // Is local storage supported?\n if (localStorage == null) {\n return false;\n } else {\n // Check if it's possible to store an item. Safari does not allow this in private browsing mode.\n try {\n const key = \"_storage_test\";\n sessionStorage.setItem(key, \"value\");\n sessionStorage.removeItem(key);\n } catch (error) {\n return false;\n }\n\n return true;\n }\n };\n\n if (this._supportsLocalStorage == null) {\n this._supportsLocalStorage = testSupport();\n }\n\n return this._supportsLocalStorage;\n }\n}\n","import { JqTreeWidget } from \"./tree.jquery\";\nimport { HitArea, PositionInfo } from \"./types\";\n\nexport default class ScrollHandler {\n private treeWidget: JqTreeWidget;\n private previousTop: number;\n private isInitialized: boolean;\n private $scrollParent: JQuery | null;\n private scrollParentTop: number;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n this.previousTop = -1;\n this.isInitialized = false;\n }\n\n public checkScrolling(): void {\n this.ensureInit();\n this.checkVerticalScrolling();\n this.checkHorizontalScrolling();\n }\n\n public scrollToY(top: number): void {\n this.ensureInit();\n\n if (this.$scrollParent && this.$scrollParent[0]) {\n this.$scrollParent[0].scrollTop = top;\n } else {\n const offset = this.treeWidget.$el.offset();\n const treeTop = offset ? offset.top : 0;\n\n jQuery(document).scrollTop(top + treeTop);\n }\n }\n\n public isScrolledIntoView($element: JQuery): boolean {\n this.ensureInit();\n\n let elementBottom: number;\n let viewBottom: number;\n let elementTop: number;\n let viewTop: number;\n\n const elHeight = $element.height() || 0;\n\n if (this.$scrollParent) {\n viewTop = 0;\n viewBottom = this.$scrollParent.height() || 0;\n\n const offset = $element.offset();\n const originalTop = offset ? offset.top : 0;\n\n elementTop = originalTop - this.scrollParentTop;\n elementBottom = elementTop + elHeight;\n } else {\n viewTop = jQuery(window).scrollTop() || 0;\n\n const windowHeight = jQuery(window).height() || 0;\n viewBottom = viewTop + windowHeight;\n\n const offset = $element.offset();\n\n elementTop = offset ? offset.top : 0;\n elementBottom = elementTop + elHeight;\n }\n\n return elementBottom <= viewBottom && elementTop >= viewTop;\n }\n\n public getScrollLeft(): number {\n if (!this.$scrollParent) {\n return 0;\n } else {\n return this.$scrollParent.scrollLeft() || 0;\n }\n }\n\n private initScrollParent(): void {\n const getParentWithOverflow = (): JQuery | null => {\n const cssAttributes = [\"overflow\", \"overflow-y\"];\n\n const hasOverFlow = ($el: JQuery): boolean => {\n for (const attr of cssAttributes) {\n const overflowValue = $el.css(attr);\n if (\n overflowValue === \"auto\" ||\n overflowValue === \"scroll\"\n ) {\n return true;\n }\n }\n\n return false;\n };\n\n if (hasOverFlow(this.treeWidget.$el)) {\n return this.treeWidget.$el;\n }\n\n for (const el of this.treeWidget.$el.parents().get()) {\n const $el = jQuery(el);\n if (hasOverFlow($el)) {\n return $el;\n }\n }\n\n return null;\n };\n\n const setDocumentAsScrollParent = (): void => {\n this.scrollParentTop = 0;\n this.$scrollParent = null;\n };\n\n if (this.treeWidget.$el.css(\"position\") === \"fixed\") {\n setDocumentAsScrollParent();\n }\n\n const $scrollParent = getParentWithOverflow();\n\n if (\n $scrollParent &&\n $scrollParent.length &&\n $scrollParent[0]?.tagName !== \"HTML\"\n ) {\n this.$scrollParent = $scrollParent;\n\n const offset = this.$scrollParent.offset();\n this.scrollParentTop = offset ? offset.top : 0;\n } else {\n setDocumentAsScrollParent();\n }\n\n this.isInitialized = true;\n }\n\n private ensureInit(): void {\n if (!this.isInitialized) {\n this.initScrollParent();\n }\n }\n\n private handleVerticalScrollingWithScrollParent(area: HitArea): void {\n const scrollParent = this.$scrollParent && this.$scrollParent[0];\n\n if (!scrollParent) {\n return;\n }\n\n const distanceBottom =\n this.scrollParentTop + scrollParent.offsetHeight - area.bottom;\n\n if (distanceBottom < 20) {\n scrollParent.scrollTop += 20;\n this.treeWidget.refreshHitAreas();\n this.previousTop = -1;\n } else if (area.top - this.scrollParentTop < 20) {\n scrollParent.scrollTop -= 20;\n this.treeWidget.refreshHitAreas();\n this.previousTop = -1;\n }\n }\n\n private handleVerticalScrollingWithDocument(area: HitArea): void {\n const scrollTop = jQuery(document).scrollTop() || 0;\n const distanceTop = area.top - scrollTop;\n\n if (distanceTop < 20) {\n jQuery(document).scrollTop(scrollTop - 20);\n } else {\n const windowHeight = jQuery(window).height() || 0;\n\n if (windowHeight - (area.bottom - scrollTop) < 20) {\n jQuery(document).scrollTop(scrollTop + 20);\n }\n }\n }\n\n private checkVerticalScrolling(): void {\n const hoveredArea = this.treeWidget.dndHandler.hoveredArea;\n\n if (hoveredArea && hoveredArea.top !== this.previousTop) {\n this.previousTop = hoveredArea.top;\n\n if (this.$scrollParent) {\n this.handleVerticalScrollingWithScrollParent(hoveredArea);\n } else {\n this.handleVerticalScrollingWithDocument(hoveredArea);\n }\n }\n }\n\n private checkHorizontalScrolling(): void {\n const positionInfo = this.treeWidget.dndHandler.positionInfo;\n\n if (!positionInfo) {\n return;\n }\n\n if (this.$scrollParent) {\n this.handleHorizontalScrollingWithParent(positionInfo);\n } else {\n this.handleHorizontalScrollingWithDocument(positionInfo);\n }\n }\n\n private handleHorizontalScrollingWithParent(\n positionInfo: PositionInfo\n ): void {\n if (\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return;\n }\n\n const $scrollParent = this.$scrollParent;\n const scrollParentOffset = $scrollParent && $scrollParent.offset();\n\n if (!($scrollParent && scrollParentOffset)) {\n return;\n }\n\n const scrollParent = $scrollParent[0];\n\n if (!scrollParent) {\n return;\n }\n\n const canScrollRight =\n scrollParent.scrollLeft + scrollParent.clientWidth <\n scrollParent.scrollWidth;\n const canScrollLeft = scrollParent.scrollLeft > 0;\n\n const rightEdge = scrollParentOffset.left + scrollParent.clientWidth;\n const leftEdge = scrollParentOffset.left;\n const isNearRightEdge = positionInfo.pageX > rightEdge - 20;\n const isNearLeftEdge = positionInfo.pageX < leftEdge + 20;\n\n if (isNearRightEdge && canScrollRight) {\n scrollParent.scrollLeft = Math.min(\n scrollParent.scrollLeft + 20,\n scrollParent.scrollWidth\n );\n } else if (isNearLeftEdge && canScrollLeft) {\n scrollParent.scrollLeft = Math.max(scrollParent.scrollLeft - 20, 0);\n }\n }\n\n private handleHorizontalScrollingWithDocument(\n positionInfo: PositionInfo\n ): void {\n if (\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return;\n }\n\n const $document = jQuery(document);\n\n const scrollLeft = $document.scrollLeft() || 0;\n const windowWidth = jQuery(window).width() || 0;\n\n const canScrollLeft = scrollLeft > 0;\n\n const isNearRightEdge = positionInfo.pageX > windowWidth - 20;\n const isNearLeftEdge = positionInfo.pageX - scrollLeft < 20;\n\n if (isNearRightEdge) {\n $document.scrollLeft(scrollLeft + 20);\n } else if (isNearLeftEdge && canScrollLeft) {\n $document.scrollLeft(Math.max(scrollLeft - 20, 0));\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport default class SelectNodeHandler {\n private treeWidget: JqTreeWidget;\n private selectedNodes: Set<NodeId>;\n private selectedSingleNode: Node | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n this.selectedNodes = new Set<NodeId>();\n this.clear();\n }\n\n public getSelectedNode(): Node | false {\n const selectedNodes = this.getSelectedNodes();\n\n if (selectedNodes.length) {\n return selectedNodes[0] || false;\n } else {\n return false;\n }\n }\n\n public getSelectedNodes(): Node[] {\n if (this.selectedSingleNode) {\n return [this.selectedSingleNode];\n } else {\n const selectedNodes: Node[] = [];\n\n this.selectedNodes.forEach((id) => {\n const node = this.treeWidget.getNodeById(id);\n if (node) {\n selectedNodes.push(node);\n }\n });\n\n return selectedNodes;\n }\n }\n\n public getSelectedNodesUnder(parent: Node): Node[] {\n if (this.selectedSingleNode) {\n if (parent.isParentOf(this.selectedSingleNode)) {\n return [this.selectedSingleNode];\n } else {\n return [];\n }\n } else {\n const selectedNodes = [];\n\n for (const id in this.selectedNodes) {\n if (\n Object.prototype.hasOwnProperty.call(this.selectedNodes, id)\n ) {\n const node = this.treeWidget.getNodeById(id);\n if (node && parent.isParentOf(node)) {\n selectedNodes.push(node);\n }\n }\n }\n\n return selectedNodes;\n }\n }\n\n public isNodeSelected(node: Node): boolean {\n if (node.id != null) {\n return this.selectedNodes.has(node.id);\n } else if (this.selectedSingleNode) {\n return this.selectedSingleNode.element === node.element;\n } else {\n return false;\n }\n }\n\n public clear(): void {\n this.selectedNodes.clear();\n this.selectedSingleNode = null;\n }\n\n public removeFromSelection(node: Node, includeChildren = false): void {\n if (node.id == null) {\n if (\n this.selectedSingleNode &&\n node.element === this.selectedSingleNode.element\n ) {\n this.selectedSingleNode = null;\n }\n } else {\n this.selectedNodes.delete(node.id);\n\n if (includeChildren) {\n node.iterate(() => {\n if (node.id != null) {\n this.selectedNodes.delete(node.id);\n }\n return true;\n });\n }\n }\n }\n\n public addToSelection(node: Node): void {\n if (node.id != null) {\n this.selectedNodes.add(node.id);\n } else {\n this.selectedSingleNode = node;\n }\n }\n\n public isFocusOnTree(): boolean {\n const activeElement = document.activeElement;\n\n return Boolean(\n activeElement &&\n activeElement.tagName === \"SPAN\" &&\n this.treeWidget._containsElement(activeElement as HTMLElement)\n );\n }\n}\n","import { Position, Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\nimport { DropHint } from \"./types\";\n\nexport type OnFinishOpenNode = (node: Node) => void;\n\nexport class NodeElement {\n public node: Node;\n public $element: JQuery<HTMLElement>;\n protected treeWidget: JqTreeWidget;\n\n constructor(node: Node, treeWidget: JqTreeWidget) {\n this.init(node, treeWidget);\n }\n\n public init(node: Node, treeWidget: JqTreeWidget): void {\n this.node = node;\n this.treeWidget = treeWidget;\n\n if (!node.element) {\n const element = this.treeWidget.element.get(0);\n\n if (element) {\n node.element = element;\n }\n }\n\n if (node.element) {\n this.$element = jQuery(node.element);\n }\n }\n\n public addDropHint(position: number): DropHint {\n if (this.mustShowBorderDropHint(position)) {\n return new BorderDropHint(\n this.$element,\n this.treeWidget._getScrollLeft(),\n );\n } else {\n return new GhostDropHint(this.node, this.$element, position);\n }\n }\n\n public select(mustSetFocus: boolean): void {\n const $li = this.getLi();\n\n $li.addClass(\"jqtree-selected\");\n\n const $span = this.getSpan();\n $span.attr(\"tabindex\", this.treeWidget.options.tabIndex ?? null);\n $span.attr(\"aria-selected\", \"true\");\n\n if (mustSetFocus) {\n $span.trigger(\"focus\");\n }\n }\n\n public deselect(): void {\n const $li = this.getLi();\n\n $li.removeClass(\"jqtree-selected\");\n\n const $span = this.getSpan();\n $span.removeAttr(\"tabindex\");\n $span.attr(\"aria-selected\", \"false\");\n\n $span.trigger(\"blur\");\n }\n\n protected getUl(): JQuery<HTMLElement> {\n return this.$element.children(\"ul:first\");\n }\n\n protected getSpan(): JQuery<HTMLElement> {\n return this.$element\n .children(\".jqtree-element\")\n .find(\"span.jqtree-title\");\n }\n\n protected getLi(): JQuery<HTMLElement> {\n return this.$element;\n }\n\n protected mustShowBorderDropHint(position: Position): boolean {\n return position === Position.Inside;\n }\n}\n\nexport class FolderElement extends NodeElement {\n public open(\n onFinished: OnFinishOpenNode | null,\n slide = true,\n animationSpeed: JQuery.Duration = \"fast\",\n ): void {\n if (this.node.is_open) {\n return;\n }\n\n this.node.is_open = true;\n\n const $button = this.getButton();\n $button.removeClass(\"jqtree-closed\");\n $button.html(\"\");\n\n const buttonEl = $button.get(0);\n\n if (buttonEl) {\n const openedIconElement =\n this.treeWidget.renderer.openedIconElement;\n\n if (openedIconElement) {\n const icon = openedIconElement.cloneNode(true);\n buttonEl.appendChild(icon);\n }\n }\n\n const doOpen = (): void => {\n const $li = this.getLi();\n $li.removeClass(\"jqtree-closed\");\n\n const $titleSpan = this.getSpan();\n $titleSpan.attr(\"aria-expanded\", \"true\");\n\n if (onFinished) {\n onFinished(this.node);\n }\n\n this.treeWidget._triggerEvent(\"tree.open\", {\n node: this.node,\n });\n };\n\n if (slide) {\n this.getUl().slideDown(animationSpeed, doOpen);\n } else {\n this.getUl().show();\n doOpen();\n }\n }\n\n public close(\n slide = true,\n animationSpeed: JQuery.Duration | undefined = \"fast\",\n ): void {\n if (!this.node.is_open) {\n return;\n }\n\n this.node.is_open = false;\n\n const $button = this.getButton();\n $button.addClass(\"jqtree-closed\");\n $button.html(\"\");\n\n const buttonEl = $button.get(0);\n\n if (buttonEl) {\n const closedIconElement =\n this.treeWidget.renderer.closedIconElement;\n\n if (closedIconElement) {\n const icon = closedIconElement.cloneNode(true);\n buttonEl.appendChild(icon);\n }\n }\n\n const doClose = (): void => {\n const $li = this.getLi();\n $li.addClass(\"jqtree-closed\");\n\n const $titleSpan = this.getSpan();\n $titleSpan.attr(\"aria-expanded\", \"false\");\n\n this.treeWidget._triggerEvent(\"tree.close\", {\n node: this.node,\n });\n };\n\n if (slide) {\n this.getUl().slideUp(animationSpeed, doClose);\n } else {\n this.getUl().hide();\n doClose();\n }\n }\n\n protected mustShowBorderDropHint(position: Position): boolean {\n return !this.node.is_open && position === Position.Inside;\n }\n\n private getButton(): JQuery {\n return this.$element\n .children(\".jqtree-element\")\n .find(\"a.jqtree-toggler\");\n }\n}\n\nexport class BorderDropHint implements DropHint {\n private $hint: JQuery<Element>;\n\n constructor($element: JQuery<Element>, scrollLeft: number) {\n const $div = $element.children(\".jqtree-element\");\n\n const elWidth = $element.width() || 0;\n const width = Math.max(elWidth + scrollLeft - 4, 0);\n\n const elHeight = $div.outerHeight() || 0;\n const height = Math.max(elHeight - 4, 0);\n\n this.$hint = jQuery('<span class=\"jqtree-border\"></span>');\n $div.append(this.$hint);\n\n this.$hint.css({ width, height });\n }\n\n public remove(): void {\n this.$hint.remove();\n }\n}\n\nclass GhostDropHint implements DropHint {\n private $element: JQuery<Element>;\n private node: Node;\n private $ghost: JQuery;\n\n constructor(node: Node, $element: JQuery<Element>, position: Position) {\n this.$element = $element;\n\n this.node = node;\n this.$ghost = jQuery(\n `<li class=\"jqtree_common jqtree-ghost\"><span class=\"jqtree_common jqtree-circle\"></span>\n <span class=\"jqtree_common jqtree-line\"></span></li>`,\n );\n\n if (position === Position.After) {\n this.moveAfter();\n } else if (position === Position.Before) {\n this.moveBefore();\n } else if (position === Position.Inside) {\n if (node.isFolder() && node.is_open) {\n this.moveInsideOpenFolder();\n } else {\n this.moveInside();\n }\n }\n }\n\n public remove(): void {\n this.$ghost.remove();\n }\n\n public moveAfter(): void {\n this.$element.after(this.$ghost);\n }\n\n public moveBefore(): void {\n this.$element.before(this.$ghost);\n }\n\n public moveInsideOpenFolder(): void {\n const childElement = this.node.children[0]?.element;\n\n if (childElement) {\n jQuery(childElement).before(this.$ghost);\n }\n }\n\n public moveInside(): void {\n this.$element.after(this.$ghost);\n this.$ghost.addClass(\"jqtree-inside\");\n }\n}\n","import __version__ from \"./version\";\nimport { DragAndDropHandler } from \"./dragAndDropHandler\";\nimport ElementsRenderer from \"./elementsRenderer\";\nimport DataLoader, { HandleFinishedLoading } from \"./dataLoader\";\nimport KeyHandler from \"./keyHandler\";\nimport MouseWidget from \"./mouse.widget\";\nimport { PositionInfo } from \"./types\";\nimport SaveStateHandler, { SavedState } from \"./saveStateHandler\";\nimport ScrollHandler from \"./scrollHandler\";\nimport SelectNodeHandler from \"./selectNodeHandler\";\nimport SimpleWidget from \"./simple.widget\";\nimport { Node, getPosition } from \"./node\";\nimport { isFunction } from \"./util\";\nimport { FolderElement, NodeElement, OnFinishOpenNode } from \"./nodeElement\";\nimport { JQTreeOptions } from \"./jqtreeOptions\";\n\ninterface ClickTarget {\n node: Node;\n type: \"button\" | \"label\";\n}\n\ninterface SelectNodeOptions {\n mustToggle?: boolean;\n mustSetFocus?: boolean;\n}\n\nconst NODE_PARAM_IS_EMPTY = \"Node parameter is empty\";\nconst PARAM_IS_EMPTY = \"Parameter is empty: \";\n\nexport class JqTreeWidget extends MouseWidget<JQTreeOptions> {\n protected static defaults: JQTreeOptions = {\n animationSpeed: \"fast\",\n autoEscape: true,\n autoOpen: false, // true / false / int (open n levels starting at 0)\n buttonLeft: true,\n // The symbol to use for a closed node - ► BLACK RIGHT-POINTING POINTER\n // http://www.fileformat.info/info/unicode/char/25ba/index.htm\n closedIcon: undefined,\n data: undefined,\n dataFilter: undefined,\n dataUrl: undefined,\n dragAndDrop: false,\n keyboardSupport: true,\n nodeClass: Node,\n onCanMove: undefined, // Can this node be moved?\n onCanMoveTo: undefined, // Can this node be moved to this position? function(moved_node, target_node, position)\n onCanSelectNode: undefined,\n onCreateLi: undefined,\n onDragMove: undefined,\n onDragStop: undefined,\n onGetStateFromStorage: undefined,\n onIsMoveHandle: undefined,\n onLoadFailed: undefined,\n onLoading: undefined,\n onSetStateFromStorage: undefined,\n openedIcon: \"▼\",\n openFolderDelay: 500, // The delay for opening a folder during drag and drop; the value is in milliseconds\n // The symbol to use for an open node - ▼ BLACK DOWN-POINTING TRIANGLE\n // http://www.fileformat.info/info/unicode/char/25bc/index.htm\n rtl: undefined, // right-to-left support; true / false (default)\n saveState: false, // true / false / string (cookie name)\n selectable: true,\n showEmptyFolder: false,\n slide: true, // must display slide animation?\n startDndDelay: 300, // The delay for starting dnd (in milliseconds)\n tabIndex: 0,\n useContextMenu: true,\n };\n\n public element: JQuery;\n public tree: Node;\n public dndHandler: DragAndDropHandler;\n public renderer: ElementsRenderer;\n public dataLoader: DataLoader;\n public scrollHandler: ScrollHandler;\n public selectNodeHandler: SelectNodeHandler;\n\n private isInitialized: boolean;\n private saveStateHandler: SaveStateHandler;\n private keyHandler: KeyHandler;\n\n public toggle(node: Node, slideParam: null | boolean = null): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const slide = slideParam ?? this.options.slide;\n\n if (node.is_open) {\n this.closeNode(node, slide);\n } else {\n this.openNode(node, slide);\n }\n\n return this.element;\n }\n\n public getTree(): Node {\n return this.tree;\n }\n\n public selectNode(\n node: Node | null,\n optionsParam?: SelectNodeOptions\n ): JQuery {\n this.doSelectNode(node, optionsParam);\n return this.element;\n }\n\n public getSelectedNode(): Node | false {\n return this.selectNodeHandler.getSelectedNode();\n }\n\n public toJson(): string {\n return JSON.stringify(this.tree.getData());\n }\n\n public loadData(data: NodeData[], parentNode: Node | null): JQuery {\n this.doLoadData(data, parentNode);\n return this.element;\n }\n\n /*\n signatures:\n - loadDataFromUrl(url, parent_node=null, on_finished=null)\n loadDataFromUrl('/my_data');\n loadDataFromUrl('/my_data', node1);\n loadDataFromUrl('/my_data', node1, function() { console.log('finished'); });\n loadDataFromUrl('/my_data', null, function() { console.log('finished'); });\n\n - loadDataFromUrl(parent_node=null, on_finished=null)\n loadDataFromUrl();\n loadDataFromUrl(node1);\n loadDataFromUrl(null, function() { console.log('finished'); });\n loadDataFromUrl(node1, function() { console.log('finished'); });\n */\n public loadDataFromUrl(\n param1: string | null | Node,\n param2?: Node | null | HandleFinishedLoading,\n param3?: HandleFinishedLoading\n ): JQuery {\n if (typeof param1 === \"string\") {\n // first parameter is url\n this.doLoadDataFromUrl(\n param1,\n param2 as Node | null,\n param3 ?? null\n );\n } else {\n // first parameter is not url\n this.doLoadDataFromUrl(\n null,\n param1,\n param2 as HandleFinishedLoading | null\n );\n }\n\n return this.element;\n }\n\n public reload(onFinished: HandleFinishedLoading | null): JQuery {\n this.doLoadDataFromUrl(null, null, onFinished);\n return this.element;\n }\n\n public refresh(): JQuery {\n this._refreshElements(null);\n return this.element;\n }\n\n public getNodeById(nodeId: NodeId): Node | null {\n return this.tree.getNodeById(nodeId);\n }\n\n public getNodeByName(name: string): Node | null {\n return this.tree.getNodeByName(name);\n }\n\n public getNodeByNameMustExist(name: string): Node {\n return this.tree.getNodeByNameMustExist(name);\n }\n\n public getNodesByProperty(key: string, value: unknown): Node[] {\n return this.tree.getNodesByProperty(key, value);\n }\n\n public getNodeByHtmlElement(\n element: HTMLElement | JQuery<HTMLElement>\n ): Node | null {\n return this.getNode(jQuery(element));\n }\n\n public getNodeByCallback(callback: (node: Node) => boolean): Node | null {\n return this.tree.getNodeByCallback(callback);\n }\n\n public openNode(\n node: Node,\n param1?: boolean | OnFinishOpenNode,\n param2?: OnFinishOpenNode\n ): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const parseParams = (): [boolean, OnFinishOpenNode | null] => {\n let onFinished: OnFinishOpenNode | null;\n let slide: boolean | null;\n\n if (isFunction(param1)) {\n onFinished = param1 as OnFinishOpenNode | null;\n slide = null;\n } else {\n slide = param1 as boolean;\n onFinished = param2 as OnFinishOpenNode;\n }\n\n if (slide == null) {\n slide = this.options.slide ?? false;\n }\n\n return [slide, onFinished];\n };\n\n const [slide, onFinished] = parseParams();\n\n this._openNode(node, slide, onFinished);\n return this.element;\n }\n\n public closeNode(node: Node, slideParam?: null | boolean): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const slide = slideParam ?? this.options.slide;\n\n if (node.isFolder() || node.isEmptyFolder) {\n new FolderElement(node, this).close(\n slide,\n this.options.animationSpeed\n );\n\n this.saveState();\n }\n\n return this.element;\n }\n\n public isDragging(): boolean {\n return this.dndHandler.isDragging;\n }\n\n public refreshHitAreas(): JQuery {\n this.dndHandler.refresh();\n return this.element;\n }\n\n public addNodeAfter(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n const newNode = existingNode.addAfter(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(existingNode.parent);\n }\n\n return newNode;\n }\n\n public addNodeBefore(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n if (!existingNode) {\n throw Error(PARAM_IS_EMPTY + \"existingNode\");\n }\n\n const newNode = existingNode.addBefore(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(existingNode.parent);\n }\n\n return newNode;\n }\n\n public addParentNode(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n if (!existingNode) {\n throw Error(PARAM_IS_EMPTY + \"existingNode\");\n }\n\n const newNode = existingNode.addParent(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(newNode.parent);\n }\n\n return newNode;\n }\n\n public removeNode(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n if (!node.parent) {\n throw Error(\"Node has no parent\");\n }\n\n this.selectNodeHandler.removeFromSelection(node, true); // including children\n\n const parent = node.parent;\n node.remove();\n this._refreshElements(parent);\n\n return this.element;\n }\n\n public appendNode(newNodeInfo: NodeData, parentNodeParam?: Node): Node {\n const parentNode = parentNodeParam || this.tree;\n\n const node = parentNode.append(newNodeInfo);\n\n this._refreshElements(parentNode);\n\n return node;\n }\n\n public prependNode(newNodeInfo: NodeData, parentNodeParam?: Node): Node {\n const parentNode = parentNodeParam ?? this.tree;\n\n const node = parentNode.prepend(newNodeInfo);\n\n this._refreshElements(parentNode);\n\n return node;\n }\n\n public updateNode(node: Node, data: NodeData): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const idIsChanged =\n typeof data === \"object\" && data.id && data.id !== node.id;\n\n if (idIsChanged) {\n this.tree.removeNodeFromIndex(node);\n }\n\n node.setData(data);\n\n if (idIsChanged) {\n this.tree.addNodeToIndex(node);\n }\n\n if (\n typeof data === \"object\" &&\n data[\"children\"] &&\n data[\"children\"] instanceof Array\n ) {\n node.removeChildren();\n\n if (data.children.length) {\n node.loadFromData(data.children as Node[]);\n }\n }\n\n this._refreshElements(node);\n\n return this.element;\n }\n\n private isSelectedNodeInSubtree(subtree: Node): boolean {\n const selectedNode = this.getSelectedNode();\n\n if (!selectedNode) {\n return false;\n } else {\n return subtree === selectedNode || subtree.isParentOf(selectedNode);\n }\n }\n\n public moveNode(node: Node, targetNode: Node, position: string): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n if (!targetNode) {\n throw Error(PARAM_IS_EMPTY + \"targetNode\");\n }\n\n const positionIndex = getPosition(position);\n\n if (positionIndex !== undefined) {\n this.tree.moveNode(node, targetNode, positionIndex);\n this._refreshElements(null);\n }\n\n return this.element;\n }\n\n public getStateFromStorage(): SavedState | null {\n return this.saveStateHandler.getStateFromStorage();\n }\n\n public addToSelection(node: Node, mustSetFocus?: boolean): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this.selectNodeHandler.addToSelection(node);\n\n this._getNodeElementForNode(node).select(\n mustSetFocus === undefined ? true : mustSetFocus\n );\n\n this.saveState();\n\n return this.element;\n }\n\n public getSelectedNodes(): Node[] {\n return this.selectNodeHandler.getSelectedNodes();\n }\n\n public isNodeSelected(node: Node): boolean {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n return this.selectNodeHandler.isNodeSelected(node);\n }\n\n public removeFromSelection(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this.selectNodeHandler.removeFromSelection(node);\n\n this._getNodeElementForNode(node).deselect();\n this.saveState();\n\n return this.element;\n }\n\n public scrollToNode(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const nodeOffset = jQuery(node.element).offset();\n const nodeTop = nodeOffset ? nodeOffset.top : 0;\n\n const treeOffset = this.$el.offset();\n const treeTop = treeOffset ? treeOffset.top : 0;\n\n const top = nodeTop - treeTop;\n\n this.scrollHandler.scrollToY(top);\n\n return this.element;\n }\n\n public getState(): SavedState | null {\n return this.saveStateHandler.getState();\n }\n\n public setState(state: SavedState): JQuery {\n this.saveStateHandler.setInitialState(state);\n this._refreshElements(null);\n\n return this.element;\n }\n\n public setOption(option: string, value: unknown): JQuery {\n (this.options as unknown as Record<string, unknown>)[option] = value;\n return this.element;\n }\n\n public moveDown(): JQuery {\n const selectedNode = this.getSelectedNode();\n if (selectedNode) {\n this.keyHandler.moveDown(selectedNode);\n }\n\n return this.element;\n }\n\n public moveUp(): JQuery {\n const selectedNode = this.getSelectedNode();\n if (selectedNode) {\n this.keyHandler.moveUp(selectedNode);\n }\n\n return this.element;\n }\n\n public getVersion(): string {\n return __version__;\n }\n\n public _triggerEvent(\n eventName: string,\n values?: Record<string, unknown>\n ): JQuery.Event {\n const event = jQuery.Event(eventName, values);\n this.element.trigger(event);\n return event;\n }\n\n public _openNode(\n node: Node,\n slide = true,\n onFinished: OnFinishOpenNode | null\n ): void {\n const doOpenNode = (\n _node: Node,\n _slide: boolean,\n _onFinished: OnFinishOpenNode | null\n ): void => {\n const folderElement = new FolderElement(_node, this);\n folderElement.open(\n _onFinished,\n _slide,\n this.options.animationSpeed\n );\n };\n\n if (node.isFolder() || node.isEmptyFolder) {\n if (node.load_on_demand) {\n this.loadFolderOnDemand(node, slide, onFinished);\n } else {\n let parent = node.parent;\n\n while (parent) {\n // nb: do not open root element\n if (parent.parent) {\n doOpenNode(parent, false, null);\n }\n parent = parent.parent;\n }\n\n doOpenNode(node, slide, onFinished);\n this.saveState();\n }\n }\n }\n\n /*\n Redraw the tree or part of the tree.\n from_node: redraw this subtree\n */\n public _refreshElements(fromNode: Node | null): void {\n const mustSetFocus = this.selectNodeHandler.isFocusOnTree();\n const mustSelect = fromNode\n ? this.isSelectedNodeInSubtree(fromNode)\n : false;\n\n this.renderer.render(fromNode);\n\n if (mustSelect) {\n this.selectCurrentNode(mustSetFocus);\n }\n\n this._triggerEvent(\"tree.refresh\");\n }\n\n public _getNodeElementForNode(node: Node): NodeElement {\n if (node.isFolder()) {\n return new FolderElement(node, this);\n } else {\n return new NodeElement(node, this);\n }\n }\n\n public _getNodeElement($element: JQuery<HTMLElement>): NodeElement | null {\n const node = this.getNode($element);\n if (node) {\n return this._getNodeElementForNode(node);\n } else {\n return null;\n }\n }\n\n public _containsElement(element: HTMLElement): boolean {\n const node = this.getNode(jQuery(element));\n\n return node != null && node.tree === this.tree;\n }\n\n public _getScrollLeft(): number {\n return this.scrollHandler.getScrollLeft();\n }\n\n public init(): void {\n super.init();\n\n this.element = this.$el;\n this.isInitialized = false;\n\n this.options.rtl = this.getRtlOption();\n\n if (this.options.closedIcon == null) {\n this.options.closedIcon = this.getDefaultClosedIcon();\n }\n\n this.renderer = new ElementsRenderer(this);\n this.dataLoader = new DataLoader(this);\n this.saveStateHandler = new SaveStateHandler(this);\n this.selectNodeHandler = new SelectNodeHandler(this);\n this.dndHandler = new DragAndDropHandler(this);\n this.scrollHandler = new ScrollHandler(this);\n this.keyHandler = new KeyHandler(this);\n\n this.initData();\n\n this.element.on(\"click\", this.handleClick);\n this.element.on(\"dblclick\", this.handleDblclick);\n\n if (this.options.useContextMenu) {\n this.element.on(\"contextmenu\", this.handleContextmenu);\n }\n }\n\n public deinit(): void {\n this.element.empty();\n this.element.off();\n\n this.keyHandler.deinit();\n\n this.tree = new Node({}, true);\n\n super.deinit();\n }\n\n protected mouseCapture(positionInfo: PositionInfo): boolean | null {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseCapture(positionInfo);\n } else {\n return false;\n }\n }\n\n protected mouseStart(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseStart(positionInfo);\n } else {\n return false;\n }\n }\n\n protected mouseDrag(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n const result = this.dndHandler.mouseDrag(positionInfo);\n\n this.scrollHandler.checkScrolling();\n return result;\n } else {\n return false;\n }\n }\n\n protected mouseStop(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseStop(positionInfo);\n } else {\n return false;\n }\n }\n\n protected getMouseDelay(): number {\n return this.options.startDndDelay ?? 0;\n }\n\n private initData(): void {\n if (this.options.data) {\n this.doLoadData(this.options.data, null);\n } else {\n const dataUrl = this.getDataUrlInfo(null);\n\n if (dataUrl) {\n this.doLoadDataFromUrl(null, null, null);\n } else {\n this.doLoadData([], null);\n }\n }\n }\n\n private getDataUrlInfo(node: Node | null): JQuery.AjaxSettings | null {\n const dataUrl =\n this.options.dataUrl || (this.element.data(\"url\") as string | null);\n\n const getUrlFromString = (url: string): JQuery.AjaxSettings => {\n const urlInfo: JQuery.AjaxSettings = { url };\n\n setUrlInfoData(urlInfo);\n\n return urlInfo;\n };\n\n const setUrlInfoData = (urlInfo: JQuery.AjaxSettings): void => {\n if (node?.id) {\n // Load on demand of a subtree; add node parameter\n const data = { node: node.id };\n urlInfo[\"data\"] = data;\n } else {\n // Add selected_node parameter\n const selectedNodeId = this.getNodeIdToBeSelected();\n if (selectedNodeId) {\n const data = { selected_node: selectedNodeId };\n urlInfo[\"data\"] = data;\n }\n }\n };\n\n if (typeof dataUrl === \"function\") {\n return dataUrl(node);\n } else if (typeof dataUrl === \"string\") {\n return getUrlFromString(dataUrl);\n } else if (dataUrl && typeof dataUrl === \"object\") {\n setUrlInfoData(dataUrl);\n return dataUrl;\n } else {\n return null;\n }\n }\n\n private getNodeIdToBeSelected(): NodeId | null {\n if (this.options.saveState) {\n return this.saveStateHandler.getNodeIdToBeSelected();\n } else {\n return null;\n }\n }\n\n private initTree(data: NodeData[]): void {\n const doInit = (): void => {\n if (!this.isInitialized) {\n this.isInitialized = true;\n this._triggerEvent(\"tree.init\");\n }\n };\n\n if (!this.options.nodeClass) {\n return;\n }\n\n this.tree = new this.options.nodeClass(\n null,\n true,\n this.options.nodeClass\n );\n\n this.selectNodeHandler.clear();\n\n this.tree.loadFromData(data);\n\n const mustLoadOnDemand = this.setInitialState();\n\n this._refreshElements(null);\n\n if (!mustLoadOnDemand) {\n doInit();\n } else {\n // Load data on demand and then init the tree\n this.setInitialStateOnDemand(doInit);\n }\n }\n\n // Set initial state, either by restoring the state or auto-opening nodes\n // result: must load nodes on demand?\n private setInitialState(): boolean {\n const restoreState = (): [boolean, boolean] => {\n // result: is state restored, must load on demand?\n if (!this.options.saveState) {\n return [false, false];\n } else {\n const state = this.saveStateHandler.getStateFromStorage();\n\n if (!state) {\n return [false, false];\n } else {\n const mustLoadOnDemand =\n this.saveStateHandler.setInitialState(state);\n\n // return true: the state is restored\n return [true, mustLoadOnDemand];\n }\n }\n };\n\n const autoOpenNodes = (): boolean => {\n // result: must load on demand?\n if (this.options.autoOpen === false) {\n return false;\n }\n\n const maxLevel = this.getAutoOpenMaxLevel();\n let mustLoadOnDemand = false;\n\n this.tree.iterate((node: Node, level: number) => {\n if (node.load_on_demand) {\n mustLoadOnDemand = true;\n return false;\n } else if (!node.hasChildren()) {\n return false;\n } else {\n node.is_open = true;\n return level !== maxLevel;\n }\n });\n\n return mustLoadOnDemand;\n };\n\n let [isRestored, mustLoadOnDemand] = restoreState(); // eslint-disable-line prefer-const\n\n if (!isRestored) {\n mustLoadOnDemand = autoOpenNodes();\n }\n\n return mustLoadOnDemand;\n }\n\n // Set the initial state for nodes that are loaded on demand\n // Call cb_finished when done\n private setInitialStateOnDemand(cbFinished: () => void): void {\n const restoreState = (): boolean => {\n if (!this.options.saveState) {\n return false;\n } else {\n const state = this.saveStateHandler.getStateFromStorage();\n\n if (!state) {\n return false;\n } else {\n this.saveStateHandler.setInitialStateOnDemand(\n state,\n cbFinished\n );\n\n return true;\n }\n }\n };\n\n const autoOpenNodes = (): void => {\n const maxLevel = this.getAutoOpenMaxLevel();\n let loadingCount = 0;\n\n const loadAndOpenNode = (node: Node): void => {\n loadingCount += 1;\n this._openNode(node, false, () => {\n loadingCount -= 1;\n openNodes();\n });\n };\n\n const openNodes = (): void => {\n this.tree.iterate((node: Node, level: number) => {\n if (node.load_on_demand) {\n if (!node.is_loading) {\n loadAndOpenNode(node);\n }\n\n return false;\n } else {\n this._openNode(node, false, null);\n\n return level !== maxLevel;\n }\n });\n\n if (loadingCount === 0) {\n cbFinished();\n }\n };\n\n openNodes();\n };\n\n if (!restoreState()) {\n autoOpenNodes();\n }\n }\n\n private getAutoOpenMaxLevel(): number {\n if (this.options.autoOpen === true) {\n return -1;\n } else if (typeof this.options.autoOpen === \"number\") {\n return this.options.autoOpen;\n } else if (typeof this.options.autoOpen === \"string\") {\n return parseInt(this.options.autoOpen, 10);\n } else {\n return 0;\n }\n }\n\n private handleClick = (\n e: JQuery.ClickEvent<HTMLElement, any, HTMLElement, HTMLElement>\n ): void => {\n const clickTarget = this.getClickTarget(e.target);\n\n if (clickTarget) {\n if (clickTarget.type === \"button\") {\n this.toggle(clickTarget.node, this.options.slide);\n\n e.preventDefault();\n e.stopPropagation();\n } else if (clickTarget.type === \"label\") {\n const node = clickTarget.node;\n const event = this._triggerEvent(\"tree.click\", {\n node,\n click_event: e,\n });\n\n if (!event.isDefaultPrevented()) {\n this.doSelectNode(node);\n }\n }\n }\n };\n\n private handleDblclick = (\n e: JQuery.DoubleClickEvent<HTMLElement, any, HTMLElement, HTMLElement>\n ): void => {\n const clickTarget = this.getClickTarget(e.target);\n\n if (clickTarget?.type === \"label\") {\n this._triggerEvent(\"tree.dblclick\", {\n node: clickTarget.node,\n click_event: e,\n });\n }\n };\n\n private getClickTarget(element: EventTarget): ClickTarget | null {\n const $target = jQuery(element);\n\n const $button = $target.closest(\".jqtree-toggler\");\n\n if ($button.length) {\n const node = this.getNode($button as JQuery<HTMLElement>);\n\n if (node) {\n return {\n type: \"button\",\n node,\n };\n }\n } else {\n const $el = $target.closest(\".jqtree-element\");\n if ($el.length) {\n const node = this.getNode($el as JQuery<HTMLElement>);\n if (node) {\n return {\n type: \"label\",\n node,\n };\n }\n }\n }\n\n return null;\n }\n\n private getNode($element: JQuery<HTMLElement>): null | Node {\n const $li = $element.closest(\"li.jqtree_common\");\n if ($li.length === 0) {\n return null;\n } else {\n return $li.data(\"node\") as Node;\n }\n }\n\n private handleContextmenu = (\n e: JQuery.ContextMenuEvent<HTMLElement, any, HTMLElement, HTMLElement>\n ) => {\n const $div = jQuery(e.target).closest(\"ul.jqtree-tree .jqtree-element\");\n if ($div.length) {\n const node = this.getNode($div);\n if (node) {\n e.preventDefault();\n e.stopPropagation();\n\n this._triggerEvent(\"tree.contextmenu\", {\n node,\n click_event: e,\n });\n return false;\n }\n }\n\n return null;\n };\n\n private saveState(): void {\n if (this.options.saveState) {\n this.saveStateHandler.saveState();\n }\n }\n\n private selectCurrentNode(mustSetFocus: boolean): void {\n const node = this.getSelectedNode();\n if (node) {\n const nodeElement = this._getNodeElementForNode(node);\n if (nodeElement) {\n nodeElement.select(mustSetFocus);\n }\n }\n }\n\n private deselectCurrentNode(): void {\n const node = this.getSelectedNode();\n if (node) {\n this.removeFromSelection(node);\n }\n }\n\n private getDefaultClosedIcon(): string {\n if (this.options.rtl) {\n // triangle to the left\n return \"◀\";\n } else {\n // triangle to the right\n return \"►\";\n }\n }\n\n private getRtlOption(): boolean {\n if (this.options.rtl != null) {\n return this.options.rtl;\n } else {\n const dataRtl = this.element.data(\"rtl\") as unknown;\n\n if (\n dataRtl !== null &&\n dataRtl !== false &&\n dataRtl !== undefined\n ) {\n return true;\n } else {\n return false;\n }\n }\n }\n\n private doSelectNode(\n node: Node | null,\n optionsParam?: SelectNodeOptions\n ): void {\n const saveState = (): void => {\n if (this.options.saveState) {\n this.saveStateHandler.saveState();\n }\n };\n\n if (!node) {\n // Called with empty node -> deselect current node\n this.deselectCurrentNode();\n saveState();\n return;\n }\n const defaultOptions = { mustSetFocus: true, mustToggle: true };\n const selectOptions = { ...defaultOptions, ...(optionsParam || {}) };\n\n const canSelect = (): boolean => {\n if (this.options.onCanSelectNode) {\n return (\n this.options.selectable === true &&\n this.options.onCanSelectNode(node)\n );\n } else {\n return this.options.selectable === true;\n }\n };\n\n const openParents = (): void => {\n const parent = node.parent;\n\n if (parent && parent.parent && !parent.is_open) {\n this.openNode(parent, false);\n }\n };\n\n if (!canSelect()) {\n return;\n }\n\n if (this.selectNodeHandler.isNodeSelected(node)) {\n if (selectOptions.mustToggle) {\n this.deselectCurrentNode();\n this._triggerEvent(\"tree.select\", {\n node: null,\n previous_node: node,\n });\n }\n } else {\n const deselectedNode = this.getSelectedNode() || null;\n this.deselectCurrentNode();\n this.addToSelection(node, selectOptions.mustSetFocus);\n\n this._triggerEvent(\"tree.select\", {\n node,\n deselected_node: deselectedNode,\n });\n openParents();\n }\n\n saveState();\n }\n\n private doLoadData(data: NodeData[] | null, parentNode: Node | null): void {\n if (data) {\n if (parentNode) {\n this.deselectNodes(parentNode);\n this.loadSubtree(data, parentNode);\n } else {\n this.initTree(data);\n }\n\n if (this.isDragging()) {\n this.dndHandler.refresh();\n }\n }\n\n this._triggerEvent(\"tree.load_data\", {\n tree_data: data,\n parent_node: parentNode,\n });\n }\n\n private deselectNodes(parentNode: Node): void {\n const selectedNodesUnderParent =\n this.selectNodeHandler.getSelectedNodesUnder(parentNode);\n for (const n of selectedNodesUnderParent) {\n this.selectNodeHandler.removeFromSelection(n);\n }\n }\n\n private loadSubtree(data: NodeData[], parentNode: Node): void {\n parentNode.loadFromData(data);\n\n parentNode.load_on_demand = false;\n parentNode.is_loading = false;\n\n this._refreshElements(parentNode);\n }\n\n private doLoadDataFromUrl(\n urlInfoParam: string | JQuery.AjaxSettings | null,\n parentNode: Node | null,\n onFinished: HandleFinishedLoading | null\n ): void {\n const urlInfo = urlInfoParam || this.getDataUrlInfo(parentNode);\n\n this.dataLoader.loadFromUrl(urlInfo, parentNode, onFinished);\n }\n\n private loadFolderOnDemand(\n node: Node,\n slide = true,\n onFinished: OnFinishOpenNode | null\n ): void {\n node.is_loading = true;\n\n this.doLoadDataFromUrl(null, node, () => {\n this._openNode(node, slide, onFinished);\n });\n }\n}\n\nSimpleWidget.register(JqTreeWidget, \"tree\");\n"],"names":["version","Position","positionNames","before","Before","after","After","inside","Inside","none","None","getPositionName","position","name","Object","prototype","hasOwnProperty","call","getPosition","isNodeRecordWithChildren","data","_typeof","Array","Node","o","arguments","length","undefined","isRoot","nodeClass","_classCallCheck","_defineProperty","isEmptyFolder","load_on_demand","setData","children","parent","idMapping","Map","tree","_createClass","key","value","loadFromData","removeChildren","_iterator","_createForOfIteratorHelper","_step","s","n","done","node","createNode","addChild","err","e","f","push","setParent","addChildAtPosition","index","splice","removeChild","doRemoveChild","getChildIndex","indexOf","hasChildren","isFolder","iterate","callback","_iterate","level","_iterator2","_step2","child","result","moveNode","movedNode","targetNode","isParentOf","getData","includeParent","getDataFromNodes","nodes","map","tmpNode","k","v","getNodeByName","getNodeByCallback","getNodeByNameMustExist","concat","addAfter","nodeInfo","childIndex","addBefore","addParent","newParent","originalParent","_iterator3","_step3","remove","append","prepend","getLevel","getNodeById","nodeId","get","addNodeToIndex","id","set","removeNodeFromIndex","_this","_this$tree","getPreviousSibling","previousIndex","getNextSibling","nextIndex","getNodesByProperty","filter","getNextNode","includeChildren","nextSibling","getNextVisibleNode","is_open","getPreviousNode","previousSibling","getParent","getLastChild","getPreviousVisibleNode","lastChild","initFromData","_this2","addNode","nodeData","addChildren","childrenData","_iterator4","_step4","_this$tree2","_this$tree3","getNodeClass","_this$tree4","DragAndDropHandler","treeWidget","hoveredArea","hitAreas","isDragging","currentItem","positionInfo","mouseCapture","$element","jQuery","target","mustCaptureElement","options","onIsMoveHandle","nodeElement","_getNodeElement","onCanMove","mouseStart","_this$treeWidget$opti","pageX","pageY","refresh","offset","left","top","dragElement","DragElement","element","autoEscape","addClass","mouseDrag","move","area","findHoveredArea","canMoveToArea","stopOpenFolderTimer","mustOpenFolderTimer","startOpenFolderTimer","updateDropHint","removeDropHint","onDragMove","originalEvent","mouseStop","moveItem","clear","removeHover","removeHitAreas","removeClass","onDragStop","generateHitAreas","_getNodeElementForNode","hitAreasGenerator","HitAreasGenerator","getTreeDimensions","bottom","generate","is","onCanMoveTo","positionName","previousGhost","x","y","dimensions","right","low","high","mid","addDropHint","folder","openFolder","_openNode","slide","openFolderDelay","openFolderTimer","window","setTimeout","clearTimeout","previousParent","doMove","empty","_refreshElements","event","_triggerEvent","move_info","moved_node","target_node","previous_parent","do_move","original_event","isDefaultPrevented","el","width","height","_getScrollLeft","VisibleNodeIterator","_this3","isFirstNode","_iterateNode","nextNode","mustIterateInside","handleFirstNode","handleNode","handleOpenFolder","handleClosedFolder","childrenLength","forEach","_","i","nextChild","handleAfterOpenFolder","_VisibleNodeIterator","_inherits","_super","_createSuper","currentNode","treeBottom","_this4","_assertThisInitialized","positions","lastTop","previousTop","group","generateHitAreasForGroup","addPosition","getTop","positionsInGroup","positionCount","Math","min","areaHeight","round","areaTop","nodeName","offsetX","offsetY","$tree","text","html","css","isInt","isFunction","getBoolString","ElementsRenderer","openedIconElement","createButtonElement","openedIcon","closedIconElement","closedIcon","render","fromNode","renderFromNode","renderFromRoot","createDomElements","$previousLi","li","createLi","attachNodeData","isRootNode","ul","createUl","appendChild","classString","role","rtl","dragAndDrop","document","createElement","className","setAttribute","isSelected","Boolean","selectNodeHandler","isNodeSelected","mustShowFolder","showEmptyFolder","createFolderLi","createNodeLi","onCreateLi","setTreeItemAriaAttributes","buttonClasses","getButtonClasses","folderClasses","getFolderClasses","iconElement","div","buttonLink","cloneNode","buttonLeft","titleSpan","createTitleSpan","liClasses","join","classes","tabIndex","textContent","innerHTML","is_loading","createTextNode","DataLoader","loadFromUrl","urlInfo","parentNode","onFinished","$el","getDomElement","addLoadingClass","notifyLoading","stopLoading","removeLoadingClass","handleSuccess","loadData","parseData","handleError","jqXHR","onLoadFailed","submitRequest","isLoading","onLoading","urlInfoInput","_ajaxSettings$method","url","ajaxSettings","_objectSpread","method","cache","dataType","success","error","toUpperCase","ajax","dataFilter","getParsedData","JSON","parse","parsedData","KeyHandler","canHandleKeyboard","selectedNode","getSelectedNode","which","DOWN","moveDown","UP","moveUp","RIGHT","moveRight","LEFT","moveLeft","keyboardSupport","on","handleKeyDown","deinit","off","selectNode","openNode","closeNode","scrollHandler","isScrolledIntoView","find","scrollToNode","isFocusOnTree","register","widgetClass","widgetName","getDataKey","getWidgetData","dataKey","widget","SimpleWidget","createWidget","existingWidget","simpleWidgetClass","init","destroyWidget","destroy","removeData","callFunction","functionName","args","simpleWidget","widgetFunction","apply","fn","argument1","_len","_key","defaults","constructor","getPositionInfoFromMouseEvent","getPositionInfoFromTouch","touch","MouseWidget","_SimpleWidget","button","handleMouseDown","cancelable","preventDefault","handleMouseMove","handleMouseUp","touches","changedTouches","addEventListener","mouseDown","passive","touchStart","isMouseStarted","mouseDelayTimer","isMouseDelayMet","mouseDownInfo","removeEventListener","removeMouseMoveEventListeners","handleStartMouse","mouseMove","touchMove","mouseUp","touchEnd","mouseDelay","getMouseDelay","startMouseDelayTimer","SaveStateHandler","saveState","state","stringify","getState","onSetStateFromStorage","supportsLocalStorage","localStorage","setItem","getKeyName","getStateFromStorage","jsonData","loadFromStorage","parseState","getOpenNodeIds","openNodes","getSelectedNodeIds","selectedNodeIds","getSelectedNodes","open_nodes","selected_node","setInitialState","mustLoadOnDemand","openInitialNodes","resetSelection","selectInitialNodes","setInitialStateOnDemand","cbFinished","doSetInitialStateOnDemand","getNodeIdToBeSelected","onGetStateFromStorage","getItem","nodeIds","selectCount","addToSelection","selectedNodes","removeFromSelection","nodeIdsParam","loadingCount","newNodesIds","loadAndOpenNode","testSupport","sessionStorage","removeItem","_supportsLocalStorage","ScrollHandler","isInitialized","checkScrolling","ensureInit","checkVerticalScrolling","checkHorizontalScrolling","scrollToY","$scrollParent","scrollTop","treeTop","elementBottom","viewBottom","elementTop","viewTop","elHeight","originalTop","scrollParentTop","windowHeight","getScrollLeft","scrollLeft","initScrollParent","_$scrollParent$","getParentWithOverflow","cssAttributes","hasOverFlow","_i","_cssAttributes","attr","overflowValue","parents","setDocumentAsScrollParent","tagName","handleVerticalScrollingWithScrollParent","scrollParent","distanceBottom","offsetHeight","refreshHitAreas","handleVerticalScrollingWithDocument","distanceTop","dndHandler","handleHorizontalScrollingWithParent","handleHorizontalScrollingWithDocument","scrollParentOffset","canScrollRight","clientWidth","scrollWidth","canScrollLeft","rightEdge","leftEdge","isNearRightEdge","isNearLeftEdge","max","$document","windowWidth","SelectNodeHandler","Set","selectedSingleNode","getSelectedNodesUnder","has","add","activeElement","_containsElement","NodeElement","mustShowBorderDropHint","BorderDropHint","GhostDropHint","select","mustSetFocus","$li","getLi","$span","getSpan","trigger","deselect","removeAttr","getUl","FolderElement","_NodeElement","open","animationSpeed","$button","getButton","buttonEl","renderer","icon","doOpen","$titleSpan","slideDown","show","close","doClose","slideUp","hide","$div","elWidth","outerHeight","$hint","$ghost","moveAfter","moveBefore","moveInsideOpenFolder","moveInside","_this$node$children$","childElement","NODE_PARAM_IS_EMPTY","PARAM_IS_EMPTY","JqTreeWidget","_MouseWidget","clickTarget","getClickTarget","type","toggle","stopPropagation","click_event","doSelectNode","closest","getNode","slideParam","Error","getTree","optionsParam","toJson","doLoadData","loadDataFromUrl","param1","param2","param3","doLoadDataFromUrl","reload","getNodeByHtmlElement","parseParams","_this2$options$slide","_parseParams","_parseParams2","_slicedToArray","addNodeAfter","newNodeInfo","existingNode","newNode","addNodeBefore","addParentNode","removeNode","appendNode","parentNodeParam","prependNode","updateNode","idIsChanged","isSelectedNodeInSubtree","subtree","positionIndex","saveStateHandler","nodeOffset","nodeTop","treeOffset","setState","setOption","option","keyHandler","getVersion","__version__","eventName","values","Event","doOpenNode","_node","_slide","_onFinished","folderElement","loadFolderOnDemand","mustSelect","selectCurrentNode","_get","_getPrototypeOf","getRtlOption","getDefaultClosedIcon","dataLoader","initData","handleClick","handleDblclick","useContextMenu","handleContextmenu","_this$options$startDn","startDndDelay","dataUrl","getDataUrlInfo","getUrlFromString","setUrlInfoData","selectedNodeId","initTree","_this5","doInit","_this6","restoreState","autoOpenNodes","autoOpen","maxLevel","getAutoOpenMaxLevel","_restoreState","_restoreState2","isRestored","_this7","parseInt","$target","deselectCurrentNode","dataRtl","_this8","defaultOptions","mustToggle","selectOptions","canSelect","onCanSelectNode","selectable","openParents","previous_node","deselectedNode","deselected_node","deselectNodes","loadSubtree","tree_data","parent_node","selectedNodesUnderParent","urlInfoParam","_this9"],"mappings":"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"}
|