{"version":3,"file":"index.mjs","sources":["../../src/menubar/BaseMenubar.vue","../../src/menubar/MenubarSub.vue","../../src/menubar/MenubarSub.vue?vue&type=template&id=bae0ed7c&lang.js","../../src/menubar/Menubar.vue","../../src/menubar/Menubar.vue?vue&type=template&id=5962b032&lang.js"],"sourcesContent":["<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport MenubarStyle from 'primevue/menubar/style';\n\nexport default {\n    name: 'BaseMenubar',\n    extends: BaseComponent,\n    props: {\n        model: {\n            type: Array,\n            default: null\n        },\n        buttonProps: {\n            type: null,\n            default: null\n        },\n        breakpoint: {\n            type: String,\n            default: '960px'\n        },\n        ariaLabelledby: {\n            type: String,\n            default: null\n        },\n        ariaLabel: {\n            type: String,\n            default: null\n        }\n    },\n    style: MenubarStyle,\n    provide() {\n        return {\n            $pcMenubar: this,\n            $parentInstance: this\n        };\n    }\n};\n</script>\n","<template>\n    <ul :class=\"level === 0 ? cx('rootList') : cx('submenu')\" v-bind=\"level === 0 ? ptm('rootList') : ptm('submenu')\">\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                :style=\"getItemProp(processedItem, 'style')\"\n                :class=\"[cx('item', { processedItem }), getItemProp(processedItem, 'class')]\"\n                role=\"menuitem\"\n                :aria-label=\"getItemLabel(processedItem)\"\n                :aria-disabled=\"isItemDisabled(processedItem) || undefined\"\n                :aria-expanded=\"isItemGroup(processedItem) ? isItemActive(processedItem) : undefined\"\n                :aria-haspopup=\"isItemGroup(processedItem) && !getItemProp(processedItem, 'to') ? 'menu' : undefined\"\n                :aria-level=\"level + 1\"\n                :aria-setsize=\"getAriaSetSize\"\n                :aria-posinset=\"getAriaPosInset(index)\"\n                v-bind=\"getPTOptions(processedItem, index, 'item')\"\n                :data-p-active=\"isItemActive(processedItem)\"\n                :data-p-focused=\"isItemFocused(processedItem)\"\n                :data-p-disabled=\"isItemDisabled(processedItem)\"\n            >\n                <div\n                    :class=\"cx('itemContent')\"\n                    @click=\"onItemClick($event, processedItem)\"\n                    @mouseenter=\"onItemMouseEnter($event, processedItem)\"\n                    @mousemove=\"onItemMouseMove($event, processedItem)\"\n                    v-bind=\"getPTOptions(processedItem, index, 'itemContent')\"\n                >\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(processedItem, index, 'itemLink')\">\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(processedItem, index, 'itemIcon')\" />\n                            <span :id=\"getItemLabelId(processedItem)\" :class=\"cx('itemLabel')\" v-bind=\"getPTOptions(processedItem, index, 'itemLabel')\">{{ getItemLabel(processedItem) }}</span>\n                            <template v-if=\"getItemProp(processedItem, 'items')\">\n                                <component v-if=\"templates.submenuicon\" :is=\"templates.submenuicon\" :root=\"root\" :active=\"isItemActive(processedItem)\" :class=\"cx('submenuIcon')\" />\n                                <component v-else :is=\"root ? 'AngleDownIcon' : 'AngleRightIcon'\" :class=\"cx('submenuIcon')\" v-bind=\"getPTOptions(processedItem, index, 'submenuIcon')\" />\n                            </template>\n                        </a>\n                    </template>\n                    <component v-else :is=\"templates.item\" :item=\"processedItem.item\" :root=\"root\" :hasSubmenu=\"getItemProp(processedItem, 'items')\" :label=\"getItemLabel(processedItem)\" :props=\"getMenuItemProps(processedItem, index)\"></component>\n                </div>\n                <MenubarSub\n                    v-if=\"isItemVisible(processedItem) && isItemGroup(processedItem)\"\n                    :id=\"getItemId(processedItem) + '_list'\"\n                    :menuId=\"menuId\"\n                    role=\"menu\"\n                    :style=\"sx('submenu', true, { processedItem })\"\n                    :focusedItemId=\"focusedItemId\"\n                    :items=\"processedItem.items\"\n                    :mobileActive=\"mobileActive\"\n                    :activeItemPath=\"activeItemPath\"\n                    :templates=\"templates\"\n                    :level=\"level + 1\"\n                    :aria-labelledby=\"getItemLabelId(processedItem)\"\n                    :pt=\"pt\"\n                    :unstyled=\"unstyled\"\n                    @item-click=\"$emit('item-click', $event)\"\n                    @item-mouseenter=\"$emit('item-mouseenter', $event)\"\n                    @item-mousemove=\"$emit('item-mousemove', $event)\"\n                />\n            </li>\n            <li\n                v-if=\"isItemVisible(processedItem) && getItemProp(processedItem, 'separator')\"\n                :id=\"getItemId(processedItem)\"\n                :class=\"[cx('separator'), getItemProp(processedItem, 'class')]\"\n                :style=\"getItemProp(processedItem, 'style')\"\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 AngleDownIcon from '@primevue/icons/angledown';\nimport AngleRightIcon from '@primevue/icons/angleright';\nimport Ripple from 'primevue/ripple';\nimport { mergeProps } from 'vue';\n\nexport default {\n    name: 'MenubarSub',\n    hostName: 'Menubar',\n    extends: BaseComponent,\n    emits: ['item-mouseenter', 'item-click', 'item-mousemove'],\n    props: {\n        items: {\n            type: Array,\n            default: null\n        },\n        root: {\n            type: Boolean,\n            default: false\n        },\n        popup: {\n            type: Boolean,\n            default: false\n        },\n        mobileActive: {\n            type: Boolean,\n            default: false\n        },\n        templates: {\n            type: Object,\n            default: null\n        },\n        level: {\n            type: Number,\n            default: 0\n        },\n        menuId: {\n            type: String,\n            default: null\n        },\n        focusedItemId: {\n            type: String,\n            default: null\n        },\n        activeItemPath: {\n            type: Object,\n            default: null\n        }\n    },\n    list: null,\n\n    methods: {\n        getItemId(processedItem) {\n            return `${this.menuId}_${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        getItemLabelId(processedItem) {\n            return `${this.menuId}_${processedItem.key}_label`;\n        },\n        getPTOptions(processedItem, index, key) {\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                    level: this.level\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-click', { originalEvent: event, processedItem, isFocus: true });\n        },\n        onItemMouseEnter(event, processedItem) {\n            this.$emit('item-mouseenter', { originalEvent: event, processedItem });\n        },\n        onItemMouseMove(event, processedItem) {\n            this.$emit('item-mousemove', { originalEvent: event, processedItem });\n        },\n        getAriaPosInset(index) {\n            return index - this.calculateAriaSetSize.slice(0, index).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(processedItem, index, 'itemLink')\n                ),\n                icon: mergeProps(\n                    {\n                        class: [this.cx('itemIcon'), this.getItemProp(processedItem, 'icon')]\n                    },\n                    this.getPTOptions(processedItem, index, 'itemIcon')\n                ),\n                label: mergeProps(\n                    {\n                        class: this.cx('itemLabel')\n                    },\n                    this.getPTOptions(processedItem, index, 'itemLabel')\n                ),\n                submenuicon: mergeProps(\n                    {\n                        class: this.cx('submenuIcon')\n                    },\n                    this.getPTOptions(processedItem, index, 'submenuIcon')\n                )\n            };\n        }\n    },\n    computed: {\n        calculateAriaSetSize() {\n            return this.items.filter((processedItem) => this.isItemVisible(processedItem) && this.getItemProp(processedItem, 'separator'));\n        },\n        getAriaSetSize() {\n            return this.items.filter((processedItem) => this.isItemVisible(processedItem) && !this.getItemProp(processedItem, 'separator')).length;\n        }\n    },\n    components: {\n        AngleRightIcon: AngleRightIcon,\n        AngleDownIcon: AngleDownIcon\n    },\n    directives: {\n        ripple: Ripple\n    }\n};\n</script>\n","<template>\n    <ul :class=\"level === 0 ? cx('rootList') : cx('submenu')\" v-bind=\"level === 0 ? ptm('rootList') : ptm('submenu')\">\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                :style=\"getItemProp(processedItem, 'style')\"\n                :class=\"[cx('item', { processedItem }), getItemProp(processedItem, 'class')]\"\n                role=\"menuitem\"\n                :aria-label=\"getItemLabel(processedItem)\"\n                :aria-disabled=\"isItemDisabled(processedItem) || undefined\"\n                :aria-expanded=\"isItemGroup(processedItem) ? isItemActive(processedItem) : undefined\"\n                :aria-haspopup=\"isItemGroup(processedItem) && !getItemProp(processedItem, 'to') ? 'menu' : undefined\"\n                :aria-level=\"level + 1\"\n                :aria-setsize=\"getAriaSetSize\"\n                :aria-posinset=\"getAriaPosInset(index)\"\n                v-bind=\"getPTOptions(processedItem, index, 'item')\"\n                :data-p-active=\"isItemActive(processedItem)\"\n                :data-p-focused=\"isItemFocused(processedItem)\"\n                :data-p-disabled=\"isItemDisabled(processedItem)\"\n            >\n                <div\n                    :class=\"cx('itemContent')\"\n                    @click=\"onItemClick($event, processedItem)\"\n                    @mouseenter=\"onItemMouseEnter($event, processedItem)\"\n                    @mousemove=\"onItemMouseMove($event, processedItem)\"\n                    v-bind=\"getPTOptions(processedItem, index, 'itemContent')\"\n                >\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(processedItem, index, 'itemLink')\">\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(processedItem, index, 'itemIcon')\" />\n                            <span :id=\"getItemLabelId(processedItem)\" :class=\"cx('itemLabel')\" v-bind=\"getPTOptions(processedItem, index, 'itemLabel')\">{{ getItemLabel(processedItem) }}</span>\n                            <template v-if=\"getItemProp(processedItem, 'items')\">\n                                <component v-if=\"templates.submenuicon\" :is=\"templates.submenuicon\" :root=\"root\" :active=\"isItemActive(processedItem)\" :class=\"cx('submenuIcon')\" />\n                                <component v-else :is=\"root ? 'AngleDownIcon' : 'AngleRightIcon'\" :class=\"cx('submenuIcon')\" v-bind=\"getPTOptions(processedItem, index, 'submenuIcon')\" />\n                            </template>\n                        </a>\n                    </template>\n                    <component v-else :is=\"templates.item\" :item=\"processedItem.item\" :root=\"root\" :hasSubmenu=\"getItemProp(processedItem, 'items')\" :label=\"getItemLabel(processedItem)\" :props=\"getMenuItemProps(processedItem, index)\"></component>\n                </div>\n                <MenubarSub\n                    v-if=\"isItemVisible(processedItem) && isItemGroup(processedItem)\"\n                    :id=\"getItemId(processedItem) + '_list'\"\n                    :menuId=\"menuId\"\n                    role=\"menu\"\n                    :style=\"sx('submenu', true, { processedItem })\"\n                    :focusedItemId=\"focusedItemId\"\n                    :items=\"processedItem.items\"\n                    :mobileActive=\"mobileActive\"\n                    :activeItemPath=\"activeItemPath\"\n                    :templates=\"templates\"\n                    :level=\"level + 1\"\n                    :aria-labelledby=\"getItemLabelId(processedItem)\"\n                    :pt=\"pt\"\n                    :unstyled=\"unstyled\"\n                    @item-click=\"$emit('item-click', $event)\"\n                    @item-mouseenter=\"$emit('item-mouseenter', $event)\"\n                    @item-mousemove=\"$emit('item-mousemove', $event)\"\n                />\n            </li>\n            <li\n                v-if=\"isItemVisible(processedItem) && getItemProp(processedItem, 'separator')\"\n                :id=\"getItemId(processedItem)\"\n                :class=\"[cx('separator'), getItemProp(processedItem, 'class')]\"\n                :style=\"getItemProp(processedItem, 'style')\"\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 AngleDownIcon from '@primevue/icons/angledown';\nimport AngleRightIcon from '@primevue/icons/angleright';\nimport Ripple from 'primevue/ripple';\nimport { mergeProps } from 'vue';\n\nexport default {\n    name: 'MenubarSub',\n    hostName: 'Menubar',\n    extends: BaseComponent,\n    emits: ['item-mouseenter', 'item-click', 'item-mousemove'],\n    props: {\n        items: {\n            type: Array,\n            default: null\n        },\n        root: {\n            type: Boolean,\n            default: false\n        },\n        popup: {\n            type: Boolean,\n            default: false\n        },\n        mobileActive: {\n            type: Boolean,\n            default: false\n        },\n        templates: {\n            type: Object,\n            default: null\n        },\n        level: {\n            type: Number,\n            default: 0\n        },\n        menuId: {\n            type: String,\n            default: null\n        },\n        focusedItemId: {\n            type: String,\n            default: null\n        },\n        activeItemPath: {\n            type: Object,\n            default: null\n        }\n    },\n    list: null,\n\n    methods: {\n        getItemId(processedItem) {\n            return `${this.menuId}_${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        getItemLabelId(processedItem) {\n            return `${this.menuId}_${processedItem.key}_label`;\n        },\n        getPTOptions(processedItem, index, key) {\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                    level: this.level\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-click', { originalEvent: event, processedItem, isFocus: true });\n        },\n        onItemMouseEnter(event, processedItem) {\n            this.$emit('item-mouseenter', { originalEvent: event, processedItem });\n        },\n        onItemMouseMove(event, processedItem) {\n            this.$emit('item-mousemove', { originalEvent: event, processedItem });\n        },\n        getAriaPosInset(index) {\n            return index - this.calculateAriaSetSize.slice(0, index).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(processedItem, index, 'itemLink')\n                ),\n                icon: mergeProps(\n                    {\n                        class: [this.cx('itemIcon'), this.getItemProp(processedItem, 'icon')]\n                    },\n                    this.getPTOptions(processedItem, index, 'itemIcon')\n                ),\n                label: mergeProps(\n                    {\n                        class: this.cx('itemLabel')\n                    },\n                    this.getPTOptions(processedItem, index, 'itemLabel')\n                ),\n                submenuicon: mergeProps(\n                    {\n                        class: this.cx('submenuIcon')\n                    },\n                    this.getPTOptions(processedItem, index, 'submenuIcon')\n                )\n            };\n        }\n    },\n    computed: {\n        calculateAriaSetSize() {\n            return this.items.filter((processedItem) => this.isItemVisible(processedItem) && this.getItemProp(processedItem, 'separator'));\n        },\n        getAriaSetSize() {\n            return this.items.filter((processedItem) => this.isItemVisible(processedItem) && !this.getItemProp(processedItem, 'separator')).length;\n        }\n    },\n    components: {\n        AngleRightIcon: AngleRightIcon,\n        AngleDownIcon: AngleDownIcon\n    },\n    directives: {\n        ripple: Ripple\n    }\n};\n</script>\n","<template>\n    <div :ref=\"containerRef\" :class=\"cx('root')\" v-bind=\"ptmi('root')\">\n        <div v-if=\"$slots.start\" :class=\"cx('start')\" v-bind=\"ptm('start')\">\n            <slot name=\"start\"></slot>\n        </div>\n        <slot :id=\"id\" :name=\"$slots.button ? 'button' : 'menubutton'\" :class=\"cx('button')\" :toggleCallback=\"(event) => menuButtonClick(event)\">\n            <!-- TODO: menubutton deprecated since v4.0-->\n            <a\n                v-if=\"model && model.length > 0\"\n                ref=\"menubutton\"\n                role=\"button\"\n                tabindex=\"0\"\n                :class=\"cx('button')\"\n                :aria-haspopup=\"model.length && model.length > 0 ? true : false\"\n                :aria-expanded=\"mobileActive\"\n                :aria-controls=\"id\"\n                :aria-label=\"$primevue.config.locale.aria?.navigation\"\n                @click=\"menuButtonClick($event)\"\n                @keydown=\"menuButtonKeydown($event)\"\n                v-bind=\"{ ...buttonProps, ...ptm('button') }\"\n            >\n                <!-- TODO: menubuttonicon deprecated since v4.0-->\n                <slot :name=\"$slots.buttonicon ? 'buttonicon' : 'menubuttonicon'\">\n                    <BarsIcon v-bind=\"ptm('buttonicon')\" />\n                </slot>\n            </a>\n        </slot>\n        <MenubarSub\n            :ref=\"menubarRef\"\n            :id=\"id + '_list'\"\n            role=\"menubar\"\n            :items=\"processedItems\"\n            :templates=\"$slots\"\n            :root=\"true\"\n            :mobileActive=\"mobileActive\"\n            tabindex=\"0\"\n            :aria-activedescendant=\"focused ? focusedItemId : undefined\"\n            :menuId=\"id\"\n            :focusedItemId=\"focused ? focusedItemId : undefined\"\n            :activeItemPath=\"activeItemPath\"\n            :level=\"0\"\n            :aria-labelledby=\"ariaLabelledby\"\n            :aria-label=\"ariaLabel\"\n            :pt=\"pt\"\n            :unstyled=\"unstyled\"\n            @focus=\"onFocus\"\n            @blur=\"onBlur\"\n            @keydown=\"onKeyDown\"\n            @item-click=\"onItemClick\"\n            @item-mouseenter=\"onItemMouseEnter\"\n            @item-mousemove=\"onItemMouseMove\"\n        />\n        <div v-if=\"$slots.end\" :class=\"cx('end')\" v-bind=\"ptm('end')\">\n            <slot name=\"end\"></slot>\n        </div>\n    </div>\n</template>\n\n<script>\nimport { UniqueComponentId } from '@primevue/core/utils';\nimport { focus, isTouchDevice, findSingle } from '@primeuix/utils/dom';\nimport { isNotEmpty, resolve, isPrintableCharacter, isEmpty, findLastIndex } from '@primeuix/utils/object';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport BarsIcon from '@primevue/icons/bars';\nimport BaseMenubar from './BaseMenubar.vue';\nimport MenubarSub from './MenubarSub.vue';\n\nexport default {\n    name: 'Menubar',\n    extends: BaseMenubar,\n    inheritAttrs: false,\n    emits: ['focus', 'blur'],\n    matchMediaListener: null,\n    data() {\n        return {\n            id: this.$attrs.id,\n            mobileActive: false,\n            focused: false,\n            focusedItemInfo: { index: -1, level: 0, parentKey: '' },\n            activeItemPath: [],\n            dirty: false,\n            query: null,\n            queryMatches: false\n        };\n    },\n    watch: {\n        '$attrs.id': function (newValue) {\n            this.id = newValue || UniqueComponentId();\n        },\n        activeItemPath(newPath) {\n            if (isNotEmpty(newPath)) {\n                this.bindOutsideClickListener();\n                this.bindResizeListener();\n            } else {\n                this.unbindOutsideClickListener();\n                this.unbindResizeListener();\n            }\n        }\n    },\n    outsideClickListener: null,\n    container: null,\n    menubar: null,\n    mounted() {\n        this.id = this.id || UniqueComponentId();\n        this.bindMatchMediaListener();\n    },\n    beforeUnmount() {\n        this.mobileActive = false;\n        this.unbindOutsideClickListener();\n        this.unbindResizeListener();\n        this.unbindMatchMediaListener();\n\n        if (this.container) {\n            ZIndex.clear(this.container);\n        }\n\n        this.container = null;\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        isItemDisabled(item) {\n            return this.getItemProp(item, 'disabled');\n        },\n        isItemVisible(item) {\n            return this.getItemProp(item, 'visible') !== false;\n        },\n        isItemGroup(item) {\n            return isNotEmpty(this.getItemProp(item, 'items'));\n        },\n        isItemSeparator(item) {\n            return this.getItemProp(item, 'separator');\n        },\n        getProccessedItemLabel(processedItem) {\n            return processedItem ? this.getItemLabel(processedItem.item) : undefined;\n        },\n        isProccessedItemGroup(processedItem) {\n            return processedItem && isNotEmpty(processedItem.items);\n        },\n        toggle(event) {\n            if (this.mobileActive) {\n                this.mobileActive = false;\n                ZIndex.clear(this.menubar);\n                this.hide();\n            } else {\n                this.mobileActive = true;\n                ZIndex.set('menu', this.menubar, this.$primevue.config.zIndex.menu);\n                setTimeout(() => {\n                    this.show();\n                }, 1);\n            }\n\n            this.bindOutsideClickListener();\n            event.preventDefault();\n        },\n        show() {\n            focus(this.menubar);\n        },\n        hide(event, isFocus) {\n            if (this.mobileActive) {\n                this.mobileActive = false;\n                setTimeout(() => {\n                    focus(this.$refs.menubutton);\n                }, 0);\n            }\n\n            this.activeItemPath = [];\n            this.focusedItemInfo = { index: -1, level: 0, parentKey: '' };\n\n            isFocus && focus(this.menubar);\n            this.dirty = false;\n        },\n        onFocus(event) {\n            this.focused = true;\n            this.focusedItemInfo = this.focusedItemInfo.index !== -1 ? this.focusedItemInfo : { index: this.findFirstFocusedItemIndex(), level: 0, parentKey: '' };\n\n            this.$emit('focus', event);\n        },\n        onBlur(event) {\n            this.focused = false;\n            this.focusedItemInfo = { index: -1, level: 0, parentKey: '' };\n            this.searchValue = '';\n            this.dirty = false;\n            this.$emit('blur', event);\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                    this.onEscapeKey(event);\n                    break;\n\n                case 'Tab':\n                    this.onTabKey(event);\n                    break;\n\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        onItemChange(event) {\n            const { processedItem, isFocus } = event;\n\n            if (isEmpty(processedItem)) return;\n\n            const { index, key, level, parentKey, items } = processedItem;\n            const grouped = isNotEmpty(items);\n            const activeItemPath = this.activeItemPath.filter((p) => p.parentKey !== parentKey && p.parentKey !== key);\n\n            grouped && activeItemPath.push(processedItem);\n\n            this.focusedItemInfo = { index, level, parentKey };\n            this.activeItemPath = activeItemPath;\n\n            grouped && (this.dirty = true);\n            isFocus && focus(this.menubar);\n        },\n        onItemClick(event) {\n            const { originalEvent, processedItem } = event;\n            const grouped = this.isProccessedItemGroup(processedItem);\n            const root = isEmpty(processedItem.parent);\n            const selected = this.isSelected(processedItem);\n\n            if (selected) {\n                const { index, key, level, parentKey } = processedItem;\n\n                this.activeItemPath = this.activeItemPath.filter((p) => key !== p.key && key.startsWith(p.key));\n                this.focusedItemInfo = { index, level, parentKey };\n\n                this.dirty = !root;\n                focus(this.menubar);\n            } else {\n                if (grouped) {\n                    this.onItemChange(event);\n                } else {\n                    const rootProcessedItem = root ? processedItem : this.activeItemPath.find((p) => p.parentKey === '');\n\n                    this.hide(originalEvent);\n                    this.changeFocusedItemIndex(originalEvent, rootProcessedItem ? rootProcessedItem.index : -1);\n\n                    this.mobileActive = false;\n                    focus(this.menubar);\n                }\n            }\n        },\n        onItemMouseEnter(event) {\n            if (this.dirty) {\n                this.onItemChange(event);\n            }\n        },\n        onItemMouseMove(event) {\n            if (this.focused) {\n                this.changeFocusedItemIndex(event, event.processedItem.index);\n            }\n        },\n        menuButtonClick(event) {\n            this.toggle(event);\n        },\n        menuButtonKeydown(event) {\n            (event.code === 'Enter' || event.code === 'NumpadEnter' || event.code === 'Space') && this.menuButtonClick(event);\n        },\n        onArrowDownKey(event) {\n            const processedItem = this.visibleItems[this.focusedItemInfo.index];\n            const root = processedItem ? isEmpty(processedItem.parent) : null;\n\n            if (root) {\n                const grouped = this.isProccessedItemGroup(processedItem);\n\n                if (grouped) {\n                    this.onItemChange({ originalEvent: event, processedItem });\n                    this.focusedItemInfo = { index: -1, parentKey: processedItem.key };\n                    this.onArrowRightKey(event);\n                }\n            } else {\n                const itemIndex = this.focusedItemInfo.index !== -1 ? this.findNextItemIndex(this.focusedItemInfo.index) : this.findFirstFocusedItemIndex();\n\n                this.changeFocusedItemIndex(event, itemIndex);\n            }\n\n            event.preventDefault();\n        },\n        onArrowUpKey(event) {\n            const processedItem = this.visibleItems[this.focusedItemInfo.index];\n            const root = isEmpty(processedItem.parent);\n\n            if (root) {\n                const grouped = this.isProccessedItemGroup(processedItem);\n\n                if (grouped) {\n                    this.onItemChange({ originalEvent: event, processedItem });\n                    this.focusedItemInfo = { index: -1, parentKey: processedItem.key };\n                    const itemIndex = this.findLastItemIndex();\n\n                    this.changeFocusedItemIndex(event, itemIndex);\n                }\n            } else {\n                const parentItem = this.activeItemPath.find((p) => p.key === processedItem.parentKey);\n\n                if (this.focusedItemInfo.index === 0) {\n                    this.focusedItemInfo = { index: -1, parentKey: parentItem ? parentItem.parentKey : '' };\n                    this.searchValue = '';\n                    this.onArrowLeftKey(event);\n                    this.activeItemPath = this.activeItemPath.filter((p) => p.parentKey !== this.focusedItemInfo.parentKey);\n                } else {\n                    const itemIndex = this.focusedItemInfo.index !== -1 ? this.findPrevItemIndex(this.focusedItemInfo.index) : this.findLastFocusedItemIndex();\n\n                    this.changeFocusedItemIndex(event, itemIndex);\n                }\n            }\n\n            event.preventDefault();\n        },\n        onArrowLeftKey(event) {\n            const processedItem = this.visibleItems[this.focusedItemInfo.index];\n            const parentItem = processedItem ? this.activeItemPath.find((p) => p.key === processedItem.parentKey) : null;\n\n            if (parentItem) {\n                this.onItemChange({ originalEvent: event, processedItem: parentItem });\n                this.activeItemPath = this.activeItemPath.filter((p) => p.parentKey !== this.focusedItemInfo.parentKey);\n\n                event.preventDefault();\n            } else {\n                const itemIndex = this.focusedItemInfo.index !== -1 ? this.findPrevItemIndex(this.focusedItemInfo.index) : this.findLastFocusedItemIndex();\n\n                this.changeFocusedItemIndex(event, itemIndex);\n                event.preventDefault();\n            }\n        },\n        onArrowRightKey(event) {\n            const processedItem = this.visibleItems[this.focusedItemInfo.index];\n            const parentItem = processedItem ? this.activeItemPath.find((p) => p.key === processedItem.parentKey) : null;\n\n            if (parentItem) {\n                const grouped = this.isProccessedItemGroup(processedItem);\n\n                if (grouped) {\n                    this.onItemChange({ originalEvent: event, processedItem });\n                    this.focusedItemInfo = { index: -1, parentKey: processedItem.key };\n                    this.onArrowDownKey(event);\n                }\n            } else {\n                const itemIndex = this.focusedItemInfo.index !== -1 ? this.findNextItemIndex(this.focusedItemInfo.index) : this.findFirstFocusedItemIndex();\n\n                this.changeFocusedItemIndex(event, itemIndex);\n                event.preventDefault();\n            }\n        },\n        onHomeKey(event) {\n            this.changeFocusedItemIndex(event, this.findFirstItemIndex());\n            event.preventDefault();\n        },\n        onEndKey(event) {\n            this.changeFocusedItemIndex(event, this.findLastItemIndex());\n            event.preventDefault();\n        },\n        onEnterKey(event) {\n            if (this.focusedItemInfo.index !== -1) {\n                const element = findSingle(this.menubar, `li[id=\"${`${this.focusedItemId}`}\"]`);\n                const anchorElement = element && findSingle(element, 'a[data-pc-section=\"itemlink\"]');\n\n                anchorElement ? anchorElement.click() : element && element.click();\n\n                const processedItem = this.visibleItems[this.focusedItemInfo.index];\n                const grouped = this.isProccessedItemGroup(processedItem);\n\n                !grouped && (this.focusedItemInfo.index = this.findFirstFocusedItemIndex());\n            }\n\n            event.preventDefault();\n        },\n        onSpaceKey(event) {\n            this.onEnterKey(event);\n        },\n        onEscapeKey(event) {\n            if (this.focusedItemInfo.level !== 0) {\n                const _focusedItemInfo = this.focusedItemInfo;\n\n                this.hide(event, false);\n                this.focusedItemInfo = { index: Number(_focusedItemInfo.parentKey.split('_')[0]), level: 0, parentKey: '' };\n            }\n\n            event.preventDefault();\n        },\n        onTabKey(event) {\n            if (this.focusedItemInfo.index !== -1) {\n                const processedItem = this.visibleItems[this.focusedItemInfo.index];\n                const grouped = this.isProccessedItemGroup(processedItem);\n\n                !grouped && this.onItemChange({ originalEvent: event, processedItem });\n            }\n\n            this.hide();\n        },\n        bindOutsideClickListener() {\n            if (!this.outsideClickListener) {\n                this.outsideClickListener = (event) => {\n                    const isOutsideContainer = this.container && !this.container.contains(event.target);\n                    const isOutsideTarget = !(this.target && (this.target === event.target || this.target.contains(event.target)));\n\n                    if (isOutsideContainer && isOutsideTarget) {\n                        this.hide();\n                    }\n                };\n\n                document.addEventListener('click', this.outsideClickListener);\n            }\n        },\n        unbindOutsideClickListener() {\n            if (this.outsideClickListener) {\n                document.removeEventListener('click', this.outsideClickListener);\n                this.outsideClickListener = null;\n            }\n        },\n        bindResizeListener() {\n            if (!this.resizeListener) {\n                this.resizeListener = (event) => {\n                    if (!isTouchDevice()) {\n                        this.hide(event, true);\n                    }\n\n                    this.mobileActive = false;\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        bindMatchMediaListener() {\n            if (!this.matchMediaListener) {\n                const query = matchMedia(`(max-width: ${this.breakpoint})`);\n\n                this.query = query;\n                this.queryMatches = query.matches;\n\n                this.matchMediaListener = () => {\n                    this.queryMatches = query.matches;\n                    this.mobileActive = false;\n                };\n\n                this.query.addEventListener('change', this.matchMediaListener);\n            }\n        },\n        unbindMatchMediaListener() {\n            if (this.matchMediaListener) {\n                this.query.removeEventListener('change', this.matchMediaListener);\n                this.matchMediaListener = null;\n            }\n        },\n        isItemMatched(processedItem) {\n            return this.isValidItem(processedItem) && this.getProccessedItemLabel(processedItem)?.toLocaleLowerCase().startsWith(this.searchValue.toLocaleLowerCase());\n        },\n        isValidItem(processedItem) {\n            return !!processedItem && !this.isItemDisabled(processedItem.item) && !this.isItemSeparator(processedItem.item) && this.isItemVisible(processedItem.item);\n        },\n        isValidSelectedItem(processedItem) {\n            return this.isValidItem(processedItem) && this.isSelected(processedItem);\n        },\n        isSelected(processedItem) {\n            return this.activeItemPath.some((p) => p.key === processedItem.key);\n        },\n        findFirstItemIndex() {\n            return this.visibleItems.findIndex((processedItem) => this.isValidItem(processedItem));\n        },\n        findLastItemIndex() {\n            return findLastIndex(this.visibleItems, (processedItem) => this.isValidItem(processedItem));\n        },\n        findNextItemIndex(index) {\n            const matchedItemIndex = index < this.visibleItems.length - 1 ? this.visibleItems.slice(index + 1).findIndex((processedItem) => this.isValidItem(processedItem)) : -1;\n\n            return matchedItemIndex > -1 ? matchedItemIndex + index + 1 : index;\n        },\n        findPrevItemIndex(index) {\n            const matchedItemIndex = index > 0 ? findLastIndex(this.visibleItems.slice(0, index), (processedItem) => this.isValidItem(processedItem)) : -1;\n\n            return matchedItemIndex > -1 ? matchedItemIndex : index;\n        },\n        findSelectedItemIndex() {\n            return this.visibleItems.findIndex((processedItem) => this.isValidSelectedItem(processedItem));\n        },\n        findFirstFocusedItemIndex() {\n            const selectedIndex = this.findSelectedItemIndex();\n\n            return selectedIndex < 0 ? this.findFirstItemIndex() : selectedIndex;\n        },\n        findLastFocusedItemIndex() {\n            const selectedIndex = this.findSelectedItemIndex();\n\n            return selectedIndex < 0 ? this.findLastItemIndex() : selectedIndex;\n        },\n        searchItems(event, char) {\n            this.searchValue = (this.searchValue || '') + char;\n\n            let itemIndex = -1;\n            let matched = false;\n\n            if (this.focusedItemInfo.index !== -1) {\n                itemIndex = this.visibleItems.slice(this.focusedItemInfo.index).findIndex((processedItem) => this.isItemMatched(processedItem));\n                itemIndex = itemIndex === -1 ? this.visibleItems.slice(0, this.focusedItemInfo.index).findIndex((processedItem) => this.isItemMatched(processedItem)) : itemIndex + this.focusedItemInfo.index;\n            } else {\n                itemIndex = this.visibleItems.findIndex((processedItem) => this.isItemMatched(processedItem));\n            }\n\n            if (itemIndex !== -1) {\n                matched = true;\n            }\n\n            if (itemIndex === -1 && this.focusedItemInfo.index === -1) {\n                itemIndex = this.findFirstFocusedItemIndex();\n            }\n\n            if (itemIndex !== -1) {\n                this.changeFocusedItemIndex(event, itemIndex);\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        changeFocusedItemIndex(event, index) {\n            if (this.focusedItemInfo.index !== index) {\n                this.focusedItemInfo.index = index;\n                this.scrollInView();\n            }\n        },\n        scrollInView(index = -1) {\n            const id = index !== -1 ? `${this.id}_${index}` : this.focusedItemId;\n            const element = findSingle(this.menubar, `li[id=\"${id}\"]`);\n\n            if (element) {\n                element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'start' });\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        containerRef(el) {\n            this.container = el;\n        },\n        menubarRef(el) {\n            this.menubar = el ? el.$el : undefined;\n        }\n    },\n    computed: {\n        processedItems() {\n            return this.createProcessedItems(this.model || []);\n        },\n        visibleItems() {\n            const processedItem = this.activeItemPath.find((p) => p.key === this.focusedItemInfo.parentKey);\n\n            return processedItem ? processedItem.items : this.processedItems;\n        },\n        focusedItemId() {\n            return this.focusedItemInfo.index !== -1 ? `${this.id}${isNotEmpty(this.focusedItemInfo.parentKey) ? '_' + this.focusedItemInfo.parentKey : ''}_${this.focusedItemInfo.index}` : null;\n        }\n    },\n    components: {\n        MenubarSub: MenubarSub,\n        BarsIcon: BarsIcon\n    }\n};\n</script>\n","<template>\n    <div :ref=\"containerRef\" :class=\"cx('root')\" v-bind=\"ptmi('root')\">\n        <div v-if=\"$slots.start\" :class=\"cx('start')\" v-bind=\"ptm('start')\">\n            <slot name=\"start\"></slot>\n        </div>\n        <slot :id=\"id\" :name=\"$slots.button ? 'button' : 'menubutton'\" :class=\"cx('button')\" :toggleCallback=\"(event) => menuButtonClick(event)\">\n            <!-- TODO: menubutton deprecated since v4.0-->\n            <a\n                v-if=\"model && model.length > 0\"\n                ref=\"menubutton\"\n                role=\"button\"\n                tabindex=\"0\"\n                :class=\"cx('button')\"\n                :aria-haspopup=\"model.length && model.length > 0 ? true : false\"\n                :aria-expanded=\"mobileActive\"\n                :aria-controls=\"id\"\n                :aria-label=\"$primevue.config.locale.aria?.navigation\"\n                @click=\"menuButtonClick($event)\"\n                @keydown=\"menuButtonKeydown($event)\"\n                v-bind=\"{ ...buttonProps, ...ptm('button') }\"\n            >\n                <!-- TODO: menubuttonicon deprecated since v4.0-->\n                <slot :name=\"$slots.buttonicon ? 'buttonicon' : 'menubuttonicon'\">\n                    <BarsIcon v-bind=\"ptm('buttonicon')\" />\n                </slot>\n            </a>\n        </slot>\n        <MenubarSub\n            :ref=\"menubarRef\"\n            :id=\"id + '_list'\"\n            role=\"menubar\"\n            :items=\"processedItems\"\n            :templates=\"$slots\"\n            :root=\"true\"\n            :mobileActive=\"mobileActive\"\n            tabindex=\"0\"\n            :aria-activedescendant=\"focused ? focusedItemId : undefined\"\n            :menuId=\"id\"\n            :focusedItemId=\"focused ? focusedItemId : undefined\"\n            :activeItemPath=\"activeItemPath\"\n            :level=\"0\"\n            :aria-labelledby=\"ariaLabelledby\"\n            :aria-label=\"ariaLabel\"\n            :pt=\"pt\"\n            :unstyled=\"unstyled\"\n            @focus=\"onFocus\"\n            @blur=\"onBlur\"\n            @keydown=\"onKeyDown\"\n            @item-click=\"onItemClick\"\n            @item-mouseenter=\"onItemMouseEnter\"\n            @item-mousemove=\"onItemMouseMove\"\n        />\n        <div v-if=\"$slots.end\" :class=\"cx('end')\" v-bind=\"ptm('end')\">\n            <slot name=\"end\"></slot>\n        </div>\n    </div>\n</template>\n\n<script>\nimport { UniqueComponentId } from '@primevue/core/utils';\nimport { focus, isTouchDevice, findSingle } from '@primeuix/utils/dom';\nimport { isNotEmpty, resolve, isPrintableCharacter, isEmpty, findLastIndex } from '@primeuix/utils/object';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport BarsIcon from '@primevue/icons/bars';\nimport BaseMenubar from './BaseMenubar.vue';\nimport MenubarSub from './MenubarSub.vue';\n\nexport default {\n    name: 'Menubar',\n    extends: BaseMenubar,\n    inheritAttrs: false,\n    emits: ['focus', 'blur'],\n    matchMediaListener: null,\n    data() {\n        return {\n            id: this.$attrs.id,\n            mobileActive: false,\n            focused: false,\n            focusedItemInfo: { index: -1, level: 0, parentKey: '' },\n            activeItemPath: [],\n            dirty: false,\n            query: null,\n            queryMatches: false\n        };\n    },\n    watch: {\n        '$attrs.id': function (newValue) {\n            this.id = newValue || UniqueComponentId();\n        },\n        activeItemPath(newPath) {\n            if (isNotEmpty(newPath)) {\n                this.bindOutsideClickListener();\n                this.bindResizeListener();\n            } else {\n                this.unbindOutsideClickListener();\n                this.unbindResizeListener();\n            }\n        }\n    },\n    outsideClickListener: null,\n    container: null,\n    menubar: null,\n    mounted() {\n        this.id = this.id || UniqueComponentId();\n        this.bindMatchMediaListener();\n    },\n    beforeUnmount() {\n        this.mobileActive = false;\n        this.unbindOutsideClickListener();\n        this.unbindResizeListener();\n        this.unbindMatchMediaListener();\n\n        if (this.container) {\n            ZIndex.clear(this.container);\n        }\n\n        this.container = null;\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        isItemDisabled(item) {\n            return this.getItemProp(item, 'disabled');\n        },\n        isItemVisible(item) {\n            return this.getItemProp(item, 'visible') !== false;\n        },\n        isItemGroup(item) {\n            return isNotEmpty(this.getItemProp(item, 'items'));\n        },\n        isItemSeparator(item) {\n            return this.getItemProp(item, 'separator');\n        },\n        getProccessedItemLabel(processedItem) {\n            return processedItem ? this.getItemLabel(processedItem.item) : undefined;\n        },\n        isProccessedItemGroup(processedItem) {\n            return processedItem && isNotEmpty(processedItem.items);\n        },\n        toggle(event) {\n            if (this.mobileActive) {\n                this.mobileActive = false;\n                ZIndex.clear(this.menubar);\n                this.hide();\n            } else {\n                this.mobileActive = true;\n                ZIndex.set('menu', this.menubar, this.$primevue.config.zIndex.menu);\n                setTimeout(() => {\n                    this.show();\n                }, 1);\n            }\n\n            this.bindOutsideClickListener();\n            event.preventDefault();\n        },\n        show() {\n            focus(this.menubar);\n        },\n        hide(event, isFocus) {\n            if (this.mobileActive) {\n                this.mobileActive = false;\n                setTimeout(() => {\n                    focus(this.$refs.menubutton);\n                }, 0);\n            }\n\n            this.activeItemPath = [];\n            this.focusedItemInfo = { index: -1, level: 0, parentKey: '' };\n\n            isFocus && focus(this.menubar);\n            this.dirty = false;\n        },\n        onFocus(event) {\n            this.focused = true;\n            this.focusedItemInfo = this.focusedItemInfo.index !== -1 ? this.focusedItemInfo : { index: this.findFirstFocusedItemIndex(), level: 0, parentKey: '' };\n\n            this.$emit('focus', event);\n        },\n        onBlur(event) {\n            this.focused = false;\n            this.focusedItemInfo = { index: -1, level: 0, parentKey: '' };\n            this.searchValue = '';\n            this.dirty = false;\n            this.$emit('blur', event);\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                    this.onEscapeKey(event);\n                    break;\n\n                case 'Tab':\n                    this.onTabKey(event);\n                    break;\n\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        onItemChange(event) {\n            const { processedItem, isFocus } = event;\n\n            if (isEmpty(processedItem)) return;\n\n            const { index, key, level, parentKey, items } = processedItem;\n            const grouped = isNotEmpty(items);\n            const activeItemPath = this.activeItemPath.filter((p) => p.parentKey !== parentKey && p.parentKey !== key);\n\n            grouped && activeItemPath.push(processedItem);\n\n            this.focusedItemInfo = { index, level, parentKey };\n            this.activeItemPath = activeItemPath;\n\n            grouped && (this.dirty = true);\n            isFocus && focus(this.menubar);\n        },\n        onItemClick(event) {\n            const { originalEvent, processedItem } = event;\n            const grouped = this.isProccessedItemGroup(processedItem);\n            const root = isEmpty(processedItem.parent);\n            const selected = this.isSelected(processedItem);\n\n            if (selected) {\n                const { index, key, level, parentKey } = processedItem;\n\n                this.activeItemPath = this.activeItemPath.filter((p) => key !== p.key && key.startsWith(p.key));\n                this.focusedItemInfo = { index, level, parentKey };\n\n                this.dirty = !root;\n                focus(this.menubar);\n            } else {\n                if (grouped) {\n                    this.onItemChange(event);\n                } else {\n                    const rootProcessedItem = root ? processedItem : this.activeItemPath.find((p) => p.parentKey === '');\n\n                    this.hide(originalEvent);\n                    this.changeFocusedItemIndex(originalEvent, rootProcessedItem ? rootProcessedItem.index : -1);\n\n                    this.mobileActive = false;\n                    focus(this.menubar);\n                }\n            }\n        },\n        onItemMouseEnter(event) {\n            if (this.dirty) {\n                this.onItemChange(event);\n            }\n        },\n        onItemMouseMove(event) {\n            if (this.focused) {\n                this.changeFocusedItemIndex(event, event.processedItem.index);\n            }\n        },\n        menuButtonClick(event) {\n            this.toggle(event);\n        },\n        menuButtonKeydown(event) {\n            (event.code === 'Enter' || event.code === 'NumpadEnter' || event.code === 'Space') && this.menuButtonClick(event);\n        },\n        onArrowDownKey(event) {\n            const processedItem = this.visibleItems[this.focusedItemInfo.index];\n            const root = processedItem ? isEmpty(processedItem.parent) : null;\n\n            if (root) {\n                const grouped = this.isProccessedItemGroup(processedItem);\n\n                if (grouped) {\n                    this.onItemChange({ originalEvent: event, processedItem });\n                    this.focusedItemInfo = { index: -1, parentKey: processedItem.key };\n                    this.onArrowRightKey(event);\n                }\n            } else {\n                const itemIndex = this.focusedItemInfo.index !== -1 ? this.findNextItemIndex(this.focusedItemInfo.index) : this.findFirstFocusedItemIndex();\n\n                this.changeFocusedItemIndex(event, itemIndex);\n            }\n\n            event.preventDefault();\n        },\n        onArrowUpKey(event) {\n            const processedItem = this.visibleItems[this.focusedItemInfo.index];\n            const root = isEmpty(processedItem.parent);\n\n            if (root) {\n                const grouped = this.isProccessedItemGroup(processedItem);\n\n                if (grouped) {\n                    this.onItemChange({ originalEvent: event, processedItem });\n                    this.focusedItemInfo = { index: -1, parentKey: processedItem.key };\n                    const itemIndex = this.findLastItemIndex();\n\n                    this.changeFocusedItemIndex(event, itemIndex);\n                }\n            } else {\n                const parentItem = this.activeItemPath.find((p) => p.key === processedItem.parentKey);\n\n                if (this.focusedItemInfo.index === 0) {\n                    this.focusedItemInfo = { index: -1, parentKey: parentItem ? parentItem.parentKey : '' };\n                    this.searchValue = '';\n                    this.onArrowLeftKey(event);\n                    this.activeItemPath = this.activeItemPath.filter((p) => p.parentKey !== this.focusedItemInfo.parentKey);\n                } else {\n                    const itemIndex = this.focusedItemInfo.index !== -1 ? this.findPrevItemIndex(this.focusedItemInfo.index) : this.findLastFocusedItemIndex();\n\n                    this.changeFocusedItemIndex(event, itemIndex);\n                }\n            }\n\n            event.preventDefault();\n        },\n        onArrowLeftKey(event) {\n            const processedItem = this.visibleItems[this.focusedItemInfo.index];\n            const parentItem = processedItem ? this.activeItemPath.find((p) => p.key === processedItem.parentKey) : null;\n\n            if (parentItem) {\n                this.onItemChange({ originalEvent: event, processedItem: parentItem });\n                this.activeItemPath = this.activeItemPath.filter((p) => p.parentKey !== this.focusedItemInfo.parentKey);\n\n                event.preventDefault();\n            } else {\n                const itemIndex = this.focusedItemInfo.index !== -1 ? this.findPrevItemIndex(this.focusedItemInfo.index) : this.findLastFocusedItemIndex();\n\n                this.changeFocusedItemIndex(event, itemIndex);\n                event.preventDefault();\n            }\n        },\n        onArrowRightKey(event) {\n            const processedItem = this.visibleItems[this.focusedItemInfo.index];\n            const parentItem = processedItem ? this.activeItemPath.find((p) => p.key === processedItem.parentKey) : null;\n\n            if (parentItem) {\n                const grouped = this.isProccessedItemGroup(processedItem);\n\n                if (grouped) {\n                    this.onItemChange({ originalEvent: event, processedItem });\n                    this.focusedItemInfo = { index: -1, parentKey: processedItem.key };\n                    this.onArrowDownKey(event);\n                }\n            } else {\n                const itemIndex = this.focusedItemInfo.index !== -1 ? this.findNextItemIndex(this.focusedItemInfo.index) : this.findFirstFocusedItemIndex();\n\n                this.changeFocusedItemIndex(event, itemIndex);\n                event.preventDefault();\n            }\n        },\n        onHomeKey(event) {\n            this.changeFocusedItemIndex(event, this.findFirstItemIndex());\n            event.preventDefault();\n        },\n        onEndKey(event) {\n            this.changeFocusedItemIndex(event, this.findLastItemIndex());\n            event.preventDefault();\n        },\n        onEnterKey(event) {\n            if (this.focusedItemInfo.index !== -1) {\n                const element = findSingle(this.menubar, `li[id=\"${`${this.focusedItemId}`}\"]`);\n                const anchorElement = element && findSingle(element, 'a[data-pc-section=\"itemlink\"]');\n\n                anchorElement ? anchorElement.click() : element && element.click();\n\n                const processedItem = this.visibleItems[this.focusedItemInfo.index];\n                const grouped = this.isProccessedItemGroup(processedItem);\n\n                !grouped && (this.focusedItemInfo.index = this.findFirstFocusedItemIndex());\n            }\n\n            event.preventDefault();\n        },\n        onSpaceKey(event) {\n            this.onEnterKey(event);\n        },\n        onEscapeKey(event) {\n            if (this.focusedItemInfo.level !== 0) {\n                const _focusedItemInfo = this.focusedItemInfo;\n\n                this.hide(event, false);\n                this.focusedItemInfo = { index: Number(_focusedItemInfo.parentKey.split('_')[0]), level: 0, parentKey: '' };\n            }\n\n            event.preventDefault();\n        },\n        onTabKey(event) {\n            if (this.focusedItemInfo.index !== -1) {\n                const processedItem = this.visibleItems[this.focusedItemInfo.index];\n                const grouped = this.isProccessedItemGroup(processedItem);\n\n                !grouped && this.onItemChange({ originalEvent: event, processedItem });\n            }\n\n            this.hide();\n        },\n        bindOutsideClickListener() {\n            if (!this.outsideClickListener) {\n                this.outsideClickListener = (event) => {\n                    const isOutsideContainer = this.container && !this.container.contains(event.target);\n                    const isOutsideTarget = !(this.target && (this.target === event.target || this.target.contains(event.target)));\n\n                    if (isOutsideContainer && isOutsideTarget) {\n                        this.hide();\n                    }\n                };\n\n                document.addEventListener('click', this.outsideClickListener);\n            }\n        },\n        unbindOutsideClickListener() {\n            if (this.outsideClickListener) {\n                document.removeEventListener('click', this.outsideClickListener);\n                this.outsideClickListener = null;\n            }\n        },\n        bindResizeListener() {\n            if (!this.resizeListener) {\n                this.resizeListener = (event) => {\n                    if (!isTouchDevice()) {\n                        this.hide(event, true);\n                    }\n\n                    this.mobileActive = false;\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        bindMatchMediaListener() {\n            if (!this.matchMediaListener) {\n                const query = matchMedia(`(max-width: ${this.breakpoint})`);\n\n                this.query = query;\n                this.queryMatches = query.matches;\n\n                this.matchMediaListener = () => {\n                    this.queryMatches = query.matches;\n                    this.mobileActive = false;\n                };\n\n                this.query.addEventListener('change', this.matchMediaListener);\n            }\n        },\n        unbindMatchMediaListener() {\n            if (this.matchMediaListener) {\n                this.query.removeEventListener('change', this.matchMediaListener);\n                this.matchMediaListener = null;\n            }\n        },\n        isItemMatched(processedItem) {\n            return this.isValidItem(processedItem) && this.getProccessedItemLabel(processedItem)?.toLocaleLowerCase().startsWith(this.searchValue.toLocaleLowerCase());\n        },\n        isValidItem(processedItem) {\n            return !!processedItem && !this.isItemDisabled(processedItem.item) && !this.isItemSeparator(processedItem.item) && this.isItemVisible(processedItem.item);\n        },\n        isValidSelectedItem(processedItem) {\n            return this.isValidItem(processedItem) && this.isSelected(processedItem);\n        },\n        isSelected(processedItem) {\n            return this.activeItemPath.some((p) => p.key === processedItem.key);\n        },\n        findFirstItemIndex() {\n            return this.visibleItems.findIndex((processedItem) => this.isValidItem(processedItem));\n        },\n        findLastItemIndex() {\n            return findLastIndex(this.visibleItems, (processedItem) => this.isValidItem(processedItem));\n        },\n        findNextItemIndex(index) {\n            const matchedItemIndex = index < this.visibleItems.length - 1 ? this.visibleItems.slice(index + 1).findIndex((processedItem) => this.isValidItem(processedItem)) : -1;\n\n            return matchedItemIndex > -1 ? matchedItemIndex + index + 1 : index;\n        },\n        findPrevItemIndex(index) {\n            const matchedItemIndex = index > 0 ? findLastIndex(this.visibleItems.slice(0, index), (processedItem) => this.isValidItem(processedItem)) : -1;\n\n            return matchedItemIndex > -1 ? matchedItemIndex : index;\n        },\n        findSelectedItemIndex() {\n            return this.visibleItems.findIndex((processedItem) => this.isValidSelectedItem(processedItem));\n        },\n        findFirstFocusedItemIndex() {\n            const selectedIndex = this.findSelectedItemIndex();\n\n            return selectedIndex < 0 ? this.findFirstItemIndex() : selectedIndex;\n        },\n        findLastFocusedItemIndex() {\n            const selectedIndex = this.findSelectedItemIndex();\n\n            return selectedIndex < 0 ? this.findLastItemIndex() : selectedIndex;\n        },\n        searchItems(event, char) {\n            this.searchValue = (this.searchValue || '') + char;\n\n            let itemIndex = -1;\n            let matched = false;\n\n            if (this.focusedItemInfo.index !== -1) {\n                itemIndex = this.visibleItems.slice(this.focusedItemInfo.index).findIndex((processedItem) => this.isItemMatched(processedItem));\n                itemIndex = itemIndex === -1 ? this.visibleItems.slice(0, this.focusedItemInfo.index).findIndex((processedItem) => this.isItemMatched(processedItem)) : itemIndex + this.focusedItemInfo.index;\n            } else {\n                itemIndex = this.visibleItems.findIndex((processedItem) => this.isItemMatched(processedItem));\n            }\n\n            if (itemIndex !== -1) {\n                matched = true;\n            }\n\n            if (itemIndex === -1 && this.focusedItemInfo.index === -1) {\n                itemIndex = this.findFirstFocusedItemIndex();\n            }\n\n            if (itemIndex !== -1) {\n                this.changeFocusedItemIndex(event, itemIndex);\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        changeFocusedItemIndex(event, index) {\n            if (this.focusedItemInfo.index !== index) {\n                this.focusedItemInfo.index = index;\n                this.scrollInView();\n            }\n        },\n        scrollInView(index = -1) {\n            const id = index !== -1 ? `${this.id}_${index}` : this.focusedItemId;\n            const element = findSingle(this.menubar, `li[id=\"${id}\"]`);\n\n            if (element) {\n                element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'start' });\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        containerRef(el) {\n            this.container = el;\n        },\n        menubarRef(el) {\n            this.menubar = el ? el.$el : undefined;\n        }\n    },\n    computed: {\n        processedItems() {\n            return this.createProcessedItems(this.model || []);\n        },\n        visibleItems() {\n            const processedItem = this.activeItemPath.find((p) => p.key === this.focusedItemInfo.parentKey);\n\n            return processedItem ? processedItem.items : this.processedItems;\n        },\n        focusedItemId() {\n            return this.focusedItemInfo.index !== -1 ? `${this.id}${isNotEmpty(this.focusedItemInfo.parentKey) ? '_' + this.focusedItemInfo.parentKey : ''}_${this.focusedItemInfo.index}` : null;\n        }\n    },\n    components: {\n        MenubarSub: MenubarSub,\n        BarsIcon: BarsIcon\n    }\n};\n</script>\n"],"names":["name","BaseComponent","props","model","type","Array","buttonProps","breakpoint","String","ariaLabelledby","ariaLabel","style","MenubarStyle","provide","$pcMenubar","$parentInstance","hostName","emits","items","root","Boolean","popup","mobileActive","templates","Object","level","Number","menuId","focusedItemId","activeItemPath","list","methods","getItemId","processedItem","concat","key","getItemKey","getItemProp","params","item","resolve","undefined","getItemLabel","getItemLabelId","getPTOptions","index","ptm","context","active","isItemActive","focused","isItemFocused","disabled","isItemDisabled","some","path","isItemVisible","isItemGroup","isNotEmpty","onItemClick","event","originalEvent","$emit","isFocus","onItemMouseEnter","onItemMouseMove","getAriaPosInset","calculateAriaSetSize","slice","length","getMenuItemProps","action","mergeProps","cx","tabindex","icon","label","submenuicon","computed","_this","filter","getAriaSetSize","_this2","components","AngleRightIcon","AngleDownIcon","directives","ripple","Ripple","_openBlock","_createElementBlock","_mergeProps","$props","_ctx","_Fragment","_renderList","$options","id","role","_createElementVNode","onClick","$event","onMouseenter","onMousemove","_withDirectives","href","target","itemicon","_createBlock","_resolveDynamicComponent","_toDisplayString","_hoisted_4","hasSubmenu","_component_MenubarSub","_normalizeStyle","sx","pt","unstyled","_cache","onItemMouseenter","onItemMousemove","_hoisted_5","BaseMenubar","inheritAttrs","matchMediaListener","data","$attrs","focusedItemInfo","parentKey","dirty","query","queryMatches","watch","$attrsId","newValue","UniqueComponentId","newPath","bindOutsideClickListener","bindResizeListener","unbindOutsideClickListener","unbindResizeListener","outsideClickListener","container","menubar","mounted","bindMatchMediaListener","beforeUnmount","unbindMatchMediaListener","ZIndex","clear","isItemSeparator","getProccessedItemLabel","isProccessedItemGroup","toggle","hide","set","$primevue","config","zIndex","menu","setTimeout","show","preventDefault","focus","$refs","menubutton","onFocus","findFirstFocusedItemIndex","onBlur","searchValue","onKeyDown","metaKey","ctrlKey","code","onArrowDownKey","onArrowUpKey","onArrowLeftKey","onArrowRightKey","onHomeKey","onEndKey","onSpaceKey","onEnterKey","onEscapeKey","onTabKey","isPrintableCharacter","searchItems","onItemChange","isEmpty","grouped","p","push","parent","selected","isSelected","startsWith","rootProcessedItem","find","changeFocusedItemIndex","menuButtonClick","menuButtonKeydown","visibleItems","itemIndex","findNextItemIndex","_this3","findLastItemIndex","parentItem","findPrevItemIndex","findLastFocusedItemIndex","_this4","findFirstItemIndex","element","findSingle","anchorElement","click","_focusedItemInfo","split","_this5","isOutsideContainer","contains","isOutsideTarget","document","addEventListener","removeEventListener","_this6","resizeListener","isTouchDevice","window","_this7","matchMedia","matches","isItemMatched","_this$getProccessedIt","isValidItem","toLocaleLowerCase","isValidSelectedItem","_this8","findIndex","_this9","findLastIndex","_this10","matchedItemIndex","_this11","findSelectedItemIndex","_this12","selectedIndex","char","_this13","matched","searchTimeout","clearTimeout","scrollInView","scrollIntoView","block","inline","createProcessedItems","_this14","arguments","processedItems","forEach","newItem","containerRef","el","menubarRef","$el","_this15","MenubarSub","BarsIcon","ref","ptmi","$slots","start","_renderSlot","button","$data","toggleCallback","_ctx$$primevue$config","locale","aria","navigation","onKeydown","_objectSpread","buttonicon","_createVNode","_component_BarsIcon","end"],"mappings":"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"}