{"version":3,"file":"index.mjs","sources":["../../src/tree/BaseTree.vue","../../src/tree/TreeNode.vue","../../src/tree/TreeNode.vue?vue&type=template&id=62154922&lang.js","../../src/tree/Tree.vue","../../src/tree/Tree.vue?vue&type=template&id=17d2de1e&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,\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        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","<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=\"level === 1 ? getPTOptions('node') : ptm('nodeChildren')\"\n    >\n        <div :class=\"cx('nodeContent')\" @click=\"onClick\" @touchend=\"onTouchEnd\" :style=\"node.style\" v-bind=\"getPTOptions('nodeContent')\" :data-p-selected=\"checkboxMode ? checked : selected\" :data-p-selectable=\"selectable\">\n            <button v-ripple type=\"button\" :class=\"cx('nodeToggleButton')\" @click=\"toggle\" tabindex=\"-1\" 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']\" :class=\"cx('nodeToggleIcon')\" />\n                    <SpinnerIcon v-else spin :class=\"cx('nodetogglericon')\" v-bind=\"ptm('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 v-if=\"checkboxMode\" :modelValue=\"checked\" :binary=\"true\" :indeterminate=\"partialChecked\" :class=\"cx('nodeCheckbox')\" :tabindex=\"-1\" :unstyled=\"unstyled\" :pt=\"getPTOptions('nodeCheckbox')\" :data-p-partialchecked=\"partialChecked\">\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\" :selected=\"checkboxMode ? checked : selected\" />\n                <template v-else>{{ label(node) }}</template>\n            </span>\n        </div>\n        <ul v-if=\"hasChildren && expanded\" :class=\"cx('nodeChildren')\" role=\"group\" v-bind=\"ptm('nodeChildren')\">\n            <TreeNode\n                v-for=\"childNode of node.children\"\n                :key=\"childNode.key\"\n                :node=\"childNode\"\n                :templates=\"templates\"\n                :level=\"level + 1\"\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                :unstyled=\"unstyled\"\n                :pt=\"pt\"\n            />\n        </ul>\n    </li>\n</template>\n\n<script>\nimport { find, findSingle, getAttribute } from '@primeuix/utils/dom';\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'],\n    props: {\n        node: {\n            type: null,\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        index: null\n    },\n    nodeTouched: false,\n    toggleClicked: false,\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                    index: this.index,\n                    expanded: this.expanded,\n                    selected: this.selected,\n                    checked: this.checked,\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        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    },\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=\"level === 1 ? getPTOptions('node') : ptm('nodeChildren')\"\n    >\n        <div :class=\"cx('nodeContent')\" @click=\"onClick\" @touchend=\"onTouchEnd\" :style=\"node.style\" v-bind=\"getPTOptions('nodeContent')\" :data-p-selected=\"checkboxMode ? checked : selected\" :data-p-selectable=\"selectable\">\n            <button v-ripple type=\"button\" :class=\"cx('nodeToggleButton')\" @click=\"toggle\" tabindex=\"-1\" 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']\" :class=\"cx('nodeToggleIcon')\" />\n                    <SpinnerIcon v-else spin :class=\"cx('nodetogglericon')\" v-bind=\"ptm('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 v-if=\"checkboxMode\" :modelValue=\"checked\" :binary=\"true\" :indeterminate=\"partialChecked\" :class=\"cx('nodeCheckbox')\" :tabindex=\"-1\" :unstyled=\"unstyled\" :pt=\"getPTOptions('nodeCheckbox')\" :data-p-partialchecked=\"partialChecked\">\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\" :selected=\"checkboxMode ? checked : selected\" />\n                <template v-else>{{ label(node) }}</template>\n            </span>\n        </div>\n        <ul v-if=\"hasChildren && expanded\" :class=\"cx('nodeChildren')\" role=\"group\" v-bind=\"ptm('nodeChildren')\">\n            <TreeNode\n                v-for=\"childNode of node.children\"\n                :key=\"childNode.key\"\n                :node=\"childNode\"\n                :templates=\"templates\"\n                :level=\"level + 1\"\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                :unstyled=\"unstyled\"\n                :pt=\"pt\"\n            />\n        </ul>\n    </li>\n</template>\n\n<script>\nimport { find, findSingle, getAttribute } from '@primeuix/utils/dom';\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'],\n    props: {\n        node: {\n            type: null,\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        index: null\n    },\n    nodeTouched: false,\n    toggleClicked: false,\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                    index: this.index,\n                    expanded: this.expanded,\n                    selected: this.selected,\n                    checked: this.checked,\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        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    },\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')\" v-bind=\"ptmi('root')\">\n        <template v-if=\"loading && loadingMode === 'mask'\">\n            <div :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        </template>\n        <IconField v-if=\"filter\" :unstyled=\"unstyled\" :pt=\"ptm('pcFilterContainer')\">\n            <InputText v-model=\"filterValue\" autocomplete=\"off\" :class=\"cx('pcFilter')\" :placeholder=\"filterPlaceholder\" :unstyled=\"unstyled\" @keydown=\"onFilterKeydown\" :pt=\"ptm('pcFilter')\" />\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 }\" v-bind=\"ptm('wrapper')\">\n            <ul :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                    :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                    :unstyled=\"unstyled\"\n                    :pt=\"pt\"\n                ></TreeNode>\n            </ul>\n        </div>\n    </div>\n</template>\n\n<script>\nimport { 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 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'],\n    data() {\n        return {\n            d_expandedKeys: this.expandedKeys || {},\n            filterValue: null\n        };\n    },\n    watch: {\n        expandedKeys(newValue) {\n            this.d_expandedKeys = newValue;\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        onFilterKeydown(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    },\n    computed: {\n        filteredValue() {\n            let filteredNodes = [];\n            const searchFields = 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    },\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')\" v-bind=\"ptmi('root')\">\n        <template v-if=\"loading && loadingMode === 'mask'\">\n            <div :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        </template>\n        <IconField v-if=\"filter\" :unstyled=\"unstyled\" :pt=\"ptm('pcFilterContainer')\">\n            <InputText v-model=\"filterValue\" autocomplete=\"off\" :class=\"cx('pcFilter')\" :placeholder=\"filterPlaceholder\" :unstyled=\"unstyled\" @keydown=\"onFilterKeydown\" :pt=\"ptm('pcFilter')\" />\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 }\" v-bind=\"ptm('wrapper')\">\n            <ul :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                    :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                    :unstyled=\"unstyled\"\n                    :pt=\"pt\"\n                ></TreeNode>\n            </ul>\n        </div>\n    </div>\n</template>\n\n<script>\nimport { 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 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'],\n    data() {\n        return {\n            d_expandedKeys: this.expandedKeys || {},\n            filterValue: null\n        };\n    },\n    watch: {\n        expandedKeys(newValue) {\n            this.d_expandedKeys = newValue;\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        onFilterKeydown(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    },\n    computed: {\n        filteredValue() {\n            let filteredNodes = [];\n            const searchFields = 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    },\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","filterMode","filterPlaceholder","filterLocale","highlightOnSelect","scrollHeight","level","Number","ariaLabelledby","ariaLabel","style","TreeStyle","provide","$pcTree","$parentInstance","hostName","emits","node","templates","index","nodeTouched","toggleClicked","mounted","setAllNodesTabIndexes","methods","toggle","$emit","label","onChildNodeToggle","getPTOptions","key","ptm","context","expanded","selected","checked","leaf","onClick","event","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","nodes","find","$refs","currentNode","hasSelectedNode","_toConsumableArray","some","forEach","selectedNodes","elements","every","element","firstFocusableRow","currentFocusedRow","lastVisibleDescendant","focusNode","parentListElement","prevNodeButton","visibility","_selectionKeys","_objectSpread","_check","propagateDown","check","partialChecked","length","_iterator","_createForOfIteratorHelper","_step","s","n","done","child","err","e","f","propagateUp","checkedChildCount","childPartialSelected","_iterator2","_step2","onChildCheckboxChange","childrenListElement","lastChildElement","focus","computed","hasChildren","checkboxMode","ariaChecked","ariaSelected","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","_withDirectives","_Fragment","_createBlock","_resolveDynamicComponent","_component_SpinnerIcon","spin","expandedIcon","collapsedIcon","_component_Checkbox","modelValue","binary","indeterminate","unstyled","pt","icon","_withCtx","slotProps","_normalizeClass","_createTextVNode","_toDisplayString","_renderList","childNode","_component_TreeNode","onNodeToggle","onNodeClick","onCheckboxChange","BaseTree","inheritAttrs","data","d_expandedKeys","filterValue","watch","newValue","metaSelection","handleSelectionWithMetaKey","handleSelectionWithoutMetaKey","metaKey","ctrlKey","isNodeSelected","isSingleSelectionMode","isMultipleSelectionMode","isChecked","isNodeLeaf","onFilterKeydown","findFilteredNodes","paramsWithoutNode","matched","childNodes","copyChildNode","isFilterMatched","push","_ref","searchFields","filterText","strict","field","fieldValue","resolveFieldData","toLocaleLowerCase","indexOf","filteredValue","filteredNodes","split","trim","_iterator3","_step3","_node","valueToRender","TreeNode","InputText","InputIcon","IconField","SearchIcon","ptmi","_renderSlot","$slots","_component_IconField","_createVNode","_component_InputText","$data","$event","autocomplete","placeholder","_component_InputIcon","filtericon","_component_SearchIcon"],"mappings":"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"}