claude-web/node_modules/primevue/tree/index.mjs.map

1 line
161 KiB
Plaintext

{"version":3,"file":"index.mjs","sources":["../../src/tree/BaseTree.vue","../../src/tree/TreeDragDropService.js","../../src/tree/TreeNode.vue","../../src/tree/TreeNode.vue?vue&type=template&id=c1685c82&lang.js","../../src/tree/Tree.vue","../../src/tree/Tree.vue?vue&type=template&id=24743200&lang.js"],"sourcesContent":["<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport TreeStyle from 'primevue/tree/style';\n\nexport default {\n name: 'BaseTree',\n extends: BaseComponent,\n props: {\n value: {\n type: null,\n default: null\n },\n expandedKeys: {\n type: null,\n default: null\n },\n selectionKeys: {\n type: null,\n default: null\n },\n selectionMode: {\n type: String,\n default: null\n },\n metaKeySelection: {\n type: Boolean,\n default: false\n },\n loading: {\n type: Boolean,\n default: false\n },\n loadingIcon: {\n type: String,\n default: undefined\n },\n loadingMode: {\n type: String,\n default: 'mask'\n },\n filter: {\n type: Boolean,\n default: false\n },\n filterBy: {\n type: [String, Function],\n default: 'label'\n },\n filterMode: {\n type: String,\n default: 'lenient'\n },\n filterPlaceholder: {\n type: String,\n default: null\n },\n filterLocale: {\n type: String,\n default: undefined\n },\n highlightOnSelect: {\n type: Boolean,\n default: false\n },\n scrollHeight: {\n type: String,\n default: null\n },\n level: {\n type: Number,\n default: 0\n },\n draggableNodes: {\n type: Boolean,\n default: null\n },\n droppableNodes: {\n type: Boolean,\n default: null\n },\n draggableScope: {\n type: [String, Array],\n default: null\n },\n droppableScope: {\n type: [String, Array],\n default: null\n },\n validateDrop: {\n type: Boolean,\n default: false\n },\n ariaLabelledby: {\n type: String,\n default: null\n },\n ariaLabel: {\n type: String,\n default: null\n }\n },\n style: TreeStyle,\n provide() {\n return {\n $pcTree: this,\n $parentInstance: this\n };\n }\n};\n</script>\n","import { reactive } from 'vue';\n\nconst dragState = reactive({\n isDragging: false,\n dragNode: null,\n dragScope: null\n});\n\nconst dragStartHandlers = new Set();\nconst dragStopHandlers = new Set();\n\nexport function useTreeDragDropService() {\n const startDrag = (event) => {\n dragState.isDragging = true;\n dragState.dragNode = event.node;\n dragState.dragScope = event.scope;\n\n dragStartHandlers.forEach((handler) => handler(event));\n };\n\n const stopDrag = (event) => {\n dragState.isDragging = false;\n dragState.dragNode = null;\n dragState.dragScope = null;\n\n dragStopHandlers.forEach((handler) => handler(event));\n };\n\n const onDragStart = (handler) => {\n dragStartHandlers.add(handler);\n\n return () => dragStartHandlers.delete(handler);\n };\n\n const onDragStop = (handler) => {\n dragStopHandlers.add(handler);\n\n return () => dragStopHandlers.delete(handler);\n };\n\n return {\n dragState,\n startDrag,\n stopDrag,\n onDragStart,\n onDragStop\n };\n}\n","<template>\n <li\n ref=\"currentNode\"\n :class=\"cx('node')\"\n role=\"treeitem\"\n :aria-label=\"label(node)\"\n :aria-selected=\"ariaSelected\"\n :aria-expanded=\"expanded\"\n :aria-setsize=\"node.children ? node.children.length : 0\"\n :aria-posinset=\"index + 1\"\n :aria-level=\"level\"\n :aria-checked=\"ariaChecked\"\n :tabindex=\"index === 0 ? 0 : -1\"\n @keydown=\"onKeyDown\"\n v-bind=\"getPTOptions('node')\"\n >\n <div v-if=\"isPrevDropPointActive\" :class=\"cx('dropPoint')\" aria-hidden=\"true\" />\n <div\n :class=\"cx('nodeContent')\"\n :style=\"node.style\"\n :draggable=\"isDraggable\"\n @click=\"onClick\"\n @touchend=\"onTouchEnd\"\n @dragstart=\"onNodeDragStart\"\n @dragover=\"onNodeDragOver\"\n @dragenter=\"onNodeDragEnter\"\n @dragleave=\"onNodeDragLeave\"\n @dragend=\"onNodeDragEnd\"\n @drop=\"onNodeDrop\"\n v-bind=\"getPTOptions('nodeContent')\"\n :data-p-selected=\"checkboxMode ? checked : selected\"\n :data-p-selectable=\"selectable\"\n >\n <button v-ripple type=\"button\" :class=\"cx('nodeToggleButton')\" @click=\"toggle\" tabindex=\"-1\" :data-p-leaf=\"leaf\" v-bind=\"getPTOptions('nodeToggleButton')\">\n <template v-if=\"node.loading && loadingMode === 'icon'\">\n <!-- TODO: nodetogglericon deprecated since v4.0-->\n <component v-if=\"templates['nodetoggleicon'] || templates['nodetogglericon']\" :is=\"templates['nodetoggleicon'] || templates['nodetogglericon']\" :node=\"node\" :expanded=\"expanded\" :class=\"cx('nodeToggleIcon')\" />\n <SpinnerIcon v-else spin :class=\"cx('nodeToggleIcon')\" v-bind=\"getPTOptions('nodeToggleIcon')\" />\n </template>\n <template v-else>\n <!-- TODO: togglericon deprecated since v4.0-->\n <component v-if=\"templates['nodetoggleicon'] || templates['togglericon']\" :is=\"templates['nodetoggleicon'] || templates['togglericon']\" :node=\"node\" :expanded=\"expanded\" :class=\"cx('nodeToggleIcon')\" />\n <component v-else-if=\"expanded\" :is=\"node.expandedIcon ? 'span' : 'ChevronDownIcon'\" :class=\"cx('nodeToggleIcon')\" v-bind=\"getPTOptions('nodeToggleIcon')\" />\n <component v-else :is=\"node.collapsedIcon ? 'span' : 'ChevronRightIcon'\" :class=\"cx('nodeToggleIcon')\" v-bind=\"getPTOptions('nodeToggleIcon')\" />\n </template>\n </button>\n <Checkbox\n v-if=\"checkboxMode\"\n :defaultValue=\"checked\"\n :binary=\"true\"\n :indeterminate=\"partialChecked\"\n :class=\"cx('nodeCheckbox')\"\n :tabindex=\"-1\"\n :unstyled=\"unstyled\"\n :pt=\"getPTOptions('pcNodeCheckbox')\"\n :data-p-partialchecked=\"partialChecked\"\n >\n <template #icon=\"slotProps\">\n <component v-if=\"templates['checkboxicon']\" :is=\"templates['checkboxicon']\" :checked=\"slotProps.checked\" :partialChecked=\"partialChecked\" :class=\"slotProps.class\" />\n </template>\n </Checkbox>\n <component v-if=\"templates['nodeicon']\" :is=\"templates['nodeicon']\" :node=\"node\" :class=\"[cx('nodeIcon')]\" v-bind=\"getPTOptions('nodeIcon')\"></component>\n <span v-else :class=\"[cx('nodeIcon'), node.icon]\" v-bind=\"getPTOptions('nodeIcon')\"></span>\n <span :class=\"cx('nodeLabel')\" v-bind=\"getPTOptions('nodeLabel')\" @keydown.stop>\n <component v-if=\"templates[node.type] || templates['default']\" :is=\"templates[node.type] || templates['default']\" :node=\"node\" :expanded=\"expanded\" :selected=\"checkboxMode ? checked : selected\" />\n <template v-else>{{ label(node) }}</template>\n </span>\n </div>\n <div v-if=\"isNextDropPointActive\" :class=\"cx('dropPoint')\" aria-hidden=\"true\" />\n <ul v-if=\"hasChildren && expanded\" :class=\"cx('nodeChildren')\" role=\"group\" v-bind=\"ptm('nodeChildren')\">\n <TreeNode\n v-for=\"(childNode, index) of node.children\"\n :key=\"childNode.key\"\n :node=\"childNode\"\n :parentNode=\"node\"\n :rootNodes=\"rootNodes\"\n :templates=\"templates\"\n :level=\"level + 1\"\n :index=\"index\"\n :loadingMode=\"loadingMode\"\n :expandedKeys=\"expandedKeys\"\n @node-toggle=\"onChildNodeToggle\"\n @node-click=\"onChildNodeClick\"\n :selectionMode=\"selectionMode\"\n :selectionKeys=\"selectionKeys\"\n @checkbox-change=\"propagateUp\"\n :draggableScope=\"draggableScope\"\n :draggableNodes=\"draggableNodes\"\n :droppableNodes=\"droppableNodes\"\n :validateDrop=\"validateDrop\"\n @node-drop=\"$emit('node-drop', $event)\"\n @node-dragenter=\"$emit('node-dragenter', $event)\"\n @node-dragleave=\"$emit('node-dragleave', $event)\"\n @value-change=\"$emit('value-change', $event)\"\n :unstyled=\"unstyled\"\n :pt=\"pt\"\n />\n </ul>\n </li>\n</template>\n\n<script>\nimport { find, findSingle, getAttribute, getOuterHeight, getOuterWidth } from '@primeuix/utils';\nimport BaseComponent from '@primevue/core/basecomponent';\nimport CheckIcon from '@primevue/icons/check';\nimport ChevronDownIcon from '@primevue/icons/chevrondown';\nimport ChevronRightIcon from '@primevue/icons/chevronright';\nimport MinusIcon from '@primevue/icons/minus';\nimport SpinnerIcon from '@primevue/icons/spinner';\nimport Checkbox from 'primevue/checkbox';\nimport Ripple from 'primevue/ripple';\n\nexport default {\n name: 'TreeNode',\n hostName: 'Tree',\n extends: BaseComponent,\n emits: ['node-toggle', 'node-click', 'checkbox-change', 'node-drop', 'value-change', 'node-dragenter', 'node-dragleave'],\n props: {\n node: {\n type: null,\n default: null\n },\n parentNode: {\n type: null,\n default: null\n },\n rootNodes: {\n type: Object,\n default: null\n },\n expandedKeys: {\n type: null,\n default: null\n },\n loadingMode: {\n type: String,\n default: 'mask'\n },\n selectionKeys: {\n type: null,\n default: null\n },\n selectionMode: {\n type: String,\n default: null\n },\n templates: {\n type: null,\n default: null\n },\n level: {\n type: Number,\n default: null\n },\n draggableScope: {\n type: [String, Array],\n default: null\n },\n draggableNodes: {\n type: Boolean,\n default: null\n },\n droppableNodes: {\n type: Boolean,\n default: null\n },\n validateDrop: {\n type: Boolean,\n default: false\n },\n index: null\n },\n nodeTouched: false,\n toggleClicked: false,\n inject: {\n $pcTree: {\n default: undefined\n }\n },\n data() {\n return {\n isPrevDropPointHovered: false,\n isNextDropPointHovered: false,\n isNodeDropHovered: false\n };\n },\n mounted() {\n this.setAllNodesTabIndexes();\n },\n methods: {\n toggle() {\n this.$emit('node-toggle', this.node);\n this.toggleClicked = true;\n },\n label(node) {\n return typeof node.label === 'function' ? node.label() : node.label;\n },\n onChildNodeToggle(node) {\n this.$emit('node-toggle', node);\n },\n getPTOptions(key) {\n return this.ptm(key, {\n context: {\n node: this.node,\n index: this.index,\n expanded: this.expanded,\n selected: this.selected,\n checked: this.checked,\n partialChecked: this.partialChecked,\n leaf: this.leaf\n }\n });\n },\n onClick(event) {\n if (this.toggleClicked || getAttribute(event.target, '[data-pc-section=\"nodetogglebutton\"]') || getAttribute(event.target.parentElement, '[data-pc-section=\"nodetogglebutton\"]')) {\n this.toggleClicked = false;\n\n return;\n }\n\n if (this.isCheckboxSelectionMode()) {\n if (this.node.selectable != false) {\n this.toggleCheckbox();\n }\n } else {\n this.$emit('node-click', {\n originalEvent: event,\n nodeTouched: this.nodeTouched,\n node: this.node\n });\n }\n\n this.nodeTouched = false;\n },\n onChildNodeClick(event) {\n this.$emit('node-click', event);\n },\n onTouchEnd() {\n this.nodeTouched = true;\n },\n onKeyDown(event) {\n if (!this.isSameNode(event)) return;\n\n switch (event.code) {\n case 'Tab':\n this.onTabKey(event);\n\n break;\n\n case 'ArrowDown':\n this.onArrowDown(event);\n\n break;\n\n case 'ArrowUp':\n this.onArrowUp(event);\n\n break;\n\n case 'ArrowRight':\n this.onArrowRight(event);\n\n break;\n\n case 'ArrowLeft':\n this.onArrowLeft(event);\n\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Space':\n this.onEnterKey(event);\n\n break;\n\n default:\n break;\n }\n },\n onArrowDown(event) {\n const nodeElement = event.target.getAttribute('data-pc-section') === 'nodetogglebutton' ? event.target.closest('[role=\"treeitem\"]') : event.target;\n const listElement = nodeElement.children[1];\n\n if (listElement) {\n this.focusRowChange(nodeElement, listElement.children[0]);\n } else {\n if (nodeElement.nextElementSibling) {\n this.focusRowChange(nodeElement, nodeElement.nextElementSibling);\n } else {\n let nextSiblingAncestor = this.findNextSiblingOfAncestor(nodeElement);\n\n if (nextSiblingAncestor) {\n this.focusRowChange(nodeElement, nextSiblingAncestor);\n }\n }\n }\n\n event.preventDefault();\n },\n onArrowUp(event) {\n const nodeElement = event.target;\n\n if (nodeElement.previousElementSibling) {\n this.focusRowChange(nodeElement, nodeElement.previousElementSibling, this.findLastVisibleDescendant(nodeElement.previousElementSibling));\n } else {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n\n if (parentNodeElement) {\n this.focusRowChange(nodeElement, parentNodeElement);\n }\n }\n\n event.preventDefault();\n },\n onArrowRight(event) {\n if (this.leaf || this.expanded) return;\n\n event.currentTarget.tabIndex = -1;\n\n this.$emit('node-toggle', this.node);\n this.$nextTick(() => {\n this.onArrowDown(event);\n });\n },\n onArrowLeft(event) {\n const togglerElement = findSingle(event.currentTarget, '[data-pc-section=\"nodetogglebutton\"]');\n\n if (this.level === 0 && !this.expanded) {\n return false;\n }\n\n if (this.expanded && !this.leaf) {\n togglerElement.click();\n\n return false;\n }\n\n const target = this.findBeforeClickableNode(event.currentTarget);\n\n if (target) {\n this.focusRowChange(event.currentTarget, target);\n }\n },\n onEnterKey(event) {\n this.setTabIndexForSelectionMode(event, this.nodeTouched);\n this.onClick(event);\n\n event.preventDefault();\n },\n onTabKey() {\n this.setAllNodesTabIndexes();\n },\n removeNodeFromTree(nodes, nodeToRemove) {\n return nodes.reduce((acc, node) => {\n if (node.key === nodeToRemove.key) {\n return acc;\n }\n if (node.children && node.children.length > 0) {\n const updatedChildren = this.removeNodeFromTree(node.children, nodeToRemove);\n acc.push({ ...node, children: updatedChildren });\n } else {\n acc.push(node);\n }\n\n return acc;\n }, []);\n },\n insertNodeInSiblings(nodes, targetKey, nodeToInsert, offset) {\n const targetIndex = nodes.findIndex((n) => n.key === targetKey);\n\n if (targetIndex !== -1) {\n return nodes.toSpliced(targetIndex + offset, 0, nodeToInsert);\n }\n\n return nodes.map((node) => {\n if (node.children && node.children.length > 0) {\n return { ...node, children: this.insertNodeInSiblings(node.children, targetKey, nodeToInsert, offset) };\n }\n\n return node;\n });\n },\n addNodeAsChild(nodes, parentKey, nodeToInsert) {\n return nodes.map((node) => {\n if (node.key === parentKey) {\n return { ...node, children: [...(node.children || []), nodeToInsert] };\n }\n\n if (node.children && node.children.length > 0) {\n return { ...node, children: this.addNodeAsChild(node.children, parentKey, nodeToInsert) };\n }\n\n return node;\n });\n },\n insertNodeOnDrop() {\n const { dragNode, dragNodeIndex, dragNodeSubNodes, dragDropService } = this.$pcTree;\n\n if (!this.node || dragNodeIndex == null || !dragNode || !dragNodeSubNodes) {\n return null;\n }\n\n const position = this.dropPosition;\n let updatedNodes = this.removeNodeFromTree(this.rootNodes, dragNode);\n\n if (position < 0) {\n // insert before a Node\n updatedNodes = this.insertNodeInSiblings(updatedNodes, this.node.key, dragNode, 0);\n } else if (position > 0) {\n // insert after a Node\n updatedNodes = this.insertNodeInSiblings(updatedNodes, this.node.key, dragNode, 1);\n } else {\n // insert as child of a Node\n updatedNodes = this.addNodeAsChild(updatedNodes, this.node.key, dragNode);\n }\n\n this.$emit('value-change', { nodes: updatedNodes });\n\n dragDropService.stopDrag({\n node: dragNode,\n subNodes: updatedNodes,\n index: dragNodeIndex\n });\n\n return updatedNodes;\n },\n onNodeDrop(event) {\n if (this.isDroppable) {\n event.preventDefault();\n event.stopPropagation();\n\n const { dragNode } = this.$pcTree;\n const position = this.dropPosition;\n const isValidDrop = position !== 0 || (position === 0 && this.isNodeDroppable);\n\n if (isValidDrop) {\n if (this.validateDrop) {\n this.$emit('node-drop', {\n originalEvent: event,\n value: this.rootNodes,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index,\n accept: () => {\n const updatedNodes = this.insertNodeOnDrop();\n\n this.$emit('node-drop', {\n originalEvent: event,\n value: updatedNodes,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index\n });\n }\n });\n } else {\n const updatedNodes = this.insertNodeOnDrop();\n\n this.$emit('node-drop', {\n originalEvent: event,\n value: updatedNodes,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index\n });\n }\n }\n\n this.isPrevDropPointHovered = false;\n this.isNextDropPointHovered = false;\n this.isNodeDropHovered = false;\n }\n },\n onNodeDragStart(event) {\n if (this.isNodeDraggable) {\n event.dataTransfer.effectAllowed = 'all';\n event.dataTransfer.setData('text', 'data');\n\n const target = event.currentTarget;\n const dragEl = target.cloneNode(true);\n const toggler = dragEl.querySelector('[data-pc-section=\"nodetogglebutton\"]');\n const checkbox = dragEl.querySelector('[data-pc-name=\"pcnodecheckbox\"]');\n\n target.setAttribute('data-p-dragging', 'true');\n dragEl.style.width = getOuterWidth(target) + 'px';\n dragEl.style.height = getOuterHeight(target) + 'px';\n dragEl.setAttribute('data-pc-section', 'drag-image');\n toggler.style.visibility = 'hidden';\n checkbox?.remove();\n document.body.appendChild(dragEl);\n event.dataTransfer.setDragImage(dragEl, 0, 0);\n\n setTimeout(() => document.body.removeChild(dragEl), 0);\n\n this.$pcTree.dragDropService.startDrag({\n node: this.node,\n subNodes: this.subNodes,\n index: this.index,\n scope: this.draggableScope\n });\n } else {\n event.preventDefault();\n }\n },\n onNodeDragOver(event) {\n if (this.isDroppable) {\n event.dataTransfer.dropEffect = 'copy';\n const nodeElement = event.currentTarget;\n const rect = nodeElement.getBoundingClientRect();\n const y = event.clientY - rect.top;\n\n this.isPrevDropPointHovered = false;\n this.isNextDropPointHovered = false;\n this.isNodeDropHovered = false;\n\n if (y < rect.height * 0.25) {\n this.isPrevDropPointHovered = true;\n } else if (y > rect.height * 0.75) {\n this.isNextDropPointHovered = true;\n } else if (this.isNodeDroppable) {\n this.isNodeDropHovered = true;\n }\n } else {\n event.dataTransfer.dropEffect = 'none';\n }\n\n if (this.droppableNodes) {\n event.preventDefault();\n event.stopPropagation();\n }\n },\n onNodeDragEnter() {\n this.$emit('node-dragenter', {\n node: this.node\n });\n },\n onNodeDragLeave() {\n this.$emit('node-dragleave', {\n node: this.node\n });\n\n this.isPrevDropPointHovered = false;\n this.isNextDropPointHovered = false;\n this.isNodeDropHovered = false;\n },\n onNodeDragEnd(event) {\n event.currentTarget?.removeAttribute('data-p-dragging');\n\n this.$pcTree.dragDropService.stopDrag({\n node: this.node,\n subNodes: this.subNodes,\n index: this.index\n });\n },\n setAllNodesTabIndexes() {\n const nodes = find(this.$refs.currentNode.closest('[data-pc-section=\"rootchildren\"]'), '[role=\"treeitem\"]');\n\n const hasSelectedNode = [...nodes].some((node) => node.getAttribute('aria-selected') === 'true' || node.getAttribute('aria-checked') === 'true');\n\n [...nodes].forEach((node) => {\n node.tabIndex = -1;\n });\n\n if (hasSelectedNode) {\n const selectedNodes = [...nodes].filter((node) => node.getAttribute('aria-selected') === 'true' || node.getAttribute('aria-checked') === 'true');\n\n selectedNodes[0].tabIndex = 0;\n\n return;\n }\n\n [...nodes][0].tabIndex = 0;\n },\n setTabIndexForSelectionMode(event, nodeTouched) {\n if (this.selectionMode !== null) {\n const elements = [...find(this.$refs.currentNode.parentElement, '[role=\"treeitem\"]')];\n\n event.currentTarget.tabIndex = nodeTouched === false ? -1 : 0;\n\n if (elements.every((element) => element.tabIndex === -1)) {\n elements[0].tabIndex = 0;\n }\n }\n },\n focusRowChange(firstFocusableRow, currentFocusedRow, lastVisibleDescendant) {\n firstFocusableRow.tabIndex = '-1';\n currentFocusedRow.tabIndex = '0';\n\n this.focusNode(lastVisibleDescendant || currentFocusedRow);\n },\n findBeforeClickableNode(node) {\n const parentListElement = node.closest('ul').closest('li');\n\n if (parentListElement) {\n const prevNodeButton = findSingle(parentListElement, 'button');\n\n if (prevNodeButton && prevNodeButton.style.visibility !== 'hidden') {\n return parentListElement;\n }\n\n return this.findBeforeClickableNode(node.previousElementSibling);\n }\n\n return null;\n },\n toggleCheckbox() {\n let _selectionKeys = this.selectionKeys ? { ...this.selectionKeys } : {};\n const _check = !this.checked;\n\n this.propagateDown(this.node, _check, _selectionKeys);\n\n this.$emit('checkbox-change', {\n node: this.node,\n check: _check,\n selectionKeys: _selectionKeys\n });\n },\n propagateDown(node, check, selectionKeys) {\n if (check && node.selectable != false) selectionKeys[node.key] = { checked: true, partialChecked: false };\n else delete selectionKeys[node.key];\n\n if (node.children && node.children.length) {\n for (let child of node.children) {\n this.propagateDown(child, check, selectionKeys);\n }\n }\n },\n propagateUp(event) {\n let check = event.check;\n let _selectionKeys = { ...event.selectionKeys };\n let checkedChildCount = 0;\n let childPartialSelected = false;\n\n for (let child of this.node.children) {\n if (_selectionKeys[child.key] && _selectionKeys[child.key].checked) checkedChildCount++;\n else if (_selectionKeys[child.key] && _selectionKeys[child.key].partialChecked) childPartialSelected = true;\n }\n\n if (check && checkedChildCount === this.node.children.length) {\n _selectionKeys[this.node.key] = { checked: true, partialChecked: false };\n } else {\n if (!check) {\n delete _selectionKeys[this.node.key];\n }\n\n if (childPartialSelected || (checkedChildCount > 0 && checkedChildCount !== this.node.children.length)) _selectionKeys[this.node.key] = { checked: false, partialChecked: true };\n else delete _selectionKeys[this.node.key];\n }\n\n this.$emit('checkbox-change', {\n node: event.node,\n check: event.check,\n selectionKeys: _selectionKeys\n });\n },\n onChildCheckboxChange(event) {\n this.$emit('checkbox-change', event);\n },\n findNextSiblingOfAncestor(nodeElement) {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n\n if (parentNodeElement) {\n if (parentNodeElement.nextElementSibling) return parentNodeElement.nextElementSibling;\n else return this.findNextSiblingOfAncestor(parentNodeElement);\n } else {\n return null;\n }\n },\n findLastVisibleDescendant(nodeElement) {\n const childrenListElement = nodeElement.children[1];\n\n if (childrenListElement) {\n const lastChildElement = childrenListElement.children[childrenListElement.children.length - 1];\n\n return this.findLastVisibleDescendant(lastChildElement);\n } else {\n return nodeElement;\n }\n },\n getParentNodeElement(nodeElement) {\n const parentNodeElement = nodeElement.parentElement.parentElement;\n\n return getAttribute(parentNodeElement, 'role') === 'treeitem' ? parentNodeElement : null;\n },\n focusNode(element) {\n element.focus();\n },\n isCheckboxSelectionMode() {\n return this.selectionMode === 'checkbox';\n },\n isSameNode(event) {\n return event.currentTarget && (event.currentTarget.isSameNode(event.target) || event.currentTarget.isSameNode(event.target.closest('[role=\"treeitem\"]')));\n }\n },\n computed: {\n hasChildren() {\n return this.node.children && this.node.children.length > 0;\n },\n expanded() {\n return this.expandedKeys && this.expandedKeys[this.node.key] === true;\n },\n leaf() {\n return this.node.leaf === false ? false : !(this.node.children && this.node.children.length);\n },\n selectable() {\n return this.node.selectable === false ? false : this.selectionMode != null;\n },\n selected() {\n return this.selectionMode && this.selectionKeys ? this.selectionKeys[this.node.key] === true : false;\n },\n checkboxMode() {\n return this.selectionMode === 'checkbox' && this.node.selectable !== false;\n },\n checked() {\n return this.selectionKeys ? this.selectionKeys[this.node.key] && this.selectionKeys[this.node.key].checked : false;\n },\n partialChecked() {\n return this.selectionKeys ? this.selectionKeys[this.node.key] && this.selectionKeys[this.node.key].partialChecked : false;\n },\n ariaChecked() {\n return this.selectionMode === 'single' || this.selectionMode === 'multiple' ? this.selected : undefined;\n },\n ariaSelected() {\n return this.checkboxMode ? this.checked : undefined;\n },\n isPrevDropPointActive() {\n return this.isPrevDropPointHovered && this.isDroppable;\n },\n isNextDropPointActive() {\n return this.isNextDropPointHovered && this.isDroppable;\n },\n dropPosition() {\n return this.isPrevDropPointActive ? -1 : this.isNextDropPointActive ? 1 : 0;\n },\n subNodes() {\n return this.parentNode ? this.parentNode.children : this.rootNodes;\n },\n isDraggable() {\n return this.draggableNodes;\n },\n isDroppable() {\n return this.droppableNodes && this.$pcTree.allowNodeDrop(this.node);\n },\n isNodeDraggable() {\n return this.node?.draggable !== false && this.isDraggable;\n },\n isNodeDroppable() {\n return this.node?.droppable !== false && this.isDroppable;\n },\n isNodeDropActive() {\n return this.isNodeDropHovered && this.isNodeDroppable;\n }\n },\n components: {\n Checkbox,\n ChevronDownIcon,\n ChevronRightIcon,\n CheckIcon,\n MinusIcon,\n SpinnerIcon\n },\n directives: {\n ripple: Ripple\n }\n};\n</script>\n","<template>\n <li\n ref=\"currentNode\"\n :class=\"cx('node')\"\n role=\"treeitem\"\n :aria-label=\"label(node)\"\n :aria-selected=\"ariaSelected\"\n :aria-expanded=\"expanded\"\n :aria-setsize=\"node.children ? node.children.length : 0\"\n :aria-posinset=\"index + 1\"\n :aria-level=\"level\"\n :aria-checked=\"ariaChecked\"\n :tabindex=\"index === 0 ? 0 : -1\"\n @keydown=\"onKeyDown\"\n v-bind=\"getPTOptions('node')\"\n >\n <div v-if=\"isPrevDropPointActive\" :class=\"cx('dropPoint')\" aria-hidden=\"true\" />\n <div\n :class=\"cx('nodeContent')\"\n :style=\"node.style\"\n :draggable=\"isDraggable\"\n @click=\"onClick\"\n @touchend=\"onTouchEnd\"\n @dragstart=\"onNodeDragStart\"\n @dragover=\"onNodeDragOver\"\n @dragenter=\"onNodeDragEnter\"\n @dragleave=\"onNodeDragLeave\"\n @dragend=\"onNodeDragEnd\"\n @drop=\"onNodeDrop\"\n v-bind=\"getPTOptions('nodeContent')\"\n :data-p-selected=\"checkboxMode ? checked : selected\"\n :data-p-selectable=\"selectable\"\n >\n <button v-ripple type=\"button\" :class=\"cx('nodeToggleButton')\" @click=\"toggle\" tabindex=\"-1\" :data-p-leaf=\"leaf\" v-bind=\"getPTOptions('nodeToggleButton')\">\n <template v-if=\"node.loading && loadingMode === 'icon'\">\n <!-- TODO: nodetogglericon deprecated since v4.0-->\n <component v-if=\"templates['nodetoggleicon'] || templates['nodetogglericon']\" :is=\"templates['nodetoggleicon'] || templates['nodetogglericon']\" :node=\"node\" :expanded=\"expanded\" :class=\"cx('nodeToggleIcon')\" />\n <SpinnerIcon v-else spin :class=\"cx('nodeToggleIcon')\" v-bind=\"getPTOptions('nodeToggleIcon')\" />\n </template>\n <template v-else>\n <!-- TODO: togglericon deprecated since v4.0-->\n <component v-if=\"templates['nodetoggleicon'] || templates['togglericon']\" :is=\"templates['nodetoggleicon'] || templates['togglericon']\" :node=\"node\" :expanded=\"expanded\" :class=\"cx('nodeToggleIcon')\" />\n <component v-else-if=\"expanded\" :is=\"node.expandedIcon ? 'span' : 'ChevronDownIcon'\" :class=\"cx('nodeToggleIcon')\" v-bind=\"getPTOptions('nodeToggleIcon')\" />\n <component v-else :is=\"node.collapsedIcon ? 'span' : 'ChevronRightIcon'\" :class=\"cx('nodeToggleIcon')\" v-bind=\"getPTOptions('nodeToggleIcon')\" />\n </template>\n </button>\n <Checkbox\n v-if=\"checkboxMode\"\n :defaultValue=\"checked\"\n :binary=\"true\"\n :indeterminate=\"partialChecked\"\n :class=\"cx('nodeCheckbox')\"\n :tabindex=\"-1\"\n :unstyled=\"unstyled\"\n :pt=\"getPTOptions('pcNodeCheckbox')\"\n :data-p-partialchecked=\"partialChecked\"\n >\n <template #icon=\"slotProps\">\n <component v-if=\"templates['checkboxicon']\" :is=\"templates['checkboxicon']\" :checked=\"slotProps.checked\" :partialChecked=\"partialChecked\" :class=\"slotProps.class\" />\n </template>\n </Checkbox>\n <component v-if=\"templates['nodeicon']\" :is=\"templates['nodeicon']\" :node=\"node\" :class=\"[cx('nodeIcon')]\" v-bind=\"getPTOptions('nodeIcon')\"></component>\n <span v-else :class=\"[cx('nodeIcon'), node.icon]\" v-bind=\"getPTOptions('nodeIcon')\"></span>\n <span :class=\"cx('nodeLabel')\" v-bind=\"getPTOptions('nodeLabel')\" @keydown.stop>\n <component v-if=\"templates[node.type] || templates['default']\" :is=\"templates[node.type] || templates['default']\" :node=\"node\" :expanded=\"expanded\" :selected=\"checkboxMode ? checked : selected\" />\n <template v-else>{{ label(node) }}</template>\n </span>\n </div>\n <div v-if=\"isNextDropPointActive\" :class=\"cx('dropPoint')\" aria-hidden=\"true\" />\n <ul v-if=\"hasChildren && expanded\" :class=\"cx('nodeChildren')\" role=\"group\" v-bind=\"ptm('nodeChildren')\">\n <TreeNode\n v-for=\"(childNode, index) of node.children\"\n :key=\"childNode.key\"\n :node=\"childNode\"\n :parentNode=\"node\"\n :rootNodes=\"rootNodes\"\n :templates=\"templates\"\n :level=\"level + 1\"\n :index=\"index\"\n :loadingMode=\"loadingMode\"\n :expandedKeys=\"expandedKeys\"\n @node-toggle=\"onChildNodeToggle\"\n @node-click=\"onChildNodeClick\"\n :selectionMode=\"selectionMode\"\n :selectionKeys=\"selectionKeys\"\n @checkbox-change=\"propagateUp\"\n :draggableScope=\"draggableScope\"\n :draggableNodes=\"draggableNodes\"\n :droppableNodes=\"droppableNodes\"\n :validateDrop=\"validateDrop\"\n @node-drop=\"$emit('node-drop', $event)\"\n @node-dragenter=\"$emit('node-dragenter', $event)\"\n @node-dragleave=\"$emit('node-dragleave', $event)\"\n @value-change=\"$emit('value-change', $event)\"\n :unstyled=\"unstyled\"\n :pt=\"pt\"\n />\n </ul>\n </li>\n</template>\n\n<script>\nimport { find, findSingle, getAttribute, getOuterHeight, getOuterWidth } from '@primeuix/utils';\nimport BaseComponent from '@primevue/core/basecomponent';\nimport CheckIcon from '@primevue/icons/check';\nimport ChevronDownIcon from '@primevue/icons/chevrondown';\nimport ChevronRightIcon from '@primevue/icons/chevronright';\nimport MinusIcon from '@primevue/icons/minus';\nimport SpinnerIcon from '@primevue/icons/spinner';\nimport Checkbox from 'primevue/checkbox';\nimport Ripple from 'primevue/ripple';\n\nexport default {\n name: 'TreeNode',\n hostName: 'Tree',\n extends: BaseComponent,\n emits: ['node-toggle', 'node-click', 'checkbox-change', 'node-drop', 'value-change', 'node-dragenter', 'node-dragleave'],\n props: {\n node: {\n type: null,\n default: null\n },\n parentNode: {\n type: null,\n default: null\n },\n rootNodes: {\n type: Object,\n default: null\n },\n expandedKeys: {\n type: null,\n default: null\n },\n loadingMode: {\n type: String,\n default: 'mask'\n },\n selectionKeys: {\n type: null,\n default: null\n },\n selectionMode: {\n type: String,\n default: null\n },\n templates: {\n type: null,\n default: null\n },\n level: {\n type: Number,\n default: null\n },\n draggableScope: {\n type: [String, Array],\n default: null\n },\n draggableNodes: {\n type: Boolean,\n default: null\n },\n droppableNodes: {\n type: Boolean,\n default: null\n },\n validateDrop: {\n type: Boolean,\n default: false\n },\n index: null\n },\n nodeTouched: false,\n toggleClicked: false,\n inject: {\n $pcTree: {\n default: undefined\n }\n },\n data() {\n return {\n isPrevDropPointHovered: false,\n isNextDropPointHovered: false,\n isNodeDropHovered: false\n };\n },\n mounted() {\n this.setAllNodesTabIndexes();\n },\n methods: {\n toggle() {\n this.$emit('node-toggle', this.node);\n this.toggleClicked = true;\n },\n label(node) {\n return typeof node.label === 'function' ? node.label() : node.label;\n },\n onChildNodeToggle(node) {\n this.$emit('node-toggle', node);\n },\n getPTOptions(key) {\n return this.ptm(key, {\n context: {\n node: this.node,\n index: this.index,\n expanded: this.expanded,\n selected: this.selected,\n checked: this.checked,\n partialChecked: this.partialChecked,\n leaf: this.leaf\n }\n });\n },\n onClick(event) {\n if (this.toggleClicked || getAttribute(event.target, '[data-pc-section=\"nodetogglebutton\"]') || getAttribute(event.target.parentElement, '[data-pc-section=\"nodetogglebutton\"]')) {\n this.toggleClicked = false;\n\n return;\n }\n\n if (this.isCheckboxSelectionMode()) {\n if (this.node.selectable != false) {\n this.toggleCheckbox();\n }\n } else {\n this.$emit('node-click', {\n originalEvent: event,\n nodeTouched: this.nodeTouched,\n node: this.node\n });\n }\n\n this.nodeTouched = false;\n },\n onChildNodeClick(event) {\n this.$emit('node-click', event);\n },\n onTouchEnd() {\n this.nodeTouched = true;\n },\n onKeyDown(event) {\n if (!this.isSameNode(event)) return;\n\n switch (event.code) {\n case 'Tab':\n this.onTabKey(event);\n\n break;\n\n case 'ArrowDown':\n this.onArrowDown(event);\n\n break;\n\n case 'ArrowUp':\n this.onArrowUp(event);\n\n break;\n\n case 'ArrowRight':\n this.onArrowRight(event);\n\n break;\n\n case 'ArrowLeft':\n this.onArrowLeft(event);\n\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Space':\n this.onEnterKey(event);\n\n break;\n\n default:\n break;\n }\n },\n onArrowDown(event) {\n const nodeElement = event.target.getAttribute('data-pc-section') === 'nodetogglebutton' ? event.target.closest('[role=\"treeitem\"]') : event.target;\n const listElement = nodeElement.children[1];\n\n if (listElement) {\n this.focusRowChange(nodeElement, listElement.children[0]);\n } else {\n if (nodeElement.nextElementSibling) {\n this.focusRowChange(nodeElement, nodeElement.nextElementSibling);\n } else {\n let nextSiblingAncestor = this.findNextSiblingOfAncestor(nodeElement);\n\n if (nextSiblingAncestor) {\n this.focusRowChange(nodeElement, nextSiblingAncestor);\n }\n }\n }\n\n event.preventDefault();\n },\n onArrowUp(event) {\n const nodeElement = event.target;\n\n if (nodeElement.previousElementSibling) {\n this.focusRowChange(nodeElement, nodeElement.previousElementSibling, this.findLastVisibleDescendant(nodeElement.previousElementSibling));\n } else {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n\n if (parentNodeElement) {\n this.focusRowChange(nodeElement, parentNodeElement);\n }\n }\n\n event.preventDefault();\n },\n onArrowRight(event) {\n if (this.leaf || this.expanded) return;\n\n event.currentTarget.tabIndex = -1;\n\n this.$emit('node-toggle', this.node);\n this.$nextTick(() => {\n this.onArrowDown(event);\n });\n },\n onArrowLeft(event) {\n const togglerElement = findSingle(event.currentTarget, '[data-pc-section=\"nodetogglebutton\"]');\n\n if (this.level === 0 && !this.expanded) {\n return false;\n }\n\n if (this.expanded && !this.leaf) {\n togglerElement.click();\n\n return false;\n }\n\n const target = this.findBeforeClickableNode(event.currentTarget);\n\n if (target) {\n this.focusRowChange(event.currentTarget, target);\n }\n },\n onEnterKey(event) {\n this.setTabIndexForSelectionMode(event, this.nodeTouched);\n this.onClick(event);\n\n event.preventDefault();\n },\n onTabKey() {\n this.setAllNodesTabIndexes();\n },\n removeNodeFromTree(nodes, nodeToRemove) {\n return nodes.reduce((acc, node) => {\n if (node.key === nodeToRemove.key) {\n return acc;\n }\n if (node.children && node.children.length > 0) {\n const updatedChildren = this.removeNodeFromTree(node.children, nodeToRemove);\n acc.push({ ...node, children: updatedChildren });\n } else {\n acc.push(node);\n }\n\n return acc;\n }, []);\n },\n insertNodeInSiblings(nodes, targetKey, nodeToInsert, offset) {\n const targetIndex = nodes.findIndex((n) => n.key === targetKey);\n\n if (targetIndex !== -1) {\n return nodes.toSpliced(targetIndex + offset, 0, nodeToInsert);\n }\n\n return nodes.map((node) => {\n if (node.children && node.children.length > 0) {\n return { ...node, children: this.insertNodeInSiblings(node.children, targetKey, nodeToInsert, offset) };\n }\n\n return node;\n });\n },\n addNodeAsChild(nodes, parentKey, nodeToInsert) {\n return nodes.map((node) => {\n if (node.key === parentKey) {\n return { ...node, children: [...(node.children || []), nodeToInsert] };\n }\n\n if (node.children && node.children.length > 0) {\n return { ...node, children: this.addNodeAsChild(node.children, parentKey, nodeToInsert) };\n }\n\n return node;\n });\n },\n insertNodeOnDrop() {\n const { dragNode, dragNodeIndex, dragNodeSubNodes, dragDropService } = this.$pcTree;\n\n if (!this.node || dragNodeIndex == null || !dragNode || !dragNodeSubNodes) {\n return null;\n }\n\n const position = this.dropPosition;\n let updatedNodes = this.removeNodeFromTree(this.rootNodes, dragNode);\n\n if (position < 0) {\n // insert before a Node\n updatedNodes = this.insertNodeInSiblings(updatedNodes, this.node.key, dragNode, 0);\n } else if (position > 0) {\n // insert after a Node\n updatedNodes = this.insertNodeInSiblings(updatedNodes, this.node.key, dragNode, 1);\n } else {\n // insert as child of a Node\n updatedNodes = this.addNodeAsChild(updatedNodes, this.node.key, dragNode);\n }\n\n this.$emit('value-change', { nodes: updatedNodes });\n\n dragDropService.stopDrag({\n node: dragNode,\n subNodes: updatedNodes,\n index: dragNodeIndex\n });\n\n return updatedNodes;\n },\n onNodeDrop(event) {\n if (this.isDroppable) {\n event.preventDefault();\n event.stopPropagation();\n\n const { dragNode } = this.$pcTree;\n const position = this.dropPosition;\n const isValidDrop = position !== 0 || (position === 0 && this.isNodeDroppable);\n\n if (isValidDrop) {\n if (this.validateDrop) {\n this.$emit('node-drop', {\n originalEvent: event,\n value: this.rootNodes,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index,\n accept: () => {\n const updatedNodes = this.insertNodeOnDrop();\n\n this.$emit('node-drop', {\n originalEvent: event,\n value: updatedNodes,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index\n });\n }\n });\n } else {\n const updatedNodes = this.insertNodeOnDrop();\n\n this.$emit('node-drop', {\n originalEvent: event,\n value: updatedNodes,\n dragNode: dragNode,\n dropNode: this.node,\n index: this.index\n });\n }\n }\n\n this.isPrevDropPointHovered = false;\n this.isNextDropPointHovered = false;\n this.isNodeDropHovered = false;\n }\n },\n onNodeDragStart(event) {\n if (this.isNodeDraggable) {\n event.dataTransfer.effectAllowed = 'all';\n event.dataTransfer.setData('text', 'data');\n\n const target = event.currentTarget;\n const dragEl = target.cloneNode(true);\n const toggler = dragEl.querySelector('[data-pc-section=\"nodetogglebutton\"]');\n const checkbox = dragEl.querySelector('[data-pc-name=\"pcnodecheckbox\"]');\n\n target.setAttribute('data-p-dragging', 'true');\n dragEl.style.width = getOuterWidth(target) + 'px';\n dragEl.style.height = getOuterHeight(target) + 'px';\n dragEl.setAttribute('data-pc-section', 'drag-image');\n toggler.style.visibility = 'hidden';\n checkbox?.remove();\n document.body.appendChild(dragEl);\n event.dataTransfer.setDragImage(dragEl, 0, 0);\n\n setTimeout(() => document.body.removeChild(dragEl), 0);\n\n this.$pcTree.dragDropService.startDrag({\n node: this.node,\n subNodes: this.subNodes,\n index: this.index,\n scope: this.draggableScope\n });\n } else {\n event.preventDefault();\n }\n },\n onNodeDragOver(event) {\n if (this.isDroppable) {\n event.dataTransfer.dropEffect = 'copy';\n const nodeElement = event.currentTarget;\n const rect = nodeElement.getBoundingClientRect();\n const y = event.clientY - rect.top;\n\n this.isPrevDropPointHovered = false;\n this.isNextDropPointHovered = false;\n this.isNodeDropHovered = false;\n\n if (y < rect.height * 0.25) {\n this.isPrevDropPointHovered = true;\n } else if (y > rect.height * 0.75) {\n this.isNextDropPointHovered = true;\n } else if (this.isNodeDroppable) {\n this.isNodeDropHovered = true;\n }\n } else {\n event.dataTransfer.dropEffect = 'none';\n }\n\n if (this.droppableNodes) {\n event.preventDefault();\n event.stopPropagation();\n }\n },\n onNodeDragEnter() {\n this.$emit('node-dragenter', {\n node: this.node\n });\n },\n onNodeDragLeave() {\n this.$emit('node-dragleave', {\n node: this.node\n });\n\n this.isPrevDropPointHovered = false;\n this.isNextDropPointHovered = false;\n this.isNodeDropHovered = false;\n },\n onNodeDragEnd(event) {\n event.currentTarget?.removeAttribute('data-p-dragging');\n\n this.$pcTree.dragDropService.stopDrag({\n node: this.node,\n subNodes: this.subNodes,\n index: this.index\n });\n },\n setAllNodesTabIndexes() {\n const nodes = find(this.$refs.currentNode.closest('[data-pc-section=\"rootchildren\"]'), '[role=\"treeitem\"]');\n\n const hasSelectedNode = [...nodes].some((node) => node.getAttribute('aria-selected') === 'true' || node.getAttribute('aria-checked') === 'true');\n\n [...nodes].forEach((node) => {\n node.tabIndex = -1;\n });\n\n if (hasSelectedNode) {\n const selectedNodes = [...nodes].filter((node) => node.getAttribute('aria-selected') === 'true' || node.getAttribute('aria-checked') === 'true');\n\n selectedNodes[0].tabIndex = 0;\n\n return;\n }\n\n [...nodes][0].tabIndex = 0;\n },\n setTabIndexForSelectionMode(event, nodeTouched) {\n if (this.selectionMode !== null) {\n const elements = [...find(this.$refs.currentNode.parentElement, '[role=\"treeitem\"]')];\n\n event.currentTarget.tabIndex = nodeTouched === false ? -1 : 0;\n\n if (elements.every((element) => element.tabIndex === -1)) {\n elements[0].tabIndex = 0;\n }\n }\n },\n focusRowChange(firstFocusableRow, currentFocusedRow, lastVisibleDescendant) {\n firstFocusableRow.tabIndex = '-1';\n currentFocusedRow.tabIndex = '0';\n\n this.focusNode(lastVisibleDescendant || currentFocusedRow);\n },\n findBeforeClickableNode(node) {\n const parentListElement = node.closest('ul').closest('li');\n\n if (parentListElement) {\n const prevNodeButton = findSingle(parentListElement, 'button');\n\n if (prevNodeButton && prevNodeButton.style.visibility !== 'hidden') {\n return parentListElement;\n }\n\n return this.findBeforeClickableNode(node.previousElementSibling);\n }\n\n return null;\n },\n toggleCheckbox() {\n let _selectionKeys = this.selectionKeys ? { ...this.selectionKeys } : {};\n const _check = !this.checked;\n\n this.propagateDown(this.node, _check, _selectionKeys);\n\n this.$emit('checkbox-change', {\n node: this.node,\n check: _check,\n selectionKeys: _selectionKeys\n });\n },\n propagateDown(node, check, selectionKeys) {\n if (check && node.selectable != false) selectionKeys[node.key] = { checked: true, partialChecked: false };\n else delete selectionKeys[node.key];\n\n if (node.children && node.children.length) {\n for (let child of node.children) {\n this.propagateDown(child, check, selectionKeys);\n }\n }\n },\n propagateUp(event) {\n let check = event.check;\n let _selectionKeys = { ...event.selectionKeys };\n let checkedChildCount = 0;\n let childPartialSelected = false;\n\n for (let child of this.node.children) {\n if (_selectionKeys[child.key] && _selectionKeys[child.key].checked) checkedChildCount++;\n else if (_selectionKeys[child.key] && _selectionKeys[child.key].partialChecked) childPartialSelected = true;\n }\n\n if (check && checkedChildCount === this.node.children.length) {\n _selectionKeys[this.node.key] = { checked: true, partialChecked: false };\n } else {\n if (!check) {\n delete _selectionKeys[this.node.key];\n }\n\n if (childPartialSelected || (checkedChildCount > 0 && checkedChildCount !== this.node.children.length)) _selectionKeys[this.node.key] = { checked: false, partialChecked: true };\n else delete _selectionKeys[this.node.key];\n }\n\n this.$emit('checkbox-change', {\n node: event.node,\n check: event.check,\n selectionKeys: _selectionKeys\n });\n },\n onChildCheckboxChange(event) {\n this.$emit('checkbox-change', event);\n },\n findNextSiblingOfAncestor(nodeElement) {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n\n if (parentNodeElement) {\n if (parentNodeElement.nextElementSibling) return parentNodeElement.nextElementSibling;\n else return this.findNextSiblingOfAncestor(parentNodeElement);\n } else {\n return null;\n }\n },\n findLastVisibleDescendant(nodeElement) {\n const childrenListElement = nodeElement.children[1];\n\n if (childrenListElement) {\n const lastChildElement = childrenListElement.children[childrenListElement.children.length - 1];\n\n return this.findLastVisibleDescendant(lastChildElement);\n } else {\n return nodeElement;\n }\n },\n getParentNodeElement(nodeElement) {\n const parentNodeElement = nodeElement.parentElement.parentElement;\n\n return getAttribute(parentNodeElement, 'role') === 'treeitem' ? parentNodeElement : null;\n },\n focusNode(element) {\n element.focus();\n },\n isCheckboxSelectionMode() {\n return this.selectionMode === 'checkbox';\n },\n isSameNode(event) {\n return event.currentTarget && (event.currentTarget.isSameNode(event.target) || event.currentTarget.isSameNode(event.target.closest('[role=\"treeitem\"]')));\n }\n },\n computed: {\n hasChildren() {\n return this.node.children && this.node.children.length > 0;\n },\n expanded() {\n return this.expandedKeys && this.expandedKeys[this.node.key] === true;\n },\n leaf() {\n return this.node.leaf === false ? false : !(this.node.children && this.node.children.length);\n },\n selectable() {\n return this.node.selectable === false ? false : this.selectionMode != null;\n },\n selected() {\n return this.selectionMode && this.selectionKeys ? this.selectionKeys[this.node.key] === true : false;\n },\n checkboxMode() {\n return this.selectionMode === 'checkbox' && this.node.selectable !== false;\n },\n checked() {\n return this.selectionKeys ? this.selectionKeys[this.node.key] && this.selectionKeys[this.node.key].checked : false;\n },\n partialChecked() {\n return this.selectionKeys ? this.selectionKeys[this.node.key] && this.selectionKeys[this.node.key].partialChecked : false;\n },\n ariaChecked() {\n return this.selectionMode === 'single' || this.selectionMode === 'multiple' ? this.selected : undefined;\n },\n ariaSelected() {\n return this.checkboxMode ? this.checked : undefined;\n },\n isPrevDropPointActive() {\n return this.isPrevDropPointHovered && this.isDroppable;\n },\n isNextDropPointActive() {\n return this.isNextDropPointHovered && this.isDroppable;\n },\n dropPosition() {\n return this.isPrevDropPointActive ? -1 : this.isNextDropPointActive ? 1 : 0;\n },\n subNodes() {\n return this.parentNode ? this.parentNode.children : this.rootNodes;\n },\n isDraggable() {\n return this.draggableNodes;\n },\n isDroppable() {\n return this.droppableNodes && this.$pcTree.allowNodeDrop(this.node);\n },\n isNodeDraggable() {\n return this.node?.draggable !== false && this.isDraggable;\n },\n isNodeDroppable() {\n return this.node?.droppable !== false && this.isDroppable;\n },\n isNodeDropActive() {\n return this.isNodeDropHovered && this.isNodeDroppable;\n }\n },\n components: {\n Checkbox,\n ChevronDownIcon,\n ChevronRightIcon,\n CheckIcon,\n MinusIcon,\n SpinnerIcon\n },\n directives: {\n ripple: Ripple\n }\n};\n</script>\n","<template>\n <div :class=\"cx('root')\" @dragover=\"onDragOver\" @dragenter=\"onDragEnter\" @dragleave=\"onDragLeave\" @drop=\"onDrop\" :data-p=\"containerDataP\" v-bind=\"ptmi('root')\">\n <transition name=\"p-overlay-mask\">\n <div v-if=\"loading && loadingMode === 'mask'\" :class=\"cx('mask')\" v-bind=\"ptm('mask')\">\n <slot name=\"loadingicon\" :class=\"cx('loadingIcon')\">\n <i v-if=\"loadingIcon\" :class=\"[cx('loadingIcon'), 'pi-spin', loadingIcon]\" v-bind=\"ptm('loadingIcon')\" />\n <SpinnerIcon v-else spin :class=\"cx('loadingIcon')\" v-bind=\"ptm('loadingIcon')\" />\n </slot>\n </div>\n </transition>\n <IconField v-if=\"filter\" :unstyled=\"unstyled\" :pt=\"{ ...ptm('pcFilter'), ...ptm('pcFilterContainer') }\" :class=\"cx('pcFilterContainer')\">\n <InputText v-model=\"filterValue\" autocomplete=\"off\" :class=\"cx('pcFilterInput')\" :placeholder=\"filterPlaceholder\" :unstyled=\"unstyled\" @keyup=\"onFilterKeyup\" :pt=\"ptm('pcFilterInput')\" />\n <InputIcon :unstyled=\"unstyled\" :pt=\"ptm('pcFilterIconContainer')\">\n <!--TODO: searchicon deprecated since v4.0-->\n <slot :name=\"$slots.filtericon ? 'filtericon' : 'searchicon'\" :class=\"cx('filterIcon')\">\n <SearchIcon :class=\"cx('filterIcon')\" v-bind=\"ptm('filterIcon')\" />\n </slot>\n </InputIcon>\n </IconField>\n <div :class=\"cx('wrapper')\" :style=\"{ maxHeight: scrollHeight }\" :data-p=\"wrapperDataP\" v-bind=\"ptm('wrapper')\">\n <slot name=\"header\" :value=\"value\" :expandedKeys=\"expandedKeys\" :selectionKeys=\"selectionKeys\" />\n <ul v-if=\"!empty\" :class=\"cx('rootChildren')\" role=\"tree\" :aria-labelledby=\"ariaLabelledby\" :aria-label=\"ariaLabel\" v-bind=\"ptm('rootChildren')\">\n <TreeNode\n v-for=\"(node, index) of valueToRender\"\n :key=\"node.key\"\n :node=\"node\"\n :rootNodes=\"valueToRender\"\n :templates=\"$slots\"\n :level=\"level + 1\"\n :index=\"index\"\n :expandedKeys=\"d_expandedKeys\"\n @node-toggle=\"onNodeToggle\"\n @node-click=\"onNodeClick\"\n :selectionMode=\"selectionMode\"\n :selectionKeys=\"selectionKeys\"\n @checkbox-change=\"onCheckboxChange\"\n :loadingMode=\"loadingMode\"\n :draggableNodes=\"draggableNodes\"\n :droppableNodes=\"droppableNodes\"\n :draggableScope=\"draggableScope\"\n :validateDrop=\"validateDrop\"\n @node-drop=\"onNodeDrop\"\n @node-dragenter=\"onNodeDragEnter\"\n @node-dragleave=\"onNodeDragLeave\"\n @value-change=\"onValueChanged\"\n :unstyled=\"unstyled\"\n :pt=\"pt\"\n ></TreeNode>\n </ul>\n <div v-else-if=\"empty && !$pcTreeSelect\" :class=\"cx('emptyMessage')\" v-bind=\"ptm('emptyMessage')\">\n <slot name=\"empty\">\n {{ emptyMessageText }}\n </slot>\n </div>\n <slot name=\"footer\" :value=\"value\" :expandedKeys=\"expandedKeys\" :selectionKeys=\"selectionKeys\" />\n </div>\n </div>\n</template>\n\n<script>\nimport { cn } from '@primeuix/utils';\nimport { isFunction, resolveFieldData } from '@primeuix/utils/object';\nimport SearchIcon from '@primevue/icons/search';\nimport SpinnerIcon from '@primevue/icons/spinner';\nimport IconField from 'primevue/iconfield';\nimport InputIcon from 'primevue/inputicon';\nimport InputText from 'primevue/inputtext';\nimport BaseTree from './BaseTree.vue';\nimport { useTreeDragDropService } from './TreeDragDropService';\nimport TreeNode from './TreeNode.vue';\n\nexport default {\n name: 'Tree',\n extends: BaseTree,\n inheritAttrs: false,\n emits: ['node-expand', 'node-collapse', 'update:expandedKeys', 'update:selectionKeys', 'node-select', 'node-unselect', 'filter', 'node-drop', 'node-dragenter', 'node-dragleave', 'update:value', 'drag-enter', 'drag-leave'],\n data() {\n return {\n d_expandedKeys: this.expandedKeys || {},\n filterValue: null,\n dragNode: null,\n dragNodeSubNodes: null,\n dragNodeIndex: null,\n dragNodeScope: null,\n dragHover: null\n };\n },\n inject: {\n $pcTreeSelect: { default: null }\n },\n dragDropService: null,\n dragStartCleanup: null,\n dragStopCleanup: null,\n watch: {\n expandedKeys(newValue) {\n this.d_expandedKeys = newValue;\n }\n },\n mounted() {\n if (this.droppableNodes) {\n this.dragDropService = useTreeDragDropService();\n\n this.dragStartCleanup = this.dragDropService.onDragStart((event) => {\n this.dragNode = event.node;\n this.dragNodeSubNodes = event.subNodes;\n this.dragNodeIndex = event.index;\n this.dragNodeScope = event.scope;\n });\n\n this.dragStopCleanup = this.dragDropService.onDragStop(() => {\n this.dragNode = null;\n this.dragNodeSubNodes = null;\n this.dragNodeIndex = null;\n this.dragNodeScope = null;\n this.dragHover = false;\n });\n }\n },\n beforeUnmount() {\n if (this.dragStartCleanup) {\n this.dragStartCleanup();\n }\n\n if (this.dragStopCleanup) {\n this.dragStopCleanup();\n }\n },\n methods: {\n onNodeToggle(node) {\n const key = node.key;\n\n if (this.d_expandedKeys[key]) {\n delete this.d_expandedKeys[key];\n this.$emit('node-collapse', node);\n } else {\n this.d_expandedKeys[key] = true;\n this.$emit('node-expand', node);\n }\n\n this.d_expandedKeys = { ...this.d_expandedKeys };\n this.$emit('update:expandedKeys', this.d_expandedKeys);\n },\n onNodeClick(event) {\n if (this.selectionMode != null && event.node.selectable !== false) {\n const metaSelection = event.nodeTouched ? false : this.metaKeySelection;\n const _selectionKeys = metaSelection ? this.handleSelectionWithMetaKey(event) : this.handleSelectionWithoutMetaKey(event);\n\n this.$emit('update:selectionKeys', _selectionKeys);\n }\n },\n onCheckboxChange(event) {\n this.$emit('update:selectionKeys', event.selectionKeys);\n\n if (event.check) this.$emit('node-select', event.node);\n else this.$emit('node-unselect', event.node);\n },\n handleSelectionWithMetaKey(event) {\n const originalEvent = event.originalEvent;\n const node = event.node;\n const metaKey = originalEvent.metaKey || originalEvent.ctrlKey;\n const selected = this.isNodeSelected(node);\n let _selectionKeys;\n\n if (selected && metaKey) {\n if (this.isSingleSelectionMode()) {\n _selectionKeys = {};\n } else {\n _selectionKeys = { ...this.selectionKeys };\n delete _selectionKeys[node.key];\n }\n\n this.$emit('node-unselect', node);\n } else {\n if (this.isSingleSelectionMode()) {\n _selectionKeys = {};\n } else if (this.isMultipleSelectionMode()) {\n _selectionKeys = !metaKey ? {} : this.selectionKeys ? { ...this.selectionKeys } : {};\n }\n\n _selectionKeys[node.key] = true;\n this.$emit('node-select', node);\n }\n\n return _selectionKeys;\n },\n handleSelectionWithoutMetaKey(event) {\n const node = event.node;\n const selected = this.isNodeSelected(node);\n let _selectionKeys;\n\n if (this.isSingleSelectionMode()) {\n if (selected) {\n _selectionKeys = {};\n this.$emit('node-unselect', node);\n } else {\n _selectionKeys = {};\n _selectionKeys[node.key] = true;\n this.$emit('node-select', node);\n }\n } else {\n if (selected) {\n _selectionKeys = { ...this.selectionKeys };\n delete _selectionKeys[node.key];\n\n this.$emit('node-unselect', node);\n } else {\n _selectionKeys = this.selectionKeys ? { ...this.selectionKeys } : {};\n _selectionKeys[node.key] = true;\n\n this.$emit('node-select', node);\n }\n }\n\n return _selectionKeys;\n },\n isSingleSelectionMode() {\n return this.selectionMode === 'single';\n },\n isMultipleSelectionMode() {\n return this.selectionMode === 'multiple';\n },\n isNodeSelected(node) {\n return this.selectionMode && this.selectionKeys ? this.selectionKeys[node.key] === true : false;\n },\n isChecked(node) {\n return this.selectionKeys ? this.selectionKeys[node.key] && this.selectionKeys[node.key].checked : false;\n },\n isNodeLeaf(node) {\n return node.leaf === false ? false : !(node.children && node.children.length);\n },\n onFilterKeyup(event) {\n if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n event.preventDefault();\n }\n\n this.$emit('filter', { originalEvent: event, value: event.target.value });\n },\n findFilteredNodes(node, paramsWithoutNode) {\n if (node) {\n let matched = false;\n\n if (node.children) {\n let childNodes = [...node.children];\n\n node.children = [];\n\n for (let childNode of childNodes) {\n let copyChildNode = { ...childNode };\n\n if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n matched = true;\n node.children.push(copyChildNode);\n }\n }\n }\n\n if (matched) {\n return true;\n }\n }\n },\n isFilterMatched(node, { searchFields, filterText, strict }) {\n let matched = false;\n\n for (let field of searchFields) {\n let fieldValue = String(resolveFieldData(node, field)).toLocaleLowerCase(this.filterLocale);\n\n if (fieldValue.indexOf(filterText) > -1) {\n matched = true;\n }\n }\n\n if (!matched || (strict && !this.isNodeLeaf(node))) {\n matched = this.findFilteredNodes(node, { searchFields, filterText, strict }) || matched;\n }\n\n return matched;\n },\n onNodeDrop(event) {\n this.$emit('node-drop', event);\n },\n onNodeDragEnter(event) {\n this.$emit('node-dragenter', event);\n },\n onNodeDragLeave(event) {\n this.$emit('node-dragleave', event);\n },\n onValueChanged(event) {\n this.dragNodeSubNodes.splice(this.dragNodeIndex, 1);\n this.$emit('update:value', event.nodes);\n },\n allowDrop(dragNode, dropNode, dragNodeScope) {\n if (!dragNode) {\n //prevent random html elements to be dragged\n return false;\n } else if (this.isValidDragScope(dragNodeScope)) {\n let allow = true;\n\n if (dropNode) {\n if (dragNode === dropNode) {\n allow = false;\n } else {\n let parent = dropNode.parent;\n\n while (parent != null) {\n if (parent === dragNode) {\n allow = false;\n\n break;\n }\n\n parent = parent.parent;\n }\n }\n }\n\n return allow;\n } else {\n return false;\n }\n },\n allowNodeDrop(dropNode) {\n return this.allowDrop(this.dragNode, dropNode, this.dragNodeScope);\n },\n hasCommonScope(dragScope, dropScope) {\n if (dragScope === null && dropScope === null) {\n return true;\n } else if (dragScope === null || dropScope === null) {\n return false;\n }\n\n if (typeof dropScope === 'string') {\n if (typeof dragScope === 'string') {\n return dragScope === dropScope;\n } else if (Array.isArray(dragScope)) {\n return dragScope.indexOf(dropScope) !== -1;\n }\n } else if (Array.isArray(dropScope)) {\n if (typeof dragScope === 'string') {\n return dropScope.indexOf(dragScope) !== -1;\n } else if (Array.isArray(dragScope)) {\n for (let ds of dragScope) {\n if (dropScope.indexOf(ds) !== -1) {\n return true;\n }\n }\n return false;\n }\n }\n\n return false;\n },\n isValidDragScope(dragScope) {\n if (this.droppableScope === null) {\n return true;\n }\n\n return this.hasCommonScope(dragScope, this.droppableScope);\n },\n isSameTreeScope(dragScope) {\n return this.hasCommonScope(dragScope, this.draggableScope);\n },\n onDragOver(event) {\n if (this.droppableNodes && this.allowDrop(this.dragNode, null, this.dragNodeScope)) {\n event.dataTransfer.dropEffect = 'copy';\n } else {\n event.dataTransfer.dropEffect = 'none';\n }\n\n event.preventDefault();\n },\n onDragEnter(event) {\n if (this.droppableNodes && this.allowDrop(this.dragNode, null, this.dragNodeScope)) {\n this.dragHover = true;\n\n this.$emit('drag-enter', {\n originalEvent: event,\n value: this.value,\n dragNode: this.dragNode,\n dragNodeScope: this.dragNodeScope\n });\n }\n },\n onDragLeave(event) {\n if (this.droppableNodes) {\n let rect = event.currentTarget.getBoundingClientRect();\n\n if (event.x >= parseInt(rect.right) || event.x <= parseInt(rect.left) || event.y >= parseInt(rect.bottom) || event.y <= parseInt(rect.top)) {\n this.dragHover = false;\n }\n\n this.$emit('drag-leave', {\n originalEvent: event,\n value: this.value,\n dragNode: this.dragNode,\n dragNodeScope: this.dragNodeScope\n });\n }\n },\n processTreeDrop(dragNode, dragNodeIndex) {\n this.dragNodeSubNodes.splice(dragNodeIndex, 1);\n const newValue = [...(this.value || []), dragNode];\n this.$emit('update:value', newValue);\n\n this.dragDropService.stopDrag({\n node: dragNode\n });\n },\n onDrop(event) {\n if (this.droppableNodes) {\n event.preventDefault();\n let dragNode = this.dragNode;\n\n if (this.allowDrop(dragNode, null, this.dragNodeScope)) {\n let dragNodeIndex = this.dragNodeIndex;\n\n if (this.isSameTreeScope(this.dragNodeScope)) {\n this.dragDropService.stopDrag({\n node: dragNode\n });\n\n return;\n }\n\n if (this.validateDrop) {\n this.$emit('node-drop', {\n originalEvent: event,\n value: this.value,\n dragNode: dragNode,\n dropNode: null,\n index: dragNodeIndex,\n accept: () => {\n this.processTreeDrop(dragNode, dragNodeIndex);\n }\n });\n } else {\n this.$emit('node-drop', {\n originalEvent: event,\n value: this.value,\n dragNode: dragNode,\n dropNode: null,\n index: dragNodeIndex\n });\n\n this.processTreeDrop(dragNode, dragNodeIndex);\n }\n }\n }\n }\n },\n computed: {\n filteredValue() {\n let filteredNodes = [];\n const searchFields = isFunction(this.filterBy) ? [this.filterBy] : this.filterBy.split(',');\n const filterText = this.filterValue.trim().toLocaleLowerCase(this.filterLocale);\n const strict = this.filterMode === 'strict';\n\n for (let node of this.value) {\n let _node = { ...node };\n let paramsWithoutNode = { searchFields, filterText, strict };\n\n if (\n (strict && (this.findFilteredNodes(_node, paramsWithoutNode) || this.isFilterMatched(_node, paramsWithoutNode))) ||\n (!strict && (this.isFilterMatched(_node, paramsWithoutNode) || this.findFilteredNodes(_node, paramsWithoutNode)))\n ) {\n filteredNodes.push(_node);\n }\n }\n\n return filteredNodes;\n },\n valueToRender() {\n if (this.filterValue && this.filterValue.trim().length > 0) return this.filteredValue;\n else return this.value;\n },\n empty() {\n return !this.valueToRender || this.valueToRender.length === 0;\n },\n emptyMessageText() {\n return this.$primevue.config?.locale?.emptyMessage || '';\n },\n containerDataP() {\n return cn({\n loading: this.loading,\n scrollable: this.scrollHeight === 'flex'\n });\n },\n wrapperDataP() {\n return cn({\n scrollable: this.scrollHeight === 'flex'\n });\n }\n },\n components: {\n TreeNode,\n InputText,\n InputIcon,\n IconField,\n SearchIcon,\n SpinnerIcon\n }\n};\n</script>\n","<template>\n <div :class=\"cx('root')\" @dragover=\"onDragOver\" @dragenter=\"onDragEnter\" @dragleave=\"onDragLeave\" @drop=\"onDrop\" :data-p=\"containerDataP\" v-bind=\"ptmi('root')\">\n <transition name=\"p-overlay-mask\">\n <div v-if=\"loading && loadingMode === 'mask'\" :class=\"cx('mask')\" v-bind=\"ptm('mask')\">\n <slot name=\"loadingicon\" :class=\"cx('loadingIcon')\">\n <i v-if=\"loadingIcon\" :class=\"[cx('loadingIcon'), 'pi-spin', loadingIcon]\" v-bind=\"ptm('loadingIcon')\" />\n <SpinnerIcon v-else spin :class=\"cx('loadingIcon')\" v-bind=\"ptm('loadingIcon')\" />\n </slot>\n </div>\n </transition>\n <IconField v-if=\"filter\" :unstyled=\"unstyled\" :pt=\"{ ...ptm('pcFilter'), ...ptm('pcFilterContainer') }\" :class=\"cx('pcFilterContainer')\">\n <InputText v-model=\"filterValue\" autocomplete=\"off\" :class=\"cx('pcFilterInput')\" :placeholder=\"filterPlaceholder\" :unstyled=\"unstyled\" @keyup=\"onFilterKeyup\" :pt=\"ptm('pcFilterInput')\" />\n <InputIcon :unstyled=\"unstyled\" :pt=\"ptm('pcFilterIconContainer')\">\n <!--TODO: searchicon deprecated since v4.0-->\n <slot :name=\"$slots.filtericon ? 'filtericon' : 'searchicon'\" :class=\"cx('filterIcon')\">\n <SearchIcon :class=\"cx('filterIcon')\" v-bind=\"ptm('filterIcon')\" />\n </slot>\n </InputIcon>\n </IconField>\n <div :class=\"cx('wrapper')\" :style=\"{ maxHeight: scrollHeight }\" :data-p=\"wrapperDataP\" v-bind=\"ptm('wrapper')\">\n <slot name=\"header\" :value=\"value\" :expandedKeys=\"expandedKeys\" :selectionKeys=\"selectionKeys\" />\n <ul v-if=\"!empty\" :class=\"cx('rootChildren')\" role=\"tree\" :aria-labelledby=\"ariaLabelledby\" :aria-label=\"ariaLabel\" v-bind=\"ptm('rootChildren')\">\n <TreeNode\n v-for=\"(node, index) of valueToRender\"\n :key=\"node.key\"\n :node=\"node\"\n :rootNodes=\"valueToRender\"\n :templates=\"$slots\"\n :level=\"level + 1\"\n :index=\"index\"\n :expandedKeys=\"d_expandedKeys\"\n @node-toggle=\"onNodeToggle\"\n @node-click=\"onNodeClick\"\n :selectionMode=\"selectionMode\"\n :selectionKeys=\"selectionKeys\"\n @checkbox-change=\"onCheckboxChange\"\n :loadingMode=\"loadingMode\"\n :draggableNodes=\"draggableNodes\"\n :droppableNodes=\"droppableNodes\"\n :draggableScope=\"draggableScope\"\n :validateDrop=\"validateDrop\"\n @node-drop=\"onNodeDrop\"\n @node-dragenter=\"onNodeDragEnter\"\n @node-dragleave=\"onNodeDragLeave\"\n @value-change=\"onValueChanged\"\n :unstyled=\"unstyled\"\n :pt=\"pt\"\n ></TreeNode>\n </ul>\n <div v-else-if=\"empty && !$pcTreeSelect\" :class=\"cx('emptyMessage')\" v-bind=\"ptm('emptyMessage')\">\n <slot name=\"empty\">\n {{ emptyMessageText }}\n </slot>\n </div>\n <slot name=\"footer\" :value=\"value\" :expandedKeys=\"expandedKeys\" :selectionKeys=\"selectionKeys\" />\n </div>\n </div>\n</template>\n\n<script>\nimport { cn } from '@primeuix/utils';\nimport { isFunction, resolveFieldData } from '@primeuix/utils/object';\nimport SearchIcon from '@primevue/icons/search';\nimport SpinnerIcon from '@primevue/icons/spinner';\nimport IconField from 'primevue/iconfield';\nimport InputIcon from 'primevue/inputicon';\nimport InputText from 'primevue/inputtext';\nimport BaseTree from './BaseTree.vue';\nimport { useTreeDragDropService } from './TreeDragDropService';\nimport TreeNode from './TreeNode.vue';\n\nexport default {\n name: 'Tree',\n extends: BaseTree,\n inheritAttrs: false,\n emits: ['node-expand', 'node-collapse', 'update:expandedKeys', 'update:selectionKeys', 'node-select', 'node-unselect', 'filter', 'node-drop', 'node-dragenter', 'node-dragleave', 'update:value', 'drag-enter', 'drag-leave'],\n data() {\n return {\n d_expandedKeys: this.expandedKeys || {},\n filterValue: null,\n dragNode: null,\n dragNodeSubNodes: null,\n dragNodeIndex: null,\n dragNodeScope: null,\n dragHover: null\n };\n },\n inject: {\n $pcTreeSelect: { default: null }\n },\n dragDropService: null,\n dragStartCleanup: null,\n dragStopCleanup: null,\n watch: {\n expandedKeys(newValue) {\n this.d_expandedKeys = newValue;\n }\n },\n mounted() {\n if (this.droppableNodes) {\n this.dragDropService = useTreeDragDropService();\n\n this.dragStartCleanup = this.dragDropService.onDragStart((event) => {\n this.dragNode = event.node;\n this.dragNodeSubNodes = event.subNodes;\n this.dragNodeIndex = event.index;\n this.dragNodeScope = event.scope;\n });\n\n this.dragStopCleanup = this.dragDropService.onDragStop(() => {\n this.dragNode = null;\n this.dragNodeSubNodes = null;\n this.dragNodeIndex = null;\n this.dragNodeScope = null;\n this.dragHover = false;\n });\n }\n },\n beforeUnmount() {\n if (this.dragStartCleanup) {\n this.dragStartCleanup();\n }\n\n if (this.dragStopCleanup) {\n this.dragStopCleanup();\n }\n },\n methods: {\n onNodeToggle(node) {\n const key = node.key;\n\n if (this.d_expandedKeys[key]) {\n delete this.d_expandedKeys[key];\n this.$emit('node-collapse', node);\n } else {\n this.d_expandedKeys[key] = true;\n this.$emit('node-expand', node);\n }\n\n this.d_expandedKeys = { ...this.d_expandedKeys };\n this.$emit('update:expandedKeys', this.d_expandedKeys);\n },\n onNodeClick(event) {\n if (this.selectionMode != null && event.node.selectable !== false) {\n const metaSelection = event.nodeTouched ? false : this.metaKeySelection;\n const _selectionKeys = metaSelection ? this.handleSelectionWithMetaKey(event) : this.handleSelectionWithoutMetaKey(event);\n\n this.$emit('update:selectionKeys', _selectionKeys);\n }\n },\n onCheckboxChange(event) {\n this.$emit('update:selectionKeys', event.selectionKeys);\n\n if (event.check) this.$emit('node-select', event.node);\n else this.$emit('node-unselect', event.node);\n },\n handleSelectionWithMetaKey(event) {\n const originalEvent = event.originalEvent;\n const node = event.node;\n const metaKey = originalEvent.metaKey || originalEvent.ctrlKey;\n const selected = this.isNodeSelected(node);\n let _selectionKeys;\n\n if (selected && metaKey) {\n if (this.isSingleSelectionMode()) {\n _selectionKeys = {};\n } else {\n _selectionKeys = { ...this.selectionKeys };\n delete _selectionKeys[node.key];\n }\n\n this.$emit('node-unselect', node);\n } else {\n if (this.isSingleSelectionMode()) {\n _selectionKeys = {};\n } else if (this.isMultipleSelectionMode()) {\n _selectionKeys = !metaKey ? {} : this.selectionKeys ? { ...this.selectionKeys } : {};\n }\n\n _selectionKeys[node.key] = true;\n this.$emit('node-select', node);\n }\n\n return _selectionKeys;\n },\n handleSelectionWithoutMetaKey(event) {\n const node = event.node;\n const selected = this.isNodeSelected(node);\n let _selectionKeys;\n\n if (this.isSingleSelectionMode()) {\n if (selected) {\n _selectionKeys = {};\n this.$emit('node-unselect', node);\n } else {\n _selectionKeys = {};\n _selectionKeys[node.key] = true;\n this.$emit('node-select', node);\n }\n } else {\n if (selected) {\n _selectionKeys = { ...this.selectionKeys };\n delete _selectionKeys[node.key];\n\n this.$emit('node-unselect', node);\n } else {\n _selectionKeys = this.selectionKeys ? { ...this.selectionKeys } : {};\n _selectionKeys[node.key] = true;\n\n this.$emit('node-select', node);\n }\n }\n\n return _selectionKeys;\n },\n isSingleSelectionMode() {\n return this.selectionMode === 'single';\n },\n isMultipleSelectionMode() {\n return this.selectionMode === 'multiple';\n },\n isNodeSelected(node) {\n return this.selectionMode && this.selectionKeys ? this.selectionKeys[node.key] === true : false;\n },\n isChecked(node) {\n return this.selectionKeys ? this.selectionKeys[node.key] && this.selectionKeys[node.key].checked : false;\n },\n isNodeLeaf(node) {\n return node.leaf === false ? false : !(node.children && node.children.length);\n },\n onFilterKeyup(event) {\n if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n event.preventDefault();\n }\n\n this.$emit('filter', { originalEvent: event, value: event.target.value });\n },\n findFilteredNodes(node, paramsWithoutNode) {\n if (node) {\n let matched = false;\n\n if (node.children) {\n let childNodes = [...node.children];\n\n node.children = [];\n\n for (let childNode of childNodes) {\n let copyChildNode = { ...childNode };\n\n if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n matched = true;\n node.children.push(copyChildNode);\n }\n }\n }\n\n if (matched) {\n return true;\n }\n }\n },\n isFilterMatched(node, { searchFields, filterText, strict }) {\n let matched = false;\n\n for (let field of searchFields) {\n let fieldValue = String(resolveFieldData(node, field)).toLocaleLowerCase(this.filterLocale);\n\n if (fieldValue.indexOf(filterText) > -1) {\n matched = true;\n }\n }\n\n if (!matched || (strict && !this.isNodeLeaf(node))) {\n matched = this.findFilteredNodes(node, { searchFields, filterText, strict }) || matched;\n }\n\n return matched;\n },\n onNodeDrop(event) {\n this.$emit('node-drop', event);\n },\n onNodeDragEnter(event) {\n this.$emit('node-dragenter', event);\n },\n onNodeDragLeave(event) {\n this.$emit('node-dragleave', event);\n },\n onValueChanged(event) {\n this.dragNodeSubNodes.splice(this.dragNodeIndex, 1);\n this.$emit('update:value', event.nodes);\n },\n allowDrop(dragNode, dropNode, dragNodeScope) {\n if (!dragNode) {\n //prevent random html elements to be dragged\n return false;\n } else if (this.isValidDragScope(dragNodeScope)) {\n let allow = true;\n\n if (dropNode) {\n if (dragNode === dropNode) {\n allow = false;\n } else {\n let parent = dropNode.parent;\n\n while (parent != null) {\n if (parent === dragNode) {\n allow = false;\n\n break;\n }\n\n parent = parent.parent;\n }\n }\n }\n\n return allow;\n } else {\n return false;\n }\n },\n allowNodeDrop(dropNode) {\n return this.allowDrop(this.dragNode, dropNode, this.dragNodeScope);\n },\n hasCommonScope(dragScope, dropScope) {\n if (dragScope === null && dropScope === null) {\n return true;\n } else if (dragScope === null || dropScope === null) {\n return false;\n }\n\n if (typeof dropScope === 'string') {\n if (typeof dragScope === 'string') {\n return dragScope === dropScope;\n } else if (Array.isArray(dragScope)) {\n return dragScope.indexOf(dropScope) !== -1;\n }\n } else if (Array.isArray(dropScope)) {\n if (typeof dragScope === 'string') {\n return dropScope.indexOf(dragScope) !== -1;\n } else if (Array.isArray(dragScope)) {\n for (let ds of dragScope) {\n if (dropScope.indexOf(ds) !== -1) {\n return true;\n }\n }\n return false;\n }\n }\n\n return false;\n },\n isValidDragScope(dragScope) {\n if (this.droppableScope === null) {\n return true;\n }\n\n return this.hasCommonScope(dragScope, this.droppableScope);\n },\n isSameTreeScope(dragScope) {\n return this.hasCommonScope(dragScope, this.draggableScope);\n },\n onDragOver(event) {\n if (this.droppableNodes && this.allowDrop(this.dragNode, null, this.dragNodeScope)) {\n event.dataTransfer.dropEffect = 'copy';\n } else {\n event.dataTransfer.dropEffect = 'none';\n }\n\n event.preventDefault();\n },\n onDragEnter(event) {\n if (this.droppableNodes && this.allowDrop(this.dragNode, null, this.dragNodeScope)) {\n this.dragHover = true;\n\n this.$emit('drag-enter', {\n originalEvent: event,\n value: this.value,\n dragNode: this.dragNode,\n dragNodeScope: this.dragNodeScope\n });\n }\n },\n onDragLeave(event) {\n if (this.droppableNodes) {\n let rect = event.currentTarget.getBoundingClientRect();\n\n if (event.x >= parseInt(rect.right) || event.x <= parseInt(rect.left) || event.y >= parseInt(rect.bottom) || event.y <= parseInt(rect.top)) {\n this.dragHover = false;\n }\n\n this.$emit('drag-leave', {\n originalEvent: event,\n value: this.value,\n dragNode: this.dragNode,\n dragNodeScope: this.dragNodeScope\n });\n }\n },\n processTreeDrop(dragNode, dragNodeIndex) {\n this.dragNodeSubNodes.splice(dragNodeIndex, 1);\n const newValue = [...(this.value || []), dragNode];\n this.$emit('update:value', newValue);\n\n this.dragDropService.stopDrag({\n node: dragNode\n });\n },\n onDrop(event) {\n if (this.droppableNodes) {\n event.preventDefault();\n let dragNode = this.dragNode;\n\n if (this.allowDrop(dragNode, null, this.dragNodeScope)) {\n let dragNodeIndex = this.dragNodeIndex;\n\n if (this.isSameTreeScope(this.dragNodeScope)) {\n this.dragDropService.stopDrag({\n node: dragNode\n });\n\n return;\n }\n\n if (this.validateDrop) {\n this.$emit('node-drop', {\n originalEvent: event,\n value: this.value,\n dragNode: dragNode,\n dropNode: null,\n index: dragNodeIndex,\n accept: () => {\n this.processTreeDrop(dragNode, dragNodeIndex);\n }\n });\n } else {\n this.$emit('node-drop', {\n originalEvent: event,\n value: this.value,\n dragNode: dragNode,\n dropNode: null,\n index: dragNodeIndex\n });\n\n this.processTreeDrop(dragNode, dragNodeIndex);\n }\n }\n }\n }\n },\n computed: {\n filteredValue() {\n let filteredNodes = [];\n const searchFields = isFunction(this.filterBy) ? [this.filterBy] : this.filterBy.split(',');\n const filterText = this.filterValue.trim().toLocaleLowerCase(this.filterLocale);\n const strict = this.filterMode === 'strict';\n\n for (let node of this.value) {\n let _node = { ...node };\n let paramsWithoutNode = { searchFields, filterText, strict };\n\n if (\n (strict && (this.findFilteredNodes(_node, paramsWithoutNode) || this.isFilterMatched(_node, paramsWithoutNode))) ||\n (!strict && (this.isFilterMatched(_node, paramsWithoutNode) || this.findFilteredNodes(_node, paramsWithoutNode)))\n ) {\n filteredNodes.push(_node);\n }\n }\n\n return filteredNodes;\n },\n valueToRender() {\n if (this.filterValue && this.filterValue.trim().length > 0) return this.filteredValue;\n else return this.value;\n },\n empty() {\n return !this.valueToRender || this.valueToRender.length === 0;\n },\n emptyMessageText() {\n return this.$primevue.config?.locale?.emptyMessage || '';\n },\n containerDataP() {\n return cn({\n loading: this.loading,\n scrollable: this.scrollHeight === 'flex'\n });\n },\n wrapperDataP() {\n return cn({\n scrollable: this.scrollHeight === 'flex'\n });\n }\n },\n components: {\n TreeNode,\n InputText,\n InputIcon,\n IconField,\n SearchIcon,\n SpinnerIcon\n }\n};\n</script>\n"],"names":["name","BaseComponent","props","value","type","expandedKeys","selectionKeys","selectionMode","String","metaKeySelection","Boolean","loading","loadingIcon","undefined","loadingMode","filter","filterBy","Function","filterMode","filterPlaceholder","filterLocale","highlightOnSelect","scrollHeight","level","Number","draggableNodes","droppableNodes","draggableScope","Array","droppableScope","validateDrop","ariaLabelledby","ariaLabel","style","TreeStyle","provide","$pcTree","$parentInstance","dragState","reactive","isDragging","dragNode","dragScope","dragStartHandlers","Set","dragStopHandlers","useTreeDragDropService","startDrag","event","node","scope","forEach","handler","stopDrag","onDragStart","add","onDragStop","hostName","emits","parentNode","rootNodes","Object","templates","index","nodeTouched","toggleClicked","inject","data","isPrevDropPointHovered","isNextDropPointHovered","isNodeDropHovered","mounted","setAllNodesTabIndexes","methods","toggle","$emit","label","onChildNodeToggle","getPTOptions","key","ptm","context","expanded","selected","checked","partialChecked","leaf","onClick","getAttribute","target","parentElement","isCheckboxSelectionMode","selectable","toggleCheckbox","originalEvent","onChildNodeClick","onTouchEnd","onKeyDown","isSameNode","code","onTabKey","onArrowDown","onArrowUp","onArrowRight","onArrowLeft","onEnterKey","nodeElement","closest","listElement","children","focusRowChange","nextElementSibling","nextSiblingAncestor","findNextSiblingOfAncestor","preventDefault","previousElementSibling","findLastVisibleDescendant","parentNodeElement","getParentNodeElement","_this","currentTarget","tabIndex","$nextTick","togglerElement","findSingle","click","findBeforeClickableNode","setTabIndexForSelectionMode","removeNodeFromTree","nodes","nodeToRemove","_this2","reduce","acc","length","updatedChildren","push","_objectSpread","insertNodeInSiblings","targetKey","nodeToInsert","offset","_this3","targetIndex","findIndex","n","toSpliced","map","addNodeAsChild","parentKey","_this4","concat","_toConsumableArray","insertNodeOnDrop","_this$$pcTree","dragNodeIndex","dragNodeSubNodes","dragDropService","position","dropPosition","updatedNodes","subNodes","onNodeDrop","_this5","isDroppable","stopPropagation","isValidDrop","isNodeDroppable","dropNode","accept","onNodeDragStart","isNodeDraggable","dataTransfer","effectAllowed","setData","dragEl","cloneNode","toggler","querySelector","checkbox","setAttribute","width","getOuterWidth","height","getOuterHeight","visibility","remove","document","body","appendChild","setDragImage","setTimeout","removeChild","onNodeDragOver","dropEffect","rect","getBoundingClientRect","y","clientY","top","onNodeDragEnter","onNodeDragLeave","onNodeDragEnd","_event$currentTarget","removeAttribute","find","$refs","currentNode","hasSelectedNode","some","selectedNodes","elements","every","element","firstFocusableRow","currentFocusedRow","lastVisibleDescendant","focusNode","parentListElement","prevNodeButton","_selectionKeys","_check","propagateDown","check","_iterator","_createForOfIteratorHelper","_step","s","done","child","err","e","f","propagateUp","checkedChildCount","childPartialSelected","_iterator2","_step2","onChildCheckboxChange","childrenListElement","lastChildElement","focus","computed","hasChildren","checkboxMode","ariaChecked","ariaSelected","isPrevDropPointActive","isNextDropPointActive","isDraggable","allowNodeDrop","_this$node","draggable","_this$node2","droppable","isNodeDropActive","components","Checkbox","ChevronDownIcon","ChevronRightIcon","CheckIcon","MinusIcon","SpinnerIcon","directives","ripple","Ripple","_openBlock","_createElementBlock","_mergeProps","ref","_ctx","cx","role","$options","$props","tabindex","onKeydown","apply","arguments","_createElementVNode","onTouchend","onDragstart","onDragover","onDragenter","onDragleave","onDragend","onDrop","_withDirectives","_Fragment","_createBlock","_resolveDynamicComponent","_component_SpinnerIcon","spin","expandedIcon","collapsedIcon","_component_Checkbox","defaultValue","binary","indeterminate","unstyled","pt","icon","_withCtx","slotProps","_normalizeClass","_createTextVNode","_toDisplayString","childNode","_component_TreeNode","onNodeToggle","onNodeClick","onCheckboxChange","_cache","$event","onNodeDragenter","onNodeDragleave","onValueChange","BaseTree","inheritAttrs","d_expandedKeys","filterValue","dragNodeScope","dragHover","$pcTreeSelect","dragStartCleanup","dragStopCleanup","watch","newValue","beforeUnmount","metaSelection","handleSelectionWithMetaKey","handleSelectionWithoutMetaKey","metaKey","ctrlKey","isNodeSelected","isSingleSelectionMode","isMultipleSelectionMode","isChecked","isNodeLeaf","onFilterKeyup","findFilteredNodes","paramsWithoutNode","matched","childNodes","copyChildNode","isFilterMatched","_ref","searchFields","filterText","strict","field","fieldValue","resolveFieldData","toLocaleLowerCase","indexOf","onValueChanged","splice","allowDrop","isValidDragScope","allow","parent","hasCommonScope","dropScope","isArray","_iterator3","_step3","ds","isSameTreeScope","onDragOver","onDragEnter","onDragLeave","x","parseInt","right","left","bottom","processTreeDrop","filteredValue","filteredNodes","isFunction","split","trim","_iterator4","_step4","_node","valueToRender","empty","emptyMessageText","_this$$primevue$confi","$primevue","config","locale","emptyMessage","containerDataP","cn","scrollable","wrapperDataP","TreeNode","InputText","InputIcon","IconField","SearchIcon","ptmi","_createVNode","_Transition","_renderSlot","$slots","_component_IconField","_component_InputText","$data","autocomplete","placeholder","onKeyup","_component_InputIcon","filtericon","_component_SearchIcon","_renderList"],"mappings":"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"}