{"version":3,"file":"index.mjs","sources":["../../src/contextmenu/BaseContextMenu.vue","../../src/contextmenu/ContextMenuSub.vue","../../src/contextmenu/ContextMenuSub.vue?vue&type=template&id=165dc403&lang.js","../../src/contextmenu/ContextMenu.vue","../../src/contextmenu/ContextMenu.vue?vue&type=template&id=4a6afd56&lang.js"],"sourcesContent":["<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport ContextMenuStyle from 'primevue/contextmenu/style';\n\nexport default {\n    name: 'BaseContextMenu',\n    extends: BaseComponent,\n    props: {\n        model: {\n            type: Array,\n            default: null\n        },\n        appendTo: {\n            type: [String, Object],\n            default: 'body'\n        },\n        autoZIndex: {\n            type: Boolean,\n            default: true\n        },\n        baseZIndex: {\n            type: Number,\n            default: 0\n        },\n        global: {\n            type: Boolean,\n            default: false\n        },\n        tabindex: {\n            type: Number,\n            default: 0\n        },\n        ariaLabelledby: {\n            type: String,\n            default: null\n        },\n        ariaLabel: {\n            type: String,\n            default: null\n        }\n    },\n    style: ContextMenuStyle,\n    provide() {\n        return {\n            $pcContextMenu: this,\n            $parentInstance: this\n        };\n    }\n};\n</script>\n","<template>\n    <transition name=\"p-contextmenusub\" @enter=\"onEnter\" v-bind=\"ptm('menu.transition')\">\n        <ul v-if=\"root ? true : visible\" ref=\"container\" :tabindex=\"tabindex\" v-bind=\"ptm('rootList')\">\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('item', processedItem, index)\"\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('itemContent', processedItem, index)\"\n                    >\n                        <template v-if=\"!templates.item\">\n                            <a v-ripple :href=\"getItemProp(processedItem, 'url')\" :class=\"cx('itemLink')\" :target=\"getItemProp(processedItem, 'target')\" tabindex=\"-1\" aria-hidden=\"true\" v-bind=\"getPTOptions('itemLink', processedItem, index)\">\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 :id=\"getItemLabelId(processedItem)\" :class=\"cx('itemLabel')\" v-bind=\"getPTOptions('itemLabel', processedItem, index)\">{{ getItemLabel(processedItem) }}</span>\n                                <template v-if=\"getItemProp(processedItem, 'items')\">\n                                    <component v-if=\"templates.submenuicon\" :is=\"templates.submenuicon\" :active=\"isItemActive(processedItem)\" :class=\"cx('submenuIcon')\" />\n                                    <AngleRightIcon v-else :class=\"cx('submenuIcon')\" v-bind=\"getPTOptions('submenuicon', processedItem, index)\" />\n                                </template>\n                            </a>\n                        </template>\n                        <component v-else :is=\"templates.item\" :item=\"processedItem.item\" :hasSubmenu=\"getItemProp(processedItem, 'items')\" :label=\"getItemLabel(processedItem)\" :props=\"getMenuItemProps(processedItem, index)\"></component>\n                    </div>\n                    <ContextMenuSub\n                        v-if=\"isItemVisible(processedItem) && isItemGroup(processedItem)\"\n                        :id=\"getItemId(processedItem) + '_list'\"\n                        role=\"menu\"\n                        :class=\"cx('submenu')\"\n                        :menuId=\"menuId\"\n                        :focusedItemId=\"focusedItemId\"\n                        :items=\"processedItem.items\"\n                        :templates=\"templates\"\n                        :activeItemPath=\"activeItemPath\"\n                        :level=\"level + 1\"\n                        :visible=\"isItemActive(processedItem) && isItemGroup(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                        :aria-labelledby=\"getItemLabelId(processedItem)\"\n                        v-bind=\"ptm('submenu')\"\n                    />\n                </li>\n                <li\n                    v-if=\"isItemVisible(processedItem) && getItemProp(processedItem, 'separator')\"\n                    :id=\"getItemId(processedItem)\"\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    </transition>\n</template>\n\n<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport { nestedPosition } from '@primeuix/utils/dom';\nimport { resolve, isNotEmpty } from '@primeuix/utils/object';\nimport AngleRightIcon from '@primevue/icons/angleright';\nimport Ripple from 'primevue/ripple';\nimport { mergeProps } from 'vue';\n\nexport default {\n    name: 'ContextMenuSub',\n    hostName: 'ContextMenu',\n    extends: BaseComponent,\n    emits: ['item-click', 'item-mouseenter', 'item-mousemove'],\n    props: {\n        items: {\n            type: Array,\n            default: null\n        },\n        menuId: {\n            type: String,\n            default: null\n        },\n        focusedItemId: {\n            type: String,\n            default: null\n        },\n        root: {\n            type: Boolean,\n            default: false\n        },\n        visible: {\n            type: Boolean,\n            default: false\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: 0\n        }\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(key, processedItem, index) {\n            return this.ptm(key, {\n                context: {\n                    item: processedItem,\n                    active: this.isItemActive(processedItem),\n                    focused: this.isItemFocused(processedItem),\n                    disabled: this.isItemDisabled(processedItem),\n                    index\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, isFocus: true });\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        onEnter() {\n            nestedPosition(this.$refs.container, this.level);\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\n    components: {\n        AngleRightIcon: AngleRightIcon\n    },\n    directives: {\n        ripple: Ripple\n    }\n};\n</script>\n","<template>\n    <transition name=\"p-contextmenusub\" @enter=\"onEnter\" v-bind=\"ptm('menu.transition')\">\n        <ul v-if=\"root ? true : visible\" ref=\"container\" :tabindex=\"tabindex\" v-bind=\"ptm('rootList')\">\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('item', processedItem, index)\"\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('itemContent', processedItem, index)\"\n                    >\n                        <template v-if=\"!templates.item\">\n                            <a v-ripple :href=\"getItemProp(processedItem, 'url')\" :class=\"cx('itemLink')\" :target=\"getItemProp(processedItem, 'target')\" tabindex=\"-1\" aria-hidden=\"true\" v-bind=\"getPTOptions('itemLink', processedItem, index)\">\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 :id=\"getItemLabelId(processedItem)\" :class=\"cx('itemLabel')\" v-bind=\"getPTOptions('itemLabel', processedItem, index)\">{{ getItemLabel(processedItem) }}</span>\n                                <template v-if=\"getItemProp(processedItem, 'items')\">\n                                    <component v-if=\"templates.submenuicon\" :is=\"templates.submenuicon\" :active=\"isItemActive(processedItem)\" :class=\"cx('submenuIcon')\" />\n                                    <AngleRightIcon v-else :class=\"cx('submenuIcon')\" v-bind=\"getPTOptions('submenuicon', processedItem, index)\" />\n                                </template>\n                            </a>\n                        </template>\n                        <component v-else :is=\"templates.item\" :item=\"processedItem.item\" :hasSubmenu=\"getItemProp(processedItem, 'items')\" :label=\"getItemLabel(processedItem)\" :props=\"getMenuItemProps(processedItem, index)\"></component>\n                    </div>\n                    <ContextMenuSub\n                        v-if=\"isItemVisible(processedItem) && isItemGroup(processedItem)\"\n                        :id=\"getItemId(processedItem) + '_list'\"\n                        role=\"menu\"\n                        :class=\"cx('submenu')\"\n                        :menuId=\"menuId\"\n                        :focusedItemId=\"focusedItemId\"\n                        :items=\"processedItem.items\"\n                        :templates=\"templates\"\n                        :activeItemPath=\"activeItemPath\"\n                        :level=\"level + 1\"\n                        :visible=\"isItemActive(processedItem) && isItemGroup(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                        :aria-labelledby=\"getItemLabelId(processedItem)\"\n                        v-bind=\"ptm('submenu')\"\n                    />\n                </li>\n                <li\n                    v-if=\"isItemVisible(processedItem) && getItemProp(processedItem, 'separator')\"\n                    :id=\"getItemId(processedItem)\"\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    </transition>\n</template>\n\n<script>\nimport BaseComponent from '@primevue/core/basecomponent';\nimport { nestedPosition } from '@primeuix/utils/dom';\nimport { resolve, isNotEmpty } from '@primeuix/utils/object';\nimport AngleRightIcon from '@primevue/icons/angleright';\nimport Ripple from 'primevue/ripple';\nimport { mergeProps } from 'vue';\n\nexport default {\n    name: 'ContextMenuSub',\n    hostName: 'ContextMenu',\n    extends: BaseComponent,\n    emits: ['item-click', 'item-mouseenter', 'item-mousemove'],\n    props: {\n        items: {\n            type: Array,\n            default: null\n        },\n        menuId: {\n            type: String,\n            default: null\n        },\n        focusedItemId: {\n            type: String,\n            default: null\n        },\n        root: {\n            type: Boolean,\n            default: false\n        },\n        visible: {\n            type: Boolean,\n            default: false\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: 0\n        }\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(key, processedItem, index) {\n            return this.ptm(key, {\n                context: {\n                    item: processedItem,\n                    active: this.isItemActive(processedItem),\n                    focused: this.isItemFocused(processedItem),\n                    disabled: this.isItemDisabled(processedItem),\n                    index\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, isFocus: true });\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        onEnter() {\n            nestedPosition(this.$refs.container, this.level);\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\n    components: {\n        AngleRightIcon: AngleRightIcon\n    },\n    directives: {\n        ripple: Ripple\n    }\n};\n</script>\n","<template>\n    <Portal :appendTo=\"appendTo\">\n        <transition name=\"p-contextmenu\" @enter=\"onEnter\" @after-enter=\"onAfterEnter\" @leave=\"onLeave\" @after-leave=\"onAfterLeave\" v-bind=\"ptm('transition')\">\n            <div v-if=\"visible\" :ref=\"containerRef\" :class=\"cx('root')\" v-bind=\"ptmi('root')\">\n                <ContextMenuSub\n                    :ref=\"listRef\"\n                    :id=\"id + '_list'\"\n                    :class=\"cx('rootList')\"\n                    role=\"menubar\"\n                    :root=\"true\"\n                    :tabindex=\"tabindex\"\n                    aria-orientation=\"vertical\"\n                    :aria-activedescendant=\"focused ? focusedItemIdx : undefined\"\n                    :menuId=\"id\"\n                    :focusedItemId=\"focused ? focusedItemIdx : undefined\"\n                    :items=\"processedItems\"\n                    :templates=\"$slots\"\n                    :activeItemPath=\"activeItemPath\"\n                    :aria-labelledby=\"ariaLabelledby\"\n                    :aria-label=\"ariaLabel\"\n                    :level=\"0\"\n                    :visible=\"submenuVisible\"\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>\n        </transition>\n    </Portal>\n</template>\n\n<script>\nimport { UniqueComponentId } from '@primevue/core/utils';\nimport { focus, findSingle, addStyle, getHiddenElementOuterWidth, getHiddenElementOuterHeight, getViewport, isTouchDevice } from '@primeuix/utils/dom';\nimport { resolve, isNotEmpty, isPrintableCharacter, isEmpty, findLastIndex } from '@primeuix/utils/object';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport Portal from 'primevue/portal';\nimport BaseContextMenu from './BaseContextMenu.vue';\nimport ContextMenuSub from './ContextMenuSub.vue';\n\nexport default {\n    name: 'ContextMenu',\n    extends: BaseContextMenu,\n    inheritAttrs: false,\n    emits: ['focus', 'blur', 'show', 'hide', 'before-show', 'before-hide'],\n    target: null,\n    outsideClickListener: null,\n    resizeListener: null,\n    documentContextMenuListener: null,\n    pageX: null,\n    pageY: null,\n    container: null,\n    list: null,\n    data() {\n        return {\n            id: this.$attrs.id,\n            focused: false,\n            focusedItemInfo: { index: -1, level: 0, parentKey: '' },\n            activeItemPath: [],\n            visible: false,\n            submenuVisible: 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 if (!this.visible) {\n                this.unbindOutsideClickListener();\n                this.unbindResizeListener();\n            }\n        }\n    },\n    mounted() {\n        this.id = this.id || UniqueComponentId();\n\n        if (this.global) {\n            this.bindDocumentContextMenuListener();\n        }\n    },\n    beforeUnmount() {\n        this.unbindResizeListener();\n        this.unbindOutsideClickListener();\n        this.unbindDocumentContextMenuListener();\n\n        if (this.container && this.autoZIndex) {\n            ZIndex.clear(this.container);\n        }\n\n        this.target = null;\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            this.visible ? this.hide() : this.show(event);\n        },\n        show(event) {\n            this.$emit('before-show');\n            this.activeItemPath = [];\n            this.focusedItemInfo = { index: -1, level: 0, parentKey: '' };\n            focus(this.list);\n\n            this.pageX = event.pageX;\n            this.pageY = event.pageY;\n            this.visible ? this.position() : (this.visible = true);\n\n            event.stopPropagation();\n            event.preventDefault();\n        },\n        hide() {\n            this.$emit('before-hide');\n            this.visible = false;\n            this.activeItemPath = [];\n            this.focusedItemInfo = { index: -1, level: 0, parentKey: '' };\n        },\n        onFocus(event) {\n            this.focused = true;\n            this.focusedItemInfo = this.focusedItemInfo.index !== -1 ? this.focusedItemInfo : { index: -1, level: 0, parentKey: '' };\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.$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            if (grouped) {\n                activeItemPath.push(processedItem);\n                this.submenuVisible = true;\n            }\n\n            this.focusedItemInfo = { index, level, parentKey };\n            this.activeItemPath = activeItemPath;\n\n            isFocus && focus(this.list);\n        },\n        onItemClick(event) {\n            const { processedItem } = event;\n            const grouped = this.isProccessedItemGroup(processedItem);\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                focus(this.list);\n            } else {\n                grouped ? this.onItemChange(event) : this.hide();\n            }\n        },\n        onItemMouseEnter(event) {\n            this.onItemChange(event);\n        },\n        onItemMouseMove(event) {\n            if (this.focused) {\n                this.changeFocusedItemIndex(event, event.processedItem.index);\n            }\n        },\n        onArrowDownKey(event) {\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        onArrowUpKey(event) {\n            if (event.altKey) {\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.popup && this.hide();\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        onArrowLeftKey(event) {\n            const processedItem = this.visibleItems[this.focusedItemInfo.index];\n            const parentItem = this.activeItemPath.find((p) => p.key === processedItem.parentKey);\n            const root = isEmpty(processedItem.parent);\n\n            if (!root) {\n                this.focusedItemInfo = { index: -1, parentKey: parentItem ? parentItem.parentKey : '' };\n                this.searchValue = '';\n                this.onArrowDownKey(event);\n            }\n\n            this.activeItemPath = this.activeItemPath.filter((p) => p.parentKey !== this.focusedItemInfo.parentKey);\n\n            event.preventDefault();\n        },\n        onArrowRightKey(event) {\n            const processedItem = this.visibleItems[this.focusedItemInfo.index];\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.searchValue = '';\n                this.onArrowDownKey(event);\n            }\n\n            event.preventDefault();\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.list, `li[id=\"${`${this.focusedItemIdx}`}\"]`);\n                const anchorElement = element && findSingle(element, '[data-pc-section=\"itemlink\"]');\n\n                anchorElement ? anchorElement.click() : element && element.click();\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            this.hide();\n            !this.popup && (this.focusedItemInfo.index = this.findFirstFocusedItemIndex());\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        onEnter(el) {\n            addStyle(el, { position: 'absolute' });\n            this.position();\n\n            if (this.autoZIndex) {\n                ZIndex.set('menu', el, this.baseZIndex + this.$primevue.config.zIndex.menu);\n            }\n        },\n        onAfterEnter() {\n            this.bindOutsideClickListener();\n            this.bindResizeListener();\n\n            this.$emit('show');\n            focus(this.list);\n        },\n        onLeave() {\n            this.$emit('hide');\n            this.container = null;\n        },\n        onAfterLeave(el) {\n            if (this.autoZIndex) {\n                ZIndex.clear(el);\n            }\n\n            this.unbindOutsideClickListener();\n            this.unbindResizeListener();\n        },\n        position() {\n            let left = this.pageX + 1;\n            let top = this.pageY + 1;\n            let width = this.container.offsetParent ? this.container.offsetWidth : getHiddenElementOuterWidth(this.container);\n            let height = this.container.offsetParent ? this.container.offsetHeight : getHiddenElementOuterHeight(this.container);\n            let viewport = getViewport();\n\n            //flip\n            if (left + width - document.body.scrollLeft > viewport.width) {\n                left -= width;\n            }\n\n            //flip\n            if (top + height - document.body.scrollTop > viewport.height) {\n                top -= height;\n            }\n\n            //fit\n            if (left < document.body.scrollLeft) {\n                left = document.body.scrollLeft;\n            }\n\n            //fit\n            if (top < document.body.scrollTop) {\n                top = document.body.scrollTop;\n            }\n\n            this.container.style.left = left + 'px';\n            this.container.style.top = top + 'px';\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.visible ? !(this.target && (this.target === event.target || this.target.contains(event.target))) : true;\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 = () => {\n                    if (this.visible && !isTouchDevice()) {\n                        this.hide();\n                    }\n                };\n\n                window.addEventListener('resize', this.resizeListener);\n            }\n        },\n        unbindResizeListener() {\n            if (this.resizeListener) {\n                window.removeEventListener('resize', this.resizeListener);\n                this.resizeListener = null;\n            }\n        },\n        bindDocumentContextMenuListener() {\n            if (!this.documentContextMenuListener) {\n                this.documentContextMenuListener = (event) => {\n                    event.button === 2 && this.show(event);\n                };\n\n                document.addEventListener('contextmenu', this.documentContextMenuListener);\n            }\n        },\n        unbindDocumentContextMenuListener() {\n            if (this.documentContextMenuListener) {\n                document.removeEventListener('contextmenu', this.documentContextMenuListener);\n                this.documentContextMenuListener = 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.focusedItemIdx;\n            const element = findSingle(this.list, `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        listRef(el) {\n            this.list = 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        focusedItemIdx() {\n            return this.focusedItemInfo.index !== -1 ? `${this.id}${isNotEmpty(this.focusedItemInfo.parentKey) ? '_' + this.focusedItemInfo.parentKey : ''}_${this.focusedItemInfo.index}` : null;\n        }\n    },\n    components: {\n        ContextMenuSub,\n        Portal\n    }\n};\n</script>\n","<template>\n    <Portal :appendTo=\"appendTo\">\n        <transition name=\"p-contextmenu\" @enter=\"onEnter\" @after-enter=\"onAfterEnter\" @leave=\"onLeave\" @after-leave=\"onAfterLeave\" v-bind=\"ptm('transition')\">\n            <div v-if=\"visible\" :ref=\"containerRef\" :class=\"cx('root')\" v-bind=\"ptmi('root')\">\n                <ContextMenuSub\n                    :ref=\"listRef\"\n                    :id=\"id + '_list'\"\n                    :class=\"cx('rootList')\"\n                    role=\"menubar\"\n                    :root=\"true\"\n                    :tabindex=\"tabindex\"\n                    aria-orientation=\"vertical\"\n                    :aria-activedescendant=\"focused ? focusedItemIdx : undefined\"\n                    :menuId=\"id\"\n                    :focusedItemId=\"focused ? focusedItemIdx : undefined\"\n                    :items=\"processedItems\"\n                    :templates=\"$slots\"\n                    :activeItemPath=\"activeItemPath\"\n                    :aria-labelledby=\"ariaLabelledby\"\n                    :aria-label=\"ariaLabel\"\n                    :level=\"0\"\n                    :visible=\"submenuVisible\"\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>\n        </transition>\n    </Portal>\n</template>\n\n<script>\nimport { UniqueComponentId } from '@primevue/core/utils';\nimport { focus, findSingle, addStyle, getHiddenElementOuterWidth, getHiddenElementOuterHeight, getViewport, isTouchDevice } from '@primeuix/utils/dom';\nimport { resolve, isNotEmpty, isPrintableCharacter, isEmpty, findLastIndex } from '@primeuix/utils/object';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport Portal from 'primevue/portal';\nimport BaseContextMenu from './BaseContextMenu.vue';\nimport ContextMenuSub from './ContextMenuSub.vue';\n\nexport default {\n    name: 'ContextMenu',\n    extends: BaseContextMenu,\n    inheritAttrs: false,\n    emits: ['focus', 'blur', 'show', 'hide', 'before-show', 'before-hide'],\n    target: null,\n    outsideClickListener: null,\n    resizeListener: null,\n    documentContextMenuListener: null,\n    pageX: null,\n    pageY: null,\n    container: null,\n    list: null,\n    data() {\n        return {\n            id: this.$attrs.id,\n            focused: false,\n            focusedItemInfo: { index: -1, level: 0, parentKey: '' },\n            activeItemPath: [],\n            visible: false,\n            submenuVisible: 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 if (!this.visible) {\n                this.unbindOutsideClickListener();\n                this.unbindResizeListener();\n            }\n        }\n    },\n    mounted() {\n        this.id = this.id || UniqueComponentId();\n\n        if (this.global) {\n            this.bindDocumentContextMenuListener();\n        }\n    },\n    beforeUnmount() {\n        this.unbindResizeListener();\n        this.unbindOutsideClickListener();\n        this.unbindDocumentContextMenuListener();\n\n        if (this.container && this.autoZIndex) {\n            ZIndex.clear(this.container);\n        }\n\n        this.target = null;\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            this.visible ? this.hide() : this.show(event);\n        },\n        show(event) {\n            this.$emit('before-show');\n            this.activeItemPath = [];\n            this.focusedItemInfo = { index: -1, level: 0, parentKey: '' };\n            focus(this.list);\n\n            this.pageX = event.pageX;\n            this.pageY = event.pageY;\n            this.visible ? this.position() : (this.visible = true);\n\n            event.stopPropagation();\n            event.preventDefault();\n        },\n        hide() {\n            this.$emit('before-hide');\n            this.visible = false;\n            this.activeItemPath = [];\n            this.focusedItemInfo = { index: -1, level: 0, parentKey: '' };\n        },\n        onFocus(event) {\n            this.focused = true;\n            this.focusedItemInfo = this.focusedItemInfo.index !== -1 ? this.focusedItemInfo : { index: -1, level: 0, parentKey: '' };\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.$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            if (grouped) {\n                activeItemPath.push(processedItem);\n                this.submenuVisible = true;\n            }\n\n            this.focusedItemInfo = { index, level, parentKey };\n            this.activeItemPath = activeItemPath;\n\n            isFocus && focus(this.list);\n        },\n        onItemClick(event) {\n            const { processedItem } = event;\n            const grouped = this.isProccessedItemGroup(processedItem);\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                focus(this.list);\n            } else {\n                grouped ? this.onItemChange(event) : this.hide();\n            }\n        },\n        onItemMouseEnter(event) {\n            this.onItemChange(event);\n        },\n        onItemMouseMove(event) {\n            if (this.focused) {\n                this.changeFocusedItemIndex(event, event.processedItem.index);\n            }\n        },\n        onArrowDownKey(event) {\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        onArrowUpKey(event) {\n            if (event.altKey) {\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.popup && this.hide();\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        onArrowLeftKey(event) {\n            const processedItem = this.visibleItems[this.focusedItemInfo.index];\n            const parentItem = this.activeItemPath.find((p) => p.key === processedItem.parentKey);\n            const root = isEmpty(processedItem.parent);\n\n            if (!root) {\n                this.focusedItemInfo = { index: -1, parentKey: parentItem ? parentItem.parentKey : '' };\n                this.searchValue = '';\n                this.onArrowDownKey(event);\n            }\n\n            this.activeItemPath = this.activeItemPath.filter((p) => p.parentKey !== this.focusedItemInfo.parentKey);\n\n            event.preventDefault();\n        },\n        onArrowRightKey(event) {\n            const processedItem = this.visibleItems[this.focusedItemInfo.index];\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.searchValue = '';\n                this.onArrowDownKey(event);\n            }\n\n            event.preventDefault();\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.list, `li[id=\"${`${this.focusedItemIdx}`}\"]`);\n                const anchorElement = element && findSingle(element, '[data-pc-section=\"itemlink\"]');\n\n                anchorElement ? anchorElement.click() : element && element.click();\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            this.hide();\n            !this.popup && (this.focusedItemInfo.index = this.findFirstFocusedItemIndex());\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        onEnter(el) {\n            addStyle(el, { position: 'absolute' });\n            this.position();\n\n            if (this.autoZIndex) {\n                ZIndex.set('menu', el, this.baseZIndex + this.$primevue.config.zIndex.menu);\n            }\n        },\n        onAfterEnter() {\n            this.bindOutsideClickListener();\n            this.bindResizeListener();\n\n            this.$emit('show');\n            focus(this.list);\n        },\n        onLeave() {\n            this.$emit('hide');\n            this.container = null;\n        },\n        onAfterLeave(el) {\n            if (this.autoZIndex) {\n                ZIndex.clear(el);\n            }\n\n            this.unbindOutsideClickListener();\n            this.unbindResizeListener();\n        },\n        position() {\n            let left = this.pageX + 1;\n            let top = this.pageY + 1;\n            let width = this.container.offsetParent ? this.container.offsetWidth : getHiddenElementOuterWidth(this.container);\n            let height = this.container.offsetParent ? this.container.offsetHeight : getHiddenElementOuterHeight(this.container);\n            let viewport = getViewport();\n\n            //flip\n            if (left + width - document.body.scrollLeft > viewport.width) {\n                left -= width;\n            }\n\n            //flip\n            if (top + height - document.body.scrollTop > viewport.height) {\n                top -= height;\n            }\n\n            //fit\n            if (left < document.body.scrollLeft) {\n                left = document.body.scrollLeft;\n            }\n\n            //fit\n            if (top < document.body.scrollTop) {\n                top = document.body.scrollTop;\n            }\n\n            this.container.style.left = left + 'px';\n            this.container.style.top = top + 'px';\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.visible ? !(this.target && (this.target === event.target || this.target.contains(event.target))) : true;\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 = () => {\n                    if (this.visible && !isTouchDevice()) {\n                        this.hide();\n                    }\n                };\n\n                window.addEventListener('resize', this.resizeListener);\n            }\n        },\n        unbindResizeListener() {\n            if (this.resizeListener) {\n                window.removeEventListener('resize', this.resizeListener);\n                this.resizeListener = null;\n            }\n        },\n        bindDocumentContextMenuListener() {\n            if (!this.documentContextMenuListener) {\n                this.documentContextMenuListener = (event) => {\n                    event.button === 2 && this.show(event);\n                };\n\n                document.addEventListener('contextmenu', this.documentContextMenuListener);\n            }\n        },\n        unbindDocumentContextMenuListener() {\n            if (this.documentContextMenuListener) {\n                document.removeEventListener('contextmenu', this.documentContextMenuListener);\n                this.documentContextMenuListener = 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.focusedItemIdx;\n            const element = findSingle(this.list, `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        listRef(el) {\n            this.list = 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        focusedItemIdx() {\n            return this.focusedItemInfo.index !== -1 ? `${this.id}${isNotEmpty(this.focusedItemInfo.parentKey) ? '_' + this.focusedItemInfo.parentKey : ''}_${this.focusedItemInfo.index}` : null;\n        }\n    },\n    components: {\n        ContextMenuSub,\n        Portal\n    }\n};\n</script>\n"],"names":["name","BaseComponent","props","model","type","Array","appendTo","String","Object","autoZIndex","Boolean","baseZIndex","Number","global","tabindex","ariaLabelledby","ariaLabel","style","ContextMenuStyle","provide","$pcContextMenu","$parentInstance","hostName","emits","items","menuId","focusedItemId","root","visible","level","templates","activeItemPath","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","getAriaSetSize","_this","filter","length","getAriaPosInset","_this2","slice","onEnter","nestedPosition","$refs","container","getMenuItemProps","action","mergeProps","cx","icon","label","submenuicon","components","AngleRightIcon","directives","ripple","Ripple","_openBlock","_createBlock","_Transition","_mergeProps","$options","_ctx","$props","_createElementBlock","ref","_Fragment","_renderList","id","role","_createElementVNode","onClick","$event","onMouseenter","onMousemove","_withDirectives","href","target","itemicon","_resolveDynamicComponent","_toDisplayString","_hoisted_5","_component_AngleRightIcon","hasSubmenu","_component_ContextMenuSub","pt","unstyled","_cache","onItemMouseenter","onItemMousemove","_hoisted_6","BaseContextMenu","inheritAttrs","outsideClickListener","resizeListener","documentContextMenuListener","pageX","pageY","list","data","$attrs","focusedItemInfo","parentKey","submenuVisible","watch","$attrsId","newValue","UniqueComponentId","newPath","bindOutsideClickListener","bindResizeListener","unbindOutsideClickListener","unbindResizeListener","mounted","bindDocumentContextMenuListener","beforeUnmount","unbindDocumentContextMenuListener","ZIndex","clear","isItemSeparator","getProccessedItemLabel","isProccessedItemGroup","toggle","hide","show","focus","position","stopPropagation","preventDefault","onFocus","onBlur","searchValue","onKeyDown","metaKey","ctrlKey","code","onArrowDownKey","onArrowUpKey","onArrowLeftKey","onArrowRightKey","onHomeKey","onEndKey","onSpaceKey","onEnterKey","onEscapeKey","onTabKey","isPrintableCharacter","searchItems","onItemChange","isEmpty","grouped","p","push","selected","isSelected","startsWith","changeFocusedItemIndex","itemIndex","findNextItemIndex","findFirstFocusedItemIndex","altKey","visibleItems","popup","findPrevItemIndex","findLastFocusedItemIndex","parentItem","find","parent","findFirstItemIndex","findLastItemIndex","element","findSingle","focusedItemIdx","anchorElement","click","el","addStyle","set","$primevue","config","zIndex","menu","onAfterEnter","onLeave","onAfterLeave","left","top","width","offsetParent","offsetWidth","getHiddenElementOuterWidth","height","offsetHeight","getHiddenElementOuterHeight","viewport","getViewport","document","body","scrollLeft","scrollTop","isOutsideContainer","contains","isOutsideTarget","addEventListener","removeEventListener","_this3","isTouchDevice","window","_this4","button","isItemMatched","_this$getProccessedIt","isValidItem","toLocaleLowerCase","isValidSelectedItem","_this5","findIndex","_this6","findLastIndex","_this7","matchedItemIndex","_this8","findSelectedItemIndex","_this9","selectedIndex","char","_this10","matched","searchTimeout","clearTimeout","setTimeout","scrollInView","scrollIntoView","block","inline","createProcessedItems","_this11","arguments","processedItems","forEach","newItem","containerRef","listRef","$el","computed","_this12","ContextMenuSub","Portal","_component_Portal","_createVNode","$data","ptmi","$slots","onKeydown"],"mappings":"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"}