jqtree 1.9.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bower.json +1 -1
- package/js-coverage/coverage-final.json +13 -0
- package/lib/jqtreeOptions.js +1 -0
- package/lib/tree.jquery.d.js +0 -0
- package/lib/tree.jquery.js +394 -0
- package/lib/triggerJQueryEvent.js +68 -0
- package/lib/typings.d.js +1 -0
- package/lib/version.js +2 -0
- package/package.json +34 -29
- package/pnpm-workspace.yaml +3 -3
- package/src/jqtreeOptions.ts +20 -62
- package/src/tree.jquery.d.ts +81 -92
- package/src/tree.jquery.ts +234 -938
- package/src/triggerJQueryEvent.ts +97 -0
- package/src/version.ts +2 -2
- package/tree.jquery.debug.js +4226 -3281
- package/tree.jquery.debug.js.map +1 -1
- package/tree.jquery.js +22 -2
- package/tree.jquery.js.map +1 -1
- package/eslint.config.mjs +0 -112
- package/src/animation.ts +0 -48
- package/src/dataLoader.ts +0 -143
- package/src/dragAndDropHandler/binarySearch.ts +0 -27
- package/src/dragAndDropHandler/dragElement.ts +0 -54
- package/src/dragAndDropHandler/generateHitAreas.ts +0 -195
- package/src/dragAndDropHandler/index.ts +0 -432
- package/src/dragAndDropHandler/iterateVisibleNodes.ts +0 -91
- package/src/dragAndDropHandler/types.ts +0 -12
- package/src/elementsRenderer.ts +0 -359
- package/src/jqtreeMethodTypes.ts +0 -40
- package/src/keyHandler.ts +0 -139
- package/src/mouseHandler.ts +0 -383
- package/src/mouseUtils.ts +0 -23
- package/src/node.ts +0 -653
- package/src/nodeElement/borderDropHint.ts +0 -32
- package/src/nodeElement/folderElement.ts +0 -138
- package/src/nodeElement/ghostDropHint.ts +0 -74
- package/src/nodeElement/index.ts +0 -94
- package/src/nodeUtils.ts +0 -10
- package/src/positionUtils.ts +0 -18
- package/src/saveStateHandler.ts +0 -276
- package/src/scrollHandler/containerScrollParent.ts +0 -71
- package/src/scrollHandler/createScrollParent.ts +0 -51
- package/src/scrollHandler/documentScrollParent.ts +0 -104
- package/src/scrollHandler/scrollParent.ts +0 -117
- package/src/scrollHandler.ts +0 -55
- package/src/selectNodeHandler.ts +0 -111
- package/src/simple.widget.ts +0 -134
- package/src/util.ts +0 -5
package/tree.jquery.debug.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.jquery.debug.js","sources":["src/dataLoader.ts","src/positionUtils.ts","src/dragAndDropHandler/binarySearch.ts","src/dragAndDropHandler/dragElement.ts","src/dragAndDropHandler/iterateVisibleNodes.ts","src/dragAndDropHandler/generateHitAreas.ts","src/dragAndDropHandler/index.ts","src/util.ts","src/elementsRenderer.ts","src/keyHandler.ts","src/mouseUtils.ts","src/mouseHandler.ts","src/nodeUtils.ts","src/node.ts","src/nodeElement/borderDropHint.ts","src/nodeElement/ghostDropHint.ts","src/nodeElement/index.ts","src/animation.ts","src/nodeElement/folderElement.ts","src/saveStateHandler.ts","src/scrollHandler/scrollParent.ts","src/scrollHandler/containerScrollParent.ts","src/scrollHandler/documentScrollParent.ts","src/scrollHandler/createScrollParent.ts","src/scrollHandler.ts","src/selectNodeHandler.ts","src/simple.widget.ts","src/version.ts","src/tree.jquery.ts"],"sourcesContent":["import type { LoadData, TriggerEvent } from \"./jqtreeMethodTypes\";\nimport type { DataFilter, OnLoadFailed, OnLoading } from \"./jqtreeOptions\";\nimport type { Node } from \"./node\";\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: JQuery.AjaxSettings | null | string,\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: 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 _getDomElement(parentNode: Node | null): HTMLElement {\n if (parentNode?.element) {\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 $el,\n isLoading,\n node,\n });\n }\n\n private _parseData(data: NodeData[]): NodeData[] {\n if (this._dataFilter) {\n return this._dataFilter(data);\n } else {\n return data;\n }\n }\n\n private _removeLoadingClass(element: HTMLElement): void {\n element.classList.remove(\"jqtree-loading\");\n }\n\n private _submitRequest(\n urlInfoInput: JQuery.AjaxSettings | string,\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 cache: false,\n dataType: \"json\",\n error: handleError,\n method: \"GET\",\n success: handleSuccess,\n ...urlInfo,\n };\n\n ajaxSettings.method = ajaxSettings.method?.toUpperCase() ?? \"GET\";\n\n void jQuery.ajax(ajaxSettings);\n }\n}\n","interface TopLeftPosition {\n left: number;\n top: number;\n}\n\n// Get the top position of the HTML element.\nexport const getOffsetTop = (element: HTMLElement): number =>\n getElementPosition(element).top;\n\n// Get the top left position of the HTML element.\nexport const getElementPosition = (element: HTMLElement): TopLeftPosition => {\n const rect = element.getBoundingClientRect();\n\n return {\n left: rect.x + window.scrollX,\n top: rect.y + window.scrollY,\n };\n};\n","function binarySearch<T>(items: T[], compareFn: (a: T) => number): null | T {\n let low = 0;\n let high = items.length;\n\n while (low < high) {\n const mid = (low + high) >> 1;\n const item = items[mid];\n\n if (item === undefined) {\n return null;\n }\n\n const compareResult = compareFn(item);\n\n if (compareResult > 0) {\n high = mid;\n } else if (compareResult < 0) {\n low = mid + 1;\n } else {\n return item;\n }\n }\n\n return null;\n}\n\nexport default binarySearch;\n","interface DragElementParams {\n autoEscape: boolean;\n nodeName: string;\n offsetX: number;\n offsetY: number;\n treeElement: HTMLElement;\n}\n\nclass DragElement {\n private _element: HTMLElement;\n private _offsetX: number;\n private _offsetY: number;\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","import type { 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 type { Node, Position } from \"../node\";\nimport type { HitArea } from \"./types\";\n\nimport { getOffsetTop } from \"../positionUtils\";\nimport iterateVisibleNodes from \"./iterateVisibleNodes\";\n\ninterface HitPosition {\n node: Node;\n position: null | Position;\n top: number;\n}\n\nexport const generateHitPositions = (\n tree: Node,\n currentNode: Node,\n): HitPosition[] => {\n const hitPositions: HitPosition[] = [];\n let lastTop = 0;\n\n const addHitPosition = (\n node: Node,\n position: null | Position,\n top: number,\n ) => {\n hitPositions.push({\n node,\n position,\n top,\n });\n lastTop = top;\n };\n\n const handleAfterOpenFolder = (node: Node, nextNode: Node | null) => {\n if (node === currentNode || nextNode === currentNode) {\n // Cannot move before or after current item\n addHitPosition(node, null, lastTop);\n } else {\n addHitPosition(node, \"after\", lastTop);\n }\n };\n\n const handleClosedFolder = (\n node: Node,\n nextNode: Node | null,\n element: HTMLElement,\n ) => {\n const top = getOffsetTop(element);\n\n if (node === currentNode) {\n // Cannot move after current item\n addHitPosition(node, null, top);\n } else {\n addHitPosition(node, \"inside\", top);\n\n // Cannot move before current item\n if (nextNode !== currentNode) {\n addHitPosition(node, \"after\", top);\n }\n }\n };\n\n const handleFirstNode = (node: Node) => {\n if (node !== currentNode && node.element) {\n addHitPosition(node, \"before\", getOffsetTop(node.element));\n }\n };\n\n const handleNode = (\n node: Node,\n nextNode: Node | null,\n element: HTMLElement,\n ) => {\n const top = getOffsetTop(element);\n\n if (node === currentNode) {\n // Cannot move inside current item\n addHitPosition(node, null, top);\n } else {\n addHitPosition(node, \"inside\", top);\n }\n\n if (nextNode === currentNode || node === currentNode) {\n // Cannot move before or after current item\n addHitPosition(node, null, top);\n } else {\n addHitPosition(node, \"after\", top);\n }\n };\n\n const handleOpenFolder = (node: Node, element: HTMLElement) => {\n if (node === currentNode) {\n // Cannot move inside current item\n\n // Dnd over the current element is not possible: add a position with type None for the top and the bottom.\n const top = getOffsetTop(element);\n const height = element.clientHeight;\n addHitPosition(node, null, top);\n\n if (height > 5) {\n // Subtract 5 pixels to allow more space for the next element.\n addHitPosition(node, null, top + height - 5);\n }\n\n // Stop iterating\n return false;\n }\n\n // Cannot move before current item\n if (node.children[0] !== currentNode) {\n addHitPosition(node, \"inside\", getOffsetTop(element));\n }\n\n // Continue iterating\n return true;\n };\n\n iterateVisibleNodes(tree, {\n handleAfterOpenFolder,\n handleClosedFolder,\n handleFirstNode,\n handleNode,\n handleOpenFolder,\n });\n\n return hitPositions;\n};\n\nexport const generateHitAreasForGroup = (\n hitAreas: HitArea[],\n positionsInGroup: HitPosition[],\n top: number,\n bottom: number,\n) => {\n // limit positions in group\n const positionCount = Math.min(positionsInGroup.length, 4);\n\n const areaHeight = Math.round((bottom - top) / positionCount);\n let areaTop = top;\n\n for (let i = 0; i < positionCount; i++) {\n const position = positionsInGroup[i] as HitPosition;\n\n if (position.position) {\n hitAreas.push({\n bottom: areaTop + areaHeight,\n node: position.node,\n position: position.position,\n top: areaTop,\n });\n }\n\n areaTop += areaHeight;\n }\n};\n\nexport const generateHitAreasFromPositions = (\n hitPositions: HitPosition[],\n treeBottom: number,\n): HitArea[] => {\n if (!hitPositions.length) {\n return [];\n }\n\n let previousTop = (hitPositions[0] as HitPosition).top;\n let group: HitPosition[] = [];\n const hitAreas: HitArea[] = [];\n\n for (const position of hitPositions) {\n if (position.top !== previousTop && group.length) {\n generateHitAreasForGroup(\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 = (tree: Node, currentNode: Node, treeBottom: number) =>\n generateHitAreasFromPositions(\n generateHitPositions(tree, currentNode),\n treeBottom,\n );\n\nexport default generateHitAreas;\n","import type {\n GetScrollLeft,\n GetTree,\n OpenNode,\n RefreshElements,\n TriggerEvent,\n} from \"../jqtreeMethodTypes\";\nimport type {\n DragMethod,\n OnCanMove,\n OnCanMoveTo,\n OnIsMoveHandle,\n} from \"../jqtreeOptions\";\nimport type { PositionInfo } from \"../mouseUtils\";\nimport type { Node } from \"../node\";\nimport type NodeElement from \"../nodeElement\";\nimport type { DropHint, HitArea } from \"./types\";\n\nimport { getElementPosition } from \"../positionUtils\";\nimport binarySearch from \"./binarySearch\";\nimport DragElement from \"./dragElement\";\nimport generateHitAreas from \"./generateHitAreas\";\n\ninterface Dimensions {\n bottom: number;\n left: number;\n right: number;\n top: number;\n}\n\ninterface DragAndDropHandlerParams {\n autoEscape?: boolean;\n getNodeElement: GetNodeElement;\n getNodeElementForNode: GetNodeElementForNode;\n getScrollLeft: GetScrollLeft;\n getTree: GetTree;\n onCanMove?: OnCanMove;\n onCanMoveTo?: OnCanMoveTo;\n onDragMove?: DragMethod;\n onDragStop?: DragMethod;\n onIsMoveHandle?: OnIsMoveHandle;\n openFolderDelay: false | number;\n openNode: OpenNode;\n refreshElements: RefreshElements;\n slide: boolean;\n treeElement: HTMLElement;\n triggerEvent: TriggerEvent;\n}\ntype GetNodeElement = (element: HTMLElement) => NodeElement | null;\n\ntype GetNodeElementForNode = (node: Node) => NodeElement;\n\nexport class DragAndDropHandler {\n public currentItem: NodeElement | null;\n public hitAreas: HitArea[];\n public hoveredArea: HitArea | null;\n public isDragging: boolean;\n\n private _autoEscape?: boolean;\n private _dragElement: DragElement | null;\n private _getNodeElement: GetNodeElement;\n private _getNodeElementForNode: GetNodeElementForNode;\n private _getScrollLeft: GetScrollLeft;\n private _getTree: GetTree;\n private _onCanMove?: OnCanMove;\n private _onCanMoveTo?: OnCanMoveTo;\n private _onDragMove?: DragMethod;\n private _onDragStop?: DragMethod;\n private _onIsMoveHandle?: OnIsMoveHandle;\n private _openFolderDelay: false | number;\n private _openFolderTimer: null | number;\n private _openNode: OpenNode;\n private _previousGhost: DropHint | null;\n private _refreshElements: RefreshElements;\n private _slide: boolean;\n private _treeElement: HTMLElement;\n private _triggerEvent: TriggerEvent;\n\n constructor({\n autoEscape,\n getNodeElement,\n getNodeElementForNode,\n getScrollLeft,\n getTree,\n onCanMove,\n onCanMoveTo,\n onDragMove,\n onDragStop,\n onIsMoveHandle,\n openFolderDelay,\n openNode,\n refreshElements,\n slide,\n treeElement,\n triggerEvent,\n }: DragAndDropHandlerParams) {\n this._autoEscape = autoEscape;\n this._getNodeElement = getNodeElement;\n this._getNodeElementForNode = getNodeElementForNode;\n this._getScrollLeft = getScrollLeft;\n this._getTree = getTree;\n this._onCanMove = onCanMove;\n this._onCanMoveTo = onCanMoveTo;\n this._onDragMove = onDragMove;\n this._onDragStop = onDragStop;\n this._onIsMoveHandle = onIsMoveHandle;\n this._openFolderDelay = openFolderDelay;\n this._openNode = openNode;\n this._refreshElements = refreshElements;\n this._slide = slide;\n this._treeElement = treeElement;\n this._triggerEvent = triggerEvent;\n\n this.hoveredArea = null;\n this.hitAreas = [];\n this.isDragging = false;\n this.currentItem = null;\n }\n\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 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, this.currentItem)) {\n if (!area.node.isFolder()) {\n this._stopOpenFolderTimer();\n }\n\n if (this.hoveredArea !== area) {\n this.hoveredArea = area;\n\n // If this is a closed folder, start timer to open it\n if (this._mustOpenFolderTimer(area)) {\n this._startOpenFolderTimer(area.node);\n } else {\n this._stopOpenFolderTimer();\n }\n\n this._updateDropHint();\n }\n } else {\n this._removeDropHint();\n this._stopOpenFolderTimer();\n this.hoveredArea = area;\n }\n\n if (!area) {\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 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 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 const currentNode = this.currentItem.node;\n this._generateHitAreas(currentNode);\n this.currentItem = this._getNodeElementForNode(currentNode);\n\n if (this.isDragging) {\n this.currentItem.element.classList.add(\"jqtree-moving\");\n }\n }\n }\n\n private _canMoveToArea(area: HitArea, currentItem: NodeElement): boolean {\n if (!this._onCanMoveTo) {\n return true;\n }\n\n return this._onCanMoveTo(currentItem.node, area.node, area.position);\n }\n\n private _clear(): void {\n if (this._dragElement) {\n this._dragElement.remove();\n this._dragElement = null;\n }\n }\n\n private _findHoveredArea(x: number, y: number): HitArea | null {\n const dimensions = this._getTreeDimensions();\n\n if (\n x < dimensions.left ||\n y < dimensions.top ||\n x > dimensions.right ||\n y > dimensions.bottom\n ) {\n return null;\n }\n\n return binarySearch<HitArea>(this.hitAreas, (area) => {\n if (y < area.top) {\n return 1;\n } else if (y > area.bottom) {\n return -1;\n } else {\n return 0;\n }\n });\n }\n\n private _generateHitAreas(currentNode: Node): void {\n const tree = this._getTree();\n\n if (!tree) {\n this.hitAreas = [];\n } else {\n this.hitAreas = generateHitAreas(\n tree,\n currentNode,\n this._getTreeDimensions().bottom,\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 bottom: top + this._treeElement.clientHeight + 16,\n left,\n right: left + this._treeElement.clientWidth,\n top,\n };\n }\n\n /* Move the dragged node to the selected position in the tree. */\n private _moveItem(positionInfo: PositionInfo): void {\n if (\n this.currentItem &&\n this.hoveredArea?.position &&\n this._canMoveToArea(this.hoveredArea, this.currentItem)\n ) {\n const movedNode = this.currentItem.node;\n const targetNode = this.hoveredArea.node;\n const position = this.hoveredArea.position;\n const previousParent = movedNode.parent;\n\n if (position === \"inside\") {\n this.hoveredArea.node.is_open = true;\n }\n\n const doMove = (): void => {\n const tree = this._getTree();\n\n if (tree) {\n tree.moveNode(movedNode, targetNode, position);\n\n this._treeElement.textContent = \"\";\n this._refreshElements(null);\n }\n };\n\n if (this._triggerEvent(\"tree.move\", {\n move_info: {\n do_move: doMove,\n moved_node: movedNode,\n original_event: positionInfo.originalEvent,\n position,\n previous_parent: previousParent,\n target_node: targetNode,\n },\n })) {\n doMove();\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 _mustOpenFolderTimer(area: HitArea): boolean {\n const node = area.node;\n\n return node.isFolder() && !node.is_open && area.position === \"inside\";\n }\n\n private _removeDropHint(): void {\n if (this._previousGhost) {\n this._previousGhost.remove();\n }\n }\n\n private _removeHitAreas(): void {\n this.hitAreas = [];\n }\n\n private _removeHover(): void {\n this.hoveredArea = null;\n }\n\n private _startOpenFolderTimer(folder: Node): void {\n const openFolder = (): void => {\n 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 _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","export const isInt = (n: unknown): boolean =>\n typeof n === \"number\" && n % 1 === 0;\n\nexport const getBoolString = (value: unknown): string =>\n value ? \"true\" : \"false\";\n","import type { GetTree, IsNodeSelected } from \"./jqtreeMethodTypes\";\nimport type { IconElement, OnCreateLi } from \"./jqtreeOptions\";\nimport type { Node } from \"./node\";\n\nimport { getBoolString } from \"./util\";\n\ninterface ElementsRendererParams {\n autoEscape: boolean;\n buttonLeft: boolean;\n closedIcon?: IconElement;\n dragAndDrop: boolean;\n getTree: GetTree;\n htmlElement: HTMLElement;\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 closedIconElement?: HTMLElement | Text;\n public openedIconElement?: HTMLElement | Text;\n private _autoEscape: boolean;\n private _buttonLeft: boolean;\n private _dragAndDrop: boolean;\n private _getTree: GetTree;\n private _htmlElement: HTMLElement;\n private _isNodeSelected: IsNodeSelected;\n private _onCreateLi?: OnCreateLi;\n private _rtl?: boolean;\n\n private _showEmptyFolder: boolean;\n private _tabIndex?: number;\n\n constructor({\n autoEscape,\n buttonLeft,\n closedIcon,\n dragAndDrop,\n getTree,\n htmlElement,\n isNodeSelected,\n onCreateLi,\n openedIcon,\n rtl,\n showEmptyFolder,\n tabIndex,\n }: ElementsRendererParams) {\n this._autoEscape = autoEscape;\n this._buttonLeft = buttonLeft;\n this._dragAndDrop = dragAndDrop;\n this._getTree = getTree;\n this._htmlElement = htmlElement;\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?.parent) {\n this.renderFromNode(fromNode);\n } else {\n this.renderFromRoot();\n }\n }\n\n public renderFromNode(node: Node): void {\n if (!node.element) {\n return;\n }\n\n const currentLi = node.element;\n const newLi = this._createLi(node, node.getLevel());\n currentLi.replaceWith(newLi);\n\n // create children\n this._createDomElements(newLi, node.children, false, node.getLevel() + 1);\n }\n\n public renderFromRoot(): void {\n this._htmlElement.textContent = '';\n\n const tree = this._getTree();\n\n if (tree) {\n this._createDomElements(this._htmlElement, tree.children, true, 1);\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 _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 as HTMLElement).nodeType) {\n return value as HTMLElement;\n } else {\n return jQuery(value)[0];\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 if (child.hasChildren()) {\n this._createDomElements(li, child.children, false, level + 1);\n }\n }\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 /* Create the <li> element\n * Attach it to node.element.\n * Call onCreateLi\n */\n private _createLi(node: Node, level: number): HTMLLIElement {\n const isSelected = 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 this._attachNodeData(node, li);\n\n if (this._onCreateLi) {\n this._onCreateLi(node, jQuery(li), isSelected);\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 _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 _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 _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","import type {\n CloseNode,\n GetSelectedNode,\n IsFocusOnTree,\n OpenNode,\n SelectNode,\n} from \"./jqtreeMethodTypes\";\nimport type { Node } from \"./node\";\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\n private _isFocusOnTree: IsFocusOnTree;\n\n private _keyboardSupport: boolean;\n private _openNode: OpenNode;\n private _originalSelectNode: SelectNode;\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 document.addEventListener(\"keydown\", this._handleKeyDown);\n }\n }\n\n public deinit(): void {\n if (this._keyboardSupport) {\n document.removeEventListener(\"keydown\", this._handleKeyDown);\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 private _canHandleKeyboard(): boolean {\n return this._keyboardSupport && this._isFocusOnTree();\n }\n\n private _handleKeyDown = (e: KeyboardEvent): void => {\n if (!this._canHandleKeyboard()) {\n return;\n }\n\n let isKeyHandled = false;\n\n const selectedNode = this._getSelectedNode();\n if (selectedNode) {\n switch (e.key) {\n case \"ArrowDown\":\n isKeyHandled = this.moveDown(selectedNode);\n break;\n\n case \"ArrowLeft\":\n isKeyHandled = this._moveLeft(selectedNode);\n break;\n\n case \"ArrowRight\":\n isKeyHandled = this._moveRight(selectedNode);\n break;\n\n case \"ArrowUp\":\n isKeyHandled = this.moveUp(selectedNode);\n break;\n }\n }\n\n if (isKeyHandled) {\n e.preventDefault();\n }\n };\n\n private _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 true;\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 private _moveRight(selectedNode: Node): boolean {\n if (!selectedNode.isFolder()) {\n return false;\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 true;\n }\n }\n }\n\n /* Select the node.\n * Don't do anything if the node is null.\n * Result: a different node was selected.\n */\n private _selectNode(node: Node | null): boolean {\n if (!node) {\n return false;\n } else {\n this._originalSelectNode(node);\n\n return true;\n }\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 type { TriggerEvent } from \"./jqtreeMethodTypes\";\nimport type { PositionInfo } from \"./mouseUtils\";\nimport type { Node } from \"./node\";\n\nimport {\n getPositionInfoFromMouseEvent,\n getPositionInfoFromTouch,\n} from \"./mouseUtils\";\n\nexport type GetMouseDelay = () => number;\nexport type GetNode = (element: HTMLElement) => Node | null;\nexport type MouseCapture = (positionInfo: PositionInfo) => boolean | null;\nexport type MouseStart = (positionInfo: PositionInfo) => boolean;\n\ninterface ClickTarget {\n node: Node;\n type: \"button\" | \"label\";\n}\n\ninterface MouseHandlerParams {\n element: HTMLElement;\n getMouseDelay: () => number;\n getNode: GetNode;\n onClickButton: (node: Node) => void;\n onClickTitle: (node: Node) => void;\n onMouseCapture: MouseCapture;\n onMouseDrag: (positionInfo: PositionInfo) => void;\n onMouseStart: MouseStart;\n onMouseStop: (positionInfo: PositionInfo) => void;\n triggerEvent: TriggerEvent;\n useContextMenu: boolean;\n}\n\nclass MouseHandler {\n private _element: HTMLElement;\n private _getMouseDelay: GetMouseDelay;\n private _getNode: GetNode;\n\n private _isMouseDelayMet: boolean;\n\n private _isMouseStarted: boolean;\n\n private _mouseDelayTimer: null | number;\n\n private _mouseDownInfo: null | PositionInfo;\n private _onClickButton: (node: Node) => void;\n private _onClickTitle: (node: Node) => void;\n\n private _onMouseCapture: MouseCapture;\n\n private _onMouseDrag: (positionInfo: PositionInfo) => void;\n\n private _onMouseStart: MouseStart;\n\n private _onMouseStop: (positionInfo: PositionInfo) => void;\n\n private _triggerEvent: TriggerEvent;\n private _useContextMenu: boolean;\n constructor({\n 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 public deinit(): void {\n this._element.removeEventListener(\"click\", this._handleClick);\n this._element.removeEventListener(\"dblclick\", this._handleDblclick);\n\n if (this._useContextMenu) {\n this._element.removeEventListener(\n \"contextmenu\",\n this._handleContextmenu,\n );\n }\n\n this._element.removeEventListener(\"mousedown\", this._mouseDown);\n this._element.removeEventListener(\"touchstart\", this._touchStart);\n this._removeMouseMoveEventListeners();\n }\n private _getClickTarget(element: HTMLElement): ClickTarget | null {\n const button = element.closest<HTMLElement>(\".jqtree-toggler\");\n\n if (button) {\n const node = this._getNode(button);\n\n if (node) {\n return {\n node,\n type: \"button\",\n };\n }\n } else {\n const jqTreeElement =\n element.closest<HTMLElement>(\".jqtree-element\");\n\n if (jqTreeElement) {\n const node = this._getNode(jqTreeElement);\n if (node) {\n return {\n node,\n type: \"label\",\n };\n }\n }\n }\n\n return null;\n }\n private _handleClick = (e: MouseEvent): void => {\n if (!e.target) {\n return;\n }\n\n const clickTarget = this._getClickTarget(e.target as HTMLElement);\n\n if (!clickTarget) {\n return;\n }\n\n switch (clickTarget.type) {\n case \"button\":\n this._onClickButton(clickTarget.node);\n\n e.preventDefault();\n e.stopPropagation();\n break;\n\n case \"label\": {\n if (this._triggerEvent(\"tree.click\", {\n click_event: e,\n node: clickTarget.node,\n })) {\n this._onClickTitle(clickTarget.node);\n }\n break;\n }\n }\n };\n\n private _handleContextmenu = (e: MouseEvent) => {\n if (!e.target) {\n return;\n }\n\n const div = (e.target as HTMLElement).closest<HTMLElement>(\n \"ul.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 click_event: e,\n node,\n });\n return false;\n }\n }\n\n return null;\n };\n\n private _handleDblclick = (e: MouseEvent): void => {\n if (!e.target) {\n return;\n }\n\n const clickTarget = this._getClickTarget(e.target as HTMLElement);\n\n if (clickTarget?.type === \"label\") {\n this._triggerEvent(\"tree.dblclick\", {\n click_event: e,\n node: clickTarget.node,\n });\n }\n };\n\n private _handleMouseDown(positionInfo: PositionInfo): boolean {\n // We may have missed mouseup (out of window)\n if (this._isMouseStarted) {\n this._handleMouseUp(positionInfo);\n }\n\n this._mouseDownInfo = positionInfo;\n\n if (!this._onMouseCapture(positionInfo)) {\n return false;\n }\n\n this._handleStartMouse();\n\n return true;\n }\n\n private _handleMouseMove(\n e: MouseEvent | TouchEvent,\n positionInfo: PositionInfo,\n ): void {\n if (this._isMouseStarted) {\n this._onMouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n return;\n }\n\n if (!this._isMouseDelayMet) {\n return;\n }\n\n if (this._mouseDownInfo) {\n this._isMouseStarted = this._onMouseStart(this._mouseDownInfo);\n }\n\n if (this._isMouseStarted) {\n this._onMouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n } else {\n this._handleMouseUp(positionInfo);\n }\n }\n private _handleMouseUp(positionInfo: PositionInfo): void {\n this._removeMouseMoveEventListeners();\n this._isMouseDelayMet = false;\n this._mouseDownInfo = null;\n\n if (this._isMouseStarted) {\n this._isMouseStarted = false;\n this._onMouseStop(positionInfo);\n }\n }\n\n private _handleStartMouse(): void {\n document.addEventListener(\"mousemove\", this._mouseMove, {\n passive: false,\n });\n document.addEventListener(\"touchmove\", this._touchMove, {\n passive: false,\n });\n document.addEventListener(\"mouseup\", this._mouseUp, { passive: false });\n document.addEventListener(\"touchend\", this._touchEnd, {\n passive: false,\n });\n\n const mouseDelay = this._getMouseDelay();\n\n if (mouseDelay) {\n this._startMouseDelayTimer(mouseDelay);\n } else {\n this._isMouseDelayMet = true;\n }\n }\n\n private _mouseDown = (e: MouseEvent): void => {\n // Left mouse button?\n if (e.button !== 0) {\n return;\n }\n\n const result = this._handleMouseDown(getPositionInfoFromMouseEvent(e));\n\n if (result && e.cancelable) {\n e.preventDefault();\n }\n };\n\n private _mouseMove = (e: MouseEvent): void => {\n this._handleMouseMove(e, getPositionInfoFromMouseEvent(e));\n };\n\n private _mouseUp = (e: MouseEvent): void => {\n this._handleMouseUp(getPositionInfoFromMouseEvent(e));\n };\n\n private _removeMouseMoveEventListeners() {\n document.removeEventListener(\"mousemove\", this._mouseMove);\n document.removeEventListener(\"touchmove\", this._touchMove);\n document.removeEventListener(\"mouseup\", this._mouseUp);\n document.removeEventListener(\"touchend\", this._touchEnd);\n }\n\n private _startMouseDelayTimer(mouseDelay: number): void {\n if (this._mouseDelayTimer) {\n clearTimeout(this._mouseDelayTimer);\n }\n\n this._mouseDelayTimer = window.setTimeout(() => {\n if (this._mouseDownInfo) {\n this._isMouseDelayMet = true;\n }\n }, mouseDelay);\n\n this._isMouseDelayMet = false;\n }\n\n private _touchEnd = (e: TouchEvent): void => {\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.touches[0];\n\n if (!touch) {\n return;\n }\n\n this._handleMouseUp(getPositionInfoFromTouch(touch, e));\n };\n\n private _touchMove = (e: TouchEvent): void => {\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.touches[0];\n\n if (!touch) {\n return;\n }\n\n this._handleMouseMove(e, getPositionInfoFromTouch(touch, e));\n };\n\n private _touchStart = (e: TouchEvent): void => {\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.touches[0];\n\n if (!touch) {\n return;\n }\n\n this._handleMouseDown(getPositionInfoFromTouch(touch, e));\n };\n}\n\nexport default MouseHandler;\n","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 type Position = \"after\" | \"before\" | \"inside\";\n\ntype IterateCallback = (node: Node, level: number) => boolean;\n\nexport class Node implements INode {\n [key: string]: unknown;\n\n public children: Node[];\n public element?: HTMLElement;\n public id?: NodeId;\n public idMapping: Map<NodeId, Node>;\n public is_loading: boolean;\n public is_open: boolean;\n public isEmptyFolder: boolean;\n public load_on_demand: boolean;\n public name: string;\n public nodeClass?: typeof Node;\n public parent: Node | null;\n public tree?: Node;\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 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 /*\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 public addNodeToIndex(node: Node): void {\n if (node.id != null) {\n this.idMapping.set(node.id, 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 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 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 /*\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 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 getLastChild(): Node | null {\n if (!this.hasChildren()) {\n return null;\n } else {\n const lastChild = this.children[this.children.length - 1] as Node;\n\n if (!(lastChild.hasChildren() && lastChild.is_open)) {\n return lastChild;\n } else {\n return lastChild.getLastChild();\n }\n }\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 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 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 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 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 getNodeById(nodeId: NodeId): Node | null {\n return this.idMapping.get(nodeId) ?? null;\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 new Error(`Node with name ${name} not found`);\n }\n\n return node;\n }\n\n public getNodesByProperty(key: string, value: unknown): Node[] {\n return this.filter((node: Node) => node[key] === value);\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 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 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 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 /*\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 // 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 public isFolder(): boolean {\n return this.hasChildren() || this.load_on_demand;\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 /*\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 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 _iterate(this, 0);\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[]): this {\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 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 \"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 \"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 \"inside\": {\n // move inside as first child\n targetNode.addChildAtPosition(movedNode, 0);\n return true;\n }\n }\n }\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 remove(): void {\n if (this.parent) {\n this.parent.removeChild(this);\n this.parent = null;\n }\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 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 removeNodeFromIndex(node: Node): void {\n if (node.id != null) {\n this.idMapping.delete(node.id);\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 private _createNode(nodeData?: NodeData): Node {\n const nodeClass = this._getNodeClass();\n return new nodeClass(nodeData);\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 // 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 private _setParent(parent: Node): void {\n this.parent = parent;\n this.tree = parent.tree;\n this.tree?.addNodeToIndex(this);\n }\n}\n","import type { 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 type { DropHint } from \"../dragAndDropHandler/types\";\nimport type { Node, Position } from \"../node\";\n\nclass GhostDropHint implements DropHint {\n private _element: HTMLElement;\n private _ghost: HTMLElement;\n private _node: Node;\n\n constructor(node: Node, element: HTMLElement, position: Position) {\n this._element = element;\n this._node = node;\n this._ghost = this._createGhostElement();\n\n switch (position) {\n case \"after\":\n this._moveAfter();\n break;\n\n case \"before\":\n this._moveBefore();\n break;\n\n case \"inside\": {\n if (node.isFolder() && node.is_open) {\n this._moveInsideOpenFolder();\n } else {\n this._moveInside();\n }\n }\n }\n }\n\n public remove(): void {\n this._ghost.remove();\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 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 _moveInside(): void {\n this._element.after(this._ghost);\n this._ghost.classList.add(\"jqtree-inside\");\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\nexport default GhostDropHint;\n","import type { DropHint } from \"../dragAndDropHandler/types\";\nimport type { GetScrollLeft } from \"../jqtreeMethodTypes\";\nimport type { Node, Position } from \"../node\";\n\nimport BorderDropHint from \"./borderDropHint\";\nimport GhostDropHint from \"./ghostDropHint\";\n\nexport interface NodeElementParams {\n getScrollLeft: GetScrollLeft;\n node: Node;\n tabIndex?: number;\n treeElement: HTMLElement;\n}\n\nclass NodeElement {\n public element: HTMLElement;\n public node: Node;\n private _getScrollLeft: GetScrollLeft;\n private _tabIndex?: number;\n private _treeElement: 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 addDropHint(position: Position): 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 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 public init(node: Node): void {\n this.node = node;\n\n node.element ??= this._treeElement;\n\n this.element = node.element;\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 protected getTitleSpan(): HTMLSpanElement {\n return this.element.querySelector(\n \":scope > .jqtree-element > span.jqtree-title\",\n ) as HTMLSpanElement;\n }\n\n protected getUl(): HTMLUListElement {\n return this.element.querySelector(\":scope > ul\") as HTMLUListElement;\n }\n\n protected mustShowBorderDropHint(position: Position): boolean {\n return position === \"inside\";\n }\n}\n\nexport default NodeElement;\n","export type AnimationSpeed = \"fast\" | \"slow\" | number;\n\nexport const getAnimationDuration = (duration: AnimationSpeed): number => {\n if (typeof duration === \"number\") {\n return duration;\n }\n\n return duration === \"slow\" ? 600 : 200;\n};\n\nexport const slideDown = (\n element: HTMLElement,\n animationSpeed: AnimationSpeed,\n onFinished: () => void,\n): void => {\n element.style.display = \"block\";\n\n const animation = element.animate(\n [\n { height: \"0\", overflow: \"hidden\" },\n { height: `${element.scrollHeight}px`, overflow: \"hidden\" },\n ],\n { duration: getAnimationDuration(animationSpeed) },\n );\n\n animation.onfinish = () => {\n onFinished();\n };\n};\n\nexport const slideUp = (\n element: HTMLElement,\n animationSpeed: AnimationSpeed,\n onFinished: () => void,\n): void => {\n const animation = element.animate(\n [\n { height: `${element.scrollHeight}px`, overflow: \"hidden\" },\n { height: \"0\", overflow: \"hidden\" },\n ],\n { duration: getAnimationDuration(animationSpeed) },\n );\n\n animation.onfinish = () => {\n element.style.display = \"none\";\n onFinished();\n };\n};","import type { AnimationSpeed } from \"../animation\";\nimport type { OnFinishOpenNode, TriggerEvent } from \"../jqtreeMethodTypes\";\nimport type { Position } from \"../node\";\nimport type { NodeElementParams } from \"./index\";\n\nimport { slideDown, slideUp } from \"../animation\";\nimport NodeElement from \"./index\";\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 close(slide: boolean, animationSpeed: AnimationSpeed): 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 const ul = this.getUl();\n\n if (slide) {\n slideUp(ul, animationSpeed, doClose);\n } else {\n ul.style.display = \"none\";\n doClose();\n }\n }\n\n public open(\n onFinished: OnFinishOpenNode | undefined,\n slide: boolean,\n animationSpeed: AnimationSpeed,\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 const ul = this.getUl();\n\n if (slide) {\n slideDown(ul, animationSpeed, doOpen);\n } else {\n ul.style.display = \"block\";\n doOpen();\n }\n }\n\n protected mustShowBorderDropHint(position: Position): boolean {\n return !this.node.is_open && 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 type {\n AddToSelection,\n GetNodeById,\n GetSelectedNodes,\n GetTree,\n OpenNode,\n RefreshElements,\n RemoveFromSelection,\n} from \"./jqtreeMethodTypes\";\nimport type { OnGetStateFromStorage, OnSetStateFromStorage } from \"./jqtreeOptions\";\nimport type { Node } from \"./node\";\n\nimport { isInt } from \"./util\";\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\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 getNodeIdToBeSelected(): NodeId | null {\n const state = this.getStateFromStorage();\n\n if (state?.selected_node) {\n return state.selected_node[0] ?? null;\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 public getStateFromStorage(): null | SavedState {\n const jsonData = this._loadFromStorage();\n\n if (jsonData) {\n return this._parseState(jsonData);\n } else {\n return null;\n }\n }\n\n public saveState(): void {\n const state = JSON.stringify(this.getState());\n\n if (this._onSetStateFromStorage) {\n this._onSetStateFromStorage(state);\n } else {\n localStorage.setItem(this._getKeyName(), state);\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 (boolean)\n */\n public setInitialState(state: SavedState): boolean {\n let mustLoadOnDemand = false;\n\n if (state.open_nodes) {\n mustLoadOnDemand = this._openInitialNodes(state.open_nodes);\n }\n\n this._resetSelection();\n\n if (state.selected_node) {\n this._selectInitialNodes(state.selected_node);\n }\n\n return mustLoadOnDemand;\n }\n\n public setInitialStateOnDemand(\n state: SavedState,\n cbFinished: () => void,\n ): void {\n let loadingCount = 0;\n let nodeIds = state.open_nodes;\n\n const openNodes = (): void => {\n if (!nodeIds) {\n return;\n }\n\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 (state.selected_node) {\n if (this._selectInitialNodes(state.selected_node)) {\n this._refreshElements(null);\n }\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 _loadFromStorage(): null | string {\n if (this._onGetStateFromStorage) {\n return this._onGetStateFromStorage();\n } else {\n return localStorage.getItem(this._getKeyName());\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 _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.selected_node && isInt(state.selected_node)) {\n // Convert to array\n state.selected_node = [state.selected_node];\n }\n\n return state;\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 _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","export type HorizontalScrollDirection = \"left\" | \"right\";\nexport type VerticalScrollDirection = \"bottom\" | \"top\";\n\ninterface ConstructorParams {\n container: HTMLElement;\n refreshHitAreas: () => void;\n}\n\nexport abstract class ScrollParent {\n protected container: HTMLElement;\n protected horizontalScrollDirection?: HorizontalScrollDirection;\n protected horizontalScrollTimeout?: number;\n\n protected refreshHitAreas: () => void;\n protected verticalScrollDirection?: VerticalScrollDirection;\n protected verticalScrollTimeout?: number;\n\n constructor({ container, refreshHitAreas }: ConstructorParams) {\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.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 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 }\n\n protected abstract getNewHorizontalScrollDirection(\n pageX: number,\n ): HorizontalScrollDirection | undefined;\n protected abstract getNewVerticalScrollDirection(\n pageY: number,\n ): undefined | VerticalScrollDirection;\n\n protected scrollHorizontally() {\n if (!this.horizontalScrollDirection) {\n return;\n }\n\n const distance = this.horizontalScrollDirection === \"left\" ? -20 : 20;\n this.container.scrollBy({\n behavior: \"instant\",\n left: distance,\n top: 0,\n });\n\n this.refreshHitAreas();\n\n setTimeout(this.scrollHorizontally.bind(this), 40);\n }\n\n protected scrollVertically() {\n if (!this.verticalScrollDirection) {\n return;\n }\n\n const distance = this.verticalScrollDirection === \"top\" ? -20 : 20;\n this.container.scrollBy({\n behavior: \"instant\",\n left: 0,\n top: distance,\n });\n\n this.refreshHitAreas();\n\n setTimeout(this.scrollVertically.bind(this), 40);\n }\n}\n","import type {\n HorizontalScrollDirection,\n VerticalScrollDirection,\n} from \"./scrollParent\";\n\nimport { getElementPosition, getOffsetTop } from \"../positionUtils\";\nimport { ScrollParent } from \"./scrollParent\";\n\n\nexport default class ContainerScrollParent extends ScrollParent {\n private _scrollParentBottom?: number;\n private _scrollParentTop?: number;\n\n public stopScrolling() {\n super.stopScrolling();\n\n this.horizontalScrollDirection = undefined;\n this.verticalScrollDirection = undefined;\n }\n\n protected getNewHorizontalScrollDirection(\n pageX: number,\n ): HorizontalScrollDirection | undefined {\n const scrollParentOffset = getElementPosition(this.container);\n const containerWidth = this.container.getBoundingClientRect().width;\n\n const rightEdge = scrollParentOffset.left + containerWidth;\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 protected getNewVerticalScrollDirection(\n pageY: number,\n ): undefined | VerticalScrollDirection {\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 _getScrollParentBottom() {\n if (this._scrollParentBottom == null) {\n const containerHeight =\n this.container.getBoundingClientRect().height;\n this._scrollParentBottom =\n this._getScrollParentTop() + containerHeight;\n }\n\n return this._scrollParentBottom;\n }\n\n private _getScrollParentTop() {\n this._scrollParentTop ??= getOffsetTop(this.container);\n\n return this._scrollParentTop;\n }\n}\n","import type {\n HorizontalScrollDirection,\n VerticalScrollDirection,\n} from \"./scrollParent\";\n\nimport { getOffsetTop } from \"../positionUtils\";\nimport { ScrollParent } from \"./scrollParent\";\n\ninterface Params {\n refreshHitAreas: () => void;\n treeElement: HTMLElement;\n}\n\nexport default class DocumentScrollParent extends ScrollParent {\n private _documentScrollHeight?: number;\n private _documentScrollWidth?: number;\n private _treeElement: HTMLElement;\n\n constructor({ refreshHitAreas, treeElement }: Params) {\n super({ container: document.documentElement, refreshHitAreas });\n\n this._treeElement = treeElement;\n }\n\n public scrollToY(top: number): void {\n const treeTop = getOffsetTop(this._treeElement);\n\n super.scrollToY(top + treeTop);\n }\n\n public stopScrolling() {\n super.stopScrolling();\n\n this._documentScrollHeight = undefined;\n this._documentScrollWidth = undefined;\n }\n\n protected getNewHorizontalScrollDirection(\n pageX: number,\n ): HorizontalScrollDirection | undefined {\n const scrollLeft = this.container.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 protected getNewVerticalScrollDirection(\n pageY: number,\n ): undefined | VerticalScrollDirection {\n const scrollTop = this.container.scrollTop;\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 _canScrollDown() {\n return (\n this.container.scrollTop + this.container.clientHeight <\n this._getDocumentScrollHeight()\n );\n }\n\n private _canScrollRight() {\n return (\n this.container.scrollLeft + this.container.clientWidth <\n this._getDocumentScrollWidth()\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 this._documentScrollHeight ??= this.container.scrollHeight;\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 this._documentScrollWidth ??= this.container.scrollWidth;\n\n return this._documentScrollWidth;\n }\n}\n","import type { ScrollParent } from \"./scrollParent\";\n\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 type { PositionInfo } from \"./mouseUtils\";\nimport type { ScrollParent } from \"./scrollHandler/scrollParent\";\n\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 getScrollLeft(): number {\n return this._getScrollParent().getScrollLeft();\n }\n\n public scrollToY(top: number): void {\n this._getScrollParent().scrollToY(top);\n }\n\n public stopScrolling() {\n this._getScrollParent().stopScrolling();\n }\n\n private _checkHorizontalScrolling(positionInfo: PositionInfo): void {\n this._getScrollParent().checkHorizontalScrolling(positionInfo.pageX);\n }\n\n private _checkVerticalScrolling(positionInfo: PositionInfo): void {\n this._getScrollParent().checkVerticalScrolling(positionInfo.pageY);\n }\n\n private _getScrollParent(): ScrollParent {\n this._scrollParent ??= createScrollParent(\n this._treeElement,\n this._refreshHitAreas,\n );\n\n return this._scrollParent;\n }\n}\n","import type { GetNodeById } from \"./jqtreeMethodTypes\";\nimport type { Node } from \"./node\";\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 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 clear(): void {\n this._selectedNodes.clear();\n this._selectedSingleNode = null;\n }\n\n public getSelectedNode(): false | Node {\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: Node[] = [];\n\n this._selectedNodes.forEach((id) => {\n const node = this._getNodeById(id);\n if (node && parent.isParentOf(node)) {\n selectedNodes.push(node);\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 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","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 ): null | SimpleWidget<unknown> => {\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 (argument1 === \"destroy\") {\n destroyWidget(this);\n return undefined;\n } else {\n return callFunction(this, functionName, args);\n }\n } else {\n return undefined;\n }\n };\n};\n\nexport default class SimpleWidget<WidgetOptions> {\n [key: string]: unknown;\n\n protected static defaults: unknown = {};\n\n public $el: JQuery;\n\n public options: WidgetOptions;\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 static register(widgetClass: unknown, widgetName: string): void {\n register(widgetClass, widgetName);\n }\n\n public deinit(): void {\n //\n }\n\n public destroy(): void {\n this.deinit();\n }\n\n public init(): void {\n //\n }\n}\n","const version = \"1.9.0\";\n\nexport default version;\n","import type { HandleFinishedLoading } from \"./dataLoader\";\nimport type { OnFinishOpenNode } from \"./jqtreeMethodTypes\";\nimport type { JQTreeOptions } from \"./jqtreeOptions\";\nimport type { PositionInfo } from \"./mouseUtils\";\nimport type { Position } from \"./node\";\nimport type { SavedState } from \"./saveStateHandler\";\n\nimport DataLoader from \"./dataLoader\";\nimport { DragAndDropHandler } from \"./dragAndDropHandler\";\nimport ElementsRenderer from \"./elementsRenderer\";\nimport KeyHandler from \"./keyHandler\";\nimport MouseHandler from \"./mouseHandler\";\nimport { Node } from \"./node\";\nimport NodeElement from \"./nodeElement\";\nimport FolderElement from \"./nodeElement/folderElement\";\nimport { getOffsetTop } from \"./positionUtils\";\nimport SaveStateHandler from \"./saveStateHandler\";\nimport ScrollHandler from \"./scrollHandler\";\nimport SelectNodeHandler from \"./selectNodeHandler\";\nimport SimpleWidget from \"./simple.widget\";\nimport __version__ from \"./version\";\n\ninterface SelectNodeOptions {\n mustSetFocus?: boolean;\n mustToggle?: 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 _dataLoader: DataLoader;\n private _dndHandler: DragAndDropHandler;\n private _element: JQuery;\n private _htmlElement: HTMLElement;\n private _isInitialized: boolean;\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 private _tree: Node;\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 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(mustSetFocus ?? true);\n\n this._saveState();\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 closeNode(node?: Node, slideParam?: 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.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 deinit(): void {\n this._htmlElement.textContent = \"\";\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 public getNodeByCallback(callback: (node: Node) => boolean): Node | null {\n return this._tree.getNodeByCallback(callback);\n }\n\n public getNodeByHtmlElement(\n inputElement: HTMLElement | JQuery,\n ): Node | null {\n const element =\n inputElement instanceof HTMLElement\n ? inputElement\n : inputElement.get(0);\n\n if (!element) {\n return null;\n }\n\n return this._getNode(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 getSelectedNode(): false | Node {\n return this._selectNodeHandler.getSelectedNode();\n }\n\n public getSelectedNodes(): Node[] {\n return this._selectNodeHandler.getSelectedNodes();\n }\n\n public getState(): null | SavedState {\n return this._saveStateHandler.getState();\n }\n\n public getStateFromStorage(): null | SavedState {\n return this._saveStateHandler.getStateFromStorage();\n }\n\n public getTree(): Node {\n return this._tree;\n }\n\n public getVersion(): string {\n return __version__;\n }\n\n public init(): void {\n super.init();\n\n this._element = this.$el;\n this._htmlElement = this._element.get(0) as HTMLElement;\n this._isInitialized = false;\n\n this.options.dataUrl ??= this._element.data(\"url\");\n\n const dataRtl = this._element.data(\"rtl\") as unknown;\n this.options.rtl ??= dataRtl === '' ? true : Boolean(dataRtl);\n\n this.options.closedIcon ??= this._getDefaultClosedIcon();\n\n this._connectHandlers();\n this._initData();\n }\n\n public isDragging(): boolean {\n return this._dndHandler.isDragging;\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 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: Node | null | string,\n param2?: HandleFinishedLoading | Node | null,\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 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 moveNode(\n node?: Node,\n targetNode?: Node,\n position?: Position,\n ): 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 if (!position) {\n throw Error(PARAM_IS_EMPTY + \"position\");\n }\n\n this._tree.moveNode(node, targetNode, position);\n this._refreshElements(null);\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 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: null | OnFinishOpenNode;\n let slide: boolean | null;\n\n if (typeof param1 === \"function\") {\n onFinished = param1;\n slide = null;\n } else {\n slide = param1 as boolean;\n onFinished = param2 as OnFinishOpenNode;\n }\n\n slide ??= this.options.slide;\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 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 refresh(): JQuery {\n this._refreshElements(null);\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 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 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 scrollToNode(node?: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n if (!node.element) {\n return this._element;\n }\n\n const top =\n getOffsetTop(node.element) -\n getOffsetTop(this._htmlElement);\n\n this._scrollHandler.scrollToY(top);\n\n return this._element;\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 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 setState(state?: SavedState): JQuery {\n if (state) {\n this._saveStateHandler.setInitialState(state);\n this._refreshElements(null);\n }\n\n return this._element;\n }\n\n public toggle(node?: Node, slideParam: boolean | null = 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 toJson(): string {\n return JSON.stringify(this._tree.getData());\n }\n\n public updateNode(node?: Node, data?: NodeData): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n if (!data) {\n return this._element;\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);\n }\n }\n\n this._refreshElements(node);\n\n return this._element;\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 selectNode = this.selectNode.bind(this);\n const treeElement = this._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 refreshHitAreas = () => {\n dndHandler.refresh();\n }\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 getTree,\n htmlElement: treeElement,\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 _containsElement(element: HTMLElement): boolean {\n const node = this._getNode(element);\n\n return node?.tree === this._tree;\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 triggerEvent = this._triggerEvent.bind(this);\n\n return new FolderElement({\n closedIconElement,\n getScrollLeft,\n node,\n openedIconElement,\n tabIndex,\n treeElement: this._htmlElement,\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\n return new NodeElement({\n getScrollLeft,\n node,\n tabIndex,\n treeElement: this._htmlElement\n });\n }\n\n private _deselectCurrentNode(): void {\n const node = this.getSelectedNode();\n if (node) {\n this.removeFromSelection(node);\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 _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 parent_node: parentNode,\n tree_data: data,\n });\n }\n\n private _doLoadDataFromUrl(\n urlInfoParam: JQuery.AjaxSettings | null | string,\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 _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 &&\n this.options.onCanSelectNode(node)\n );\n } else {\n return this.options.selectable;\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 deselected_node: deselectedNode,\n node,\n });\n this._openParents(node);\n }\n\n saveState();\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 _getDataUrlInfo(node: Node | null): JQuery.AjaxSettings | null {\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 const dataUrl = this.options.dataUrl;\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 _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 _getNode(element: HTMLElement): Node | null {\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 _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 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 _getNodeIdToBeSelected(): NodeId | null {\n if (this.options.saveState) {\n return this._saveStateHandler.getNodeIdToBeSelected();\n } else {\n return null;\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 _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 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 private _isFocusOnTree(): boolean {\n const activeElement = document.activeElement;\n\n return activeElement?.tagName === \"SPAN\" && this._containsElement(activeElement as HTMLElement);\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 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 _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 _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 _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 _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 _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 _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 if (!node.children.length) {\n return;\n }\n\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 private _openParents(node: Node) {\n const parent = node.parent;\n\n if (parent?.parent && !parent.is_open) {\n this.openNode(parent, false);\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 _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 nodeElement.select(mustSetFocus);\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 _triggerEvent(\n eventName: string,\n values?: Record<string, unknown>,\n ): boolean {\n const event = jQuery.Event(eventName, values);\n this._element.trigger(event);\n return !event.isDefaultPrevented();\n }\n}\n\nSimpleWidget.register(JqTreeWidget, \"tree\");\n"],"names":["__version__"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tree.jquery.debug.js","sources":["node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/classNames.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/dataLoader.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/positionUtils.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/dragAndDropHandler/binarySearch.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/dragAndDropHandler/dragElement.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/dragAndDropHandler/iterateVisibleNodes.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/dragAndDropHandler/generateHitAreas.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/dragAndDropHandler/index.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/util.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/elementsRenderer.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/keyHandler.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/mouseUtils.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/mouseHandler.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/nodeUtils.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/node.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/nodeElement/borderDropHint.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/nodeElement/ghostDropHint.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/nodeElement/index.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/animation.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/nodeElement/folderElement.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/requestUrl.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/saveStateHandler.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/scrollHandler/scrollParent.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/scrollHandler/containerScrollParent.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/scrollHandler/documentScrollParent.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/scrollHandler/createScrollParent.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/scrollHandler.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/selectNodeHandler.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/setDefaultOptions.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/triggerCustomEvent.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/version.js","node_modules/.pnpm/tree-element@0.1.1/node_modules/tree-element/lib/index.js","src/triggerJQueryEvent.ts","src/version.ts","src/tree.jquery.ts"],"sourcesContent":["const DEFAULT_CLASS_PREFIX = \"tree-element\";\n\n/* Create the class names that the widget puts on the elements it creates.\n * They are all derived from classPrefix, except for the class of the root\n * element and the class that every element gets, which have an option of\n * their own.\n */\nconst createClassNames = ({\n classPrefix,\n commonClassName,\n treeClassName\n}) => ({\n border: `${classPrefix}-border`,\n circle: `${classPrefix}-circle`,\n closed: `${classPrefix}-closed`,\n common: commonClassName ?? `${classPrefix}-common`,\n dnd: `${classPrefix}-dnd`,\n dragging: `${classPrefix}-dragging`,\n element: `${classPrefix}-element`,\n folder: `${classPrefix}-folder`,\n ghost: `${classPrefix}-ghost`,\n inside: `${classPrefix}-inside`,\n line: `${classPrefix}-line`,\n loading: `${classPrefix}-loading`,\n moving: `${classPrefix}-moving`,\n rtl: `${classPrefix}-rtl`,\n selected: `${classPrefix}-selected`,\n title: `${classPrefix}-title`,\n titleButtonLeft: `${classPrefix}-title-button-left`,\n titleButtonRight: `${classPrefix}-title-button-right`,\n titleFolder: `${classPrefix}-title-folder`,\n toggler: `${classPrefix}-toggler`,\n togglerLeft: `${classPrefix}-toggler-left`,\n togglerRight: `${classPrefix}-toggler-right`,\n tree: treeClassName ?? classPrefix\n});\n\nexport { DEFAULT_CLASS_PREFIX, createClassNames as default };\n//# sourceMappingURL=classNames.js.map\n","class DataLoader {\n _abortController;\n _classNames;\n _dataFilter;\n _loadData;\n _treeElement;\n _triggerEvent;\n constructor({\n classNames,\n dataFilter,\n loadData,\n treeElement,\n triggerEvent\n }) {\n this._abortController = new AbortController();\n this._classNames = classNames;\n this._dataFilter = dataFilter;\n this._loadData = loadData;\n this._treeElement = treeElement;\n this._triggerEvent = triggerEvent;\n }\n deinit() {\n this._abortController.abort();\n }\n async loadFromUrl(url, node) {\n const element = node?.element ?? this._treeElement;\n element.classList.add(this._classNames.loading);\n this._triggerEvent(\"tree.loading_data\", {\n element,\n node\n });\n const stopLoading = () => {\n element.classList.remove(this._classNames.loading);\n this._triggerEvent(\"tree.loaded_data\", {\n element,\n node\n });\n };\n const handleResponse = async response => {\n if (response.ok) {\n const data = await response.json();\n stopLoading();\n this._loadData(this._dataFilter ? this._dataFilter(data) : data, node);\n } else {\n stopLoading();\n this._triggerEvent(\"tree.load_failed\", {\n response\n });\n }\n };\n const signal = this._abortController.signal;\n url.setSearchParam(\"_\", Date.now().toString());\n return fetch(url.toString(), {\n headers: {\n \"Content-Type\": \"application/json\"\n },\n signal\n }).then(handleResponse).catch(error => {\n if (this._abortController.signal.aborted) {\n // The request was aborted by deinit.\n return;\n }\n stopLoading();\n this._triggerEvent(\"tree.load_failed\", {\n error\n });\n });\n }\n}\n\nexport { DataLoader as default };\n//# sourceMappingURL=dataLoader.js.map\n","// Get the top position of the HTML element.\nconst getOffsetTop = element => getElementPosition(element).top;\n\n// Get the top left position of the HTML element.\nconst getElementPosition = element => {\n const rect = element.getBoundingClientRect();\n return {\n left: rect.x + window.scrollX,\n top: rect.y + window.scrollY\n };\n};\n\nexport { getElementPosition, getOffsetTop };\n//# sourceMappingURL=positionUtils.js.map\n","function binarySearch(items, compareFn) {\n let low = 0;\n let high = items.length;\n while (low < high) {\n const mid = low + high >> 1;\n const item = items[mid];\n if (item === undefined) {\n return null;\n }\n const compareResult = compareFn(item);\n if (compareResult > 0) {\n high = mid;\n } else if (compareResult < 0) {\n low = mid + 1;\n } else {\n return item;\n }\n }\n return null;\n}\n\nexport { binarySearch as default };\n//# sourceMappingURL=binarySearch.js.map\n","class DragElement {\n _element;\n _offsetX;\n _offsetY;\n constructor({\n autoEscape,\n classNames,\n nodeName,\n offsetX,\n offsetY,\n treeElement\n }) {\n this._offsetX = offsetX;\n this._offsetY = offsetY;\n this._element = this._createElement(nodeName, autoEscape, classNames);\n treeElement.appendChild(this._element);\n }\n move(pageX, pageY) {\n this._element.style.left = `${pageX - this._offsetX}px`;\n this._element.style.top = `${pageY - this._offsetY}px`;\n }\n remove() {\n this._element.remove();\n }\n _createElement(nodeName, autoEscape, classNames) {\n const element = document.createElement(\"span\");\n element.classList.add(classNames.title, classNames.dragging);\n if (autoEscape) {\n element.textContent = nodeName;\n } else {\n element.innerHTML = nodeName;\n }\n element.style.position = \"absolute\";\n return element;\n }\n}\n\nexport { DragElement as default };\n//# sourceMappingURL=dragElement.js.map\n","const iterateVisibleNodes = (tree, {\n handleAfterOpenFolder,\n handleClosedFolder,\n handleFirstNode,\n handleNode,\n handleOpenFolder\n}) => {\n let isFirstNode = true;\n const iterate = (node, nextNode) => {\n let mustIterateInside = (node.is_open === true || !node.element) && node.hasChildren();\n let element = null;\n\n // Is the element visible?\n if (node.element?.offsetParent) {\n element = node.element;\n if (isFirstNode) {\n handleFirstNode(node);\n isFirstNode = false;\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 if (mustIterateInside) {\n const childrenLength = node.children.length;\n node.children.forEach((_, i) => {\n const child = node.children[i];\n if (child) {\n if (i === childrenLength - 1) {\n iterate(child, null);\n } else {\n const nextChild = node.children[i + 1];\n if (nextChild) {\n iterate(child, nextChild);\n }\n }\n }\n });\n if (node.is_open && element) {\n handleAfterOpenFolder(node, nextNode);\n }\n }\n };\n iterate(tree, null);\n};\n\nexport { iterateVisibleNodes as default };\n//# sourceMappingURL=iterateVisibleNodes.js.map\n","import { getOffsetTop } from '../positionUtils.js';\nimport iterateVisibleNodes from './iterateVisibleNodes.js';\n\nconst generateHitPositions = (tree, currentNode) => {\n const hitPositions = [];\n let lastTop = 0;\n const addHitPosition = (node, position, top) => {\n hitPositions.push({\n node,\n position,\n top\n });\n lastTop = top;\n };\n const handleAfterOpenFolder = (node, nextNode) => {\n if (node === currentNode || nextNode === currentNode) {\n // Cannot move before or after current item\n addHitPosition(node, null, lastTop);\n } else {\n addHitPosition(node, \"after\", lastTop);\n }\n };\n const handleClosedFolder = (node, nextNode, element) => {\n const top = getOffsetTop(element);\n if (node === currentNode) {\n // Cannot move after current item\n addHitPosition(node, null, top);\n } else {\n addHitPosition(node, \"inside\", top);\n\n // Cannot move before current item\n if (nextNode !== currentNode) {\n addHitPosition(node, \"after\", top);\n }\n }\n };\n const handleFirstNode = node => {\n if (node !== currentNode && node.element) {\n addHitPosition(node, \"before\", getOffsetTop(node.element));\n }\n };\n const handleNode = (node, nextNode, element) => {\n const top = getOffsetTop(element);\n if (node === currentNode) {\n // Cannot move inside current item\n addHitPosition(node, null, top);\n } else {\n addHitPosition(node, \"inside\", top);\n }\n if (nextNode === currentNode || node === currentNode) {\n // Cannot move before or after current item\n addHitPosition(node, null, top);\n } else {\n addHitPosition(node, \"after\", top);\n }\n };\n const handleOpenFolder = (node, element) => {\n if (node === currentNode) {\n // Cannot move inside current item\n\n // Dnd over the current element is not possible: add a position with type None for the top and the bottom.\n const top = getOffsetTop(element);\n const height = element.clientHeight;\n addHitPosition(node, null, top);\n if (height > 5) {\n // Subtract 5 pixels to allow more space for the next element.\n addHitPosition(node, null, top + height - 5);\n }\n\n // Stop iterating\n return false;\n }\n\n // Cannot move before current item\n if (node.children[0] !== currentNode) {\n addHitPosition(node, \"inside\", getOffsetTop(element));\n }\n\n // Continue iterating\n return true;\n };\n iterateVisibleNodes(tree, {\n handleAfterOpenFolder,\n handleClosedFolder,\n handleFirstNode,\n handleNode,\n handleOpenFolder\n });\n return hitPositions;\n};\nconst generateHitAreasForGroup = (hitAreas, positionsInGroup, top, bottom) => {\n // limit positions in group\n const positionCount = Math.min(positionsInGroup.length, 4);\n const areaHeight = Math.round((bottom - top) / positionCount);\n let areaTop = top;\n for (let i = 0; i < positionCount; i++) {\n const position = positionsInGroup[i];\n if (position.position) {\n hitAreas.push({\n bottom: areaTop + areaHeight,\n node: position.node,\n position: position.position,\n top: areaTop\n });\n }\n areaTop += areaHeight;\n }\n};\nconst generateHitAreasFromPositions = (hitPositions, treeBottom) => {\n if (!hitPositions.length) {\n return [];\n }\n let previousTop = hitPositions[0].top;\n let group = [];\n const hitAreas = [];\n for (const position of hitPositions) {\n if (position.top !== previousTop && group.length) {\n generateHitAreasForGroup(hitAreas, group, previousTop, position.top);\n previousTop = position.top;\n group = [];\n }\n group.push(position);\n }\n generateHitAreasForGroup(hitAreas, group, previousTop, treeBottom);\n return hitAreas;\n};\nconst generateHitAreas = (tree, currentNode, treeBottom) => generateHitAreasFromPositions(generateHitPositions(tree, currentNode), treeBottom);\n\nexport { generateHitAreas as default, generateHitAreasForGroup, generateHitAreasFromPositions, generateHitPositions };\n//# sourceMappingURL=generateHitAreas.js.map\n","import { getElementPosition } from '../positionUtils.js';\nimport binarySearch from './binarySearch.js';\nimport DragElement from './dragElement.js';\nimport generateHitAreas from './generateHitAreas.js';\n\nclass DragAndDropHandler {\n currentItem;\n hitAreas;\n hoveredArea;\n isDragging;\n _autoEscape;\n _classNames;\n _dragElement;\n _getNodeElement;\n _getNodeElementForNode;\n _getScrollLeft;\n _getTree;\n _onCanMove;\n _onCanMoveTo;\n _onDragMove;\n _onDragStop;\n _onIsMoveHandle;\n _openFolderDelay;\n _openFolderTimer;\n _openNode;\n _previousGhost;\n _refreshElements;\n _slide;\n _treeElement;\n _triggerEvent;\n constructor({\n autoEscape,\n classNames,\n getNodeElement,\n getNodeElementForNode,\n getScrollLeft,\n getTree,\n onCanMove,\n onCanMoveTo,\n onDragMove,\n onDragStop,\n onIsMoveHandle,\n openFolderDelay,\n openNode,\n refreshElements,\n slide,\n treeElement,\n triggerEvent\n }) {\n this._autoEscape = autoEscape;\n this._classNames = classNames;\n this._getNodeElement = getNodeElement;\n this._getNodeElementForNode = getNodeElementForNode;\n this._getScrollLeft = getScrollLeft;\n this._getTree = getTree;\n this._onCanMove = onCanMove;\n this._onCanMoveTo = onCanMoveTo;\n this._onDragMove = onDragMove;\n this._onDragStop = onDragStop;\n this._onIsMoveHandle = onIsMoveHandle;\n this._openFolderDelay = openFolderDelay;\n this._openNode = openNode;\n this._refreshElements = refreshElements;\n this._slide = slide;\n this._treeElement = treeElement;\n this._triggerEvent = triggerEvent;\n this.hoveredArea = null;\n this.hitAreas = [];\n this.isDragging = false;\n this.currentItem = null;\n this._dragElement = null;\n this._openFolderTimer = null;\n this._previousGhost = null;\n }\n mouseCapture(positionInfo) {\n const element = positionInfo.target;\n if (!this._mustCaptureElement(element)) {\n return null;\n }\n if (this._onIsMoveHandle && !this._onIsMoveHandle(element)) {\n return null;\n }\n let nodeElement = this._getNodeElement(element);\n if (nodeElement && this._onCanMove) {\n if (!this._onCanMove(nodeElement.node)) {\n nodeElement = null;\n }\n }\n this.currentItem = nodeElement;\n return this.currentItem != null;\n }\n mouseDrag(positionInfo) {\n if (!this.currentItem || !this._dragElement) {\n return false;\n }\n this._dragElement.move(positionInfo.pageX, positionInfo.pageY);\n const area = this._findHoveredArea(positionInfo.pageX, positionInfo.pageY);\n if (area && this._canMoveToArea(area, this.currentItem)) {\n if (!area.node.isFolder()) {\n this._stopOpenFolderTimer();\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 this._updateDropHint();\n }\n } else {\n this._removeDropHint();\n this._stopOpenFolderTimer();\n this.hoveredArea = area;\n }\n if (!area) {\n if (this._onDragMove) {\n this._onDragMove(this.currentItem.node, positionInfo.originalEvent);\n }\n }\n return true;\n }\n mouseStart(positionInfo) {\n if (!this.currentItem) {\n return false;\n }\n this.refresh();\n const {\n left,\n top\n } = getElementPosition(positionInfo.target);\n const node = this.currentItem.node;\n this._dragElement = new DragElement({\n autoEscape: this._autoEscape ?? true,\n classNames: this._classNames,\n nodeName: node.name,\n offsetX: positionInfo.pageX - left,\n offsetY: positionInfo.pageY - top,\n treeElement: this._treeElement\n });\n this.isDragging = true;\n this.currentItem.element.classList.add(this._classNames.moving);\n return true;\n }\n mouseStop(positionInfo) {\n this._moveItem(positionInfo);\n this._clear();\n this._removeHover();\n this._removeDropHint();\n this._removeHitAreas();\n const currentItem = this.currentItem;\n if (this.currentItem) {\n this.currentItem.element.classList.remove(this._classNames.moving);\n this.currentItem = null;\n }\n this.isDragging = false;\n if (!this.hoveredArea && currentItem) {\n if (this._onDragStop) {\n this._onDragStop(currentItem.node, positionInfo.originalEvent);\n }\n }\n return false;\n }\n refresh() {\n this._removeHitAreas();\n if (this.currentItem) {\n const currentNode = this.currentItem.node;\n this._generateHitAreas(currentNode);\n this.currentItem = this._getNodeElementForNode(currentNode);\n if (this.isDragging) {\n this.currentItem.element.classList.add(this._classNames.moving);\n }\n }\n }\n _canMoveToArea(area, currentItem) {\n if (!this._onCanMoveTo) {\n return true;\n }\n return this._onCanMoveTo(currentItem.node, area.node, area.position);\n }\n _clear() {\n if (this._dragElement) {\n this._dragElement.remove();\n this._dragElement = null;\n }\n }\n _findHoveredArea(x, y) {\n const dimensions = this._getTreeDimensions();\n if (x < dimensions.left || y < dimensions.top || x > dimensions.right || y > dimensions.bottom) {\n return null;\n }\n return binarySearch(this.hitAreas, area => {\n if (y < area.top) {\n return 1;\n } else if (y > area.bottom) {\n return -1;\n } else {\n return 0;\n }\n });\n }\n _generateHitAreas(currentNode) {\n const tree = this._getTree();\n if (!tree) {\n this.hitAreas = [];\n } else {\n this.hitAreas = generateHitAreas(tree, currentNode, this._getTreeDimensions().bottom);\n }\n }\n _getTreeDimensions() {\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 return {\n bottom: top + this._treeElement.clientHeight + 16,\n left,\n right: left + this._treeElement.clientWidth,\n top\n };\n }\n\n /* Move the dragged node to the selected position in the tree. */\n _moveItem(positionInfo) {\n if (this.currentItem && this.hoveredArea?.position && this._canMoveToArea(this.hoveredArea, this.currentItem)) {\n const movedNode = this.currentItem.node;\n const targetNode = this.hoveredArea.node;\n const position = this.hoveredArea.position;\n const previousParent = movedNode.parent;\n if (position === \"inside\") {\n this.hoveredArea.node.is_open = true;\n }\n const doMove = () => {\n const tree = this._getTree();\n if (tree) {\n tree.moveNode(movedNode, targetNode, position);\n this._treeElement.textContent = \"\";\n this._refreshElements(null);\n }\n };\n if (this._triggerEvent(\"tree.move\", {\n moveInfo: {\n doMove,\n movedNode,\n originalEvent: positionInfo.originalEvent,\n position,\n previousParent,\n targetNode\n }\n })) {\n doMove();\n }\n }\n }\n _mustCaptureElement(element) {\n const nodeName = element.nodeName;\n return nodeName !== \"INPUT\" && nodeName !== \"SELECT\" && nodeName !== \"TEXTAREA\";\n }\n _mustOpenFolderTimer(area) {\n const node = area.node;\n return node.isFolder() && !node.is_open && area.position === \"inside\";\n }\n _removeDropHint() {\n if (this._previousGhost) {\n this._previousGhost.remove();\n }\n }\n _removeHitAreas() {\n this.hitAreas = [];\n }\n _removeHover() {\n this.hoveredArea = null;\n }\n _startOpenFolderTimer(folder) {\n const openFolder = () => {\n void this._openNode(folder, this._slide).then(() => {\n this.refresh();\n this._updateDropHint();\n });\n };\n this._stopOpenFolderTimer();\n const openFolderDelay = this._openFolderDelay;\n if (openFolderDelay !== false) {\n this._openFolderTimer = window.setTimeout(openFolder, openFolderDelay);\n }\n }\n _stopOpenFolderTimer() {\n if (this._openFolderTimer) {\n clearTimeout(this._openFolderTimer);\n this._openFolderTimer = null;\n }\n }\n _updateDropHint() {\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\nexport { DragAndDropHandler };\n//# sourceMappingURL=index.js.map\n","const isInt = n => typeof n === \"number\" && n % 1 === 0;\nconst getBoolString = value => value ? \"true\" : \"false\";\n\nexport { getBoolString, isInt };\n//# sourceMappingURL=util.js.map\n","import { getBoolString } from './util.js';\n\nclass ElementsRenderer {\n closedIconElement;\n openedIconElement;\n _autoEscape;\n _buttonLeft;\n _classNames;\n _dragAndDrop;\n _getTree;\n _htmlElement;\n _isNodeSelected;\n _onCreateLi;\n _rtl;\n _setNodeElement;\n _showEmptyFolder;\n _tabIndex;\n constructor({\n autoEscape,\n buttonLeft,\n classNames,\n closedIcon,\n dragAndDrop,\n getTree,\n htmlElement,\n isNodeSelected,\n onCreateLi,\n openedIcon,\n rtl,\n setNodeElement,\n showEmptyFolder,\n tabIndex\n }) {\n this._autoEscape = autoEscape;\n this._buttonLeft = buttonLeft;\n this._classNames = classNames;\n this._dragAndDrop = dragAndDrop;\n this._getTree = getTree;\n this._htmlElement = htmlElement;\n this._isNodeSelected = isNodeSelected;\n this._onCreateLi = onCreateLi;\n this._rtl = rtl;\n this._setNodeElement = setNodeElement;\n this._showEmptyFolder = showEmptyFolder;\n this._tabIndex = tabIndex;\n this.openedIconElement = this._createButtonElement(openedIcon ?? \"+\");\n this.closedIconElement = this._createButtonElement(closedIcon ?? \"-\");\n }\n render(fromNode) {\n if (fromNode?.parent) {\n this.renderFromNode(fromNode);\n } else {\n this.renderFromRoot();\n }\n }\n renderFromNode(node) {\n if (!node.element) {\n return;\n }\n const currentLi = node.element;\n const newLi = this._createLi(node, node.getLevel());\n currentLi.replaceWith(newLi);\n\n // create children\n this._createDomElements(newLi, node.children, false, node.getLevel() + 1);\n }\n renderFromRoot() {\n this._htmlElement.textContent = '';\n const tree = this._getTree();\n if (tree) {\n this._createDomElements(this._htmlElement, tree.children, true, 1);\n }\n }\n _attachNodeData(node, li) {\n node.element = li;\n this._setNodeElement(li, node);\n }\n _createButtonElement(value) {\n if (typeof value === \"string\") {\n // convert value to html\n const div = document.createElement(\"div\");\n div.innerHTML = value;\n return document.createTextNode(div.innerHTML);\n } else if (value.nodeType) {\n return value;\n } else {\n return undefined;\n }\n }\n _createDomElements(element, children, isRootNode, level) {\n const ul = this._createUl(isRootNode);\n element.appendChild(ul);\n for (const child of children) {\n const li = this._createLi(child, level);\n ul.appendChild(li);\n if (child.hasChildren()) {\n this._createDomElements(li, child.children, false, level + 1);\n }\n }\n }\n _createFolderLi(node, level, isSelected) {\n const buttonClasses = this._getButtonClasses(node);\n const folderClasses = this._getFolderClasses(node, isSelected);\n const iconElement = node.is_open ? this.openedIconElement : this.closedIconElement;\n\n // li\n const li = document.createElement(\"li\");\n li.className = `${this._classNames.common} ${folderClasses}`;\n li.setAttribute(\"role\", \"none\");\n\n // div\n const div = document.createElement(\"div\");\n div.className = `${this._classNames.element} ${this._classNames.common}`;\n div.setAttribute(\"role\", \"none\");\n li.appendChild(div);\n\n // button link\n const buttonLink = document.createElement(\"a\");\n buttonLink.className = buttonClasses;\n if (iconElement) {\n buttonLink.appendChild(iconElement.cloneNode(true));\n }\n if (this._buttonLeft) {\n div.appendChild(buttonLink);\n }\n\n // title span\n const titleSpan = this._createTitleSpan(node.name, isSelected, true, level);\n titleSpan.setAttribute(\"aria-expanded\", getBoolString(node.is_open));\n div.appendChild(titleSpan);\n if (!this._buttonLeft) {\n div.appendChild(buttonLink);\n }\n return li;\n }\n\n /* Create the <li> element\n * Attach it to node.element.\n * Call onCreateLi\n */\n _createLi(node, level) {\n const isSelected = this._isNodeSelected(node);\n const mustShowFolder = node.isFolder() || node.isEmptyFolder && this._showEmptyFolder;\n const li = mustShowFolder ? this._createFolderLi(node, level, isSelected) : this._createNodeLi(node, level, isSelected);\n this._attachNodeData(node, li);\n if (this._onCreateLi) {\n this._onCreateLi(node, li, isSelected);\n }\n return li;\n }\n _createNodeLi(node, level, isSelected) {\n const liClasses = [this._classNames.common];\n if (isSelected) {\n liClasses.push(this._classNames.selected);\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 = `${this._classNames.element} ${this._classNames.common}`;\n div.setAttribute(\"role\", \"none\");\n li.appendChild(div);\n\n // title span\n const titleSpan = this._createTitleSpan(node.name, isSelected, false, level);\n div.appendChild(titleSpan);\n return li;\n }\n _createTitleSpan(nodeName, isSelected, isFolder, level) {\n const titleSpan = document.createElement(\"span\");\n let classes = `${this._classNames.title} ${this._classNames.common}`;\n if (isFolder) {\n classes += ` ${this._classNames.titleFolder}`;\n }\n classes += ` ${this._buttonLeft ? this._classNames.titleButtonLeft : this._classNames.titleButtonRight}`;\n titleSpan.className = classes;\n if (isSelected) {\n const tabIndex = this._tabIndex;\n if (tabIndex !== undefined) {\n titleSpan.setAttribute(\"tabindex\", `${tabIndex}`);\n }\n }\n this._setTreeItemAriaAttributes(titleSpan, nodeName, level, isSelected);\n if (this._autoEscape) {\n titleSpan.textContent = nodeName;\n } else {\n titleSpan.innerHTML = nodeName;\n }\n return titleSpan;\n }\n _createUl(isRootNode) {\n let classString;\n let role;\n if (!isRootNode) {\n classString = \"\";\n role = \"group\";\n } else {\n classString = this._classNames.tree;\n role = \"tree\";\n if (this._rtl) {\n classString += ` ${this._classNames.rtl}`;\n }\n }\n if (this._dragAndDrop) {\n classString += ` ${this._classNames.dnd}`;\n }\n const ul = document.createElement(\"ul\");\n ul.className = `${this._classNames.common} ${classString}`;\n ul.setAttribute(\"role\", role);\n return ul;\n }\n _getButtonClasses(node) {\n const classes = [this._classNames.toggler, this._classNames.common];\n if (!node.is_open) {\n classes.push(this._classNames.closed);\n }\n if (this._buttonLeft) {\n classes.push(this._classNames.togglerLeft);\n } else {\n classes.push(this._classNames.togglerRight);\n }\n return classes.join(\" \");\n }\n _getFolderClasses(node, isSelected) {\n const classes = [this._classNames.folder];\n if (!node.is_open) {\n classes.push(this._classNames.closed);\n }\n if (isSelected) {\n classes.push(this._classNames.selected);\n }\n if (node.is_loading) {\n classes.push(this._classNames.loading);\n }\n return classes.join(\" \");\n }\n _setTreeItemAriaAttributes(element, name, level, isSelected) {\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\nexport { ElementsRenderer as default };\n//# sourceMappingURL=elementsRenderer.js.map\n","class KeyHandler {\n _closeNode;\n _getSelectedNode;\n _isFocusOnTree;\n _keyboardSupport;\n _openNode;\n _originalSelectNode;\n constructor({\n closeNode,\n getSelectedNode,\n isFocusOnTree,\n keyboardSupport,\n openNode,\n selectNode\n }) {\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 if (keyboardSupport) {\n document.addEventListener(\"keydown\", this._handleKeyDown);\n }\n }\n deinit() {\n if (this._keyboardSupport) {\n document.removeEventListener(\"keydown\", this._handleKeyDown);\n }\n }\n moveDown(selectedNode) {\n return this._selectNode(selectedNode.getNextVisibleNode());\n }\n moveUp(selectedNode) {\n return this._selectNode(selectedNode.getPreviousVisibleNode());\n }\n _canHandleKeyboard() {\n return this._keyboardSupport && this._isFocusOnTree();\n }\n _handleKeyDown = e => {\n if (!this._canHandleKeyboard()) {\n return;\n }\n let isKeyHandled = false;\n const selectedNode = this._getSelectedNode();\n if (selectedNode) {\n switch (e.key) {\n case \"ArrowDown\":\n isKeyHandled = this.moveDown(selectedNode);\n break;\n case \"ArrowLeft\":\n isKeyHandled = this._moveLeft(selectedNode);\n break;\n case \"ArrowRight\":\n isKeyHandled = this._moveRight(selectedNode);\n break;\n case \"ArrowUp\":\n isKeyHandled = this.moveUp(selectedNode);\n break;\n }\n }\n if (isKeyHandled) {\n e.preventDefault();\n }\n };\n _moveLeft(selectedNode) {\n if (selectedNode.isFolder() && selectedNode.is_open) {\n // Left on an open node closes the node\n this._closeNode(selectedNode);\n return true;\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 _moveRight(selectedNode) {\n if (!selectedNode.isFolder()) {\n return false;\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 void this._openNode(selectedNode);\n return true;\n }\n }\n }\n\n /* Select the node.\n * Don't do anything if the node is null.\n * Result: a different node was selected.\n */\n _selectNode(node) {\n if (!node) {\n return false;\n } else {\n this._originalSelectNode(node);\n return true;\n }\n }\n}\n\nexport { KeyHandler as default };\n//# sourceMappingURL=keyHandler.js.map\n","const getPositionInfoFromMouseEvent = e => ({\n originalEvent: e,\n pageX: e.pageX,\n pageY: e.pageY,\n target: e.target\n});\nconst getPositionInfoFromTouch = (touch, e) => ({\n originalEvent: e,\n pageX: touch.pageX,\n pageY: touch.pageY,\n target: touch.target\n});\n\nexport { getPositionInfoFromMouseEvent, getPositionInfoFromTouch };\n//# sourceMappingURL=mouseUtils.js.map\n","import { getPositionInfoFromMouseEvent, getPositionInfoFromTouch } from './mouseUtils.js';\n\nclass MouseHandler {\n _classNames;\n _element;\n _getMouseDelay;\n _getNode;\n _isMouseDelayMet;\n _isMouseStarted;\n _mouseDelayTimer;\n _mouseDownInfo;\n _onClickButton;\n _onClickTitle;\n _onMouseCapture;\n _onMouseDrag;\n _onMouseStart;\n _onMouseStop;\n _triggerEvent;\n _useContextMenu;\n constructor({\n classNames,\n element,\n getMouseDelay,\n getNode,\n onClickButton,\n onClickTitle,\n onMouseCapture,\n onMouseDrag,\n onMouseStart,\n onMouseStop,\n triggerEvent,\n useContextMenu\n }) {\n this._classNames = classNames;\n this._element = element;\n this._getMouseDelay = getMouseDelay;\n this._getNode = getNode;\n this._onClickButton = onClickButton;\n this._onClickTitle = onClickTitle;\n this._onMouseCapture = onMouseCapture;\n this._onMouseDrag = onMouseDrag;\n this._onMouseStart = onMouseStart;\n this._onMouseStop = onMouseStop;\n this._triggerEvent = triggerEvent;\n this._useContextMenu = useContextMenu;\n 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 if (useContextMenu) {\n element.addEventListener(\"contextmenu\", this._handleContextmenu);\n }\n this._isMouseStarted = false;\n this._mouseDelayTimer = null;\n this._isMouseDelayMet = false;\n this._mouseDownInfo = null;\n }\n deinit() {\n this._element.removeEventListener(\"click\", this._handleClick);\n this._element.removeEventListener(\"dblclick\", this._handleDblclick);\n if (this._useContextMenu) {\n this._element.removeEventListener(\"contextmenu\", this._handleContextmenu);\n }\n this._element.removeEventListener(\"mousedown\", this._mouseDown);\n this._element.removeEventListener(\"touchstart\", this._touchStart);\n this._removeMouseMoveEventListeners();\n }\n _getClickTarget(element) {\n const button = element.closest(`.${this._classNames.toggler}`);\n if (button) {\n const node = this._getNode(button);\n if (node) {\n return {\n node,\n type: \"button\"\n };\n }\n } else {\n const treeElement = element.closest(`.${this._classNames.element}`);\n if (treeElement) {\n const node = this._getNode(treeElement);\n if (node) {\n return {\n node,\n type: \"label\"\n };\n }\n }\n }\n return null;\n }\n _handleClick = e => {\n if (!e.target) {\n return;\n }\n const clickTarget = this._getClickTarget(e.target);\n if (!clickTarget) {\n return;\n }\n switch (clickTarget.type) {\n case \"button\":\n this._onClickButton(clickTarget.node);\n e.preventDefault();\n e.stopPropagation();\n break;\n case \"label\":\n {\n if (this._triggerEvent(\"tree.click\", {\n node: clickTarget.node,\n originalEvent: e\n })) {\n this._onClickTitle(clickTarget.node);\n }\n break;\n }\n }\n };\n _handleContextmenu = e => {\n if (!e.target) {\n return;\n }\n const div = e.target.closest(`ul.${this._classNames.tree} .${this._classNames.element}`);\n if (div) {\n const node = this._getNode(div);\n if (node) {\n e.preventDefault();\n e.stopPropagation();\n this._triggerEvent(\"tree.contextmenu\", {\n node,\n originalEvent: e\n });\n return false;\n }\n }\n return null;\n };\n _handleDblclick = e => {\n if (!e.target) {\n return;\n }\n const clickTarget = this._getClickTarget(e.target);\n if (clickTarget?.type === \"label\") {\n this._triggerEvent(\"tree.dblclick\", {\n node: clickTarget.node,\n originalEvent: e\n });\n }\n };\n _handleMouseDown(positionInfo) {\n // We may have missed mouseup (out of window)\n if (this._isMouseStarted) {\n this._handleMouseUp(positionInfo);\n }\n this._mouseDownInfo = positionInfo;\n if (!this._onMouseCapture(positionInfo)) {\n return false;\n }\n this._handleStartMouse();\n return true;\n }\n _handleMouseMove(e, positionInfo) {\n if (this._isMouseStarted) {\n this._onMouseDrag(positionInfo);\n if (e.cancelable) {\n e.preventDefault();\n }\n return;\n }\n if (!this._isMouseDelayMet) {\n return;\n }\n if (this._mouseDownInfo) {\n this._isMouseStarted = this._onMouseStart(this._mouseDownInfo);\n }\n if (this._isMouseStarted) {\n this._onMouseDrag(positionInfo);\n if (e.cancelable) {\n e.preventDefault();\n }\n } else {\n this._handleMouseUp(positionInfo);\n }\n }\n _handleMouseUp(positionInfo) {\n this._removeMouseMoveEventListeners();\n this._isMouseDelayMet = false;\n this._mouseDownInfo = null;\n if (this._isMouseStarted) {\n this._isMouseStarted = false;\n this._onMouseStop(positionInfo);\n }\n }\n _handleStartMouse() {\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, {\n passive: false\n });\n document.addEventListener(\"touchend\", this._touchEnd, {\n passive: false\n });\n const mouseDelay = this._getMouseDelay();\n if (mouseDelay) {\n this._startMouseDelayTimer(mouseDelay);\n } else {\n this._isMouseDelayMet = true;\n }\n }\n _mouseDown = e => {\n // Left mouse button?\n if (e.button !== 0) {\n return;\n }\n const result = this._handleMouseDown(getPositionInfoFromMouseEvent(e));\n if (result && e.cancelable) {\n e.preventDefault();\n }\n };\n _mouseMove = e => {\n this._handleMouseMove(e, getPositionInfoFromMouseEvent(e));\n };\n _mouseUp = e => {\n this._handleMouseUp(getPositionInfoFromMouseEvent(e));\n };\n _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 _startMouseDelayTimer(mouseDelay) {\n if (this._mouseDelayTimer) {\n clearTimeout(this._mouseDelayTimer);\n }\n this._mouseDelayTimer = window.setTimeout(() => {\n if (this._mouseDownInfo) {\n this._isMouseDelayMet = true;\n }\n }, mouseDelay);\n this._isMouseDelayMet = false;\n }\n _touchEnd = e => {\n if (e.touches.length > 1) {\n return;\n }\n const touch = e.touches[0];\n if (!touch) {\n return;\n }\n this._handleMouseUp(getPositionInfoFromTouch(touch, e));\n };\n _touchMove = e => {\n if (e.touches.length > 1) {\n return;\n }\n const touch = e.touches[0];\n if (!touch) {\n return;\n }\n this._handleMouseMove(e, getPositionInfoFromTouch(touch, e));\n };\n _touchStart = e => {\n if (e.touches.length > 1) {\n return;\n }\n const touch = e.touches[0];\n if (!touch) {\n return;\n }\n this._handleMouseDown(getPositionInfoFromTouch(touch, e));\n };\n}\n\nexport { MouseHandler as default };\n//# sourceMappingURL=mouseHandler.js.map\n","const isNodeRecordWithChildren = data => typeof data === \"object\" && \"children\" in data && data.children instanceof Array;\n\nexport { isNodeRecordWithChildren };\n//# sourceMappingURL=nodeUtils.js.map\n","import { isNodeRecordWithChildren } from './nodeUtils.js';\n\n/*\nA node reads and writes the private members of other nodes (node.setParent),\nso the `_` prefix that the build adds cannot be limited to `this.`:\n\nprefix-private-members: all\n*/\n\n/**\n * @groupDescription Properties\n * Any other key in the node data is copied onto the node, so\n * `{ name: \"node1\", color: \"green\" }` gives you `node.color`.\n *\n * @groupDescription Searching\n * These work on any node, and search that node's subtree. Called on the root\n * node, they search the whole tree — which is what the tree's own methods of\n * the same name do.\n *\n * @groupDescription Changing the tree\n * ::: warning\n * These methods change the data without re-rendering. The tree's\n * [methods](/reference/methods) — `appendNode`, `removeNode`, `moveNode` and\n * friends — do the same and refresh the display, so prefer those. If you do\n * use these, call `tree.refresh()` afterwards.\n * :::\n */\nclass Node {\n /** @hidden */\n\n /** The child nodes. */\n children;\n /** The `li` element, once the node is rendered. */\n element;\n /** The id from the node data. */\n id;\n /** @hidden */\n idMapping;\n /** Whether the node's children are being fetched. */\n is_loading;\n /** Whether the folder is open. */\n is_open;\n /** Whether the node data had an empty `children` array. */\n isEmptyFolder;\n /** Whether the children still have to be fetched. */\n load_on_demand;\n /** The label. Also settable from the `label` key in node data. */\n name;\n /** @hidden */\n nodeClass;\n /** The parent; `null` for the root node. */\n parent;\n /** The root node. */\n tree;\n\n /** @hidden */\n constructor(nodeData = null, isRoot = false, nodeClass = Node) {\n this.name = \"\";\n this.load_on_demand = false;\n this.isEmptyFolder = nodeData != null && isNodeRecordWithChildren(nodeData) && nodeData.children.length === 0;\n this.setData(nodeData);\n this.children = [];\n this.parent = null;\n this.is_loading = undefined;\n this.is_open ??= undefined;\n if (isRoot) {\n this.idMapping = new Map();\n this.tree = this;\n this.nodeClass = nodeClass;\n } else {\n this.idMapping = undefined;\n }\n }\n\n /**\n * Adds a sibling after this node.\n *\n * @returns The new node, or `null` when the node has no parent.\n * @group Changing the tree\n */\n addAfter(nodeInfo) {\n if (!this.parent) {\n return null;\n } else {\n const node = this._createNode(nodeInfo);\n const childIndex = this.parent.getChildIndex(this);\n this.parent.addChildAtPosition(node, childIndex + 1);\n node._loadChildrenFromData(nodeInfo);\n return node;\n }\n }\n\n /**\n * Adds a sibling before this node.\n *\n * @returns The new node, or `null` when the node has no parent.\n * @group Changing the tree\n */\n addBefore(nodeInfo) {\n if (!this.parent) {\n return null;\n } else {\n const node = this._createNode(nodeInfo);\n const childIndex = this.parent.getChildIndex(this);\n this.parent.addChildAtPosition(node, childIndex);\n node._loadChildrenFromData(nodeInfo);\n return node;\n }\n }\n\n /**\n * Adds an existing `Node` object as the last child.\n *\n * @group Changing the tree\n */\n addChild(node) {\n this.children.push(node);\n node._setParent(this);\n }\n\n /**\n * Adds an existing `Node` object as a child, at this position in\n * `children`. The index starts at `0`.\n *\n * @group Changing the tree\n */\n addChildAtPosition(node, index) {\n this.children.splice(index, 0, node);\n node._setParent(this);\n }\n\n /** @hidden */\n addNodeToIndex(node) {\n if (node.id != null) {\n this.idMapping?.set(node.id, node);\n }\n }\n\n /**\n * Inserts a new parent between this node and its current parent.\n *\n * @returns The new node, or `null` when the node has no parent.\n * @group Changing the tree\n */\n addParent(nodeInfo) {\n if (!this.parent) {\n return null;\n } else {\n const newParent = this._createNode(nodeInfo);\n if (this.tree) {\n newParent._setParent(this.tree);\n }\n const originalParent = this.parent;\n for (const child of originalParent.children) {\n newParent.addChild(child);\n }\n originalParent.children = [];\n originalParent.addChild(newParent);\n return newParent;\n }\n }\n\n /**\n * Adds a child at the end.\n *\n * @returns The new node.\n * @group Changing the tree\n */\n append(nodeInfo) {\n const node = this._createNode(nodeInfo);\n this.addChild(node);\n node._loadChildrenFromData(nodeInfo);\n return node;\n }\n\n /**\n * Returns all nodes in the subtree for which the callback returns\n * `true`.\n *\n * @example\n * ```js\n * const folders = tree.getTree().filter((node) => node.isFolder());\n * ```\n *\n * @group Searching\n */\n filter(f) {\n const result = [];\n this.iterate(node => {\n if (f(node)) {\n result.push(node);\n }\n return true;\n });\n return result;\n }\n\n /**\n * Returns the position of a child in `children`, or `-1`.\n *\n * @group Inspecting a node\n */\n getChildIndex(node) {\n return this.children.indexOf(node);\n }\n\n /**\n * Returns the subtree as plain data, ready for `JSON.stringify`.\n * Internal properties (`parent`, `children`, `element`, `tree`,\n * `idMapping`, `nodeClass`, `load_on_demand`, `isEmptyFolder`) are left\n * out; your own properties are kept.\n *\n * ```js\n * tree.getTree().getData();\n * // [{ name: \"node1\", id: 1, children: [{ name: \"child1\", id: 2 }] }]\n * ```\n *\n * @param includeParent - Make the result the node itself rather than its\n * children. Default `false`.\n * @group Reading data back\n */\n getData(includeParent = false) {\n const getDataFromNodes = nodes => {\n return nodes.map(node => {\n const tmpNode = {};\n for (const k in node) {\n if ([\"parent\", \"children\", \"element\", \"idMapping\", \"load_on_demand\", \"nodeClass\", \"tree\", \"isEmptyFolder\"].indexOf(k) === -1 && Object.prototype.hasOwnProperty.call(node, k)) {\n const v = node[k];\n tmpNode[k] = v;\n }\n }\n if (node.hasChildren()) {\n tmpNode.children = getDataFromNodes(node.children);\n }\n return tmpNode;\n });\n };\n if (includeParent) {\n return getDataFromNodes([this]);\n } else {\n return getDataFromNodes(this.children);\n }\n }\n\n /**\n * Returns the last child, or `null`. When that child is an open folder,\n * its own last child, and so on.\n *\n * @group Moving around the tree\n */\n getLastChild() {\n if (!this.hasChildren()) {\n return null;\n } else {\n const lastChild = this.children[this.children.length - 1];\n if (!(lastChild.hasChildren() && lastChild.is_open)) {\n return lastChild;\n } else {\n return lastChild.getLastChild();\n }\n }\n }\n\n /**\n * Returns the depth of the node, counting the top level as `1`.\n *\n * @group Inspecting a node\n */\n getLevel() {\n let level = 0;\n let node = this; // eslint-disable-line @typescript-eslint/no-this-alias\n\n while (node.parent) {\n level += 1;\n node = node.parent;\n }\n return level;\n }\n\n /**\n * Returns the next node in the tree, regardless of whether it is\n * visible. `getNextNode(false)` skips the node's own children.\n *\n * @group Moving around the tree\n */\n getNextNode(includeChildren = true) {\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 if (nextSibling) {\n return nextSibling;\n } else {\n return this.parent.getNextNode(false);\n }\n }\n }\n\n /**\n * Returns the next sibling, or `null`.\n *\n * @group Moving around the tree\n */\n getNextSibling() {\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 /**\n * Like `getNextNode`, but skipping nodes inside closed folders — this is\n * what the arrow keys use.\n *\n * @group Moving around the tree\n */\n getNextVisibleNode() {\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 /**\n * Returns the first node for which the callback returns `true`.\n *\n * @group Searching\n */\n getNodeByCallback(callback) {\n let result = null;\n this.iterate(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 return result;\n }\n\n /**\n * Returns the node with this id. Only available on the root node, which\n * keeps the id index.\n *\n * @group Searching\n */\n getNodeById(nodeId) {\n return this.idMapping?.get(nodeId) ?? null;\n }\n\n /**\n * Returns the first node with this name.\n *\n * @group Searching\n */\n getNodeByName(name) {\n return this.getNodeByCallback(node => node.name === name);\n }\n\n /**\n * Like `getNodeByName`, but throws when there is no such node.\n *\n * @group Searching\n */\n getNodeByNameMustExist(name) {\n const node = this.getNodeByCallback(n => n.name === name);\n if (!node) {\n throw new Error(`Node with name ${name} not found`);\n }\n return node;\n }\n\n /**\n * Returns all nodes with this property value.\n *\n * @group Searching\n */\n getNodesByProperty(key, value) {\n return this.filter(node => node[key] === value);\n }\n\n /**\n * Returns the parent: `null` for a top-level node — the root node is not\n * returned.\n *\n * @group Moving around the tree\n */\n getParent() {\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 /**\n * Returns the previous node in the tree, regardless of whether it is\n * visible.\n *\n * @group Moving around the tree\n */\n getPreviousNode() {\n if (!this.parent) {\n return null;\n } else {\n const previousSibling = this.getPreviousSibling();\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 /**\n * Returns the previous sibling, or `null`.\n *\n * @group Moving around the tree\n */\n getPreviousSibling() {\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 /**\n * Like `getPreviousNode`, but skipping nodes inside closed folders —\n * this is what the arrow keys use.\n *\n * @group Moving around the tree\n */\n getPreviousVisibleNode() {\n if (!this.parent) {\n return null;\n } else {\n const previousSibling = this.getPreviousSibling();\n if (!previousSibling) {\n return this.getParent();\n } else if (!previousSibling.hasChildren() || !previousSibling.is_open) {\n // Previous sibling\n return previousSibling;\n } else {\n // Last child of previous sibling\n return previousSibling.getLastChild();\n }\n }\n }\n\n /**\n * Whether the node has children.\n *\n * @group Inspecting a node\n */\n hasChildren() {\n return this.children.length !== 0;\n }\n\n /**\n * Init Node from data without making it the root of the tree.\n *\n * @hidden\n */\n initFromData(data) {\n const addNode = nodeData => {\n this.setData(nodeData);\n if (isNodeRecordWithChildren(nodeData) && nodeData.children.length) {\n addChildren(nodeData.children);\n }\n };\n const addChildren = childrenData => {\n for (const child of childrenData) {\n const node = this._createNode();\n node.initFromData(child);\n this.addChild(node);\n }\n };\n addNode(data);\n }\n\n /**\n * `true` when the node has children, or is marked `load_on_demand`.\n *\n * @group Inspecting a node\n */\n isFolder() {\n return this.hasChildren() || this.load_on_demand;\n }\n\n /**\n * Whether this node is an ancestor of the other node.\n *\n * @group Inspecting a node\n */\n isParentOf(node) {\n let parent = node.parent;\n while (parent) {\n if (parent === this) {\n return true;\n }\n parent = parent.parent;\n }\n return false;\n }\n\n /**\n * Walks the subtree, calling the callback with `(node, level)`. Return\n * `false` from the callback to stop descending into that node:\n *\n * ```js\n * tree.getTree().iterate((node, level) => {\n * console.log(\" \".repeat(level) + node.name);\n * return level <= 2; // don't go deeper than level 2\n * });\n * ```\n *\n * @group Searching\n */\n iterate(callback) {\n const _iterate = (node, level) => {\n for (const child of node.children) {\n const result = callback(child, level);\n if (result && child.hasChildren()) {\n _iterate(child, level + 1);\n }\n }\n };\n _iterate(this, 0);\n }\n\n /**\n * Replaces the children with new node data.\n *\n * @group Changing the tree\n */\n loadFromData(data) {\n this.removeChildren();\n for (const childData of data) {\n const node = this._createNode(childData);\n this.addChild(node);\n if (isNodeRecordWithChildren(childData)) {\n node.loadFromData(childData.children);\n }\n }\n return this;\n }\n\n /**\n * Moves a node relative to another node. Called on the root node.\n *\n * @param position - `\"before\"`, `\"after\"` or `\"inside\"`.\n * @returns `false` when the move is impossible, for instance moving a\n * node into its own subtree.\n * @group Changing the tree\n */\n moveNode(movedNode, targetNode, position) {\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 switch (position) {\n case \"after\":\n {\n if (targetNode.parent) {\n targetNode.parent.addChildAtPosition(movedNode, targetNode.parent.getChildIndex(targetNode) + 1);\n return true;\n }\n return false;\n }\n case \"before\":\n {\n if (targetNode.parent) {\n targetNode.parent.addChildAtPosition(movedNode, targetNode.parent.getChildIndex(targetNode));\n return true;\n }\n return false;\n }\n case \"inside\":\n {\n // move inside as first child\n targetNode.addChildAtPosition(movedNode, 0);\n return true;\n }\n }\n }\n }\n\n /**\n * Adds a child at the start.\n *\n * @returns The new node.\n * @group Changing the tree\n */\n prepend(nodeInfo) {\n const node = this._createNode(nodeInfo);\n this.addChildAtPosition(node, 0);\n node._loadChildrenFromData(nodeInfo);\n return node;\n }\n\n /**\n * Removes this node from its parent.\n *\n * @group Changing the tree\n */\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n this.parent = null;\n }\n }\n\n /**\n * Removes a child and its children.\n *\n * @group Changing the tree\n */\n removeChild(node) {\n // remove children from the index\n node.removeChildren();\n this._doRemoveChild(node);\n }\n\n /**\n * Removes all children.\n *\n * @group Changing the tree\n */\n removeChildren() {\n this.iterate(child => {\n this.tree?.removeNodeFromIndex(child);\n return true;\n });\n this.children = [];\n }\n\n /** @hidden */\n removeNodeFromIndex(node) {\n if (node.id != null) {\n this.idMapping?.delete(node.id);\n }\n }\n\n /**\n * Updates the node's properties from node data. `children` and `parent`\n * are ignored. A string sets the name. Existing node values are not\n * removed.\n *\n * @group Changing the tree\n */\n setData(o) {\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 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 _createNode(nodeData) {\n const nodeClass = this._getNodeClass();\n return new nodeClass(nodeData);\n }\n _doRemoveChild(node) {\n this.children.splice(this.getChildIndex(node), 1);\n this.tree?.removeNodeFromIndex(node);\n }\n _getNodeClass() {\n return this.nodeClass ?? this.tree?.nodeClass ?? Node;\n }\n\n // Load children data from nodeInfo if it has children\n _loadChildrenFromData(nodeInfo) {\n if (isNodeRecordWithChildren(nodeInfo) && nodeInfo.children.length) {\n this.loadFromData(nodeInfo.children);\n }\n }\n _setParent(parent) {\n this.parent = parent;\n this.tree = parent.tree;\n this.tree?.addNodeToIndex(this);\n }\n}\n\nexport { Node };\n//# sourceMappingURL=node.js.map\n","class BorderDropHint {\n _hint;\n constructor(element, scrollLeft, classNames) {\n const div = element.querySelector(`:scope > .${classNames.element}`);\n if (!div) {\n this._hint = undefined;\n return;\n }\n const width = Math.max(element.offsetWidth + scrollLeft - 4, 0);\n const height = Math.max(element.clientHeight - 4, 0);\n const hint = document.createElement(\"span\");\n hint.className = classNames.border;\n hint.style.width = `${width}px`;\n hint.style.height = `${height}px`;\n this._hint = hint;\n div.append(this._hint);\n }\n remove() {\n this._hint?.remove();\n }\n}\n\nexport { BorderDropHint as default };\n//# sourceMappingURL=borderDropHint.js.map\n","class GhostDropHint {\n _classNames;\n _element;\n _ghost;\n _node;\n constructor(node, element, position, classNames) {\n this._classNames = classNames;\n this._element = element;\n this._node = node;\n this._ghost = this._createGhostElement();\n switch (position) {\n case \"after\":\n this._moveAfter();\n break;\n case \"before\":\n this._moveBefore();\n break;\n case \"inside\":\n {\n if (node.isFolder() && node.is_open) {\n this._moveInsideOpenFolder();\n } else {\n this._moveInside();\n }\n }\n }\n }\n remove() {\n this._ghost.remove();\n }\n _createGhostElement() {\n const {\n circle,\n common,\n ghost: ghostClass,\n line\n } = this._classNames;\n const ghost = document.createElement(\"li\");\n ghost.className = `${common} ${ghostClass}`;\n const circleSpan = document.createElement(\"span\");\n circleSpan.className = `${common} ${circle}`;\n ghost.append(circleSpan);\n const lineSpan = document.createElement(\"span\");\n lineSpan.className = `${common} ${line}`;\n ghost.append(lineSpan);\n return ghost;\n }\n _moveAfter() {\n this._element.after(this._ghost);\n }\n _moveBefore() {\n this._element.before(this._ghost);\n }\n _moveInside() {\n this._element.after(this._ghost);\n this._ghost.classList.add(this._classNames.inside);\n }\n _moveInsideOpenFolder() {\n const childElement = this._node.children[0]?.element;\n if (childElement) {\n childElement.before(this._ghost);\n }\n }\n}\n\nexport { GhostDropHint as default };\n//# sourceMappingURL=ghostDropHint.js.map\n","import BorderDropHint from './borderDropHint.js';\nimport GhostDropHint from './ghostDropHint.js';\n\nclass NodeElement {\n element;\n node;\n _classNames;\n _getScrollLeft;\n _tabIndex;\n _treeElement;\n constructor({\n classNames,\n getScrollLeft,\n node,\n tabIndex,\n treeElement\n }) {\n this._classNames = classNames;\n this._getScrollLeft = getScrollLeft;\n this.node = node;\n this._tabIndex = tabIndex;\n this._treeElement = treeElement;\n node.element ??= this._treeElement;\n this.element = node.element;\n }\n addDropHint(position) {\n if (this._mustShowBorderDropHint(position)) {\n return new BorderDropHint(this.element, this._getScrollLeft(), this._classNames);\n } else {\n return new GhostDropHint(this.node, this.element, position, this._classNames);\n }\n }\n deselect() {\n this.element.classList.remove(this._classNames.selected);\n const titleSpan = this._getTitleSpan();\n titleSpan.removeAttribute(\"tabindex\");\n titleSpan.setAttribute(\"aria-selected\", \"false\");\n titleSpan.blur();\n }\n select(mustSetFocus) {\n this.element.classList.add(this._classNames.selected);\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 titleSpan.setAttribute(\"aria-selected\", \"true\");\n if (mustSetFocus) {\n titleSpan.focus();\n }\n }\n _getTitleSpan() {\n return this.element.querySelector(`:scope > .${this._classNames.element} > span.${this._classNames.title}`);\n }\n _getUl() {\n return this.element.querySelector(\":scope > ul\");\n }\n _mustShowBorderDropHint(position) {\n return position === \"inside\";\n }\n}\n\nexport { NodeElement as default };\n//# sourceMappingURL=index.js.map\n","const getAnimationDuration = duration => {\n if (typeof duration === \"number\") {\n return duration;\n }\n return duration === \"slow\" ? 600 : 200;\n};\nconst slideDown = (element, animationSpeed, onFinished) => {\n element.style.display = \"block\";\n const animation = element.animate([{\n height: \"0\",\n overflow: \"hidden\"\n }, {\n height: `${element.scrollHeight}px`,\n overflow: \"hidden\"\n }], {\n duration: getAnimationDuration(animationSpeed)\n });\n animation.onfinish = () => {\n onFinished();\n };\n};\nconst slideUp = (element, animationSpeed, onFinished) => {\n const animation = element.animate([{\n height: `${element.scrollHeight}px`,\n overflow: \"hidden\"\n }, {\n height: \"0\",\n overflow: \"hidden\"\n }], {\n duration: getAnimationDuration(animationSpeed)\n });\n animation.onfinish = () => {\n element.style.display = \"none\";\n onFinished();\n };\n};\n\nexport { getAnimationDuration, slideDown, slideUp };\n//# sourceMappingURL=animation.js.map\n","import { slideUp, slideDown } from '../animation.js';\nimport NodeElement from './index.js';\n\nclass FolderElement extends NodeElement {\n _closedIconElement;\n _openedIconElement;\n _triggerEvent;\n constructor({\n classNames,\n closedIconElement,\n getScrollLeft,\n node,\n openedIconElement,\n tabIndex,\n treeElement,\n triggerEvent\n }) {\n super({\n classNames,\n getScrollLeft,\n node,\n tabIndex,\n treeElement\n });\n this._closedIconElement = closedIconElement;\n this._openedIconElement = openedIconElement;\n this._triggerEvent = triggerEvent;\n }\n close(slide, animationSpeed) {\n if (!this.node.is_open) {\n return;\n }\n this.node.is_open = false;\n const button = this._getButton();\n button.classList.add(this._classNames.closed);\n button.innerHTML = \"\";\n const closedIconElement = this._closedIconElement;\n if (closedIconElement) {\n const icon = closedIconElement.cloneNode(true);\n button.appendChild(icon);\n }\n const doClose = () => {\n this.element.classList.add(this._classNames.closed);\n const titleSpan = this._getTitleSpan();\n titleSpan.setAttribute(\"aria-expanded\", \"false\");\n this._triggerEvent(\"tree.close\", {\n node: this.node\n });\n };\n const ul = this._getUl();\n if (slide) {\n slideUp(ul, animationSpeed, doClose);\n } else {\n ul.style.display = \"none\";\n doClose();\n }\n }\n async open(slide, animationSpeed) {\n return new Promise(resolve => {\n if (this.node.is_open) {\n resolve();\n return;\n }\n this.node.is_open = true;\n const button = this._getButton();\n button.classList.remove(this._classNames.closed);\n button.innerHTML = \"\";\n const openedIconElement = this._openedIconElement;\n if (openedIconElement) {\n const icon = openedIconElement.cloneNode(true);\n button.appendChild(icon);\n }\n const doOpen = () => {\n this.element.classList.remove(this._classNames.closed);\n const titleSpan = this._getTitleSpan();\n titleSpan.setAttribute(\"aria-expanded\", \"true\");\n this._triggerEvent(\"tree.open\", {\n node: this.node\n });\n resolve();\n };\n const ul = this._getUl();\n if (slide) {\n slideDown(ul, animationSpeed, doOpen);\n } else {\n ul.style.display = \"block\";\n doOpen();\n }\n });\n }\n _mustShowBorderDropHint(position) {\n return !this.node.is_open && position === \"inside\";\n }\n _getButton() {\n return this.element.querySelector(`:scope > .${this._classNames.element} > a.${this._classNames.toggler}`);\n }\n}\n\nexport { FolderElement as default };\n//# sourceMappingURL=folderElement.js.map\n","// Url class for absolute and relative urls.\n\nconst isAbsoluteUrl = inputUrl => {\n try {\n new URL(inputUrl);\n return true;\n } catch {\n return false;\n }\n};\nconst LOCALHOST = \"http://localhost\";\nclass RequestUrl {\n _isAbsolute;\n _url;\n constructor(inputUrl) {\n if (isAbsoluteUrl(inputUrl)) {\n this._url = new URL(inputUrl);\n this._isAbsolute = true;\n } else {\n this._url = new URL(inputUrl, LOCALHOST);\n this._isAbsolute = false;\n }\n }\n setSearchParam(key, value) {\n this._url.searchParams.set(key, value);\n }\n toString() {\n if (this._isAbsolute) {\n return this._url.href;\n } else {\n return this._url.href.slice(LOCALHOST.length);\n }\n }\n}\n\nexport { RequestUrl as default };\n//# sourceMappingURL=requestUrl.js.map\n","import { isInt } from './util.js';\n\nclass SaveStateHandler {\n _addToSelection;\n _getNodeById;\n _getSelectedNodes;\n _getTree;\n _onGetStateFromStorage;\n _onSetStateFromStorage;\n _openNode;\n _refreshElements;\n _removeFromSelection;\n _saveStateOption;\n constructor({\n addToSelection,\n getNodeById,\n getSelectedNodes,\n getTree,\n onGetStateFromStorage,\n onSetStateFromStorage,\n openNode,\n refreshElements,\n removeFromSelection,\n saveState\n }) {\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 getNodeIdToBeSelected() {\n if (!this._saveStateOption) {\n return null;\n }\n const state = this.getStateFromStorage();\n if (state?.selected_node) {\n return state.selected_node[0] ?? null;\n } else {\n return null;\n }\n }\n getState() {\n const getOpenNodeIds = () => {\n const openNodes = [];\n this._getTree()?.iterate(node => {\n if (node.is_open && node.id && node.hasChildren()) {\n openNodes.push(node.id);\n }\n return true;\n });\n return openNodes;\n };\n const getSelectedNodeIds = () => {\n const selectedNodeIds = [];\n this._getSelectedNodes().forEach(node => {\n if (node.id != null) {\n selectedNodeIds.push(node.id);\n }\n });\n return selectedNodeIds;\n };\n return {\n open_nodes: getOpenNodeIds(),\n selected_node: getSelectedNodeIds()\n };\n }\n getStateFromStorage() {\n if (!this._saveStateOption) {\n return null;\n }\n const jsonData = this._loadFromStorage();\n if (jsonData) {\n return this._parseState(jsonData);\n } else {\n return null;\n }\n }\n saveState() {\n if (!this._saveStateOption) {\n return;\n }\n const state = JSON.stringify(this.getState());\n if (this._onSetStateFromStorage) {\n this._onSetStateFromStorage(state);\n } else {\n localStorage.setItem(this._getKeyName(), state);\n }\n }\n\n /*\n Set initial state\n Don't handle nodes that are loaded on demand\n result: must load on demand (boolean)\n */\n setInitialState(state) {\n let mustLoadOnDemand = false;\n if (state.open_nodes) {\n mustLoadOnDemand = this._openInitialNodes(state.open_nodes);\n }\n this._resetSelection();\n if (state.selected_node) {\n this._selectInitialNodes(state.selected_node);\n }\n return mustLoadOnDemand;\n }\n async setInitialStateOnDemand(state) {\n let nodeIds = state.open_nodes;\n const openNodes = async () => {\n if (!nodeIds) {\n return;\n }\n const newNodesIds = [];\n for (const nodeId of nodeIds) {\n const node = this._getNodeById(nodeId);\n if (!node) {\n newNodesIds.push(nodeId);\n } else {\n if (!node.is_loading) {\n if (node.load_on_demand) {\n await loadAndOpenNode(node);\n } else {\n await this._openNode(node, false);\n }\n }\n }\n }\n nodeIds = newNodesIds;\n if (state.selected_node) {\n if (this._selectInitialNodes(state.selected_node)) {\n this._refreshElements(null);\n }\n }\n };\n const loadAndOpenNode = async node => {\n await this._openNode(node, false);\n await openNodes();\n };\n await openNodes();\n }\n _getKeyName() {\n if (typeof this._saveStateOption === \"string\") {\n return this._saveStateOption;\n } else {\n return \"tree\";\n }\n }\n _loadFromStorage() {\n if (this._onGetStateFromStorage) {\n return this._onGetStateFromStorage();\n } else {\n return localStorage.getItem(this._getKeyName());\n }\n }\n _openInitialNodes(nodeIds) {\n let mustLoadOnDemand = false;\n for (const nodeId of nodeIds) {\n const node = this._getNodeById(nodeId);\n if (node) {\n if (!node.load_on_demand) {\n node.is_open = true;\n } else {\n mustLoadOnDemand = true;\n }\n }\n }\n return mustLoadOnDemand;\n }\n _parseState(jsonData) {\n const state = JSON.parse(jsonData);\n\n // Check if selected_node is an int (instead of an array)\n if (state.selected_node && isInt(state.selected_node)) {\n // Convert to array\n state.selected_node = [state.selected_node];\n }\n return state;\n }\n _resetSelection() {\n const selectedNodes = this._getSelectedNodes();\n selectedNodes.forEach(node => {\n this._removeFromSelection(node);\n });\n }\n _selectInitialNodes(nodeIds) {\n let selectCount = 0;\n for (const nodeId of nodeIds) {\n const node = this._getNodeById(nodeId);\n if (node) {\n selectCount += 1;\n this._addToSelection(node);\n }\n }\n return selectCount !== 0;\n }\n}\n\nexport { SaveStateHandler as default };\n//# sourceMappingURL=saveStateHandler.js.map\n","class ScrollParent {\n _container;\n _horizontalScrollDirection;\n _horizontalScrollTimeout;\n _refreshHitAreas;\n _verticalScrollDirection;\n _verticalScrollTimeout;\n constructor({\n container,\n refreshHitAreas\n }) {\n this._container = container;\n this._refreshHitAreas = refreshHitAreas;\n }\n checkHorizontalScrolling(pageX) {\n const newHorizontalScrollDirection = this._getNewHorizontalScrollDirection(pageX);\n if (this._horizontalScrollDirection !== newHorizontalScrollDirection) {\n this._horizontalScrollDirection = newHorizontalScrollDirection;\n if (this._horizontalScrollTimeout != null) {\n window.clearTimeout(this._horizontalScrollTimeout);\n }\n if (newHorizontalScrollDirection) {\n this._horizontalScrollTimeout = window.setTimeout(this._scrollHorizontally.bind(this), 40);\n }\n }\n }\n checkVerticalScrolling(pageY) {\n const newVerticalScrollDirection = this._getNewVerticalScrollDirection(pageY);\n if (this._verticalScrollDirection !== newVerticalScrollDirection) {\n this._verticalScrollDirection = newVerticalScrollDirection;\n if (this._verticalScrollTimeout != null) {\n window.clearTimeout(this._verticalScrollTimeout);\n this._verticalScrollTimeout = undefined;\n }\n if (newVerticalScrollDirection) {\n this._verticalScrollTimeout = window.setTimeout(this._scrollVertically.bind(this), 40);\n }\n }\n }\n getScrollLeft() {\n return this._container.scrollLeft;\n }\n scrollToY(top) {\n this._container.scrollTop = top;\n }\n stopScrolling() {\n this._horizontalScrollDirection = undefined;\n this._verticalScrollDirection = undefined;\n }\n _scrollHorizontally() {\n if (!this._horizontalScrollDirection) {\n return;\n }\n const distance = this._horizontalScrollDirection === \"left\" ? -20 : 20;\n this._container.scrollBy({\n behavior: \"instant\",\n left: distance,\n top: 0\n });\n this._refreshHitAreas();\n setTimeout(this._scrollHorizontally.bind(this), 40);\n }\n _scrollVertically() {\n if (!this._verticalScrollDirection) {\n return;\n }\n const distance = this._verticalScrollDirection === \"top\" ? -20 : 20;\n this._container.scrollBy({\n behavior: \"instant\",\n left: 0,\n top: distance\n });\n this._refreshHitAreas();\n setTimeout(this._scrollVertically.bind(this), 40);\n }\n}\n\nexport { ScrollParent };\n//# sourceMappingURL=scrollParent.js.map\n","import { getElementPosition, getOffsetTop } from '../positionUtils.js';\nimport { ScrollParent } from './scrollParent.js';\n\nclass ContainerScrollParent extends ScrollParent {\n _scrollParentBottom;\n _scrollParentTop;\n stopScrolling() {\n super.stopScrolling();\n this._horizontalScrollDirection = undefined;\n this._verticalScrollDirection = undefined;\n }\n _getNewHorizontalScrollDirection(pageX) {\n const scrollParentOffset = getElementPosition(this._container);\n const containerWidth = this._container.getBoundingClientRect().width;\n const rightEdge = scrollParentOffset.left + containerWidth;\n const leftEdge = scrollParentOffset.left;\n const isNearRightEdge = pageX > rightEdge - 20;\n const isNearLeftEdge = pageX < leftEdge + 20;\n if (isNearRightEdge) {\n return \"right\";\n } else if (isNearLeftEdge) {\n return \"left\";\n }\n return undefined;\n }\n _getNewVerticalScrollDirection(pageY) {\n if (pageY < this._getScrollParentTop()) {\n return \"top\";\n }\n if (pageY > this._getScrollParentBottom()) {\n return \"bottom\";\n }\n return undefined;\n }\n _getScrollParentBottom() {\n if (this._scrollParentBottom == null) {\n const containerHeight = this._container.getBoundingClientRect().height;\n this._scrollParentBottom = this._getScrollParentTop() + containerHeight;\n }\n return this._scrollParentBottom;\n }\n _getScrollParentTop() {\n this._scrollParentTop ??= getOffsetTop(this._container);\n return this._scrollParentTop;\n }\n}\n\nexport { ContainerScrollParent as default };\n//# sourceMappingURL=containerScrollParent.js.map\n","import { getOffsetTop } from '../positionUtils.js';\nimport { ScrollParent } from './scrollParent.js';\n\nclass DocumentScrollParent extends ScrollParent {\n _documentScrollHeight;\n _documentScrollWidth;\n _treeElement;\n constructor({\n refreshHitAreas,\n treeElement\n }) {\n super({\n container: document.documentElement,\n refreshHitAreas\n });\n this._treeElement = treeElement;\n }\n scrollToY(top) {\n const treeTop = getOffsetTop(this._treeElement);\n super.scrollToY(top + treeTop);\n }\n stopScrolling() {\n super.stopScrolling();\n this._documentScrollHeight = undefined;\n this._documentScrollWidth = undefined;\n }\n _getNewHorizontalScrollDirection(pageX) {\n const scrollLeft = this._container.scrollLeft;\n const windowWidth = window.innerWidth;\n const isNearRightEdge = pageX > windowWidth - 20;\n const isNearLeftEdge = pageX - scrollLeft < 20;\n if (isNearRightEdge && this._canScrollRight()) {\n return \"right\";\n }\n if (isNearLeftEdge) {\n return \"left\";\n }\n return undefined;\n }\n _getNewVerticalScrollDirection(pageY) {\n const scrollTop = this._container.scrollTop;\n const distanceTop = pageY - scrollTop;\n if (distanceTop < 20) {\n return \"top\";\n }\n const windowHeight = window.innerHeight;\n if (windowHeight - (pageY - scrollTop) < 20 && this._canScrollDown()) {\n return \"bottom\";\n }\n return undefined;\n }\n _canScrollDown() {\n return this._container.scrollTop + this._container.clientHeight < this._getDocumentScrollHeight();\n }\n _canScrollRight() {\n return this._container.scrollLeft + this._container.clientWidth < this._getDocumentScrollWidth();\n }\n _getDocumentScrollHeight() {\n // Store the original scroll height because the scroll height can increase when the drag element is moved beyond the scroll height.\n this._documentScrollHeight ??= this._container.scrollHeight;\n return this._documentScrollHeight;\n }\n _getDocumentScrollWidth() {\n // Store the original scroll width because the scroll width can increase when the drag element is moved beyond the scroll width.\n this._documentScrollWidth ??= this._container.scrollWidth;\n return this._documentScrollWidth;\n }\n}\n\nexport { DocumentScrollParent as default };\n//# sourceMappingURL=documentScrollParent.js.map\n","import ContainerScrollParent from './containerScrollParent.js';\nimport DocumentScrollParent from './documentScrollParent.js';\n\nconst isOverflow = overflowValue => overflowValue === \"auto\" || overflowValue === \"scroll\";\nconst hasOverFlow = element => {\n const style = getComputedStyle(element);\n return isOverflow(style.overflowX) || isOverflow(style.overflowY);\n};\nconst getParentWithOverflow = treeElement => {\n if (hasOverFlow(treeElement)) {\n return treeElement;\n }\n let parent = treeElement.parentElement;\n while (parent) {\n if (hasOverFlow(parent)) {\n return parent;\n }\n parent = parent.parentElement;\n }\n return null;\n};\nconst createScrollParent = (treeElement, refreshHitAreas) => {\n const container = getParentWithOverflow(treeElement);\n if (container && container.tagName !== \"HTML\") {\n return new ContainerScrollParent({\n container,\n refreshHitAreas\n });\n } else {\n return new DocumentScrollParent({\n refreshHitAreas,\n treeElement\n });\n }\n};\n\nexport { createScrollParent as default };\n//# sourceMappingURL=createScrollParent.js.map\n","import createScrollParent from './scrollHandler/createScrollParent.js';\n\nclass ScrollHandler {\n _refreshHitAreas;\n _scrollParent;\n _treeElement;\n constructor({\n refreshHitAreas,\n treeElement\n }) {\n this._refreshHitAreas = refreshHitAreas;\n this._scrollParent = undefined;\n this._treeElement = treeElement;\n }\n checkScrolling(positionInfo) {\n this._checkVerticalScrolling(positionInfo);\n this._checkHorizontalScrolling(positionInfo);\n }\n getScrollLeft() {\n return this._getScrollParent().getScrollLeft();\n }\n scrollToY(top) {\n this._getScrollParent().scrollToY(top);\n }\n stopScrolling() {\n this._getScrollParent().stopScrolling();\n }\n _checkHorizontalScrolling(positionInfo) {\n this._getScrollParent().checkHorizontalScrolling(positionInfo.pageX);\n }\n _checkVerticalScrolling(positionInfo) {\n this._getScrollParent().checkVerticalScrolling(positionInfo.pageY);\n }\n _getScrollParent() {\n this._scrollParent ??= createScrollParent(this._treeElement, this._refreshHitAreas);\n return this._scrollParent;\n }\n}\n\nexport { ScrollHandler as default };\n//# sourceMappingURL=scrollHandler.js.map\n","class SelectNodeHandler {\n _getNodeById;\n _getNodeElementForNode;\n _getOnCanSelectNode;\n _getSelectable;\n _openParents;\n _saveState;\n _selectedNodes;\n _selectedSingleNode;\n _triggerEvent;\n constructor({\n getNodeById,\n getNodeElementForNode,\n getOnCanSelectNode,\n getSelectable,\n openParents,\n saveState,\n triggerEvent\n }) {\n this._getNodeById = getNodeById;\n this._getNodeElementForNode = getNodeElementForNode;\n this._getOnCanSelectNode = getOnCanSelectNode;\n this._getSelectable = getSelectable;\n this._openParents = openParents;\n this._saveState = saveState;\n this._selectedNodes = new Set();\n this._selectedSingleNode = null;\n this._triggerEvent = triggerEvent;\n }\n addToSelection(node) {\n if (node.id != null) {\n this._selectedNodes.add(node.id);\n } else {\n this._selectedSingleNode = node;\n }\n }\n clear() {\n this._selectedNodes.clear();\n this._selectedSingleNode = null;\n }\n getSelectedNode() {\n const selectedNodes = this.getSelectedNodes();\n if (selectedNodes.length) {\n return selectedNodes[0] ?? false;\n } else {\n return false;\n }\n }\n getSelectedNodes() {\n if (this._selectedSingleNode) {\n return [this._selectedSingleNode];\n } else {\n const selectedNodes = [];\n this._selectedNodes.forEach(id => {\n const node = this._getNodeById(id);\n if (node) {\n selectedNodes.push(node);\n }\n });\n return selectedNodes;\n }\n }\n getSelectedNodesUnder(parent) {\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 this._selectedNodes.forEach(id => {\n const node = this._getNodeById(id);\n if (node && parent.isParentOf(node)) {\n selectedNodes.push(node);\n }\n });\n return selectedNodes;\n }\n }\n isNodeSelected(node) {\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 removeFromSelection(node, includeChildren = false) {\n if (node.id == null) {\n if (this._selectedSingleNode && node.element === this._selectedSingleNode.element) {\n this._selectedSingleNode = null;\n }\n } else {\n this._selectedNodes.delete(node.id);\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 /* Select a single node.\n * Renders the changed elements.\n * Deselects if the node is currently selected (if the mustToggle is on).\n * Deselects the previously selected node.\n * Check if the node is selectable.\n * Saves the state.\n * Options:\n * mustSetFocus: set the focus to the selected node\n * mustToggle: support deselecting the selected node\n */\n selectSingleNode(node, optionsParam) {\n const defaultOptions = {\n mustSetFocus: true,\n mustToggle: true\n };\n const selectOptions = {\n ...defaultOptions,\n ...(optionsParam ?? {})\n };\n const canSelect = () => {\n if (!this._getSelectable()) {\n return false;\n }\n const onCanSelectNode = this._getOnCanSelectNode();\n return onCanSelectNode ? onCanSelectNode(node) : true;\n };\n if (!canSelect()) {\n return;\n }\n const deselectCurrentNode = deselectedNode => {\n this.removeFromSelection(deselectedNode);\n this._getNodeElementForNode(deselectedNode).deselect();\n };\n if (this.isNodeSelected(node)) {\n if (selectOptions.mustToggle) {\n deselectCurrentNode(node);\n this._triggerEvent(\"tree.deselect\", {\n node\n });\n }\n } else {\n const deselectedNode = this.getSelectedNode();\n if (deselectedNode) {\n deselectCurrentNode(deselectedNode);\n }\n this.addToSelection(node);\n this._openParents(node);\n this._getNodeElementForNode(node).select(selectOptions.mustSetFocus);\n this._triggerEvent(\"tree.select\", {\n deselectedNode: deselectedNode || null,\n node\n });\n }\n this._saveState();\n }\n}\n\nexport { SelectNodeHandler as default };\n//# sourceMappingURL=selectNodeHandler.js.map\n","import { DEFAULT_CLASS_PREFIX } from './classNames.js';\nimport { Node } from './node.js';\n\nconst defaults = {\n animationSpeed: \"fast\",\n autoEscape: true,\n autoOpen: false,\n // true / false / int (open n levels starting at 0)\n buttonLeft: true,\n classPrefix: DEFAULT_CLASS_PREFIX,\n // the prefix of all css classes\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 commonClassName: undefined,\n // the class of every element; the default is \"<classPrefix>-common\"\n data: undefined,\n dataFilter: undefined,\n dataUrl: undefined,\n dragAndDrop: false,\n keyboardSupport: true,\n nodeClass: Node,\n onCanMove: undefined,\n // Can this node be moved?\n onCanMoveTo: undefined,\n // 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 onSetStateFromStorage: undefined,\n openedIcon: undefined,\n openFolderDelay: 500,\n // 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,\n // right-to-left support; true / false (default)\n saveState: false,\n // true / false / string (local storage key; the default key is \"tree\")\n selectable: true,\n showEmptyFolder: false,\n slide: true,\n // must display slide animation?\n startDndDelay: 300,\n // The delay for starting dnd (in milliseconds)\n tabIndex: 0,\n treeClassName: undefined,\n // the class of the root element; the default is classPrefix\n useContextMenu: true\n};\nconst setDefaultOptions = (htmlElement, inputOptions) => {\n const options = {\n ...defaults,\n ...inputOptions\n };\n options.dataUrl ??= htmlElement.dataset.url;\n options.rtl ??= getRtlOptionFromHTMLElement(htmlElement);\n options.closedIcon ??= getDefaultClosedIcon(options);\n options.openedIcon ??= \"▼\";\n return options;\n};\nconst getDefaultClosedIcon = options => {\n if (options.rtl) {\n // triangle to the left\n return \"◀\";\n } else {\n // triangle to the right\n return \"►\";\n }\n};\nconst getRtlOptionFromHTMLElement = htmlElement => {\n const dataRtl = htmlElement.dataset.rtl;\n if (dataRtl == \"\") {\n return true;\n } else if (dataRtl === \"false\") {\n return false;\n } else {\n return Boolean(dataRtl);\n }\n};\n\nexport { setDefaultOptions as default };\n//# sourceMappingURL=setDefaultOptions.js.map\n","// Trigger a CustomEvent. Return if the event is processed (true) or cancelled (false).\nconst triggerCustomEvent = (element, eventName, values) => {\n const event = new CustomEvent(eventName, {\n bubbles: true,\n cancelable: true,\n detail: values\n });\n element.dispatchEvent(event);\n return !event.defaultPrevented;\n};\n\nexport { triggerCustomEvent as default };\n//# sourceMappingURL=triggerCustomEvent.js.map\n","// Generated by config/generateVersion.mjs. Do not edit.\nconst version = \"0.1.1\";\n\nexport { version as default };\n//# sourceMappingURL=version.js.map\n","/*\nHtml-tree 0.1.1\n\nCopyright 2026 Marco Braak\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n@license\n\n*/\nimport createClassNames from './classNames.js';\nimport DataLoader from './dataLoader.js';\nimport { DragAndDropHandler } from './dragAndDropHandler/index.js';\nimport ElementsRenderer from './elementsRenderer.js';\nimport KeyHandler from './keyHandler.js';\nimport MouseHandler from './mouseHandler.js';\nimport { Node } from './node.js';\nimport NodeElement from './nodeElement/index.js';\nimport FolderElement from './nodeElement/folderElement.js';\nimport { getOffsetTop } from './positionUtils.js';\nimport RequestUrl from './requestUrl.js';\nimport SaveStateHandler from './saveStateHandler.js';\nimport ScrollHandler from './scrollHandler.js';\nimport SelectNodeHandler from './selectNodeHandler.js';\nimport setDefaultOptions from './setDefaultOptions.js';\nimport triggerCustomEvent from './triggerCustomEvent.js';\nimport version from './version.js';\n\n// The types that appear in the public api. Consumers cannot import them from\n// the submodules directly, because those are not exposed in package.json.\n// Type only, so that the iife build keeps exposing the TreeElement class itself\n// as its global, instead of an object of named exports.\n\nclass TreeElement {\n /** @hidden */\n tree;\n _classNames;\n _dataLoader;\n _dndHandler;\n _htmlElement;\n _isInitialized;\n _keyHandler;\n _mouseHandler;\n _nodeMap;\n _options;\n _renderer;\n _saveStateHandler;\n _scrollHandler;\n _selectNodeHandler;\n _triggerEventProvider;\n\n /** @hidden */\n constructor({\n htmlElement,\n overrideTriggerEventProvider,\n ...options\n }) {\n this._htmlElement = htmlElement;\n this._options = setDefaultOptions(htmlElement, options);\n this._classNames = createClassNames(this._options);\n this._triggerEventProvider = overrideTriggerEventProvider ?? triggerCustomEvent;\n this._isInitialized = false;\n this.tree = new Node({}, true);\n this._nodeMap = new WeakMap();\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 onSetStateFromStorage,\n openedIcon,\n openFolderDelay,\n rtl,\n saveState: saveStateOption,\n showEmptyFolder,\n slide,\n tabIndex\n } = this._options;\n const classNames = this._classNames;\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.openNode.bind(this);\n const openParents = this._openParents.bind(this);\n const refreshElements = this._refreshElements.bind(this);\n const refreshHitAreas = this.refreshHitAreas.bind(this);\n const setNodeElement = this._setNodeElement.bind(this);\n const treeElement = this._htmlElement;\n const triggerEvent = this._triggerEvent.bind(this);\n const saveState = () => {\n saveStateHandler.saveState();\n };\n const selectNodeHandler = new SelectNodeHandler({\n getNodeById,\n getNodeElementForNode,\n getOnCanSelectNode: () => this._options.onCanSelectNode,\n getSelectable: () => this._options.selectable,\n openParents,\n saveState,\n triggerEvent\n });\n const addToSelection = selectNodeHandler.addToSelection.bind(selectNodeHandler);\n const getSelectedNodes = selectNodeHandler.getSelectedNodes.bind(selectNodeHandler);\n const isNodeSelected = selectNodeHandler.isNodeSelected.bind(selectNodeHandler);\n const removeFromSelection = selectNodeHandler.removeFromSelection.bind(selectNodeHandler);\n const selectNode = selectNodeHandler.selectSingleNode.bind(selectNodeHandler);\n const getMouseDelay = () => this._options.startDndDelay ?? 0;\n const dataLoader = new DataLoader({\n classNames,\n dataFilter,\n loadData,\n treeElement,\n triggerEvent\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: saveStateOption\n });\n const scrollHandler = new ScrollHandler({\n refreshHitAreas,\n treeElement\n });\n const getScrollLeft = scrollHandler.getScrollLeft.bind(scrollHandler);\n const dndHandler = new DragAndDropHandler({\n autoEscape,\n classNames,\n getNodeElement,\n getNodeElementForNode,\n getScrollLeft,\n getTree,\n onCanMove,\n onCanMoveTo,\n onDragMove,\n onDragStop,\n onIsMoveHandle,\n openFolderDelay,\n openNode,\n refreshElements,\n slide,\n treeElement,\n triggerEvent\n });\n const keyHandler = new KeyHandler({\n closeNode,\n getSelectedNode,\n isFocusOnTree,\n keyboardSupport,\n openNode,\n selectNode\n });\n const renderer = new ElementsRenderer({\n autoEscape,\n buttonLeft,\n classNames,\n closedIcon,\n dragAndDrop,\n getTree,\n htmlElement: treeElement,\n isNodeSelected,\n onCreateLi,\n openedIcon,\n rtl,\n setNodeElement,\n showEmptyFolder,\n tabIndex\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 const mouseHandler = new MouseHandler({\n classNames,\n element: treeElement,\n getMouseDelay,\n getNode,\n onClickButton: this.toggle.bind(this),\n onClickTitle: selectNode,\n onMouseCapture,\n onMouseDrag,\n onMouseStart,\n onMouseStop,\n triggerEvent,\n useContextMenu: this._options.useContextMenu\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 this._initData();\n }\n\n /**\n * Adds a sibling after a node.\n *\n * @returns The new node, or `null` when the node has no parent.\n * @group Changing the tree\n */\n addNodeAfter(nodeData, existingNode) {\n const newNode = existingNode.addAfter(nodeData);\n if (newNode) {\n this._refreshElements(existingNode.parent);\n }\n return newNode;\n }\n\n /**\n * Adds a sibling before a node.\n *\n * @returns The new node, or `null` when the node has no parent.\n * @group Changing the tree\n */\n addNodeBefore(nodeData, existingNode) {\n const newNode = existingNode.addBefore(nodeData);\n if (newNode) {\n this._refreshElements(existingNode.parent);\n }\n return newNode;\n }\n\n /**\n * Inserts a new node between a node and its parent, taking the node as its\n * child.\n *\n * @returns The new node, or `null` when the node has no parent.\n * @group Changing the tree\n */\n addParentNode(nodeData, existingNode) {\n const newNode = existingNode.addParent(nodeData);\n if (newNode) {\n this._refreshElements(newNode.parent);\n }\n return newNode;\n }\n\n /**\n * Adds a node to the selection instead of replacing it.\n *\n * @param mustSetFocus - Move the focus to the node. Default `true`.\n * @group Selection\n */\n addToSelection(node, mustSetFocus) {\n this._selectNodeHandler.addToSelection(node);\n this._openParents(node);\n this._getNodeElementForNode(node).select(mustSetFocus ?? true);\n this._saveState();\n }\n\n /**\n * Adds a node as the last child of a parent.\n *\n * @example\n * ```js\n * tree.appendNode({ name: \"child\", id: 5 }, tree.getNodeById(1));\n * ```\n *\n * @returns The new node.\n * @group Changing the tree\n */\n appendNode(nodeData, parentNode) {\n const node = parentNode.append(nodeData);\n this._refreshElements(parentNode);\n return node;\n }\n\n /**\n * Closes a folder.\n *\n * @param slide - Override the `slide` option for this call.\n * @group Opening and closing\n */\n closeNode(node, slide) {\n if (node.isFolder() || node.isEmptyFolder) {\n this._createFolderElement(node).close(slide ?? this._options.slide, this._options.animationSpeed);\n this._saveState();\n }\n }\n\n /**\n * Empties the element and removes the tree's document-level keyboard\n * listener. Call it when you remove the tree from the page.\n *\n * @group Other\n */\n deinit() {\n this._htmlElement.textContent = '';\n this._dataLoader.deinit();\n this._keyHandler.deinit();\n this._mouseHandler.deinit();\n this.tree = new Node({}, true);\n }\n\n /**\n * Returns the node that belongs to a `li` element the tree rendered.\n *\n * @group Finding nodes\n */\n getNode(element) {\n const liElement = element.closest(`li.${this._classNames.common}`);\n if (liElement) {\n return this._nodeMap.get(liElement) ?? null;\n } else {\n return null;\n }\n }\n\n /**\n * Returns the first node for which the callback returns `true`.\n *\n * @example\n * ```js\n * const node = tree.getNodeByCallback((node) => node.children.length > 3);\n * ```\n *\n * @group Finding nodes\n */\n getNodeByCallback(callback) {\n return this.tree.getNodeByCallback(callback);\n }\n\n /**\n * Returns the node with this id.\n *\n * @example\n * ```js\n * const node = tree.getNodeById(1);\n * ```\n *\n * @group Finding nodes\n */\n getNodeById(id) {\n return this.tree.getNodeById(id);\n }\n\n /**\n * Returns the first node with this name.\n *\n * @group Finding nodes\n */\n getNodeByName(name) {\n return this.tree.getNodeByName(name);\n }\n\n /**\n * Like `getNodeByName`, but throws when there is no such node. Convenient\n * in tests and when a missing node is a bug.\n *\n * @group Finding nodes\n */\n getNodeByNameMustExist(name) {\n return this.tree.getNodeByNameMustExist(name);\n }\n\n /**\n * Returns all nodes with this property value.\n *\n * @example\n * ```js\n * tree.getNodesByProperty(\"color\", \"green\");\n * ```\n *\n * @group Finding nodes\n */\n getNodesByProperty(key, value) {\n return this.tree.getNodesByProperty(key, value);\n }\n\n /**\n * Returns the selected node, or `false` when nothing is selected.\n *\n * @group Selection\n */\n getSelectedNode() {\n return this._selectNodeHandler.getSelectedNode();\n }\n\n /**\n * Returns the selected nodes.\n *\n * @group Selection\n */\n getSelectedNodes() {\n return this._selectNodeHandler.getSelectedNodes();\n }\n\n /**\n * Returns the current state — `open_nodes` and `selected_node` — whether or\n * not `saveState` is enabled.\n *\n * @group State\n */\n getState() {\n return this._saveStateHandler.getState();\n }\n\n /**\n * Returns the state as it is stored.\n *\n * @group State\n */\n getStateFromStorage() {\n return this._saveStateHandler.getStateFromStorage();\n }\n\n /**\n * Returns the root node. It is not rendered; its `children` are the\n * top-level nodes. Also available as the `tree` property.\n *\n * @group Finding nodes\n */\n getTree() {\n return this.tree;\n }\n\n /**\n * Returns the version of tree-element.\n *\n * @group Other\n */\n getVersion() {\n return version;\n }\n\n /**\n * Returns whether the user is dragging a node.\n *\n * @group Other\n */\n isDragging() {\n return this._dndHandler.isDragging;\n }\n\n /**\n * Returns whether the node is selected.\n *\n * @group Selection\n */\n isNodeSelected(node) {\n return this._selectNodeHandler.isNodeSelected(node);\n }\n\n /**\n * Loads data into the tree.\n *\n * @param parentNode - Replace this node's children instead of the whole\n * tree.\n * @group Loading data\n */\n loadData(data, parentNode) {\n if (data) {\n if (parentNode) {\n this._deselectNodes(parentNode);\n this._loadSubtree(data, parentNode);\n } else {\n this._initTree(data);\n }\n if (this.isDragging()) {\n this._dndHandler.refresh();\n }\n }\n this._triggerEvent(\"tree.set_data\", {\n node: parentNode,\n treeData: data ?? undefined\n });\n }\n\n /**\n * Fetches data and loads it into the tree, or into `parentNode`.\n *\n * @param url - Defaults to the `dataUrl` option.\n * @group Loading data\n */\n async loadDataFromUrl(url, parentNode) {\n const requestUrl = url ? new RequestUrl(url) : this._createRequestUrl(parentNode);\n if (requestUrl) {\n await this._dataLoader.loadFromUrl(requestUrl, parentNode);\n }\n }\n\n /**\n * Selects the next visible node, like the down arrow key.\n *\n * @group Selection\n */\n moveDown() {\n const selectedNode = this.getSelectedNode();\n if (selectedNode) {\n this._keyHandler.moveDown(selectedNode);\n }\n }\n\n /**\n * Moves a node inside the tree.\n *\n * @example\n * ```js\n * tree.moveNode(tree.getNodeById(2), tree.getNodeById(1), \"inside\");\n * ```\n *\n * @param position - `\"before\"`, `\"after\"` or `\"inside\"`.\n * @group Changing the tree\n */\n moveNode(node, targetNode, position) {\n this.tree.moveNode(node, targetNode, position);\n this._refreshElements(null);\n }\n\n /**\n * Selects the previous visible node, like the up arrow key.\n *\n * @group Selection\n */\n moveUp() {\n const selectedNode = this.getSelectedNode();\n if (selectedNode) {\n this._keyHandler.moveUp(selectedNode);\n }\n }\n\n /**\n * Opens a folder, and the folders above it. A node marked `load_on_demand`\n * is fetched first, so await the promise when you need to know it is really\n * open.\n *\n * @example\n * ```js\n * await tree.openNode(node);\n * console.log(\"open\");\n * ```\n *\n * @param slide - Override the `slide` option for this call.\n * @group Opening and closing\n */\n async openNode(node, slide) {\n const mustSlide = slide ?? this._options.slide;\n const doOpenNode = async (openedNode, slideOption) => {\n if (!node.children.length) {\n return;\n }\n const folderElement = this._createFolderElement(openedNode);\n await folderElement.open(slideOption, this._options.animationSpeed);\n };\n if (node.isFolder() || node.isEmptyFolder) {\n if (node.load_on_demand) {\n await this._loadFolderOnDemand(node, mustSlide);\n } else {\n let parent = node.parent;\n while (parent) {\n // nb: do not open root element\n if (parent.parent) {\n await doOpenNode(parent, false);\n }\n parent = parent.parent;\n }\n await doOpenNode(node, mustSlide);\n this._saveState();\n }\n }\n }\n\n /**\n * Adds a node as the first child of a parent.\n *\n * @returns The new node.\n * @group Changing the tree\n */\n prependNode(nodeData, parentNode) {\n const node = parentNode.prepend(nodeData);\n this._refreshElements(parentNode);\n return node;\n }\n\n /**\n * Re-renders the whole tree. Needed after changing node data directly\n * instead of through these methods.\n *\n * @group Changing the tree\n */\n refresh() {\n this._refreshElements(null);\n }\n\n /**\n * Recomputes the drop targets. Call this if the layout changes during a\n * drag.\n *\n * @group Other\n */\n refreshHitAreas() {\n this._dndHandler.refresh();\n }\n\n /**\n * Removes a node from the selection.\n *\n * @group Selection\n */\n removeFromSelection(node) {\n this._selectNodeHandler.removeFromSelection(node);\n this._getNodeElementForNode(node).deselect();\n this._saveState();\n }\n\n /**\n * Removes a node and its children.\n *\n * @group Changing the tree\n */\n removeNode(node) {\n this._selectNodeHandler.removeFromSelection(node, true); // including children\n\n const parent = node.parent;\n node.remove();\n this._refreshElements(parent);\n }\n\n /**\n * Scrolls the node into view.\n *\n * @group Selection\n */\n scrollToNode(node) {\n if (!node.element) {\n return;\n }\n const top = getOffsetTop(node.element) - getOffsetTop(this._htmlElement);\n this._scrollHandler.scrollToY(top);\n }\n\n /**\n * Replaces the selection, and opens the parents of the node.\n *\n * @param node - `null` clears the selection.\n * @param options - `mustSetFocus`: move focus to the node, default `true`.\n * `mustToggle`: deselect the node if it is already selected, default\n * `false`.\n * @group Selection\n */\n selectNode(node, options) {\n if (!node) {\n // Called with empty node -> deselect current node\n this._deselectCurrentNode();\n this._saveStateHandler.saveState();\n return;\n }\n this._selectNodeHandler.selectSingleNode(node, options);\n }\n\n /**\n * Changes an option after construction. See\n * [Options](/reference/options#changing-an-option-later) for the caveats.\n *\n * @group Other\n */\n setOption(option, value) {\n this._options[option] = value;\n }\n\n /**\n * Applies a state to the tree.\n *\n * @group State\n */\n setState(state) {\n this._saveStateHandler.setInitialState(state);\n this._refreshElements(null);\n }\n\n /**\n * Closes an open node and opens a closed one.\n *\n * @param slide - Override the `slide` option for this call.\n * @group Opening and closing\n */\n toggle(node, slide = null) {\n const mustSlide = slide ?? this._options.slide;\n if (node.is_open) {\n this.closeNode(node, mustSlide);\n } else {\n void this.openNode(node, mustSlide);\n }\n }\n\n /**\n * Returns the tree as a json string, including changes made through the\n * api.\n *\n * @group Other\n */\n toJson() {\n return JSON.stringify(this.tree.getData());\n }\n\n /**\n * Updates the data of a node and re-renders it. A string updates just the\n * name.\n *\n * Changing the `id` re-indexes the node. `children` and `parent` are\n * ignored — use `loadData` or `moveNode` for those.\n *\n * @example\n * ```js\n * tree.updateNode(node, \"new name\");\n * tree.updateNode(node, { name: \"new name\", color: \"red\" });\n * ```\n *\n * @group Changing the tree\n */\n updateNode(node, data) {\n const idIsChanged = typeof data === \"object\" && data.id && data.id !== node.id;\n if (idIsChanged) {\n this.tree.removeNodeFromIndex(node);\n }\n node.setData(data);\n if (idIsChanged) {\n this.tree.addNodeToIndex(node);\n }\n if (typeof data === \"object\" && data.children && data.children instanceof Array) {\n node.removeChildren();\n if (data.children.length) {\n node.loadFromData(data.children);\n }\n }\n this._refreshElements(node);\n }\n _createFolderElement(node) {\n const classNames = this._classNames;\n const closedIconElement = this._renderer.closedIconElement;\n const getScrollLeft = this._scrollHandler.getScrollLeft.bind(this._scrollHandler);\n const openedIconElement = this._renderer.openedIconElement;\n const tabIndex = this._options.tabIndex;\n const treeElement = this._htmlElement;\n const triggerEvent = this._triggerEvent.bind(this);\n return new FolderElement({\n classNames,\n closedIconElement,\n getScrollLeft,\n node,\n openedIconElement,\n tabIndex,\n treeElement,\n triggerEvent\n });\n }\n _createNodeElement(node) {\n const classNames = this._classNames;\n const getScrollLeft = this._scrollHandler.getScrollLeft.bind(this._scrollHandler);\n const tabIndex = this._options.tabIndex;\n const treeElement = this._htmlElement;\n return new NodeElement({\n classNames,\n getScrollLeft,\n node,\n tabIndex,\n treeElement\n });\n }\n\n /* Create a RequestUrl based on the url in the options.\n * Add a 'node' query parameter for loading on demand\n * Add a 'selected_node' query parameter if a node is selected.\n */\n _createRequestUrl(node) {\n const dataUrl = this._options.dataUrl;\n let url;\n if (typeof dataUrl === \"function\") {\n url = dataUrl(node);\n } else {\n url = dataUrl;\n }\n if (!url) {\n return null;\n }\n const requestUrl = new RequestUrl(url);\n if (node?.id) {\n // Load on demand of a subtree; add node parameter\n requestUrl.setSearchParam('node', node.id.toString());\n } else {\n // Add selected_node parameter\n const selectedNodeId = this._getNodeIdToBeSelected();\n if (selectedNodeId) {\n requestUrl.setSearchParam('selected_node', selectedNodeId.toString());\n }\n }\n return requestUrl;\n }\n _deselectCurrentNode() {\n const node = this.getSelectedNode();\n if (node) {\n this.removeFromSelection(node);\n }\n }\n\n // Deselect the children of the node.\n _deselectNodes(parentNode) {\n const selectedNodesUnderParent = this._selectNodeHandler.getSelectedNodesUnder(parentNode);\n for (const n of selectedNodesUnderParent) {\n this._selectNodeHandler.removeFromSelection(n);\n }\n }\n\n // Get the maximum level for auto open\n _getAutoOpenMaxLevel() {\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 }\n\n /* istanbul ignore next @preserve */\n return 0;\n }\n _getNodeElement(element) {\n const node = this.getNode(element);\n if (node) {\n return this._getNodeElementForNode(node);\n } else {\n return null;\n }\n }\n _getNodeElementForNode(node) {\n if (node.isFolder()) {\n return this._createFolderElement(node);\n } else {\n return this._createNodeElement(node);\n }\n }\n _getNodeIdToBeSelected() {\n return this._saveStateHandler.getNodeIdToBeSelected();\n }\n _initData() {\n if (this._options.data) {\n this.loadData(this._options.data);\n } else {\n const dataUrl = this._createRequestUrl();\n if (dataUrl) {\n void this.loadDataFromUrl();\n } else {\n this.loadData([]);\n }\n }\n }\n _initTree(data) {\n const doInit = () => {\n if (!this._isInitialized) {\n this._isInitialized = true;\n this._triggerEvent(\"tree.init\");\n }\n };\n this.tree = new this._options.nodeClass(null, true, this._options.nodeClass);\n this._selectNodeHandler.clear();\n this.tree.loadFromData(data);\n const mustLoadOnDemand = this._setInitialState();\n this._refreshElements(null);\n if (mustLoadOnDemand) {\n // Load data on demand and then init the tree\n void this._setInitialStateOnDemand().then(doInit);\n } else {\n doInit();\n }\n }\n\n // Does an HTML element of the tree have the focus?\n _isFocusOnTree() {\n const activeElement = document.activeElement;\n\n /* istanbul ignore if */\n if (!activeElement) {\n return false;\n }\n\n // The keyboard must still work for input elements.\n const tagName = activeElement.tagName;\n if (tagName !== \"A\" && tagName !== \"SPAN\") {\n return false;\n }\n const node = this.getNode(activeElement);\n return node?.tree === this.tree;\n }\n _isSelectedNodeInSubtree(subtree) {\n const selectedNode = this.getSelectedNode();\n if (!selectedNode) {\n return false;\n } else {\n return subtree === selectedNode || subtree.isParentOf(selectedNode);\n }\n }\n async _loadFolderOnDemand(node, slide) {\n node.is_loading = true;\n await this.loadDataFromUrl(undefined, node);\n await this.openNode(node, slide);\n }\n _loadSubtree(data, parentNode) {\n parentNode.loadFromData(data);\n parentNode.load_on_demand = false;\n parentNode.is_loading = false;\n this._refreshElements(parentNode);\n }\n _mouseCapture(positionInfo) {\n if (!this._options.dragAndDrop) {\n return false;\n }\n return this._dndHandler.mouseCapture(positionInfo);\n }\n _mouseDrag(positionInfo) {\n /* istanbul ignore if */\n if (!this._options.dragAndDrop) {\n return false;\n }\n const result = this._dndHandler.mouseDrag(positionInfo);\n this._scrollHandler.checkScrolling(positionInfo);\n return result;\n }\n _mouseStart(positionInfo) {\n /* istanbul ignore if */\n if (!this._options.dragAndDrop) {\n return false;\n }\n return this._dndHandler.mouseStart(positionInfo);\n }\n _mouseStop(positionInfo) {\n /* istanbul ignore if */\n if (!this._options.dragAndDrop) {\n return false;\n }\n this._scrollHandler.stopScrolling();\n return this._dndHandler.mouseStop(positionInfo);\n }\n _openParents(node) {\n const parent = node.parent;\n if (parent?.parent && !parent.is_open) {\n void this.openNode(parent, false);\n }\n }\n\n /*\n Redraw the tree or part of the tree.\n from_node: redraw this subtree\n */\n _refreshElements(fromNode) {\n const mustSetFocus = this._isFocusOnTree();\n const mustSelect = fromNode ? this._isSelectedNodeInSubtree(fromNode) : false;\n this._renderer.render(fromNode);\n if (mustSelect) {\n this._selectCurrentNode(mustSetFocus);\n }\n this._triggerEvent(\"tree.refresh\");\n }\n _saveState() {\n this._saveStateHandler.saveState();\n }\n _selectCurrentNode(mustSetFocus) {\n const node = this.getSelectedNode();\n if (node) {\n const nodeElement = this._getNodeElementForNode(node);\n nodeElement.select(mustSetFocus);\n }\n }\n\n // Set initial state, either by restoring the state or auto-opening nodes\n // result: must load nodes on demand?\n _setInitialState() {\n const restoreState = () => {\n // result: is state restored, must load on demand?\n const state = this._saveStateHandler.getStateFromStorage();\n if (!state) {\n return [false, false];\n } else {\n const mustLoadOnDemand = this._saveStateHandler.setInitialState(state);\n\n // return true: the state is restored\n return [true, mustLoadOnDemand];\n }\n };\n const autoOpenNodes = () => {\n // result: must load on demand?\n if (this._options.autoOpen === false) {\n return false;\n }\n const maxLevel = this._getAutoOpenMaxLevel();\n let mustLoadOnDemand = false;\n this.tree.iterate((node, level) => {\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 return mustLoadOnDemand;\n };\n let [isRestored, mustLoadOnDemand] = restoreState(); // eslint-disable-line prefer-const\n\n if (!isRestored) {\n mustLoadOnDemand = autoOpenNodes();\n }\n return mustLoadOnDemand;\n }\n\n // Set the initial state for nodes that are loaded on demand\n async _setInitialStateOnDemand() {\n return new Promise(resolve => {\n const restoreState = () => {\n const state = this._saveStateHandler.getStateFromStorage();\n if (!state) {\n return false;\n } else {\n void this._saveStateHandler.setInitialStateOnDemand(state).then(() => {\n resolve();\n });\n return true;\n }\n };\n const autoOpenNodes = () => {\n const maxLevel = this._getAutoOpenMaxLevel();\n let loadingCount = 0;\n const loadAndOpenNode = node => {\n loadingCount += 1;\n void this.openNode(node, false).then(() => {\n loadingCount -= 1;\n openNodes();\n });\n };\n const openNodes = () => {\n this.tree.iterate((node, level) => {\n if (node.load_on_demand) {\n if (!node.is_loading) {\n loadAndOpenNode(node);\n }\n return false;\n } else {\n void this.openNode(node, false);\n return level !== maxLevel;\n }\n });\n if (loadingCount === 0) {\n resolve();\n }\n };\n openNodes();\n };\n if (!restoreState()) {\n autoOpenNodes();\n }\n });\n }\n\n // Set this HTML element to this node in the node map.\n _setNodeElement(element, node) {\n this._nodeMap.set(element, node);\n }\n _triggerEvent(eventName, values) {\n return this._triggerEventProvider(this._htmlElement, eventName, values);\n }\n}\n\nexport { TreeElement as default };\n//# sourceMappingURL=index.js.map\n","// Attributes of tree-element events that have a different name in the jqTree api.\n// Attributes that are not listed here are passed on unchanged; e.g. 'node' and\n// 'isLoading'.\nconst attributeNames: Record<string, string> = {\n deselectedNode: \"deselected_node\",\n moveInfo: \"move_info\",\n originalEvent: \"click_event\",\n parentNode: \"parent_node\",\n treeData: \"tree_data\",\n};\n\n// Attributes of the move info of the tree.move event.\nconst moveInfoAttributeNames: Record<string, string> = {\n doMove: \"do_move\",\n movedNode: \"moved_node\",\n originalEvent: \"original_event\",\n previousParent: \"previous_parent\",\n targetNode: \"target_node\",\n};\n\nconst convertAttributes = (\n values: Record<string, unknown>,\n names: Record<string, string>,\n): Record<string, unknown> =>\n Object.fromEntries(\n Object.entries(values).map(([key, value]) => [names[key] ?? key, value]),\n );\n\nconst convertValues = (\n values: Record<string, unknown>,\n): Record<string, unknown> => {\n const result = convertAttributes(values, attributeNames);\n\n if (result.move_info) {\n result.move_info = convertAttributes(\n result.move_info as Record<string, unknown>,\n moveInfoAttributeNames,\n );\n }\n\n return result;\n};\n\nconst triggerJQueryEvent = (\n element: HTMLElement,\n eventName: string,\n inputValues?: Record<string, unknown>,\n): boolean => {\n const values = inputValues ? convertValues(inputValues) : {};\n\n if (values.element) {\n values.$el = jQuery(values.element as HTMLElement);\n delete values.element;\n }\n\n let event: JQuery.Event;\n\n switch (eventName) {\n case \"tree.deselect\":\n event = jQuery.Event(\"tree.select\", {\n node: null,\n previous_node: values.node,\n });\n break;\n\n case \"tree.loaded_data\":\n event = jQuery.Event(\"tree.loading_data\", {\n ...values,\n isLoading: false,\n node: values.node ?? null\n });\n break;\n\n case \"tree.loading_data\":\n event = jQuery.Event(\"tree.loading_data\", {\n ...values,\n isLoading: true,\n node: values.node ?? null\n });\n break;\n\n case \"tree.set_data\":\n values.parent_node = values.node;\n delete values.node;\n event = jQuery.Event(\"tree.load_data\", values);\n break;\n\n default:\n event = jQuery.Event(eventName, values);\n break;\n }\n\n jQuery(element).trigger(event);\n return !event.isDefaultPrevented();\n};\n\nexport default triggerJQueryEvent;\n","const version = \"2.0.0\";\n\nexport default version;","import type { Node, NodeData, NodeId, Position, SavedState, SelectNodeOptions, TreeElementOptions } from \"tree-element\"\n\nimport TreeElement from \"tree-element\";\n\nimport type { JQTreeIconElement, JQTreeOptions } from \"./jqtreeOptions\";\n\nimport triggerJQueryEvent from \"./triggerJQueryEvent\";\nimport __version__ from \"./version\";\n\ntype IconElement = HTMLElement | string\n\ninterface LoadFailedEvent {\n response: Response;\n}\n\ninterface LoadingDataEvent {\n $el: JQuery;\n isLoading: boolean;\n node: Node | null;\n}\n\ntype OnCreateLi = (node: Node, el: HTMLElement, isSelected: boolean) => void;\ntype OnFinishOpenNode = (node: Node) => void;\ntype OnIsMoveHandle = (el: HTMLElement) => boolean;\n\nconst NODE_PARAM_IS_EMPTY = \"Node parameter is empty\";\nconst PARAM_IS_EMPTY = \"Parameter is empty: \";\n\nexport class JqTreeWidget {\n [key: string]: unknown;\n\n private _element: JQuery;\n private _inputOptions: Partial<JQTreeOptions>;\n private _treeElement: TreeElement;\n\n constructor(el: HTMLElement, options: Partial<JQTreeOptions>) {\n this._element = jQuery(el);\n\n this._inputOptions = options;\n }\n\n public addNodeAfter(\n newNodeInfo: NodeData,\n existingNode: Node,\n ): Node | null {\n return this._treeElement.addNodeAfter(newNodeInfo, existingNode);\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 return this._treeElement.addNodeBefore(newNodeInfo, existingNode);\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 return this._treeElement.addParentNode(newNodeInfo, existingNode);\n }\n\n public addToSelection(node?: Node, mustSetFocus?: boolean): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this._treeElement.addToSelection(node, mustSetFocus);\n return this._element;\n }\n\n public appendNode(newNodeInfo: NodeData, parentNodeParam?: Node): Node {\n const parentNode = parentNodeParam ?? this._treeElement.tree;\n\n return this._treeElement.appendNode(newNodeInfo, parentNode);\n }\n\n public closeNode(node?: Node, slideParam?: boolean | null): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this._treeElement.closeNode(node, slideParam ?? undefined);\n\n return this._element;\n }\n\n public deinit(): void {\n this._element.off();\n this._treeElement.deinit();\n }\n\n public destroy(): void {\n this.deinit();\n }\n\n public getNodeByCallback(callback: (node: Node) => boolean): Node | null {\n return this._treeElement.getNodeByCallback(callback);\n }\n\n public getNodeByHtmlElement(\n inputElement: HTMLElement | JQuery,\n ): Node | null {\n const element =\n inputElement instanceof HTMLElement\n ? inputElement\n : inputElement.get(0);\n\n if (!element) {\n return null;\n }\n\n return this._treeElement.getNode(element);\n }\n\n public getNodeById(nodeId: NodeId): Node | null {\n return this._treeElement.getNodeById(nodeId);\n }\n\n public getNodeByName(name: string): Node | null {\n return this._treeElement.getNodeByName(name);\n }\n\n public getNodeByNameMustExist(name: string): Node {\n return this._treeElement.getNodeByNameMustExist(name);\n }\n\n public getNodesByProperty(key: string, value: unknown): Node[] {\n return this._treeElement.getNodesByProperty(key, value);\n }\n\n public getSelectedNode(): false | Node {\n return this._treeElement.getSelectedNode();\n }\n\n public getSelectedNodes(): Node[] {\n return this._treeElement.getSelectedNodes();\n }\n\n public getState(): null | SavedState {\n return this._treeElement.getState();\n }\n\n public getStateFromStorage(): null | SavedState {\n return this._treeElement.getStateFromStorage();\n }\n\n public getTree(): Node {\n return this._treeElement.getTree();\n }\n\n public getVersion(): string {\n return __version__;\n }\n\n public init(): void {\n const htmlElement = this._element.get(0) as HTMLElement;\n\n this._element.on(\"tree.loading_data\", this._handleLoadingDataEvent.bind(this));\n this._element.on(\"tree.load_failed\", this._handleLoadFailedEvent.bind(this));\n\n const options = this._transformInputOptions();\n\n const treeElement = new TreeElement(\n {\n ...options,\n classPrefix: \"jqtree\",\n commonClassName: \"jqtree_common\",\n htmlElement,\n overrideTriggerEventProvider: triggerJQueryEvent,\n treeClassName: \"jqtree-tree\"\n }\n );\n\n this._treeElement = treeElement;\n }\n\n public isDragging(): boolean {\n return this._treeElement.isDragging();\n }\n\n public isNodeSelected(node?: Node): boolean {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n return this._treeElement.isNodeSelected(node);\n }\n\n public loadData(data: NodeData[], parentNode?: Node): JQuery {\n this._treeElement.loadData(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?: Node | string,\n param2?: (() => void) | Node,\n param3?: () => void,\n ): JQuery {\n let parentNode: Node | undefined;\n let onFinishedLoading: (() => void) | undefined;\n let url: string | undefined;\n\n // first parameter is url\n if (typeof param1 === \"string\") {\n url = param1;\n parentNode = param2 as (Node | undefined);\n onFinishedLoading = param3;\n\n } else {\n // first parameter is not url\n parentNode = param1;\n onFinishedLoading = param2 as (() => void) | undefined;\n }\n\n this._treeElement.loadDataFromUrl(url, parentNode)\n .then(() => {\n if (onFinishedLoading) {\n onFinishedLoading();\n }\n })\n .catch((error: unknown) => {\n throw error;\n });\n\n return this._element;\n }\n\n public moveDown(): JQuery {\n this._treeElement.moveDown();\n\n return this._element;\n }\n\n public moveNode(\n node?: Node,\n targetNode?: Node,\n position?: Position,\n ): 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 if (!position) {\n throw Error(PARAM_IS_EMPTY + \"position\");\n }\n\n this._treeElement.moveNode(node, targetNode, position);\n\n return this._element;\n }\n\n public moveUp(): JQuery {\n this._treeElement.moveUp();\n return this._element;\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 let onFinished: null | OnFinishOpenNode = null;\n let slide: boolean | undefined;\n\n if (typeof param1 === \"function\") {\n onFinished = param1;\n slide = param2 as boolean | undefined;\n } else {\n slide = param1;\n }\n\n void this._treeElement.openNode(node, slide).then(() => {\n if (onFinished) {\n onFinished(node);\n }\n });\n return this._element;\n }\n\n public prependNode(newNodeInfo: NodeData, parentNodeParam?: Node): Node {\n const parentNode = parentNodeParam ?? this._treeElement.tree;\n\n return this._treeElement.prependNode(newNodeInfo, parentNode);\n }\n\n public refresh(): JQuery {\n this._treeElement.refresh();\n return this._element;\n }\n\n public reload(onFinished?: () => void): JQuery {\n this._treeElement.loadDataFromUrl(undefined, undefined).then(\n () => {\n if (onFinished) {\n onFinished();\n }\n }\n ).catch((error: unknown) => {\n throw error;\n });\n return this._element;\n }\n\n public removeFromSelection(node?: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this._treeElement.removeFromSelection(node);\n return this._element;\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._treeElement.removeNode(node);\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 this._treeElement.scrollToNode(node);\n return this._element;\n }\n\n public selectNode(\n node: Node | null,\n optionsParam?: SelectNodeOptions,\n ): JQuery {\n this._treeElement.selectNode(node, optionsParam);\n return this._element;\n }\n\n public setOption(option: string, value: unknown): JQuery {\n this._treeElement.setOption(option, value);\n return this._element;\n }\n\n public setState(state?: SavedState): JQuery {\n if (state) {\n this._treeElement.setState(state);\n }\n\n return this._element;\n }\n\n public toggle(node?: Node, slideParam: boolean | null = null): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this._treeElement.toggle(node, slideParam);\n return this._element;\n }\n\n public toJson(): string {\n return this._treeElement.toJson();\n }\n\n public updateNode(node?: Node, data?: NodeData): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n if (!data) {\n return this._element;\n }\n\n this._treeElement.updateNode(node, data);\n return this._element;\n }\n\n private _handleLoadFailedEvent(e: JQuery.TriggeredEvent) {\n const jqTreeOnLoadFailed = this._inputOptions.onLoadFailed;\n\n if (jqTreeOnLoadFailed) {\n const { response } = e as unknown as LoadFailedEvent;\n jqTreeOnLoadFailed(response);\n }\n }\n\n private _handleLoadingDataEvent(e: JQuery.TriggeredEvent) {\n const jqTreeOnLoading = this._inputOptions.onLoading;\n\n if (jqTreeOnLoading) {\n const { $el, isLoading, node } = e as unknown as LoadingDataEvent;\n jqTreeOnLoading(isLoading, node ?? undefined, $el)\n }\n }\n\n private _transformInputOptions(): Partial<TreeElementOptions> {\n function convertToIconElement(jqtreeIconElement: JQTreeIconElement | undefined) {\n if (jqtreeIconElement instanceof jQuery) {\n return (jqtreeIconElement as JQuery).get(0);\n } else {\n return jqtreeIconElement as IconElement;\n }\n }\n\n const closedIcon = convertToIconElement(this._inputOptions.closedIcon);\n const openedIcon = convertToIconElement(this._inputOptions.openedIcon);\n\n let onCreateLi: OnCreateLi | undefined = undefined;\n const jqTreeOnCreateLi = this._inputOptions.onCreateLi;\n\n if (jqTreeOnCreateLi) {\n onCreateLi = (node: Node, el: HTMLElement, isSelected: boolean) => {\n jqTreeOnCreateLi(node, jQuery(el), isSelected);\n };\n }\n\n let onIsMoveHandle: OnIsMoveHandle | undefined = undefined;\n const jqTreeOnIsMoveHandle = this._inputOptions.onIsMoveHandle;\n\n if (jqTreeOnIsMoveHandle) {\n onIsMoveHandle = (el: HTMLElement) => jqTreeOnIsMoveHandle(jQuery(el))\n }\n\n return {\n ...this._inputOptions,\n closedIcon,\n onCreateLi,\n onIsMoveHandle,\n openedIcon,\n }\n }\n}\n\nconst register = (): void => {\n const getWidgetData = (\n el: HTMLElement,\n dataKey: string,\n ): JqTreeWidget | null => {\n const widget = jQuery.data(el, dataKey) as unknown;\n\n if (widget && widget instanceof JqTreeWidget) {\n return widget;\n } else {\n return null;\n }\n };\n\n const createWidget = ($el: JQuery, options: null | Partial<JQTreeOptions>): JQuery => {\n for (const el of $el.get()) {\n const existingWidget = getWidgetData(el, \"jqtree\");\n\n if (!existingWidget) {\n const widget = new JqTreeWidget(el, options ?? {});\n\n if (!jQuery.data(el, \"jqtree\")) {\n jQuery.data(el, \"jqtree\", 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 for (const el of $el.get()) {\n const widget = getWidgetData(el, \"jqtree\");\n\n if (widget) {\n widget.destroy();\n }\n\n jQuery.removeData(el, \"jqtree\");\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, \"jqtree\") as unknown;\n\n if (widget && widget instanceof JqTreeWidget) {\n const widgetFunction = widget[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).tree = 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 as JQTreeOptions);\n } else if (typeof argument1 === \"string\" && argument1[0] !== \"_\") {\n const functionName = argument1;\n\n if (argument1 === \"destroy\") {\n destroyWidget(this);\n return undefined;\n } else {\n return callFunction(this, functionName, args);\n }\n } else {\n return undefined;\n }\n };\n};\n\nregister();\n"],"names":["version","__version__"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]}
|