{"version":3,"file":"index.mjs","sources":["../../src/panelmenu/BasePanelMenu.vue","../../src/panelmenu/PanelMenuSub.vue","../../src/panelmenu/PanelMenuSub.vue?vue&type=template&id=477221ea&lang.js","../../src/panelmenu/PanelMenuList.vue","../../src/panelmenu/PanelMenuList.vue?vue&type=template&id=7637fcce&lang.js","../../src/panelmenu/PanelMenu.vue","../../src/panelmenu/PanelMenu.vue?vue&type=template&id=44bde874&lang.js"],"sourcesContent":["<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport PanelMenuStyle from 'primevue/panelmenu/style';\n\nexport default {\n    name: 'BasePanelMenu',\n    extends: BaseComponent,\n    props: {\n        model: {\n            type: Array,\n            default: null\n        },\n        expandedKeys: {\n            type: Object,\n            default: null\n        },\n        multiple: {\n            type: Boolean,\n            default: false\n        },\n        tabindex: {\n            type: Number,\n            default: 0\n        }\n    },\n    style: PanelMenuStyle,\n    provide() {\n        return {\n            $pcPanelMenu: this,\n            $parentInstance: this\n        };\n    }\n};\n</script>\n","<template>\n    <ul :class=\"cx('submenu')\" :tabindex=\"tabindex\">\n        <template v-for=\"(processedItem, index) of items\" :key=\"getItemKey(processedItem)\">\n            <li\n                v-if=\"isItemVisible(processedItem) && !getItemProp(processedItem, 'separator')\"\n                :id=\"getItemId(processedItem)\"\n                :class=\"[cx('item', { processedItem }), getItemProp(processedItem, 'class')]\"\n                :style=\"getItemProp(processedItem, 'style')\"\n                role=\"treeitem\"\n                :aria-label=\"getItemLabel(processedItem)\"\n                :aria-expanded=\"isItemGroup(processedItem) ? isItemActive(processedItem) : undefined\"\n                :aria-level=\"level + 1\"\n                :aria-setsize=\"getAriaSetSize()\"\n                :aria-posinset=\"getAriaPosInset(index)\"\n                v-bind=\"getPTOptions('item', processedItem, index)\"\n                :data-p-focused=\"isItemFocused(processedItem)\"\n                :data-p-disabled=\"isItemDisabled(processedItem)\"\n            >\n                <div :class=\"cx('itemContent')\" @click=\"onItemClick($event, processedItem)\" @mousemove=\"onItemMouseMove($event, processedItem)\" v-bind=\"getPTOptions('itemContent', processedItem, index)\">\n                    <template v-if=\"!templates.item\">\n                        <a v-ripple :href=\"getItemProp(processedItem, 'url')\" :class=\"cx('itemLink')\" :target=\"getItemProp(processedItem, 'target')\" tabindex=\"-1\" v-bind=\"getPTOptions('itemLink', processedItem, index)\">\n                            <template v-if=\"isItemGroup(processedItem)\">\n                                <component v-if=\"templates.submenuicon\" :is=\"templates.submenuicon\" :class=\"cx('submenuIcon')\" :active=\"isItemActive(processedItem)\" v-bind=\"getPTOptions('submenuIcon', processedItem, index)\" />\n                                <component v-else :is=\"isItemActive(processedItem) ? 'ChevronDownIcon' : 'ChevronRightIcon'\" :class=\"cx('submenuIcon')\" v-bind=\"getPTOptions('submenuIcon', processedItem, index)\" />\n                            </template>\n                            <component v-if=\"templates.itemicon\" :is=\"templates.itemicon\" :item=\"processedItem.item\" :class=\"cx('itemIcon')\" />\n                            <span v-else-if=\"getItemProp(processedItem, 'icon')\" :class=\"[cx('itemIcon'), getItemProp(processedItem, 'icon')]\" v-bind=\"getPTOptions('itemIcon', processedItem, index)\" />\n                            <span :class=\"cx('itemLabel')\" v-bind=\"getPTOptions('itemLabel', processedItem, index)\">{{ getItemLabel(processedItem) }}</span>\n                        </a>\n                    </template>\n                    <component\n                        v-else\n                        :is=\"templates.item\"\n                        :item=\"processedItem.item\"\n                        :root=\"false\"\n                        :active=\"isItemActive(processedItem)\"\n                        :hasSubmenu=\"isItemGroup(processedItem)\"\n                        :label=\"getItemLabel(processedItem)\"\n                        :props=\"getMenuItemProps(processedItem, index)\"\n                    ></component>\n                </div>\n                <transition name=\"p-toggleable-content\" v-bind=\"ptm('transition')\">\n                    <div v-show=\"isItemActive(processedItem)\" :class=\"cx('contentContainer')\" v-bind=\"ptm('contentContainer')\">\n                        <PanelMenuSub\n                            v-if=\"isItemVisible(processedItem) && isItemGroup(processedItem)\"\n                            :id=\"getItemId(processedItem) + '_list'\"\n                            role=\"group\"\n                            :panelId=\"panelId\"\n                            :focusedItemId=\"focusedItemId\"\n                            :items=\"processedItem.items\"\n                            :level=\"level + 1\"\n                            :templates=\"templates\"\n                            :activeItemPath=\"activeItemPath\"\n                            @item-toggle=\"onItemToggle\"\n                            @item-mousemove=\"$emit('item-mousemove', $event)\"\n                            :pt=\"pt\"\n                            :unstyled=\"unstyled\"\n                            v-bind=\"ptm('submenu')\"\n                        />\n                    </div>\n                </transition>\n            </li>\n            <li\n                v-if=\"isItemVisible(processedItem) && getItemProp(processedItem, 'separator')\"\n                :style=\"getItemProp(processedItem, 'style')\"\n                :class=\"[cx('separator'), getItemProp(processedItem, 'class')]\"\n                role=\"separator\"\n                v-bind=\"ptm('separator')\"\n            ></li>\n        </template>\n    </ul>\n</template>\n\n<script>\nimport { isNotEmpty, resolve } from '@primeuix/utils/object';\nimport BaseComponent from '@primevue/core/basecomponent';\nimport ChevronDownIcon from '@primevue/icons/chevrondown';\nimport ChevronRightIcon from '@primevue/icons/chevronright';\nimport Ripple from 'primevue/ripple';\nimport { mergeProps } from 'vue';\n\nexport default {\n    name: 'PanelMenuSub',\n    hostName: 'PanelMenu',\n    extends: BaseComponent,\n    emits: ['item-toggle', 'item-mousemove'],\n    props: {\n        panelId: {\n            type: String,\n            default: null\n        },\n        focusedItemId: {\n            type: String,\n            default: null\n        },\n        items: {\n            type: Array,\n            default: null\n        },\n        level: {\n            type: Number,\n            default: 0\n        },\n        templates: {\n            type: Object,\n            default: null\n        },\n        activeItemPath: {\n            type: Object,\n            default: null\n        },\n        tabindex: {\n            type: Number,\n            default: -1\n        }\n    },\n    methods: {\n        getItemId(processedItem) {\n            return `${this.panelId}_${processedItem.key}`;\n        },\n        getItemKey(processedItem) {\n            return this.getItemId(processedItem);\n        },\n        getItemProp(processedItem, name, params) {\n            return processedItem && processedItem.item ? resolve(processedItem.item[name], params) : undefined;\n        },\n        getItemLabel(processedItem) {\n            return this.getItemProp(processedItem, 'label');\n        },\n        getPTOptions(key, processedItem, index) {\n            return this.ptm(key, {\n                context: {\n                    item: processedItem.item,\n                    index,\n                    active: this.isItemActive(processedItem),\n                    focused: this.isItemFocused(processedItem),\n                    disabled: this.isItemDisabled(processedItem)\n                }\n            });\n        },\n        isItemActive(processedItem) {\n            return this.activeItemPath.some((path) => path.key === processedItem.key);\n        },\n        isItemVisible(processedItem) {\n            return this.getItemProp(processedItem, 'visible') !== false;\n        },\n        isItemDisabled(processedItem) {\n            return this.getItemProp(processedItem, 'disabled');\n        },\n        isItemFocused(processedItem) {\n            return this.focusedItemId === this.getItemId(processedItem);\n        },\n        isItemGroup(processedItem) {\n            return isNotEmpty(processedItem.items);\n        },\n        onItemClick(event, processedItem) {\n            this.getItemProp(processedItem, 'command', { originalEvent: event, item: processedItem.item });\n            this.$emit('item-toggle', { processedItem, expanded: !this.isItemActive(processedItem) });\n        },\n        onItemToggle(event) {\n            this.$emit('item-toggle', event);\n        },\n        onItemMouseMove(event, processedItem) {\n            this.$emit('item-mousemove', { originalEvent: event, processedItem });\n        },\n        getAriaSetSize() {\n            return this.items.filter((processedItem) => this.isItemVisible(processedItem) && !this.getItemProp(processedItem, 'separator')).length;\n        },\n        getAriaPosInset(index) {\n            return index - this.items.slice(0, index).filter((processedItem) => this.isItemVisible(processedItem) && this.getItemProp(processedItem, 'separator')).length + 1;\n        },\n        getMenuItemProps(processedItem, index) {\n            return {\n                action: mergeProps(\n                    {\n                        class: this.cx('itemLink'),\n                        tabindex: -1,\n                        'aria-hidden': true\n                    },\n                    this.getPTOptions('itemLink', processedItem, index)\n                ),\n                icon: mergeProps(\n                    {\n                        class: [this.cx('itemIcon'), this.getItemProp(processedItem, 'icon')]\n                    },\n                    this.getPTOptions('itemIcon', processedItem, index)\n                ),\n                label: mergeProps(\n                    {\n                        class: this.cx('itemLabel')\n                    },\n                    this.getPTOptions('itemLabel', processedItem, index)\n                ),\n                submenuicon: mergeProps(\n                    {\n                        class: this.cx('submenuIcon')\n                    },\n                    this.getPTOptions('submenuicon', processedItem, index)\n                )\n            };\n        }\n    },\n    components: {\n        ChevronRightIcon: ChevronRightIcon,\n        ChevronDownIcon: ChevronDownIcon\n    },\n    directives: {\n        ripple: Ripple\n    }\n};\n</script>\n","<template>\n    <ul :class=\"cx('submenu')\" :tabindex=\"tabindex\">\n        <template v-for=\"(processedItem, index) of items\" :key=\"getItemKey(processedItem)\">\n            <li\n                v-if=\"isItemVisible(processedItem) && !getItemProp(processedItem, 'separator')\"\n                :id=\"getItemId(processedItem)\"\n                :class=\"[cx('item', { processedItem }), getItemProp(processedItem, 'class')]\"\n                :style=\"getItemProp(processedItem, 'style')\"\n                role=\"treeitem\"\n                :aria-label=\"getItemLabel(processedItem)\"\n                :aria-expanded=\"isItemGroup(processedItem) ? isItemActive(processedItem) : undefined\"\n                :aria-level=\"level + 1\"\n                :aria-setsize=\"getAriaSetSize()\"\n                :aria-posinset=\"getAriaPosInset(index)\"\n                v-bind=\"getPTOptions('item', processedItem, index)\"\n                :data-p-focused=\"isItemFocused(processedItem)\"\n                :data-p-disabled=\"isItemDisabled(processedItem)\"\n            >\n                <div :class=\"cx('itemContent')\" @click=\"onItemClick($event, processedItem)\" @mousemove=\"onItemMouseMove($event, processedItem)\" v-bind=\"getPTOptions('itemContent', processedItem, index)\">\n                    <template v-if=\"!templates.item\">\n                        <a v-ripple :href=\"getItemProp(processedItem, 'url')\" :class=\"cx('itemLink')\" :target=\"getItemProp(processedItem, 'target')\" tabindex=\"-1\" v-bind=\"getPTOptions('itemLink', processedItem, index)\">\n                            <template v-if=\"isItemGroup(processedItem)\">\n                                <component v-if=\"templates.submenuicon\" :is=\"templates.submenuicon\" :class=\"cx('submenuIcon')\" :active=\"isItemActive(processedItem)\" v-bind=\"getPTOptions('submenuIcon', processedItem, index)\" />\n                                <component v-else :is=\"isItemActive(processedItem) ? 'ChevronDownIcon' : 'ChevronRightIcon'\" :class=\"cx('submenuIcon')\" v-bind=\"getPTOptions('submenuIcon', processedItem, index)\" />\n                            </template>\n                            <component v-if=\"templates.itemicon\" :is=\"templates.itemicon\" :item=\"processedItem.item\" :class=\"cx('itemIcon')\" />\n                            <span v-else-if=\"getItemProp(processedItem, 'icon')\" :class=\"[cx('itemIcon'), getItemProp(processedItem, 'icon')]\" v-bind=\"getPTOptions('itemIcon', processedItem, index)\" />\n                            <span :class=\"cx('itemLabel')\" v-bind=\"getPTOptions('itemLabel', processedItem, index)\">{{ getItemLabel(processedItem) }}</span>\n                        </a>\n                    </template>\n                    <component\n                        v-else\n                        :is=\"templates.item\"\n                        :item=\"processedItem.item\"\n                        :root=\"false\"\n                        :active=\"isItemActive(processedItem)\"\n                        :hasSubmenu=\"isItemGroup(processedItem)\"\n                        :label=\"getItemLabel(processedItem)\"\n                        :props=\"getMenuItemProps(processedItem, index)\"\n                    ></component>\n                </div>\n                <transition name=\"p-toggleable-content\" v-bind=\"ptm('transition')\">\n                    <div v-show=\"isItemActive(processedItem)\" :class=\"cx('contentContainer')\" v-bind=\"ptm('contentContainer')\">\n                        <PanelMenuSub\n                            v-if=\"isItemVisible(processedItem) && isItemGroup(processedItem)\"\n                            :id=\"getItemId(processedItem) + '_list'\"\n                            role=\"group\"\n                            :panelId=\"panelId\"\n                            :focusedItemId=\"focusedItemId\"\n                            :items=\"processedItem.items\"\n                            :level=\"level + 1\"\n                            :templates=\"templates\"\n                            :activeItemPath=\"activeItemPath\"\n                            @item-toggle=\"onItemToggle\"\n                            @item-mousemove=\"$emit('item-mousemove', $event)\"\n                            :pt=\"pt\"\n                            :unstyled=\"unstyled\"\n                            v-bind=\"ptm('submenu')\"\n                        />\n                    </div>\n                </transition>\n            </li>\n            <li\n                v-if=\"isItemVisible(processedItem) && getItemProp(processedItem, 'separator')\"\n                :style=\"getItemProp(processedItem, 'style')\"\n                :class=\"[cx('separator'), getItemProp(processedItem, 'class')]\"\n                role=\"separator\"\n                v-bind=\"ptm('separator')\"\n            ></li>\n        </template>\n    </ul>\n</template>\n\n<script>\nimport { isNotEmpty, resolve } from '@primeuix/utils/object';\nimport BaseComponent from '@primevue/core/basecomponent';\nimport ChevronDownIcon from '@primevue/icons/chevrondown';\nimport ChevronRightIcon from '@primevue/icons/chevronright';\nimport Ripple from 'primevue/ripple';\nimport { mergeProps } from 'vue';\n\nexport default {\n    name: 'PanelMenuSub',\n    hostName: 'PanelMenu',\n    extends: BaseComponent,\n    emits: ['item-toggle', 'item-mousemove'],\n    props: {\n        panelId: {\n            type: String,\n            default: null\n        },\n        focusedItemId: {\n            type: String,\n            default: null\n        },\n        items: {\n            type: Array,\n            default: null\n        },\n        level: {\n            type: Number,\n            default: 0\n        },\n        templates: {\n            type: Object,\n            default: null\n        },\n        activeItemPath: {\n            type: Object,\n            default: null\n        },\n        tabindex: {\n            type: Number,\n            default: -1\n        }\n    },\n    methods: {\n        getItemId(processedItem) {\n            return `${this.panelId}_${processedItem.key}`;\n        },\n        getItemKey(processedItem) {\n            return this.getItemId(processedItem);\n        },\n        getItemProp(processedItem, name, params) {\n            return processedItem && processedItem.item ? resolve(processedItem.item[name], params) : undefined;\n        },\n        getItemLabel(processedItem) {\n            return this.getItemProp(processedItem, 'label');\n        },\n        getPTOptions(key, processedItem, index) {\n            return this.ptm(key, {\n                context: {\n                    item: processedItem.item,\n                    index,\n                    active: this.isItemActive(processedItem),\n                    focused: this.isItemFocused(processedItem),\n                    disabled: this.isItemDisabled(processedItem)\n                }\n            });\n        },\n        isItemActive(processedItem) {\n            return this.activeItemPath.some((path) => path.key === processedItem.key);\n        },\n        isItemVisible(processedItem) {\n            return this.getItemProp(processedItem, 'visible') !== false;\n        },\n        isItemDisabled(processedItem) {\n            return this.getItemProp(processedItem, 'disabled');\n        },\n        isItemFocused(processedItem) {\n            return this.focusedItemId === this.getItemId(processedItem);\n        },\n        isItemGroup(processedItem) {\n            return isNotEmpty(processedItem.items);\n        },\n        onItemClick(event, processedItem) {\n            this.getItemProp(processedItem, 'command', { originalEvent: event, item: processedItem.item });\n            this.$emit('item-toggle', { processedItem, expanded: !this.isItemActive(processedItem) });\n        },\n        onItemToggle(event) {\n            this.$emit('item-toggle', event);\n        },\n        onItemMouseMove(event, processedItem) {\n            this.$emit('item-mousemove', { originalEvent: event, processedItem });\n        },\n        getAriaSetSize() {\n            return this.items.filter((processedItem) => this.isItemVisible(processedItem) && !this.getItemProp(processedItem, 'separator')).length;\n        },\n        getAriaPosInset(index) {\n            return index - this.items.slice(0, index).filter((processedItem) => this.isItemVisible(processedItem) && this.getItemProp(processedItem, 'separator')).length + 1;\n        },\n        getMenuItemProps(processedItem, index) {\n            return {\n                action: mergeProps(\n                    {\n                        class: this.cx('itemLink'),\n                        tabindex: -1,\n                        'aria-hidden': true\n                    },\n                    this.getPTOptions('itemLink', processedItem, index)\n                ),\n                icon: mergeProps(\n                    {\n                        class: [this.cx('itemIcon'), this.getItemProp(processedItem, 'icon')]\n                    },\n                    this.getPTOptions('itemIcon', processedItem, index)\n                ),\n                label: mergeProps(\n                    {\n                        class: this.cx('itemLabel')\n                    },\n                    this.getPTOptions('itemLabel', processedItem, index)\n                ),\n                submenuicon: mergeProps(\n                    {\n                        class: this.cx('submenuIcon')\n                    },\n                    this.getPTOptions('submenuicon', processedItem, index)\n                )\n            };\n        }\n    },\n    components: {\n        ChevronRightIcon: ChevronRightIcon,\n        ChevronDownIcon: ChevronDownIcon\n    },\n    directives: {\n        ripple: Ripple\n    }\n};\n</script>\n","<template>\n    <PanelMenuSub\n        :id=\"panelId + '_list'\"\n        :class=\"cx('rootList')\"\n        role=\"tree\"\n        :tabindex=\"-1\"\n        :aria-activedescendant=\"focused ? focusedItemId : undefined\"\n        :panelId=\"panelId\"\n        :focusedItemId=\"focused ? focusedItemId : undefined\"\n        :items=\"processedItems\"\n        :templates=\"templates\"\n        :activeItemPath=\"activeItemPath\"\n        @focus=\"onFocus\"\n        @blur=\"onBlur\"\n        @keydown=\"onKeyDown\"\n        @item-toggle=\"onItemToggle\"\n        @item-mousemove=\"onItemMouseMove\"\n        :pt=\"pt\"\n        :unstyled=\"unstyled\"\n        v-bind=\"ptm('rootList')\"\n    />\n</template>\n\n<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport { findSingle, focus } from '@primeuix/utils/dom';\nimport { resolve, isNotEmpty, isPrintableCharacter, findLast, isEmpty } from '@primeuix/utils/object';\nimport PanelMenuSub from './PanelMenuSub.vue';\n\nexport default {\n    name: 'PanelMenuList',\n    hostName: 'PanelMenu',\n    extends: BaseComponent,\n    emits: ['item-toggle', 'header-focus'],\n    props: {\n        panelId: {\n            type: String,\n            default: null\n        },\n        items: {\n            type: Array,\n            default: null\n        },\n        templates: {\n            type: Object,\n            default: null\n        },\n        expandedKeys: {\n            type: Object,\n            default: null\n        }\n    },\n    searchTimeout: null,\n    searchValue: null,\n    data() {\n        return {\n            focused: false,\n            focusedItem: null,\n            activeItemPath: []\n        };\n    },\n    watch: {\n        expandedKeys(newValue) {\n            this.autoUpdateActiveItemPath(newValue);\n        }\n    },\n    mounted() {\n        this.autoUpdateActiveItemPath(this.expandedKeys);\n    },\n    methods: {\n        getItemProp(processedItem, name) {\n            return processedItem && processedItem.item ? resolve(processedItem.item[name]) : undefined;\n        },\n        getItemLabel(processedItem) {\n            return this.getItemProp(processedItem, 'label');\n        },\n        isItemVisible(processedItem) {\n            return this.getItemProp(processedItem, 'visible') !== false;\n        },\n        isItemDisabled(processedItem) {\n            return this.getItemProp(processedItem, 'disabled');\n        },\n        isItemActive(processedItem) {\n            return this.activeItemPath.some((path) => path.key === processedItem.parentKey);\n        },\n        isItemGroup(processedItem) {\n            return isNotEmpty(processedItem.items);\n        },\n        onFocus(event) {\n            this.focused = true;\n            this.focusedItem = this.focusedItem || (this.isElementInPanel(event, event.relatedTarget) ? this.findFirstItem() : this.findLastItem());\n        },\n        onBlur() {\n            this.focused = false;\n            this.focusedItem = null;\n            this.searchValue = '';\n        },\n        onKeyDown(event) {\n            const metaKey = event.metaKey || event.ctrlKey;\n\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 'Space':\n                    this.onSpaceKey(event);\n                    break;\n\n                case 'Enter':\n                case 'NumpadEnter':\n                    this.onEnterKey(event);\n                    break;\n\n                case 'Escape':\n                case 'Tab':\n                case 'PageDown':\n                case 'PageUp':\n                case 'Backspace':\n                case 'ShiftLeft':\n                case 'ShiftRight':\n                    //NOOP\n                    break;\n\n                default:\n                    if (!metaKey && isPrintableCharacter(event.key)) {\n                        this.searchItems(event, event.key);\n                    }\n\n                    break;\n            }\n        },\n        onArrowDownKey(event) {\n            const processedItem = isNotEmpty(this.focusedItem) ? this.findNextItem(this.focusedItem) : this.findFirstItem();\n\n            this.changeFocusedItem({ originalEvent: event, processedItem, focusOnNext: true });\n            event.preventDefault();\n        },\n        onArrowUpKey(event) {\n            const processedItem = isNotEmpty(this.focusedItem) ? this.findPrevItem(this.focusedItem) : this.findLastItem();\n\n            this.changeFocusedItem({ originalEvent: event, processedItem, selfCheck: true });\n            event.preventDefault();\n        },\n        onArrowLeftKey(event) {\n            if (isNotEmpty(this.focusedItem)) {\n                const matched = this.activeItemPath.some((p) => p.key === this.focusedItem.key);\n\n                if (matched) {\n                    this.activeItemPath = this.activeItemPath.filter((p) => p.key !== this.focusedItem.key);\n                } else {\n                    this.focusedItem = isNotEmpty(this.focusedItem.parent) ? this.focusedItem.parent : this.focusedItem;\n                }\n\n                event.preventDefault();\n            }\n        },\n        onArrowRightKey(event) {\n            if (isNotEmpty(this.focusedItem)) {\n                const grouped = this.isItemGroup(this.focusedItem);\n\n                if (grouped) {\n                    const matched = this.activeItemPath.some((p) => p.key === this.focusedItem.key);\n\n                    if (matched) {\n                        this.onArrowDownKey(event);\n                    } else {\n                        this.activeItemPath = this.activeItemPath.filter((p) => p.parentKey !== this.focusedItem.parentKey);\n                        this.activeItemPath.push(this.focusedItem);\n                    }\n                }\n\n                event.preventDefault();\n            }\n        },\n        onHomeKey(event) {\n            this.changeFocusedItem({ originalEvent: event, processedItem: this.findFirstItem(), allowHeaderFocus: false });\n            event.preventDefault();\n        },\n        onEndKey(event) {\n            this.changeFocusedItem({ originalEvent: event, processedItem: this.findLastItem(), focusOnNext: true, allowHeaderFocus: false });\n            event.preventDefault();\n        },\n        onEnterKey(event) {\n            if (isNotEmpty(this.focusedItem)) {\n                const element = findSingle(this.$el, `li[id=\"${`${this.focusedItemId}`}\"]`);\n                const anchorElement = element && (findSingle(element, '[data-pc-section=\"itemlink\"]') || findSingle(element, 'a,button'));\n\n                anchorElement ? anchorElement.click() : element && element.click();\n            }\n\n            event.preventDefault();\n        },\n        onSpaceKey(event) {\n            this.onEnterKey(event);\n        },\n        onItemToggle(event) {\n            const { processedItem, expanded } = event;\n\n            if (this.expandedKeys) {\n                this.$emit('item-toggle', { item: processedItem.item, expanded });\n            } else {\n                this.activeItemPath = this.activeItemPath.filter((p) => p.parentKey !== processedItem.parentKey);\n                expanded && this.activeItemPath.push(processedItem);\n            }\n\n            this.focusedItem = processedItem;\n            focus(this.$el);\n        },\n        onItemMouseMove(event) {\n            if (this.focused) {\n                this.focusedItem = event.processedItem;\n            }\n        },\n        isElementInPanel(event, element) {\n            const panel = event.currentTarget.closest('[data-pc-section=\"panel\"]');\n\n            return panel && panel.contains(element);\n        },\n        isItemMatched(processedItem) {\n            return this.isValidItem(processedItem) && this.getItemLabel(processedItem)?.toLocaleLowerCase(this.searchLocale).startsWith(this.searchValue.toLocaleLowerCase(this.searchLocale));\n        },\n        isVisibleItem(processedItem) {\n            return !!processedItem && (processedItem.level === 0 || this.isItemActive(processedItem)) && this.isItemVisible(processedItem);\n        },\n        isValidItem(processedItem) {\n            return !!processedItem && !this.isItemDisabled(processedItem) && !this.getItemProp(processedItem, 'separator');\n        },\n        findFirstItem() {\n            return this.visibleItems.find((processedItem) => this.isValidItem(processedItem));\n        },\n        findLastItem() {\n            return findLast(this.visibleItems, (processedItem) => this.isValidItem(processedItem));\n        },\n        findNextItem(processedItem) {\n            const index = this.visibleItems.findIndex((item) => item.key === processedItem.key);\n            const matchedItem = index < this.visibleItems.length - 1 ? this.visibleItems.slice(index + 1).find((pItem) => this.isValidItem(pItem)) : undefined;\n\n            return matchedItem || processedItem;\n        },\n        findPrevItem(processedItem) {\n            const index = this.visibleItems.findIndex((item) => item.key === processedItem.key);\n            const matchedItem = index > 0 ? findLast(this.visibleItems.slice(0, index), (pItem) => this.isValidItem(pItem)) : undefined;\n\n            return matchedItem || processedItem;\n        },\n        searchItems(event, char) {\n            this.searchValue = (this.searchValue || '') + char;\n\n            let matchedItem = null;\n            let matched = false;\n\n            if (isNotEmpty(this.focusedItem)) {\n                const focusedItemIndex = this.visibleItems.findIndex((processedItem) => processedItem.key === this.focusedItem.key);\n\n                matchedItem = this.visibleItems.slice(focusedItemIndex).find((processedItem) => this.isItemMatched(processedItem));\n                matchedItem = isEmpty(matchedItem) ? this.visibleItems.slice(0, focusedItemIndex).find((processedItem) => this.isItemMatched(processedItem)) : matchedItem;\n            } else {\n                matchedItem = this.visibleItems.find((processedItem) => this.isItemMatched(processedItem));\n            }\n\n            if (isNotEmpty(matchedItem)) {\n                matched = true;\n            }\n\n            if (isEmpty(matchedItem) && isEmpty(this.focusedItem)) {\n                matchedItem = this.findFirstItem();\n            }\n\n            if (isNotEmpty(matchedItem)) {\n                this.changeFocusedItem({\n                    originalEvent: event,\n                    processedItem: matchedItem,\n                    allowHeaderFocus: false\n                });\n            }\n\n            if (this.searchTimeout) {\n                clearTimeout(this.searchTimeout);\n            }\n\n            this.searchTimeout = setTimeout(() => {\n                this.searchValue = '';\n                this.searchTimeout = null;\n            }, 500);\n\n            return matched;\n        },\n        changeFocusedItem(event) {\n            const { originalEvent, processedItem, focusOnNext, selfCheck, allowHeaderFocus = true } = event;\n\n            if (isNotEmpty(this.focusedItem) && this.focusedItem.key !== processedItem.key) {\n                this.focusedItem = processedItem;\n                this.scrollInView();\n            } else if (allowHeaderFocus) {\n                this.$emit('header-focus', { originalEvent, focusOnNext, selfCheck });\n            }\n        },\n        scrollInView() {\n            const element = findSingle(this.$el, `li[id=\"${`${this.focusedItemId}`}\"]`);\n\n            if (element) {\n                element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'start' });\n            }\n        },\n        autoUpdateActiveItemPath(expandedKeys) {\n            this.activeItemPath = Object.entries(expandedKeys || {}).reduce((acc, [key, val]) => {\n                if (val) {\n                    const processedItem = this.findProcessedItemByItemKey(key);\n\n                    processedItem && acc.push(processedItem);\n                }\n\n                return acc;\n            }, []);\n        },\n        findProcessedItemByItemKey(key, processedItems, level = 0) {\n            processedItems = processedItems || (level === 0 && this.processedItems);\n\n            if (!processedItems) return null;\n\n            for (let i = 0; i < processedItems.length; i++) {\n                const processedItem = processedItems[i];\n\n                if (this.getItemProp(processedItem, 'key') === key) return processedItem;\n\n                const matchedItem = this.findProcessedItemByItemKey(key, processedItem.items, level + 1);\n\n                if (matchedItem) return matchedItem;\n            }\n        },\n        createProcessedItems(items, level = 0, parent = {}, parentKey = '') {\n            const processedItems = [];\n\n            items &&\n                items.forEach((item, index) => {\n                    const key = (parentKey !== '' ? parentKey + '_' : '') + index;\n                    const newItem = {\n                        item,\n                        index,\n                        level,\n                        key,\n                        parent,\n                        parentKey\n                    };\n\n                    newItem['items'] = this.createProcessedItems(item.items, level + 1, newItem, key);\n                    processedItems.push(newItem);\n                });\n\n            return processedItems;\n        },\n        flatItems(processedItems, processedFlattenItems = []) {\n            processedItems &&\n                processedItems.forEach((processedItem) => {\n                    if (this.isVisibleItem(processedItem)) {\n                        processedFlattenItems.push(processedItem);\n                        this.flatItems(processedItem.items, processedFlattenItems);\n                    }\n                });\n\n            return processedFlattenItems;\n        }\n    },\n    computed: {\n        processedItems() {\n            return this.createProcessedItems(this.items || []);\n        },\n        visibleItems() {\n            return this.flatItems(this.processedItems);\n        },\n        focusedItemId() {\n            return isNotEmpty(this.focusedItem) ? `${this.panelId}_${this.focusedItem.key}` : null;\n        }\n    },\n    components: {\n        PanelMenuSub: PanelMenuSub\n    }\n};\n</script>\n","<template>\n    <PanelMenuSub\n        :id=\"panelId + '_list'\"\n        :class=\"cx('rootList')\"\n        role=\"tree\"\n        :tabindex=\"-1\"\n        :aria-activedescendant=\"focused ? focusedItemId : undefined\"\n        :panelId=\"panelId\"\n        :focusedItemId=\"focused ? focusedItemId : undefined\"\n        :items=\"processedItems\"\n        :templates=\"templates\"\n        :activeItemPath=\"activeItemPath\"\n        @focus=\"onFocus\"\n        @blur=\"onBlur\"\n        @keydown=\"onKeyDown\"\n        @item-toggle=\"onItemToggle\"\n        @item-mousemove=\"onItemMouseMove\"\n        :pt=\"pt\"\n        :unstyled=\"unstyled\"\n        v-bind=\"ptm('rootList')\"\n    />\n</template>\n\n<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport { findSingle, focus } from '@primeuix/utils/dom';\nimport { resolve, isNotEmpty, isPrintableCharacter, findLast, isEmpty } from '@primeuix/utils/object';\nimport PanelMenuSub from './PanelMenuSub.vue';\n\nexport default {\n    name: 'PanelMenuList',\n    hostName: 'PanelMenu',\n    extends: BaseComponent,\n    emits: ['item-toggle', 'header-focus'],\n    props: {\n        panelId: {\n            type: String,\n            default: null\n        },\n        items: {\n            type: Array,\n            default: null\n        },\n        templates: {\n            type: Object,\n            default: null\n        },\n        expandedKeys: {\n            type: Object,\n            default: null\n        }\n    },\n    searchTimeout: null,\n    searchValue: null,\n    data() {\n        return {\n            focused: false,\n            focusedItem: null,\n            activeItemPath: []\n        };\n    },\n    watch: {\n        expandedKeys(newValue) {\n            this.autoUpdateActiveItemPath(newValue);\n        }\n    },\n    mounted() {\n        this.autoUpdateActiveItemPath(this.expandedKeys);\n    },\n    methods: {\n        getItemProp(processedItem, name) {\n            return processedItem && processedItem.item ? resolve(processedItem.item[name]) : undefined;\n        },\n        getItemLabel(processedItem) {\n            return this.getItemProp(processedItem, 'label');\n        },\n        isItemVisible(processedItem) {\n            return this.getItemProp(processedItem, 'visible') !== false;\n        },\n        isItemDisabled(processedItem) {\n            return this.getItemProp(processedItem, 'disabled');\n        },\n        isItemActive(processedItem) {\n            return this.activeItemPath.some((path) => path.key === processedItem.parentKey);\n        },\n        isItemGroup(processedItem) {\n            return isNotEmpty(processedItem.items);\n        },\n        onFocus(event) {\n            this.focused = true;\n            this.focusedItem = this.focusedItem || (this.isElementInPanel(event, event.relatedTarget) ? this.findFirstItem() : this.findLastItem());\n        },\n        onBlur() {\n            this.focused = false;\n            this.focusedItem = null;\n            this.searchValue = '';\n        },\n        onKeyDown(event) {\n            const metaKey = event.metaKey || event.ctrlKey;\n\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 'Space':\n                    this.onSpaceKey(event);\n                    break;\n\n                case 'Enter':\n                case 'NumpadEnter':\n                    this.onEnterKey(event);\n                    break;\n\n                case 'Escape':\n                case 'Tab':\n                case 'PageDown':\n                case 'PageUp':\n                case 'Backspace':\n                case 'ShiftLeft':\n                case 'ShiftRight':\n                    //NOOP\n                    break;\n\n                default:\n                    if (!metaKey && isPrintableCharacter(event.key)) {\n                        this.searchItems(event, event.key);\n                    }\n\n                    break;\n            }\n        },\n        onArrowDownKey(event) {\n            const processedItem = isNotEmpty(this.focusedItem) ? this.findNextItem(this.focusedItem) : this.findFirstItem();\n\n            this.changeFocusedItem({ originalEvent: event, processedItem, focusOnNext: true });\n            event.preventDefault();\n        },\n        onArrowUpKey(event) {\n            const processedItem = isNotEmpty(this.focusedItem) ? this.findPrevItem(this.focusedItem) : this.findLastItem();\n\n            this.changeFocusedItem({ originalEvent: event, processedItem, selfCheck: true });\n            event.preventDefault();\n        },\n        onArrowLeftKey(event) {\n            if (isNotEmpty(this.focusedItem)) {\n                const matched = this.activeItemPath.some((p) => p.key === this.focusedItem.key);\n\n                if (matched) {\n                    this.activeItemPath = this.activeItemPath.filter((p) => p.key !== this.focusedItem.key);\n                } else {\n                    this.focusedItem = isNotEmpty(this.focusedItem.parent) ? this.focusedItem.parent : this.focusedItem;\n                }\n\n                event.preventDefault();\n            }\n        },\n        onArrowRightKey(event) {\n            if (isNotEmpty(this.focusedItem)) {\n                const grouped = this.isItemGroup(this.focusedItem);\n\n                if (grouped) {\n                    const matched = this.activeItemPath.some((p) => p.key === this.focusedItem.key);\n\n                    if (matched) {\n                        this.onArrowDownKey(event);\n                    } else {\n                        this.activeItemPath = this.activeItemPath.filter((p) => p.parentKey !== this.focusedItem.parentKey);\n                        this.activeItemPath.push(this.focusedItem);\n                    }\n                }\n\n                event.preventDefault();\n            }\n        },\n        onHomeKey(event) {\n            this.changeFocusedItem({ originalEvent: event, processedItem: this.findFirstItem(), allowHeaderFocus: false });\n            event.preventDefault();\n        },\n        onEndKey(event) {\n            this.changeFocusedItem({ originalEvent: event, processedItem: this.findLastItem(), focusOnNext: true, allowHeaderFocus: false });\n            event.preventDefault();\n        },\n        onEnterKey(event) {\n            if (isNotEmpty(this.focusedItem)) {\n                const element = findSingle(this.$el, `li[id=\"${`${this.focusedItemId}`}\"]`);\n                const anchorElement = element && (findSingle(element, '[data-pc-section=\"itemlink\"]') || findSingle(element, 'a,button'));\n\n                anchorElement ? anchorElement.click() : element && element.click();\n            }\n\n            event.preventDefault();\n        },\n        onSpaceKey(event) {\n            this.onEnterKey(event);\n        },\n        onItemToggle(event) {\n            const { processedItem, expanded } = event;\n\n            if (this.expandedKeys) {\n                this.$emit('item-toggle', { item: processedItem.item, expanded });\n            } else {\n                this.activeItemPath = this.activeItemPath.filter((p) => p.parentKey !== processedItem.parentKey);\n                expanded && this.activeItemPath.push(processedItem);\n            }\n\n            this.focusedItem = processedItem;\n            focus(this.$el);\n        },\n        onItemMouseMove(event) {\n            if (this.focused) {\n                this.focusedItem = event.processedItem;\n            }\n        },\n        isElementInPanel(event, element) {\n            const panel = event.currentTarget.closest('[data-pc-section=\"panel\"]');\n\n            return panel && panel.contains(element);\n        },\n        isItemMatched(processedItem) {\n            return this.isValidItem(processedItem) && this.getItemLabel(processedItem)?.toLocaleLowerCase(this.searchLocale).startsWith(this.searchValue.toLocaleLowerCase(this.searchLocale));\n        },\n        isVisibleItem(processedItem) {\n            return !!processedItem && (processedItem.level === 0 || this.isItemActive(processedItem)) && this.isItemVisible(processedItem);\n        },\n        isValidItem(processedItem) {\n            return !!processedItem && !this.isItemDisabled(processedItem) && !this.getItemProp(processedItem, 'separator');\n        },\n        findFirstItem() {\n            return this.visibleItems.find((processedItem) => this.isValidItem(processedItem));\n        },\n        findLastItem() {\n            return findLast(this.visibleItems, (processedItem) => this.isValidItem(processedItem));\n        },\n        findNextItem(processedItem) {\n            const index = this.visibleItems.findIndex((item) => item.key === processedItem.key);\n            const matchedItem = index < this.visibleItems.length - 1 ? this.visibleItems.slice(index + 1).find((pItem) => this.isValidItem(pItem)) : undefined;\n\n            return matchedItem || processedItem;\n        },\n        findPrevItem(processedItem) {\n            const index = this.visibleItems.findIndex((item) => item.key === processedItem.key);\n            const matchedItem = index > 0 ? findLast(this.visibleItems.slice(0, index), (pItem) => this.isValidItem(pItem)) : undefined;\n\n            return matchedItem || processedItem;\n        },\n        searchItems(event, char) {\n            this.searchValue = (this.searchValue || '') + char;\n\n            let matchedItem = null;\n            let matched = false;\n\n            if (isNotEmpty(this.focusedItem)) {\n                const focusedItemIndex = this.visibleItems.findIndex((processedItem) => processedItem.key === this.focusedItem.key);\n\n                matchedItem = this.visibleItems.slice(focusedItemIndex).find((processedItem) => this.isItemMatched(processedItem));\n                matchedItem = isEmpty(matchedItem) ? this.visibleItems.slice(0, focusedItemIndex).find((processedItem) => this.isItemMatched(processedItem)) : matchedItem;\n            } else {\n                matchedItem = this.visibleItems.find((processedItem) => this.isItemMatched(processedItem));\n            }\n\n            if (isNotEmpty(matchedItem)) {\n                matched = true;\n            }\n\n            if (isEmpty(matchedItem) && isEmpty(this.focusedItem)) {\n                matchedItem = this.findFirstItem();\n            }\n\n            if (isNotEmpty(matchedItem)) {\n                this.changeFocusedItem({\n                    originalEvent: event,\n                    processedItem: matchedItem,\n                    allowHeaderFocus: false\n                });\n            }\n\n            if (this.searchTimeout) {\n                clearTimeout(this.searchTimeout);\n            }\n\n            this.searchTimeout = setTimeout(() => {\n                this.searchValue = '';\n                this.searchTimeout = null;\n            }, 500);\n\n            return matched;\n        },\n        changeFocusedItem(event) {\n            const { originalEvent, processedItem, focusOnNext, selfCheck, allowHeaderFocus = true } = event;\n\n            if (isNotEmpty(this.focusedItem) && this.focusedItem.key !== processedItem.key) {\n                this.focusedItem = processedItem;\n                this.scrollInView();\n            } else if (allowHeaderFocus) {\n                this.$emit('header-focus', { originalEvent, focusOnNext, selfCheck });\n            }\n        },\n        scrollInView() {\n            const element = findSingle(this.$el, `li[id=\"${`${this.focusedItemId}`}\"]`);\n\n            if (element) {\n                element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'start' });\n            }\n        },\n        autoUpdateActiveItemPath(expandedKeys) {\n            this.activeItemPath = Object.entries(expandedKeys || {}).reduce((acc, [key, val]) => {\n                if (val) {\n                    const processedItem = this.findProcessedItemByItemKey(key);\n\n                    processedItem && acc.push(processedItem);\n                }\n\n                return acc;\n            }, []);\n        },\n        findProcessedItemByItemKey(key, processedItems, level = 0) {\n            processedItems = processedItems || (level === 0 && this.processedItems);\n\n            if (!processedItems) return null;\n\n            for (let i = 0; i < processedItems.length; i++) {\n                const processedItem = processedItems[i];\n\n                if (this.getItemProp(processedItem, 'key') === key) return processedItem;\n\n                const matchedItem = this.findProcessedItemByItemKey(key, processedItem.items, level + 1);\n\n                if (matchedItem) return matchedItem;\n            }\n        },\n        createProcessedItems(items, level = 0, parent = {}, parentKey = '') {\n            const processedItems = [];\n\n            items &&\n                items.forEach((item, index) => {\n                    const key = (parentKey !== '' ? parentKey + '_' : '') + index;\n                    const newItem = {\n                        item,\n                        index,\n                        level,\n                        key,\n                        parent,\n                        parentKey\n                    };\n\n                    newItem['items'] = this.createProcessedItems(item.items, level + 1, newItem, key);\n                    processedItems.push(newItem);\n                });\n\n            return processedItems;\n        },\n        flatItems(processedItems, processedFlattenItems = []) {\n            processedItems &&\n                processedItems.forEach((processedItem) => {\n                    if (this.isVisibleItem(processedItem)) {\n                        processedFlattenItems.push(processedItem);\n                        this.flatItems(processedItem.items, processedFlattenItems);\n                    }\n                });\n\n            return processedFlattenItems;\n        }\n    },\n    computed: {\n        processedItems() {\n            return this.createProcessedItems(this.items || []);\n        },\n        visibleItems() {\n            return this.flatItems(this.processedItems);\n        },\n        focusedItemId() {\n            return isNotEmpty(this.focusedItem) ? `${this.panelId}_${this.focusedItem.key}` : null;\n        }\n    },\n    components: {\n        PanelMenuSub: PanelMenuSub\n    }\n};\n</script>\n","<template>\n    <div :id=\"id\" :class=\"cx('root')\" v-bind=\"ptmi('root')\">\n        <template v-for=\"(item, index) of model\" :key=\"getPanelKey(index)\">\n            <div v-if=\"isItemVisible(item)\" :style=\"getItemProp(item, 'style')\" :class=\"[cx('panel'), getItemProp(item, 'class')]\" v-bind=\"ptm('panel')\">\n                <div\n                    :id=\"getHeaderId(index)\"\n                    :class=\"[cx('header', { item }), getItemProp(item, 'headerClass')]\"\n                    :tabindex=\"isItemDisabled(item) ? -1 : tabindex\"\n                    role=\"button\"\n                    :aria-label=\"getItemLabel(item)\"\n                    :aria-expanded=\"isItemActive(item)\"\n                    :aria-controls=\"getContentId(index)\"\n                    :aria-disabled=\"isItemDisabled(item)\"\n                    @click=\"onHeaderClick($event, item)\"\n                    @keydown=\"onHeaderKeyDown($event, item)\"\n                    v-bind=\"getPTOptions('header', item, index)\"\n                    :data-p-active=\"isItemActive(item)\"\n                    :data-p-disabled=\"isItemDisabled(item)\"\n                >\n                    <div :class=\"cx('headerContent')\" v-bind=\"getPTOptions('headerContent', item, index)\">\n                        <template v-if=\"!$slots.item\">\n                            <a :href=\"getItemProp(item, 'url')\" :class=\"cx('headerLink')\" :tabindex=\"-1\" v-bind=\"getPTOptions('headerLink', item, index)\">\n                                <slot v-if=\"getItemProp(item, 'items')\" name=\"submenuicon\" :active=\"isItemActive(item)\">\n                                    <component :is=\"isItemActive(item) ? 'ChevronDownIcon' : 'ChevronRightIcon'\" :class=\"cx('submenuIcon')\" v-bind=\"getPTOptions('submenuIcon', item, index)\" />\n                                </slot>\n                                <component v-if=\"$slots.headericon\" :is=\"$slots.headericon\" :item=\"item\" :class=\"[cx('headerIcon'), getItemProp(item, 'icon')]\" />\n                                <span v-else-if=\"getItemProp(item, 'icon')\" :class=\"[cx('headerIcon'), getItemProp(item, 'icon')]\" v-bind=\"getPTOptions('headerIcon', item, index)\" />\n                                <span :class=\"cx('headerLabel')\" v-bind=\"getPTOptions('headerLabel', item, index)\">{{ getItemLabel(item) }}</span>\n                            </a>\n                        </template>\n                        <component v-else :is=\"$slots.item\" :item=\"item\" :root=\"true\" :active=\"isItemActive(item)\" :hasSubmenu=\"getItemProp(item, 'items')\" :label=\"getItemLabel(item)\" :props=\"getMenuItemProps(item, index)\"></component>\n                    </div>\n                </div>\n                <transition name=\"p-toggleable-content\" v-bind=\"ptm('transition')\">\n                    <div v-show=\"isItemActive(item)\" :id=\"getContentId(index)\" :class=\"cx('contentContainer')\" role=\"region\" :aria-labelledby=\"getHeaderId(index)\" v-bind=\"ptm('contentContainer')\">\n                        <div v-if=\"getItemProp(item, 'items')\" :class=\"cx('content')\" v-bind=\"ptm('content')\">\n                            <PanelMenuList\n                                :panelId=\"getPanelId(index)\"\n                                :items=\"getItemProp(item, 'items')\"\n                                :templates=\"$slots\"\n                                :expandedKeys=\"expandedKeys\"\n                                @item-toggle=\"changeExpandedKeys\"\n                                @header-focus=\"updateFocusedHeader\"\n                                :pt=\"pt\"\n                                :unstyled=\"unstyled\"\n                            />\n                        </div>\n                    </div>\n                </transition>\n            </div>\n        </template>\n    </div>\n</template>\n\n<script>\nimport { UniqueComponentId } from '@primevue/core/utils';\nimport { focus, getAttribute, findSingle } from '@primeuix/utils/dom';\nimport { equals, resolve } from '@primeuix/utils/object';\nimport ChevronDownIcon from '@primevue/icons/chevrondown';\nimport ChevronRightIcon from '@primevue/icons/chevronright';\nimport { mergeProps } from 'vue';\nimport BasePanelMenu from './BasePanelMenu.vue';\nimport PanelMenuList from './PanelMenuList.vue';\n\nexport default {\n    name: 'PanelMenu',\n    extends: BasePanelMenu,\n    inheritAttrs: false,\n    emits: ['update:expandedKeys', 'panel-open', 'panel-close'],\n    data() {\n        return {\n            id: this.$attrs.id,\n            activeItem: null,\n            activeItems: []\n        };\n    },\n    watch: {\n        '$attrs.id': function (newValue) {\n            this.id = newValue || UniqueComponentId();\n        }\n    },\n    mounted() {\n        this.id = this.id || UniqueComponentId();\n    },\n    methods: {\n        getItemProp(item, name) {\n            return item ? resolve(item[name]) : undefined;\n        },\n        getItemLabel(item) {\n            return this.getItemProp(item, 'label');\n        },\n        getPTOptions(key, item, index) {\n            return this.ptm(key, {\n                context: {\n                    index,\n                    active: this.isItemActive(item),\n                    focused: this.isItemFocused(item),\n                    disabled: this.isItemDisabled(item)\n                }\n            });\n        },\n        isItemActive(item) {\n            return this.expandedKeys ? this.expandedKeys[this.getItemProp(item, 'key')] : this.multiple ? this.activeItems.some((subItem) => equals(item, subItem)) : equals(item, this.activeItem);\n        },\n        isItemVisible(item) {\n            return this.getItemProp(item, 'visible') !== false;\n        },\n        isItemDisabled(item) {\n            return this.getItemProp(item, 'disabled');\n        },\n        isItemFocused(item) {\n            return equals(item, this.activeItem);\n        },\n        getPanelId(index) {\n            return `${this.id}_${index}`;\n        },\n        getPanelKey(index) {\n            return this.getPanelId(index);\n        },\n        getHeaderId(index) {\n            return `${this.getPanelId(index)}_header`;\n        },\n        getContentId(index) {\n            return `${this.getPanelId(index)}_content`;\n        },\n        onHeaderClick(event, item) {\n            if (this.isItemDisabled(item)) {\n                event.preventDefault();\n\n                return;\n            }\n\n            if (item.command) {\n                item.command({ originalEvent: event, item });\n            }\n\n            this.changeActiveItem(event, item);\n            focus(event.currentTarget);\n        },\n        onHeaderKeyDown(event, item) {\n            switch (event.code) {\n                case 'ArrowDown':\n                    this.onHeaderArrowDownKey(event);\n                    break;\n\n                case 'ArrowUp':\n                    this.onHeaderArrowUpKey(event);\n                    break;\n\n                case 'Home':\n                    this.onHeaderHomeKey(event);\n                    break;\n\n                case 'End':\n                    this.onHeaderEndKey(event);\n                    break;\n\n                case 'Enter':\n                case 'NumpadEnter':\n                case 'Space':\n                    this.onHeaderEnterKey(event, item);\n                    break;\n\n                default:\n                    break;\n            }\n        },\n        onHeaderArrowDownKey(event) {\n            const rootList = getAttribute(event.currentTarget, 'data-p-active') === true ? findSingle(event.currentTarget.nextElementSibling, '[data-pc-section=\"rootlist\"]') : null;\n\n            rootList ? focus(rootList) : this.updateFocusedHeader({ originalEvent: event, focusOnNext: true });\n            event.preventDefault();\n        },\n        onHeaderArrowUpKey(event) {\n            const prevHeader = this.findPrevHeader(event.currentTarget.parentElement) || this.findLastHeader();\n            const rootList = getAttribute(prevHeader, 'data-p-active') === true ? findSingle(prevHeader.nextElementSibling, '[data-pc-section=\"rootlist\"]') : null;\n\n            rootList ? focus(rootList) : this.updateFocusedHeader({ originalEvent: event, focusOnNext: false });\n            event.preventDefault();\n        },\n        onHeaderHomeKey(event) {\n            this.changeFocusedHeader(event, this.findFirstHeader());\n            event.preventDefault();\n        },\n        onHeaderEndKey(event) {\n            this.changeFocusedHeader(event, this.findLastHeader());\n            event.preventDefault();\n        },\n        onHeaderEnterKey(event, item) {\n            const headerAction = findSingle(event.currentTarget, '[data-pc-section=\"headerlink\"]');\n\n            headerAction ? headerAction.click() : this.onHeaderClick(event, item);\n            event.preventDefault();\n        },\n        findNextHeader(panelElement, selfCheck = false) {\n            const nextPanelElement = selfCheck ? panelElement : panelElement.nextElementSibling;\n            const headerElement = findSingle(nextPanelElement, '[data-pc-section=\"header\"]');\n\n            return headerElement ? (getAttribute(headerElement, 'data-p-disabled') ? this.findNextHeader(headerElement.parentElement) : headerElement) : null;\n        },\n        findPrevHeader(panelElement, selfCheck = false) {\n            const prevPanelElement = selfCheck ? panelElement : panelElement.previousElementSibling;\n            const headerElement = findSingle(prevPanelElement, '[data-pc-section=\"header\"]');\n\n            return headerElement ? (getAttribute(headerElement, 'data-p-disabled') ? this.findPrevHeader(headerElement.parentElement) : headerElement) : null;\n        },\n        findFirstHeader() {\n            return this.findNextHeader(this.$el.firstElementChild, true);\n        },\n        findLastHeader() {\n            return this.findPrevHeader(this.$el.lastElementChild, true);\n        },\n        updateFocusedHeader(event) {\n            const { originalEvent, focusOnNext, selfCheck } = event;\n            const panelElement = originalEvent.currentTarget.closest('[data-pc-section=\"panel\"]');\n            const header = selfCheck ? findSingle(panelElement, '[data-pc-section=\"header\"]') : focusOnNext ? this.findNextHeader(panelElement) : this.findPrevHeader(panelElement);\n\n            header ? this.changeFocusedHeader(originalEvent, header) : focusOnNext ? this.onHeaderHomeKey(originalEvent) : this.onHeaderEndKey(originalEvent);\n        },\n        changeActiveItem(event, item, selfActive = false) {\n            if (!this.isItemDisabled(item)) {\n                const active = this.isItemActive(item);\n                const eventName = !active ? 'panel-open' : 'panel-close';\n\n                this.activeItem = selfActive ? item : this.activeItem && equals(item, this.activeItem) ? null : item;\n\n                if (this.multiple) {\n                    // activeItem and activeItems should be separated because it should be only one focused root item\n                    if (this.activeItems.some((subItem) => equals(item, subItem))) {\n                        this.activeItems = this.activeItems.filter((subItem) => !equals(item, subItem));\n                    } else {\n                        this.activeItems.push(item);\n                    }\n                }\n\n                this.changeExpandedKeys({ item, expanded: !active });\n                this.$emit(eventName, { originalEvent: event, item });\n            }\n        },\n        changeExpandedKeys({ item, expanded = false }) {\n            if (this.expandedKeys) {\n                let _keys = { ...this.expandedKeys };\n\n                if (expanded) _keys[item.key] = true;\n                else delete _keys[item.key];\n\n                this.$emit('update:expandedKeys', _keys);\n            }\n        },\n        changeFocusedHeader(event, element) {\n            element && focus(element);\n        },\n        getMenuItemProps(item, index) {\n            return {\n                icon: mergeProps(\n                    {\n                        class: [this.cx('headerIcon'), this.getItemProp(item, 'icon')]\n                    },\n                    this.getPTOptions('headerIcon', item, index)\n                ),\n                label: mergeProps(\n                    {\n                        class: this.cx('headerLabel')\n                    },\n                    this.getPTOptions('headerLabel', item, index)\n                )\n            };\n        }\n    },\n    components: {\n        PanelMenuList: PanelMenuList,\n        ChevronRightIcon: ChevronRightIcon,\n        ChevronDownIcon: ChevronDownIcon\n    }\n};\n</script>\n","<template>\n    <div :id=\"id\" :class=\"cx('root')\" v-bind=\"ptmi('root')\">\n        <template v-for=\"(item, index) of model\" :key=\"getPanelKey(index)\">\n            <div v-if=\"isItemVisible(item)\" :style=\"getItemProp(item, 'style')\" :class=\"[cx('panel'), getItemProp(item, 'class')]\" v-bind=\"ptm('panel')\">\n                <div\n                    :id=\"getHeaderId(index)\"\n                    :class=\"[cx('header', { item }), getItemProp(item, 'headerClass')]\"\n                    :tabindex=\"isItemDisabled(item) ? -1 : tabindex\"\n                    role=\"button\"\n                    :aria-label=\"getItemLabel(item)\"\n                    :aria-expanded=\"isItemActive(item)\"\n                    :aria-controls=\"getContentId(index)\"\n                    :aria-disabled=\"isItemDisabled(item)\"\n                    @click=\"onHeaderClick($event, item)\"\n                    @keydown=\"onHeaderKeyDown($event, item)\"\n                    v-bind=\"getPTOptions('header', item, index)\"\n                    :data-p-active=\"isItemActive(item)\"\n                    :data-p-disabled=\"isItemDisabled(item)\"\n                >\n                    <div :class=\"cx('headerContent')\" v-bind=\"getPTOptions('headerContent', item, index)\">\n                        <template v-if=\"!$slots.item\">\n                            <a :href=\"getItemProp(item, 'url')\" :class=\"cx('headerLink')\" :tabindex=\"-1\" v-bind=\"getPTOptions('headerLink', item, index)\">\n                                <slot v-if=\"getItemProp(item, 'items')\" name=\"submenuicon\" :active=\"isItemActive(item)\">\n                                    <component :is=\"isItemActive(item) ? 'ChevronDownIcon' : 'ChevronRightIcon'\" :class=\"cx('submenuIcon')\" v-bind=\"getPTOptions('submenuIcon', item, index)\" />\n                                </slot>\n                                <component v-if=\"$slots.headericon\" :is=\"$slots.headericon\" :item=\"item\" :class=\"[cx('headerIcon'), getItemProp(item, 'icon')]\" />\n                                <span v-else-if=\"getItemProp(item, 'icon')\" :class=\"[cx('headerIcon'), getItemProp(item, 'icon')]\" v-bind=\"getPTOptions('headerIcon', item, index)\" />\n                                <span :class=\"cx('headerLabel')\" v-bind=\"getPTOptions('headerLabel', item, index)\">{{ getItemLabel(item) }}</span>\n                            </a>\n                        </template>\n                        <component v-else :is=\"$slots.item\" :item=\"item\" :root=\"true\" :active=\"isItemActive(item)\" :hasSubmenu=\"getItemProp(item, 'items')\" :label=\"getItemLabel(item)\" :props=\"getMenuItemProps(item, index)\"></component>\n                    </div>\n                </div>\n                <transition name=\"p-toggleable-content\" v-bind=\"ptm('transition')\">\n                    <div v-show=\"isItemActive(item)\" :id=\"getContentId(index)\" :class=\"cx('contentContainer')\" role=\"region\" :aria-labelledby=\"getHeaderId(index)\" v-bind=\"ptm('contentContainer')\">\n                        <div v-if=\"getItemProp(item, 'items')\" :class=\"cx('content')\" v-bind=\"ptm('content')\">\n                            <PanelMenuList\n                                :panelId=\"getPanelId(index)\"\n                                :items=\"getItemProp(item, 'items')\"\n                                :templates=\"$slots\"\n                                :expandedKeys=\"expandedKeys\"\n                                @item-toggle=\"changeExpandedKeys\"\n                                @header-focus=\"updateFocusedHeader\"\n                                :pt=\"pt\"\n                                :unstyled=\"unstyled\"\n                            />\n                        </div>\n                    </div>\n                </transition>\n            </div>\n        </template>\n    </div>\n</template>\n\n<script>\nimport { UniqueComponentId } from '@primevue/core/utils';\nimport { focus, getAttribute, findSingle } from '@primeuix/utils/dom';\nimport { equals, resolve } from '@primeuix/utils/object';\nimport ChevronDownIcon from '@primevue/icons/chevrondown';\nimport ChevronRightIcon from '@primevue/icons/chevronright';\nimport { mergeProps } from 'vue';\nimport BasePanelMenu from './BasePanelMenu.vue';\nimport PanelMenuList from './PanelMenuList.vue';\n\nexport default {\n    name: 'PanelMenu',\n    extends: BasePanelMenu,\n    inheritAttrs: false,\n    emits: ['update:expandedKeys', 'panel-open', 'panel-close'],\n    data() {\n        return {\n            id: this.$attrs.id,\n            activeItem: null,\n            activeItems: []\n        };\n    },\n    watch: {\n        '$attrs.id': function (newValue) {\n            this.id = newValue || UniqueComponentId();\n        }\n    },\n    mounted() {\n        this.id = this.id || UniqueComponentId();\n    },\n    methods: {\n        getItemProp(item, name) {\n            return item ? resolve(item[name]) : undefined;\n        },\n        getItemLabel(item) {\n            return this.getItemProp(item, 'label');\n        },\n        getPTOptions(key, item, index) {\n            return this.ptm(key, {\n                context: {\n                    index,\n                    active: this.isItemActive(item),\n                    focused: this.isItemFocused(item),\n                    disabled: this.isItemDisabled(item)\n                }\n            });\n        },\n        isItemActive(item) {\n            return this.expandedKeys ? this.expandedKeys[this.getItemProp(item, 'key')] : this.multiple ? this.activeItems.some((subItem) => equals(item, subItem)) : equals(item, this.activeItem);\n        },\n        isItemVisible(item) {\n            return this.getItemProp(item, 'visible') !== false;\n        },\n        isItemDisabled(item) {\n            return this.getItemProp(item, 'disabled');\n        },\n        isItemFocused(item) {\n            return equals(item, this.activeItem);\n        },\n        getPanelId(index) {\n            return `${this.id}_${index}`;\n        },\n        getPanelKey(index) {\n            return this.getPanelId(index);\n        },\n        getHeaderId(index) {\n            return `${this.getPanelId(index)}_header`;\n        },\n        getContentId(index) {\n            return `${this.getPanelId(index)}_content`;\n        },\n        onHeaderClick(event, item) {\n            if (this.isItemDisabled(item)) {\n                event.preventDefault();\n\n                return;\n            }\n\n            if (item.command) {\n                item.command({ originalEvent: event, item });\n            }\n\n            this.changeActiveItem(event, item);\n            focus(event.currentTarget);\n        },\n        onHeaderKeyDown(event, item) {\n            switch (event.code) {\n                case 'ArrowDown':\n                    this.onHeaderArrowDownKey(event);\n                    break;\n\n                case 'ArrowUp':\n                    this.onHeaderArrowUpKey(event);\n                    break;\n\n                case 'Home':\n                    this.onHeaderHomeKey(event);\n                    break;\n\n                case 'End':\n                    this.onHeaderEndKey(event);\n                    break;\n\n                case 'Enter':\n                case 'NumpadEnter':\n                case 'Space':\n                    this.onHeaderEnterKey(event, item);\n                    break;\n\n                default:\n                    break;\n            }\n        },\n        onHeaderArrowDownKey(event) {\n            const rootList = getAttribute(event.currentTarget, 'data-p-active') === true ? findSingle(event.currentTarget.nextElementSibling, '[data-pc-section=\"rootlist\"]') : null;\n\n            rootList ? focus(rootList) : this.updateFocusedHeader({ originalEvent: event, focusOnNext: true });\n            event.preventDefault();\n        },\n        onHeaderArrowUpKey(event) {\n            const prevHeader = this.findPrevHeader(event.currentTarget.parentElement) || this.findLastHeader();\n            const rootList = getAttribute(prevHeader, 'data-p-active') === true ? findSingle(prevHeader.nextElementSibling, '[data-pc-section=\"rootlist\"]') : null;\n\n            rootList ? focus(rootList) : this.updateFocusedHeader({ originalEvent: event, focusOnNext: false });\n            event.preventDefault();\n        },\n        onHeaderHomeKey(event) {\n            this.changeFocusedHeader(event, this.findFirstHeader());\n            event.preventDefault();\n        },\n        onHeaderEndKey(event) {\n            this.changeFocusedHeader(event, this.findLastHeader());\n            event.preventDefault();\n        },\n        onHeaderEnterKey(event, item) {\n            const headerAction = findSingle(event.currentTarget, '[data-pc-section=\"headerlink\"]');\n\n            headerAction ? headerAction.click() : this.onHeaderClick(event, item);\n            event.preventDefault();\n        },\n        findNextHeader(panelElement, selfCheck = false) {\n            const nextPanelElement = selfCheck ? panelElement : panelElement.nextElementSibling;\n            const headerElement = findSingle(nextPanelElement, '[data-pc-section=\"header\"]');\n\n            return headerElement ? (getAttribute(headerElement, 'data-p-disabled') ? this.findNextHeader(headerElement.parentElement) : headerElement) : null;\n        },\n        findPrevHeader(panelElement, selfCheck = false) {\n            const prevPanelElement = selfCheck ? panelElement : panelElement.previousElementSibling;\n            const headerElement = findSingle(prevPanelElement, '[data-pc-section=\"header\"]');\n\n            return headerElement ? (getAttribute(headerElement, 'data-p-disabled') ? this.findPrevHeader(headerElement.parentElement) : headerElement) : null;\n        },\n        findFirstHeader() {\n            return this.findNextHeader(this.$el.firstElementChild, true);\n        },\n        findLastHeader() {\n            return this.findPrevHeader(this.$el.lastElementChild, true);\n        },\n        updateFocusedHeader(event) {\n            const { originalEvent, focusOnNext, selfCheck } = event;\n            const panelElement = originalEvent.currentTarget.closest('[data-pc-section=\"panel\"]');\n            const header = selfCheck ? findSingle(panelElement, '[data-pc-section=\"header\"]') : focusOnNext ? this.findNextHeader(panelElement) : this.findPrevHeader(panelElement);\n\n            header ? this.changeFocusedHeader(originalEvent, header) : focusOnNext ? this.onHeaderHomeKey(originalEvent) : this.onHeaderEndKey(originalEvent);\n        },\n        changeActiveItem(event, item, selfActive = false) {\n            if (!this.isItemDisabled(item)) {\n                const active = this.isItemActive(item);\n                const eventName = !active ? 'panel-open' : 'panel-close';\n\n                this.activeItem = selfActive ? item : this.activeItem && equals(item, this.activeItem) ? null : item;\n\n                if (this.multiple) {\n                    // activeItem and activeItems should be separated because it should be only one focused root item\n                    if (this.activeItems.some((subItem) => equals(item, subItem))) {\n                        this.activeItems = this.activeItems.filter((subItem) => !equals(item, subItem));\n                    } else {\n                        this.activeItems.push(item);\n                    }\n                }\n\n                this.changeExpandedKeys({ item, expanded: !active });\n                this.$emit(eventName, { originalEvent: event, item });\n            }\n        },\n        changeExpandedKeys({ item, expanded = false }) {\n            if (this.expandedKeys) {\n                let _keys = { ...this.expandedKeys };\n\n                if (expanded) _keys[item.key] = true;\n                else delete _keys[item.key];\n\n                this.$emit('update:expandedKeys', _keys);\n            }\n        },\n        changeFocusedHeader(event, element) {\n            element && focus(element);\n        },\n        getMenuItemProps(item, index) {\n            return {\n                icon: mergeProps(\n                    {\n                        class: [this.cx('headerIcon'), this.getItemProp(item, 'icon')]\n                    },\n                    this.getPTOptions('headerIcon', item, index)\n                ),\n                label: mergeProps(\n                    {\n                        class: this.cx('headerLabel')\n                    },\n                    this.getPTOptions('headerLabel', item, index)\n                )\n            };\n        }\n    },\n    components: {\n        PanelMenuList: PanelMenuList,\n        ChevronRightIcon: ChevronRightIcon,\n        ChevronDownIcon: ChevronDownIcon\n    }\n};\n</script>\n"],"names":["name","BaseComponent","props","model","type","Array","expandedKeys","Object","multiple","Boolean","tabindex","Number","style","PanelMenuStyle","provide","$pcPanelMenu","$parentInstance","hostName","emits","panelId","String","focusedItemId","items","level","templates","activeItemPath","methods","getItemId","processedItem","concat","key","getItemKey","getItemProp","params","item","resolve","undefined","getItemLabel","getPTOptions","index","ptm","context","active","isItemActive","focused","isItemFocused","disabled","isItemDisabled","some","path","isItemVisible","isItemGroup","isNotEmpty","onItemClick","event","originalEvent","$emit","expanded","onItemToggle","onItemMouseMove","getAriaSetSize","_this","filter","length","getAriaPosInset","_this2","slice","getMenuItemProps","action","mergeProps","cx","icon","label","submenuicon","components","ChevronRightIcon","ChevronDownIcon","directives","ripple","Ripple","_createElementBlock","_ctx","$props","_openBlock","_Fragment","_renderList","$options","_mergeProps","id","role","_createElementVNode","onClick","$event","onMousemove","_withDirectives","href","target","_createBlock","_resolveDynamicComponent","itemicon","_toDisplayString","root","hasSubmenu","_createVNode","_Transition","_component_PanelMenuSub","onItemMousemove","_cache","pt","unstyled","_vShow","searchTimeout","searchValue","data","focusedItem","watch","newValue","autoUpdateActiveItemPath","mounted","parentKey","onFocus","isElementInPanel","relatedTarget","findFirstItem","findLastItem","onBlur","onKeyDown","metaKey","ctrlKey","code","onArrowDownKey","onArrowUpKey","onArrowLeftKey","onArrowRightKey","onHomeKey","onEndKey","onSpaceKey","onEnterKey","isPrintableCharacter","searchItems","findNextItem","changeFocusedItem","focusOnNext","preventDefault","findPrevItem","selfCheck","matched","p","parent","grouped","push","allowHeaderFocus","element","findSingle","$el","anchorElement","click","focus","panel","currentTarget","closest","contains","isItemMatched","_this$getItemLabel","isValidItem","toLocaleLowerCase","searchLocale","startsWith","isVisibleItem","_this3","visibleItems","find","_this4","findLast","_this5","findIndex","matchedItem","pItem","_this6","char","_this7","focusedItemIndex","isEmpty","clearTimeout","setTimeout","_event$allowHeaderFoc","scrollInView","scrollIntoView","block","inline","_this8","entries","reduce","acc","_ref","_ref2","_slicedToArray","val","findProcessedItemByItemKey","processedItems","arguments","i","createProcessedItems","_this9","forEach","newItem","flatItems","_this10","processedFlattenItems","computed","PanelMenuSub","$data","onKeydown","BasePanelMenu","inheritAttrs","$attrs","activeItem","activeItems","$attrsId","UniqueComponentId","subItem","equals","getPanelId","getPanelKey","getHeaderId","getContentId","onHeaderClick","command","changeActiveItem","onHeaderKeyDown","onHeaderArrowDownKey","onHeaderArrowUpKey","onHeaderHomeKey","onHeaderEndKey","onHeaderEnterKey","rootList","getAttribute","nextElementSibling","updateFocusedHeader","prevHeader","findPrevHeader","parentElement","findLastHeader","changeFocusedHeader","findFirstHeader","headerAction","findNextHeader","panelElement","nextPanelElement","headerElement","prevPanelElement","previousElementSibling","firstElementChild","lastElementChild","header","selfActive","eventName","changeExpandedKeys","_ref$expanded","_keys","_objectSpread","PanelMenuList","ptmi","$slots","_renderSlot","headericon","_normalizeClass","_component_PanelMenuList","onHeaderFocus"],"mappings":"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"}