jqtree 1.7.5 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc +13 -3
- package/.github/workflows/ci.yml +6 -6
- package/.github/workflows/codeql-analysis.yml +4 -4
- package/.github/workflows/size.yml +3 -3
- package/.github/workflows/static.yml +1 -1
- package/bower.json +1 -1
- package/config/babel.config.json +1 -1
- package/config/jest.config.js +4 -0
- package/config/jest.polyfills.js +14 -0
- package/config/production +2 -0
- package/devserver/devserver_scroll.js +8 -0
- package/devserver/test_index.html +9 -0
- package/devserver/test_scroll.html +28 -0
- package/devserver/test_scroll_container.html +39 -0
- package/docs/.ruby-version +1 -1
- package/docs/_config.yml +1 -1
- package/docs/_entries/general/changelog.md +11 -0
- package/docs/_entries/multiple_selection/get-selected-nodes.md +1 -1
- package/docs/_entries/node/getnextnode.md +3 -6
- package/docs/_entries/node/getnextsibling.md +1 -1
- package/docs/_entries/node/getnextvisiblenode.md +8 -5
- package/docs/_entries/node/getpreviousnode.md +12 -0
- package/docs/_entries/node/getprevioussibling.md +1 -1
- package/docs/_entries/node/getpreviousvisiblenode.md +6 -5
- package/package.json +35 -29
- package/src/dataLoader.ts +57 -34
- package/src/dragAndDropHandler/dragElement.ts +54 -0
- package/src/dragAndDropHandler/generateHitAreas.ts +176 -0
- package/src/dragAndDropHandler/index.ts +454 -0
- package/src/dragAndDropHandler/iterateVisibleNodes.ts +91 -0
- package/src/dragAndDropHandler/types.ts +13 -0
- package/src/elementsRenderer.ts +75 -40
- package/src/jqtreeMethodTypes.ts +40 -0
- package/src/jqtreeOptions.ts +43 -25
- package/src/keyHandler.ts +59 -30
- package/src/mouseHandler.ts +385 -0
- package/src/mouseUtils.ts +23 -0
- package/src/node.ts +1 -29
- package/src/nodeElement/borderDropHint.ts +32 -0
- package/src/nodeElement/folderElement.ts +133 -0
- package/src/nodeElement/ghostDropHint.ts +69 -0
- package/src/nodeElement/index.ts +102 -0
- package/src/playwright/coverage.ts +4 -7
- package/src/playwright/playwright.test.ts +150 -53
- package/src/playwright/testUtils.ts +28 -5
- package/src/position.ts +28 -0
- package/src/saveStateHandler.ts +75 -26
- package/src/scrollHandler/containerScrollParent.ts +13 -23
- package/src/scrollHandler/createScrollParent.ts +22 -22
- package/src/scrollHandler/documentScrollParent.ts +16 -13
- package/src/scrollHandler.ts +13 -15
- package/src/selectNodeHandler.ts +10 -16
- package/src/test/jqTree/events.test.ts +97 -30
- package/src/test/jqTree/keyboard.test.ts +18 -23
- package/src/test/jqTree/loadOnDemand.test.ts +22 -15
- package/src/test/jqTree/methods.test.ts +40 -14
- package/src/test/jqTree/mouse.test.ts +82 -0
- package/src/test/jqTree/options.test.ts +24 -12
- package/src/test/node.test.ts +3 -2
- package/src/test/{nodeUtil.test.ts → position.test.ts} +1 -1
- package/src/tree.jquery.ts +314 -208
- package/src/util.ts +12 -0
- package/src/version.ts +1 -1
- package/tree.jquery.debug.js +2594 -3419
- package/tree.jquery.debug.js.map +1 -1
- package/tree.jquery.js +3 -3
- package/tree.jquery.js.map +1 -1
- package/tsconfig.json +5 -3
- package/docs/_entries/functions/get-selected-nodes.md +0 -10
- package/lib/dataLoader.js +0 -123
- package/lib/dragAndDropHandler.js +0 -588
- package/lib/elementsRenderer.js +0 -267
- package/lib/jqtreeOptions.js +0 -1
- package/lib/keyHandler.js +0 -111
- package/lib/mouse.widget.js +0 -255
- package/lib/node.js +0 -708
- package/lib/nodeElement.js +0 -274
- package/lib/nodeUtils.js +0 -10
- package/lib/playwright/coverage.js +0 -99
- package/lib/playwright/playwright.test.js +0 -606
- package/lib/playwright/testUtils.js +0 -210
- package/lib/saveStateHandler.js +0 -277
- package/lib/scrollHandler/containerScrollParent.js +0 -160
- package/lib/scrollHandler/createScrollParent.js +0 -57
- package/lib/scrollHandler/documentScrollParent.js +0 -169
- package/lib/scrollHandler/scrollParent.js +0 -58
- package/lib/scrollHandler/types.js +0 -1
- package/lib/scrollHandler.js +0 -71
- package/lib/selectNodeHandler.js +0 -128
- package/lib/simple.widget.js +0 -158
- package/lib/test/global.d.js +0 -3
- package/lib/test/jqTree/accessibility.test.js +0 -37
- package/lib/test/jqTree/create.test.js +0 -48
- package/lib/test/jqTree/events.test.js +0 -210
- package/lib/test/jqTree/keyboard.test.js +0 -225
- package/lib/test/jqTree/loadOnDemand.test.js +0 -218
- package/lib/test/jqTree/methods.test.js +0 -1348
- package/lib/test/jqTree/options.test.js +0 -548
- package/lib/test/jqTree/scrollHandler/containerScrollParent.test.js +0 -94
- package/lib/test/node.test.js +0 -1202
- package/lib/test/nodeUtil.test.js +0 -27
- package/lib/test/nodeUtils.test.js +0 -20
- package/lib/test/support/exampleData.js +0 -35
- package/lib/test/support/jqTreeMatchers.js +0 -70
- package/lib/test/support/matchers.d.js +0 -1
- package/lib/test/support/setupTests.js +0 -7
- package/lib/test/support/testUtil.js +0 -29
- package/lib/test/support/treeStructure.js +0 -38
- package/lib/test/util.test.js +0 -26
- package/lib/tree.jquery.d.js +0 -1
- package/lib/tree.jquery.js +0 -1105
- package/lib/types.js +0 -1
- package/lib/typings.d.js +0 -2
- package/lib/util.js +0 -15
- package/lib/version.js +0 -8
- package/src/dragAndDropHandler.ts +0 -713
- package/src/mouse.widget.ts +0 -266
- package/src/nodeElement.ts +0 -272
- package/src/types.ts +0 -19
package/tree.jquery.debug.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.jquery.debug.js","sources":["src/version.ts","src/nodeUtils.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/containerScrollParent.ts","src/scrollHandler/documentScrollParent.ts","src/scrollHandler/createScrollParent.ts","src/scrollHandler.ts","src/selectNodeHandler.ts","src/nodeElement.ts","src/tree.jquery.ts"],"sourcesContent":["const version = \"1.7.5\";\n\nexport default version;\n","interface NodeRecordWithChildren extends NodeRecord {\n children: NodeData[];\n}\n\nexport const isNodeRecordWithChildren = (\n data: NodeData,\n): data is NodeRecordWithChildren =>\n typeof data === \"object\" &&\n \"children\" in data &&\n data[\"children\"] instanceof Array;\n","import { isNodeRecordWithChildren } from \"./nodeUtils\";\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\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(\n nodeData: NodeData | null = null,\n isRoot = false,\n nodeClass = Node,\n ) {\n this.name = \"\";\n this.load_on_demand = false;\n\n this.isEmptyFolder =\n nodeData != null &&\n isNodeRecordWithChildren(nodeData) &&\n nodeData.children.length === 0;\n\n this.setData(nodeData);\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 childData of data) {\n const node = this.createNode(childData);\n this.addChild(node);\n\n if (isNodeRecordWithChildren(childData)) {\n node.loadFromData(childData.children);\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 node.loadChildrenFromData(nodeInfo);\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 node.loadChildrenFromData(nodeInfo);\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 node.loadChildrenFromData(nodeInfo);\n return node;\n }\n\n public prepend(nodeInfo: NodeData): Node {\n const node = this.createNode(nodeInfo);\n this.addChildAtPosition(node, 0);\n\n node.loadChildrenFromData(nodeInfo);\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 // Load children data from nodeInfo if it has children\n private loadChildrenFromData(nodeInfo: NodeData) {\n if (isNodeRecordWithChildren(nodeInfo) && nodeInfo.children.length) {\n this.loadFromData(nodeInfo.children);\n }\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\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 }\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.currentItem.$element.addClass(\"jqtree-moving\");\n\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\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\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 = positions[0]?.top ?? 0;\n let group = [];\n const hitAreas: HitArea[] = [];\n\n for (const position of positions) {\n if (position.top !== previousTop && group.length) {\n this.generateHitAreasForGroup(\n hitAreas,\n group,\n previousTop,\n position.top,\n );\n\n previousTop = position.top;\n group = [];\n }\n\n group.push(position);\n }\n\n 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\n // Dnd over the current element is not possible: add a position with type None for the top and the bottom.\n const top = this.getTop($element);\n const height = $element.height() || 0;\n this.addPosition(node, Position.None, top);\n\n if (height > 5) {\n // Subtract 5 pixels to allow more space for the next element.\n this.addPosition(node, Position.None, top + height - 5);\n }\n\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 && position.position !== Position.None) {\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 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 type { ScrollParent } from \"./types\";\n\ntype HorizontalScrollDirection = \"left\" | \"right\";\ntype VerticalScrollDirection = \"bottom\" | \"top\";\n\ninterface Params {\n $container: JQuery<HTMLElement>;\n refreshHitAreas: () => void;\n $treeElement: JQuery<HTMLElement>;\n}\n\nexport default class ContainerScrollParent implements ScrollParent {\n private $container: JQuery<HTMLElement>;\n private horizontalScrollDirection?: HorizontalScrollDirection;\n private horizontalScrollTimeout?: number;\n private refreshHitAreas: () => void;\n private scrollParentBottom?: number;\n private scrollParentTop?: number;\n private verticalScrollTimeout?: number;\n private verticalScrollDirection?: VerticalScrollDirection;\n\n constructor({ $container, refreshHitAreas }: Params) {\n this.$container = $container;\n this.refreshHitAreas = refreshHitAreas;\n }\n\n public checkHorizontalScrolling(pageX: number): void {\n const newHorizontalScrollDirection =\n this.getNewHorizontalScrollDirection(pageX);\n\n if (this.horizontalScrollDirection !== newHorizontalScrollDirection) {\n this.horizontalScrollDirection = newHorizontalScrollDirection;\n\n if (this.horizontalScrollTimeout != null) {\n window.clearTimeout(this.verticalScrollTimeout);\n }\n\n if (newHorizontalScrollDirection) {\n this.horizontalScrollTimeout = window.setTimeout(\n this.scrollHorizontally.bind(this),\n 40,\n );\n }\n }\n }\n\n public checkVerticalScrolling(pageY: number) {\n const newVerticalScrollDirection =\n this.getNewVerticalScrollDirection(pageY);\n\n if (this.verticalScrollDirection !== newVerticalScrollDirection) {\n this.verticalScrollDirection = newVerticalScrollDirection;\n\n if (this.verticalScrollTimeout != null) {\n window.clearTimeout(this.verticalScrollTimeout);\n this.verticalScrollTimeout = undefined;\n }\n\n if (newVerticalScrollDirection) {\n this.verticalScrollTimeout = window.setTimeout(\n this.scrollVertically.bind(this),\n 40,\n );\n }\n }\n }\n\n public getScrollLeft(): number {\n return this.$container.scrollLeft() || 0;\n }\n\n public scrollToY(top: number): void {\n const container = this.$container.get(0) as HTMLElement;\n container.scrollTop = top;\n }\n\n public stopScrolling() {\n this.horizontalScrollDirection = undefined;\n this.verticalScrollDirection = undefined;\n this.scrollParentTop = undefined;\n this.scrollParentBottom = undefined;\n }\n\n private getNewHorizontalScrollDirection(\n pageX: number,\n ): HorizontalScrollDirection | undefined {\n const scrollParentOffset = this.$container.offset();\n if (!scrollParentOffset) {\n return undefined;\n }\n\n const container = this.$container.get(0) as HTMLElement;\n\n const rightEdge = scrollParentOffset.left + container.clientWidth;\n const leftEdge = scrollParentOffset.left;\n const isNearRightEdge = pageX > rightEdge - 20;\n const isNearLeftEdge = pageX < leftEdge + 20;\n\n if (isNearRightEdge) {\n return \"right\";\n } else if (isNearLeftEdge) {\n return \"left\";\n }\n\n return undefined;\n }\n\n private getNewVerticalScrollDirection(\n pageY: number,\n ): VerticalScrollDirection | undefined {\n if (pageY < this.getScrollParentTop()) {\n return \"top\";\n }\n\n if (pageY > this.getScrollParentBottom()) {\n return \"bottom\";\n }\n\n return undefined;\n }\n\n private scrollHorizontally() {\n if (!this.horizontalScrollDirection) {\n return;\n }\n\n const distance = this.horizontalScrollDirection === \"left\" ? -20 : 20;\n const container = this.$container.get(0) as HTMLElement;\n\n container.scrollBy({\n left: distance,\n top: 0,\n behavior: \"instant\",\n });\n\n this.refreshHitAreas();\n\n setTimeout(this.scrollHorizontally.bind(this), 40);\n }\n\n private scrollVertically() {\n if (!this.verticalScrollDirection) {\n return;\n }\n\n const distance = this.verticalScrollDirection === \"top\" ? -20 : 20;\n const container = this.$container.get(0) as HTMLElement;\n\n container.scrollBy({\n left: 0,\n top: distance,\n behavior: \"instant\",\n });\n\n this.refreshHitAreas();\n\n setTimeout(this.scrollVertically.bind(this), 40);\n }\n\n private getScrollParentTop() {\n if (this.scrollParentTop == null) {\n this.scrollParentTop = this.$container.offset()?.top || 0;\n }\n\n return this.scrollParentTop;\n }\n\n private getScrollParentBottom() {\n if (this.scrollParentBottom == null) {\n this.scrollParentBottom =\n this.getScrollParentTop() +\n (this.$container.innerHeight() ?? 0);\n }\n\n return this.scrollParentBottom;\n }\n}\n","import type { ScrollParent } from \"./types\";\n\ntype HorizontalScrollDirection = \"left\" | \"right\";\ntype VerticalScrollDirection = \"bottom\" | \"top\";\n\nexport default class DocumentScrollParent implements ScrollParent {\n private $element: JQuery<HTMLElement>;\n private horizontalScrollDirection?: HorizontalScrollDirection;\n private horizontalScrollTimeout?: number;\n private refreshHitAreas: () => void;\n private verticalScrollDirection?: VerticalScrollDirection;\n private verticalScrollTimeout?: number;\n private documentScrollHeight?: number;\n private documentScrollWidth?: number;\n\n constructor($element: JQuery<HTMLElement>, refreshHitAreas: () => void) {\n this.$element = $element;\n this.refreshHitAreas = refreshHitAreas;\n }\n\n public checkHorizontalScrolling(pageX: number): void {\n const newHorizontalScrollDirection =\n this.getNewHorizontalScrollDirection(pageX);\n\n if (this.horizontalScrollDirection !== newHorizontalScrollDirection) {\n this.horizontalScrollDirection = newHorizontalScrollDirection;\n\n if (this.horizontalScrollTimeout != null) {\n window.clearTimeout(this.horizontalScrollTimeout);\n }\n\n if (newHorizontalScrollDirection) {\n this.horizontalScrollTimeout = window.setTimeout(\n this.scrollHorizontally.bind(this),\n 40,\n );\n }\n }\n }\n\n public checkVerticalScrolling(pageY: number) {\n const newVerticalScrollDirection =\n this.getNewVerticalScrollDirection(pageY);\n\n if (this.verticalScrollDirection !== newVerticalScrollDirection) {\n this.verticalScrollDirection = newVerticalScrollDirection;\n\n if (this.verticalScrollTimeout != null) {\n window.clearTimeout(this.verticalScrollTimeout);\n this.verticalScrollTimeout = undefined;\n }\n\n if (newVerticalScrollDirection) {\n this.verticalScrollTimeout = window.setTimeout(\n this.scrollVertically.bind(this),\n 40,\n );\n }\n }\n }\n\n public getScrollLeft(): number {\n return document.documentElement.scrollLeft;\n }\n\n public scrollToY(top: number): void {\n const offset = this.$element.offset();\n const treeTop = offset ? offset.top : 0;\n\n jQuery(document).scrollTop(top + treeTop);\n }\n\n public stopScrolling() {\n this.horizontalScrollDirection = undefined;\n this.verticalScrollDirection = undefined;\n this.documentScrollHeight = undefined;\n this.documentScrollWidth = undefined;\n }\n\n private getNewHorizontalScrollDirection(\n pageX: number,\n ): HorizontalScrollDirection | undefined {\n const $document = jQuery(document);\n\n const scrollLeft = $document.scrollLeft() || 0;\n const windowWidth = jQuery(window).width() || 0;\n\n const isNearRightEdge = pageX > windowWidth - 20;\n const isNearLeftEdge = pageX - scrollLeft < 20;\n\n if (isNearRightEdge && this.canScrollRight()) {\n return \"right\";\n }\n\n if (isNearLeftEdge) {\n return \"left\";\n }\n\n return undefined;\n }\n\n private canScrollRight() {\n const documentElement = document.documentElement;\n\n return (\n documentElement.scrollLeft + documentElement.clientWidth <\n this.getDocumentScrollWidth()\n );\n }\n\n private canScrollDown() {\n const documentElement = document.documentElement;\n\n return (\n documentElement.scrollTop + documentElement.clientHeight <\n this.getDocumentScrollHeight()\n );\n }\n\n private getDocumentScrollHeight() {\n // Store the original scroll height because the scroll height can increase when the drag element is moved beyond the scroll height.\n if (this.documentScrollHeight == null) {\n this.documentScrollHeight = document.documentElement.scrollHeight;\n }\n\n return this.documentScrollHeight;\n }\n\n private getDocumentScrollWidth() {\n // Store the original scroll width because the scroll width can increase when the drag element is moved beyond the scroll width.\n if (this.documentScrollWidth == null) {\n this.documentScrollWidth = document.documentElement.scrollWidth;\n }\n\n return this.documentScrollWidth;\n }\n\n private getNewVerticalScrollDirection(\n pageY: number,\n ): VerticalScrollDirection | undefined {\n const scrollTop = jQuery(document).scrollTop() || 0;\n const distanceTop = pageY - scrollTop;\n\n if (distanceTop < 20) {\n return \"top\";\n }\n\n const windowHeight = jQuery(window).height() || 0;\n\n if (windowHeight - (pageY - scrollTop) < 20 && this.canScrollDown()) {\n return \"bottom\";\n }\n\n return undefined;\n }\n\n private scrollHorizontally() {\n if (!this.horizontalScrollDirection) {\n return;\n }\n\n const distance = this.horizontalScrollDirection === \"left\" ? -20 : 20;\n window.scrollBy({ left: distance, top: 0, behavior: \"instant\" });\n\n this.refreshHitAreas();\n\n setTimeout(this.scrollHorizontally.bind(this), 40);\n }\n\n private scrollVertically() {\n if (!this.verticalScrollDirection) {\n return;\n }\n\n const distance = this.verticalScrollDirection === \"top\" ? -20 : 20;\n window.scrollBy({ left: 0, top: distance, behavior: \"instant\" });\n\n this.refreshHitAreas();\n\n setTimeout(this.scrollVertically.bind(this), 40);\n }\n}\n","import type { ScrollParent } from \"./types\";\nimport ContainerScrollParent from \"./containerScrollParent\";\nimport DocumentScrollParent from \"./documentScrollParent\";\n\nconst hasOverFlow = ($element: JQuery<HTMLElement>): boolean => {\n for (const attr of [\"overflow\", \"overflow-y\"]) {\n const overflowValue = $element.css(attr);\n if (overflowValue === \"auto\" || overflowValue === \"scroll\") {\n return true;\n }\n }\n\n return false;\n};\n\nconst getParentWithOverflow = (\n $treeElement: JQuery<HTMLElement>,\n): JQuery<HTMLElement> | null => {\n if (hasOverFlow($treeElement)) {\n return $treeElement;\n }\n\n for (const element of $treeElement.parents().get()) {\n const $element = jQuery(element);\n if (hasOverFlow($element)) {\n return $element;\n }\n }\n\n return null;\n};\n\nconst createScrollParent = (\n $treeElement: JQuery<HTMLElement>,\n refreshHitAreas: () => void,\n): ScrollParent => {\n const $container = getParentWithOverflow($treeElement);\n\n if ($container?.length && $container[0]?.tagName !== \"HTML\") {\n return new ContainerScrollParent({\n $container,\n refreshHitAreas,\n $treeElement,\n });\n } else {\n return new DocumentScrollParent($treeElement, refreshHitAreas);\n }\n};\n\nexport default createScrollParent;\n","import { JqTreeWidget } from \"./tree.jquery\";\nimport { PositionInfo } from \"./types\";\nimport { ScrollParent } from \"./scrollHandler/types\";\nimport createScrollParent from \"./scrollHandler/createScrollParent\";\n\nexport default class ScrollHandler {\n private treeWidget: JqTreeWidget;\n private scrollParent?: ScrollParent;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n this.scrollParent = undefined;\n }\n\n public checkScrolling(positionInfo: PositionInfo): void {\n this.checkVerticalScrolling(positionInfo);\n this.checkHorizontalScrolling(positionInfo);\n }\n\n public stopScrolling() {\n this.getScrollParent().stopScrolling();\n }\n\n public scrollToY(top: number): void {\n this.getScrollParent().scrollToY(top);\n }\n\n public getScrollLeft(): number {\n return this.getScrollParent().getScrollLeft();\n }\n\n private checkVerticalScrolling(positionInfo: PositionInfo): void {\n if (positionInfo.pageY == null) {\n return;\n }\n\n this.getScrollParent().checkVerticalScrolling(positionInfo.pageY);\n }\n\n private checkHorizontalScrolling(positionInfo: PositionInfo): void {\n if (positionInfo.pageX == null) {\n return;\n }\n\n this.getScrollParent().checkHorizontalScrolling(positionInfo.pageX);\n }\n\n private getScrollParent(): ScrollParent {\n if (!this.scrollParent) {\n this.scrollParent = createScrollParent(\n this.treeWidget.$el,\n this.treeWidget.refreshHitAreas.bind(this.treeWidget),\n );\n }\n\n return this.scrollParent;\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 nodeTop = jQuery(node.element).offset()?.top ?? 0;\n const treeTop = this.$el.offset()?.top ?? 0;\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(positionInfo);\n return result;\n } else {\n return false;\n }\n }\n\n protected mouseStop(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n this.scrollHandler.stopScrolling();\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","isNodeRecordWithChildren","data","_typeof","Array","Position","positionNames","before","Before","after","After","inside","Inside","none","None","getPositionName","position","name","Object","prototype","hasOwnProperty","call","getPosition","Node","nodeData","arguments","length","undefined","isRoot","nodeClass","_classCallCheck","_defineProperty","load_on_demand","isEmptyFolder","children","setData","parent","idMapping","Map","tree","_createClass","key","value","o","loadFromData","removeChildren","_iterator","_createForOfIteratorHelper","_step","s","n","done","childData","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","loadChildrenFromData","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","addChildren","childrenData","_iterator4","_step4","_this$tree2","_this$tree3","getNodeClass","_this$tree4","DragAndDropHandler","treeWidget","hoveredArea","hitAreas","isDragging","currentItem","mouseCapture","positionInfo","$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","_positions$0$top","_positions$","previousTop","group","generateHitAreasForGroup","getTop","addPosition","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","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","ContainerScrollParent","_ref","$container","refreshHitAreas","checkHorizontalScrolling","newHorizontalScrollDirection","getNewHorizontalScrollDirection","horizontalScrollDirection","horizontalScrollTimeout","verticalScrollTimeout","scrollHorizontally","bind","checkVerticalScrolling","newVerticalScrollDirection","getNewVerticalScrollDirection","verticalScrollDirection","scrollVertically","getScrollLeft","scrollLeft","scrollToY","container","scrollTop","stopScrolling","scrollParentTop","scrollParentBottom","scrollParentOffset","rightEdge","clientWidth","leftEdge","isNearRightEdge","isNearLeftEdge","getScrollParentTop","getScrollParentBottom","distance","scrollBy","behavior","_this$$container$offs","_this$$container$inne","innerHeight","DocumentScrollParent","documentElement","treeTop","documentScrollHeight","documentScrollWidth","$document","windowWidth","canScrollRight","getDocumentScrollWidth","canScrollDown","clientHeight","getDocumentScrollHeight","scrollHeight","scrollWidth","distanceTop","windowHeight","hasOverFlow","_i","_arr","attr","overflowValue","getParentWithOverflow","$treeElement","parents","createScrollParent","_$container$","tagName","ScrollHandler","scrollParent","checkScrolling","getScrollParent","SelectNodeHandler","Set","selectedSingleNode","getSelectedNodesUnder","has","add","activeElement","_containsElement","NodeElement","mustShowBorderDropHint","BorderDropHint","GhostDropHint","select","mustSetFocus","$li","getLi","$span","getSpan","trigger","deselect","removeAttr","getUl","find","FolderElement","_NodeElement","open","animationSpeed","$button","getButton","buttonEl","renderer","icon","doOpen","$titleSpan","slideDown","show","close","doClose","slideUp","hide","$div","elWidth","max","elHeight","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","dndHandler","addNodeAfter","newNodeInfo","existingNode","newNode","addNodeBefore","addParentNode","removeNode","appendNode","parentNodeParam","prependNode","updateNode","idIsChanged","isSelectedNodeInSubtree","subtree","positionIndex","saveStateHandler","scrollToNode","_jQuery$offset$top","_jQuery$offset","_this$$el$offset$top","_this$$el$offset","nodeTop","scrollHandler","setState","setOption","option","keyHandler","getVersion","__version__","eventName","values","Event","doOpenNode","_node","_slide","_onFinished","folderElement","loadFolderOnDemand","mustSelect","selectCurrentNode","_get","_getPrototypeOf","isInitialized","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/position.ts","src/dragAndDropHandler/dragElement.ts","src/util.ts","src/dragAndDropHandler/iterateVisibleNodes.ts","src/dragAndDropHandler/generateHitAreas.ts","src/dragAndDropHandler/index.ts","src/elementsRenderer.ts","src/dataLoader.ts","src/keyHandler.ts","src/mouseUtils.ts","src/mouseHandler.ts","src/saveStateHandler.ts","src/scrollHandler/containerScrollParent.ts","src/scrollHandler/documentScrollParent.ts","src/scrollHandler/createScrollParent.ts","src/scrollHandler.ts","src/selectNodeHandler.ts","src/simple.widget.ts","src/nodeUtils.ts","src/node.ts","src/nodeElement/borderDropHint.ts","src/nodeElement/ghostDropHint.ts","src/nodeElement/index.ts","src/nodeElement/folderElement.ts","src/tree.jquery.ts"],"sourcesContent":["const version = \"1.8.1\";\n\nexport default version;\n","export 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\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","interface DragElementParams {\n autoEscape: boolean;\n nodeName: string;\n offsetX: number;\n offsetY: number;\n treeElement: HTMLElement;\n}\n\nclass DragElement {\n private offsetX: number;\n private offsetY: number;\n private element: HTMLElement;\n\n constructor({\n autoEscape,\n nodeName,\n offsetX,\n offsetY,\n treeElement,\n }: DragElementParams) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n this.element = this.createElement(nodeName, autoEscape);\n\n treeElement.appendChild(this.element);\n }\n\n public move(pageX: number, pageY: number): void {\n this.element.style.left = `${pageX - this.offsetX}px`;\n this.element.style.top = `${pageY - this.offsetY}px`;\n }\n\n public remove(): void {\n this.element.remove();\n }\n\n private createElement(nodeName: string, autoEscape: boolean) {\n const element = document.createElement(\"span\");\n element.classList.add(\"jqtree-title\", \"jqtree-dragging\");\n\n if (autoEscape) {\n element.textContent = nodeName;\n } else {\n element.innerHTML = nodeName;\n }\n\n element.style.position = \"absolute\";\n\n return element;\n }\n}\n\nexport default DragElement;\n","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\nexport const getOffsetTop = (element: HTMLElement) =>\n getElementPosition(element).top;\n\nexport const getElementPosition = (element: HTMLElement) => {\n const rect = element.getBoundingClientRect();\n\n return {\n left: rect.x + window.scrollX,\n top: rect.y + window.scrollY,\n };\n};\n","import { Node } from \"../node\";\n\ninterface Options {\n handleAfterOpenFolder: (node: Node, nextNode: Node | null) => void;\n handleClosedFolder: (\n node: Node,\n nextNode: Node | null,\n element: HTMLElement,\n ) => void;\n handleFirstNode: (node: Node) => void;\n handleNode: (\n node: Node,\n nextNode: Node | null,\n element: HTMLElement,\n ) => void;\n\n /*\n override\n return\n - true: continue iterating\n - false: stop iterating\n */\n handleOpenFolder: (node: Node, element: HTMLElement) => boolean;\n}\n\nconst iterateVisibleNodes = (\n tree: Node,\n {\n handleAfterOpenFolder,\n handleClosedFolder,\n handleFirstNode,\n handleNode,\n handleOpenFolder,\n }: Options,\n) => {\n let isFirstNode = true;\n\n const iterate = (node: Node, nextNode: Node | null): void => {\n let mustIterateInside =\n (node.is_open || !node.element) && node.hasChildren();\n\n let element: HTMLElement | null = null;\n\n // Is the element visible?\n if (node.element?.offsetParent) {\n element = node.element;\n\n if (isFirstNode) {\n handleFirstNode(node);\n isFirstNode = false;\n }\n\n if (!node.hasChildren()) {\n handleNode(node, nextNode, node.element);\n } else if (node.is_open) {\n if (!handleOpenFolder(node, node.element)) {\n mustIterateInside = false;\n }\n } else {\n 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 iterate(child, null);\n } else {\n const nextChild = node.children[i + 1];\n\n if (nextChild) {\n iterate(child, nextChild);\n }\n }\n }\n });\n\n if (node.is_open && element) {\n handleAfterOpenFolder(node, nextNode);\n }\n }\n };\n\n iterate(tree, null);\n};\n\nexport default iterateVisibleNodes;\n","import { HitArea } from \"./types\";\nimport { Node } from \"../node\";\nimport { Position } from \"../position\";\nimport { getOffsetTop } from \"../util\";\nimport iterateVisibleNodes from \"./iterateVisibleNodes\";\n\nconst generatePositions = (tree: Node, currentNode: Node): HitArea[] => {\n const positions: HitArea[] = [];\n let lastTop = 0;\n\n const addPosition = (node: Node, position: number, top: number) => {\n const area = {\n top,\n bottom: 0,\n node,\n position,\n };\n\n positions.push(area);\n lastTop = top;\n };\n\n const handleAfterOpenFolder = (node: Node, nextNode: Node | null) => {\n if (node === currentNode || nextNode === currentNode) {\n // Cannot move before or after current item\n addPosition(node, Position.None, lastTop);\n } else {\n addPosition(node, Position.After, lastTop);\n }\n };\n\n const handleClosedFolder = (\n node: Node,\n nextNode: Node | null,\n element: HTMLElement,\n ) => {\n const top = getOffsetTop(element);\n\n if (node === currentNode) {\n // Cannot move after current item\n addPosition(node, Position.None, top);\n } else {\n addPosition(node, Position.Inside, top);\n\n // Cannot move before current item\n if (nextNode !== currentNode) {\n addPosition(node, Position.After, top);\n }\n }\n };\n\n const handleFirstNode = (node: Node) => {\n if (node !== currentNode) {\n addPosition(node, Position.Before, getOffsetTop(node.element));\n }\n };\n\n const handleNode = (\n node: Node,\n nextNode: Node | null,\n element: HTMLElement,\n ) => {\n const top = getOffsetTop(element);\n\n if (node === currentNode) {\n // Cannot move inside current item\n addPosition(node, Position.None, top);\n } else {\n addPosition(node, Position.Inside, top);\n }\n\n if (nextNode === currentNode || node === currentNode) {\n // Cannot move before or after current item\n addPosition(node, Position.None, top);\n } else {\n addPosition(node, Position.After, top);\n }\n };\n\n const handleOpenFolder = (node: Node, element: HTMLElement) => {\n if (node === 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] !== currentNode) {\n addPosition(node, Position.Inside, getOffsetTop(element));\n }\n\n // Continue iterating\n return true;\n };\n\n iterateVisibleNodes(tree, {\n handleAfterOpenFolder,\n handleClosedFolder,\n handleFirstNode,\n handleNode,\n handleOpenFolder,\n });\n\n return positions;\n};\n\nconst generateHitAreasForGroup = (\n hitAreas: HitArea[],\n positionsInGroup: HitArea[],\n top: number,\n bottom: number,\n) => {\n // limit positions in group\n const positionCount = Math.min(positionsInGroup.length, 4);\n\n const areaHeight = Math.round((bottom - top) / positionCount);\n let areaTop = top;\n\n 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\nconst generateHitAreasFromPositions = (\n positions: HitArea[],\n treeBottom: number,\n): HitArea[] => {\n let previousTop = positions[0]?.top ?? 0;\n let group = [];\n const hitAreas: HitArea[] = [];\n\n for (const position of positions) {\n if (position.top !== previousTop && group.length) {\n generateHitAreasForGroup(\n hitAreas,\n group,\n previousTop,\n position.top,\n );\n\n previousTop = position.top;\n group = [];\n }\n\n group.push(position);\n }\n\n generateHitAreasForGroup(hitAreas, group, previousTop, treeBottom);\n\n return hitAreas;\n};\n\nconst generateHitAreas = (\n tree: Node,\n currentNode: Node,\n treeBottom: number,\n) => {\n const positions = generatePositions(tree, currentNode);\n\n return generateHitAreasFromPositions(positions, treeBottom);\n};\n\nexport default generateHitAreas;\n","import { Node } from \"../node\";\nimport { getPositionName, Position } from \"../position\";\nimport { DropHint, HitArea } from \"./types\";\nimport { PositionInfo } from \"../mouseUtils\";\nimport NodeElement from \"../nodeElement\";\nimport DragElement from \"./dragElement\";\nimport generateHitAreas from \"./generateHitAreas\";\nimport { getElementPosition } from \"../util\";\nimport {\n OnCanMove,\n OnCanMoveTo,\n OnIsMoveHandle,\n DragMethod,\n} from \"../jqtreeOptions\";\nimport {\n GetScrollLeft,\n GetTree,\n OpenNode,\n RefreshElements,\n TriggerEvent,\n} from \"../jqtreeMethodTypes\";\n\ninterface Dimensions {\n left: number;\n top: number;\n right: number;\n bottom: number;\n}\n\ntype GetNodeElement = (element: HTMLElement) => NodeElement | null;\ntype GetNodeElementForNode = (node: Node) => NodeElement;\n\ninterface DragAndDropHandlerParams {\n autoEscape?: boolean;\n getNodeElement: GetNodeElement;\n getNodeElementForNode: GetNodeElementForNode;\n getScrollLeft: GetScrollLeft;\n getTree: GetTree;\n onCanMove?: OnCanMove;\n onCanMoveTo?: OnCanMoveTo;\n onDragMove?: DragMethod;\n onDragStop?: DragMethod;\n onIsMoveHandle?: OnIsMoveHandle;\n openFolderDelay: number | false;\n openNode: OpenNode;\n refreshElements: RefreshElements;\n slide: boolean;\n treeElement: HTMLElement;\n triggerEvent: TriggerEvent;\n}\n\nexport class DragAndDropHandler {\n public hitAreas: HitArea[];\n public isDragging: boolean;\n public currentItem: NodeElement | null;\n public hoveredArea: HitArea | null;\n\n private autoEscape?: boolean;\n private dragElement: DragElement | null;\n private getNodeElement: GetNodeElement;\n private getNodeElementForNode: GetNodeElementForNode;\n private getScrollLeft: GetScrollLeft;\n private getTree: GetTree;\n private onCanMove?: OnCanMove;\n private onCanMoveTo?: OnCanMoveTo;\n private onDragMove?: DragMethod;\n private onDragStop?: DragMethod;\n private onIsMoveHandle?: OnIsMoveHandle;\n private openFolderDelay: number | false;\n private openFolderTimer: number | null;\n private openNode: OpenNode;\n private previousGhost: DropHint | null;\n private refreshElements: RefreshElements;\n private slide: boolean;\n private treeElement: HTMLElement;\n private triggerEvent: TriggerEvent;\n\n constructor({\n autoEscape,\n getNodeElement,\n getNodeElementForNode,\n getScrollLeft,\n getTree,\n onCanMove,\n onCanMoveTo,\n onDragMove,\n onDragStop,\n onIsMoveHandle,\n openNode,\n refreshElements,\n slide,\n treeElement,\n triggerEvent,\n }: DragAndDropHandlerParams) {\n this.autoEscape = autoEscape;\n this.getNodeElement = getNodeElement;\n this.getNodeElementForNode = getNodeElementForNode;\n this.getScrollLeft = getScrollLeft;\n this.getTree = getTree;\n this.onCanMove = onCanMove;\n this.onCanMoveTo = onCanMoveTo;\n this.onDragMove = onDragMove;\n this.onDragStop = onDragStop;\n this.onIsMoveHandle = onIsMoveHandle;\n this.openNode = openNode;\n this.refreshElements = refreshElements;\n this.slide = slide;\n this.treeElement = treeElement;\n this.triggerEvent = triggerEvent;\n\n this.hoveredArea = null;\n this.hitAreas = [];\n this.isDragging = false;\n this.currentItem = null;\n }\n\n public mouseCapture(positionInfo: PositionInfo): boolean | null {\n const element = positionInfo.target;\n\n if (!this.mustCaptureElement(element)) {\n return null;\n }\n\n if (this.onIsMoveHandle && !this.onIsMoveHandle(jQuery(element))) {\n return null;\n }\n\n let nodeElement = this.getNodeElement(element);\n\n if (nodeElement && this.onCanMove) {\n if (!this.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 (!this.currentItem) {\n return false;\n }\n\n this.refresh();\n\n const { left, top } = getElementPosition(positionInfo.target);\n\n const node = this.currentItem.node;\n\n this.dragElement = new DragElement({\n autoEscape: this.autoEscape ?? true,\n nodeName: node.name,\n offsetX: positionInfo.pageX - left,\n offsetY: positionInfo.pageY - top,\n treeElement: this.treeElement,\n });\n\n this.isDragging = true;\n this.currentItem.element.classList.add(\"jqtree-moving\");\n\n return true;\n }\n\n public mouseDrag(positionInfo: PositionInfo): boolean {\n if (!this.currentItem || !this.dragElement) {\n return false;\n }\n\n this.dragElement.move(positionInfo.pageX, positionInfo.pageY);\n\n const area = this.findHoveredArea(\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.onDragMove) {\n this.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.classList.remove(\"jqtree-moving\");\n this.currentItem = null;\n }\n\n this.isDragging = false;\n\n if (!this.hoveredArea && currentItem) {\n if (this.onDragStop) {\n this.onDragStop(currentItem.node, positionInfo.originalEvent);\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.getNodeElementForNode(\n this.currentItem.node,\n );\n\n if (this.isDragging) {\n this.currentItem.element.classList.add(\"jqtree-moving\");\n }\n }\n }\n\n private generateHitAreas(): void {\n const tree = this.getTree();\n\n if (!this.currentItem || !tree) {\n this.hitAreas = [];\n } else {\n this.hitAreas = generateHitAreas(\n tree,\n this.currentItem.node,\n this.getTreeDimensions().bottom,\n );\n }\n }\n\n private mustCaptureElement(element: HTMLElement): boolean {\n const nodeName = element.nodeName;\n\n return (\n nodeName !== \"INPUT\" &&\n nodeName !== \"SELECT\" &&\n nodeName !== \"TEXTAREA\"\n );\n }\n\n private canMoveToArea(area: HitArea): boolean {\n if (!this.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.onCanMoveTo(this.currentItem.node, area.node, positionName);\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.getNodeElementForNode(this.hoveredArea.node);\n this.previousGhost = nodeElement.addDropHint(this.hoveredArea.position);\n }\n\n private startOpenFolderTimer(folder: Node): void {\n const openFolder = (): void => {\n this.openNode(folder, this.slide, () => {\n this.refresh();\n this.updateDropHint();\n });\n };\n\n this.stopOpenFolderTimer();\n\n const openFolderDelay = this.openFolderDelay;\n\n if (openFolderDelay !== false) {\n this.openFolderTimer = window.setTimeout(\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 const tree = this.getTree();\n\n if (tree) {\n tree.moveNode(movedNode, targetNode, position);\n\n this.treeElement.textContent = \"\";\n this.refreshElements(null);\n }\n };\n\n const event = this.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 treePosition = getElementPosition(this.treeElement);\n const left = treePosition.left + this.getScrollLeft();\n const top = treePosition.top;\n\n return {\n left,\n top,\n right: left + this.treeElement.clientWidth,\n bottom: top + this.treeElement.clientHeight + 16,\n };\n }\n}\n","import { getBoolString } from \"./util\";\nimport { Node } from \"./node\";\nimport { IconElement, OnCreateLi } from \"./jqtreeOptions\";\nimport { GetTree, IsNodeSelected } from \"./jqtreeMethodTypes\";\n\ninterface ElementsRendererParams {\n autoEscape: boolean;\n buttonLeft: boolean;\n closedIcon?: IconElement;\n dragAndDrop: boolean;\n $element: JQuery<HTMLElement>;\n getTree: GetTree;\n isNodeSelected: IsNodeSelected;\n onCreateLi?: OnCreateLi;\n openedIcon?: IconElement;\n rtl?: boolean;\n showEmptyFolder: boolean;\n tabIndex?: number;\n}\n\nexport default class ElementsRenderer {\n public openedIconElement?: HTMLElement | Text;\n public closedIconElement?: HTMLElement | Text;\n private autoEscape: boolean;\n private buttonLeft: boolean;\n private dragAndDrop: boolean;\n private $element: JQuery<HTMLElement>;\n private getTree: GetTree;\n private isNodeSelected: IsNodeSelected;\n private onCreateLi?: OnCreateLi;\n private rtl?: boolean;\n private showEmptyFolder: boolean;\n private tabIndex?: number;\n\n constructor({\n autoEscape,\n buttonLeft,\n closedIcon,\n onCreateLi,\n dragAndDrop,\n $element,\n getTree,\n isNodeSelected,\n openedIcon,\n rtl,\n showEmptyFolder,\n tabIndex,\n }: ElementsRendererParams) {\n this.autoEscape = autoEscape;\n this.buttonLeft = buttonLeft;\n this.dragAndDrop = dragAndDrop;\n this.$element = $element;\n this.getTree = getTree;\n this.isNodeSelected = isNodeSelected;\n this.onCreateLi = onCreateLi;\n this.rtl = rtl;\n this.showEmptyFolder = showEmptyFolder;\n this.tabIndex = tabIndex;\n this.openedIconElement = this.createButtonElement(openedIcon || \"+\");\n this.closedIconElement = this.createButtonElement(closedIcon || \"-\");\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 this.$element.empty();\n\n const tree = this.getTree();\n\n if (this.$element[0] && tree) {\n this.createDomElements(this.$element[0], tree.children, true, 1);\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.rtl) {\n classString += \" jqtree-rtl\";\n }\n }\n\n if (this.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(this.isNodeSelected(node));\n\n const mustShowFolder =\n node.isFolder() || (node.isEmptyFolder && this.showEmptyFolder);\n\n const li = mustShowFolder\n ? this.createFolderLi(node, level, isSelected)\n : this.createNodeLi(node, level, isSelected);\n\n if (this.onCreateLi) {\n this.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.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.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-${this.buttonLeft ? \"left\" : \"right\"}`;\n\n titleSpan.className = classes;\n\n if (isSelected) {\n const tabIndex = this.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.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.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 if (value == null) {\n return undefined;\n } else if ((value as HTMLElement).nodeType) {\n return value as HTMLElement;\n } else {\n return jQuery(value)[0];\n }\n }\n}\n","import { Node } from \"./node\";\nimport { DataFilter, OnLoadFailed, OnLoading } from \"./jqtreeOptions\";\nimport { LoadData, TriggerEvent } from \"./jqtreeMethodTypes\";\n\nexport type HandleFinishedLoading = () => void;\n\ninterface DataLoaderParams {\n dataFilter?: DataFilter;\n loadData: LoadData;\n onLoadFailed?: OnLoadFailed;\n onLoading?: OnLoading;\n treeElement: HTMLElement;\n triggerEvent: TriggerEvent;\n}\n\nexport default class DataLoader {\n private dataFilter?: DataFilter;\n private loadData: LoadData;\n private onLoadFailed?: OnLoadFailed;\n private onLoading?: OnLoading;\n private treeElement: HTMLElement;\n private triggerEvent: TriggerEvent;\n\n constructor({\n dataFilter,\n loadData,\n onLoadFailed,\n onLoading,\n treeElement,\n triggerEvent,\n }: DataLoaderParams) {\n this.dataFilter = dataFilter;\n this.loadData = loadData;\n this.onLoadFailed = onLoadFailed;\n this.onLoading = onLoading;\n this.treeElement = treeElement;\n this.triggerEvent = triggerEvent;\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 element = this.getDomElement(parentNode);\n this.addLoadingClass(element);\n this.notifyLoading(true, parentNode, element);\n\n const stopLoading = (): void => {\n this.removeLoadingClass(element);\n this.notifyLoading(false, parentNode, element);\n };\n\n const handleSuccess = (data: string | NodeData[]): void => {\n stopLoading();\n this.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.onLoadFailed) {\n this.onLoadFailed(jqXHR);\n }\n };\n\n this.submitRequest(urlInfo, handleSuccess, handleError);\n }\n\n private addLoadingClass(element: HTMLElement): void {\n element.classList.add(\"jqtree-loading\");\n }\n\n private removeLoadingClass(element: HTMLElement): void {\n element.classList.remove(\"jqtree-loading\");\n }\n\n private getDomElement(parentNode: Node | null): HTMLElement {\n if (parentNode) {\n return parentNode.element;\n } else {\n return this.treeElement;\n }\n }\n\n private notifyLoading(\n isLoading: boolean,\n node: Node | null,\n element: HTMLElement,\n ): void {\n const $el = jQuery(element);\n\n if (this.onLoading) {\n this.onLoading(isLoading, node, $el);\n }\n\n this.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 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 (this.dataFilter) {\n return this.dataFilter(parsedData);\n } else {\n return parsedData;\n }\n }\n}\n","import { Node } from \"./node\";\nimport {\n CloseNode,\n GetSelectedNode,\n IsFocusOnTree,\n OpenNode,\n SelectNode,\n} from \"./jqtreeMethodTypes\";\n\ntype KeyboardEventHandler = (event: KeyboardEvent) => boolean;\n\ninterface KeyHandlerParams {\n closeNode: CloseNode;\n getSelectedNode: GetSelectedNode;\n isFocusOnTree: IsFocusOnTree;\n keyboardSupport: boolean;\n openNode: OpenNode;\n selectNode: SelectNode;\n}\n\nexport default class KeyHandler {\n private closeNode: CloseNode;\n private getSelectedNode: GetSelectedNode;\n private handleKeyDownHandler?: KeyboardEventHandler;\n private isFocusOnTree: IsFocusOnTree;\n private keyboardSupport: boolean;\n private openNode: OpenNode;\n private originalSelectNode: SelectNode;\n\n constructor({\n closeNode,\n getSelectedNode,\n isFocusOnTree,\n keyboardSupport,\n openNode,\n selectNode,\n }: KeyHandlerParams) {\n this.closeNode = closeNode;\n this.getSelectedNode = getSelectedNode;\n this.isFocusOnTree = isFocusOnTree;\n this.keyboardSupport = keyboardSupport;\n this.openNode = openNode;\n this.originalSelectNode = selectNode;\n\n if (keyboardSupport) {\n this.handleKeyDownHandler = this.handleKeyDown.bind(this);\n\n document.addEventListener(\"keydown\", this.handleKeyDownHandler);\n }\n }\n\n public deinit(): void {\n if (this.handleKeyDownHandler) {\n document.removeEventListener(\"keydown\", this.handleKeyDownHandler);\n }\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.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.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.originalSelectNode(node);\n\n return false;\n }\n }\n\n private handleKeyDown = (e: KeyboardEvent): boolean => {\n if (!this.canHandleKeyboard()) {\n return true;\n }\n\n const selectedNode = this.getSelectedNode();\n if (!selectedNode) {\n return true;\n }\n\n switch (e.key) {\n case \"ArrowDown\":\n return this.moveDown(selectedNode);\n\n case \"ArrowUp\":\n return this.moveUp(selectedNode);\n\n case \"ArrowRight\":\n return this.moveRight(selectedNode);\n\n case \"ArrowLeft\":\n return this.moveLeft(selectedNode);\n\n default:\n return true;\n }\n };\n\n private canHandleKeyboard(): boolean {\n return this.keyboardSupport && this.isFocusOnTree();\n }\n}\n","export interface PositionInfo {\n originalEvent: Event;\n pageX: number;\n pageY: number;\n target: HTMLElement;\n}\n\nexport const getPositionInfoFromMouseEvent = (e: MouseEvent): PositionInfo => ({\n originalEvent: e,\n pageX: e.pageX,\n pageY: e.pageY,\n target: e.target as HTMLElement,\n});\n\nexport const getPositionInfoFromTouch = (\n touch: Touch,\n e: TouchEvent,\n): PositionInfo => ({\n originalEvent: e,\n pageX: touch.pageX,\n pageY: touch.pageY,\n target: touch.target as HTMLElement,\n});\n","import {\n getPositionInfoFromMouseEvent,\n getPositionInfoFromTouch,\n PositionInfo,\n} from \"./mouseUtils\";\nimport { Node } from \"./node\";\nimport { TriggerEvent } from \"./jqtreeMethodTypes\";\n\ninterface ClickTarget {\n node: Node;\n type: \"button\" | \"label\";\n}\n\ntype GetNode = (element: HTMLElement) => null | Node;\n\ninterface MouseHandlerParams {\n element: HTMLElement;\n getMouseDelay: () => number;\n getNode: GetNode;\n onClickButton: (node: Node) => void;\n onClickTitle: (node: Node) => void;\n onMouseCapture: (positionInfo: PositionInfo) => boolean | null;\n onMouseDrag: (positionInfo: PositionInfo) => void;\n onMouseStart: (positionInfo: PositionInfo) => boolean;\n onMouseStop: (positionInfo: PositionInfo) => void;\n triggerEvent: TriggerEvent;\n useContextMenu: boolean;\n}\n\nclass MouseHandler {\n private element: HTMLElement;\n private getMouseDelay: () => number;\n private getNode: GetNode;\n private isMouseDelayMet: boolean;\n private isMouseStarted: boolean;\n private mouseDelayTimer: number | null;\n private mouseDownInfo: PositionInfo | null;\n private onClickButton: (node: Node) => void;\n private onClickTitle: (node: Node) => void;\n private onMouseCapture: (positionInfo: PositionInfo) => boolean | null;\n private onMouseDrag: (positionInfo: PositionInfo) => void;\n private onMouseStart: (positionInfo: PositionInfo) => boolean;\n private onMouseStop: (positionInfo: PositionInfo) => void;\n private triggerEvent: TriggerEvent;\n private useContextMenu: boolean;\n\n constructor({\n element,\n getMouseDelay,\n getNode,\n onClickButton,\n onClickTitle,\n onMouseCapture,\n onMouseDrag,\n onMouseStart,\n onMouseStop,\n triggerEvent,\n useContextMenu,\n }: MouseHandlerParams) {\n this.element = element;\n this.getMouseDelay = getMouseDelay;\n this.getNode = getNode;\n this.onClickButton = onClickButton;\n this.onClickTitle = onClickTitle;\n this.onMouseCapture = onMouseCapture;\n this.onMouseDrag = onMouseDrag;\n this.onMouseStart = onMouseStart;\n this.onMouseStop = onMouseStop;\n this.triggerEvent = triggerEvent;\n this.useContextMenu = useContextMenu;\n\n element.addEventListener(\"click\", this.handleClick);\n element.addEventListener(\"dblclick\", this.handleDblclick);\n element.addEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n element.addEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n\n if (useContextMenu) {\n element.addEventListener(\"contextmenu\", this.handleContextmenu);\n }\n\n this.isMouseStarted = false;\n this.mouseDelayTimer = null;\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n }\n\n public deinit(): void {\n this.element.removeEventListener(\"click\", this.handleClick);\n this.element.removeEventListener(\"dblclick\", this.handleDblclick);\n\n if (this.useContextMenu) {\n this.element.removeEventListener(\n \"contextmenu\",\n this.handleContextmenu,\n );\n }\n\n this.element.removeEventListener(\"mousedown\", this.mouseDown);\n this.element.removeEventListener(\"touchstart\", this.touchStart);\n this.removeMouseMoveEventListeners();\n }\n\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.onMouseCapture(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.onMouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n return;\n }\n\n if (!this.isMouseDelayMet) {\n return;\n }\n\n if (this.mouseDownInfo) {\n this.isMouseStarted =\n this.onMouseStart(this.mouseDownInfo) !== false;\n }\n\n if (this.isMouseStarted) {\n this.onMouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n } else {\n this.handleMouseUp(positionInfo);\n }\n }\n\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.onMouseStop(positionInfo);\n }\n }\n\n private removeMouseMoveEventListeners() {\n document.removeEventListener(\"mousemove\", this.mouseMove);\n document.removeEventListener(\"touchmove\", this.touchMove);\n document.removeEventListener(\"mouseup\", this.mouseUp);\n document.removeEventListener(\"touchend\", this.touchEnd);\n }\n\n private 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.touches[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.touches[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.touches[0];\n\n if (!touch) {\n return;\n }\n\n this.handleMouseUp(getPositionInfoFromTouch(touch, e));\n };\n\n private handleClick = (e: MouseEvent): void => {\n if (!e.target) {\n return;\n }\n\n const clickTarget = this.getClickTarget(e.target as HTMLElement);\n\n if (!clickTarget) {\n return;\n }\n\n if (clickTarget.type === \"button\") {\n this.onClickButton(clickTarget.node);\n\n e.preventDefault();\n e.stopPropagation();\n } else if (clickTarget.type === \"label\") {\n const event = this.triggerEvent(\"tree.click\", {\n node: clickTarget.node,\n click_event: e,\n });\n\n if (!event.isDefaultPrevented()) {\n this.onClickTitle(clickTarget.node);\n }\n }\n };\n\n private handleDblclick = (e: MouseEvent): void => {\n if (!e.target) {\n return;\n }\n\n const clickTarget = this.getClickTarget(e.target as HTMLElement);\n\n if (clickTarget?.type === \"label\") {\n this.triggerEvent(\"tree.dblclick\", {\n node: clickTarget.node,\n click_event: e,\n });\n }\n };\n\n private handleContextmenu = (e: MouseEvent) => {\n if (!e.target) {\n return;\n }\n\n const div = (e.target as HTMLElement).closest<HTMLElement>(\n \"ul.jqtree-tree .jqtree-element\",\n );\n\n if (div) {\n const node = this.getNode(div);\n if (node) {\n e.preventDefault();\n e.stopPropagation();\n\n this.triggerEvent(\"tree.contextmenu\", {\n node,\n click_event: e,\n });\n return false;\n }\n }\n\n return null;\n };\n\n private getClickTarget(element: HTMLElement): ClickTarget | null {\n const button = element.closest<HTMLElement>(\".jqtree-toggler\");\n\n if (button) {\n const node = this.getNode(button);\n\n if (node) {\n return {\n type: \"button\",\n node,\n };\n }\n } else {\n const jqTreeElement =\n element.closest<HTMLElement>(\".jqtree-element\");\n\n if (jqTreeElement) {\n const node = this.getNode(jqTreeElement);\n if (node) {\n return {\n type: \"label\",\n node,\n };\n }\n }\n }\n\n return null;\n }\n}\n\nexport default MouseHandler;\n","import { isInt } from \"./util\";\nimport { Node } from \"./node\";\nimport { OnGetStateFromStorage, OnSetStateFromStorage } from \"./jqtreeOptions\";\nimport {\n AddToSelection,\n GetNodeById,\n GetSelectedNodes,\n GetTree,\n OpenNode,\n RefreshElements,\n RemoveFromSelection,\n} from \"./jqtreeMethodTypes\";\n\nexport interface SavedState {\n open_nodes: NodeId[];\n selected_node: NodeId[];\n}\n\ninterface SaveStateHandlerParams {\n addToSelection: AddToSelection;\n getNodeById: GetNodeById;\n getSelectedNodes: GetSelectedNodes;\n getTree: GetTree;\n onGetStateFromStorage?: OnGetStateFromStorage;\n onSetStateFromStorage?: OnSetStateFromStorage;\n openNode: OpenNode;\n refreshElements: RefreshElements;\n removeFromSelection: RemoveFromSelection;\n saveState: boolean | string;\n}\n\nexport default class SaveStateHandler {\n private addToSelection: AddToSelection;\n private getNodeById: GetNodeById;\n private getSelectedNodes: GetSelectedNodes;\n private getTree: GetTree;\n private onGetStateFromStorage?: OnGetStateFromStorage;\n private onSetStateFromStorage?: OnSetStateFromStorage;\n private openNode: OpenNode;\n private refreshElements: RefreshElements;\n private removeFromSelection: RemoveFromSelection;\n private saveStateOption: boolean | string;\n private _supportsLocalStorage: boolean | null;\n\n constructor({\n addToSelection,\n getNodeById,\n getSelectedNodes,\n getTree,\n onGetStateFromStorage,\n onSetStateFromStorage,\n openNode,\n refreshElements,\n removeFromSelection,\n saveState,\n }: SaveStateHandlerParams) {\n this.addToSelection = addToSelection;\n this.getNodeById = getNodeById;\n this.getSelectedNodes = getSelectedNodes;\n this.getTree = getTree;\n this.onGetStateFromStorage = onGetStateFromStorage;\n this.onSetStateFromStorage = onSetStateFromStorage;\n this.openNode = openNode;\n this.refreshElements = refreshElements;\n this.removeFromSelection = removeFromSelection;\n this.saveStateOption = saveState;\n }\n\n public saveState(): void {\n const state = JSON.stringify(this.getState());\n\n if (this.onSetStateFromStorage) {\n this.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.getTree()?.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.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.onGetStateFromStorage) {\n return this.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.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.getNodeById(nodeId);\n\n if (node) {\n selectCount += 1;\n\n this.addToSelection(node);\n }\n }\n\n return selectCount !== 0;\n }\n\n private resetSelection(): void {\n const selectedNodes = this.getSelectedNodes();\n\n selectedNodes.forEach((node) => {\n this.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.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.openNode(node, false);\n }\n }\n }\n }\n\n nodeIds = newNodesIds;\n\n if (this.selectInitialNodes(selectedNodes)) {\n this.refreshElements(null);\n }\n\n if (loadingCount === 0) {\n cbFinished();\n }\n };\n\n const loadAndOpenNode = (node: Node): void => {\n loadingCount += 1;\n this.openNode(node, false, () => {\n loadingCount -= 1;\n openNodes();\n });\n };\n\n openNodes();\n }\n\n private getKeyName(): string {\n if (typeof this.saveStateOption === \"string\") {\n return this.saveStateOption;\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 type { ScrollParent } from \"./types\";\nimport { getElementPosition, getOffsetTop } from '../util'\n\ntype HorizontalScrollDirection = \"left\" | \"right\";\ntype VerticalScrollDirection = \"bottom\" | \"top\";\n\ninterface Params {\n container: HTMLElement;\n refreshHitAreas: () => void;\n}\n\nexport default class ContainerScrollParent implements ScrollParent {\n private container: HTMLElement;\n private horizontalScrollDirection?: HorizontalScrollDirection;\n private horizontalScrollTimeout?: number;\n private refreshHitAreas: () => void;\n private scrollParentBottom?: number;\n private scrollParentTop?: number;\n private verticalScrollTimeout?: number;\n private verticalScrollDirection?: VerticalScrollDirection;\n\n constructor({ container, refreshHitAreas }: Params) {\n this.container = container;\n this.refreshHitAreas = refreshHitAreas;\n }\n\n public checkHorizontalScrolling(pageX: number): void {\n const newHorizontalScrollDirection =\n this.getNewHorizontalScrollDirection(pageX);\n\n if (this.horizontalScrollDirection !== newHorizontalScrollDirection) {\n this.horizontalScrollDirection = newHorizontalScrollDirection;\n\n if (this.horizontalScrollTimeout != null) {\n window.clearTimeout(this.verticalScrollTimeout);\n }\n\n if (newHorizontalScrollDirection) {\n this.horizontalScrollTimeout = window.setTimeout(\n this.scrollHorizontally.bind(this),\n 40,\n );\n }\n }\n }\n\n public checkVerticalScrolling(pageY: number) {\n const newVerticalScrollDirection =\n this.getNewVerticalScrollDirection(pageY);\n\n if (this.verticalScrollDirection !== newVerticalScrollDirection) {\n this.verticalScrollDirection = newVerticalScrollDirection;\n\n if (this.verticalScrollTimeout != null) {\n window.clearTimeout(this.verticalScrollTimeout);\n this.verticalScrollTimeout = undefined;\n }\n\n if (newVerticalScrollDirection) {\n this.verticalScrollTimeout = window.setTimeout(\n this.scrollVertically.bind(this),\n 40,\n );\n }\n }\n }\n\n public getScrollLeft(): number {\n return this.container.scrollLeft;\n }\n\n public scrollToY(top: number): void {\n this.container.scrollTop = top;\n }\n\n public stopScrolling() {\n this.horizontalScrollDirection = undefined;\n this.verticalScrollDirection = undefined;\n this.scrollParentTop = undefined;\n this.scrollParentBottom = undefined;\n }\n\n private getNewHorizontalScrollDirection(\n pageX: number,\n ): HorizontalScrollDirection | undefined {\n const scrollParentOffset = getElementPosition(this.container);\n\n const rightEdge = scrollParentOffset.left + this.container.clientWidth;\n const leftEdge = scrollParentOffset.left;\n const isNearRightEdge = pageX > rightEdge - 20;\n const isNearLeftEdge = pageX < leftEdge + 20;\n\n if (isNearRightEdge) {\n return \"right\";\n } else if (isNearLeftEdge) {\n return \"left\";\n }\n\n return undefined;\n }\n\n private getNewVerticalScrollDirection(\n pageY: number,\n ): VerticalScrollDirection | undefined {\n if (pageY < this.getScrollParentTop()) {\n return \"top\";\n }\n\n if (pageY > this.getScrollParentBottom()) {\n return \"bottom\";\n }\n\n return undefined;\n }\n\n private scrollHorizontally() {\n if (!this.horizontalScrollDirection) {\n return;\n }\n\n const distance = this.horizontalScrollDirection === \"left\" ? -20 : 20;\n\n this.container.scrollBy({\n left: distance,\n top: 0,\n behavior: \"instant\",\n });\n\n this.refreshHitAreas();\n\n setTimeout(this.scrollHorizontally.bind(this), 40);\n }\n\n private scrollVertically() {\n if (!this.verticalScrollDirection) {\n return;\n }\n\n const distance = this.verticalScrollDirection === \"top\" ? -20 : 20;\n\n this.container.scrollBy({\n left: 0,\n top: distance,\n behavior: \"instant\",\n });\n\n this.refreshHitAreas();\n\n setTimeout(this.scrollVertically.bind(this), 40);\n }\n\n private getScrollParentTop() {\n if (this.scrollParentTop == null) {\n this.scrollParentTop = getOffsetTop(this.container)\n }\n\n return this.scrollParentTop;\n }\n\n private getScrollParentBottom() {\n if (this.scrollParentBottom == null) {\n this.scrollParentBottom = this.getScrollParentTop() + this.container.clientHeight;\n }\n\n return this.scrollParentBottom;\n }\n}\n","import type { ScrollParent } from \"./types\";\nimport { getOffsetTop } from '../util'\n\ntype HorizontalScrollDirection = \"left\" | \"right\";\ntype VerticalScrollDirection = \"bottom\" | \"top\";\n\ninterface Params {\n refreshHitAreas: () => void;\n treeElement: HTMLElement;\n}\n\nexport default class DocumentScrollParent implements ScrollParent {\n private documentScrollHeight?: number;\n private documentScrollWidth?: number;\n private horizontalScrollDirection?: HorizontalScrollDirection;\n private horizontalScrollTimeout?: number;\n private refreshHitAreas: () => void;\n private treeElement: HTMLElement;\n private verticalScrollDirection?: VerticalScrollDirection;\n private verticalScrollTimeout?: number;\n\n constructor({ refreshHitAreas, treeElement }: Params) {\n this.refreshHitAreas = refreshHitAreas;\n this.treeElement = treeElement;\n }\n\n public checkHorizontalScrolling(pageX: number): void {\n const newHorizontalScrollDirection =\n this.getNewHorizontalScrollDirection(pageX);\n\n if (this.horizontalScrollDirection !== newHorizontalScrollDirection) {\n this.horizontalScrollDirection = newHorizontalScrollDirection;\n\n if (this.horizontalScrollTimeout != null) {\n window.clearTimeout(this.horizontalScrollTimeout);\n }\n\n if (newHorizontalScrollDirection) {\n this.horizontalScrollTimeout = window.setTimeout(\n this.scrollHorizontally.bind(this),\n 40,\n );\n }\n }\n }\n\n public checkVerticalScrolling(pageY: number) {\n const newVerticalScrollDirection =\n this.getNewVerticalScrollDirection(pageY);\n\n if (this.verticalScrollDirection !== newVerticalScrollDirection) {\n this.verticalScrollDirection = newVerticalScrollDirection;\n\n if (this.verticalScrollTimeout != null) {\n window.clearTimeout(this.verticalScrollTimeout);\n this.verticalScrollTimeout = undefined;\n }\n\n if (newVerticalScrollDirection) {\n this.verticalScrollTimeout = window.setTimeout(\n this.scrollVertically.bind(this),\n 40,\n );\n }\n }\n }\n\n public getScrollLeft(): number {\n return document.documentElement.scrollLeft;\n }\n\n public scrollToY(top: number): void {\n const treeTop = getOffsetTop(this.treeElement);\n\n document.documentElement.scrollTop = top + treeTop;\n }\n\n public stopScrolling() {\n this.horizontalScrollDirection = undefined;\n this.verticalScrollDirection = undefined;\n this.documentScrollHeight = undefined;\n this.documentScrollWidth = undefined;\n }\n\n private getNewHorizontalScrollDirection(\n pageX: number,\n ): HorizontalScrollDirection | undefined {\n const scrollLeft = document.documentElement.scrollLeft;\n const windowWidth = window.innerWidth;\n\n const isNearRightEdge = pageX > windowWidth - 20;\n const isNearLeftEdge = pageX - scrollLeft < 20;\n\n if (isNearRightEdge && this.canScrollRight()) {\n return \"right\";\n }\n\n if (isNearLeftEdge) {\n return \"left\";\n }\n\n return undefined;\n }\n\n private canScrollRight() {\n const documentElement = document.documentElement;\n\n return (\n documentElement.scrollLeft + documentElement.clientWidth <\n this.getDocumentScrollWidth()\n );\n }\n\n private canScrollDown() {\n const documentElement = document.documentElement;\n\n return (\n documentElement.scrollTop + documentElement.clientHeight <\n this.getDocumentScrollHeight()\n );\n }\n\n private getDocumentScrollHeight() {\n // Store the original scroll height because the scroll height can increase when the drag element is moved beyond the scroll height.\n if (this.documentScrollHeight == null) {\n this.documentScrollHeight = document.documentElement.scrollHeight;\n }\n\n return this.documentScrollHeight;\n }\n\n private getDocumentScrollWidth() {\n // Store the original scroll width because the scroll width can increase when the drag element is moved beyond the scroll width.\n if (this.documentScrollWidth == null) {\n this.documentScrollWidth = document.documentElement.scrollWidth;\n }\n\n return this.documentScrollWidth;\n }\n\n private getNewVerticalScrollDirection(\n pageY: number,\n ): VerticalScrollDirection | undefined {\n const scrollTop = jQuery(document).scrollTop() || 0;\n const distanceTop = pageY - scrollTop;\n\n if (distanceTop < 20) {\n return \"top\";\n }\n\n const windowHeight = window.innerHeight;\n\n if (windowHeight - (pageY - scrollTop) < 20 && this.canScrollDown()) {\n return \"bottom\";\n }\n\n return undefined;\n }\n\n private scrollHorizontally() {\n if (!this.horizontalScrollDirection) {\n return;\n }\n\n const distance = this.horizontalScrollDirection === \"left\" ? -20 : 20;\n window.scrollBy({ left: distance, top: 0, behavior: \"instant\" });\n\n this.refreshHitAreas();\n\n setTimeout(this.scrollHorizontally.bind(this), 40);\n }\n\n private scrollVertically() {\n if (!this.verticalScrollDirection) {\n return;\n }\n\n const distance = this.verticalScrollDirection === \"top\" ? -20 : 20;\n window.scrollBy({ left: 0, top: distance, behavior: \"instant\" });\n\n this.refreshHitAreas();\n\n setTimeout(this.scrollVertically.bind(this), 40);\n }\n}\n","import type { ScrollParent } from \"./types\";\nimport ContainerScrollParent from \"./containerScrollParent\";\nimport DocumentScrollParent from \"./documentScrollParent\";\n\nconst isOverflow = (overflowValue: string) =>\n overflowValue === \"auto\" || overflowValue === \"scroll\";\n\nconst hasOverFlow = (element: HTMLElement): boolean => {\n const style = getComputedStyle(element);\n\n return isOverflow(style.overflowX) || isOverflow(style.overflowY);\n};\n\nconst getParentWithOverflow = (\n treeElement: HTMLElement,\n): HTMLElement | null => {\n if (hasOverFlow(treeElement)) {\n return treeElement;\n }\n\n let parent = treeElement.parentElement;\n\n while (parent) {\n if (hasOverFlow(parent)) {\n return parent;\n }\n\n parent = parent.parentElement;\n }\n\n return null;\n};\n\nconst createScrollParent = (\n treeElement: HTMLElement,\n refreshHitAreas: () => void,\n): ScrollParent => {\n const container = getParentWithOverflow(treeElement);\n\n if (container && container.tagName !== \"HTML\") {\n return new ContainerScrollParent({\n container,\n refreshHitAreas,\n });\n } else {\n return new DocumentScrollParent({ refreshHitAreas, treeElement });\n }\n};\n\nexport default createScrollParent;\n","import { PositionInfo } from \"./mouseUtils\";\nimport { ScrollParent } from \"./scrollHandler/types\";\nimport createScrollParent from \"./scrollHandler/createScrollParent\";\n\ninterface ScrollHandlerParams {\n refreshHitAreas: () => void;\n treeElement: HTMLElement;\n}\n\nexport default class ScrollHandler {\n private refreshHitAreas: () => void;\n private scrollParent?: ScrollParent;\n private treeElement: HTMLElement;\n\n constructor({ refreshHitAreas, treeElement }: ScrollHandlerParams) {\n this.refreshHitAreas = refreshHitAreas;\n this.scrollParent = undefined;\n this.treeElement = treeElement;\n }\n\n public checkScrolling(positionInfo: PositionInfo): void {\n this.checkVerticalScrolling(positionInfo);\n this.checkHorizontalScrolling(positionInfo);\n }\n\n public stopScrolling() {\n this.getScrollParent().stopScrolling();\n }\n\n public scrollToY(top: number): void {\n this.getScrollParent().scrollToY(top);\n }\n\n public getScrollLeft(): number {\n return this.getScrollParent().getScrollLeft();\n }\n\n private checkVerticalScrolling(positionInfo: PositionInfo): void {\n this.getScrollParent().checkVerticalScrolling(positionInfo.pageY);\n }\n\n private checkHorizontalScrolling(positionInfo: PositionInfo): void {\n this.getScrollParent().checkHorizontalScrolling(positionInfo.pageX);\n }\n\n private getScrollParent(): ScrollParent {\n if (!this.scrollParent) {\n this.scrollParent = createScrollParent(\n this.treeElement,\n this.refreshHitAreas,\n );\n }\n\n return this.scrollParent;\n }\n}\n","import { Node } from \"./node\";\nimport { GetNodeById } from \"./jqtreeMethodTypes\";\n\ninterface SelectNodeHandlerParameters {\n getNodeById: GetNodeById;\n}\n\nexport default class SelectNodeHandler {\n private getNodeById: GetNodeById;\n private selectedNodes: Set<NodeId>;\n private selectedSingleNode: Node | null;\n\n constructor({ getNodeById }: SelectNodeHandlerParameters) {\n this.getNodeById = getNodeById;\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.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.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","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","interface NodeRecordWithChildren extends NodeRecord {\n children: NodeData[];\n}\n\nexport const isNodeRecordWithChildren = (\n data: NodeData,\n): data is NodeRecordWithChildren =>\n typeof data === \"object\" &&\n \"children\" in data &&\n data[\"children\"] instanceof Array;\n","import { isNodeRecordWithChildren } from \"./nodeUtils\";\nimport { Position } from \"./position\";\n\ntype IterateCallback = (node: Node, level: number) => boolean;\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(\n nodeData: NodeData | null = null,\n isRoot = false,\n nodeClass = Node,\n ) {\n this.name = \"\";\n this.load_on_demand = false;\n\n this.isEmptyFolder =\n nodeData != null &&\n isNodeRecordWithChildren(nodeData) &&\n nodeData.children.length === 0;\n\n this.setData(nodeData);\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 childData of data) {\n const node = this.createNode(childData);\n this.addChild(node);\n\n if (isNodeRecordWithChildren(childData)) {\n node.loadFromData(childData.children);\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 node.loadChildrenFromData(nodeInfo);\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 node.loadChildrenFromData(nodeInfo);\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 node.loadChildrenFromData(nodeInfo);\n return node;\n }\n\n public prepend(nodeInfo: NodeData): Node {\n const node = this.createNode(nodeInfo);\n this.addChildAtPosition(node, 0);\n\n node.loadChildrenFromData(nodeInfo);\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 // Load children data from nodeInfo if it has children\n private loadChildrenFromData(nodeInfo: NodeData) {\n if (isNodeRecordWithChildren(nodeInfo) && nodeInfo.children.length) {\n this.loadFromData(nodeInfo.children);\n }\n }\n}\n","import { DropHint } from \"../dragAndDropHandler/types\";\n\nclass BorderDropHint implements DropHint {\n private hint?: HTMLElement;\n\n constructor(element: HTMLElement, scrollLeft: number) {\n const div = element.querySelector(\":scope > .jqtree-element\");\n\n if (!div) {\n this.hint = undefined;\n return;\n }\n\n const width = Math.max(element.offsetWidth + scrollLeft - 4, 0);\n const height = Math.max(element.clientHeight - 4, 0);\n\n const hint = document.createElement(\"span\");\n hint.className = \"jqtree-border\";\n hint.style.width = `${width}px`;\n hint.style.height = `${height}px`;\n\n this.hint = hint;\n\n div.append(this.hint);\n }\n\n public remove(): void {\n this.hint?.remove();\n }\n}\n\nexport default BorderDropHint;\n","import { Node } from \"../node\";\nimport { Position } from \"../position\";\nimport { DropHint } from \"../dragAndDropHandler/types\";\n\nclass GhostDropHint implements DropHint {\n private element: HTMLElement;\n private node: Node;\n private ghost: HTMLElement;\n\n constructor(node: Node, element: HTMLElement, position: Position) {\n this.element = element;\n this.node = node;\n this.ghost = this.createGhostElement();\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 private moveAfter(): void {\n this.element.after(this.ghost);\n }\n\n private moveBefore(): void {\n this.element.before(this.ghost);\n }\n\n private moveInsideOpenFolder(): void {\n const childElement = this.node.children[0]?.element;\n\n if (childElement) {\n childElement.before(this.ghost);\n }\n }\n\n private moveInside(): void {\n this.element.after(this.ghost);\n this.ghost.classList.add(\"jqtree-inside\");\n }\n\n private createGhostElement() {\n const ghost = document.createElement(\"li\");\n ghost.className = \"jqtree_common jqtree-ghost\";\n\n const circleSpan = document.createElement(\"span\");\n circleSpan.className = \"jqtree_common jqtree-circle\";\n ghost.append(circleSpan);\n\n const lineSpan = document.createElement(\"span\");\n lineSpan.className = \"jqtree_common jqtree-line\";\n ghost.append(lineSpan);\n\n return ghost;\n }\n}\n\nexport default GhostDropHint;\n","import { Node } from \"../node\";\nimport { Position } from \"../position\";\nimport { DropHint } from \"../dragAndDropHandler/types\";\nimport BorderDropHint from \"./borderDropHint\";\nimport GhostDropHint from \"./ghostDropHint\";\nimport { GetScrollLeft } from \"../jqtreeMethodTypes\";\n\nexport interface NodeElementParams {\n getScrollLeft: GetScrollLeft;\n node: Node;\n tabIndex?: number;\n $treeElement: JQuery<HTMLElement>;\n}\n\nclass NodeElement {\n public node: Node;\n public element: HTMLElement;\n private getScrollLeft: GetScrollLeft;\n private tabIndex?: number;\n private $treeElement: JQuery<HTMLElement>;\n\n constructor({\n getScrollLeft,\n node,\n tabIndex,\n $treeElement,\n }: NodeElementParams) {\n this.getScrollLeft = getScrollLeft;\n this.tabIndex = tabIndex;\n this.$treeElement = $treeElement;\n\n this.init(node);\n }\n\n public init(node: Node): void {\n this.node = node;\n\n if (!node.element) {\n const element = this.$treeElement.get(0);\n\n if (element) {\n node.element = element;\n }\n }\n\n if (node.element) {\n this.element = node.element;\n }\n }\n\n public addDropHint(position: number): DropHint {\n if (this.mustShowBorderDropHint(position)) {\n return new BorderDropHint(this.element, this.getScrollLeft());\n } else {\n return new GhostDropHint(this.node, this.element, position);\n }\n }\n\n public select(mustSetFocus: boolean): void {\n this.element.classList.add(\"jqtree-selected\");\n\n const titleSpan = this.getTitleSpan();\n const tabIndex = this.tabIndex;\n\n // Check for null or undefined\n if (tabIndex != null) {\n titleSpan.setAttribute(\"tabindex\", tabIndex.toString());\n }\n\n titleSpan.setAttribute(\"aria-selected\", \"true\");\n\n if (mustSetFocus) {\n titleSpan.focus();\n }\n }\n\n public deselect(): void {\n this.element.classList.remove(\"jqtree-selected\");\n\n const titleSpan = this.getTitleSpan();\n titleSpan.removeAttribute(\"tabindex\");\n titleSpan.setAttribute(\"aria-selected\", \"false\");\n\n titleSpan.blur();\n }\n\n protected getUl(): HTMLUListElement {\n return this.element.querySelector(\":scope > ul\") as HTMLUListElement;\n }\n\n protected getTitleSpan(): HTMLSpanElement {\n return this.element.querySelector(\n \":scope > .jqtree-element > span.jqtree-title\",\n ) as HTMLSpanElement;\n }\n\n protected mustShowBorderDropHint(position: Position): boolean {\n return position === Position.Inside;\n }\n}\n\nexport default NodeElement;\n","import { Position } from \"../position\";\nimport NodeElement, { NodeElementParams } from \"./index\";\nimport { OnFinishOpenNode, TriggerEvent } from \"../jqtreeMethodTypes\";\n\ninterface FolderElementParams extends NodeElementParams {\n closedIconElement?: HTMLElement | Text;\n openedIconElement?: HTMLElement | Text;\n triggerEvent: TriggerEvent;\n}\n\nclass FolderElement extends NodeElement {\n private closedIconElement?: HTMLElement | Text;\n private openedIconElement?: HTMLElement | Text;\n private triggerEvent: TriggerEvent;\n\n constructor({\n closedIconElement,\n getScrollLeft,\n node,\n openedIconElement,\n tabIndex,\n $treeElement,\n triggerEvent,\n }: FolderElementParams) {\n super({\n getScrollLeft,\n node,\n tabIndex,\n $treeElement,\n });\n\n this.closedIconElement = closedIconElement;\n this.openedIconElement = openedIconElement;\n this.triggerEvent = triggerEvent;\n }\n\n public open(\n onFinished: OnFinishOpenNode | undefined,\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.classList.remove(\"jqtree-closed\");\n button.innerHTML = \"\";\n\n const openedIconElement = this.openedIconElement;\n\n if (openedIconElement) {\n const icon = openedIconElement.cloneNode(true);\n button.appendChild(icon);\n }\n\n const doOpen = (): void => {\n this.element.classList.remove(\"jqtree-closed\");\n\n const titleSpan = this.getTitleSpan();\n titleSpan.setAttribute(\"aria-expanded\", \"true\");\n\n if (onFinished) {\n onFinished(this.node);\n }\n\n this.triggerEvent(\"tree.open\", {\n node: this.node,\n });\n };\n\n if (slide) {\n jQuery(this.getUl()).slideDown(animationSpeed, doOpen);\n } else {\n jQuery(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.classList.add(\"jqtree-closed\");\n button.innerHTML = \"\";\n\n const closedIconElement = this.closedIconElement;\n\n if (closedIconElement) {\n const icon = closedIconElement.cloneNode(true);\n button.appendChild(icon);\n }\n\n const doClose = (): void => {\n this.element.classList.add(\"jqtree-closed\");\n\n const titleSpan = this.getTitleSpan();\n titleSpan.setAttribute(\"aria-expanded\", \"false\");\n\n this.triggerEvent(\"tree.close\", {\n node: this.node,\n });\n };\n\n if (slide) {\n jQuery(this.getUl()).slideUp(animationSpeed, doClose);\n } else {\n jQuery(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(): HTMLLinkElement {\n return this.element.querySelector(\n \":scope > .jqtree-element > a.jqtree-toggler\",\n ) as HTMLLinkElement;\n }\n}\n\nexport default FolderElement;\n","import __version__ from \"./version\";\nimport { DragAndDropHandler } from \"./dragAndDropHandler\";\nimport ElementsRenderer from \"./elementsRenderer\";\nimport DataLoader, { HandleFinishedLoading } from \"./dataLoader\";\nimport KeyHandler from \"./keyHandler\";\nimport MouseHandler from \"./mouseHandler\";\nimport { PositionInfo } from \"./mouseUtils\";\nimport SaveStateHandler, { SavedState } from \"./saveStateHandler\";\nimport ScrollHandler from \"./scrollHandler\";\nimport SelectNodeHandler from \"./selectNodeHandler\";\nimport SimpleWidget from \"./simple.widget\";\nimport { getOffsetTop, isFunction } from \"./util\";\nimport { Node } from \"./node\";\nimport { getPosition } from \"./position\";\nimport NodeElement from \"./nodeElement\";\nimport FolderElement from \"./nodeElement/folderElement\";\nimport { OnFinishOpenNode } from \"./jqtreeMethodTypes\";\nimport { JQTreeOptions } from \"./jqtreeOptions\";\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 SimpleWidget<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 private element: JQuery;\n private isInitialized: boolean;\n private tree: Node;\n\n private dataLoader: DataLoader;\n private dndHandler: DragAndDropHandler;\n private keyHandler: KeyHandler;\n private mouseHandler: MouseHandler;\n private renderer: ElementsRenderer;\n private saveStateHandler: SaveStateHandler;\n private scrollHandler: ScrollHandler;\n private selectNodeHandler: SelectNodeHandler;\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 inputElement: HTMLElement | JQuery<HTMLElement>,\n ): Node | null {\n const element =\n inputElement instanceof HTMLElement\n ? inputElement\n : inputElement[0];\n\n if (!element) {\n return null;\n }\n\n return this.getNode(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 | undefined] => {\n let onFinished: OnFinishOpenNode | null;\n let slide: boolean | null;\n\n if (isFunction(param1)) {\n onFinished = param1 as OnFinishOpenNode;\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.openNodeInternal(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 this.createFolderElement(node).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 this.openParents(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 top =\n getOffsetTop(node.element) -\n getOffsetTop(this.$el.get(0) as HTMLElement);\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 private openNodeInternal(\n node: Node,\n slide = true,\n onFinished?: OnFinishOpenNode,\n ): void {\n const doOpenNode = (\n _node: Node,\n _slide: boolean,\n _onFinished?: OnFinishOpenNode,\n ): void => {\n const folderElement = this.createFolderElement(_node);\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);\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 private refreshElements(fromNode: Node | null): void {\n const mustSetFocus = this.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 private getNodeElementForNode(node: Node): NodeElement {\n if (node.isFolder()) {\n return this.createFolderElement(node);\n } else {\n return this.createNodeElement(node);\n }\n }\n\n private getNodeElement(element: 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 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.connectHandlers();\n\n this.initData();\n }\n\n public deinit(): void {\n this.element.empty();\n this.element.off();\n\n this.keyHandler.deinit();\n this.mouseHandler.deinit();\n\n this.tree = new Node({}, true);\n\n super.deinit();\n }\n\n private 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 private 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 private mouseStart(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseStart(positionInfo);\n } else {\n return false;\n }\n }\n\n private mouseDrag(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n const result = this.dndHandler.mouseDrag(positionInfo);\n\n this.scrollHandler.checkScrolling(positionInfo);\n return result;\n } else {\n return false;\n }\n }\n\n private mouseStop(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n this.scrollHandler.stopScrolling();\n return this.dndHandler.mouseStop(positionInfo);\n } else {\n return false;\n }\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.openNodeInternal(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.openNodeInternal(node, false);\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 getNode(element: HTMLElement): null | Node {\n const liElement = element.closest(\"li.jqtree_common\");\n\n if (liElement) {\n return jQuery(liElement).data(\"node\") as Node;\n } else {\n return null;\n }\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 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 this.openParents(node);\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,\n ): void {\n node.is_loading = true;\n\n this.doLoadDataFromUrl(null, node, () => {\n this.openNodeInternal(node, slide, onFinished);\n });\n }\n\n private containsElement(element: HTMLElement): boolean {\n const node = this.getNode(element);\n\n return node != null && node.tree === this.tree;\n }\n\n private isFocusOnTree(): boolean {\n const activeElement = document.activeElement;\n\n return Boolean(\n activeElement &&\n activeElement.tagName === \"SPAN\" &&\n this.containsElement(activeElement as HTMLElement),\n );\n }\n\n private connectHandlers() {\n const {\n autoEscape,\n buttonLeft,\n closedIcon,\n dataFilter,\n dragAndDrop,\n keyboardSupport,\n onCanMove,\n onCanMoveTo,\n onCreateLi,\n onDragMove,\n onDragStop,\n onGetStateFromStorage,\n onIsMoveHandle,\n onLoadFailed,\n onLoading,\n onSetStateFromStorage,\n openedIcon,\n openFolderDelay,\n rtl,\n saveState,\n showEmptyFolder,\n slide,\n tabIndex,\n } = this.options;\n\n const closeNode = this.closeNode.bind(this);\n const getNodeElement = this.getNodeElement.bind(this);\n const getNodeElementForNode = this.getNodeElementForNode.bind(this);\n const getNodeById = this.getNodeById.bind(this);\n const getSelectedNode = this.getSelectedNode.bind(this);\n const getTree = this.getTree.bind(this);\n const isFocusOnTree = this.isFocusOnTree.bind(this);\n const loadData = this.loadData.bind(this);\n const openNode = this.openNodeInternal.bind(this);\n const refreshElements = this.refreshElements.bind(this);\n const refreshHitAreas = this.refreshHitAreas.bind(this);\n const selectNode = this.selectNode.bind(this);\n const $treeElement = this.element;\n const treeElement = this.element.get(0) as HTMLElement;\n const triggerEvent = this.triggerEvent.bind(this);\n\n const selectNodeHandler = new SelectNodeHandler({\n getNodeById,\n });\n\n const addToSelection =\n selectNodeHandler.addToSelection.bind(selectNodeHandler);\n const getSelectedNodes =\n selectNodeHandler.getSelectedNodes.bind(selectNodeHandler);\n const isNodeSelected =\n selectNodeHandler.isNodeSelected.bind(selectNodeHandler);\n const removeFromSelection =\n selectNodeHandler.removeFromSelection.bind(selectNodeHandler);\n const getMouseDelay = () => this.options.startDndDelay ?? 0;\n\n const dataLoader = new DataLoader({\n dataFilter,\n loadData,\n onLoadFailed,\n onLoading,\n treeElement,\n triggerEvent,\n });\n\n const saveStateHandler = new SaveStateHandler({\n addToSelection,\n getNodeById,\n getSelectedNodes,\n getTree,\n onGetStateFromStorage,\n onSetStateFromStorage,\n openNode,\n refreshElements,\n removeFromSelection,\n saveState,\n });\n\n const scrollHandler = new ScrollHandler({\n refreshHitAreas,\n treeElement,\n });\n\n const getScrollLeft = scrollHandler.getScrollLeft.bind(scrollHandler);\n\n const dndHandler = new DragAndDropHandler({\n autoEscape,\n getNodeElement,\n getNodeElementForNode,\n getScrollLeft,\n getTree,\n onCanMove,\n onCanMoveTo,\n onDragMove,\n onDragStop,\n onIsMoveHandle,\n openFolderDelay,\n openNode,\n refreshElements,\n slide,\n treeElement,\n triggerEvent,\n });\n\n const keyHandler = new KeyHandler({\n closeNode,\n getSelectedNode,\n isFocusOnTree,\n keyboardSupport,\n openNode,\n selectNode,\n });\n\n const renderer = new ElementsRenderer({\n autoEscape,\n buttonLeft,\n closedIcon,\n dragAndDrop,\n $element: $treeElement,\n getTree,\n isNodeSelected,\n onCreateLi,\n openedIcon,\n rtl,\n showEmptyFolder,\n tabIndex,\n });\n\n const getNode = this.getNode.bind(this);\n const onMouseCapture = this.mouseCapture.bind(this);\n const onMouseDrag = this.mouseDrag.bind(this);\n const onMouseStart = this.mouseStart.bind(this);\n const onMouseStop = this.mouseStop.bind(this);\n\n const mouseHandler = new MouseHandler({\n element: treeElement,\n getMouseDelay,\n getNode,\n onClickButton: this.toggle.bind(this),\n onClickTitle: this.doSelectNode.bind(this),\n onMouseCapture,\n onMouseDrag,\n onMouseStart,\n onMouseStop,\n triggerEvent,\n useContextMenu: this.options.useContextMenu,\n });\n\n this.dataLoader = dataLoader;\n this.dndHandler = dndHandler;\n this.keyHandler = keyHandler;\n this.mouseHandler = mouseHandler;\n this.renderer = renderer;\n this.saveStateHandler = saveStateHandler;\n this.scrollHandler = scrollHandler;\n this.selectNodeHandler = selectNodeHandler;\n }\n\n private createFolderElement(node: Node) {\n const closedIconElement = this.renderer.closedIconElement;\n const getScrollLeft = this.scrollHandler.getScrollLeft.bind(\n this.scrollHandler,\n );\n const openedIconElement = this.renderer.openedIconElement;\n const tabIndex = this.options.tabIndex;\n const $treeElement = this.element;\n const triggerEvent = this.triggerEvent.bind(this);\n\n return new FolderElement({\n closedIconElement,\n getScrollLeft,\n node,\n openedIconElement,\n tabIndex,\n $treeElement,\n triggerEvent,\n });\n }\n\n private createNodeElement(node: Node) {\n const getScrollLeft = this.scrollHandler.getScrollLeft.bind(\n this.scrollHandler,\n );\n const tabIndex = this.options.tabIndex;\n const $treeElement = this.element;\n\n return new NodeElement({\n getScrollLeft,\n node,\n tabIndex,\n $treeElement,\n });\n }\n\n private openParents(node: Node) {\n const parent = node.parent;\n\n if (parent && parent.parent && !parent.is_open) {\n this.openNode(parent, false);\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","DragElement","constructor","_ref","autoEscape","nodeName","offsetX","offsetY","treeElement","element","createElement","appendChild","move","pageX","pageY","style","left","top","remove","document","classList","add","textContent","innerHTML","isInt","n","isFunction","v","getBoolString","value","getOffsetTop","getElementPosition","rect","getBoundingClientRect","x","window","scrollX","y","scrollY","iterateVisibleNodes","tree","handleAfterOpenFolder","handleClosedFolder","handleFirstNode","handleNode","handleOpenFolder","isFirstNode","iterate","node","nextNode","mustIterateInside","is_open","hasChildren","offsetParent","childrenLength","children","length","forEach","_","i","child","nextChild","generatePositions","currentNode","positions","lastTop","addPosition","area","bottom","push","generateHitAreasForGroup","hitAreas","positionsInGroup","positionCount","Math","min","areaHeight","round","areaTop","generateHitAreasFromPositions","treeBottom","previousTop","group","generateHitAreas","DragAndDropHandler","getNodeElement","getNodeElementForNode","getScrollLeft","getTree","onCanMove","onCanMoveTo","onDragMove","onDragStop","onIsMoveHandle","openNode","refreshElements","slide","triggerEvent","hoveredArea","isDragging","currentItem","mouseCapture","positionInfo","target","mustCaptureElement","jQuery","nodeElement","mouseStart","refresh","dragElement","mouseDrag","findHoveredArea","canMoveToArea","isFolder","stopOpenFolderTimer","mustOpenFolderTimer","startOpenFolderTimer","updateDropHint","removeDropHint","originalEvent","mouseStop","moveItem","clear","removeHover","removeHitAreas","getTreeDimensions","positionName","previousGhost","dimensions","right","low","high","mid","addDropHint","folder","openFolder","openFolderDelay","openFolderTimer","setTimeout","clearTimeout","movedNode","targetNode","previousParent","parent","doMove","moveNode","event","move_info","moved_node","target_node","previous_parent","do_move","original_event","isDefaultPrevented","treePosition","clientWidth","clientHeight","ElementsRenderer","buttonLeft","closedIcon","onCreateLi","dragAndDrop","$element","isNodeSelected","openedIcon","rtl","showEmptyFolder","tabIndex","openedIconElement","createButtonElement","closedIconElement","render","fromNode","renderFromNode","renderFromRoot","empty","createDomElements","$previousLi","li","createLi","getLevel","attachNodeData","isRootNode","level","ul","createUl","data","classString","role","className","setAttribute","isSelected","Boolean","mustShowFolder","isEmptyFolder","createFolderLi","createNodeLi","setTreeItemAriaAttributes","buttonClasses","getButtonClasses","folderClasses","getFolderClasses","iconElement","div","buttonLink","cloneNode","titleSpan","createTitleSpan","liClasses","join","classes","undefined","is_loading","createTextNode","nodeType","DataLoader","dataFilter","loadData","onLoadFailed","onLoading","loadFromUrl","urlInfo","parentNode","onFinished","getDomElement","addLoadingClass","notifyLoading","stopLoading","removeLoadingClass","handleSuccess","parseData","handleError","jqXHR","submitRequest","isLoading","$el","urlInfoInput","url","ajaxSettings","method","cache","dataType","success","error","toUpperCase","ajax","getParsedData","JSON","parse","parsedData","KeyHandler","closeNode","getSelectedNode","isFocusOnTree","keyboardSupport","selectNode","originalSelectNode","handleKeyDownHandler","handleKeyDown","bind","addEventListener","deinit","removeEventListener","moveDown","selectedNode","getNextVisibleNode","moveUp","getPreviousVisibleNode","moveRight","moveLeft","getParent","e","canHandleKeyboard","key","getPositionInfoFromMouseEvent","getPositionInfoFromTouch","touch","MouseHandler","getMouseDelay","getNode","onClickButton","onClickTitle","onMouseCapture","onMouseDrag","onMouseStart","onMouseStop","useContextMenu","handleClick","handleDblclick","mouseDown","passive","touchStart","handleContextmenu","isMouseStarted","mouseDelayTimer","isMouseDelayMet","mouseDownInfo","removeMouseMoveEventListeners","button","result","handleMouseDown","cancelable","preventDefault","handleMouseUp","handleStartMouse","mouseMove","touchMove","mouseUp","touchEnd","mouseDelay","startMouseDelayTimer","handleMouseMove","touches","clickTarget","getClickTarget","type","stopPropagation","click_event","closest","jqTreeElement","SaveStateHandler","addToSelection","getNodeById","getSelectedNodes","onGetStateFromStorage","onSetStateFromStorage","removeFromSelection","saveState","saveStateOption","state","stringify","getState","supportsLocalStorage","localStorage","setItem","getKeyName","getStateFromStorage","jsonData","loadFromStorage","parseState","getOpenNodeIds","openNodes","id","getSelectedNodeIds","selectedNodeIds","open_nodes","selected_node","setInitialState","mustLoadOnDemand","openInitialNodes","resetSelection","selectInitialNodes","setInitialStateOnDemand","cbFinished","doSetInitialStateOnDemand","getNodeIdToBeSelected","getItem","nodeIds","nodeId","load_on_demand","selectCount","selectedNodes","nodeIdsParam","loadingCount","newNodesIds","loadAndOpenNode","testSupport","sessionStorage","removeItem","_supportsLocalStorage","ContainerScrollParent","container","refreshHitAreas","checkHorizontalScrolling","newHorizontalScrollDirection","getNewHorizontalScrollDirection","horizontalScrollDirection","horizontalScrollTimeout","verticalScrollTimeout","scrollHorizontally","checkVerticalScrolling","newVerticalScrollDirection","getNewVerticalScrollDirection","verticalScrollDirection","scrollVertically","scrollLeft","scrollToY","scrollTop","stopScrolling","scrollParentTop","scrollParentBottom","scrollParentOffset","rightEdge","leftEdge","isNearRightEdge","isNearLeftEdge","getScrollParentTop","getScrollParentBottom","distance","scrollBy","behavior","DocumentScrollParent","documentElement","treeTop","documentScrollHeight","documentScrollWidth","windowWidth","innerWidth","canScrollRight","getDocumentScrollWidth","canScrollDown","getDocumentScrollHeight","scrollHeight","scrollWidth","distanceTop","windowHeight","innerHeight","isOverflow","overflowValue","hasOverFlow","getComputedStyle","overflowX","overflowY","getParentWithOverflow","parentElement","createScrollParent","tagName","ScrollHandler","scrollParent","checkScrolling","getScrollParent","SelectNodeHandler","Set","selectedSingleNode","getSelectedNodesUnder","isParentOf","has","includeChildren","arguments","delete","register","widgetClass","widgetName","getDataKey","getWidgetData","el","dataKey","widget","SimpleWidget","createWidget","options","get","existingWidget","simpleWidgetClass","init","destroyWidget","destroy","removeData","callFunction","functionName","args","simpleWidget","widgetFunction","apply","fn","argument1","_len","Array","_key","defaults","isNodeRecordWithChildren","Node","nodeData","isRoot","nodeClass","setData","idMapping","Map","o","loadFromData","removeChildren","childData","createNode","addChild","setParent","addChildAtPosition","index","splice","removeChild","doRemoveChild","getChildIndex","indexOf","callback","_iterate","getData","includeParent","getDataFromNodes","nodes","map","tmpNode","k","getNodeByName","getNodeByCallback","getNodeByNameMustExist","addAfter","nodeInfo","childIndex","loadChildrenFromData","addBefore","addParent","newParent","originalParent","append","prepend","addNodeToIndex","set","removeNodeFromIndex","getPreviousSibling","previousIndex","getNextSibling","nextIndex","getNodesByProperty","filter","f","getNextNode","nextSibling","getPreviousNode","previousSibling","getLastChild","lastChild","initFromData","addNode","addChildren","childrenData","getNodeClass","BorderDropHint","querySelector","hint","width","max","offsetWidth","height","GhostDropHint","ghost","createGhostElement","moveAfter","moveBefore","moveInsideOpenFolder","moveInside","childElement","circleSpan","lineSpan","NodeElement","$treeElement","mustShowBorderDropHint","select","mustSetFocus","getTitleSpan","toString","focus","deselect","removeAttribute","blur","getUl","FolderElement","open","animationSpeed","getButton","icon","doOpen","slideDown","show","close","doClose","slideUp","hide","NODE_PARAM_IS_EMPTY","PARAM_IS_EMPTY","JqTreeWidget","autoOpen","dataUrl","onCanSelectNode","selectable","startDndDelay","toggle","slideParam","Error","optionsParam","doSelectNode","selectNodeHandler","toJson","doLoadData","loadDataFromUrl","param1","param2","param3","doLoadDataFromUrl","reload","getNodeByHtmlElement","inputElement","HTMLElement","parseParams","openNodeInternal","createFolderElement","dndHandler","addNodeAfter","newNodeInfo","existingNode","newNode","addNodeBefore","addParentNode","removeNode","appendNode","parentNodeParam","prependNode","updateNode","idIsChanged","isSelectedNodeInSubtree","subtree","positionIndex","saveStateHandler","openParents","scrollToNode","scrollHandler","setState","setOption","option","keyHandler","getVersion","__version__","doOpenNode","_node","_slide","_onFinished","folderElement","loadFolderOnDemand","mustSelect","renderer","selectCurrentNode","createNodeElement","isInitialized","getRtlOption","getDefaultClosedIcon","connectHandlers","initData","off","mouseHandler","eventName","values","Event","trigger","getDataUrlInfo","getUrlFromString","setUrlInfoData","selectedNodeId","initTree","doInit","restoreState","autoOpenNodes","maxLevel","getAutoOpenMaxLevel","isRestored","parseInt","liElement","deselectCurrentNode","dataRtl","defaultOptions","mustToggle","selectOptions","canSelect","previous_node","deselectedNode","deselected_node","deselectNodes","loadSubtree","tree_data","parent_node","selectedNodesUnderParent","urlInfoParam","dataLoader","containsElement","activeElement"],"mappings":"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"}
|