{"version":3,"file":"index.mjs","sources":["../../src/treetable/BaseTreeTable.vue","../../src/datatable/ColumnFilter.vue","../../src/datatable/ColumnFilter.vue?vue&type=template&id=d560b23e&lang.js","../../src/treetable/ColumnFilter.vue","../../src/treetable/FilterHeaderCell.vue","../../src/treetable/FilterHeaderCell.vue?vue&type=template&id=a1250fa2&lang.js","../../src/treetable/FooterCell.vue","../../src/treetable/FooterCell.vue?vue&type=template&id=151e7496&lang.js","../../src/treetable/HeaderCell.vue","../../src/treetable/HeaderCell.vue?vue&type=template&id=2dfb4b14&lang.js","../../src/treetable/BodyCell.vue","../../src/treetable/BodyCell.vue?vue&type=template&id=ef37b706&lang.js","../../src/treetable/TreeTableRow.vue","../../src/treetable/TreeTableRow.vue?vue&type=template&id=0c9486e5&lang.js","../../src/treetable/TreeTable.vue","../../src/treetable/TreeTable.vue?vue&type=template&id=044e815a&lang.js"],"sourcesContent":["<script>\nimport BaseComponent from '@openvue/core/basecomponent';\nimport TreeTableStyle from 'openvue/treetable/style';\n\nexport default {\n    name: 'BaseTreeTable',\n    extends: BaseComponent,\n    props: {\n        value: {\n            type: null,\n            default: null\n        },\n        dataKey: {\n            type: [String, Function],\n            default: 'key'\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        contextMenu: {\n            type: Boolean,\n            default: false\n        },\n        contextMenuSelection: {\n            type: Object,\n            default: null\n        },\n        rows: {\n            type: Number,\n            default: 0\n        },\n        first: {\n            type: Number,\n            default: 0\n        },\n        totalRecords: {\n            type: Number,\n            default: 0\n        },\n        paginator: {\n            type: Boolean,\n            default: false\n        },\n        paginatorPosition: {\n            type: String,\n            default: 'bottom'\n        },\n        alwaysShowPaginator: {\n            type: Boolean,\n            default: true\n        },\n        paginatorTemplate: {\n            type: String,\n            default: 'FirstPageLink PrevPageLink PageLinks NextPageLink LastPageLink RowsPerPageDropdown'\n        },\n        pageLinkSize: {\n            type: Number,\n            default: 5\n        },\n        rowsPerPageOptions: {\n            type: Array,\n            default: null\n        },\n        currentPageReportTemplate: {\n            type: String,\n            default: '({currentPage} of {totalPages})'\n        },\n        lazy: {\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        rowHover: {\n            type: Boolean,\n            default: false\n        },\n        autoLayout: {\n            type: Boolean,\n            default: false\n        },\n        sortField: {\n            type: [String, Function],\n            default: null\n        },\n        sortOrder: {\n            type: Number,\n            default: null\n        },\n        defaultSortOrder: {\n            type: Number,\n            default: 1\n        },\n        multiSortMeta: {\n            type: Array,\n            default: null\n        },\n        sortMode: {\n            type: String,\n            default: 'single'\n        },\n        removableSort: {\n            type: Boolean,\n            default: false\n        },\n        filters: {\n            type: Object,\n            default: null\n        },\n        filterMode: {\n            type: String,\n            default: 'lenient'\n        },\n        filterLocale: {\n            type: String,\n            default: undefined\n        },\n        filterDisplay: {\n            type: String,\n            default: null\n        },\n        globalFilterFields: {\n            type: Array,\n            default: null\n        },\n        filterInputProps: {\n            type: null,\n            default: null\n        },\n        filterButtonProps: {\n            type: Object,\n            default() {\n                return {\n                    filter: { severity: 'secondary', text: true, rounded: true },\n                    inline: {\n                        clear: { severity: 'secondary', text: true, rounded: true }\n                    },\n                    popover: {\n                        addRule: { severity: 'info', text: true, size: 'small' },\n                        removeRule: { severity: 'danger', text: true, size: 'small' },\n                        apply: { size: 'small' },\n                        clear: { outlined: true, size: 'small' }\n                    }\n                };\n            }\n        },\n        resizableColumns: {\n            type: Boolean,\n            default: false\n        },\n        columnResizeMode: {\n            type: String,\n            default: 'fit'\n        },\n        indentation: {\n            type: Number,\n            default: 1\n        },\n        showGridlines: {\n            type: Boolean,\n            default: false\n        },\n        scrollable: {\n            type: Boolean,\n            default: false\n        },\n        scrollHeight: {\n            type: String,\n            default: null\n        },\n        size: {\n            type: String,\n            default: null\n        },\n        tableStyle: {\n            type: null,\n            default: null\n        },\n        tableClass: {\n            type: [String, Object],\n            default: null\n        },\n        tableProps: {\n            type: Object,\n            default: null\n        }\n    },\n    style: TreeTableStyle,\n    provide() {\n        return {\n            $pcTreeTable: this,\n            $parentInstance: this\n        };\n    }\n};\n</script>\n","<template>\n    <div :class=\"cx('filter')\" v-bind=\"getColumnPT('filter')\">\n        <div v-if=\"display === 'row'\" :class=\"cx('filterElementContainer')\" v-bind=\"{ ...filterInputProps, ...getColumnPT('filterElementContainer') }\">\n            <component :is=\"filterElement\" :field=\"field\" :filterModel=\"filters[field]\" :filterCallback=\"filterCallback\" />\n        </div>\n        <Button\n            v-if=\"showMenuButton\"\n            ref=\"icon\"\n            :aria-label=\"columnFilterButtonAriaLabel\"\n            aria-haspopup=\"true\"\n            :aria-expanded=\"overlayVisible\"\n            :aria-controls=\"overlayVisible ? overlayId : undefined\"\n            :class=\"cx('pcColumnFilterButton')\"\n            :unstyled=\"unstyled\"\n            @click=\"toggleMenu($event)\"\n            @keydown=\"onToggleButtonKeyDown($event)\"\n            v-bind=\"{ ...getColumnPT('pcColumnFilterButton', ptmFilterMenuParams), ...filterButtonProps.filter }\"\n        >\n            <template #icon=\"slotProps\">\n                <component :is=\"filterIconTemplate || (hasFilter() ? 'FilterFillIcon' : 'FilterIcon')\" :class=\"slotProps.class\" v-bind=\"getColumnPT('filterMenuIcon')\" />\n            </template>\n        </Button>\n        <Portal>\n            <transition name=\"p-anchored-overlay\" @enter=\"onOverlayEnter\" @after-enter=\"onOverlayAfterEnter\" @leave=\"onOverlayLeave\" @after-leave=\"onOverlayAfterLeave\" v-bind=\"getColumnPT('transition')\">\n                <div\n                    v-if=\"overlayVisible\"\n                    :ref=\"overlayRef\"\n                    :id=\"overlayId\"\n                    v-focustrap\n                    :aria-modal=\"overlayVisible\"\n                    role=\"dialog\"\n                    :class=\"[cx('filterOverlay'), filterMenuClass]\"\n                    @keydown.escape=\"hide\"\n                    @click=\"onContentClick\"\n                    @mousedown=\"onContentMouseDown\"\n                    v-bind=\"getColumnPT('filterOverlay')\"\n                >\n                    <component :is=\"filterHeaderTemplate\" :field=\"field\" :filterModel=\"filters[field]\" :filterCallback=\"filterCallback\" />\n                    <template v-if=\"display === 'row'\">\n                        <ul :class=\"cx('filterConstraintList')\" v-bind=\"getColumnPT('filterConstraintList')\">\n                            <li\n                                v-for=\"(matchMode, i) of matchModes\"\n                                :key=\"matchMode.label\"\n                                :class=\"cx('filterConstraint', { matchMode })\"\n                                @click=\"onRowMatchModeChange(matchMode.value)\"\n                                @keydown=\"onRowMatchModeKeyDown($event)\"\n                                @keydown.enter.prevent=\"onRowMatchModeChange(matchMode.value)\"\n                                :tabindex=\"i === 0 ? '0' : null\"\n                                v-bind=\"getColumnPT('filterConstraint', ptmFilterConstraintOptions(matchMode))\"\n                            >\n                                {{ matchMode.label }}\n                            </li>\n                            <li :class=\"cx('filterConstraintSeparator')\" v-bind=\"getColumnPT('filterConstraintSeparator')\"></li>\n                            <li :class=\"cx('filterConstraint')\" @click=\"clearFilter()\" @keydown=\"onRowMatchModeKeyDown($event)\" @keydown.enter=\"onRowClearItemClick()\" v-bind=\"getColumnPT('filterConstraint')\">\n                                {{ noFilterLabel }}\n                            </li>\n                        </ul>\n                    </template>\n                    <template v-else>\n                        <div v-if=\"isShowOperator\" :class=\"cx('filterOperator')\" v-bind=\"getColumnPT('filterOperator')\">\n                            <Select\n                                :options=\"operatorOptions\"\n                                :modelValue=\"operator\"\n                                :aria-label=\"filterOperatorAriaLabel\"\n                                :class=\"cx('pcFilterOperatorDropdown')\"\n                                optionLabel=\"label\"\n                                optionValue=\"value\"\n                                @update:modelValue=\"onOperatorChange($event)\"\n                                :unstyled=\"unstyled\"\n                                :pt=\"getColumnPT('pcFilterOperatorDropdown')\"\n                            ></Select>\n                        </div>\n                        <div :class=\"cx('filterRuleList')\" v-bind=\"getColumnPT('filterRuleList')\">\n                            <div v-for=\"(fieldConstraint, i) of fieldConstraints\" :key=\"i\" :class=\"cx('filterRule')\" v-bind=\"getColumnPT('filterRule')\">\n                                <Select\n                                    v-if=\"isShowMatchModes\"\n                                    :options=\"matchModes\"\n                                    :modelValue=\"fieldConstraint.matchMode\"\n                                    :class=\"cx('pcFilterConstraintDropdown')\"\n                                    optionLabel=\"label\"\n                                    optionValue=\"value\"\n                                    :aria-label=\"filterRuleAriaLabel\"\n                                    @update:modelValue=\"onMenuMatchModeChange($event, i)\"\n                                    :unstyled=\"unstyled\"\n                                    :pt=\"getColumnPT('pcFilterConstraintDropdown')\"\n                                ></Select>\n                                <component v-if=\"display === 'menu'\" :is=\"filterElement\" :field=\"field\" :filterModel=\"fieldConstraint\" :filterCallback=\"filterCallback\" :applyFilter=\"applyFilter\" />\n                                <div v-if=\"showRemoveIcon\" v-bind=\"getColumnPT('filterRemove')\">\n                                    <Button\n                                        type=\"button\"\n                                        :class=\"cx('pcFilterRemoveRuleButton')\"\n                                        @click=\"removeConstraint(i)\"\n                                        :label=\"removeRuleButtonLabel\"\n                                        :unstyled=\"unstyled\"\n                                        v-bind=\"filterButtonProps.popover.removeRule\"\n                                        :pt=\"getColumnPT('pcFilterRemoveRuleButton')\"\n                                    >\n                                        <template #icon=\"iconProps\">\n                                            <component :is=\"filterRemoveIconTemplate || 'TrashIcon'\" :class=\"iconProps.class\" v-bind=\"getColumnPT('pcFilterRemoveRuleButton')['icon']\" />\n                                        </template>\n                                    </Button>\n                                </div>\n                            </div>\n                        </div>\n                        <div v-if=\"isShowAddConstraint\" v-bind=\"getColumnPT('filterAddButtonContainer')\">\n                            <Button\n                                type=\"button\"\n                                :label=\"addRuleButtonLabel\"\n                                iconPos=\"left\"\n                                :class=\"cx('pcFilterAddRuleButton')\"\n                                @click=\"addConstraint()\"\n                                :unstyled=\"unstyled\"\n                                v-bind=\"filterButtonProps.popover.addRule\"\n                                :pt=\"getColumnPT('pcFilterAddRuleButton')\"\n                            >\n                                <template #icon=\"iconProps\">\n                                    <component :is=\"filterAddIconTemplate || 'PlusIcon'\" :class=\"iconProps.class\" v-bind=\"getColumnPT('pcFilterAddRuleButton')['icon']\" />\n                                </template>\n                            </Button>\n                        </div>\n                        <div :class=\"cx('filterButtonbar')\" v-bind=\"getColumnPT('filterButtonbar')\">\n                            <Button\n                                v-if=\"!filterClearTemplate && showClearButton\"\n                                type=\"button\"\n                                :class=\"cx('pcFilterClearButton')\"\n                                :label=\"clearButtonLabel\"\n                                @click=\"clearFilter()\"\n                                :unstyled=\"unstyled\"\n                                v-bind=\"filterButtonProps.popover.clear\"\n                                :pt=\"getColumnPT('pcFilterClearButton')\"\n                            ></Button>\n                            <component v-else :is=\"filterClearTemplate\" :field=\"field\" :filterModel=\"filters[field]\" :filterCallback=\"clearFilter\" />\n                            <template v-if=\"showApplyButton\">\n                                <Button\n                                    v-if=\"!filterApplyTemplate\"\n                                    type=\"button\"\n                                    :class=\"cx('pcFilterApplyButton')\"\n                                    :label=\"applyButtonLabel\"\n                                    @click=\"applyFilter()\"\n                                    :unstyled=\"unstyled\"\n                                    v-bind=\"filterButtonProps.popover.apply\"\n                                    :pt=\"getColumnPT('pcFilterApplyButton')\"\n                                ></Button>\n                                <component v-else :is=\"filterApplyTemplate\" :field=\"field\" :filterModel=\"filters[field]\" :filterCallback=\"applyFilter\" />\n                            </template>\n                        </div>\n                    </template>\n                    <component :is=\"filterFooterTemplate\" :field=\"field\" :filterModel=\"filters[field]\" :filterCallback=\"filterCallback\" />\n                </div>\n            </transition>\n        </Portal>\n    </div>\n</template>\n\n<script>\nimport { absolutePosition, addStyle, focus, getAttribute, isTouchDevice } from '@openuxkit/utils/dom';\nimport { ZIndex } from '@openuxkit/utils/zindex';\nimport { FilterOperator } from '@openvue/core/api';\nimport BaseComponent from '@openvue/core/basecomponent';\nimport { ConnectedOverlayScrollHandler } from '@openvue/core/utils';\nimport FilterIcon from '@openvue/icons/filter';\nimport FilterFillIcon from '@openvue/icons/filterfill';\nimport FilterSlashIcon from '@openvue/icons/filterslash';\nimport PlusIcon from '@openvue/icons/plus';\nimport TrashIcon from '@openvue/icons/trash';\nimport Button from 'openvue/button';\nimport FocusTrap from 'openvue/focustrap';\nimport OverlayEventBus from 'openvue/overlayeventbus';\nimport Portal from 'openvue/portal';\nimport Select from 'openvue/select';\nimport { mergeProps } from 'vue';\n\nexport default {\n    name: 'ColumnFilter',\n    hostName: 'DataTable',\n    extends: BaseComponent,\n    emits: ['filter-change', 'filter-apply', 'operator-change', 'matchmode-change', 'constraint-add', 'constraint-remove', 'filter-clear', 'apply-click'],\n    props: {\n        field: {\n            type: String,\n            default: null\n        },\n        type: {\n            type: String,\n            default: 'text'\n        },\n        display: {\n            type: String,\n            default: null\n        },\n        showMenu: {\n            type: Boolean,\n            default: true\n        },\n        matchMode: {\n            type: String,\n            default: null\n        },\n        showOperator: {\n            type: Boolean,\n            default: true\n        },\n        showClearButton: {\n            type: Boolean,\n            default: true\n        },\n        showApplyButton: {\n            type: Boolean,\n            default: true\n        },\n        showMatchModes: {\n            type: Boolean,\n            default: true\n        },\n        showAddButton: {\n            type: Boolean,\n            default: true\n        },\n        matchModeOptions: {\n            type: Array,\n            default: null\n        },\n        maxConstraints: {\n            type: Number,\n            default: 2\n        },\n        filterElement: {\n            type: Function,\n            default: null\n        },\n        filterHeaderTemplate: {\n            type: Function,\n            default: null\n        },\n        filterFooterTemplate: {\n            type: Function,\n            default: null\n        },\n        filterClearTemplate: {\n            type: Function,\n            default: null\n        },\n        filterApplyTemplate: {\n            type: Function,\n            default: null\n        },\n        filterIconTemplate: {\n            type: Function,\n            default: null\n        },\n        filterAddIconTemplate: {\n            type: Function,\n            default: null\n        },\n        filterRemoveIconTemplate: {\n            type: Function,\n            default: null\n        },\n        filterClearIconTemplate: {\n            type: Function,\n            default: null\n        },\n        filters: {\n            type: Object,\n            default: null\n        },\n        filtersStore: {\n            type: Object,\n            default: null\n        },\n        filterMenuClass: {\n            type: String,\n            default: null\n        },\n        filterMenuStyle: {\n            type: null,\n            default: null\n        },\n        filterInputProps: {\n            type: null,\n            default: null\n        },\n        filterButtonProps: {\n            type: null,\n            default: null\n        },\n        column: null\n    },\n    data() {\n        return {\n            overlayVisible: false,\n            defaultMatchMode: null,\n            defaultOperator: null\n        };\n    },\n    overlay: null,\n    selfClick: false,\n    overlayEventListener: null,\n    beforeUnmount() {\n        if (this.overlayEventListener) {\n            OverlayEventBus.off('overlay-click', this.overlayEventListener);\n            this.overlayEventListener = null;\n        }\n\n        if (this.overlay) {\n            ZIndex.clear(this.overlay);\n            this.onOverlayHide();\n        }\n    },\n    mounted() {\n        if (this.filters && this.filters[this.field]) {\n            let fieldFilters = this.filters[this.field];\n\n            if (fieldFilters.operator) {\n                this.defaultMatchMode = fieldFilters.constraints[0].matchMode;\n                this.defaultOperator = fieldFilters.operator;\n            } else {\n                this.defaultMatchMode = this.filters[this.field].matchMode;\n            }\n        }\n    },\n    methods: {\n        getColumnPT(key, params) {\n            const columnMetaData = {\n                props: this.column.props,\n                parent: {\n                    instance: this,\n                    props: this.$props,\n                    state: this.$data\n                },\n                ...params\n            };\n\n            return mergeProps(this.ptm(`column.${key}`, { column: columnMetaData }), this.ptm(`column.${key}`, columnMetaData), this.ptmo(this.getColumnProp(), key, columnMetaData));\n        },\n        getColumnProp() {\n            return this.column.props && this.column.props.pt ? this.column.props.pt : undefined;\n        },\n        ptmFilterConstraintOptions(matchMode) {\n            return {\n                context: {\n                    highlighted: matchMode && this.isRowMatchModeSelected(matchMode.value)\n                }\n            };\n        },\n        clearFilter() {\n            let _filters = { ...this.filters };\n\n            if (_filters[this.field].operator) {\n                _filters[this.field].constraints.splice(1);\n                _filters[this.field].operator = this.defaultOperator;\n                _filters[this.field].constraints[0] = { value: null, matchMode: this.defaultMatchMode };\n            } else {\n                _filters[this.field].value = null;\n                _filters[this.field].matchMode = this.defaultMatchMode;\n            }\n\n            this.$emit('filter-clear');\n            this.$emit('filter-change', _filters);\n            this.$emit('filter-apply');\n            this.hide();\n        },\n        applyFilter() {\n            this.$emit('apply-click', { field: this.field, constraints: this.filters[this.field] });\n            this.$emit('filter-apply');\n            this.hide();\n        },\n        hasFilter() {\n            if (this.filtersStore) {\n                let fieldFilter = this.filtersStore[this.field];\n\n                if (fieldFilter) {\n                    if (fieldFilter.operator) return !this.isFilterBlank(fieldFilter.constraints[0].value);\n                    else return !this.isFilterBlank(fieldFilter.value);\n                }\n            }\n\n            return false;\n        },\n        hasRowFilter() {\n            return this.filters[this.field] && !this.isFilterBlank(this.filters[this.field].value);\n        },\n        isFilterBlank(filter) {\n            if (filter !== null && filter !== undefined) {\n                if ((typeof filter === 'string' && filter.trim().length == 0) || (filter instanceof Array && filter.length == 0)) return true;\n                else return false;\n            }\n\n            return true;\n        },\n        toggleMenu(event) {\n            this.overlayVisible = !this.overlayVisible;\n\n            event.preventDefault();\n        },\n        onToggleButtonKeyDown(event) {\n            switch (event.code) {\n                case 'Enter':\n                case 'NumpadEnter':\n                case 'Space':\n                    this.toggleMenu(event);\n\n                    break;\n\n                case 'Escape':\n                    this.overlayVisible = false;\n                    break;\n            }\n        },\n        onRowMatchModeChange(matchMode) {\n            let _filters = { ...this.filters };\n\n            _filters[this.field].matchMode = matchMode;\n            this.$emit('matchmode-change', { field: this.field, matchMode: matchMode });\n            this.$emit('filter-change', _filters);\n            this.$emit('filter-apply');\n            this.hide();\n        },\n        onRowMatchModeKeyDown(event) {\n            let item = event.target;\n\n            switch (event.code) {\n                case 'ArrowDown':\n                    var nextItem = this.findNextItem(item);\n\n                    if (nextItem) {\n                        item.removeAttribute('tabindex');\n                        nextItem.tabIndex = '0';\n                        nextItem.focus();\n                    }\n\n                    event.preventDefault();\n                    break;\n\n                case 'ArrowUp':\n                    var prevItem = this.findPrevItem(item);\n\n                    if (prevItem) {\n                        item.removeAttribute('tabindex');\n                        prevItem.tabIndex = '0';\n                        prevItem.focus();\n                    }\n\n                    event.preventDefault();\n                    break;\n            }\n        },\n        isRowMatchModeSelected(matchMode) {\n            return this.filters[this.field].matchMode === matchMode;\n        },\n        onOperatorChange(value) {\n            let _filters = { ...this.filters };\n\n            _filters[this.field].operator = value;\n            this.$emit('filter-change', _filters);\n\n            this.$emit('operator-change', { field: this.field, operator: value });\n\n            if (!this.showApplyButton) {\n                this.$emit('filter-apply');\n            }\n        },\n        onMenuMatchModeChange(value, index) {\n            let _filters = { ...this.filters };\n\n            _filters[this.field].constraints[index].matchMode = value;\n            this.$emit('matchmode-change', { field: this.field, matchMode: value, index: index });\n\n            if (!this.showApplyButton) {\n                this.$emit('filter-apply');\n            }\n        },\n        addConstraint() {\n            let _filters = { ...this.filters };\n            let newConstraint = { value: null, matchMode: this.defaultMatchMode };\n\n            _filters[this.field].constraints.push(newConstraint);\n            this.$emit('constraint-add', { field: this.field, constraint: newConstraint });\n            this.$emit('filter-change', _filters);\n\n            if (!this.showApplyButton) {\n                this.$emit('filter-apply');\n            }\n        },\n        removeConstraint(index) {\n            let _filters = { ...this.filters };\n            let removedConstraint = _filters[this.field].constraints.splice(index, 1);\n\n            this.$emit('constraint-remove', { field: this.field, constraint: removedConstraint });\n            this.$emit('filter-change', _filters);\n\n            if (!this.showApplyButton) {\n                this.$emit('filter-apply');\n            }\n        },\n        filterCallback() {\n            this.$emit('filter-apply');\n        },\n        findNextItem(item) {\n            let nextItem = item.nextElementSibling;\n\n            if (nextItem) return getAttribute(nextItem, 'data-pc-section') === 'filterconstraintseparator' ? this.findNextItem(nextItem) : nextItem;\n            else return item.parentElement.firstElementChild;\n        },\n        findPrevItem(item) {\n            let prevItem = item.previousElementSibling;\n\n            if (prevItem) return getAttribute(prevItem, 'data-pc-section') === 'filterconstraintseparator' ? this.findPrevItem(prevItem) : prevItem;\n            else return item.parentElement.lastElementChild;\n        },\n        hide() {\n            this.overlayVisible = false;\n\n            this.showMenuButton && focus(this.$refs.icon.$el);\n        },\n        onContentClick(event) {\n            this.selfClick = true;\n\n            OverlayEventBus.emit('overlay-click', {\n                originalEvent: event,\n                target: this.overlay\n            });\n\n            this.selfClick = false;\n        },\n        onContentMouseDown() {\n            this.selfClick = true;\n        },\n        onOverlayEnter(el) {\n            if (this.filterMenuStyle) {\n                addStyle(this.overlay, this.filterMenuStyle);\n            }\n\n            ZIndex.set('overlay', el, this.$primevue.config.zIndex.overlay);\n            addStyle(el, { position: 'absolute', top: '0' });\n            absolutePosition(this.overlay, this.$refs.icon.$el);\n            this.bindOutsideClickListener();\n            this.bindScrollListener();\n            this.bindResizeListener();\n\n            this.overlayEventListener = (e) => {\n                if (!this.isOutsideClicked(e.target)) {\n                    this.selfClick = true;\n                }\n            };\n\n            OverlayEventBus.on('overlay-click', this.overlayEventListener);\n        },\n        onOverlayAfterEnter() {\n            this.overlay?.$focustrap?.autoFocus();\n        },\n        onOverlayLeave() {\n            this.onOverlayHide();\n        },\n        onOverlayAfterLeave(el) {\n            ZIndex.clear(el);\n        },\n        onOverlayHide() {\n            this.unbindOutsideClickListener();\n            this.unbindResizeListener();\n            this.unbindScrollListener();\n            this.overlay = null;\n            OverlayEventBus.off('overlay-click', this.overlayEventListener);\n            this.overlayEventListener = null;\n        },\n        overlayRef(el) {\n            this.overlay = el;\n        },\n        isOutsideClicked(target) {\n            return !this.isTargetClicked(target) && this.overlay && !(this.overlay.isSameNode(target) || this.overlay.contains(target) || this.isNestedOverlayClicked(target));\n        },\n        isNestedOverlayClicked(target) {\n            let node = target;\n\n            while (node && node !== document.body) {\n                const attrSelectors = [...(node.attributes || [])].filter((attr) => attr.value === '' && /^pc\\w+$/.test(attr.name)).map((attr) => attr.name);\n\n                if (attrSelectors.some((attrSelector) => this.overlay.querySelector(`[${attrSelector}]`))) return true;\n\n                node = node.parentElement;\n            }\n\n            return false;\n        },\n        isTargetClicked(target) {\n            return this.$refs.icon && (this.$refs.icon.$el.isSameNode(target) || this.$refs.icon.$el.contains(target));\n        },\n        bindOutsideClickListener() {\n            if (!this.outsideClickListener) {\n                this.outsideClickListener = (event) => {\n                    if (this.overlayVisible && !this.selfClick && this.isOutsideClicked(event.target)) {\n                        this.overlayVisible = false;\n                    }\n\n                    this.selfClick = false;\n                };\n\n                document.addEventListener('click', this.outsideClickListener, true);\n            }\n        },\n        unbindOutsideClickListener() {\n            if (this.outsideClickListener) {\n                document.removeEventListener('click', this.outsideClickListener, true);\n                this.outsideClickListener = null;\n                this.selfClick = false;\n            }\n        },\n        bindScrollListener() {\n            if (!this.scrollHandler) {\n                this.scrollHandler = new ConnectedOverlayScrollHandler(this.$refs.icon.$el, () => {\n                    if (this.overlayVisible) {\n                        this.hide();\n                    }\n                });\n            }\n\n            this.scrollHandler.bindScrollListener();\n        },\n        unbindScrollListener() {\n            if (this.scrollHandler) {\n                this.scrollHandler.unbindScrollListener();\n            }\n        },\n        bindResizeListener() {\n            if (!this.resizeListener) {\n                this.resizeListener = () => {\n                    if (this.overlayVisible && !isTouchDevice()) {\n                        this.hide();\n                    }\n                };\n\n                window.addEventListener('resize', this.resizeListener);\n            }\n        },\n        unbindResizeListener() {\n            if (this.resizeListener) {\n                window.removeEventListener('resize', this.resizeListener);\n                this.resizeListener = null;\n            }\n        }\n    },\n    computed: {\n        showMenuButton() {\n            return this.showMenu && (this.display === 'row' ? this.type !== 'boolean' : true);\n        },\n        overlayId() {\n            return this.$id + '_overlay';\n        },\n        matchModes() {\n            return (\n                this.matchModeOptions ||\n                this.$primevue.config.filterMatchModeOptions[this.type].map((key) => {\n                    return { label: this.$primevue.config.locale[key], value: key };\n                })\n            );\n        },\n        isShowMatchModes() {\n            return this.type !== 'boolean' && this.showMatchModes && this.matchModes;\n        },\n        operatorOptions() {\n            return [\n                { label: this.$primevue.config.locale.matchAll, value: FilterOperator.AND },\n                { label: this.$primevue.config.locale.matchAny, value: FilterOperator.OR }\n            ];\n        },\n        noFilterLabel() {\n            return this.$primevue.config.locale ? this.$primevue.config.locale.noFilter : undefined;\n        },\n        isShowOperator() {\n            return this.showOperator && this.filters[this.field].operator;\n        },\n        operator() {\n            return this.filters[this.field].operator;\n        },\n        fieldConstraints() {\n            return this.filters[this.field].constraints || [this.filters[this.field]];\n        },\n        showRemoveIcon() {\n            return this.fieldConstraints.length > 1;\n        },\n        removeRuleButtonLabel() {\n            return this.$primevue.config.locale ? this.$primevue.config.locale.removeRule : undefined;\n        },\n        addRuleButtonLabel() {\n            return this.$primevue.config.locale ? this.$primevue.config.locale.addRule : undefined;\n        },\n        isShowAddConstraint() {\n            return this.showAddButton && this.filters[this.field].operator && this.fieldConstraints && this.fieldConstraints.length < this.maxConstraints;\n        },\n        clearButtonLabel() {\n            return this.$primevue.config.locale ? this.$primevue.config.locale.clear : undefined;\n        },\n        applyButtonLabel() {\n            return this.$primevue.config.locale ? this.$primevue.config.locale.apply : undefined;\n        },\n        columnFilterButtonAriaLabel() {\n            return this.$primevue.config.locale?.aria ? (this.overlayVisible ? this.$primevue.config.locale.aria.hideFilterMenu : this.$primevue.config.locale.aria.showFilterMenu) : undefined;\n        },\n        filterOperatorAriaLabel() {\n            return this.$primevue.config.locale ? this.$primevue.config.locale.filterOperator : undefined;\n        },\n        filterRuleAriaLabel() {\n            return this.$primevue.config.locale ? this.$primevue.config.locale.filterConstraint : undefined;\n        },\n        ptmHeaderFilterClearParams() {\n            return {\n                context: {\n                    hidden: this.hasRowFilter()\n                }\n            };\n        },\n        ptmFilterMenuParams() {\n            return {\n                context: {\n                    overlayVisible: this.overlayVisible,\n                    active: this.hasFilter()\n                }\n            };\n        }\n    },\n    components: {\n        Select,\n        Button,\n        Portal,\n        FilterSlashIcon,\n        FilterFillIcon,\n        FilterIcon,\n        TrashIcon,\n        PlusIcon\n    },\n    directives: {\n        focustrap: FocusTrap\n    }\n};\n</script>\n","<template>\n    <div :class=\"cx('filter')\" v-bind=\"getColumnPT('filter')\">\n        <div v-if=\"display === 'row'\" :class=\"cx('filterElementContainer')\" v-bind=\"{ ...filterInputProps, ...getColumnPT('filterElementContainer') }\">\n            <component :is=\"filterElement\" :field=\"field\" :filterModel=\"filters[field]\" :filterCallback=\"filterCallback\" />\n        </div>\n        <Button\n            v-if=\"showMenuButton\"\n            ref=\"icon\"\n            :aria-label=\"columnFilterButtonAriaLabel\"\n            aria-haspopup=\"true\"\n            :aria-expanded=\"overlayVisible\"\n            :aria-controls=\"overlayVisible ? overlayId : undefined\"\n            :class=\"cx('pcColumnFilterButton')\"\n            :unstyled=\"unstyled\"\n            @click=\"toggleMenu($event)\"\n            @keydown=\"onToggleButtonKeyDown($event)\"\n            v-bind=\"{ ...getColumnPT('pcColumnFilterButton', ptmFilterMenuParams), ...filterButtonProps.filter }\"\n        >\n            <template #icon=\"slotProps\">\n                <component :is=\"filterIconTemplate || (hasFilter() ? 'FilterFillIcon' : 'FilterIcon')\" :class=\"slotProps.class\" v-bind=\"getColumnPT('filterMenuIcon')\" />\n            </template>\n        </Button>\n        <Portal>\n            <transition name=\"p-anchored-overlay\" @enter=\"onOverlayEnter\" @after-enter=\"onOverlayAfterEnter\" @leave=\"onOverlayLeave\" @after-leave=\"onOverlayAfterLeave\" v-bind=\"getColumnPT('transition')\">\n                <div\n                    v-if=\"overlayVisible\"\n                    :ref=\"overlayRef\"\n                    :id=\"overlayId\"\n                    v-focustrap\n                    :aria-modal=\"overlayVisible\"\n                    role=\"dialog\"\n                    :class=\"[cx('filterOverlay'), filterMenuClass]\"\n                    @keydown.escape=\"hide\"\n                    @click=\"onContentClick\"\n                    @mousedown=\"onContentMouseDown\"\n                    v-bind=\"getColumnPT('filterOverlay')\"\n                >\n                    <component :is=\"filterHeaderTemplate\" :field=\"field\" :filterModel=\"filters[field]\" :filterCallback=\"filterCallback\" />\n                    <template v-if=\"display === 'row'\">\n                        <ul :class=\"cx('filterConstraintList')\" v-bind=\"getColumnPT('filterConstraintList')\">\n                            <li\n                                v-for=\"(matchMode, i) of matchModes\"\n                                :key=\"matchMode.label\"\n                                :class=\"cx('filterConstraint', { matchMode })\"\n                                @click=\"onRowMatchModeChange(matchMode.value)\"\n                                @keydown=\"onRowMatchModeKeyDown($event)\"\n                                @keydown.enter.prevent=\"onRowMatchModeChange(matchMode.value)\"\n                                :tabindex=\"i === 0 ? '0' : null\"\n                                v-bind=\"getColumnPT('filterConstraint', ptmFilterConstraintOptions(matchMode))\"\n                            >\n                                {{ matchMode.label }}\n                            </li>\n                            <li :class=\"cx('filterConstraintSeparator')\" v-bind=\"getColumnPT('filterConstraintSeparator')\"></li>\n                            <li :class=\"cx('filterConstraint')\" @click=\"clearFilter()\" @keydown=\"onRowMatchModeKeyDown($event)\" @keydown.enter=\"onRowClearItemClick()\" v-bind=\"getColumnPT('filterConstraint')\">\n                                {{ noFilterLabel }}\n                            </li>\n                        </ul>\n                    </template>\n                    <template v-else>\n                        <div v-if=\"isShowOperator\" :class=\"cx('filterOperator')\" v-bind=\"getColumnPT('filterOperator')\">\n                            <Select\n                                :options=\"operatorOptions\"\n                                :modelValue=\"operator\"\n                                :aria-label=\"filterOperatorAriaLabel\"\n                                :class=\"cx('pcFilterOperatorDropdown')\"\n                                optionLabel=\"label\"\n                                optionValue=\"value\"\n                                @update:modelValue=\"onOperatorChange($event)\"\n                                :unstyled=\"unstyled\"\n                                :pt=\"getColumnPT('pcFilterOperatorDropdown')\"\n                            ></Select>\n                        </div>\n                        <div :class=\"cx('filterRuleList')\" v-bind=\"getColumnPT('filterRuleList')\">\n                            <div v-for=\"(fieldConstraint, i) of fieldConstraints\" :key=\"i\" :class=\"cx('filterRule')\" v-bind=\"getColumnPT('filterRule')\">\n                                <Select\n                                    v-if=\"isShowMatchModes\"\n                                    :options=\"matchModes\"\n                                    :modelValue=\"fieldConstraint.matchMode\"\n                                    :class=\"cx('pcFilterConstraintDropdown')\"\n                                    optionLabel=\"label\"\n                                    optionValue=\"value\"\n                                    :aria-label=\"filterRuleAriaLabel\"\n                                    @update:modelValue=\"onMenuMatchModeChange($event, i)\"\n                                    :unstyled=\"unstyled\"\n                                    :pt=\"getColumnPT('pcFilterConstraintDropdown')\"\n                                ></Select>\n                                <component v-if=\"display === 'menu'\" :is=\"filterElement\" :field=\"field\" :filterModel=\"fieldConstraint\" :filterCallback=\"filterCallback\" :applyFilter=\"applyFilter\" />\n                                <div v-if=\"showRemoveIcon\" v-bind=\"getColumnPT('filterRemove')\">\n                                    <Button\n                                        type=\"button\"\n                                        :class=\"cx('pcFilterRemoveRuleButton')\"\n                                        @click=\"removeConstraint(i)\"\n                                        :label=\"removeRuleButtonLabel\"\n                                        :unstyled=\"unstyled\"\n                                        v-bind=\"filterButtonProps.popover.removeRule\"\n                                        :pt=\"getColumnPT('pcFilterRemoveRuleButton')\"\n                                    >\n                                        <template #icon=\"iconProps\">\n                                            <component :is=\"filterRemoveIconTemplate || 'TrashIcon'\" :class=\"iconProps.class\" v-bind=\"getColumnPT('pcFilterRemoveRuleButton')['icon']\" />\n                                        </template>\n                                    </Button>\n                                </div>\n                            </div>\n                        </div>\n                        <div v-if=\"isShowAddConstraint\" v-bind=\"getColumnPT('filterAddButtonContainer')\">\n                            <Button\n                                type=\"button\"\n                                :label=\"addRuleButtonLabel\"\n                                iconPos=\"left\"\n                                :class=\"cx('pcFilterAddRuleButton')\"\n                                @click=\"addConstraint()\"\n                                :unstyled=\"unstyled\"\n                                v-bind=\"filterButtonProps.popover.addRule\"\n                                :pt=\"getColumnPT('pcFilterAddRuleButton')\"\n                            >\n                                <template #icon=\"iconProps\">\n                                    <component :is=\"filterAddIconTemplate || 'PlusIcon'\" :class=\"iconProps.class\" v-bind=\"getColumnPT('pcFilterAddRuleButton')['icon']\" />\n                                </template>\n                            </Button>\n                        </div>\n                        <div :class=\"cx('filterButtonbar')\" v-bind=\"getColumnPT('filterButtonbar')\">\n                            <Button\n                                v-if=\"!filterClearTemplate && showClearButton\"\n                                type=\"button\"\n                                :class=\"cx('pcFilterClearButton')\"\n                                :label=\"clearButtonLabel\"\n                                @click=\"clearFilter()\"\n                                :unstyled=\"unstyled\"\n                                v-bind=\"filterButtonProps.popover.clear\"\n                                :pt=\"getColumnPT('pcFilterClearButton')\"\n                            ></Button>\n                            <component v-else :is=\"filterClearTemplate\" :field=\"field\" :filterModel=\"filters[field]\" :filterCallback=\"clearFilter\" />\n                            <template v-if=\"showApplyButton\">\n                                <Button\n                                    v-if=\"!filterApplyTemplate\"\n                                    type=\"button\"\n                                    :class=\"cx('pcFilterApplyButton')\"\n                                    :label=\"applyButtonLabel\"\n                                    @click=\"applyFilter()\"\n                                    :unstyled=\"unstyled\"\n                                    v-bind=\"filterButtonProps.popover.apply\"\n                                    :pt=\"getColumnPT('pcFilterApplyButton')\"\n                                ></Button>\n                                <component v-else :is=\"filterApplyTemplate\" :field=\"field\" :filterModel=\"filters[field]\" :filterCallback=\"applyFilter\" />\n                            </template>\n                        </div>\n                    </template>\n                    <component :is=\"filterFooterTemplate\" :field=\"field\" :filterModel=\"filters[field]\" :filterCallback=\"filterCallback\" />\n                </div>\n            </transition>\n        </Portal>\n    </div>\n</template>\n\n<script>\nimport { absolutePosition, addStyle, focus, getAttribute, isTouchDevice } from '@openuxkit/utils/dom';\nimport { ZIndex } from '@openuxkit/utils/zindex';\nimport { FilterOperator } from '@openvue/core/api';\nimport BaseComponent from '@openvue/core/basecomponent';\nimport { ConnectedOverlayScrollHandler } from '@openvue/core/utils';\nimport FilterIcon from '@openvue/icons/filter';\nimport FilterFillIcon from '@openvue/icons/filterfill';\nimport FilterSlashIcon from '@openvue/icons/filterslash';\nimport PlusIcon from '@openvue/icons/plus';\nimport TrashIcon from '@openvue/icons/trash';\nimport Button from 'openvue/button';\nimport FocusTrap from 'openvue/focustrap';\nimport OverlayEventBus from 'openvue/overlayeventbus';\nimport Portal from 'openvue/portal';\nimport Select from 'openvue/select';\nimport { mergeProps } from 'vue';\n\nexport default {\n    name: 'ColumnFilter',\n    hostName: 'DataTable',\n    extends: BaseComponent,\n    emits: ['filter-change', 'filter-apply', 'operator-change', 'matchmode-change', 'constraint-add', 'constraint-remove', 'filter-clear', 'apply-click'],\n    props: {\n        field: {\n            type: String,\n            default: null\n        },\n        type: {\n            type: String,\n            default: 'text'\n        },\n        display: {\n            type: String,\n            default: null\n        },\n        showMenu: {\n            type: Boolean,\n            default: true\n        },\n        matchMode: {\n            type: String,\n            default: null\n        },\n        showOperator: {\n            type: Boolean,\n            default: true\n        },\n        showClearButton: {\n            type: Boolean,\n            default: true\n        },\n        showApplyButton: {\n            type: Boolean,\n            default: true\n        },\n        showMatchModes: {\n            type: Boolean,\n            default: true\n        },\n        showAddButton: {\n            type: Boolean,\n            default: true\n        },\n        matchModeOptions: {\n            type: Array,\n            default: null\n        },\n        maxConstraints: {\n            type: Number,\n            default: 2\n        },\n        filterElement: {\n            type: Function,\n            default: null\n        },\n        filterHeaderTemplate: {\n            type: Function,\n            default: null\n        },\n        filterFooterTemplate: {\n            type: Function,\n            default: null\n        },\n        filterClearTemplate: {\n            type: Function,\n            default: null\n        },\n        filterApplyTemplate: {\n            type: Function,\n            default: null\n        },\n        filterIconTemplate: {\n            type: Function,\n            default: null\n        },\n        filterAddIconTemplate: {\n            type: Function,\n            default: null\n        },\n        filterRemoveIconTemplate: {\n            type: Function,\n            default: null\n        },\n        filterClearIconTemplate: {\n            type: Function,\n            default: null\n        },\n        filters: {\n            type: Object,\n            default: null\n        },\n        filtersStore: {\n            type: Object,\n            default: null\n        },\n        filterMenuClass: {\n            type: String,\n            default: null\n        },\n        filterMenuStyle: {\n            type: null,\n            default: null\n        },\n        filterInputProps: {\n            type: null,\n            default: null\n        },\n        filterButtonProps: {\n            type: null,\n            default: null\n        },\n        column: null\n    },\n    data() {\n        return {\n            overlayVisible: false,\n            defaultMatchMode: null,\n            defaultOperator: null\n        };\n    },\n    overlay: null,\n    selfClick: false,\n    overlayEventListener: null,\n    beforeUnmount() {\n        if (this.overlayEventListener) {\n            OverlayEventBus.off('overlay-click', this.overlayEventListener);\n            this.overlayEventListener = null;\n        }\n\n        if (this.overlay) {\n            ZIndex.clear(this.overlay);\n            this.onOverlayHide();\n        }\n    },\n    mounted() {\n        if (this.filters && this.filters[this.field]) {\n            let fieldFilters = this.filters[this.field];\n\n            if (fieldFilters.operator) {\n                this.defaultMatchMode = fieldFilters.constraints[0].matchMode;\n                this.defaultOperator = fieldFilters.operator;\n            } else {\n                this.defaultMatchMode = this.filters[this.field].matchMode;\n            }\n        }\n    },\n    methods: {\n        getColumnPT(key, params) {\n            const columnMetaData = {\n                props: this.column.props,\n                parent: {\n                    instance: this,\n                    props: this.$props,\n                    state: this.$data\n                },\n                ...params\n            };\n\n            return mergeProps(this.ptm(`column.${key}`, { column: columnMetaData }), this.ptm(`column.${key}`, columnMetaData), this.ptmo(this.getColumnProp(), key, columnMetaData));\n        },\n        getColumnProp() {\n            return this.column.props && this.column.props.pt ? this.column.props.pt : undefined;\n        },\n        ptmFilterConstraintOptions(matchMode) {\n            return {\n                context: {\n                    highlighted: matchMode && this.isRowMatchModeSelected(matchMode.value)\n                }\n            };\n        },\n        clearFilter() {\n            let _filters = { ...this.filters };\n\n            if (_filters[this.field].operator) {\n                _filters[this.field].constraints.splice(1);\n                _filters[this.field].operator = this.defaultOperator;\n                _filters[this.field].constraints[0] = { value: null, matchMode: this.defaultMatchMode };\n            } else {\n                _filters[this.field].value = null;\n                _filters[this.field].matchMode = this.defaultMatchMode;\n            }\n\n            this.$emit('filter-clear');\n            this.$emit('filter-change', _filters);\n            this.$emit('filter-apply');\n            this.hide();\n        },\n        applyFilter() {\n            this.$emit('apply-click', { field: this.field, constraints: this.filters[this.field] });\n            this.$emit('filter-apply');\n            this.hide();\n        },\n        hasFilter() {\n            if (this.filtersStore) {\n                let fieldFilter = this.filtersStore[this.field];\n\n                if (fieldFilter) {\n                    if (fieldFilter.operator) return !this.isFilterBlank(fieldFilter.constraints[0].value);\n                    else return !this.isFilterBlank(fieldFilter.value);\n                }\n            }\n\n            return false;\n        },\n        hasRowFilter() {\n            return this.filters[this.field] && !this.isFilterBlank(this.filters[this.field].value);\n        },\n        isFilterBlank(filter) {\n            if (filter !== null && filter !== undefined) {\n                if ((typeof filter === 'string' && filter.trim().length == 0) || (filter instanceof Array && filter.length == 0)) return true;\n                else return false;\n            }\n\n            return true;\n        },\n        toggleMenu(event) {\n            this.overlayVisible = !this.overlayVisible;\n\n            event.preventDefault();\n        },\n        onToggleButtonKeyDown(event) {\n            switch (event.code) {\n                case 'Enter':\n                case 'NumpadEnter':\n                case 'Space':\n                    this.toggleMenu(event);\n\n                    break;\n\n                case 'Escape':\n                    this.overlayVisible = false;\n                    break;\n            }\n        },\n        onRowMatchModeChange(matchMode) {\n            let _filters = { ...this.filters };\n\n            _filters[this.field].matchMode = matchMode;\n            this.$emit('matchmode-change', { field: this.field, matchMode: matchMode });\n            this.$emit('filter-change', _filters);\n            this.$emit('filter-apply');\n            this.hide();\n        },\n        onRowMatchModeKeyDown(event) {\n            let item = event.target;\n\n            switch (event.code) {\n                case 'ArrowDown':\n                    var nextItem = this.findNextItem(item);\n\n                    if (nextItem) {\n                        item.removeAttribute('tabindex');\n                        nextItem.tabIndex = '0';\n                        nextItem.focus();\n                    }\n\n                    event.preventDefault();\n                    break;\n\n                case 'ArrowUp':\n                    var prevItem = this.findPrevItem(item);\n\n                    if (prevItem) {\n                        item.removeAttribute('tabindex');\n                        prevItem.tabIndex = '0';\n                        prevItem.focus();\n                    }\n\n                    event.preventDefault();\n                    break;\n            }\n        },\n        isRowMatchModeSelected(matchMode) {\n            return this.filters[this.field].matchMode === matchMode;\n        },\n        onOperatorChange(value) {\n            let _filters = { ...this.filters };\n\n            _filters[this.field].operator = value;\n            this.$emit('filter-change', _filters);\n\n            this.$emit('operator-change', { field: this.field, operator: value });\n\n            if (!this.showApplyButton) {\n                this.$emit('filter-apply');\n            }\n        },\n        onMenuMatchModeChange(value, index) {\n            let _filters = { ...this.filters };\n\n            _filters[this.field].constraints[index].matchMode = value;\n            this.$emit('matchmode-change', { field: this.field, matchMode: value, index: index });\n\n            if (!this.showApplyButton) {\n                this.$emit('filter-apply');\n            }\n        },\n        addConstraint() {\n            let _filters = { ...this.filters };\n            let newConstraint = { value: null, matchMode: this.defaultMatchMode };\n\n            _filters[this.field].constraints.push(newConstraint);\n            this.$emit('constraint-add', { field: this.field, constraint: newConstraint });\n            this.$emit('filter-change', _filters);\n\n            if (!this.showApplyButton) {\n                this.$emit('filter-apply');\n            }\n        },\n        removeConstraint(index) {\n            let _filters = { ...this.filters };\n            let removedConstraint = _filters[this.field].constraints.splice(index, 1);\n\n            this.$emit('constraint-remove', { field: this.field, constraint: removedConstraint });\n            this.$emit('filter-change', _filters);\n\n            if (!this.showApplyButton) {\n                this.$emit('filter-apply');\n            }\n        },\n        filterCallback() {\n            this.$emit('filter-apply');\n        },\n        findNextItem(item) {\n            let nextItem = item.nextElementSibling;\n\n            if (nextItem) return getAttribute(nextItem, 'data-pc-section') === 'filterconstraintseparator' ? this.findNextItem(nextItem) : nextItem;\n            else return item.parentElement.firstElementChild;\n        },\n        findPrevItem(item) {\n            let prevItem = item.previousElementSibling;\n\n            if (prevItem) return getAttribute(prevItem, 'data-pc-section') === 'filterconstraintseparator' ? this.findPrevItem(prevItem) : prevItem;\n            else return item.parentElement.lastElementChild;\n        },\n        hide() {\n            this.overlayVisible = false;\n\n            this.showMenuButton && focus(this.$refs.icon.$el);\n        },\n        onContentClick(event) {\n            this.selfClick = true;\n\n            OverlayEventBus.emit('overlay-click', {\n                originalEvent: event,\n                target: this.overlay\n            });\n\n            this.selfClick = false;\n        },\n        onContentMouseDown() {\n            this.selfClick = true;\n        },\n        onOverlayEnter(el) {\n            if (this.filterMenuStyle) {\n                addStyle(this.overlay, this.filterMenuStyle);\n            }\n\n            ZIndex.set('overlay', el, this.$primevue.config.zIndex.overlay);\n            addStyle(el, { position: 'absolute', top: '0' });\n            absolutePosition(this.overlay, this.$refs.icon.$el);\n            this.bindOutsideClickListener();\n            this.bindScrollListener();\n            this.bindResizeListener();\n\n            this.overlayEventListener = (e) => {\n                if (!this.isOutsideClicked(e.target)) {\n                    this.selfClick = true;\n                }\n            };\n\n            OverlayEventBus.on('overlay-click', this.overlayEventListener);\n        },\n        onOverlayAfterEnter() {\n            this.overlay?.$focustrap?.autoFocus();\n        },\n        onOverlayLeave() {\n            this.onOverlayHide();\n        },\n        onOverlayAfterLeave(el) {\n            ZIndex.clear(el);\n        },\n        onOverlayHide() {\n            this.unbindOutsideClickListener();\n            this.unbindResizeListener();\n            this.unbindScrollListener();\n            this.overlay = null;\n            OverlayEventBus.off('overlay-click', this.overlayEventListener);\n            this.overlayEventListener = null;\n        },\n        overlayRef(el) {\n            this.overlay = el;\n        },\n        isOutsideClicked(target) {\n            return !this.isTargetClicked(target) && this.overlay && !(this.overlay.isSameNode(target) || this.overlay.contains(target) || this.isNestedOverlayClicked(target));\n        },\n        isNestedOverlayClicked(target) {\n            let node = target;\n\n            while (node && node !== document.body) {\n                const attrSelectors = [...(node.attributes || [])].filter((attr) => attr.value === '' && /^pc\\w+$/.test(attr.name)).map((attr) => attr.name);\n\n                if (attrSelectors.some((attrSelector) => this.overlay.querySelector(`[${attrSelector}]`))) return true;\n\n                node = node.parentElement;\n            }\n\n            return false;\n        },\n        isTargetClicked(target) {\n            return this.$refs.icon && (this.$refs.icon.$el.isSameNode(target) || this.$refs.icon.$el.contains(target));\n        },\n        bindOutsideClickListener() {\n            if (!this.outsideClickListener) {\n                this.outsideClickListener = (event) => {\n                    if (this.overlayVisible && !this.selfClick && this.isOutsideClicked(event.target)) {\n                        this.overlayVisible = false;\n                    }\n\n                    this.selfClick = false;\n                };\n\n                document.addEventListener('click', this.outsideClickListener, true);\n            }\n        },\n        unbindOutsideClickListener() {\n            if (this.outsideClickListener) {\n                document.removeEventListener('click', this.outsideClickListener, true);\n                this.outsideClickListener = null;\n                this.selfClick = false;\n            }\n        },\n        bindScrollListener() {\n            if (!this.scrollHandler) {\n                this.scrollHandler = new ConnectedOverlayScrollHandler(this.$refs.icon.$el, () => {\n                    if (this.overlayVisible) {\n                        this.hide();\n                    }\n                });\n            }\n\n            this.scrollHandler.bindScrollListener();\n        },\n        unbindScrollListener() {\n            if (this.scrollHandler) {\n                this.scrollHandler.unbindScrollListener();\n            }\n        },\n        bindResizeListener() {\n            if (!this.resizeListener) {\n                this.resizeListener = () => {\n                    if (this.overlayVisible && !isTouchDevice()) {\n                        this.hide();\n                    }\n                };\n\n                window.addEventListener('resize', this.resizeListener);\n            }\n        },\n        unbindResizeListener() {\n            if (this.resizeListener) {\n                window.removeEventListener('resize', this.resizeListener);\n                this.resizeListener = null;\n            }\n        }\n    },\n    computed: {\n        showMenuButton() {\n            return this.showMenu && (this.display === 'row' ? this.type !== 'boolean' : true);\n        },\n        overlayId() {\n            return this.$id + '_overlay';\n        },\n        matchModes() {\n            return (\n                this.matchModeOptions ||\n                this.$primevue.config.filterMatchModeOptions[this.type].map((key) => {\n                    return { label: this.$primevue.config.locale[key], value: key };\n                })\n            );\n        },\n        isShowMatchModes() {\n            return this.type !== 'boolean' && this.showMatchModes && this.matchModes;\n        },\n        operatorOptions() {\n            return [\n                { label: this.$primevue.config.locale.matchAll, value: FilterOperator.AND },\n                { label: this.$primevue.config.locale.matchAny, value: FilterOperator.OR }\n            ];\n        },\n        noFilterLabel() {\n            return this.$primevue.config.locale ? this.$primevue.config.locale.noFilter : undefined;\n        },\n        isShowOperator() {\n            return this.showOperator && this.filters[this.field].operator;\n        },\n        operator() {\n            return this.filters[this.field].operator;\n        },\n        fieldConstraints() {\n            return this.filters[this.field].constraints || [this.filters[this.field]];\n        },\n        showRemoveIcon() {\n            return this.fieldConstraints.length > 1;\n        },\n        removeRuleButtonLabel() {\n            return this.$primevue.config.locale ? this.$primevue.config.locale.removeRule : undefined;\n        },\n        addRuleButtonLabel() {\n            return this.$primevue.config.locale ? this.$primevue.config.locale.addRule : undefined;\n        },\n        isShowAddConstraint() {\n            return this.showAddButton && this.filters[this.field].operator && this.fieldConstraints && this.fieldConstraints.length < this.maxConstraints;\n        },\n        clearButtonLabel() {\n            return this.$primevue.config.locale ? this.$primevue.config.locale.clear : undefined;\n        },\n        applyButtonLabel() {\n            return this.$primevue.config.locale ? this.$primevue.config.locale.apply : undefined;\n        },\n        columnFilterButtonAriaLabel() {\n            return this.$primevue.config.locale?.aria ? (this.overlayVisible ? this.$primevue.config.locale.aria.hideFilterMenu : this.$primevue.config.locale.aria.showFilterMenu) : undefined;\n        },\n        filterOperatorAriaLabel() {\n            return this.$primevue.config.locale ? this.$primevue.config.locale.filterOperator : undefined;\n        },\n        filterRuleAriaLabel() {\n            return this.$primevue.config.locale ? this.$primevue.config.locale.filterConstraint : undefined;\n        },\n        ptmHeaderFilterClearParams() {\n            return {\n                context: {\n                    hidden: this.hasRowFilter()\n                }\n            };\n        },\n        ptmFilterMenuParams() {\n            return {\n                context: {\n                    overlayVisible: this.overlayVisible,\n                    active: this.hasFilter()\n                }\n            };\n        }\n    },\n    components: {\n        Select,\n        Button,\n        Portal,\n        FilterSlashIcon,\n        FilterFillIcon,\n        FilterIcon,\n        TrashIcon,\n        PlusIcon\n    },\n    directives: {\n        focustrap: FocusTrap\n    }\n};\n</script>\n","<script>\nimport ColumnFilter from '../datatable/ColumnFilter.vue';\n\n// Same filter UI as DataTable, resolved against the TreeTable host so cx()/ptm() use the treetable style and pass-through keys.\nexport default {\n    name: 'ColumnFilter',\n    hostName: 'TreeTable',\n    extends: ColumnFilter\n};\n</script>\n","<template>\n    <th v-if=\"!columnProp('hidden')\" :style=\"getFilterColumnHeaderStyle\" :class=\"getFilterColumnHeaderClass\" v-bind=\"{ ...getColumnPT('root'), ...getColumnPT('headerCell') }\" :data-p-frozen-column=\"columnProp('frozen')\">\n        <TTColumnFilter\n            v-if=\"column.children && column.children.filter\"\n            :field=\"columnProp('filterField') || columnProp('field')\"\n            :type=\"columnProp('dataType')\"\n            display=\"row\"\n            :showMenu=\"columnProp('showFilterMenu')\"\n            :filterElement=\"column.children && column.children.filter\"\n            :filterHeaderTemplate=\"column.children && column.children.filterheader\"\n            :filterFooterTemplate=\"column.children && column.children.filterfooter\"\n            :filterClearTemplate=\"column.children && column.children.filterclear\"\n            :filterApplyTemplate=\"column.children && column.children.filterapply\"\n            :filterIconTemplate=\"column.children && column.children.filtericon\"\n            :filterAddIconTemplate=\"column.children && column.children.filteraddicon\"\n            :filterRemoveIconTemplate=\"column.children && column.children.filterremoveicon\"\n            :filterClearIconTemplate=\"column.children && column.children.filterclearicon\"\n            :filters=\"filters\"\n            :filtersStore=\"filtersStore\"\n            :filterInputProps=\"filterInputProps\"\n            :filterButtonProps=\"filterButtonProps\"\n            @filter-change=\"$emit('filter-change', $event)\"\n            @filter-apply=\"$emit('filter-apply')\"\n            :filterMenuStyle=\"columnProp('filterMenuStyle')\"\n            :filterMenuClass=\"columnProp('filterMenuClass')\"\n            :showOperator=\"columnProp('showFilterOperator')\"\n            :showClearButton=\"columnProp('showClearButton')\"\n            :showApplyButton=\"columnProp('showApplyButton')\"\n            :showMatchModes=\"columnProp('showFilterMatchModes')\"\n            :showAddButton=\"columnProp('showAddButton')\"\n            :matchModeOptions=\"columnProp('filterMatchModeOptions')\"\n            :maxConstraints=\"columnProp('maxConstraints')\"\n            @operator-change=\"$emit('operator-change', $event)\"\n            @matchmode-change=\"$emit('matchmode-change', $event)\"\n            @constraint-add=\"$emit('constraint-add', $event)\"\n            @constraint-remove=\"$emit('constraint-remove', $event)\"\n            @apply-click=\"$emit('apply-click', $event)\"\n            :column=\"column\"\n            :unstyled=\"unstyled\"\n            :pt=\"pt\"\n        />\n    </th>\n</template>\n\n<script>\nimport { getNextElementSibling, getOuterWidth, getPreviousElementSibling } from '@openuxkit/utils/dom';\nimport BaseComponent from '@openvue/core/basecomponent';\nimport { getVNodeProp } from '@openvue/core/utils';\nimport { mergeProps } from 'vue';\nimport ColumnFilter from './ColumnFilter.vue';\n\nexport default {\n    name: 'FilterHeaderCell',\n    hostName: 'TreeTable',\n    extends: BaseComponent,\n    emits: ['filter-change', 'filter-apply', 'operator-change', 'matchmode-change', 'constraint-add', 'constraint-remove', 'apply-click'],\n    props: {\n        column: {\n            type: Object,\n            default: null\n        },\n        index: {\n            type: Number,\n            default: null\n        },\n        display: {\n            type: String,\n            default: 'row'\n        },\n        filters: {\n            type: Object,\n            default: null\n        },\n        filtersStore: {\n            type: Object,\n            default: null\n        },\n        filterInputProps: {\n            type: null,\n            default: null\n        },\n        filterButtonProps: {\n            type: null,\n            default: null\n        }\n    },\n    data() {\n        return {\n            styleObject: {}\n        };\n    },\n    mounted() {\n        if (this.columnProp('frozen')) {\n            this.updateStickyPosition();\n        }\n    },\n    updated() {\n        if (this.columnProp('frozen')) {\n            this.updateStickyPosition();\n        }\n    },\n    methods: {\n        columnProp(prop) {\n            return getVNodeProp(this.column, prop);\n        },\n        getColumnPT(key) {\n            if (!this.column) return null;\n\n            const columnMetaData = {\n                props: this.column.props,\n                parent: {\n                    instance: this,\n                    props: this.$props,\n                    state: this.$data\n                },\n                context: {\n                    index: this.index\n                }\n            };\n\n            return mergeProps(this.ptm(`column.${key}`, { column: columnMetaData }), this.ptm(`column.${key}`, columnMetaData), this.ptmo(this.getColumnProp(), key, columnMetaData));\n        },\n        getColumnProp() {\n            return this.column.props && this.column.props.pt ? this.column.props.pt : undefined;\n        },\n        updateStickyPosition() {\n            if (this.columnProp('frozen')) {\n                let align = this.columnProp('alignFrozen');\n\n                if (align === 'right') {\n                    let pos = 0;\n                    let next = getNextElementSibling(this.$el, '[data-p-frozen-column=\"true\"]');\n\n                    if (next) {\n                        pos = getOuterWidth(next) + parseFloat(next.style['inset-inline-end'] || 0);\n                    }\n\n                    this.styleObject.insetInlineEnd = pos + 'px';\n                } else {\n                    let pos = 0;\n                    let prev = getPreviousElementSibling(this.$el, '[data-p-frozen-column=\"true\"]');\n\n                    if (prev) {\n                        pos = getOuterWidth(prev) + parseFloat(prev.style['inset-inline-start'] || 0);\n                    }\n\n                    this.styleObject.insetInlineStart = pos + 'px';\n                }\n            }\n        }\n    },\n    computed: {\n        getFilterColumnHeaderClass() {\n            return [this.cx('headerCell', { filterCell: true }), this.columnProp('filterHeaderClass'), this.columnProp('class')];\n        },\n        getFilterColumnHeaderStyle() {\n            return this.columnProp('frozen') ? [this.columnProp('filterHeaderStyle'), this.columnProp('style'), this.styleObject] : [this.columnProp('filterHeaderStyle'), this.columnProp('style')];\n        }\n    },\n    components: {\n        TTColumnFilter: ColumnFilter\n    }\n};\n</script>\n","<template>\n    <th v-if=\"!columnProp('hidden')\" :style=\"getFilterColumnHeaderStyle\" :class=\"getFilterColumnHeaderClass\" v-bind=\"{ ...getColumnPT('root'), ...getColumnPT('headerCell') }\" :data-p-frozen-column=\"columnProp('frozen')\">\n        <TTColumnFilter\n            v-if=\"column.children && column.children.filter\"\n            :field=\"columnProp('filterField') || columnProp('field')\"\n            :type=\"columnProp('dataType')\"\n            display=\"row\"\n            :showMenu=\"columnProp('showFilterMenu')\"\n            :filterElement=\"column.children && column.children.filter\"\n            :filterHeaderTemplate=\"column.children && column.children.filterheader\"\n            :filterFooterTemplate=\"column.children && column.children.filterfooter\"\n            :filterClearTemplate=\"column.children && column.children.filterclear\"\n            :filterApplyTemplate=\"column.children && column.children.filterapply\"\n            :filterIconTemplate=\"column.children && column.children.filtericon\"\n            :filterAddIconTemplate=\"column.children && column.children.filteraddicon\"\n            :filterRemoveIconTemplate=\"column.children && column.children.filterremoveicon\"\n            :filterClearIconTemplate=\"column.children && column.children.filterclearicon\"\n            :filters=\"filters\"\n            :filtersStore=\"filtersStore\"\n            :filterInputProps=\"filterInputProps\"\n            :filterButtonProps=\"filterButtonProps\"\n            @filter-change=\"$emit('filter-change', $event)\"\n            @filter-apply=\"$emit('filter-apply')\"\n            :filterMenuStyle=\"columnProp('filterMenuStyle')\"\n            :filterMenuClass=\"columnProp('filterMenuClass')\"\n            :showOperator=\"columnProp('showFilterOperator')\"\n            :showClearButton=\"columnProp('showClearButton')\"\n            :showApplyButton=\"columnProp('showApplyButton')\"\n            :showMatchModes=\"columnProp('showFilterMatchModes')\"\n            :showAddButton=\"columnProp('showAddButton')\"\n            :matchModeOptions=\"columnProp('filterMatchModeOptions')\"\n            :maxConstraints=\"columnProp('maxConstraints')\"\n            @operator-change=\"$emit('operator-change', $event)\"\n            @matchmode-change=\"$emit('matchmode-change', $event)\"\n            @constraint-add=\"$emit('constraint-add', $event)\"\n            @constraint-remove=\"$emit('constraint-remove', $event)\"\n            @apply-click=\"$emit('apply-click', $event)\"\n            :column=\"column\"\n            :unstyled=\"unstyled\"\n            :pt=\"pt\"\n        />\n    </th>\n</template>\n\n<script>\nimport { getNextElementSibling, getOuterWidth, getPreviousElementSibling } from '@openuxkit/utils/dom';\nimport BaseComponent from '@openvue/core/basecomponent';\nimport { getVNodeProp } from '@openvue/core/utils';\nimport { mergeProps } from 'vue';\nimport ColumnFilter from './ColumnFilter.vue';\n\nexport default {\n    name: 'FilterHeaderCell',\n    hostName: 'TreeTable',\n    extends: BaseComponent,\n    emits: ['filter-change', 'filter-apply', 'operator-change', 'matchmode-change', 'constraint-add', 'constraint-remove', 'apply-click'],\n    props: {\n        column: {\n            type: Object,\n            default: null\n        },\n        index: {\n            type: Number,\n            default: null\n        },\n        display: {\n            type: String,\n            default: 'row'\n        },\n        filters: {\n            type: Object,\n            default: null\n        },\n        filtersStore: {\n            type: Object,\n            default: null\n        },\n        filterInputProps: {\n            type: null,\n            default: null\n        },\n        filterButtonProps: {\n            type: null,\n            default: null\n        }\n    },\n    data() {\n        return {\n            styleObject: {}\n        };\n    },\n    mounted() {\n        if (this.columnProp('frozen')) {\n            this.updateStickyPosition();\n        }\n    },\n    updated() {\n        if (this.columnProp('frozen')) {\n            this.updateStickyPosition();\n        }\n    },\n    methods: {\n        columnProp(prop) {\n            return getVNodeProp(this.column, prop);\n        },\n        getColumnPT(key) {\n            if (!this.column) return null;\n\n            const columnMetaData = {\n                props: this.column.props,\n                parent: {\n                    instance: this,\n                    props: this.$props,\n                    state: this.$data\n                },\n                context: {\n                    index: this.index\n                }\n            };\n\n            return mergeProps(this.ptm(`column.${key}`, { column: columnMetaData }), this.ptm(`column.${key}`, columnMetaData), this.ptmo(this.getColumnProp(), key, columnMetaData));\n        },\n        getColumnProp() {\n            return this.column.props && this.column.props.pt ? this.column.props.pt : undefined;\n        },\n        updateStickyPosition() {\n            if (this.columnProp('frozen')) {\n                let align = this.columnProp('alignFrozen');\n\n                if (align === 'right') {\n                    let pos = 0;\n                    let next = getNextElementSibling(this.$el, '[data-p-frozen-column=\"true\"]');\n\n                    if (next) {\n                        pos = getOuterWidth(next) + parseFloat(next.style['inset-inline-end'] || 0);\n                    }\n\n                    this.styleObject.insetInlineEnd = pos + 'px';\n                } else {\n                    let pos = 0;\n                    let prev = getPreviousElementSibling(this.$el, '[data-p-frozen-column=\"true\"]');\n\n                    if (prev) {\n                        pos = getOuterWidth(prev) + parseFloat(prev.style['inset-inline-start'] || 0);\n                    }\n\n                    this.styleObject.insetInlineStart = pos + 'px';\n                }\n            }\n        }\n    },\n    computed: {\n        getFilterColumnHeaderClass() {\n            return [this.cx('headerCell', { filterCell: true }), this.columnProp('filterHeaderClass'), this.columnProp('class')];\n        },\n        getFilterColumnHeaderStyle() {\n            return this.columnProp('frozen') ? [this.columnProp('filterHeaderStyle'), this.columnProp('style'), this.styleObject] : [this.columnProp('filterHeaderStyle'), this.columnProp('style')];\n        }\n    },\n    components: {\n        TTColumnFilter: ColumnFilter\n    }\n};\n</script>\n","<template>\n    <td :style=\"containerStyle\" :class=\"containerClass\" role=\"cell\" v-bind=\"{ ...getColumnPT('root'), ...getColumnPT('footerCell') }\" :data-p-frozen-column=\"columnProp('frozen')\">\n        <component v-if=\"column.children && column.children.footer\" :is=\"column.children.footer\" :column=\"column\" />\n        <span v-if=\"columnProp('footer')\" :class=\"cx('columnFooter')\" v-bind=\"getColumnPT('columnFooter')\">{{ columnProp('footer') }}</span>\n    </td>\n</template>\n\n<script>\nimport { getNextElementSibling, getOuterWidth, getPreviousElementSibling } from '@openuxkit/utils/dom';\nimport BaseComponent from '@openvue/core/basecomponent';\nimport { getVNodeProp } from '@openvue/core/utils';\nimport { mergeProps } from 'vue';\n\nexport default {\n    name: 'FooterCell',\n    hostName: 'TreeTable',\n    extends: BaseComponent,\n    props: {\n        column: {\n            type: Object,\n            default: null\n        },\n        index: {\n            type: Number,\n            default: null\n        }\n    },\n    data() {\n        return {\n            styleObject: {}\n        };\n    },\n    mounted() {\n        if (this.columnProp('frozen')) {\n            this.updateStickyPosition();\n        }\n    },\n    updated() {\n        if (this.columnProp('frozen')) {\n            this.updateStickyPosition();\n        }\n    },\n    methods: {\n        columnProp(prop) {\n            return getVNodeProp(this.column, prop);\n        },\n        getColumnPT(key) {\n            const columnMetaData = {\n                props: this.column.props,\n                parent: {\n                    instance: this,\n                    props: this.$props,\n                    state: this.$data\n                },\n                context: {\n                    index: this.index,\n                    frozen: this.columnProp('frozen'),\n                    size: this.$parentInstance?.size\n                }\n            };\n\n            return mergeProps(this.ptm(`column.${key}`, { column: columnMetaData }), this.ptm(`column.${key}`, columnMetaData), this.ptmo(this.getColumnProp(), key, columnMetaData));\n        },\n        getColumnProp() {\n            return this.column.props && this.column.props.pt ? this.column.props.pt : undefined;\n        },\n        updateStickyPosition() {\n            if (this.columnProp('frozen')) {\n                let align = this.columnProp('alignFrozen');\n\n                if (align === 'right') {\n                    let pos = 0;\n                    let next = getNextElementSibling(this.$el, '[data-p-frozen-column=\"true\"]');\n\n                    if (next) {\n                        pos = getOuterWidth(next) + parseFloat(next.style['inset-inline-end'] || 0);\n                    }\n\n                    this.styleObject.insetInlineEnd = pos + 'px';\n                } else {\n                    let pos = 0;\n                    let prev = getPreviousElementSibling(this.$el, '[data-p-frozen-column=\"true\"]');\n\n                    if (prev) {\n                        pos = getOuterWidth(prev) + parseFloat(prev.style['inset-inline-start'] || 0);\n                    }\n\n                    this.styleObject.insetInlineStart = pos + 'px';\n                }\n            }\n        }\n    },\n    computed: {\n        containerClass() {\n            return [this.columnProp('footerClass'), this.columnProp('class'), this.cx('footerCell')];\n        },\n        containerStyle() {\n            let bodyStyle = this.columnProp('footerStyle');\n            let columnStyle = this.columnProp('style');\n\n            return this.columnProp('frozen') ? [columnStyle, bodyStyle, this.styleObject] : [columnStyle, bodyStyle];\n        }\n    }\n};\n</script>\n","<template>\n    <td :style=\"containerStyle\" :class=\"containerClass\" role=\"cell\" v-bind=\"{ ...getColumnPT('root'), ...getColumnPT('footerCell') }\" :data-p-frozen-column=\"columnProp('frozen')\">\n        <component v-if=\"column.children && column.children.footer\" :is=\"column.children.footer\" :column=\"column\" />\n        <span v-if=\"columnProp('footer')\" :class=\"cx('columnFooter')\" v-bind=\"getColumnPT('columnFooter')\">{{ columnProp('footer') }}</span>\n    </td>\n</template>\n\n<script>\nimport { getNextElementSibling, getOuterWidth, getPreviousElementSibling } from '@openuxkit/utils/dom';\nimport BaseComponent from '@openvue/core/basecomponent';\nimport { getVNodeProp } from '@openvue/core/utils';\nimport { mergeProps } from 'vue';\n\nexport default {\n    name: 'FooterCell',\n    hostName: 'TreeTable',\n    extends: BaseComponent,\n    props: {\n        column: {\n            type: Object,\n            default: null\n        },\n        index: {\n            type: Number,\n            default: null\n        }\n    },\n    data() {\n        return {\n            styleObject: {}\n        };\n    },\n    mounted() {\n        if (this.columnProp('frozen')) {\n            this.updateStickyPosition();\n        }\n    },\n    updated() {\n        if (this.columnProp('frozen')) {\n            this.updateStickyPosition();\n        }\n    },\n    methods: {\n        columnProp(prop) {\n            return getVNodeProp(this.column, prop);\n        },\n        getColumnPT(key) {\n            const columnMetaData = {\n                props: this.column.props,\n                parent: {\n                    instance: this,\n                    props: this.$props,\n                    state: this.$data\n                },\n                context: {\n                    index: this.index,\n                    frozen: this.columnProp('frozen'),\n                    size: this.$parentInstance?.size\n                }\n            };\n\n            return mergeProps(this.ptm(`column.${key}`, { column: columnMetaData }), this.ptm(`column.${key}`, columnMetaData), this.ptmo(this.getColumnProp(), key, columnMetaData));\n        },\n        getColumnProp() {\n            return this.column.props && this.column.props.pt ? this.column.props.pt : undefined;\n        },\n        updateStickyPosition() {\n            if (this.columnProp('frozen')) {\n                let align = this.columnProp('alignFrozen');\n\n                if (align === 'right') {\n                    let pos = 0;\n                    let next = getNextElementSibling(this.$el, '[data-p-frozen-column=\"true\"]');\n\n                    if (next) {\n                        pos = getOuterWidth(next) + parseFloat(next.style['inset-inline-end'] || 0);\n                    }\n\n                    this.styleObject.insetInlineEnd = pos + 'px';\n                } else {\n                    let pos = 0;\n                    let prev = getPreviousElementSibling(this.$el, '[data-p-frozen-column=\"true\"]');\n\n                    if (prev) {\n                        pos = getOuterWidth(prev) + parseFloat(prev.style['inset-inline-start'] || 0);\n                    }\n\n                    this.styleObject.insetInlineStart = pos + 'px';\n                }\n            }\n        }\n    },\n    computed: {\n        containerClass() {\n            return [this.columnProp('footerClass'), this.columnProp('class'), this.cx('footerCell')];\n        },\n        containerStyle() {\n            let bodyStyle = this.columnProp('footerStyle');\n            let columnStyle = this.columnProp('style');\n\n            return this.columnProp('frozen') ? [columnStyle, bodyStyle, this.styleObject] : [columnStyle, bodyStyle];\n        }\n    }\n};\n</script>\n","<template>\n    <th\n        :class=\"containerClass\"\n        :style=\"[containerStyle]\"\n        @click=\"onClick\"\n        @keydown=\"onKeyDown\"\n        :tabindex=\"columnProp('sortable') ? '0' : null\"\n        :aria-sort=\"ariaSort\"\n        role=\"columnheader\"\n        v-bind=\"{ ...getColumnPT('root'), ...getColumnPT('headerCell') }\"\n        :data-p-sortable-column=\"columnProp('sortable')\"\n        :data-p-resizable-column=\"resizableColumns\"\n        :data-p-sorted=\"isColumnSorted()\"\n        :data-p-frozen-column=\"columnProp('frozen')\"\n    >\n        <span v-if=\"resizableColumns && !columnProp('frozen')\" :class=\"cx('columnResizer')\" @mousedown=\"onResizeStart\" v-bind=\"getColumnPT('columnResizer')\"></span>\n        <div :class=\"cx('columnHeaderContent')\" v-bind=\"getColumnPT('columnHeaderContent')\">\n            <component v-if=\"column.children && column.children.header\" :is=\"column.children.header\" :column=\"column\" />\n            <span v-if=\"columnProp('header')\" :class=\"cx('columnTitle')\" v-bind=\"getColumnPT('columnTitle')\">{{ columnProp('header') }}</span>\n            <span v-if=\"columnProp('sortable')\" v-bind=\"getColumnPT('sort')\">\n                <component :is=\"(column.children && column.children.sorticon) || sortableColumnIcon\" :sorted=\"sortState.sorted\" :sortOrder=\"sortState.sortOrder\" :class=\"cx('sortIcon')\" v-bind=\"getColumnPT('sortIcon')\" />\n            </span>\n            <Badge v-if=\"isMultiSorted()\" :class=\"cx('pcSortBadge')\" v-bind=\"getColumnPT('pcSortBadge')\" :value=\"getMultiSortMetaIndex() + 1\" size=\"small\" />\n            <TTColumnFilter\n                v-if=\"filterDisplay === 'menu' && column.children && column.children.filter\"\n                :field=\"columnProp('filterField') || columnProp('field')\"\n                :type=\"columnProp('dataType')\"\n                display=\"menu\"\n                :showMenu=\"columnProp('showFilterMenu')\"\n                :filterElement=\"column.children && column.children.filter\"\n                :filterHeaderTemplate=\"column.children && column.children.filterheader\"\n                :filterFooterTemplate=\"column.children && column.children.filterfooter\"\n                :filterClearTemplate=\"column.children && column.children.filterclear\"\n                :filterApplyTemplate=\"column.children && column.children.filterapply\"\n                :filterIconTemplate=\"column.children && column.children.filtericon\"\n                :filterAddIconTemplate=\"column.children && column.children.filteraddicon\"\n                :filterRemoveIconTemplate=\"column.children && column.children.filterremoveicon\"\n                :filterClearIconTemplate=\"column.children && column.children.filterclearicon\"\n                :filters=\"filters\"\n                :filtersStore=\"filtersStore\"\n                :filterInputProps=\"filterInputProps\"\n                :filterButtonProps=\"filterButtonProps\"\n                @filter-change=\"$emit('filter-change', $event)\"\n                @filter-apply=\"$emit('filter-apply')\"\n                :filterMenuStyle=\"columnProp('filterMenuStyle')\"\n                :filterMenuClass=\"columnProp('filterMenuClass')\"\n                :showOperator=\"columnProp('showFilterOperator')\"\n                :showClearButton=\"columnProp('showClearButton')\"\n                :showApplyButton=\"columnProp('showApplyButton')\"\n                :showMatchModes=\"columnProp('showFilterMatchModes')\"\n                :showAddButton=\"columnProp('showAddButton')\"\n                :matchModeOptions=\"columnProp('filterMatchModeOptions')\"\n                :maxConstraints=\"columnProp('maxConstraints')\"\n                @operator-change=\"$emit('operator-change', $event)\"\n                @matchmode-change=\"$emit('matchmode-change', $event)\"\n                @constraint-add=\"$emit('constraint-add', $event)\"\n                @constraint-remove=\"$emit('constraint-remove', $event)\"\n                @apply-click=\"$emit('apply-click', $event)\"\n                :column=\"column\"\n                :unstyled=\"unstyled\"\n                :pt=\"pt\"\n            />\n        </div>\n    </th>\n</template>\n\n<script>\nimport { getAttribute, getIndex, getNextElementSibling, getOuterWidth, getPreviousElementSibling } from '@openuxkit/utils/dom';\nimport BaseComponent from '@openvue/core/basecomponent';\nimport { getVNodeProp } from '@openvue/core/utils';\nimport SortAltIcon from '@openvue/icons/sortalt';\nimport SortAmountDownIcon from '@openvue/icons/sortamountdown';\nimport SortAmountUpAltIcon from '@openvue/icons/sortamountupalt';\nimport Badge from 'openvue/badge';\nimport { mergeProps } from 'vue';\nimport ColumnFilter from './ColumnFilter.vue';\n\nexport default {\n    name: 'HeaderCell',\n    hostName: 'TreeTable',\n    extends: BaseComponent,\n    emits: ['column-click', 'column-resizestart', 'filter-change', 'filter-apply', 'operator-change', 'matchmode-change', 'constraint-add', 'constraint-remove', 'apply-click'],\n    props: {\n        column: {\n            type: Object,\n            default: null\n        },\n        resizableColumns: {\n            type: Boolean,\n            default: false\n        },\n        sortField: {\n            type: [String, Function],\n            default: null\n        },\n        sortOrder: {\n            type: Number,\n            default: null\n        },\n        multiSortMeta: {\n            type: Array,\n            default: null\n        },\n        sortMode: {\n            type: String,\n            default: 'single'\n        },\n        index: {\n            type: Number,\n            default: null\n        },\n        filterDisplay: {\n            type: String,\n            default: null\n        },\n        filters: {\n            type: Object,\n            default: null\n        },\n        filtersStore: {\n            type: Object,\n            default: null\n        },\n        filterInputProps: {\n            type: null,\n            default: null\n        },\n        filterButtonProps: {\n            type: null,\n            default: null\n        }\n    },\n    data() {\n        return {\n            styleObject: {}\n        };\n    },\n    mounted() {\n        if (this.columnProp('frozen')) {\n            this.updateStickyPosition();\n        }\n    },\n    updated() {\n        if (this.columnProp('frozen')) {\n            this.updateStickyPosition();\n        }\n    },\n    methods: {\n        columnProp(prop) {\n            return getVNodeProp(this.column, prop);\n        },\n        getColumnPT(key) {\n            const columnMetaData = {\n                props: this.column.props,\n                parent: {\n                    instance: this,\n                    props: this.$props,\n                    state: this.$data\n                },\n                context: {\n                    index: this.index,\n                    sorted: this.isColumnSorted(),\n                    frozen: this.$parentInstance.scrollable && this.columnProp('frozen'),\n                    resizable: this.resizableColumns,\n                    scrollable: this.$parentInstance.scrollable,\n                    showGridlines: this.$parentInstance.showGridlines,\n                    size: this.$parentInstance?.size\n                }\n            };\n\n            return mergeProps(this.ptm(`column.${key}`, { column: columnMetaData }), this.ptm(`column.${key}`, columnMetaData), this.ptmo(this.getColumnProp(), key, columnMetaData));\n        },\n        getColumnProp() {\n            return this.column.props && this.column.props.pt ? this.column.props.pt : undefined; //@todo:\n        },\n        updateStickyPosition() {\n            if (this.columnProp('frozen')) {\n                let align = this.columnProp('alignFrozen');\n\n                if (align === 'right') {\n                    let pos = 0;\n                    let next = getNextElementSibling(this.$el, '[data-p-frozen-column=\"true\"]');\n\n                    if (next) {\n                        pos = getOuterWidth(next) + parseFloat(next.style['inset-inline-end'] || 0);\n                    }\n\n                    this.styleObject.insetInlineEnd = pos + 'px';\n                } else {\n                    let pos = 0;\n                    let prev = getPreviousElementSibling(this.$el, '[data-p-frozen-column=\"true\"]');\n\n                    if (prev) {\n                        pos = getOuterWidth(prev) + parseFloat(prev.style['inset-inline-start'] || 0);\n                    }\n\n                    this.styleObject.insetInlineStart = pos + 'px';\n                }\n\n                let filterRow = this.$el.parentElement.nextElementSibling;\n\n                if (filterRow) {\n                    let index = getIndex(this.$el);\n\n                    filterRow.children[index].style['inset-inline-start'] = this.styleObject['inset-inline-start'];\n                    filterRow.children[index].style['inset-inline-end'] = this.styleObject['inset-inline-end'];\n                }\n            }\n        },\n        onClick(event) {\n            this.$emit('column-click', { originalEvent: event, column: this.column });\n        },\n        onKeyDown(event) {\n            if ((event.code === 'Enter' || event.code === 'NumpadEnter' || event.code === 'Space') && event.currentTarget.nodeName === 'TH' && getAttribute(event.currentTarget, 'data-p-sortable-column')) {\n                this.$emit('column-click', { originalEvent: event, column: this.column });\n\n                event.preventDefault();\n            }\n        },\n        onResizeStart(event) {\n            this.$emit('column-resizestart', event);\n        },\n        getMultiSortMetaIndex() {\n            let index = -1;\n\n            for (let i = 0; i < this.multiSortMeta.length; i++) {\n                let meta = this.multiSortMeta[i];\n\n                if (meta.field === this.columnProp('field') || meta.field === this.columnProp('sortField')) {\n                    index = i;\n                    break;\n                }\n            }\n\n            return index;\n        },\n        isMultiSorted() {\n            return this.columnProp('sortable') && this.getMultiSortMetaIndex() > -1;\n        },\n        isColumnSorted() {\n            return this.sortMode === 'single' ? this.sortField && (this.sortField === this.columnProp('field') || this.sortField === this.columnProp('sortField')) : this.isMultiSorted();\n        }\n    },\n    computed: {\n        containerClass() {\n            return [this.columnProp('headerClass'), this.columnProp('class'), this.cx('headerCell')];\n        },\n        containerStyle() {\n            let headerStyle = this.columnProp('headerStyle');\n            let columnStyle = this.columnProp('style');\n\n            return this.columnProp('frozen') ? [columnStyle, headerStyle, this.styleObject] : [columnStyle, headerStyle];\n        },\n        sortState() {\n            let sorted = false;\n            let sortOrder = null;\n\n            if (this.sortMode === 'single') {\n                sorted = this.sortField && (this.sortField === this.columnProp('field') || this.sortField === this.columnProp('sortField'));\n                sortOrder = sorted ? this.sortOrder : 0;\n            } else if (this.sortMode === 'multiple') {\n                let metaIndex = this.getMultiSortMetaIndex();\n\n                if (metaIndex > -1) {\n                    sorted = true;\n                    sortOrder = this.multiSortMeta[metaIndex].order;\n                }\n            }\n\n            return {\n                sorted,\n                sortOrder\n            };\n        },\n        sortableColumnIcon() {\n            const { sorted, sortOrder } = this.sortState;\n\n            if (!sorted) return SortAltIcon;\n            else if (sorted && sortOrder > 0) return SortAmountUpAltIcon;\n            else if (sorted && sortOrder < 0) return SortAmountDownIcon;\n\n            return null;\n        },\n        ariaSort() {\n            if (this.columnProp('sortable')) {\n                const { sorted, sortOrder } = this.sortState;\n\n                if (sorted && sortOrder < 0) return 'descending';\n                else if (sorted && sortOrder > 0) return 'ascending';\n                else return 'none';\n            } else {\n                return null;\n            }\n        }\n    },\n    components: {\n        Badge,\n        TTColumnFilter: ColumnFilter,\n        SortAltIcon: SortAltIcon,\n        SortAmountUpAltIcon: SortAmountUpAltIcon,\n        SortAmountDownIcon: SortAmountDownIcon\n    }\n};\n</script>\n","<template>\n    <th\n        :class=\"containerClass\"\n        :style=\"[containerStyle]\"\n        @click=\"onClick\"\n        @keydown=\"onKeyDown\"\n        :tabindex=\"columnProp('sortable') ? '0' : null\"\n        :aria-sort=\"ariaSort\"\n        role=\"columnheader\"\n        v-bind=\"{ ...getColumnPT('root'), ...getColumnPT('headerCell') }\"\n        :data-p-sortable-column=\"columnProp('sortable')\"\n        :data-p-resizable-column=\"resizableColumns\"\n        :data-p-sorted=\"isColumnSorted()\"\n        :data-p-frozen-column=\"columnProp('frozen')\"\n    >\n        <span v-if=\"resizableColumns && !columnProp('frozen')\" :class=\"cx('columnResizer')\" @mousedown=\"onResizeStart\" v-bind=\"getColumnPT('columnResizer')\"></span>\n        <div :class=\"cx('columnHeaderContent')\" v-bind=\"getColumnPT('columnHeaderContent')\">\n            <component v-if=\"column.children && column.children.header\" :is=\"column.children.header\" :column=\"column\" />\n            <span v-if=\"columnProp('header')\" :class=\"cx('columnTitle')\" v-bind=\"getColumnPT('columnTitle')\">{{ columnProp('header') }}</span>\n            <span v-if=\"columnProp('sortable')\" v-bind=\"getColumnPT('sort')\">\n                <component :is=\"(column.children && column.children.sorticon) || sortableColumnIcon\" :sorted=\"sortState.sorted\" :sortOrder=\"sortState.sortOrder\" :class=\"cx('sortIcon')\" v-bind=\"getColumnPT('sortIcon')\" />\n            </span>\n            <Badge v-if=\"isMultiSorted()\" :class=\"cx('pcSortBadge')\" v-bind=\"getColumnPT('pcSortBadge')\" :value=\"getMultiSortMetaIndex() + 1\" size=\"small\" />\n            <TTColumnFilter\n                v-if=\"filterDisplay === 'menu' && column.children && column.children.filter\"\n                :field=\"columnProp('filterField') || columnProp('field')\"\n                :type=\"columnProp('dataType')\"\n                display=\"menu\"\n                :showMenu=\"columnProp('showFilterMenu')\"\n                :filterElement=\"column.children && column.children.filter\"\n                :filterHeaderTemplate=\"column.children && column.children.filterheader\"\n                :filterFooterTemplate=\"column.children && column.children.filterfooter\"\n                :filterClearTemplate=\"column.children && column.children.filterclear\"\n                :filterApplyTemplate=\"column.children && column.children.filterapply\"\n                :filterIconTemplate=\"column.children && column.children.filtericon\"\n                :filterAddIconTemplate=\"column.children && column.children.filteraddicon\"\n                :filterRemoveIconTemplate=\"column.children && column.children.filterremoveicon\"\n                :filterClearIconTemplate=\"column.children && column.children.filterclearicon\"\n                :filters=\"filters\"\n                :filtersStore=\"filtersStore\"\n                :filterInputProps=\"filterInputProps\"\n                :filterButtonProps=\"filterButtonProps\"\n                @filter-change=\"$emit('filter-change', $event)\"\n                @filter-apply=\"$emit('filter-apply')\"\n                :filterMenuStyle=\"columnProp('filterMenuStyle')\"\n                :filterMenuClass=\"columnProp('filterMenuClass')\"\n                :showOperator=\"columnProp('showFilterOperator')\"\n                :showClearButton=\"columnProp('showClearButton')\"\n                :showApplyButton=\"columnProp('showApplyButton')\"\n                :showMatchModes=\"columnProp('showFilterMatchModes')\"\n                :showAddButton=\"columnProp('showAddButton')\"\n                :matchModeOptions=\"columnProp('filterMatchModeOptions')\"\n                :maxConstraints=\"columnProp('maxConstraints')\"\n                @operator-change=\"$emit('operator-change', $event)\"\n                @matchmode-change=\"$emit('matchmode-change', $event)\"\n                @constraint-add=\"$emit('constraint-add', $event)\"\n                @constraint-remove=\"$emit('constraint-remove', $event)\"\n                @apply-click=\"$emit('apply-click', $event)\"\n                :column=\"column\"\n                :unstyled=\"unstyled\"\n                :pt=\"pt\"\n            />\n        </div>\n    </th>\n</template>\n\n<script>\nimport { getAttribute, getIndex, getNextElementSibling, getOuterWidth, getPreviousElementSibling } from '@openuxkit/utils/dom';\nimport BaseComponent from '@openvue/core/basecomponent';\nimport { getVNodeProp } from '@openvue/core/utils';\nimport SortAltIcon from '@openvue/icons/sortalt';\nimport SortAmountDownIcon from '@openvue/icons/sortamountdown';\nimport SortAmountUpAltIcon from '@openvue/icons/sortamountupalt';\nimport Badge from 'openvue/badge';\nimport { mergeProps } from 'vue';\nimport ColumnFilter from './ColumnFilter.vue';\n\nexport default {\n    name: 'HeaderCell',\n    hostName: 'TreeTable',\n    extends: BaseComponent,\n    emits: ['column-click', 'column-resizestart', 'filter-change', 'filter-apply', 'operator-change', 'matchmode-change', 'constraint-add', 'constraint-remove', 'apply-click'],\n    props: {\n        column: {\n            type: Object,\n            default: null\n        },\n        resizableColumns: {\n            type: Boolean,\n            default: false\n        },\n        sortField: {\n            type: [String, Function],\n            default: null\n        },\n        sortOrder: {\n            type: Number,\n            default: null\n        },\n        multiSortMeta: {\n            type: Array,\n            default: null\n        },\n        sortMode: {\n            type: String,\n            default: 'single'\n        },\n        index: {\n            type: Number,\n            default: null\n        },\n        filterDisplay: {\n            type: String,\n            default: null\n        },\n        filters: {\n            type: Object,\n            default: null\n        },\n        filtersStore: {\n            type: Object,\n            default: null\n        },\n        filterInputProps: {\n            type: null,\n            default: null\n        },\n        filterButtonProps: {\n            type: null,\n            default: null\n        }\n    },\n    data() {\n        return {\n            styleObject: {}\n        };\n    },\n    mounted() {\n        if (this.columnProp('frozen')) {\n            this.updateStickyPosition();\n        }\n    },\n    updated() {\n        if (this.columnProp('frozen')) {\n            this.updateStickyPosition();\n        }\n    },\n    methods: {\n        columnProp(prop) {\n            return getVNodeProp(this.column, prop);\n        },\n        getColumnPT(key) {\n            const columnMetaData = {\n                props: this.column.props,\n                parent: {\n                    instance: this,\n                    props: this.$props,\n                    state: this.$data\n                },\n                context: {\n                    index: this.index,\n                    sorted: this.isColumnSorted(),\n                    frozen: this.$parentInstance.scrollable && this.columnProp('frozen'),\n                    resizable: this.resizableColumns,\n                    scrollable: this.$parentInstance.scrollable,\n                    showGridlines: this.$parentInstance.showGridlines,\n                    size: this.$parentInstance?.size\n                }\n            };\n\n            return mergeProps(this.ptm(`column.${key}`, { column: columnMetaData }), this.ptm(`column.${key}`, columnMetaData), this.ptmo(this.getColumnProp(), key, columnMetaData));\n        },\n        getColumnProp() {\n            return this.column.props && this.column.props.pt ? this.column.props.pt : undefined; //@todo:\n        },\n        updateStickyPosition() {\n            if (this.columnProp('frozen')) {\n                let align = this.columnProp('alignFrozen');\n\n                if (align === 'right') {\n                    let pos = 0;\n                    let next = getNextElementSibling(this.$el, '[data-p-frozen-column=\"true\"]');\n\n                    if (next) {\n                        pos = getOuterWidth(next) + parseFloat(next.style['inset-inline-end'] || 0);\n                    }\n\n                    this.styleObject.insetInlineEnd = pos + 'px';\n                } else {\n                    let pos = 0;\n                    let prev = getPreviousElementSibling(this.$el, '[data-p-frozen-column=\"true\"]');\n\n                    if (prev) {\n                        pos = getOuterWidth(prev) + parseFloat(prev.style['inset-inline-start'] || 0);\n                    }\n\n                    this.styleObject.insetInlineStart = pos + 'px';\n                }\n\n                let filterRow = this.$el.parentElement.nextElementSibling;\n\n                if (filterRow) {\n                    let index = getIndex(this.$el);\n\n                    filterRow.children[index].style['inset-inline-start'] = this.styleObject['inset-inline-start'];\n                    filterRow.children[index].style['inset-inline-end'] = this.styleObject['inset-inline-end'];\n                }\n            }\n        },\n        onClick(event) {\n            this.$emit('column-click', { originalEvent: event, column: this.column });\n        },\n        onKeyDown(event) {\n            if ((event.code === 'Enter' || event.code === 'NumpadEnter' || event.code === 'Space') && event.currentTarget.nodeName === 'TH' && getAttribute(event.currentTarget, 'data-p-sortable-column')) {\n                this.$emit('column-click', { originalEvent: event, column: this.column });\n\n                event.preventDefault();\n            }\n        },\n        onResizeStart(event) {\n            this.$emit('column-resizestart', event);\n        },\n        getMultiSortMetaIndex() {\n            let index = -1;\n\n            for (let i = 0; i < this.multiSortMeta.length; i++) {\n                let meta = this.multiSortMeta[i];\n\n                if (meta.field === this.columnProp('field') || meta.field === this.columnProp('sortField')) {\n                    index = i;\n                    break;\n                }\n            }\n\n            return index;\n        },\n        isMultiSorted() {\n            return this.columnProp('sortable') && this.getMultiSortMetaIndex() > -1;\n        },\n        isColumnSorted() {\n            return this.sortMode === 'single' ? this.sortField && (this.sortField === this.columnProp('field') || this.sortField === this.columnProp('sortField')) : this.isMultiSorted();\n        }\n    },\n    computed: {\n        containerClass() {\n            return [this.columnProp('headerClass'), this.columnProp('class'), this.cx('headerCell')];\n        },\n        containerStyle() {\n            let headerStyle = this.columnProp('headerStyle');\n            let columnStyle = this.columnProp('style');\n\n            return this.columnProp('frozen') ? [columnStyle, headerStyle, this.styleObject] : [columnStyle, headerStyle];\n        },\n        sortState() {\n            let sorted = false;\n            let sortOrder = null;\n\n            if (this.sortMode === 'single') {\n                sorted = this.sortField && (this.sortField === this.columnProp('field') || this.sortField === this.columnProp('sortField'));\n                sortOrder = sorted ? this.sortOrder : 0;\n            } else if (this.sortMode === 'multiple') {\n                let metaIndex = this.getMultiSortMetaIndex();\n\n                if (metaIndex > -1) {\n                    sorted = true;\n                    sortOrder = this.multiSortMeta[metaIndex].order;\n                }\n            }\n\n            return {\n                sorted,\n                sortOrder\n            };\n        },\n        sortableColumnIcon() {\n            const { sorted, sortOrder } = this.sortState;\n\n            if (!sorted) return SortAltIcon;\n            else if (sorted && sortOrder > 0) return SortAmountUpAltIcon;\n            else if (sorted && sortOrder < 0) return SortAmountDownIcon;\n\n            return null;\n        },\n        ariaSort() {\n            if (this.columnProp('sortable')) {\n                const { sorted, sortOrder } = this.sortState;\n\n                if (sorted && sortOrder < 0) return 'descending';\n                else if (sorted && sortOrder > 0) return 'ascending';\n                else return 'none';\n            } else {\n                return null;\n            }\n        }\n    },\n    components: {\n        Badge,\n        TTColumnFilter: ColumnFilter,\n        SortAltIcon: SortAltIcon,\n        SortAmountUpAltIcon: SortAmountUpAltIcon,\n        SortAmountDownIcon: SortAmountDownIcon\n    }\n};\n</script>\n","<template>\n    <td :style=\"containerStyle\" :class=\"containerClass\" role=\"cell\" v-bind=\"{ ...getColumnPT('root'), ...getColumnPT('bodyCell') }\" :data-p-frozen-column=\"columnProp('frozen')\">\n        <div :class=\"cx('bodyCellContent')\" v-bind=\"getColumnPT('bodyCellContent')\">\n            <button v-if=\"columnProp('expander')\" v-ripple type=\"button\" :class=\"cx('nodeToggleButton')\" @click=\"toggle\" :style=\"togglerStyle\" tabindex=\"-1\" v-bind=\"getColumnPT('nodeToggleButton')\" data-pc-group-section=\"rowactionbutton\">\n                <template v-if=\"node.loading && loadingMode === 'icon'\">\n                    <component v-if=\"templates['nodetoggleicon']\" :is=\"templates['nodetoggleicon']\" />\n                    <!-- TODO: Deprecated since v4.0-->\n                    <component v-if=\"templates['nodetogglericon']\" :is=\"templates['nodetogglericon']\" />\n                    <SpinnerIcon v-else spin v-bind=\"ptm('nodetoggleicon')\" />\n                </template>\n                <template v-else>\n                    <component v-if=\"column.children && column.children.rowtoggleicon\" :is=\"column.children.rowtoggleicon\" :node=\"node\" :expanded=\"expanded\" :class=\"cx('nodeToggleIcon')\" />\n                    <component v-else-if=\"templates['nodetoggleicon']\" :is=\"templates['nodetoggleicon']\" :node=\"node\" :expanded=\"expanded\" :class=\"cx('nodeToggleIcon')\" />\n                    <!-- TODO: Deprecated since v4.0-->\n                    <component v-else-if=\"column.children && column.children.rowtogglericon\" :is=\"column.children.rowtogglericon\" :node=\"node\" :expanded=\"expanded\" :class=\"cx('nodeToggleIcon')\" />\n                    <component v-else-if=\"expanded\" :is=\"node.expandedIcon ? 'span' : 'ChevronDownIcon'\" :class=\"cx('nodeToggleIcon')\" v-bind=\"getColumnPT('nodeToggleIcon')\" />\n                    <component v-else :is=\"node.collapsedIcon ? 'span' : 'ChevronRightIcon'\" :class=\"cx('nodeToggleIcon')\" v-bind=\"getColumnPT('nodeToggleIcon')\" />\n                </template>\n            </button>\n            <Checkbox\n                v-if=\"checkboxSelectionMode && columnProp('expander')\"\n                :modelValue=\"checked\"\n                :binary=\"true\"\n                :class=\"cx('pcNodeCheckbox')\"\n                :disabled=\"node.selectable === false\"\n                @change=\"toggleCheckbox\"\n                :tabindex=\"-1\"\n                :indeterminate=\"partialChecked\"\n                :unstyled=\"unstyled\"\n                :pt=\"getColumnCheckboxPT('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=\"column.children && column.children.body\" :is=\"column.children.body\" :node=\"node\" :column=\"column\" />\n            <template v-else>{{ resolveFieldData(node.data, columnProp('field')) }}</template>\n        </div>\n    </td>\n</template>\n\n<script>\nimport { getNextElementSibling, getOuterWidth, getPreviousElementSibling } from '@openuxkit/utils/dom';\nimport { resolveFieldData } from '@openuxkit/utils/object';\nimport BaseComponent from '@openvue/core/basecomponent';\nimport { getVNodeProp } from '@openvue/core/utils';\nimport CheckIcon from '@openvue/icons/check';\nimport ChevronDownIcon from '@openvue/icons/chevrondown';\nimport ChevronRightIcon from '@openvue/icons/chevronright';\nimport MinusIcon from '@openvue/icons/minus';\nimport SpinnerIcon from '@openvue/icons/spinner';\nimport Checkbox from 'openvue/checkbox';\nimport Ripple from 'openvue/ripple';\nimport { mergeProps } from 'vue';\n\nexport default {\n    name: 'BodyCell',\n    hostName: 'TreeTable',\n    extends: BaseComponent,\n    emits: ['node-toggle', 'checkbox-toggle'],\n    props: {\n        node: {\n            type: Object,\n            default: null\n        },\n        column: {\n            type: Object,\n            default: null\n        },\n        level: {\n            type: Number,\n            default: 0\n        },\n        indentation: {\n            type: Number,\n            default: 1\n        },\n        leaf: {\n            type: Boolean,\n            default: false\n        },\n        expanded: {\n            type: Boolean,\n            default: false\n        },\n        selectionMode: {\n            type: String,\n            default: null\n        },\n        checked: {\n            type: Boolean,\n            default: false\n        },\n        partialChecked: {\n            type: Boolean,\n            default: false\n        },\n        templates: {\n            type: Object,\n            default: null\n        },\n        index: {\n            type: Number,\n            default: null\n        },\n        loadingMode: {\n            type: String,\n            default: 'mask'\n        }\n    },\n    data() {\n        return {\n            styleObject: {}\n        };\n    },\n    mounted() {\n        if (this.columnProp('frozen')) {\n            this.updateStickyPosition();\n        }\n    },\n    updated() {\n        if (this.columnProp('frozen')) {\n            this.updateStickyPosition();\n        }\n    },\n    methods: {\n        toggle() {\n            this.$emit('node-toggle', this.node);\n        },\n        columnProp(prop) {\n            return getVNodeProp(this.column, prop);\n        },\n        getColumnPT(key) {\n            const columnMetaData = {\n                props: this.column.props,\n                parent: {\n                    instance: this,\n                    props: this.$props,\n                    state: this.$data\n                },\n                context: {\n                    index: this.index,\n                    selectable: this.$parentInstance.rowHover || this.$parentInstance.rowSelectionMode,\n                    selected: this.$parent.selected,\n                    frozen: this.columnProp('frozen'),\n                    scrollable: this.$parentInstance.scrollable,\n                    showGridlines: this.$parentInstance.showGridlines,\n                    size: this.$parentInstance?.size,\n                    node: this.node\n                }\n            };\n\n            return mergeProps(this.ptm(`column.${key}`, { column: columnMetaData }), this.ptm(`column.${key}`, columnMetaData), this.ptmo(this.getColumnProp(), key, columnMetaData));\n        },\n        getColumnProp() {\n            return this.column.props && this.column.props.pt ? this.column.props.pt : undefined; //@todo\n        },\n        getColumnCheckboxPT(key) {\n            const columnMetaData = {\n                props: this.column.props,\n                parent: {\n                    instance: this,\n                    props: this.$props,\n                    state: this.$data\n                },\n                context: {\n                    checked: this.checked,\n                    partialChecked: this.partialChecked,\n                    node: this.node\n                }\n            };\n\n            return mergeProps(this.ptm(`column.${key}`, { column: columnMetaData }), this.ptm(`column.${key}`, columnMetaData), this.ptmo(this.getColumnProp(), key, columnMetaData));\n        },\n        updateStickyPosition() {\n            if (this.columnProp('frozen')) {\n                let align = this.columnProp('alignFrozen');\n\n                if (align === 'right') {\n                    let pos = 0;\n                    let next = getNextElementSibling(this.$el, '[data-p-frozen-column=\"true\"]');\n\n                    if (next) {\n                        pos = getOuterWidth(next) + parseFloat(next.style['inset-inline-end'] || 0);\n                    }\n\n                    this.styleObject.insetInlineEnd = pos + 'px';\n                } else {\n                    let pos = 0;\n                    let prev = getPreviousElementSibling(this.$el, '[data-p-frozen-column=\"true\"]');\n\n                    if (prev) {\n                        pos = getOuterWidth(prev) + parseFloat(prev.style['inset-inline-start'] || 0);\n                    }\n\n                    this.styleObject.insetInlineStart = pos + 'px';\n                }\n            }\n        },\n        resolveFieldData(rowData, field) {\n            return resolveFieldData(rowData, field);\n        },\n        toggleCheckbox() {\n            this.$emit('checkbox-toggle');\n        }\n    },\n    computed: {\n        containerClass() {\n            return [this.columnProp('bodyClass'), this.columnProp('class'), this.cx('bodyCell')];\n        },\n        containerStyle() {\n            let bodyStyle = this.columnProp('bodyStyle');\n            let columnStyle = this.columnProp('style');\n\n            return this.columnProp('frozen') ? [columnStyle, bodyStyle, this.styleObject] : [columnStyle, bodyStyle];\n        },\n        togglerStyle() {\n            return {\n                marginLeft: this.level * this.indentation + 'rem',\n                visibility: this.leaf ? 'hidden' : 'visible'\n            };\n        },\n        checkboxSelectionMode() {\n            return this.selectionMode === 'checkbox';\n        }\n    },\n    components: {\n        Checkbox,\n        ChevronRightIcon,\n        ChevronDownIcon,\n        CheckIcon,\n        MinusIcon,\n        SpinnerIcon\n    },\n    directives: {\n        ripple: Ripple\n    }\n};\n</script>\n","<template>\n    <td :style=\"containerStyle\" :class=\"containerClass\" role=\"cell\" v-bind=\"{ ...getColumnPT('root'), ...getColumnPT('bodyCell') }\" :data-p-frozen-column=\"columnProp('frozen')\">\n        <div :class=\"cx('bodyCellContent')\" v-bind=\"getColumnPT('bodyCellContent')\">\n            <button v-if=\"columnProp('expander')\" v-ripple type=\"button\" :class=\"cx('nodeToggleButton')\" @click=\"toggle\" :style=\"togglerStyle\" tabindex=\"-1\" v-bind=\"getColumnPT('nodeToggleButton')\" data-pc-group-section=\"rowactionbutton\">\n                <template v-if=\"node.loading && loadingMode === 'icon'\">\n                    <component v-if=\"templates['nodetoggleicon']\" :is=\"templates['nodetoggleicon']\" />\n                    <!-- TODO: Deprecated since v4.0-->\n                    <component v-if=\"templates['nodetogglericon']\" :is=\"templates['nodetogglericon']\" />\n                    <SpinnerIcon v-else spin v-bind=\"ptm('nodetoggleicon')\" />\n                </template>\n                <template v-else>\n                    <component v-if=\"column.children && column.children.rowtoggleicon\" :is=\"column.children.rowtoggleicon\" :node=\"node\" :expanded=\"expanded\" :class=\"cx('nodeToggleIcon')\" />\n                    <component v-else-if=\"templates['nodetoggleicon']\" :is=\"templates['nodetoggleicon']\" :node=\"node\" :expanded=\"expanded\" :class=\"cx('nodeToggleIcon')\" />\n                    <!-- TODO: Deprecated since v4.0-->\n                    <component v-else-if=\"column.children && column.children.rowtogglericon\" :is=\"column.children.rowtogglericon\" :node=\"node\" :expanded=\"expanded\" :class=\"cx('nodeToggleIcon')\" />\n                    <component v-else-if=\"expanded\" :is=\"node.expandedIcon ? 'span' : 'ChevronDownIcon'\" :class=\"cx('nodeToggleIcon')\" v-bind=\"getColumnPT('nodeToggleIcon')\" />\n                    <component v-else :is=\"node.collapsedIcon ? 'span' : 'ChevronRightIcon'\" :class=\"cx('nodeToggleIcon')\" v-bind=\"getColumnPT('nodeToggleIcon')\" />\n                </template>\n            </button>\n            <Checkbox\n                v-if=\"checkboxSelectionMode && columnProp('expander')\"\n                :modelValue=\"checked\"\n                :binary=\"true\"\n                :class=\"cx('pcNodeCheckbox')\"\n                :disabled=\"node.selectable === false\"\n                @change=\"toggleCheckbox\"\n                :tabindex=\"-1\"\n                :indeterminate=\"partialChecked\"\n                :unstyled=\"unstyled\"\n                :pt=\"getColumnCheckboxPT('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=\"column.children && column.children.body\" :is=\"column.children.body\" :node=\"node\" :column=\"column\" />\n            <template v-else>{{ resolveFieldData(node.data, columnProp('field')) }}</template>\n        </div>\n    </td>\n</template>\n\n<script>\nimport { getNextElementSibling, getOuterWidth, getPreviousElementSibling } from '@openuxkit/utils/dom';\nimport { resolveFieldData } from '@openuxkit/utils/object';\nimport BaseComponent from '@openvue/core/basecomponent';\nimport { getVNodeProp } from '@openvue/core/utils';\nimport CheckIcon from '@openvue/icons/check';\nimport ChevronDownIcon from '@openvue/icons/chevrondown';\nimport ChevronRightIcon from '@openvue/icons/chevronright';\nimport MinusIcon from '@openvue/icons/minus';\nimport SpinnerIcon from '@openvue/icons/spinner';\nimport Checkbox from 'openvue/checkbox';\nimport Ripple from 'openvue/ripple';\nimport { mergeProps } from 'vue';\n\nexport default {\n    name: 'BodyCell',\n    hostName: 'TreeTable',\n    extends: BaseComponent,\n    emits: ['node-toggle', 'checkbox-toggle'],\n    props: {\n        node: {\n            type: Object,\n            default: null\n        },\n        column: {\n            type: Object,\n            default: null\n        },\n        level: {\n            type: Number,\n            default: 0\n        },\n        indentation: {\n            type: Number,\n            default: 1\n        },\n        leaf: {\n            type: Boolean,\n            default: false\n        },\n        expanded: {\n            type: Boolean,\n            default: false\n        },\n        selectionMode: {\n            type: String,\n            default: null\n        },\n        checked: {\n            type: Boolean,\n            default: false\n        },\n        partialChecked: {\n            type: Boolean,\n            default: false\n        },\n        templates: {\n            type: Object,\n            default: null\n        },\n        index: {\n            type: Number,\n            default: null\n        },\n        loadingMode: {\n            type: String,\n            default: 'mask'\n        }\n    },\n    data() {\n        return {\n            styleObject: {}\n        };\n    },\n    mounted() {\n        if (this.columnProp('frozen')) {\n            this.updateStickyPosition();\n        }\n    },\n    updated() {\n        if (this.columnProp('frozen')) {\n            this.updateStickyPosition();\n        }\n    },\n    methods: {\n        toggle() {\n            this.$emit('node-toggle', this.node);\n        },\n        columnProp(prop) {\n            return getVNodeProp(this.column, prop);\n        },\n        getColumnPT(key) {\n            const columnMetaData = {\n                props: this.column.props,\n                parent: {\n                    instance: this,\n                    props: this.$props,\n                    state: this.$data\n                },\n                context: {\n                    index: this.index,\n                    selectable: this.$parentInstance.rowHover || this.$parentInstance.rowSelectionMode,\n                    selected: this.$parent.selected,\n                    frozen: this.columnProp('frozen'),\n                    scrollable: this.$parentInstance.scrollable,\n                    showGridlines: this.$parentInstance.showGridlines,\n                    size: this.$parentInstance?.size,\n                    node: this.node\n                }\n            };\n\n            return mergeProps(this.ptm(`column.${key}`, { column: columnMetaData }), this.ptm(`column.${key}`, columnMetaData), this.ptmo(this.getColumnProp(), key, columnMetaData));\n        },\n        getColumnProp() {\n            return this.column.props && this.column.props.pt ? this.column.props.pt : undefined; //@todo\n        },\n        getColumnCheckboxPT(key) {\n            const columnMetaData = {\n                props: this.column.props,\n                parent: {\n                    instance: this,\n                    props: this.$props,\n                    state: this.$data\n                },\n                context: {\n                    checked: this.checked,\n                    partialChecked: this.partialChecked,\n                    node: this.node\n                }\n            };\n\n            return mergeProps(this.ptm(`column.${key}`, { column: columnMetaData }), this.ptm(`column.${key}`, columnMetaData), this.ptmo(this.getColumnProp(), key, columnMetaData));\n        },\n        updateStickyPosition() {\n            if (this.columnProp('frozen')) {\n                let align = this.columnProp('alignFrozen');\n\n                if (align === 'right') {\n                    let pos = 0;\n                    let next = getNextElementSibling(this.$el, '[data-p-frozen-column=\"true\"]');\n\n                    if (next) {\n                        pos = getOuterWidth(next) + parseFloat(next.style['inset-inline-end'] || 0);\n                    }\n\n                    this.styleObject.insetInlineEnd = pos + 'px';\n                } else {\n                    let pos = 0;\n                    let prev = getPreviousElementSibling(this.$el, '[data-p-frozen-column=\"true\"]');\n\n                    if (prev) {\n                        pos = getOuterWidth(prev) + parseFloat(prev.style['inset-inline-start'] || 0);\n                    }\n\n                    this.styleObject.insetInlineStart = pos + 'px';\n                }\n            }\n        },\n        resolveFieldData(rowData, field) {\n            return resolveFieldData(rowData, field);\n        },\n        toggleCheckbox() {\n            this.$emit('checkbox-toggle');\n        }\n    },\n    computed: {\n        containerClass() {\n            return [this.columnProp('bodyClass'), this.columnProp('class'), this.cx('bodyCell')];\n        },\n        containerStyle() {\n            let bodyStyle = this.columnProp('bodyStyle');\n            let columnStyle = this.columnProp('style');\n\n            return this.columnProp('frozen') ? [columnStyle, bodyStyle, this.styleObject] : [columnStyle, bodyStyle];\n        },\n        togglerStyle() {\n            return {\n                marginLeft: this.level * this.indentation + 'rem',\n                visibility: this.leaf ? 'hidden' : 'visible'\n            };\n        },\n        checkboxSelectionMode() {\n            return this.selectionMode === 'checkbox';\n        }\n    },\n    components: {\n        Checkbox,\n        ChevronRightIcon,\n        ChevronDownIcon,\n        CheckIcon,\n        MinusIcon,\n        SpinnerIcon\n    },\n    directives: {\n        ripple: Ripple\n    }\n};\n</script>\n","<template>\n    <tr\n        ref=\"node\"\n        :class=\"containerClass\"\n        :style=\"node.style\"\n        :tabindex=\"tabindex\"\n        role=\"row\"\n        :aria-expanded=\"node.children && node.children.length ? expanded : undefined\"\n        :aria-level=\"level + 1\"\n        :aria-setsize=\"ariaSetSize\"\n        :aria-posinset=\"ariaPosInset\"\n        :aria-selected=\"getAriaSelected\"\n        :aria-checked=\"checked || undefined\"\n        @click=\"onClick\"\n        @keydown=\"onKeyDown\"\n        @touchend=\"onTouchEnd\"\n        @contextmenu=\"onRowRightClick\"\n        v-bind=\"ptm('row', ptmOptions)\"\n        :data-p-selected=\"selected\"\n        :data-p-selected-contextmenu=\"contextMenuSelection && isSelectedWithContextMenu\"\n    >\n        <template v-for=\"(col, i) of columns\" :key=\"columnProp(col, 'columnKey') || columnProp(col, 'field') || i\">\n            <TTBodyCell\n                v-if=\"!columnProp(col, 'hidden')\"\n                :column=\"col\"\n                :node=\"node\"\n                :level=\"level\"\n                :leaf=\"leaf\"\n                :indentation=\"indentation\"\n                :expanded=\"expanded\"\n                :selectionMode=\"selectionMode\"\n                :checked=\"checked\"\n                :partialChecked=\"partialChecked\"\n                :templates=\"templates\"\n                @node-toggle=\"$emit('node-toggle', $event)\"\n                @checkbox-toggle=\"toggleCheckbox\"\n                :index=\"i\"\n                :loadingMode=\"loadingMode\"\n                :unstyled=\"unstyled\"\n                :pt=\"pt\"\n            ></TTBodyCell>\n        </template>\n    </tr>\n    <template v-if=\"expanded && node.children && node.children.length\">\n        <TreeTableRow\n            v-for=\"childNode of node.children\"\n            :key=\"nodeKey(childNode)\"\n            :dataKey=\"dataKey\"\n            :columns=\"columns\"\n            :node=\"childNode\"\n            :parentNode=\"node\"\n            :level=\"level + 1\"\n            :expandedKeys=\"expandedKeys\"\n            :selectionMode=\"selectionMode\"\n            :selectionKeys=\"selectionKeys\"\n            :contextMenu=\"contextMenu\"\n            :contextMenuSelection=\"contextMenuSelection\"\n            :indentation=\"indentation\"\n            :ariaPosInset=\"node.children.indexOf(childNode) + 1\"\n            :ariaSetSize=\"node.children.length\"\n            :templates=\"templates\"\n            @node-toggle=\"$emit('node-toggle', $event)\"\n            @node-click=\"$emit('node-click', $event)\"\n            @row-rightclick=\"$emit('row-rightclick', $event)\"\n            @checkbox-change=\"onCheckboxChange\"\n            :unstyled=\"unstyled\"\n            :pt=\"pt\"\n        />\n    </template>\n</template>\n\n<script>\nimport { find, findSingle, focus, getAttribute, isClickable } from '@openuxkit/utils/dom';\nimport { equals, resolveFieldData } from '@openuxkit/utils/object';\nimport BaseComponent from '@openvue/core/basecomponent';\nimport { getVNodeProp } from '@openvue/core/utils';\nimport BodyCell from './BodyCell.vue';\n\nexport default {\n    name: 'TreeTableRow',\n    hostName: 'TreeTable',\n    extends: BaseComponent,\n    emits: ['node-click', 'node-toggle', 'checkbox-change', 'nodeClick', 'nodeToggle', 'checkboxChange', 'row-rightclick', 'rowRightclick'],\n    props: {\n        node: {\n            type: null,\n            default: null\n        },\n        dataKey: {\n            type: [String, Function],\n            default: 'key'\n        },\n        parentNode: {\n            type: null,\n            default: null\n        },\n        columns: {\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        level: {\n            type: Number,\n            default: 0\n        },\n        indentation: {\n            type: Number,\n            default: 1\n        },\n        tabindex: {\n            type: Number,\n            default: -1\n        },\n        ariaSetSize: {\n            type: Number,\n            default: null\n        },\n        ariaPosInset: {\n            type: Number,\n            default: null\n        },\n        loadingMode: {\n            type: String,\n            default: 'mask'\n        },\n        templates: {\n            type: Object,\n            default: null\n        },\n        contextMenu: {\n            type: Boolean,\n            default: false\n        },\n        contextMenuSelection: {\n            type: Object,\n            default: null\n        }\n    },\n    nodeTouched: false,\n    methods: {\n        columnProp(col, prop) {\n            return getVNodeProp(col, prop);\n        },\n        toggle() {\n            this.$emit('node-toggle', this.node);\n        },\n        onClick(event) {\n            if (isClickable(event.target) || getAttribute(event.target, 'data-pc-section') === 'nodetogglebutton' || getAttribute(event.target, 'data-pc-section') === 'nodetoggleicon' || event.target.tagName === 'path') {\n                return;\n            }\n\n            this.setTabIndexForSelectionMode(event, this.nodeTouched);\n\n            this.$emit('node-click', {\n                originalEvent: event,\n                nodeTouched: this.nodeTouched,\n                node: this.node\n            });\n            this.nodeTouched = false;\n        },\n        onRowRightClick(event) {\n            this.$emit('row-rightclick', {\n                originalEvent: event,\n                node: this.node\n            });\n        },\n        onTouchEnd() {\n            this.nodeTouched = true;\n        },\n        nodeKey(node) {\n            return resolveFieldData(node, this.dataKey);\n        },\n        onKeyDown(event, item) {\n            switch (event.code) {\n                case 'ArrowDown':\n                    this.onArrowDownKey(event);\n                    break;\n\n                case 'ArrowUp':\n                    this.onArrowUpKey(event);\n                    break;\n\n                case 'ArrowLeft':\n                    this.onArrowLeftKey(event);\n                    break;\n\n                case 'ArrowRight':\n                    this.onArrowRightKey(event);\n                    break;\n\n                case 'Home':\n                    this.onHomeKey(event);\n                    break;\n\n                case 'End':\n                    this.onEndKey(event);\n                    break;\n\n                case 'Enter':\n                case 'NumpadEnter':\n                case 'Space':\n                    if (!isClickable(event.target)) {\n                        this.onEnterKey(event, item);\n                    }\n\n                    break;\n\n                case 'Tab':\n                    this.onTabKey(event);\n                    break;\n\n                default:\n                    break;\n            }\n        },\n        onArrowDownKey(event) {\n            const nextElementSibling = event.currentTarget.nextElementSibling;\n\n            nextElementSibling && this.focusRowChange(event.currentTarget, nextElementSibling);\n\n            event.preventDefault();\n        },\n        onArrowUpKey(event) {\n            const previousElementSibling = event.currentTarget.previousElementSibling;\n\n            previousElementSibling && this.focusRowChange(event.currentTarget, previousElementSibling);\n\n            event.preventDefault();\n        },\n        onArrowRightKey(event) {\n            const ishiddenIcon = findSingle(event.currentTarget, 'button').style.visibility === 'hidden';\n            const togglerElement = findSingle(this.$refs.node, '[data-pc-section=\"nodetogglebutton\"]');\n\n            if (ishiddenIcon) return;\n\n            !this.expanded && togglerElement.click();\n\n            this.$nextTick(() => {\n                this.onArrowDownKey(event);\n            });\n\n            event.preventDefault();\n        },\n        onArrowLeftKey(event) {\n            if (this.level === 0 && !this.expanded) {\n                return;\n            }\n\n            const currentTarget = event.currentTarget;\n            const ishiddenIcon = findSingle(currentTarget, 'button').style.visibility === 'hidden';\n            const togglerElement = findSingle(currentTarget, '[data-pc-section=\"nodetogglebutton\"]');\n\n            if (this.expanded && !ishiddenIcon) {\n                togglerElement.click();\n\n                return;\n            }\n\n            const target = this.findBeforeClickableNode(currentTarget);\n\n            target && this.focusRowChange(currentTarget, target);\n        },\n        onHomeKey(event) {\n            const findFirstElement = findSingle(event.currentTarget.parentElement, `tr[aria-level=\"${this.level + 1}\"]`);\n\n            findFirstElement && focus(findFirstElement);\n\n            event.preventDefault();\n        },\n        onEndKey(event) {\n            const nodes = find(event.currentTarget.parentElement, `tr[aria-level=\"${this.level + 1}\"]`);\n            const findFirstElement = nodes[nodes.length - 1];\n\n            focus(findFirstElement);\n\n            event.preventDefault();\n        },\n        onEnterKey(event) {\n            event.preventDefault();\n            this.setTabIndexForSelectionMode(event, this.nodeTouched);\n\n            if (this.selectionMode === 'checkbox') {\n                this.toggleCheckbox();\n\n                return;\n            }\n\n            this.$emit('node-click', {\n                originalEvent: event,\n                nodeTouched: this.nodeTouched,\n                node: this.node\n            });\n\n            this.nodeTouched = false;\n        },\n        onTabKey() {\n            const rows = [...find(this.$refs.node.parentElement, 'tr')];\n            const hasSelectedRow = rows.some((row) => getAttribute(row, 'data-p-selected') || row.getAttribute('aria-checked') === 'true');\n\n            rows.forEach((row) => {\n                row.tabIndex = -1;\n            });\n\n            if (hasSelectedRow) {\n                const selectedNodes = rows.filter((node) => getAttribute(node, 'data-p-selected') || node.getAttribute('aria-checked') === 'true');\n\n                selectedNodes[0].tabIndex = 0;\n\n                return;\n            }\n\n            rows[0].tabIndex = 0;\n        },\n        focusRowChange(firstFocusableRow, currentFocusedRow) {\n            firstFocusableRow.tabIndex = '-1';\n            currentFocusedRow.tabIndex = '0';\n            focus(currentFocusedRow);\n        },\n        findBeforeClickableNode(node) {\n            const prevNode = node.previousElementSibling;\n\n            if (prevNode) {\n                const prevNodeButton = prevNode.querySelector('button');\n\n                if (prevNodeButton && prevNodeButton.style.visibility !== 'hidden') {\n                    return prevNode;\n                }\n\n                return this.findBeforeClickableNode(prevNode);\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) selectionKeys[this.nodeKey(node)] = { checked: true, partialChecked: false };\n            else delete selectionKeys[this.nodeKey(node)];\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[this.nodeKey(child)] && _selectionKeys[this.nodeKey(child)].checked) checkedChildCount++;\n                else if (_selectionKeys[this.nodeKey(child)] && _selectionKeys[this.nodeKey(child)].partialChecked) childPartialSelected = true;\n            }\n\n            if (check && checkedChildCount === this.node.children.length) {\n                _selectionKeys[this.nodeKey(this.node)] = { checked: true, partialChecked: false };\n            } else {\n                if (!check) {\n                    delete _selectionKeys[this.nodeKey(this.node)];\n                }\n\n                if (childPartialSelected || (checkedChildCount > 0 && checkedChildCount !== this.node.children.length)) _selectionKeys[this.nodeKey(this.node)] = { checked: false, partialChecked: true };\n                else _selectionKeys[this.nodeKey(this.node)] = { checked: false, partialChecked: false };\n            }\n\n            this.$emit('checkbox-change', {\n                node: event.node,\n                check: event.check,\n                selectionKeys: _selectionKeys\n            });\n        },\n        onCheckboxChange(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[this.nodeKey(child)] && _selectionKeys[this.nodeKey(child)].checked) checkedChildCount++;\n                else if (_selectionKeys[this.nodeKey(child)] && _selectionKeys[this.nodeKey(child)].partialChecked) childPartialSelected = true;\n            }\n\n            if (check && checkedChildCount === this.node.children.length) {\n                _selectionKeys[this.nodeKey(this.node)] = { checked: true, partialChecked: false };\n            } else {\n                if (!check) {\n                    delete _selectionKeys[this.nodeKey(this.node)];\n                }\n\n                if (childPartialSelected || (checkedChildCount > 0 && checkedChildCount !== this.node.children.length)) _selectionKeys[this.nodeKey(this.node)] = { checked: false, partialChecked: true };\n                else _selectionKeys[this.nodeKey(this.node)] = { checked: false, partialChecked: false };\n            }\n\n            this.$emit('checkbox-change', {\n                node: event.node,\n                check: event.check,\n                selectionKeys: _selectionKeys\n            });\n        },\n        setTabIndexForSelectionMode(event, nodeTouched) {\n            if (this.selectionMode !== null) {\n                const elements = [...find(this.$refs.node.parentElement, 'tr')];\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    },\n    computed: {\n        containerClass() {\n            return [this.node.styleClass, this.cx('row')];\n        },\n        expanded() {\n            return this.expandedKeys && this.expandedKeys[this.nodeKey(this.node)] === true;\n        },\n        leaf() {\n            return this.node.leaf === false ? false : !(this.node.children && this.node.children.length);\n        },\n        selected() {\n            return this.selectionMode && this.selectionKeys ? this.selectionKeys[this.nodeKey(this.node)] === true : false;\n        },\n        isSelectedWithContextMenu() {\n            if (this.node && this.contextMenuSelection) {\n                return equals(this.node, this.contextMenuSelection, this.dataKey);\n            }\n\n            return false;\n        },\n        checked() {\n            return this.selectionKeys ? this.selectionKeys[this.nodeKey(this.node)] && this.selectionKeys[this.nodeKey(this.node)].checked : false;\n        },\n        partialChecked() {\n            return this.selectionKeys ? this.selectionKeys[this.nodeKey(this.node)] && this.selectionKeys[this.nodeKey(this.node)].partialChecked : false;\n        },\n        getAriaSelected() {\n            return this.selectionMode === 'single' || this.selectionMode === 'multiple' ? this.selected : null;\n        },\n        ptmOptions() {\n            return {\n                context: {\n                    selectable: this.$parentInstance.rowHover || this.$parentInstance.rowSelectionMode,\n                    selected: this.selected,\n                    scrollable: this.$parentInstance.scrollable\n                }\n            };\n        }\n    },\n    components: {\n        TTBodyCell: BodyCell\n    }\n};\n</script>\n","<template>\n    <tr\n        ref=\"node\"\n        :class=\"containerClass\"\n        :style=\"node.style\"\n        :tabindex=\"tabindex\"\n        role=\"row\"\n        :aria-expanded=\"node.children && node.children.length ? expanded : undefined\"\n        :aria-level=\"level + 1\"\n        :aria-setsize=\"ariaSetSize\"\n        :aria-posinset=\"ariaPosInset\"\n        :aria-selected=\"getAriaSelected\"\n        :aria-checked=\"checked || undefined\"\n        @click=\"onClick\"\n        @keydown=\"onKeyDown\"\n        @touchend=\"onTouchEnd\"\n        @contextmenu=\"onRowRightClick\"\n        v-bind=\"ptm('row', ptmOptions)\"\n        :data-p-selected=\"selected\"\n        :data-p-selected-contextmenu=\"contextMenuSelection && isSelectedWithContextMenu\"\n    >\n        <template v-for=\"(col, i) of columns\" :key=\"columnProp(col, 'columnKey') || columnProp(col, 'field') || i\">\n            <TTBodyCell\n                v-if=\"!columnProp(col, 'hidden')\"\n                :column=\"col\"\n                :node=\"node\"\n                :level=\"level\"\n                :leaf=\"leaf\"\n                :indentation=\"indentation\"\n                :expanded=\"expanded\"\n                :selectionMode=\"selectionMode\"\n                :checked=\"checked\"\n                :partialChecked=\"partialChecked\"\n                :templates=\"templates\"\n                @node-toggle=\"$emit('node-toggle', $event)\"\n                @checkbox-toggle=\"toggleCheckbox\"\n                :index=\"i\"\n                :loadingMode=\"loadingMode\"\n                :unstyled=\"unstyled\"\n                :pt=\"pt\"\n            ></TTBodyCell>\n        </template>\n    </tr>\n    <template v-if=\"expanded && node.children && node.children.length\">\n        <TreeTableRow\n            v-for=\"childNode of node.children\"\n            :key=\"nodeKey(childNode)\"\n            :dataKey=\"dataKey\"\n            :columns=\"columns\"\n            :node=\"childNode\"\n            :parentNode=\"node\"\n            :level=\"level + 1\"\n            :expandedKeys=\"expandedKeys\"\n            :selectionMode=\"selectionMode\"\n            :selectionKeys=\"selectionKeys\"\n            :contextMenu=\"contextMenu\"\n            :contextMenuSelection=\"contextMenuSelection\"\n            :indentation=\"indentation\"\n            :ariaPosInset=\"node.children.indexOf(childNode) + 1\"\n            :ariaSetSize=\"node.children.length\"\n            :templates=\"templates\"\n            @node-toggle=\"$emit('node-toggle', $event)\"\n            @node-click=\"$emit('node-click', $event)\"\n            @row-rightclick=\"$emit('row-rightclick', $event)\"\n            @checkbox-change=\"onCheckboxChange\"\n            :unstyled=\"unstyled\"\n            :pt=\"pt\"\n        />\n    </template>\n</template>\n\n<script>\nimport { find, findSingle, focus, getAttribute, isClickable } from '@openuxkit/utils/dom';\nimport { equals, resolveFieldData } from '@openuxkit/utils/object';\nimport BaseComponent from '@openvue/core/basecomponent';\nimport { getVNodeProp } from '@openvue/core/utils';\nimport BodyCell from './BodyCell.vue';\n\nexport default {\n    name: 'TreeTableRow',\n    hostName: 'TreeTable',\n    extends: BaseComponent,\n    emits: ['node-click', 'node-toggle', 'checkbox-change', 'nodeClick', 'nodeToggle', 'checkboxChange', 'row-rightclick', 'rowRightclick'],\n    props: {\n        node: {\n            type: null,\n            default: null\n        },\n        dataKey: {\n            type: [String, Function],\n            default: 'key'\n        },\n        parentNode: {\n            type: null,\n            default: null\n        },\n        columns: {\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        level: {\n            type: Number,\n            default: 0\n        },\n        indentation: {\n            type: Number,\n            default: 1\n        },\n        tabindex: {\n            type: Number,\n            default: -1\n        },\n        ariaSetSize: {\n            type: Number,\n            default: null\n        },\n        ariaPosInset: {\n            type: Number,\n            default: null\n        },\n        loadingMode: {\n            type: String,\n            default: 'mask'\n        },\n        templates: {\n            type: Object,\n            default: null\n        },\n        contextMenu: {\n            type: Boolean,\n            default: false\n        },\n        contextMenuSelection: {\n            type: Object,\n            default: null\n        }\n    },\n    nodeTouched: false,\n    methods: {\n        columnProp(col, prop) {\n            return getVNodeProp(col, prop);\n        },\n        toggle() {\n            this.$emit('node-toggle', this.node);\n        },\n        onClick(event) {\n            if (isClickable(event.target) || getAttribute(event.target, 'data-pc-section') === 'nodetogglebutton' || getAttribute(event.target, 'data-pc-section') === 'nodetoggleicon' || event.target.tagName === 'path') {\n                return;\n            }\n\n            this.setTabIndexForSelectionMode(event, this.nodeTouched);\n\n            this.$emit('node-click', {\n                originalEvent: event,\n                nodeTouched: this.nodeTouched,\n                node: this.node\n            });\n            this.nodeTouched = false;\n        },\n        onRowRightClick(event) {\n            this.$emit('row-rightclick', {\n                originalEvent: event,\n                node: this.node\n            });\n        },\n        onTouchEnd() {\n            this.nodeTouched = true;\n        },\n        nodeKey(node) {\n            return resolveFieldData(node, this.dataKey);\n        },\n        onKeyDown(event, item) {\n            switch (event.code) {\n                case 'ArrowDown':\n                    this.onArrowDownKey(event);\n                    break;\n\n                case 'ArrowUp':\n                    this.onArrowUpKey(event);\n                    break;\n\n                case 'ArrowLeft':\n                    this.onArrowLeftKey(event);\n                    break;\n\n                case 'ArrowRight':\n                    this.onArrowRightKey(event);\n                    break;\n\n                case 'Home':\n                    this.onHomeKey(event);\n                    break;\n\n                case 'End':\n                    this.onEndKey(event);\n                    break;\n\n                case 'Enter':\n                case 'NumpadEnter':\n                case 'Space':\n                    if (!isClickable(event.target)) {\n                        this.onEnterKey(event, item);\n                    }\n\n                    break;\n\n                case 'Tab':\n                    this.onTabKey(event);\n                    break;\n\n                default:\n                    break;\n            }\n        },\n        onArrowDownKey(event) {\n            const nextElementSibling = event.currentTarget.nextElementSibling;\n\n            nextElementSibling && this.focusRowChange(event.currentTarget, nextElementSibling);\n\n            event.preventDefault();\n        },\n        onArrowUpKey(event) {\n            const previousElementSibling = event.currentTarget.previousElementSibling;\n\n            previousElementSibling && this.focusRowChange(event.currentTarget, previousElementSibling);\n\n            event.preventDefault();\n        },\n        onArrowRightKey(event) {\n            const ishiddenIcon = findSingle(event.currentTarget, 'button').style.visibility === 'hidden';\n            const togglerElement = findSingle(this.$refs.node, '[data-pc-section=\"nodetogglebutton\"]');\n\n            if (ishiddenIcon) return;\n\n            !this.expanded && togglerElement.click();\n\n            this.$nextTick(() => {\n                this.onArrowDownKey(event);\n            });\n\n            event.preventDefault();\n        },\n        onArrowLeftKey(event) {\n            if (this.level === 0 && !this.expanded) {\n                return;\n            }\n\n            const currentTarget = event.currentTarget;\n            const ishiddenIcon = findSingle(currentTarget, 'button').style.visibility === 'hidden';\n            const togglerElement = findSingle(currentTarget, '[data-pc-section=\"nodetogglebutton\"]');\n\n            if (this.expanded && !ishiddenIcon) {\n                togglerElement.click();\n\n                return;\n            }\n\n            const target = this.findBeforeClickableNode(currentTarget);\n\n            target && this.focusRowChange(currentTarget, target);\n        },\n        onHomeKey(event) {\n            const findFirstElement = findSingle(event.currentTarget.parentElement, `tr[aria-level=\"${this.level + 1}\"]`);\n\n            findFirstElement && focus(findFirstElement);\n\n            event.preventDefault();\n        },\n        onEndKey(event) {\n            const nodes = find(event.currentTarget.parentElement, `tr[aria-level=\"${this.level + 1}\"]`);\n            const findFirstElement = nodes[nodes.length - 1];\n\n            focus(findFirstElement);\n\n            event.preventDefault();\n        },\n        onEnterKey(event) {\n            event.preventDefault();\n            this.setTabIndexForSelectionMode(event, this.nodeTouched);\n\n            if (this.selectionMode === 'checkbox') {\n                this.toggleCheckbox();\n\n                return;\n            }\n\n            this.$emit('node-click', {\n                originalEvent: event,\n                nodeTouched: this.nodeTouched,\n                node: this.node\n            });\n\n            this.nodeTouched = false;\n        },\n        onTabKey() {\n            const rows = [...find(this.$refs.node.parentElement, 'tr')];\n            const hasSelectedRow = rows.some((row) => getAttribute(row, 'data-p-selected') || row.getAttribute('aria-checked') === 'true');\n\n            rows.forEach((row) => {\n                row.tabIndex = -1;\n            });\n\n            if (hasSelectedRow) {\n                const selectedNodes = rows.filter((node) => getAttribute(node, 'data-p-selected') || node.getAttribute('aria-checked') === 'true');\n\n                selectedNodes[0].tabIndex = 0;\n\n                return;\n            }\n\n            rows[0].tabIndex = 0;\n        },\n        focusRowChange(firstFocusableRow, currentFocusedRow) {\n            firstFocusableRow.tabIndex = '-1';\n            currentFocusedRow.tabIndex = '0';\n            focus(currentFocusedRow);\n        },\n        findBeforeClickableNode(node) {\n            const prevNode = node.previousElementSibling;\n\n            if (prevNode) {\n                const prevNodeButton = prevNode.querySelector('button');\n\n                if (prevNodeButton && prevNodeButton.style.visibility !== 'hidden') {\n                    return prevNode;\n                }\n\n                return this.findBeforeClickableNode(prevNode);\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) selectionKeys[this.nodeKey(node)] = { checked: true, partialChecked: false };\n            else delete selectionKeys[this.nodeKey(node)];\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[this.nodeKey(child)] && _selectionKeys[this.nodeKey(child)].checked) checkedChildCount++;\n                else if (_selectionKeys[this.nodeKey(child)] && _selectionKeys[this.nodeKey(child)].partialChecked) childPartialSelected = true;\n            }\n\n            if (check && checkedChildCount === this.node.children.length) {\n                _selectionKeys[this.nodeKey(this.node)] = { checked: true, partialChecked: false };\n            } else {\n                if (!check) {\n                    delete _selectionKeys[this.nodeKey(this.node)];\n                }\n\n                if (childPartialSelected || (checkedChildCount > 0 && checkedChildCount !== this.node.children.length)) _selectionKeys[this.nodeKey(this.node)] = { checked: false, partialChecked: true };\n                else _selectionKeys[this.nodeKey(this.node)] = { checked: false, partialChecked: false };\n            }\n\n            this.$emit('checkbox-change', {\n                node: event.node,\n                check: event.check,\n                selectionKeys: _selectionKeys\n            });\n        },\n        onCheckboxChange(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[this.nodeKey(child)] && _selectionKeys[this.nodeKey(child)].checked) checkedChildCount++;\n                else if (_selectionKeys[this.nodeKey(child)] && _selectionKeys[this.nodeKey(child)].partialChecked) childPartialSelected = true;\n            }\n\n            if (check && checkedChildCount === this.node.children.length) {\n                _selectionKeys[this.nodeKey(this.node)] = { checked: true, partialChecked: false };\n            } else {\n                if (!check) {\n                    delete _selectionKeys[this.nodeKey(this.node)];\n                }\n\n                if (childPartialSelected || (checkedChildCount > 0 && checkedChildCount !== this.node.children.length)) _selectionKeys[this.nodeKey(this.node)] = { checked: false, partialChecked: true };\n                else _selectionKeys[this.nodeKey(this.node)] = { checked: false, partialChecked: false };\n            }\n\n            this.$emit('checkbox-change', {\n                node: event.node,\n                check: event.check,\n                selectionKeys: _selectionKeys\n            });\n        },\n        setTabIndexForSelectionMode(event, nodeTouched) {\n            if (this.selectionMode !== null) {\n                const elements = [...find(this.$refs.node.parentElement, 'tr')];\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    },\n    computed: {\n        containerClass() {\n            return [this.node.styleClass, this.cx('row')];\n        },\n        expanded() {\n            return this.expandedKeys && this.expandedKeys[this.nodeKey(this.node)] === true;\n        },\n        leaf() {\n            return this.node.leaf === false ? false : !(this.node.children && this.node.children.length);\n        },\n        selected() {\n            return this.selectionMode && this.selectionKeys ? this.selectionKeys[this.nodeKey(this.node)] === true : false;\n        },\n        isSelectedWithContextMenu() {\n            if (this.node && this.contextMenuSelection) {\n                return equals(this.node, this.contextMenuSelection, this.dataKey);\n            }\n\n            return false;\n        },\n        checked() {\n            return this.selectionKeys ? this.selectionKeys[this.nodeKey(this.node)] && this.selectionKeys[this.nodeKey(this.node)].checked : false;\n        },\n        partialChecked() {\n            return this.selectionKeys ? this.selectionKeys[this.nodeKey(this.node)] && this.selectionKeys[this.nodeKey(this.node)].partialChecked : false;\n        },\n        getAriaSelected() {\n            return this.selectionMode === 'single' || this.selectionMode === 'multiple' ? this.selected : null;\n        },\n        ptmOptions() {\n            return {\n                context: {\n                    selectable: this.$parentInstance.rowHover || this.$parentInstance.rowSelectionMode,\n                    selected: this.selected,\n                    scrollable: this.$parentInstance.scrollable\n                }\n            };\n        }\n    },\n    components: {\n        TTBodyCell: BodyCell\n    }\n};\n</script>\n","<template>\n    <div :class=\"cx('root')\" data-scrollselectors=\".p-treetable-scrollable-body\" :data-p=\"dataP\" v-bind=\"ptmi('root')\">\n        <slot></slot>\n        <transition name=\"p-overlay-mask\">\n            <div v-if=\"loading && loadingMode === 'mask'\" :class=\"cx('loading')\" v-bind=\"ptm('loading')\">\n                <div :class=\"cx('mask')\" v-bind=\"ptm('mask')\">\n                    <slot name=\"loadingicon\" :class=\"cx('loadingIcon')\">\n                        <component :is=\"loadingIcon ? 'span' : 'SpinnerIcon'\" spin :class=\"[cx('loadingIcon'), loadingIcon]\" v-bind=\"ptm('loadingIcon')\" />\n                    </slot>\n                </div>\n            </div>\n        </transition>\n        <div v-if=\"$slots.header\" :class=\"cx('header')\" v-bind=\"ptm('header')\">\n            <slot name=\"header\"></slot>\n        </div>\n        <TTPaginator\n            v-if=\"paginatorTop\"\n            :rows=\"d_rows\"\n            :first=\"d_first\"\n            :totalRecords=\"totalRecordsLength\"\n            :pageLinkSize=\"pageLinkSize\"\n            :template=\"paginatorTemplate\"\n            :rowsPerPageOptions=\"rowsPerPageOptions\"\n            :currentPageReportTemplate=\"currentPageReportTemplate\"\n            :class=\"cx('pcPaginator', { position: 'top' })\"\n            @page=\"onPage($event)\"\n            :alwaysShow=\"alwaysShowPaginator\"\n            :unstyled=\"unstyled\"\n            :pt=\"ptm('pcPaginator')\"\n        >\n            <template v-if=\"$slots.paginatorcontainer\" #container=\"slotProps\">\n                <slot\n                    name=\"paginatorcontainer\"\n                    :first=\"slotProps.first\"\n                    :last=\"slotProps.last\"\n                    :rows=\"slotProps.rows\"\n                    :page=\"slotProps.page\"\n                    :pageCount=\"slotProps.pageCount\"\n                    :totalRecords=\"slotProps.totalRecords\"\n                    :firstPageCallback=\"slotProps.firstPageCallback\"\n                    :lastPageCallback=\"slotProps.lastPageCallback\"\n                    :prevPageCallback=\"slotProps.prevPageCallback\"\n                    :nextPageCallback=\"slotProps.nextPageCallback\"\n                    :rowChangeCallback=\"slotProps.rowChangeCallback\"\n                    :pageLinks=\"slotProps.pageLinks\"\n                    :changePageCallback=\"slotProps.changePageCallback\"\n                ></slot>\n            </template>\n            <template v-if=\"$slots.paginatorstart\" #start>\n                <slot name=\"paginatorstart\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorend\" #end>\n                <slot name=\"paginatorend\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorfirstpagelinkicon\" #firstpagelinkicon=\"slotProps\">\n                <slot name=\"paginatorfirstpagelinkicon\" :class=\"slotProps.class\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorprevpagelinkicon\" #prevpagelinkicon=\"slotProps\">\n                <slot name=\"paginatorprevpagelinkicon\" :class=\"slotProps.class\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatornextpagelinkicon\" #nextpagelinkicon=\"slotProps\">\n                <slot name=\"paginatornextpagelinkicon\" :class=\"slotProps.class\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorlastpagelinkicon\" #lastpagelinkicon=\"slotProps\">\n                <slot name=\"paginatorlastpagelinkicon\" :class=\"slotProps.class\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorjumptopagedropdownicon\" #jumptopagedropdownicon=\"slotProps\">\n                <slot name=\"paginatorjumptopagedropdownicon\" :class=\"slotProps.class\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorrowsperpagedropdownicon\" #rowsperpagedropdownicon=\"slotProps\">\n                <slot name=\"paginatorrowsperpagedropdownicon\" :class=\"slotProps.class\"></slot>\n            </template>\n        </TTPaginator>\n        <div :class=\"cx('tableContainer')\" :style=\"[sx('tableContainer'), { maxHeight: scrollHeight }]\" v-bind=\"ptm('tableContainer')\">\n            <table ref=\"table\" role=\"treegrid\" :class=\"[cx('table'), tableClass]\" :style=\"tableStyle\" v-bind=\"{ ...tableProps, ...ptm('table') }\">\n                <thead :class=\"cx('thead')\" :style=\"sx('thead')\" role=\"rowgroup\" v-bind=\"ptm('thead')\">\n                    <tr role=\"row\" v-bind=\"ptm('headerRow')\">\n                        <template v-for=\"(col, i) of columns\" :key=\"columnProp(col, 'columnKey') || columnProp(col, 'field') || i\">\n                            <TTHeaderCell\n                                v-if=\"!columnProp(col, 'hidden')\"\n                                :column=\"col\"\n                                :resizableColumns=\"resizableColumns\"\n                                :sortField=\"d_sortField\"\n                                :sortOrder=\"d_sortOrder\"\n                                :multiSortMeta=\"d_multiSortMeta\"\n                                :sortMode=\"sortMode\"\n                                :filters=\"d_filters\"\n                                :filtersStore=\"filters\"\n                                :filterDisplay=\"filterDisplay\"\n                                :filterInputProps=\"filterInputProps\"\n                                :filterButtonProps=\"headerFilterButtonProps\"\n                                @column-click=\"onColumnHeaderClick($event)\"\n                                @column-resizestart=\"onColumnResizeStart($event)\"\n                                @filter-change=\"onFilterChange\"\n                                @filter-apply=\"onFilterApply\"\n                                :index=\"i\"\n                                :unstyled=\"unstyled\"\n                                :pt=\"pt\"\n                            ></TTHeaderCell>\n                        </template>\n                    </tr>\n                    <tr v-if=\"filterDisplay === 'row' || (!filterDisplay && hasColumnFilter())\" v-bind=\"ptm('headerRow')\">\n                        <template v-for=\"(col, i) of columns\" :key=\"columnProp(col, 'columnKey') || columnProp(col, 'field') || i\">\n                            <TTFilterHeaderCell\n                                v-if=\"filterDisplay === 'row' && !columnProp(col, 'hidden')\"\n                                :column=\"col\"\n                                :index=\"i\"\n                                display=\"row\"\n                                :filters=\"d_filters\"\n                                :filtersStore=\"filters\"\n                                :filterInputProps=\"filterInputProps\"\n                                :filterButtonProps=\"headerFilterButtonProps\"\n                                @filter-change=\"onFilterChange\"\n                                @filter-apply=\"onFilterApply\"\n                                :unstyled=\"unstyled\"\n                                :pt=\"pt\"\n                            />\n                            <th v-else-if=\"!columnProp(col, 'hidden')\" :class=\"getFilterColumnHeaderClass(col)\" :style=\"[columnProp(col, 'style'), columnProp(col, 'filterHeaderStyle')]\" v-bind=\"ptm('headerCell', ptHeaderCellOptions(col))\">\n                                <component v-if=\"col.children && col.children.filter\" :is=\"col.children.filter\" :column=\"col\" :index=\"i\" />\n                            </th>\n                        </template>\n                    </tr>\n                </thead>\n                <tbody :class=\"cx('tbody')\" role=\"rowgroup\" v-bind=\"ptm('tbody')\">\n                    <template v-if=\"!empty\">\n                        <TTRow\n                            v-for=\"(node, index) of dataToRender\"\n                            :key=\"nodeKey(node)\"\n                            :dataKey=\"dataKey\"\n                            :columns=\"columns\"\n                            :node=\"node\"\n                            :level=\"0\"\n                            :expandedKeys=\"d_expandedKeys\"\n                            :indentation=\"indentation\"\n                            :selectionMode=\"selectionMode\"\n                            :selectionKeys=\"selectionKeys\"\n                            :ariaSetSize=\"dataToRender.length\"\n                            :ariaPosInset=\"index + 1\"\n                            :tabindex=\"setTabindex(node, index)\"\n                            :loadingMode=\"loadingMode\"\n                            :contextMenu=\"contextMenu\"\n                            :contextMenuSelection=\"contextMenuSelection\"\n                            :templates=\"$slots\"\n                            @node-toggle=\"onNodeToggle\"\n                            @node-click=\"onNodeClick\"\n                            @checkbox-change=\"onCheckboxChange\"\n                            @row-rightclick=\"onRowRightClick($event)\"\n                            :unstyled=\"unstyled\"\n                            :pt=\"pt\"\n                        ></TTRow>\n                    </template>\n                    <tr v-else :class=\"cx('emptyMessage')\" v-bind=\"ptm('emptyMessage')\">\n                        <td :colspan=\"columns.length\" v-bind=\"ptm('emptyMessageCell')\">\n                            <slot name=\"empty\"></slot>\n                        </td>\n                    </tr>\n                </tbody>\n                <tfoot v-if=\"hasFooter\" :class=\"cx('tfoot')\" :style=\"sx('tfoot')\" role=\"rowgroup\" v-bind=\"ptm('tfoot')\">\n                    <tr role=\"row\" v-bind=\"ptm('footerRow')\">\n                        <template v-for=\"(col, i) of columns\" :key=\"columnProp(col, 'columnKey') || columnProp(col, 'field') || i\">\n                            <TTFooterCell v-if=\"!columnProp(col, 'hidden')\" :column=\"col\" :index=\"i\" :unstyled=\"unstyled\" :pt=\"pt\"></TTFooterCell>\n                        </template>\n                    </tr>\n                </tfoot>\n            </table>\n        </div>\n        <TTPaginator\n            v-if=\"paginatorBottom\"\n            :rows=\"d_rows\"\n            :first=\"d_first\"\n            :totalRecords=\"totalRecordsLength\"\n            :pageLinkSize=\"pageLinkSize\"\n            :template=\"paginatorTemplate\"\n            :rowsPerPageOptions=\"rowsPerPageOptions\"\n            :currentPageReportTemplate=\"currentPageReportTemplate\"\n            :class=\"cx('pcPaginator', { position: 'bottom' })\"\n            @page=\"onPage($event)\"\n            :alwaysShow=\"alwaysShowPaginator\"\n            :unstyled=\"unstyled\"\n            :pt=\"ptm('pcPaginator')\"\n        >\n            <template v-if=\"$slots.paginatorcontainer\" #container=\"slotProps\">\n                <slot\n                    name=\"paginatorcontainer\"\n                    :first=\"slotProps.first\"\n                    :last=\"slotProps.last\"\n                    :rows=\"slotProps.rows\"\n                    :page=\"slotProps.page\"\n                    :pageCount=\"slotProps.pageCount\"\n                    :pageLinks=\"slotProps.pageLinks\"\n                    :totalRecords=\"slotProps.totalRecords\"\n                    :firstPageCallback=\"slotProps.firstPageCallback\"\n                    :lastPageCallback=\"slotProps.lastPageCallback\"\n                    :prevPageCallback=\"slotProps.prevPageCallback\"\n                    :nextPageCallback=\"slotProps.nextPageCallback\"\n                    :rowChangeCallback=\"slotProps.rowChangeCallback\"\n                    :changePageCallback=\"slotProps.changePageCallback\"\n                ></slot>\n            </template>\n            <template v-if=\"$slots.paginatorstart\" #start>\n                <slot name=\"paginatorstart\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorend\" #end>\n                <slot name=\"paginatorend\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorfirstpagelinkicon\" #firstpagelinkicon=\"slotProps\">\n                <slot name=\"paginatorfirstpagelinkicon\" :class=\"slotProps.class\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorprevpagelinkicon\" #prevpagelinkicon=\"slotProps\">\n                <slot name=\"paginatorprevpagelinkicon\" :class=\"slotProps.class\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatornextpagelinkicon\" #nextpagelinkicon=\"slotProps\">\n                <slot name=\"paginatornextpagelinkicon\" :class=\"slotProps.class\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorlastpagelinkicon\" #lastpagelinkicon=\"slotProps\">\n                <slot name=\"paginatorlastpagelinkicon\" :class=\"slotProps.class\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorjumptopagedropdownicon\" #jumptopagedropdownicon=\"slotProps\">\n                <slot name=\"paginatorjumptopagedropdownicon\" :class=\"slotProps.class\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorrowsperpagedropdownicon\" #rowsperpagedropdownicon=\"slotProps\">\n                <slot name=\"paginatorrowsperpagedropdownicon\" :class=\"slotProps.class\"></slot>\n            </template>\n        </TTPaginator>\n        <div v-if=\"$slots.footer\" :class=\"cx('footer')\" v-bind=\"ptm('footer')\">\n            <slot name=\"footer\"></slot>\n        </div>\n        <div ref=\"resizeHelper\" :class=\"cx('columnResizeIndicator')\" style=\"display: none\" v-bind=\"ptm('columnResizeIndicator')\"></div>\n    </div>\n</template>\n\n<script>\nimport { cn } from '@openuxkit/utils';\nimport { addStyle, clearSelection, find, getAttribute, getIndex, getOffset, getOuterWidth, isClickable, isRTL, setAttribute } from '@openuxkit/utils/dom';\nimport { localeComparator, resolveFieldData, sort } from '@openuxkit/utils/object';\nimport { FilterMatchMode, FilterOperator, FilterService } from '@openvue/core/api';\nimport { getVNodeProp, HelperSet } from '@openvue/core/utils';\nimport SpinnerIcon from '@openvue/icons/spinner';\nimport Paginator from 'openvue/paginator';\nimport BaseTreeTable from './BaseTreeTable.vue';\nimport FilterHeaderCell from './FilterHeaderCell.vue';\nimport FooterCell from './FooterCell.vue';\nimport HeaderCell from './HeaderCell.vue';\nimport TreeTableRow from './TreeTableRow.vue';\n\nexport default {\n    name: 'TreeTable',\n    extends: BaseTreeTable,\n    inheritAttrs: false,\n    emits: [\n        'node-expand',\n        'node-collapse',\n        'update:expandedKeys',\n        'update:selectionKeys',\n        'node-select',\n        'node-unselect',\n        'update:first',\n        'update:rows',\n        'page',\n        'update:sortField',\n        'update:sortOrder',\n        'update:multiSortMeta',\n        'sort',\n        'filter',\n        'update:filters',\n        'column-resize-end',\n        'update:contextMenuSelection',\n        'row-contextmenu'\n    ],\n    provide() {\n        return {\n            $columns: this.d_columns\n        };\n    },\n    data() {\n        return {\n            d_expandedKeys: this.expandedKeys || {},\n            d_first: this.first,\n            d_rows: this.rows,\n            d_sortField: this.sortField,\n            d_sortOrder: this.sortOrder,\n            d_multiSortMeta: this.multiSortMeta ? [...this.multiSortMeta] : [],\n            d_filters: this.cloneFilters(this.filters),\n            hasASelectedNode: false,\n            d_columns: new HelperSet({ type: 'Column' })\n        };\n    },\n    documentColumnResizeListener: null,\n    documentColumnResizeEndListener: null,\n    lastResizeHelperX: null,\n    resizeColumnElement: null,\n    watch: {\n        expandedKeys(newValue) {\n            this.d_expandedKeys = newValue;\n        },\n        first(newValue) {\n            this.d_first = newValue;\n        },\n        rows(newValue) {\n            this.d_rows = newValue;\n        },\n        sortField(newValue) {\n            this.d_sortField = newValue;\n        },\n        sortOrder(newValue) {\n            this.d_sortOrder = newValue;\n        },\n        multiSortMeta(newValue) {\n            this.d_multiSortMeta = newValue;\n        },\n        filters: {\n            deep: true,\n            handler: function (newValue) {\n                this.d_filters = this.cloneFilters(newValue);\n            }\n        }\n    },\n    beforeUnmount() {\n        this.destroyStyleElement();\n        this.d_columns.clear();\n    },\n    methods: {\n        columnProp(col, prop) {\n            return getVNodeProp(col, prop);\n        },\n        ptHeaderCellOptions(column) {\n            return {\n                context: {\n                    frozen: this.columnProp(column, 'frozen')\n                }\n            };\n        },\n        onNodeToggle(node) {\n            const key = this.nodeKey(node);\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.rowSelectionMode && 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        nodeKey(node) {\n            return resolveFieldData(node, this.dataKey);\n        },\n        handleSelectionWithMetaKey(event) {\n            const originalEvent = event.originalEvent;\n            const node = event.node;\n            const nodeKey = this.nodeKey(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[nodeKey];\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[nodeKey] = true;\n                this.$emit('node-select', node);\n            }\n\n            return _selectionKeys;\n        },\n        handleSelectionWithoutMetaKey(event) {\n            const node = event.node;\n            const nodeKey = this.nodeKey(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[nodeKey] = true;\n                    this.$emit('node-select', node);\n                }\n            } else {\n                if (selected) {\n                    _selectionKeys = { ...this.selectionKeys };\n                    delete _selectionKeys[nodeKey];\n\n                    this.$emit('node-unselect', node);\n                } else {\n                    _selectionKeys = this.selectionKeys ? { ...this.selectionKeys } : {};\n                    _selectionKeys[nodeKey] = true;\n\n                    this.$emit('node-select', node);\n                }\n            }\n\n            return _selectionKeys;\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        onRowRightClick(event) {\n            if (this.contextMenu) {\n                clearSelection();\n                event.originalEvent.target.focus();\n            }\n\n            this.$emit('update:contextMenuSelection', event.node);\n            this.$emit('row-contextmenu', event);\n        },\n        isSingleSelectionMode() {\n            return this.selectionMode === 'single';\n        },\n        isMultipleSelectionMode() {\n            return this.selectionMode === 'multiple';\n        },\n        onPage(event) {\n            this.d_first = event.first;\n            this.d_rows = event.rows;\n\n            let pageEvent = this.createLazyLoadEvent(event);\n\n            pageEvent.pageCount = event.pageCount;\n            pageEvent.page = event.page;\n\n            this.d_expandedKeys = {};\n            this.$emit('update:expandedKeys', this.d_expandedKeys);\n            this.$emit('update:first', this.d_first);\n            this.$emit('update:rows', this.d_rows);\n            this.$emit('page', pageEvent);\n        },\n        resetPage() {\n            this.d_first = 0;\n            this.$emit('update:first', this.d_first);\n        },\n        getFilterColumnHeaderClass(column) {\n            return [this.cx('headerCell', { column }), this.columnProp(column, 'filterHeaderClass')];\n        },\n        onColumnHeaderClick(e) {\n            let event = e.originalEvent;\n            let column = e.column;\n\n            if (this.columnProp(column, 'sortable')) {\n                const targetNode = event.target;\n                const columnField = this.columnProp(column, 'sortField') || this.columnProp(column, 'field');\n\n                if (\n                    getAttribute(targetNode, 'data-p-sortable-column') === true ||\n                    getAttribute(targetNode, 'data-pc-section') === 'columntitle' ||\n                    getAttribute(targetNode, 'data-pc-section') === 'columnheadercontent' ||\n                    getAttribute(targetNode, 'data-pc-section') === 'sorticon' ||\n                    getAttribute(targetNode.parentElement, 'data-pc-section') === 'sorticon' ||\n                    getAttribute(targetNode.parentElement.parentElement, 'data-pc-section') === 'sorticon' ||\n                    (targetNode.closest('[data-p-sortable-column=\"true\"]') && !targetNode.closest('[data-pc-section=\"columnfilterbutton\"]') && !isClickable(event.target))\n                ) {\n                    clearSelection();\n\n                    if (this.sortMode === 'single') {\n                        if (this.d_sortField === columnField) {\n                            if (this.removableSort && this.d_sortOrder * -1 === this.defaultSortOrder) {\n                                this.d_sortOrder = null;\n                                this.d_sortField = null;\n                            } else {\n                                this.d_sortOrder = this.d_sortOrder * -1;\n                            }\n                        } else {\n                            this.d_sortOrder = this.defaultSortOrder;\n                            this.d_sortField = columnField;\n                        }\n\n                        this.$emit('update:sortField', this.d_sortField);\n                        this.$emit('update:sortOrder', this.d_sortOrder);\n                        this.resetPage();\n                    } else if (this.sortMode === 'multiple') {\n                        let metaKey = event.metaKey || event.ctrlKey;\n\n                        if (!metaKey) {\n                            this.d_multiSortMeta = this.d_multiSortMeta.filter((meta) => meta.field === columnField);\n                        }\n\n                        this.addMultiSortField(columnField);\n                        this.$emit('update:multiSortMeta', this.d_multiSortMeta);\n                    }\n\n                    this.$emit('sort', this.createLazyLoadEvent(event));\n                }\n            }\n        },\n        addMultiSortField(field) {\n            let index = this.d_multiSortMeta.findIndex((meta) => meta.field === field);\n\n            if (index >= 0) {\n                if (this.removableSort && this.d_multiSortMeta[index].order * -1 === this.defaultSortOrder) this.d_multiSortMeta.splice(index, 1);\n                else this.d_multiSortMeta[index] = { field: field, order: this.d_multiSortMeta[index].order * -1 };\n            } else {\n                this.d_multiSortMeta.push({ field: field, order: this.defaultSortOrder });\n            }\n\n            this.d_multiSortMeta = [...this.d_multiSortMeta];\n        },\n        sortSingle(nodes) {\n            return this.sortNodesSingle(nodes);\n        },\n        sortNodesSingle(nodes) {\n            const comparer = localeComparator();\n\n            return [...nodes]\n                .sort((node1, node2) => {\n                    const value1 = resolveFieldData(node1.data, this.d_sortField);\n                    const value2 = resolveFieldData(node2.data, this.d_sortField);\n\n                    return sort(value1, value2, this.d_sortOrder, comparer);\n                })\n                .map((node) => (node.children && node.children.length ? { ...node, children: this.sortNodesSingle(node.children) } : node));\n        },\n        sortMultiple(nodes) {\n            return this.sortNodesMultiple(nodes);\n        },\n        sortNodesMultiple(nodes) {\n            return [...nodes]\n                .sort((node1, node2) => {\n                    return this.multisortField(node1, node2, 0);\n                })\n                .map((node) => (node.children && node.children.length ? { ...node, children: this.sortNodesMultiple(node.children) } : node));\n        },\n        multisortField(node1, node2, index) {\n            const value1 = resolveFieldData(node1.data, this.d_multiSortMeta[index].field);\n            const value2 = resolveFieldData(node2.data, this.d_multiSortMeta[index].field);\n            const comparer = localeComparator();\n\n            if (value1 === value2) {\n                return this.d_multiSortMeta.length - 1 > index ? this.multisortField(node1, node2, index + 1) : 0;\n            }\n\n            return sort(value1, value2, this.d_multiSortMeta[index].order, comparer);\n        },\n        filter(value) {\n            const strict = this.filterMode === 'strict';\n            const activeFilters = this.getActiveFilters(this.filters);\n            const hasGlobalFilter = Object.prototype.hasOwnProperty.call(activeFilters, 'global');\n            let filteredNodes = value;\n\n            if (Object.keys(activeFilters).length > 0) {\n                const globalFilterFields = hasGlobalFilter ? this.globalFilterFields || this.columns.map((col) => this.columnProp(col, 'filterField') || this.columnProp(col, 'field')) : [];\n\n                filteredNodes = [];\n\n                for (let node of value) {\n                    let copyNode = { ...node };\n                    let localMatch = true;\n                    let globalMatch = false;\n\n                    //local\n                    for (let j = 0; j < this.columns.length; j++) {\n                        let col = this.columns[j];\n                        let filterField = this.columnProp(col, 'filterField') || this.columnProp(col, 'field');\n\n                        if (Object.prototype.hasOwnProperty.call(activeFilters, filterField)) {\n                            localMatch = this.isColumnFilterMatched(copyNode, col, filterField, activeFilters[filterField], strict);\n                        }\n\n                        if (!localMatch) {\n                            break;\n                        }\n                    }\n\n                    //global\n                    if (localMatch && hasGlobalFilter) {\n                        const globalFilterMeta = activeFilters['global'];\n                        const filterValue = this.isFilterMetaObject(globalFilterMeta) ? globalFilterMeta.value : globalFilterMeta;\n                        const filterConstraint = this.resolveFilterConstraint(this.isFilterMetaObject(globalFilterMeta) ? globalFilterMeta.matchMode || FilterMatchMode.CONTAINS : FilterMatchMode.CONTAINS);\n\n                        for (let filterField of globalFilterFields) {\n                            let copyNodeForGlobal = { ...copyNode };\n\n                            if (this.isNodeFilterMatched(copyNodeForGlobal, { filterField, filterValue, filterConstraint, strict })) {\n                                globalMatch = true;\n                                copyNode = copyNodeForGlobal;\n                                break;\n                            }\n                        }\n                    }\n\n                    if (hasGlobalFilter ? localMatch && globalMatch : localMatch) {\n                        filteredNodes.push(copyNode);\n                    }\n                }\n            }\n\n            let filterEvent = this.createLazyLoadEvent();\n\n            filterEvent.filteredValue = filteredNodes;\n            this.$emit('filter', filterEvent);\n\n            return filteredNodes;\n        },\n        isFilterMetaObject(filterMeta) {\n            return filterMeta !== null && typeof filterMeta === 'object';\n        },\n        resolveFilterConstraint(matchMode) {\n            return FilterService.filters[matchMode || FilterMatchMode.STARTS_WITH];\n        },\n        isColumnFilterMatched(node, col, filterField, filterMeta, strict) {\n            if (!this.isFilterMetaObject(filterMeta)) {\n                // legacy flat value, the match mode comes from the column\n                return this.isNodeFilterMatched(node, { filterField, filterValue: filterMeta, filterConstraint: this.resolveFilterConstraint(this.columnProp(col, 'filterMatchMode')), strict });\n            }\n\n            if (filterMeta.operator) {\n                const constraints = filterMeta.constraints;\n\n                if (filterMeta.operator === FilterOperator.OR) {\n                    // single pass with a combined predicate, keeps every branch matching any constraint\n                    const filterConstraint = (dataFieldValue, filterValue, filterLocale) => constraints.some((constraint) => this.resolveFilterConstraint(constraint.matchMode)(dataFieldValue, constraint.value, filterLocale));\n\n                    return this.isNodeFilterMatched(node, { filterField, filterValue: null, filterConstraint, strict });\n                }\n\n                // each constraint prunes the subtree left by the previous one\n                return constraints.every((constraint) => this.isNodeFilterMatched(node, { filterField, filterValue: constraint.value, filterConstraint: this.resolveFilterConstraint(constraint.matchMode), strict }));\n            }\n\n            return this.isNodeFilterMatched(node, { filterField, filterValue: filterMeta.value, filterConstraint: this.resolveFilterConstraint(filterMeta.matchMode || this.columnProp(col, 'filterMatchMode')), strict });\n        },\n        isNodeFilterMatched(node, paramsWithoutNode) {\n            // evaluation order matters, findFilteredNodes prunes the children of the node copy\n            return paramsWithoutNode.strict ? !!(this.findFilteredNodes(node, paramsWithoutNode) || this.isFilterMatched(node, paramsWithoutNode)) : !!(this.isFilterMatched(node, paramsWithoutNode) || this.findFilteredNodes(node, paramsWithoutNode));\n        },\n        getActiveFilters(filters) {\n            const removeEmptyFilters = ([key, value]) => {\n                if (!this.isFilterMetaObject(value)) {\n                    return [key, value];\n                }\n\n                if (value.constraints) {\n                    const filteredConstraints = value.constraints.filter((constraint) => constraint.value !== null);\n\n                    if (filteredConstraints.length > 0) {\n                        return [key, { ...value, constraints: filteredConstraints }];\n                    }\n                } else if (value.value !== null) {\n                    return [key, value];\n                }\n\n                return undefined;\n            };\n\n            const filterValidEntries = (entry) => entry !== undefined;\n            const entries = Object.entries(filters || {})\n                .map(removeEmptyFilters)\n                .filter(filterValidEntries);\n\n            return Object.fromEntries(entries);\n        },\n        cloneFilters(filters) {\n            let cloned = {};\n\n            if (filters) {\n                Object.entries(filters).forEach(([prop, value]) => {\n                    if (!this.isFilterMetaObject(value)) {\n                        cloned[prop] = value;\n                    } else if (value.operator) {\n                        cloned[prop] = {\n                            operator: value.operator,\n                            constraints: value.constraints.map((constraint) => {\n                                return { ...constraint };\n                            })\n                        };\n                    } else {\n                        cloned[prop] = { ...value };\n                    }\n                });\n            }\n\n            return cloned;\n        },\n        onFilterChange(filters) {\n            this.d_filters = filters;\n        },\n        onFilterApply() {\n            this.d_first = 0;\n            this.$emit('update:first', this.d_first);\n            this.$emit('update:filters', this.d_filters);\n\n            if (this.lazy) {\n                const filterEvent = this.createLazyLoadEvent();\n\n                filterEvent.filters = this.d_filters;\n                this.$emit('filter', filterEvent);\n            }\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, { filterField, filterValue, filterConstraint, strict }) {\n            let matched = false;\n            let dataFieldValue = resolveFieldData(node.data, filterField);\n\n            if (filterConstraint(dataFieldValue, filterValue, this.filterLocale)) {\n                matched = true;\n            }\n\n            if (!matched || (strict && !this.isNodeLeaf(node))) {\n                matched = this.findFilteredNodes(node, { filterField, filterValue, filterConstraint, strict }) || matched;\n            }\n\n            return matched;\n        },\n        isNodeSelected(node) {\n            return this.selectionMode && this.selectionKeys ? this.selectionKeys[this.nodeKey(node)] === true : false;\n        },\n        isNodeLeaf(node) {\n            return node.leaf === false ? false : !(node.children && node.children.length);\n        },\n        createLazyLoadEvent(event) {\n            let filterMatchModes;\n\n            if (this.hasFilters()) {\n                filterMatchModes = {};\n                this.columns.forEach((col) => {\n                    if (this.columnProp(col, 'field')) {\n                        filterMatchModes[col.props.field] = this.columnProp(col, 'filterMatchMode');\n                    }\n                });\n            }\n\n            return {\n                originalEvent: event,\n                first: this.d_first,\n                rows: this.d_rows,\n                sortField: this.d_sortField,\n                sortOrder: this.d_sortOrder,\n                multiSortMeta: this.d_multiSortMeta,\n                filters: this.filters,\n                filterMatchModes: filterMatchModes\n            };\n        },\n        onColumnResizeStart(event) {\n            let containerLeft = getOffset(this.$el).left;\n\n            this.resizeColumnElement = event.target.parentElement;\n            this.columnResizing = true;\n            this.lastResizeHelperX = event.pageX - containerLeft + this.$el.scrollLeft;\n\n            this.bindColumnResizeEvents();\n        },\n        onColumnResize(event) {\n            let containerLeft = getOffset(this.$el).left;\n\n            this.$el.setAttribute('data-p-unselectable-text', 'true');\n            !this.isUnstyled && addStyle(this.$el, { 'user-select': 'none' });\n            this.$refs.resizeHelper.style.height = this.$el.offsetHeight + 'px';\n            this.$refs.resizeHelper.style.top = 0 + 'px';\n            this.$refs.resizeHelper.style.left = event.pageX - containerLeft + this.$el.scrollLeft + 'px';\n\n            this.$refs.resizeHelper.style.display = 'block';\n        },\n        onColumnResizeEnd() {\n            let delta = isRTL(this.$el) ? this.lastResizeHelperX - this.$refs.resizeHelper.offsetLeft : this.$refs.resizeHelper.offsetLeft - this.lastResizeHelperX;\n            let columnWidth = this.resizeColumnElement.offsetWidth;\n            let newColumnWidth = columnWidth + delta;\n            let minWidth = this.resizeColumnElement.style.minWidth || 15;\n\n            if (columnWidth + delta > parseInt(minWidth, 10)) {\n                if (this.columnResizeMode === 'fit') {\n                    let nextColumn = this.resizeColumnElement.nextElementSibling;\n                    let nextColumnWidth = nextColumn.offsetWidth - delta;\n\n                    if (newColumnWidth > 15 && nextColumnWidth > 15) {\n                        this.resizeTableCells(newColumnWidth, nextColumnWidth);\n                    }\n                } else if (this.columnResizeMode === 'expand') {\n                    const tableWidth = this.$refs.table.offsetWidth + delta + 'px';\n\n                    const updateTableWidth = (el) => {\n                        !!el && (el.style.width = el.style.minWidth = tableWidth);\n                    };\n\n                    // Reasoning: resize table cells before updating the table width so that it can use existing computed cell widths and adjust only the one column.\n                    this.resizeTableCells(newColumnWidth);\n                    updateTableWidth(this.$refs.table);\n                }\n\n                this.$emit('column-resize-end', {\n                    element: this.resizeColumnElement,\n                    delta: delta\n                });\n            }\n\n            this.$refs.resizeHelper.style.display = 'none';\n            this.resizeColumn = null;\n            this.$el.removeAttribute('data-p-unselectable-text');\n            !this.isUnstyled && (this.$el.style['user-select'] = '');\n\n            this.unbindColumnResizeEvents();\n        },\n        resizeTableCells(newColumnWidth, nextColumnWidth) {\n            let colIndex = getIndex(this.resizeColumnElement);\n            let widths = [];\n            let headers = find(this.$refs.table, 'thead[data-pc-section=\"thead\"] > tr > th');\n\n            headers.forEach((header) => widths.push(getOuterWidth(header)));\n\n            this.destroyStyleElement();\n            this.createStyleElement();\n\n            let innerHTML = '';\n            let selector = `[data-pc-name=\"treetable\"][${this.$attrSelector}] > [data-pc-section=\"tablecontainer\"] > table[data-pc-section=\"table\"]`;\n\n            widths.forEach((width, index) => {\n                let colWidth = index === colIndex ? newColumnWidth : nextColumnWidth && index === colIndex + 1 ? nextColumnWidth : width;\n                let style = `width: ${colWidth}px !important; max-width: ${colWidth}px !important`;\n\n                innerHTML += `\n                    ${selector} > thead[data-pc-section=\"thead\"] > tr > th:nth-child(${index + 1}),\n                    ${selector} > tbody[data-pc-section=\"tbody\"] > tr > td:nth-child(${index + 1}),\n                    ${selector} > tfoot[data-pc-section=\"tfoot\"] > tr > td:nth-child(${index + 1}) {\n                        ${style}\n                    }\n                `;\n            });\n\n            this.styleElement.innerHTML = innerHTML;\n        },\n        bindColumnResizeEvents() {\n            if (!this.documentColumnResizeListener) {\n                this.documentColumnResizeListener = document.addEventListener('mousemove', (event) => {\n                    if (this.columnResizing) {\n                        this.onColumnResize(event);\n                    }\n                });\n            }\n\n            if (!this.documentColumnResizeEndListener) {\n                this.documentColumnResizeEndListener = document.addEventListener('mouseup', () => {\n                    if (this.columnResizing) {\n                        this.columnResizing = false;\n                        this.onColumnResizeEnd();\n                    }\n                });\n            }\n        },\n        unbindColumnResizeEvents() {\n            if (this.documentColumnResizeListener) {\n                document.removeEventListener('document', this.documentColumnResizeListener);\n                this.documentColumnResizeListener = null;\n            }\n\n            if (this.documentColumnResizeEndListener) {\n                document.removeEventListener('document', this.documentColumnResizeEndListener);\n                this.documentColumnResizeEndListener = null;\n            }\n        },\n        onColumnKeyDown(event, col) {\n            if ((event.code === 'Enter' || event.code === 'NumpadEnter') && event.currentTarget.nodeName === 'TH' && getAttribute(event.currentTarget, 'data-p-sortable-column')) {\n                this.onColumnHeaderClick(event, col);\n            }\n        },\n        hasColumnFilter() {\n            if (this.columns) {\n                for (let col of this.columns) {\n                    if (col.children && col.children.filter) {\n                        return true;\n                    }\n                }\n            }\n\n            return false;\n        },\n        hasFilters() {\n            return this.filters && Object.keys(this.filters).length > 0 && this.filters.constructor === Object;\n        },\n        hasGlobalFilter() {\n            return this.filters && Object.prototype.hasOwnProperty.call(this.filters, 'global');\n        },\n        getItemLabel(node) {\n            return node.data.name;\n        },\n        createStyleElement() {\n            this.styleElement = document.createElement('style');\n            this.styleElement.type = 'text/css';\n            setAttribute(this.styleElement, 'nonce', this.$primevue?.config?.csp?.nonce);\n            document.head.appendChild(this.styleElement);\n        },\n        destroyStyleElement() {\n            if (this.styleElement) {\n                document.head.removeChild(this.styleElement);\n                this.styleElement = null;\n            }\n        },\n        setTabindex(node, index) {\n            if (this.isNodeSelected(node)) {\n                this.hasASelectedNode = true;\n\n                return 0;\n            }\n\n            if (this.selectionMode) {\n                if (!this.isNodeSelected(node) && index === 0 && !this.hasASelectedNode) return 0;\n            } else if (!this.selectionMode && index === 0) {\n                return 0;\n            }\n\n            return -1;\n        }\n    },\n    computed: {\n        columns() {\n            return this.d_columns.get(this);\n        },\n        headerFilterButtonProps() {\n            return {\n                filter: { severity: 'secondary', text: true, rounded: true },\n                ...this.filterButtonProps,\n                inline: {\n                    clear: { severity: 'secondary', text: true, rounded: true },\n                    ...this.filterButtonProps.inline\n                },\n                popover: {\n                    addRule: { severity: 'info', text: true, size: 'small' },\n                    removeRule: { severity: 'danger', text: true, size: 'small' },\n                    apply: { size: 'small' },\n                    clear: { outlined: true, size: 'small' },\n                    ...this.filterButtonProps.popover\n                }\n            };\n        },\n        processedData() {\n            if (this.lazy) {\n                return this.value;\n            } else {\n                if (this.value && this.value.length) {\n                    let data = this.value;\n\n                    if (this.sorted) {\n                        if (this.sortMode === 'single') data = this.sortSingle(data);\n                        else if (this.sortMode === 'multiple') data = this.sortMultiple(data);\n                    }\n\n                    if (this.hasFilters()) {\n                        data = this.filter(data);\n                    }\n\n                    return data;\n                } else {\n                    return null;\n                }\n            }\n        },\n        dataToRender() {\n            const data = this.processedData;\n\n            if (this.paginator) {\n                const first = this.lazy ? 0 : this.d_first;\n\n                return data.slice(first, first + this.d_rows);\n            } else {\n                return data;\n            }\n        },\n        empty() {\n            const data = this.processedData;\n\n            return !data || data.length === 0;\n        },\n        sorted() {\n            return this.d_sortField || (this.d_multiSortMeta && this.d_multiSortMeta.length > 0);\n        },\n        hasFooter() {\n            let hasFooter = false;\n\n            for (let col of this.columns) {\n                if (this.columnProp(col, 'footer') || (col.children && col.children.footer)) {\n                    hasFooter = true;\n                    break;\n                }\n            }\n\n            return hasFooter;\n        },\n        paginatorTop() {\n            return this.paginator && (this.paginatorPosition !== 'bottom' || this.paginatorPosition === 'both');\n        },\n        paginatorBottom() {\n            return this.paginator && (this.paginatorPosition !== 'top' || this.paginatorPosition === 'both');\n        },\n        singleSelectionMode() {\n            return this.selectionMode && this.selectionMode === 'single';\n        },\n        multipleSelectionMode() {\n            return this.selectionMode && this.selectionMode === 'multiple';\n        },\n        rowSelectionMode() {\n            return this.singleSelectionMode || this.multipleSelectionMode;\n        },\n        totalRecordsLength() {\n            if (this.lazy) {\n                return this.totalRecords;\n            } else {\n                const data = this.processedData;\n\n                return data ? data.length : 0;\n            }\n        },\n        dataP() {\n            return cn({\n                scrollable: this.scrollable,\n                'flex-scrollable': this.scrollable && this.scrollHeight === 'flex',\n                [this.size]: this.size,\n                loading: this.loading,\n                empty: this.empty\n            });\n        }\n    },\n    components: {\n        TTRow: TreeTableRow,\n        TTPaginator: Paginator,\n        TTHeaderCell: HeaderCell,\n        TTFilterHeaderCell: FilterHeaderCell,\n        TTFooterCell: FooterCell,\n        SpinnerIcon: SpinnerIcon\n    }\n};\n</script>\n","<template>\n    <div :class=\"cx('root')\" data-scrollselectors=\".p-treetable-scrollable-body\" :data-p=\"dataP\" v-bind=\"ptmi('root')\">\n        <slot></slot>\n        <transition name=\"p-overlay-mask\">\n            <div v-if=\"loading && loadingMode === 'mask'\" :class=\"cx('loading')\" v-bind=\"ptm('loading')\">\n                <div :class=\"cx('mask')\" v-bind=\"ptm('mask')\">\n                    <slot name=\"loadingicon\" :class=\"cx('loadingIcon')\">\n                        <component :is=\"loadingIcon ? 'span' : 'SpinnerIcon'\" spin :class=\"[cx('loadingIcon'), loadingIcon]\" v-bind=\"ptm('loadingIcon')\" />\n                    </slot>\n                </div>\n            </div>\n        </transition>\n        <div v-if=\"$slots.header\" :class=\"cx('header')\" v-bind=\"ptm('header')\">\n            <slot name=\"header\"></slot>\n        </div>\n        <TTPaginator\n            v-if=\"paginatorTop\"\n            :rows=\"d_rows\"\n            :first=\"d_first\"\n            :totalRecords=\"totalRecordsLength\"\n            :pageLinkSize=\"pageLinkSize\"\n            :template=\"paginatorTemplate\"\n            :rowsPerPageOptions=\"rowsPerPageOptions\"\n            :currentPageReportTemplate=\"currentPageReportTemplate\"\n            :class=\"cx('pcPaginator', { position: 'top' })\"\n            @page=\"onPage($event)\"\n            :alwaysShow=\"alwaysShowPaginator\"\n            :unstyled=\"unstyled\"\n            :pt=\"ptm('pcPaginator')\"\n        >\n            <template v-if=\"$slots.paginatorcontainer\" #container=\"slotProps\">\n                <slot\n                    name=\"paginatorcontainer\"\n                    :first=\"slotProps.first\"\n                    :last=\"slotProps.last\"\n                    :rows=\"slotProps.rows\"\n                    :page=\"slotProps.page\"\n                    :pageCount=\"slotProps.pageCount\"\n                    :totalRecords=\"slotProps.totalRecords\"\n                    :firstPageCallback=\"slotProps.firstPageCallback\"\n                    :lastPageCallback=\"slotProps.lastPageCallback\"\n                    :prevPageCallback=\"slotProps.prevPageCallback\"\n                    :nextPageCallback=\"slotProps.nextPageCallback\"\n                    :rowChangeCallback=\"slotProps.rowChangeCallback\"\n                    :pageLinks=\"slotProps.pageLinks\"\n                    :changePageCallback=\"slotProps.changePageCallback\"\n                ></slot>\n            </template>\n            <template v-if=\"$slots.paginatorstart\" #start>\n                <slot name=\"paginatorstart\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorend\" #end>\n                <slot name=\"paginatorend\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorfirstpagelinkicon\" #firstpagelinkicon=\"slotProps\">\n                <slot name=\"paginatorfirstpagelinkicon\" :class=\"slotProps.class\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorprevpagelinkicon\" #prevpagelinkicon=\"slotProps\">\n                <slot name=\"paginatorprevpagelinkicon\" :class=\"slotProps.class\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatornextpagelinkicon\" #nextpagelinkicon=\"slotProps\">\n                <slot name=\"paginatornextpagelinkicon\" :class=\"slotProps.class\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorlastpagelinkicon\" #lastpagelinkicon=\"slotProps\">\n                <slot name=\"paginatorlastpagelinkicon\" :class=\"slotProps.class\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorjumptopagedropdownicon\" #jumptopagedropdownicon=\"slotProps\">\n                <slot name=\"paginatorjumptopagedropdownicon\" :class=\"slotProps.class\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorrowsperpagedropdownicon\" #rowsperpagedropdownicon=\"slotProps\">\n                <slot name=\"paginatorrowsperpagedropdownicon\" :class=\"slotProps.class\"></slot>\n            </template>\n        </TTPaginator>\n        <div :class=\"cx('tableContainer')\" :style=\"[sx('tableContainer'), { maxHeight: scrollHeight }]\" v-bind=\"ptm('tableContainer')\">\n            <table ref=\"table\" role=\"treegrid\" :class=\"[cx('table'), tableClass]\" :style=\"tableStyle\" v-bind=\"{ ...tableProps, ...ptm('table') }\">\n                <thead :class=\"cx('thead')\" :style=\"sx('thead')\" role=\"rowgroup\" v-bind=\"ptm('thead')\">\n                    <tr role=\"row\" v-bind=\"ptm('headerRow')\">\n                        <template v-for=\"(col, i) of columns\" :key=\"columnProp(col, 'columnKey') || columnProp(col, 'field') || i\">\n                            <TTHeaderCell\n                                v-if=\"!columnProp(col, 'hidden')\"\n                                :column=\"col\"\n                                :resizableColumns=\"resizableColumns\"\n                                :sortField=\"d_sortField\"\n                                :sortOrder=\"d_sortOrder\"\n                                :multiSortMeta=\"d_multiSortMeta\"\n                                :sortMode=\"sortMode\"\n                                :filters=\"d_filters\"\n                                :filtersStore=\"filters\"\n                                :filterDisplay=\"filterDisplay\"\n                                :filterInputProps=\"filterInputProps\"\n                                :filterButtonProps=\"headerFilterButtonProps\"\n                                @column-click=\"onColumnHeaderClick($event)\"\n                                @column-resizestart=\"onColumnResizeStart($event)\"\n                                @filter-change=\"onFilterChange\"\n                                @filter-apply=\"onFilterApply\"\n                                :index=\"i\"\n                                :unstyled=\"unstyled\"\n                                :pt=\"pt\"\n                            ></TTHeaderCell>\n                        </template>\n                    </tr>\n                    <tr v-if=\"filterDisplay === 'row' || (!filterDisplay && hasColumnFilter())\" v-bind=\"ptm('headerRow')\">\n                        <template v-for=\"(col, i) of columns\" :key=\"columnProp(col, 'columnKey') || columnProp(col, 'field') || i\">\n                            <TTFilterHeaderCell\n                                v-if=\"filterDisplay === 'row' && !columnProp(col, 'hidden')\"\n                                :column=\"col\"\n                                :index=\"i\"\n                                display=\"row\"\n                                :filters=\"d_filters\"\n                                :filtersStore=\"filters\"\n                                :filterInputProps=\"filterInputProps\"\n                                :filterButtonProps=\"headerFilterButtonProps\"\n                                @filter-change=\"onFilterChange\"\n                                @filter-apply=\"onFilterApply\"\n                                :unstyled=\"unstyled\"\n                                :pt=\"pt\"\n                            />\n                            <th v-else-if=\"!columnProp(col, 'hidden')\" :class=\"getFilterColumnHeaderClass(col)\" :style=\"[columnProp(col, 'style'), columnProp(col, 'filterHeaderStyle')]\" v-bind=\"ptm('headerCell', ptHeaderCellOptions(col))\">\n                                <component v-if=\"col.children && col.children.filter\" :is=\"col.children.filter\" :column=\"col\" :index=\"i\" />\n                            </th>\n                        </template>\n                    </tr>\n                </thead>\n                <tbody :class=\"cx('tbody')\" role=\"rowgroup\" v-bind=\"ptm('tbody')\">\n                    <template v-if=\"!empty\">\n                        <TTRow\n                            v-for=\"(node, index) of dataToRender\"\n                            :key=\"nodeKey(node)\"\n                            :dataKey=\"dataKey\"\n                            :columns=\"columns\"\n                            :node=\"node\"\n                            :level=\"0\"\n                            :expandedKeys=\"d_expandedKeys\"\n                            :indentation=\"indentation\"\n                            :selectionMode=\"selectionMode\"\n                            :selectionKeys=\"selectionKeys\"\n                            :ariaSetSize=\"dataToRender.length\"\n                            :ariaPosInset=\"index + 1\"\n                            :tabindex=\"setTabindex(node, index)\"\n                            :loadingMode=\"loadingMode\"\n                            :contextMenu=\"contextMenu\"\n                            :contextMenuSelection=\"contextMenuSelection\"\n                            :templates=\"$slots\"\n                            @node-toggle=\"onNodeToggle\"\n                            @node-click=\"onNodeClick\"\n                            @checkbox-change=\"onCheckboxChange\"\n                            @row-rightclick=\"onRowRightClick($event)\"\n                            :unstyled=\"unstyled\"\n                            :pt=\"pt\"\n                        ></TTRow>\n                    </template>\n                    <tr v-else :class=\"cx('emptyMessage')\" v-bind=\"ptm('emptyMessage')\">\n                        <td :colspan=\"columns.length\" v-bind=\"ptm('emptyMessageCell')\">\n                            <slot name=\"empty\"></slot>\n                        </td>\n                    </tr>\n                </tbody>\n                <tfoot v-if=\"hasFooter\" :class=\"cx('tfoot')\" :style=\"sx('tfoot')\" role=\"rowgroup\" v-bind=\"ptm('tfoot')\">\n                    <tr role=\"row\" v-bind=\"ptm('footerRow')\">\n                        <template v-for=\"(col, i) of columns\" :key=\"columnProp(col, 'columnKey') || columnProp(col, 'field') || i\">\n                            <TTFooterCell v-if=\"!columnProp(col, 'hidden')\" :column=\"col\" :index=\"i\" :unstyled=\"unstyled\" :pt=\"pt\"></TTFooterCell>\n                        </template>\n                    </tr>\n                </tfoot>\n            </table>\n        </div>\n        <TTPaginator\n            v-if=\"paginatorBottom\"\n            :rows=\"d_rows\"\n            :first=\"d_first\"\n            :totalRecords=\"totalRecordsLength\"\n            :pageLinkSize=\"pageLinkSize\"\n            :template=\"paginatorTemplate\"\n            :rowsPerPageOptions=\"rowsPerPageOptions\"\n            :currentPageReportTemplate=\"currentPageReportTemplate\"\n            :class=\"cx('pcPaginator', { position: 'bottom' })\"\n            @page=\"onPage($event)\"\n            :alwaysShow=\"alwaysShowPaginator\"\n            :unstyled=\"unstyled\"\n            :pt=\"ptm('pcPaginator')\"\n        >\n            <template v-if=\"$slots.paginatorcontainer\" #container=\"slotProps\">\n                <slot\n                    name=\"paginatorcontainer\"\n                    :first=\"slotProps.first\"\n                    :last=\"slotProps.last\"\n                    :rows=\"slotProps.rows\"\n                    :page=\"slotProps.page\"\n                    :pageCount=\"slotProps.pageCount\"\n                    :pageLinks=\"slotProps.pageLinks\"\n                    :totalRecords=\"slotProps.totalRecords\"\n                    :firstPageCallback=\"slotProps.firstPageCallback\"\n                    :lastPageCallback=\"slotProps.lastPageCallback\"\n                    :prevPageCallback=\"slotProps.prevPageCallback\"\n                    :nextPageCallback=\"slotProps.nextPageCallback\"\n                    :rowChangeCallback=\"slotProps.rowChangeCallback\"\n                    :changePageCallback=\"slotProps.changePageCallback\"\n                ></slot>\n            </template>\n            <template v-if=\"$slots.paginatorstart\" #start>\n                <slot name=\"paginatorstart\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorend\" #end>\n                <slot name=\"paginatorend\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorfirstpagelinkicon\" #firstpagelinkicon=\"slotProps\">\n                <slot name=\"paginatorfirstpagelinkicon\" :class=\"slotProps.class\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorprevpagelinkicon\" #prevpagelinkicon=\"slotProps\">\n                <slot name=\"paginatorprevpagelinkicon\" :class=\"slotProps.class\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatornextpagelinkicon\" #nextpagelinkicon=\"slotProps\">\n                <slot name=\"paginatornextpagelinkicon\" :class=\"slotProps.class\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorlastpagelinkicon\" #lastpagelinkicon=\"slotProps\">\n                <slot name=\"paginatorlastpagelinkicon\" :class=\"slotProps.class\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorjumptopagedropdownicon\" #jumptopagedropdownicon=\"slotProps\">\n                <slot name=\"paginatorjumptopagedropdownicon\" :class=\"slotProps.class\"></slot>\n            </template>\n            <template v-if=\"$slots.paginatorrowsperpagedropdownicon\" #rowsperpagedropdownicon=\"slotProps\">\n                <slot name=\"paginatorrowsperpagedropdownicon\" :class=\"slotProps.class\"></slot>\n            </template>\n        </TTPaginator>\n        <div v-if=\"$slots.footer\" :class=\"cx('footer')\" v-bind=\"ptm('footer')\">\n            <slot name=\"footer\"></slot>\n        </div>\n        <div ref=\"resizeHelper\" :class=\"cx('columnResizeIndicator')\" style=\"display: none\" v-bind=\"ptm('columnResizeIndicator')\"></div>\n    </div>\n</template>\n\n<script>\nimport { cn } from '@openuxkit/utils';\nimport { addStyle, clearSelection, find, getAttribute, getIndex, getOffset, getOuterWidth, isClickable, isRTL, setAttribute } from '@openuxkit/utils/dom';\nimport { localeComparator, resolveFieldData, sort } from '@openuxkit/utils/object';\nimport { FilterMatchMode, FilterOperator, FilterService } from '@openvue/core/api';\nimport { getVNodeProp, HelperSet } from '@openvue/core/utils';\nimport SpinnerIcon from '@openvue/icons/spinner';\nimport Paginator from 'openvue/paginator';\nimport BaseTreeTable from './BaseTreeTable.vue';\nimport FilterHeaderCell from './FilterHeaderCell.vue';\nimport FooterCell from './FooterCell.vue';\nimport HeaderCell from './HeaderCell.vue';\nimport TreeTableRow from './TreeTableRow.vue';\n\nexport default {\n    name: 'TreeTable',\n    extends: BaseTreeTable,\n    inheritAttrs: false,\n    emits: [\n        'node-expand',\n        'node-collapse',\n        'update:expandedKeys',\n        'update:selectionKeys',\n        'node-select',\n        'node-unselect',\n        'update:first',\n        'update:rows',\n        'page',\n        'update:sortField',\n        'update:sortOrder',\n        'update:multiSortMeta',\n        'sort',\n        'filter',\n        'update:filters',\n        'column-resize-end',\n        'update:contextMenuSelection',\n        'row-contextmenu'\n    ],\n    provide() {\n        return {\n            $columns: this.d_columns\n        };\n    },\n    data() {\n        return {\n            d_expandedKeys: this.expandedKeys || {},\n            d_first: this.first,\n            d_rows: this.rows,\n            d_sortField: this.sortField,\n            d_sortOrder: this.sortOrder,\n            d_multiSortMeta: this.multiSortMeta ? [...this.multiSortMeta] : [],\n            d_filters: this.cloneFilters(this.filters),\n            hasASelectedNode: false,\n            d_columns: new HelperSet({ type: 'Column' })\n        };\n    },\n    documentColumnResizeListener: null,\n    documentColumnResizeEndListener: null,\n    lastResizeHelperX: null,\n    resizeColumnElement: null,\n    watch: {\n        expandedKeys(newValue) {\n            this.d_expandedKeys = newValue;\n        },\n        first(newValue) {\n            this.d_first = newValue;\n        },\n        rows(newValue) {\n            this.d_rows = newValue;\n        },\n        sortField(newValue) {\n            this.d_sortField = newValue;\n        },\n        sortOrder(newValue) {\n            this.d_sortOrder = newValue;\n        },\n        multiSortMeta(newValue) {\n            this.d_multiSortMeta = newValue;\n        },\n        filters: {\n            deep: true,\n            handler: function (newValue) {\n                this.d_filters = this.cloneFilters(newValue);\n            }\n        }\n    },\n    beforeUnmount() {\n        this.destroyStyleElement();\n        this.d_columns.clear();\n    },\n    methods: {\n        columnProp(col, prop) {\n            return getVNodeProp(col, prop);\n        },\n        ptHeaderCellOptions(column) {\n            return {\n                context: {\n                    frozen: this.columnProp(column, 'frozen')\n                }\n            };\n        },\n        onNodeToggle(node) {\n            const key = this.nodeKey(node);\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.rowSelectionMode && 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        nodeKey(node) {\n            return resolveFieldData(node, this.dataKey);\n        },\n        handleSelectionWithMetaKey(event) {\n            const originalEvent = event.originalEvent;\n            const node = event.node;\n            const nodeKey = this.nodeKey(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[nodeKey];\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[nodeKey] = true;\n                this.$emit('node-select', node);\n            }\n\n            return _selectionKeys;\n        },\n        handleSelectionWithoutMetaKey(event) {\n            const node = event.node;\n            const nodeKey = this.nodeKey(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[nodeKey] = true;\n                    this.$emit('node-select', node);\n                }\n            } else {\n                if (selected) {\n                    _selectionKeys = { ...this.selectionKeys };\n                    delete _selectionKeys[nodeKey];\n\n                    this.$emit('node-unselect', node);\n                } else {\n                    _selectionKeys = this.selectionKeys ? { ...this.selectionKeys } : {};\n                    _selectionKeys[nodeKey] = true;\n\n                    this.$emit('node-select', node);\n                }\n            }\n\n            return _selectionKeys;\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        onRowRightClick(event) {\n            if (this.contextMenu) {\n                clearSelection();\n                event.originalEvent.target.focus();\n            }\n\n            this.$emit('update:contextMenuSelection', event.node);\n            this.$emit('row-contextmenu', event);\n        },\n        isSingleSelectionMode() {\n            return this.selectionMode === 'single';\n        },\n        isMultipleSelectionMode() {\n            return this.selectionMode === 'multiple';\n        },\n        onPage(event) {\n            this.d_first = event.first;\n            this.d_rows = event.rows;\n\n            let pageEvent = this.createLazyLoadEvent(event);\n\n            pageEvent.pageCount = event.pageCount;\n            pageEvent.page = event.page;\n\n            this.d_expandedKeys = {};\n            this.$emit('update:expandedKeys', this.d_expandedKeys);\n            this.$emit('update:first', this.d_first);\n            this.$emit('update:rows', this.d_rows);\n            this.$emit('page', pageEvent);\n        },\n        resetPage() {\n            this.d_first = 0;\n            this.$emit('update:first', this.d_first);\n        },\n        getFilterColumnHeaderClass(column) {\n            return [this.cx('headerCell', { column }), this.columnProp(column, 'filterHeaderClass')];\n        },\n        onColumnHeaderClick(e) {\n            let event = e.originalEvent;\n            let column = e.column;\n\n            if (this.columnProp(column, 'sortable')) {\n                const targetNode = event.target;\n                const columnField = this.columnProp(column, 'sortField') || this.columnProp(column, 'field');\n\n                if (\n                    getAttribute(targetNode, 'data-p-sortable-column') === true ||\n                    getAttribute(targetNode, 'data-pc-section') === 'columntitle' ||\n                    getAttribute(targetNode, 'data-pc-section') === 'columnheadercontent' ||\n                    getAttribute(targetNode, 'data-pc-section') === 'sorticon' ||\n                    getAttribute(targetNode.parentElement, 'data-pc-section') === 'sorticon' ||\n                    getAttribute(targetNode.parentElement.parentElement, 'data-pc-section') === 'sorticon' ||\n                    (targetNode.closest('[data-p-sortable-column=\"true\"]') && !targetNode.closest('[data-pc-section=\"columnfilterbutton\"]') && !isClickable(event.target))\n                ) {\n                    clearSelection();\n\n                    if (this.sortMode === 'single') {\n                        if (this.d_sortField === columnField) {\n                            if (this.removableSort && this.d_sortOrder * -1 === this.defaultSortOrder) {\n                                this.d_sortOrder = null;\n                                this.d_sortField = null;\n                            } else {\n                                this.d_sortOrder = this.d_sortOrder * -1;\n                            }\n                        } else {\n                            this.d_sortOrder = this.defaultSortOrder;\n                            this.d_sortField = columnField;\n                        }\n\n                        this.$emit('update:sortField', this.d_sortField);\n                        this.$emit('update:sortOrder', this.d_sortOrder);\n                        this.resetPage();\n                    } else if (this.sortMode === 'multiple') {\n                        let metaKey = event.metaKey || event.ctrlKey;\n\n                        if (!metaKey) {\n                            this.d_multiSortMeta = this.d_multiSortMeta.filter((meta) => meta.field === columnField);\n                        }\n\n                        this.addMultiSortField(columnField);\n                        this.$emit('update:multiSortMeta', this.d_multiSortMeta);\n                    }\n\n                    this.$emit('sort', this.createLazyLoadEvent(event));\n                }\n            }\n        },\n        addMultiSortField(field) {\n            let index = this.d_multiSortMeta.findIndex((meta) => meta.field === field);\n\n            if (index >= 0) {\n                if (this.removableSort && this.d_multiSortMeta[index].order * -1 === this.defaultSortOrder) this.d_multiSortMeta.splice(index, 1);\n                else this.d_multiSortMeta[index] = { field: field, order: this.d_multiSortMeta[index].order * -1 };\n            } else {\n                this.d_multiSortMeta.push({ field: field, order: this.defaultSortOrder });\n            }\n\n            this.d_multiSortMeta = [...this.d_multiSortMeta];\n        },\n        sortSingle(nodes) {\n            return this.sortNodesSingle(nodes);\n        },\n        sortNodesSingle(nodes) {\n            const comparer = localeComparator();\n\n            return [...nodes]\n                .sort((node1, node2) => {\n                    const value1 = resolveFieldData(node1.data, this.d_sortField);\n                    const value2 = resolveFieldData(node2.data, this.d_sortField);\n\n                    return sort(value1, value2, this.d_sortOrder, comparer);\n                })\n                .map((node) => (node.children && node.children.length ? { ...node, children: this.sortNodesSingle(node.children) } : node));\n        },\n        sortMultiple(nodes) {\n            return this.sortNodesMultiple(nodes);\n        },\n        sortNodesMultiple(nodes) {\n            return [...nodes]\n                .sort((node1, node2) => {\n                    return this.multisortField(node1, node2, 0);\n                })\n                .map((node) => (node.children && node.children.length ? { ...node, children: this.sortNodesMultiple(node.children) } : node));\n        },\n        multisortField(node1, node2, index) {\n            const value1 = resolveFieldData(node1.data, this.d_multiSortMeta[index].field);\n            const value2 = resolveFieldData(node2.data, this.d_multiSortMeta[index].field);\n            const comparer = localeComparator();\n\n            if (value1 === value2) {\n                return this.d_multiSortMeta.length - 1 > index ? this.multisortField(node1, node2, index + 1) : 0;\n            }\n\n            return sort(value1, value2, this.d_multiSortMeta[index].order, comparer);\n        },\n        filter(value) {\n            const strict = this.filterMode === 'strict';\n            const activeFilters = this.getActiveFilters(this.filters);\n            const hasGlobalFilter = Object.prototype.hasOwnProperty.call(activeFilters, 'global');\n            let filteredNodes = value;\n\n            if (Object.keys(activeFilters).length > 0) {\n                const globalFilterFields = hasGlobalFilter ? this.globalFilterFields || this.columns.map((col) => this.columnProp(col, 'filterField') || this.columnProp(col, 'field')) : [];\n\n                filteredNodes = [];\n\n                for (let node of value) {\n                    let copyNode = { ...node };\n                    let localMatch = true;\n                    let globalMatch = false;\n\n                    //local\n                    for (let j = 0; j < this.columns.length; j++) {\n                        let col = this.columns[j];\n                        let filterField = this.columnProp(col, 'filterField') || this.columnProp(col, 'field');\n\n                        if (Object.prototype.hasOwnProperty.call(activeFilters, filterField)) {\n                            localMatch = this.isColumnFilterMatched(copyNode, col, filterField, activeFilters[filterField], strict);\n                        }\n\n                        if (!localMatch) {\n                            break;\n                        }\n                    }\n\n                    //global\n                    if (localMatch && hasGlobalFilter) {\n                        const globalFilterMeta = activeFilters['global'];\n                        const filterValue = this.isFilterMetaObject(globalFilterMeta) ? globalFilterMeta.value : globalFilterMeta;\n                        const filterConstraint = this.resolveFilterConstraint(this.isFilterMetaObject(globalFilterMeta) ? globalFilterMeta.matchMode || FilterMatchMode.CONTAINS : FilterMatchMode.CONTAINS);\n\n                        for (let filterField of globalFilterFields) {\n                            let copyNodeForGlobal = { ...copyNode };\n\n                            if (this.isNodeFilterMatched(copyNodeForGlobal, { filterField, filterValue, filterConstraint, strict })) {\n                                globalMatch = true;\n                                copyNode = copyNodeForGlobal;\n                                break;\n                            }\n                        }\n                    }\n\n                    if (hasGlobalFilter ? localMatch && globalMatch : localMatch) {\n                        filteredNodes.push(copyNode);\n                    }\n                }\n            }\n\n            let filterEvent = this.createLazyLoadEvent();\n\n            filterEvent.filteredValue = filteredNodes;\n            this.$emit('filter', filterEvent);\n\n            return filteredNodes;\n        },\n        isFilterMetaObject(filterMeta) {\n            return filterMeta !== null && typeof filterMeta === 'object';\n        },\n        resolveFilterConstraint(matchMode) {\n            return FilterService.filters[matchMode || FilterMatchMode.STARTS_WITH];\n        },\n        isColumnFilterMatched(node, col, filterField, filterMeta, strict) {\n            if (!this.isFilterMetaObject(filterMeta)) {\n                // legacy flat value, the match mode comes from the column\n                return this.isNodeFilterMatched(node, { filterField, filterValue: filterMeta, filterConstraint: this.resolveFilterConstraint(this.columnProp(col, 'filterMatchMode')), strict });\n            }\n\n            if (filterMeta.operator) {\n                const constraints = filterMeta.constraints;\n\n                if (filterMeta.operator === FilterOperator.OR) {\n                    // single pass with a combined predicate, keeps every branch matching any constraint\n                    const filterConstraint = (dataFieldValue, filterValue, filterLocale) => constraints.some((constraint) => this.resolveFilterConstraint(constraint.matchMode)(dataFieldValue, constraint.value, filterLocale));\n\n                    return this.isNodeFilterMatched(node, { filterField, filterValue: null, filterConstraint, strict });\n                }\n\n                // each constraint prunes the subtree left by the previous one\n                return constraints.every((constraint) => this.isNodeFilterMatched(node, { filterField, filterValue: constraint.value, filterConstraint: this.resolveFilterConstraint(constraint.matchMode), strict }));\n            }\n\n            return this.isNodeFilterMatched(node, { filterField, filterValue: filterMeta.value, filterConstraint: this.resolveFilterConstraint(filterMeta.matchMode || this.columnProp(col, 'filterMatchMode')), strict });\n        },\n        isNodeFilterMatched(node, paramsWithoutNode) {\n            // evaluation order matters, findFilteredNodes prunes the children of the node copy\n            return paramsWithoutNode.strict ? !!(this.findFilteredNodes(node, paramsWithoutNode) || this.isFilterMatched(node, paramsWithoutNode)) : !!(this.isFilterMatched(node, paramsWithoutNode) || this.findFilteredNodes(node, paramsWithoutNode));\n        },\n        getActiveFilters(filters) {\n            const removeEmptyFilters = ([key, value]) => {\n                if (!this.isFilterMetaObject(value)) {\n                    return [key, value];\n                }\n\n                if (value.constraints) {\n                    const filteredConstraints = value.constraints.filter((constraint) => constraint.value !== null);\n\n                    if (filteredConstraints.length > 0) {\n                        return [key, { ...value, constraints: filteredConstraints }];\n                    }\n                } else if (value.value !== null) {\n                    return [key, value];\n                }\n\n                return undefined;\n            };\n\n            const filterValidEntries = (entry) => entry !== undefined;\n            const entries = Object.entries(filters || {})\n                .map(removeEmptyFilters)\n                .filter(filterValidEntries);\n\n            return Object.fromEntries(entries);\n        },\n        cloneFilters(filters) {\n            let cloned = {};\n\n            if (filters) {\n                Object.entries(filters).forEach(([prop, value]) => {\n                    if (!this.isFilterMetaObject(value)) {\n                        cloned[prop] = value;\n                    } else if (value.operator) {\n                        cloned[prop] = {\n                            operator: value.operator,\n                            constraints: value.constraints.map((constraint) => {\n                                return { ...constraint };\n                            })\n                        };\n                    } else {\n                        cloned[prop] = { ...value };\n                    }\n                });\n            }\n\n            return cloned;\n        },\n        onFilterChange(filters) {\n            this.d_filters = filters;\n        },\n        onFilterApply() {\n            this.d_first = 0;\n            this.$emit('update:first', this.d_first);\n            this.$emit('update:filters', this.d_filters);\n\n            if (this.lazy) {\n                const filterEvent = this.createLazyLoadEvent();\n\n                filterEvent.filters = this.d_filters;\n                this.$emit('filter', filterEvent);\n            }\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, { filterField, filterValue, filterConstraint, strict }) {\n            let matched = false;\n            let dataFieldValue = resolveFieldData(node.data, filterField);\n\n            if (filterConstraint(dataFieldValue, filterValue, this.filterLocale)) {\n                matched = true;\n            }\n\n            if (!matched || (strict && !this.isNodeLeaf(node))) {\n                matched = this.findFilteredNodes(node, { filterField, filterValue, filterConstraint, strict }) || matched;\n            }\n\n            return matched;\n        },\n        isNodeSelected(node) {\n            return this.selectionMode && this.selectionKeys ? this.selectionKeys[this.nodeKey(node)] === true : false;\n        },\n        isNodeLeaf(node) {\n            return node.leaf === false ? false : !(node.children && node.children.length);\n        },\n        createLazyLoadEvent(event) {\n            let filterMatchModes;\n\n            if (this.hasFilters()) {\n                filterMatchModes = {};\n                this.columns.forEach((col) => {\n                    if (this.columnProp(col, 'field')) {\n                        filterMatchModes[col.props.field] = this.columnProp(col, 'filterMatchMode');\n                    }\n                });\n            }\n\n            return {\n                originalEvent: event,\n                first: this.d_first,\n                rows: this.d_rows,\n                sortField: this.d_sortField,\n                sortOrder: this.d_sortOrder,\n                multiSortMeta: this.d_multiSortMeta,\n                filters: this.filters,\n                filterMatchModes: filterMatchModes\n            };\n        },\n        onColumnResizeStart(event) {\n            let containerLeft = getOffset(this.$el).left;\n\n            this.resizeColumnElement = event.target.parentElement;\n            this.columnResizing = true;\n            this.lastResizeHelperX = event.pageX - containerLeft + this.$el.scrollLeft;\n\n            this.bindColumnResizeEvents();\n        },\n        onColumnResize(event) {\n            let containerLeft = getOffset(this.$el).left;\n\n            this.$el.setAttribute('data-p-unselectable-text', 'true');\n            !this.isUnstyled && addStyle(this.$el, { 'user-select': 'none' });\n            this.$refs.resizeHelper.style.height = this.$el.offsetHeight + 'px';\n            this.$refs.resizeHelper.style.top = 0 + 'px';\n            this.$refs.resizeHelper.style.left = event.pageX - containerLeft + this.$el.scrollLeft + 'px';\n\n            this.$refs.resizeHelper.style.display = 'block';\n        },\n        onColumnResizeEnd() {\n            let delta = isRTL(this.$el) ? this.lastResizeHelperX - this.$refs.resizeHelper.offsetLeft : this.$refs.resizeHelper.offsetLeft - this.lastResizeHelperX;\n            let columnWidth = this.resizeColumnElement.offsetWidth;\n            let newColumnWidth = columnWidth + delta;\n            let minWidth = this.resizeColumnElement.style.minWidth || 15;\n\n            if (columnWidth + delta > parseInt(minWidth, 10)) {\n                if (this.columnResizeMode === 'fit') {\n                    let nextColumn = this.resizeColumnElement.nextElementSibling;\n                    let nextColumnWidth = nextColumn.offsetWidth - delta;\n\n                    if (newColumnWidth > 15 && nextColumnWidth > 15) {\n                        this.resizeTableCells(newColumnWidth, nextColumnWidth);\n                    }\n                } else if (this.columnResizeMode === 'expand') {\n                    const tableWidth = this.$refs.table.offsetWidth + delta + 'px';\n\n                    const updateTableWidth = (el) => {\n                        !!el && (el.style.width = el.style.minWidth = tableWidth);\n                    };\n\n                    // Reasoning: resize table cells before updating the table width so that it can use existing computed cell widths and adjust only the one column.\n                    this.resizeTableCells(newColumnWidth);\n                    updateTableWidth(this.$refs.table);\n                }\n\n                this.$emit('column-resize-end', {\n                    element: this.resizeColumnElement,\n                    delta: delta\n                });\n            }\n\n            this.$refs.resizeHelper.style.display = 'none';\n            this.resizeColumn = null;\n            this.$el.removeAttribute('data-p-unselectable-text');\n            !this.isUnstyled && (this.$el.style['user-select'] = '');\n\n            this.unbindColumnResizeEvents();\n        },\n        resizeTableCells(newColumnWidth, nextColumnWidth) {\n            let colIndex = getIndex(this.resizeColumnElement);\n            let widths = [];\n            let headers = find(this.$refs.table, 'thead[data-pc-section=\"thead\"] > tr > th');\n\n            headers.forEach((header) => widths.push(getOuterWidth(header)));\n\n            this.destroyStyleElement();\n            this.createStyleElement();\n\n            let innerHTML = '';\n            let selector = `[data-pc-name=\"treetable\"][${this.$attrSelector}] > [data-pc-section=\"tablecontainer\"] > table[data-pc-section=\"table\"]`;\n\n            widths.forEach((width, index) => {\n                let colWidth = index === colIndex ? newColumnWidth : nextColumnWidth && index === colIndex + 1 ? nextColumnWidth : width;\n                let style = `width: ${colWidth}px !important; max-width: ${colWidth}px !important`;\n\n                innerHTML += `\n                    ${selector} > thead[data-pc-section=\"thead\"] > tr > th:nth-child(${index + 1}),\n                    ${selector} > tbody[data-pc-section=\"tbody\"] > tr > td:nth-child(${index + 1}),\n                    ${selector} > tfoot[data-pc-section=\"tfoot\"] > tr > td:nth-child(${index + 1}) {\n                        ${style}\n                    }\n                `;\n            });\n\n            this.styleElement.innerHTML = innerHTML;\n        },\n        bindColumnResizeEvents() {\n            if (!this.documentColumnResizeListener) {\n                this.documentColumnResizeListener = document.addEventListener('mousemove', (event) => {\n                    if (this.columnResizing) {\n                        this.onColumnResize(event);\n                    }\n                });\n            }\n\n            if (!this.documentColumnResizeEndListener) {\n                this.documentColumnResizeEndListener = document.addEventListener('mouseup', () => {\n                    if (this.columnResizing) {\n                        this.columnResizing = false;\n                        this.onColumnResizeEnd();\n                    }\n                });\n            }\n        },\n        unbindColumnResizeEvents() {\n            if (this.documentColumnResizeListener) {\n                document.removeEventListener('document', this.documentColumnResizeListener);\n                this.documentColumnResizeListener = null;\n            }\n\n            if (this.documentColumnResizeEndListener) {\n                document.removeEventListener('document', this.documentColumnResizeEndListener);\n                this.documentColumnResizeEndListener = null;\n            }\n        },\n        onColumnKeyDown(event, col) {\n            if ((event.code === 'Enter' || event.code === 'NumpadEnter') && event.currentTarget.nodeName === 'TH' && getAttribute(event.currentTarget, 'data-p-sortable-column')) {\n                this.onColumnHeaderClick(event, col);\n            }\n        },\n        hasColumnFilter() {\n            if (this.columns) {\n                for (let col of this.columns) {\n                    if (col.children && col.children.filter) {\n                        return true;\n                    }\n                }\n            }\n\n            return false;\n        },\n        hasFilters() {\n            return this.filters && Object.keys(this.filters).length > 0 && this.filters.constructor === Object;\n        },\n        hasGlobalFilter() {\n            return this.filters && Object.prototype.hasOwnProperty.call(this.filters, 'global');\n        },\n        getItemLabel(node) {\n            return node.data.name;\n        },\n        createStyleElement() {\n            this.styleElement = document.createElement('style');\n            this.styleElement.type = 'text/css';\n            setAttribute(this.styleElement, 'nonce', this.$primevue?.config?.csp?.nonce);\n            document.head.appendChild(this.styleElement);\n        },\n        destroyStyleElement() {\n            if (this.styleElement) {\n                document.head.removeChild(this.styleElement);\n                this.styleElement = null;\n            }\n        },\n        setTabindex(node, index) {\n            if (this.isNodeSelected(node)) {\n                this.hasASelectedNode = true;\n\n                return 0;\n            }\n\n            if (this.selectionMode) {\n                if (!this.isNodeSelected(node) && index === 0 && !this.hasASelectedNode) return 0;\n            } else if (!this.selectionMode && index === 0) {\n                return 0;\n            }\n\n            return -1;\n        }\n    },\n    computed: {\n        columns() {\n            return this.d_columns.get(this);\n        },\n        headerFilterButtonProps() {\n            return {\n                filter: { severity: 'secondary', text: true, rounded: true },\n                ...this.filterButtonProps,\n                inline: {\n                    clear: { severity: 'secondary', text: true, rounded: true },\n                    ...this.filterButtonProps.inline\n                },\n                popover: {\n                    addRule: { severity: 'info', text: true, size: 'small' },\n                    removeRule: { severity: 'danger', text: true, size: 'small' },\n                    apply: { size: 'small' },\n                    clear: { outlined: true, size: 'small' },\n                    ...this.filterButtonProps.popover\n                }\n            };\n        },\n        processedData() {\n            if (this.lazy) {\n                return this.value;\n            } else {\n                if (this.value && this.value.length) {\n                    let data = this.value;\n\n                    if (this.sorted) {\n                        if (this.sortMode === 'single') data = this.sortSingle(data);\n                        else if (this.sortMode === 'multiple') data = this.sortMultiple(data);\n                    }\n\n                    if (this.hasFilters()) {\n                        data = this.filter(data);\n                    }\n\n                    return data;\n                } else {\n                    return null;\n                }\n            }\n        },\n        dataToRender() {\n            const data = this.processedData;\n\n            if (this.paginator) {\n                const first = this.lazy ? 0 : this.d_first;\n\n                return data.slice(first, first + this.d_rows);\n            } else {\n                return data;\n            }\n        },\n        empty() {\n            const data = this.processedData;\n\n            return !data || data.length === 0;\n        },\n        sorted() {\n            return this.d_sortField || (this.d_multiSortMeta && this.d_multiSortMeta.length > 0);\n        },\n        hasFooter() {\n            let hasFooter = false;\n\n            for (let col of this.columns) {\n                if (this.columnProp(col, 'footer') || (col.children && col.children.footer)) {\n                    hasFooter = true;\n                    break;\n                }\n            }\n\n            return hasFooter;\n        },\n        paginatorTop() {\n            return this.paginator && (this.paginatorPosition !== 'bottom' || this.paginatorPosition === 'both');\n        },\n        paginatorBottom() {\n            return this.paginator && (this.paginatorPosition !== 'top' || this.paginatorPosition === 'both');\n        },\n        singleSelectionMode() {\n            return this.selectionMode && this.selectionMode === 'single';\n        },\n        multipleSelectionMode() {\n            return this.selectionMode && this.selectionMode === 'multiple';\n        },\n        rowSelectionMode() {\n            return this.singleSelectionMode || this.multipleSelectionMode;\n        },\n        totalRecordsLength() {\n            if (this.lazy) {\n                return this.totalRecords;\n            } else {\n                const data = this.processedData;\n\n                return data ? data.length : 0;\n            }\n        },\n        dataP() {\n            return cn({\n                scrollable: this.scrollable,\n                'flex-scrollable': this.scrollable && this.scrollHeight === 'flex',\n                [this.size]: this.size,\n                loading: this.loading,\n                empty: this.empty\n            });\n        }\n    },\n    components: {\n        TTRow: TreeTableRow,\n        TTPaginator: Paginator,\n        TTHeaderCell: HeaderCell,\n        TTFilterHeaderCell: FilterHeaderCell,\n        TTFooterCell: FooterCell,\n        SpinnerIcon: SpinnerIcon\n    }\n};\n</script>\n"],"names":["name","BaseComponent","props","value","type","dataKey","String","Function","expandedKeys","selectionKeys","selectionMode","metaKeySelection","Boolean","contextMenu","contextMenuSelection","Object","rows","Number","first","totalRecords","paginator","paginatorPosition","alwaysShowPaginator","paginatorTemplate","pageLinkSize","rowsPerPageOptions","Array","currentPageReportTemplate","lazy","loading","loadingIcon","undefined","loadingMode","rowHover","autoLayout","sortField","sortOrder","defaultSortOrder","multiSortMeta","sortMode","removableSort","filters","filterMode","filterLocale","filterDisplay","globalFilterFields","filterInputProps","filterButtonProps","default","filter","severity","text","rounded","inline","clear","popover","addRule","size","removeRule","apply","outlined","resizableColumns","columnResizeMode","indentation","showGridlines","scrollable","scrollHeight","tableStyle","tableClass","tableProps","style","TreeTableStyle","provide","$pcTreeTable","$parentInstance","hostName","emits","field","display","showMenu","matchMode","showOperator","showClearButton","showApplyButton","showMatchModes","showAddButton","matchModeOptions","maxConstraints","filterElement","filterHeaderTemplate","filterFooterTemplate","filterClearTemplate","filterApplyTemplate","filterIconTemplate","filterAddIconTemplate","filterRemoveIconTemplate","filterClearIconTemplate","filtersStore","filterMenuClass","filterMenuStyle","column","data","overlayVisible","defaultMatchMode","defaultOperator","overlay","selfClick","overlayEventListener","beforeUnmount","OverlayEventBus","off","ZIndex","onOverlayHide","mounted","fieldFilters","operator","constraints","methods","getColumnPT","key","params","columnMetaData","parent","instance","$props","state","$data","mergeProps","ptm","concat","ptmo","getColumnProp","pt","ptmFilterConstraintOptions","context","highlighted","isRowMatchModeSelected","clearFilter","_filters","_objectSpread","splice","$emit","hide","applyFilter","hasFilter","fieldFilter","isFilterBlank","hasRowFilter","trim","length","toggleMenu","event","preventDefault","onToggleButtonKeyDown","code","onRowMatchModeChange","onRowMatchModeKeyDown","item","target","nextItem","findNextItem","removeAttribute","tabIndex","focus","prevItem","findPrevItem","onOperatorChange","onMenuMatchModeChange","index","addConstraint","newConstraint","push","constraint","removeConstraint","removedConstraint","filterCallback","nextElementSibling","getAttribute","parentElement","firstElementChild","previousElementSibling","lastElementChild","showMenuButton","$refs","icon","$el","onContentClick","emit","originalEvent","onContentMouseDown","onOverlayEnter","el","_this","addStyle","set","$primevue","config","zIndex","position","top","absolutePosition","bindOutsideClickListener","bindScrollListener","bindResizeListener","e","isOutsideClicked","on","onOverlayAfterEnter","_this$overlay","$focustrap","autoFocus","onOverlayLeave","onOverlayAfterLeave","unbindOutsideClickListener","unbindResizeListener","unbindScrollListener","overlayRef","isTargetClicked","isSameNode","contains","isNestedOverlayClicked","_this2","node","document","body","attrSelectors","_toConsumableArray","attributes","attr","test","map","some","attrSelector","querySelector","_this3","outsideClickListener","addEventListener","removeEventListener","_this4","scrollHandler","ConnectedOverlayScrollHandler","_this5","resizeListener","isTouchDevice","window","computed","overlayId","$id","matchModes","_this6","filterMatchModeOptions","label","locale","isShowMatchModes","operatorOptions","matchAll","FilterOperator","AND","matchAny","OR","noFilterLabel","noFilter","isShowOperator","fieldConstraints","showRemoveIcon","removeRuleButtonLabel","addRuleButtonLabel","isShowAddConstraint","clearButtonLabel","applyButtonLabel","columnFilterButtonAriaLabel","_this$$primevue$confi","aria","hideFilterMenu","showFilterMenu","filterOperatorAriaLabel","filterOperator","filterRuleAriaLabel","filterConstraint","ptmHeaderFilterClearParams","hidden","ptmFilterMenuParams","active","components","Select","Button","Portal","FilterSlashIcon","FilterFillIcon","FilterIcon","TrashIcon","PlusIcon","directives","focustrap","FocusTrap","_openBlock","_createElementBlock","_mergeProps","_ctx","cx","$options","_createBlock","_resolveDynamicComponent","filterModel","_component_Button","ref","unstyled","onClick","_cache","$event","onKeydown","_withCtx","slotProps","_createVNode","_component_Portal","_Transition","onEnter","onAfterEnter","onLeave","onAfterLeave","_withDirectives","id","role","arguments","onMousedown","_Fragment","_renderList","i","tabindex","ref_for","_toDisplayString","_createElementVNode","onRowClearItemClick","_component_Select","options","modelValue","optionLabel","optionValue","fieldConstraint","onUpdateModelValue","iconProps","iconPos","ColumnFilter","styleObject","columnProp","updateStickyPosition","updated","prop","getVNodeProp","align","pos","next","getNextElementSibling","getOuterWidth","parseFloat","insetInlineEnd","prev","getPreviousElementSibling","insetInlineStart","getFilterColumnHeaderClass","filterCell","getFilterColumnHeaderStyle","TTColumnFilter","children","_component_TTColumnFilter","filterheader","filterfooter","filterclear","filterapply","filtericon","filteraddicon","filterremoveicon","filterclearicon","onFilterChange","onFilterApply","onMatchmodeChange","onConstraintAdd","onConstraintRemove","onApplyClick","_this$$parentInstance","frozen","containerClass","containerStyle","bodyStyle","columnStyle","footer","sorted","isColumnSorted","resizable","filterRow","getIndex","onKeyDown","currentTarget","nodeName","onResizeStart","getMultiSortMetaIndex","meta","isMultiSorted","headerStyle","sortState","metaIndex","order","sortableColumnIcon","_this$sortState","SortAltIcon","SortAmountUpAltIcon","SortAmountDownIcon","ariaSort","_this$sortState2","Badge","header","sorticon","_component_Badge","level","leaf","expanded","checked","partialChecked","templates","toggle","selectable","rowSelectionMode","selected","$parent","getColumnCheckboxPT","resolveFieldData","rowData","toggleCheckbox","togglerStyle","marginLeft","visibility","checkboxSelectionMode","Checkbox","ChevronRightIcon","ChevronDownIcon","CheckIcon","MinusIcon","SpinnerIcon","ripple","Ripple","_component_SpinnerIcon","spin","rowtoggleicon","rowtogglericon","expandedIcon","collapsedIcon","_component_Checkbox","binary","disabled","onChange","indeterminate","_normalizeClass","_createTextVNode","parentNode","columns","ariaSetSize","ariaPosInset","nodeTouched","col","isClickable","tagName","setTabIndexForSelectionMode","onRowRightClick","onTouchEnd","nodeKey","onArrowDownKey","onArrowUpKey","onArrowLeftKey","onArrowRightKey","onHomeKey","onEndKey","onEnterKey","onTabKey","focusRowChange","ishiddenIcon","findSingle","togglerElement","click","$nextTick","findBeforeClickableNode","findFirstElement","nodes","find","hasSelectedRow","row","forEach","selectedNodes","firstFocusableRow","currentFocusedRow","prevNode","prevNodeButton","_selectionKeys","_check","propagateDown","check","_iterator","_createForOfIteratorHelper","_step","s","n","done","child","err","f","propagateUp","checkedChildCount","childPartialSelected","_iterator2","_step2","onCheckboxChange","_iterator3","_step3","elements","every","element","styleClass","isSelectedWithContextMenu","equals","getAriaSelected","ptmOptions","TTBodyCell","BodyCell","onTouchend","onContextmenu","_component_TTBodyCell","onNodeToggle","onCheckboxToggle","childNode","_component_TreeTableRow","indexOf","onNodeClick","onRowRightclick","BaseTreeTable","inheritAttrs","$columns","d_columns","d_expandedKeys","d_first","d_rows","d_sortField","d_sortOrder","d_multiSortMeta","d_filters","cloneFilters","hasASelectedNode","HelperSet","documentColumnResizeListener","documentColumnResizeEndListener","lastResizeHelperX","resizeColumnElement","watch","newValue","deep","handler","destroyStyleElement","ptHeaderCellOptions","metaSelection","handleSelectionWithMetaKey","handleSelectionWithoutMetaKey","metaKey","ctrlKey","isNodeSelected","isSingleSelectionMode","isMultipleSelectionMode","clearSelection","onPage","pageEvent","createLazyLoadEvent","pageCount","page","resetPage","onColumnHeaderClick","targetNode","columnField","closest","addMultiSortField","findIndex","sortSingle","sortNodesSingle","comparer","localeComparator","sort","node1","node2","value1","value2","sortMultiple","sortNodesMultiple","multisortField","strict","activeFilters","getActiveFilters","hasGlobalFilter","prototype","hasOwnProperty","call","filteredNodes","keys","copyNode","localMatch","globalMatch","j","filterField","isColumnFilterMatched","globalFilterMeta","filterValue","isFilterMetaObject","resolveFilterConstraint","FilterMatchMode","CONTAINS","copyNodeForGlobal","isNodeFilterMatched","filterEvent","filteredValue","filterMeta","_typeof","FilterService","STARTS_WITH","dataFieldValue","paramsWithoutNode","findFilteredNodes","isFilterMatched","removeEmptyFilters","_ref","_ref2","_slicedToArray","filteredConstraints","filterValidEntries","entry","entries","fromEntries","cloned","_ref3","_ref4","matched","childNodes","copyChildNode","_ref5","isNodeLeaf","_this7","filterMatchModes","hasFilters","onColumnResizeStart","containerLeft","getOffset","left","columnResizing","pageX","scrollLeft","bindColumnResizeEvents","onColumnResize","setAttribute","isUnstyled","resizeHelper","height","offsetHeight","onColumnResizeEnd","delta","isRTL","offsetLeft","columnWidth","offsetWidth","newColumnWidth","minWidth","parseInt","nextColumn","nextColumnWidth","resizeTableCells","tableWidth","table","updateTableWidth","width","resizeColumn","unbindColumnResizeEvents","colIndex","widths","headers","createStyleElement","innerHTML","selector","$attrSelector","colWidth","styleElement","_this8","onColumnKeyDown","hasColumnFilter","_iterator4","_step4","constructor","getItemLabel","_this$$primevue","createElement","csp","nonce","head","appendChild","removeChild","setTabindex","get","headerFilterButtonProps","processedData","dataToRender","slice","empty","hasFooter","_iterator5","_step5","paginatorTop","paginatorBottom","singleSelectionMode","multipleSelectionMode","totalRecordsLength","dataP","cn","_defineProperty","TTRow","TreeTableRow","TTPaginator","Paginator","TTHeaderCell","HeaderCell","TTFilterHeaderCell","FilterHeaderCell","TTFooterCell","FooterCell","ptmi","_renderSlot","$slots","_component_TTPaginator","template","alwaysShow","paginatorcontainer","fn","last","firstPageCallback","lastPageCallback","prevPageCallback","nextPageCallback","rowChangeCallback","pageLinks","changePageCallback","paginatorstart","paginatorend","paginatorfirstpagelinkicon","paginatorprevpagelinkicon","paginatornextpagelinkicon","paginatorlastpagelinkicon","paginatorjumptopagedropdownicon","paginatorrowsperpagedropdownicon","sx","maxHeight","_component_TTHeaderCell","onColumnClick","onColumnResizestart","_component_TTFilterHeaderCell","_component_TTRow","colspan","_component_TTFooterCell"],"mappings":"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"}