{"version":3,"file":"primeng-megamenu.mjs","sources":["../../src/megamenu/style/megamenustyle.ts","../../src/megamenu/megamenu-token.ts","../../src/megamenu/megamenu-sub.ts","../../src/megamenu/megamenu.ts","../../src/megamenu/primeng-megamenu.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { style } from '@primeuix/styles/megamenu';\nimport { BaseStyle } from 'primeng/base';\n\nconst inlineStyles = {\n    rootList: ({ instance }) => ({ 'max-height': instance.scrollHeight(), overflow: 'auto' })\n};\n\nconst classes = {\n    root: ({ instance }) => [\n        'p-megamenu p-component',\n        {\n            'p-megamenu-mobile': instance.queryMatches(),\n            'p-megamenu-mobile-active': instance.mobileActive(),\n            'p-megamenu-horizontal': instance.orientation() === 'horizontal',\n            'p-megamenu-vertical': instance.orientation() === 'vertical'\n        }\n    ],\n    start: 'p-megamenu-start',\n    button: 'p-megamenu-button',\n    rootList: 'p-megamenu-root-list',\n    submenuLabel: ({ instance, processedItem }) => [\n        'p-megamenu-submenu-label',\n        {\n            'p-disabled': instance.isItemDisabled(processedItem)\n        }\n    ],\n    item: ({ instance, processedItem }) => [\n        'p-megamenu-item',\n        instance.getItemProp(processedItem, 'styleClass'),\n        instance.getItemProp(processedItem, 'class'),\n        {\n            'p-megamenu-item-active': instance.isItemActive(processedItem),\n            'p-focus': instance.isItemFocused(processedItem),\n            'p-disabled': instance.isItemDisabled(processedItem)\n        }\n    ],\n    itemContent: 'p-megamenu-item-content',\n    itemLink: 'p-megamenu-item-link',\n    itemIcon: 'p-megamenu-item-icon',\n    itemLabel: 'p-megamenu-item-label',\n    submenuIcon: 'p-megamenu-submenu-icon',\n    overlay: 'p-megamenu-overlay',\n    grid: 'p-megamenu-grid',\n    column: ({ instance, processedItem }) => {\n        let length = instance.isItemGroup(processedItem) ? processedItem.items.length : 0;\n        let columnClass;\n\n        if (instance.megaMenu.queryMatches()) columnClass = 'p-megamenu-col-12';\n        else {\n            switch (length) {\n                case 2:\n                    columnClass = 'p-megamenu-col-6';\n                    break;\n\n                case 3:\n                    columnClass = 'p-megamenu-col-4';\n                    break;\n\n                case 4:\n                    columnClass = 'p-megamenu-col-3';\n                    break;\n\n                case 6:\n                    columnClass = 'p-megamenu-col-2';\n                    break;\n\n                default:\n                    columnClass = 'p-megamenu-col-12';\n                    break;\n            }\n        }\n\n        return columnClass;\n    },\n    submenu: 'p-megamenu-submenu',\n    separator: 'p-megamenu-separator',\n    end: 'p-megamenu-end'\n};\n\n@Injectable()\nexport class MegaMenuStyle extends BaseStyle {\n    name = 'megamenu';\n\n    style = style;\n\n    classes = classes;\n\n    inlineStyles = inlineStyles;\n}\n\n/**\n *\n * MegaMenu is navigation component that displays submenus together.\n *\n * [Live Demo](https://www.primeng.org/megamenu/)\n *\n * @module megamenustyle\n *\n */\n\nexport enum MegaMenuClasses {\n    /**\n     * Class name of the root element\n     */\n    root = 'p-megamenu',\n    /**\n     * Class name of the start element\n     */\n    start = 'p-megamenu-start',\n    /**\n     * Class name of the button element\n     */\n    button = 'p-megamenu-button',\n    /**\n     * Class name of the root list element\n     */\n    rootList = 'p-megamenu-root-list',\n    /**\n     * Class name of the submenu item element\n     */\n    submenuItem = 'p-megamenu-submenu-item',\n    /**\n     * Class name of the item element\n     */\n    item = 'p-megamenu-item',\n    /**\n     * Class name of the item content element\n     */\n    itemContent = 'p-megamenu-item-content',\n    /**\n     * Class name of the item link element\n     */\n    itemLink = 'p-megamenu-item-link',\n    /**\n     * Class name of the item icon element\n     */\n    itemIcon = 'p-megamenu-item-icon',\n    /**\n     * Class name of the item label element\n     */\n    itemLabel = 'p-megamenu-item-label',\n    /**\n     * Class name of the submenu icon element\n     */\n    submenuIcon = 'p-megamenu-submenu-icon',\n    /**\n     * Class name of the panel element\n     */\n    panel = 'p-megamenu-panel',\n    /**\n     * Class name of the grid element\n     */\n    grid = 'p-megamenu-grid',\n    /**\n     * Class name of the submenu element\n     */\n    submenu = 'p-megamenu-submenu',\n    /**\n     * Class name of the submenu item label element\n     */\n    submenuItemLabel = 'p-megamenu-submenu-item-label',\n    /**\n     * Class name of the separator element\n     */\n    separator = 'p-megamenu-separator',\n    /**\n     * Class name of the end element\n     */\n    end = 'p-megamenu-end'\n}\n\nexport interface MegaMenuStyle extends BaseStyle {}\n","import { InjectionToken } from '@angular/core';\n\nexport const MEGAMENU_INSTANCE = new InjectionToken<any>('MEGAMENU_INSTANCE');\nexport const MEGAMENU_SUB_INSTANCE = new InjectionToken<any>('MEGAMENU_SUB_INSTANCE');\n","import { NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, Component, computed, inject, input, numberAttribute, output, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { MotionOptions } from '@primeuix/motion';\nimport { isNotEmpty, resolve } from '@primeuix/utils';\nimport { MegaMenuItem, SharedModule } from 'primeng/api';\nimport { BadgeModule } from 'primeng/badge';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind } from 'primeng/bind';\nimport { AngleDown as AngleDownIcon } from '@primeicons/angular/angle-down';\nimport { AngleRight as AngleRightIcon } from '@primeicons/angular/angle-right';\nimport { MotionModule } from 'primeng/motion';\nimport { Ripple } from 'primeng/ripple';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { MegaMenuItemClickEvent, MegaMenuItemMouseEnterEvent, MegaMenuItemTemplateContext, MegaMenuOrientation, MegaMenuPassThrough, ProcessedMegaMenuItem } from 'primeng/types/megamenu';\nimport { MegaMenuStyle } from './style/megamenustyle';\nimport type { MegaMenu } from './megamenu';\nimport { MEGAMENU_INSTANCE, MEGAMENU_SUB_INSTANCE } from './megamenu-token';\n\n@Component({\n    selector: 'p-megamenu-sub, ul[pMegaMenuSub]',\n    standalone: true,\n    imports: [NgTemplateOutlet, RouterModule, Ripple, TooltipModule, AngleDownIcon, AngleRightIcon, BadgeModule, SharedModule, Bind, MotionModule],\n    template: `\n        @if (submenu()) {\n            <li [class]=\"cn(cx('submenuLabel'), getItemProp(submenu(), 'class'))\" [style]=\"getItemProp(submenu(), 'style')\" role=\"presentation\" [pBind]=\"ptm('submenuLabel')\">\n                {{ getItemLabel(submenu()) }}\n            </li>\n        }\n        @for (processedItem of items(); track processedItem.key; let index = $index) {\n            @if (isItemVisible(processedItem)) {\n                @if (isSeparator(processedItem)) {\n                    <li [attr.id]=\"getItemId(processedItem)\" [style]=\"getItemProp(processedItem, 'style')\" [class]=\"cn(cx('separator'), this.getItemProp(processedItem, 'class'))\" role=\"separator\" [pBind]=\"ptm('separator')\"></li>\n                } @else {\n                    <li\n                        #listItem\n                        role=\"menuitem\"\n                        [attr.id]=\"getItemId(processedItem)\"\n                        [attr.data-p-active]=\"isItemActive(processedItem)\"\n                        [attr.data-p-focused]=\"isItemFocused(processedItem)\"\n                        [attr.data-p-disabled]=\"isItemDisabled(processedItem)\"\n                        [attr.aria-label]=\"getItemLabel(processedItem)\"\n                        [attr.aria-disabled]=\"isItemDisabled(processedItem) || undefined\"\n                        [attr.aria-haspopup]=\"getAriaHasPopup(processedItem)\"\n                        [attr.aria-expanded]=\"getAriaExpanded(processedItem)\"\n                        [attr.aria-level]=\"level() + 1\"\n                        [attr.aria-setsize]=\"getAriaSetSize()\"\n                        [attr.aria-posinset]=\"getAriaPosInset(index)\"\n                        [style]=\"getItemProp(processedItem, 'style')\"\n                        [class]=\"cn(cx('item', { processedItem }), getItemProp(processedItem, 'styleClass'))\"\n                        pTooltip\n                        [tooltipOptions]=\"getItemProp(processedItem, 'tooltipOptions')\"\n                        [pBind]=\"getPTOptions(processedItem, index, 'item')\"\n                        [pTooltipUnstyled]=\"unstyled()\"\n                    >\n                        <div [class]=\"cx('itemContent')\" [pBind]=\"getPTOptions(processedItem, index, 'itemContent')\" (click)=\"onItemClick($event, processedItem)\" (mouseenter)=\"onItemMouseEnter({ $event, processedItem })\">\n                            @if (!itemTemplate()) {\n                                @if (!hasRouterLink(processedItem)) {\n                                    <a\n                                        [attr.href]=\"getItemProp(processedItem, 'url')\"\n                                        [attr.data-automationid]=\"getItemProp(processedItem, 'automationId')\"\n                                        [attr.title]=\"getItemProp(processedItem, 'title')\"\n                                        [target]=\"getItemProp(processedItem, 'target')\"\n                                        [class]=\"cn(cx('itemLink'), getItemProp(processedItem, 'linkClass'))\"\n                                        [style]=\"getItemProp(processedItem, 'linkStyle')\"\n                                        [attr.tabindex]=\"-1\"\n                                        [pBind]=\"getPTOptions(processedItem, index, 'itemLink')\"\n                                        pRipple\n                                    >\n                                        @if (hasIcon(processedItem)) {\n                                            <span\n                                                [class]=\"cn(cx('itemIcon'), getItemProp(processedItem, 'icon'), getItemProp(processedItem, 'iconClass'))\"\n                                                [style]=\"getItemProp(processedItem, 'iconStyle')\"\n                                                [attr.tabindex]=\"-1\"\n                                                [pBind]=\"getPTOptions(processedItem, index, 'itemIcon')\"\n                                            >\n                                            </span>\n                                        }\n                                        @if (shouldEscape(processedItem)) {\n                                            <span [class]=\"cn(cx('itemLabel'), getItemProp(processedItem, 'labelClass'))\" [style]=\"getItemProp(processedItem, 'labelStyle')\" [pBind]=\"getPTOptions(processedItem, index, 'itemLabel')\">\n                                                {{ getItemLabel(processedItem) }}\n                                            </span>\n                                        } @else {\n                                            <span\n                                                [class]=\"cn(cx('itemLabel'), getItemProp(processedItem, 'labelClass'))\"\n                                                [style]=\"getItemProp(processedItem, 'labelStyle')\"\n                                                [innerHTML]=\"getItemLabel(processedItem)\"\n                                                [pBind]=\"getPTOptions(processedItem, index, 'itemLabel')\"\n                                            ></span>\n                                        }\n                                        @if (hasBadge(processedItem)) {\n                                            <p-badge [class]=\"getItemProp(processedItem, 'badgeStyleClass')\" [value]=\"getItemProp(processedItem, 'badge')\" [unstyled]=\"unstyled()\" />\n                                        }\n                                        @if (isItemGroup(processedItem)) {\n                                            @if (!hasSubmenuIcon()) {\n                                                @if (isHorizontalOrMobile()) {\n                                                    <svg data-p-icon=\"angle-down\" [class]=\"cx('submenuIcon')\" [pBind]=\"getPTOptions(processedItem, index, 'submenuIcon')\" aria-hidden=\"true\" />\n                                                } @else {\n                                                    <svg data-p-icon=\"angle-right\" [class]=\"cx('submenuIcon')\" [pBind]=\"getPTOptions(processedItem, index, 'submenuIcon')\" aria-hidden=\"true\" />\n                                                }\n                                            }\n                                            <ng-container *ngTemplateOutlet=\"megaMenu.submenuiconTemplate()\" />\n                                        }\n                                    </a>\n                                } @else {\n                                    <a\n                                        [routerLink]=\"getItemProp(processedItem, 'routerLink')\"\n                                        [attr.data-automationid]=\"getItemProp(processedItem, 'automationId')\"\n                                        [attr.title]=\"getItemProp(processedItem, 'title')\"\n                                        [attr.tabindex]=\"-1\"\n                                        [queryParams]=\"getItemProp(processedItem, 'queryParams')\"\n                                        [routerLinkActive]=\"'p-megamenu-item-link-active'\"\n                                        [routerLinkActiveOptions]=\"getRouterLinkActiveOptions(processedItem)\"\n                                        [target]=\"getItemProp(processedItem, 'target')\"\n                                        [class]=\"cn(cx('itemLink'), getItemProp(processedItem, 'linkClass'))\"\n                                        [style]=\"getItemProp(processedItem, 'linkStyle')\"\n                                        [fragment]=\"getItemProp(processedItem, 'fragment')\"\n                                        [queryParamsHandling]=\"getItemProp(processedItem, 'queryParamsHandling')\"\n                                        [preserveFragment]=\"getItemProp(processedItem, 'preserveFragment')\"\n                                        [skipLocationChange]=\"getItemProp(processedItem, 'skipLocationChange')\"\n                                        [replaceUrl]=\"getItemProp(processedItem, 'replaceUrl')\"\n                                        [state]=\"getItemProp(processedItem, 'state')\"\n                                        [pBind]=\"getPTOptions(processedItem, index, 'itemLink')\"\n                                        pRipple\n                                    >\n                                        @if (hasIcon(processedItem)) {\n                                            <span\n                                                [class]=\"cn(cx('itemIcon'), getItemProp(processedItem, 'icon'), getItemProp(processedItem, 'iconClass'))\"\n                                                [style]=\"getItemProp(processedItem, 'iconStyle')\"\n                                                [attr.tabindex]=\"-1\"\n                                                [pBind]=\"getPTOptions(processedItem, index, 'itemIcon')\"\n                                            ></span>\n                                        }\n                                        @if (shouldEscape(processedItem)) {\n                                            <span [class]=\"cn(cx('itemLabel'), getItemProp(processedItem, 'labelClass'))\" [style]=\"getItemProp(processedItem, 'labelStyle')\" [pBind]=\"getPTOptions(processedItem, index, 'itemLabel')\">{{\n                                                getItemLabel(processedItem)\n                                            }}</span>\n                                        } @else {\n                                            <span\n                                                [class]=\"cn(cx('itemLabel'), getItemProp(processedItem, 'labelClass'))\"\n                                                [style]=\"getItemProp(processedItem, 'labelStyle')\"\n                                                [innerHTML]=\"getItemLabel(processedItem)\"\n                                                [pBind]=\"getPTOptions(processedItem, index, 'itemLabel')\"\n                                            ></span>\n                                        }\n                                        @if (hasBadge(processedItem)) {\n                                            <p-badge [class]=\"getItemProp(processedItem, 'badgeStyleClass')\" [value]=\"getItemProp(processedItem, 'badge')\" [unstyled]=\"unstyled()\" />\n                                        }\n                                        @if (isItemGroup(processedItem)) {\n                                            @if (!hasSubmenuIcon()) {\n                                                @if (isHorizontal()) {\n                                                    <svg data-p-icon=\"angle-down\" [class]=\"cx('submenuIcon')\" [pBind]=\"getPTOptions(processedItem, index, 'submenuIcon')\" aria-hidden=\"true\" />\n                                                } @else {\n                                                    <svg data-p-icon=\"angle-right\" [class]=\"cx('submenuIcon')\" [pBind]=\"getPTOptions(processedItem, index, 'submenuIcon')\" aria-hidden=\"true\" />\n                                                }\n                                            }\n                                            <ng-container *ngTemplateOutlet=\"megaMenu.submenuiconTemplate()\" />\n                                        }\n                                    </a>\n                                }\n                            } @else {\n                                <ng-container *ngTemplateOutlet=\"itemTemplate(); context: { $implicit: processedItem.item }\" />\n                            }\n                        </div>\n                        @if (isVisibleItemGroup(processedItem)) {\n                            <div [class]=\"cx('overlay')\" [pBind]=\"ptm('overlay')\" [pMotion]=\"isItemActive(processedItem)\" [pMotionName]=\"'p-anchored-overlay'\" [pMotionOptions]=\"motionOptions()\">\n                                <div [class]=\"cx('grid')\" [pBind]=\"ptm('grid')\">\n                                    @for (col of processedItem.items; track $index) {\n                                        <div [class]=\"cx('column', { processedItem })\" [pBind]=\"ptm('column')\">\n                                            @for (submenu of col; track submenu.key) {\n                                                <ul\n                                                    pMegaMenuSub\n                                                    [id]=\"getSubListId(submenu)\"\n                                                    [submenu]=\"submenu\"\n                                                    [items]=\"submenu.items\"\n                                                    [itemTemplate]=\"itemTemplate()\"\n                                                    [mobileActive]=\"mobileActive()\"\n                                                    [menuId]=\"menuId()\"\n                                                    [focusedItemId]=\"focusedItemId()\"\n                                                    [level]=\"level() + 1\"\n                                                    [root]=\"false\"\n                                                    [orientation]=\"orientation()\"\n                                                    [motionOptions]=\"motionOptions()\"\n                                                    (itemClick)=\"itemClick.emit($event)\"\n                                                    (itemMouseEnter)=\"onItemMouseEnter($event)\"\n                                                    [pt]=\"pt()\"\n                                                    [unstyled]=\"unstyled()\"\n                                                ></ul>\n                                            }\n                                        </div>\n                                    }\n                                </div>\n                            </div>\n                        }\n                    </li>\n                }\n            }\n        }\n    `,\n    encapsulation: ViewEncapsulation.None,\n    providers: [\n        { provide: MEGAMENU_SUB_INSTANCE, useExisting: MegaMenuSub },\n        { provide: PARENT_INSTANCE, useExisting: MegaMenuSub }\n    ],\n    host: {\n        '[class]': 'hostClass()',\n        '[style]': 'sx(\"rootList\")',\n        '[style.display]': 'hostDisplay()',\n        '[attr.role]': 'hostRole()',\n        '[attr.id]': 'id()',\n        '[attr.aria-orientation]': 'orientation()',\n        '[tabindex]': 'tabindex()',\n        '[attr.aria-activedescendant]': 'focusedItemId()',\n        '[attr.data-pc-section]': 'hostDataPcSection()',\n        '(keydown)': 'menuKeydown.emit($event)',\n        '(focus)': 'menuFocus.emit($event)',\n        '(blur)': 'menuBlur.emit($event)',\n        '(mousedown)': 'menuMouseDown.emit($event)'\n    },\n    hostDirectives: [Bind]\n})\nexport class MegaMenuSub extends BaseComponent<MegaMenuPassThrough> {\n    bindDirectiveInstance = inject(Bind, { self: true });\n\n    $pcMegaMenu: MegaMenu | undefined = inject(MEGAMENU_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n    $pcMegaMenuSub: MegaMenuSub | undefined = inject(MEGAMENU_SUB_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n    id = input<string>();\n\n    items = input<ProcessedMegaMenuItem[]>();\n\n    itemTemplate = input<TemplateRef<MegaMenuItemTemplateContext>>();\n\n    menuId = input<string>();\n\n    ariaLabel = input<string>();\n\n    ariaLabelledBy = input<string>();\n\n    level = input(0, { transform: numberAttribute });\n\n    focusedItemId = input<string>();\n\n    disabled = input(false, { transform: booleanAttribute });\n\n    orientation = input<MegaMenuOrientation>();\n\n    activeItem = input<ProcessedMegaMenuItem | null>();\n\n    submenu = input<ProcessedMegaMenuItem>();\n\n    motionOptions = input<MotionOptions>();\n\n    queryMatches = input(false, { transform: booleanAttribute });\n\n    mobileActive = input(false, { transform: booleanAttribute });\n\n    scrollHeight = input<string>();\n\n    tabindex = input(0, { transform: numberAttribute });\n\n    root = input(false, { transform: booleanAttribute });\n\n    itemClick = output<MegaMenuItemClickEvent>();\n\n    itemMouseEnter = output<MegaMenuItemMouseEnterEvent>();\n\n    menuFocus = output<FocusEvent>();\n\n    menuBlur = output<FocusEvent>();\n\n    menuKeydown = output<KeyboardEvent>();\n\n    menuMouseDown = output<MouseEvent>();\n\n    megaMenu = inject<MegaMenu>(MEGAMENU_INSTANCE);\n\n    _componentStyle = inject(MegaMenuStyle);\n\n    hostName = 'MegaMenu';\n\n    hostClass = computed(() => (this.root() ? this.cx('rootList') : this.cx('submenu')));\n\n    hostDisplay = computed(() => (this.root() ? undefined : this.isSubmenuVisible(this.submenu()) ? null : 'none'));\n\n    hostRole = computed(() => (this.root() ? 'menubar' : 'menu'));\n\n    hostDataPcSection = computed(() => (this.root() ? 'rootlist' : 'submenu'));\n\n    isHorizontalOrMobile = computed(() => this.orientation() === 'horizontal' || this.mobileActive());\n\n    isHorizontal = computed(() => this.orientation() === 'horizontal');\n\n    isSeparator(processedItem: ProcessedMegaMenuItem) {\n        return this.getItemProp(processedItem, 'separator');\n    }\n\n    hasRouterLink(processedItem: ProcessedMegaMenuItem) {\n        return this.getItemProp(processedItem, 'routerLink');\n    }\n\n    hasIcon(processedItem: ProcessedMegaMenuItem) {\n        return this.getItemProp(processedItem, 'icon');\n    }\n\n    shouldEscape(processedItem: ProcessedMegaMenuItem) {\n        return this.getItemProp(processedItem, 'escape');\n    }\n\n    hasBadge(processedItem: ProcessedMegaMenuItem) {\n        return this.getItemProp(processedItem, 'badge');\n    }\n\n    isVisibleItemGroup(processedItem: ProcessedMegaMenuItem) {\n        return this.isItemVisible(processedItem) && this.isItemGroup(processedItem);\n    }\n\n    getAriaHasPopup(processedItem: ProcessedMegaMenuItem) {\n        return this.isItemGroup(processedItem) && !this.getItemProp(processedItem, 'to') ? 'menu' : undefined;\n    }\n\n    getAriaExpanded(processedItem: ProcessedMegaMenuItem) {\n        return this.isItemGroup(processedItem) ? this.isItemActive(processedItem) : undefined;\n    }\n\n    getRouterLinkActiveOptions(processedItem: ProcessedMegaMenuItem) {\n        return this.getItemProp(processedItem, 'routerLinkActiveOptions') || { exact: false };\n    }\n\n    hasSubmenuIcon = computed(() => !!this.megaMenu.submenuiconTemplate());\n\n    onAfterViewChecked() {\n        this.bindDirectiveInstance.setAttrs(this.ptm(this.root() ? 'rootList' : 'submenu'));\n    }\n\n    onItemClick(event: Event, processedItem: ProcessedMegaMenuItem) {\n        this.getItemProp(processedItem, 'command', { originalEvent: event, item: processedItem.item });\n        this.itemClick.emit({ originalEvent: event, processedItem, isFocus: true });\n    }\n\n    getItemProp(processedItem: ProcessedMegaMenuItem | undefined, name: string, params: { originalEvent: Event; item: MegaMenuItem } | null = null): any {\n        return processedItem && processedItem.item ? resolve(processedItem.item[name], params) : undefined;\n    }\n\n    getItemId(processedItem: ProcessedMegaMenuItem): string {\n        return processedItem.item && processedItem.item?.id ? processedItem.item.id : `${this.menuId()}_${processedItem.key}`;\n    }\n\n    getSubListId(processedItem: ProcessedMegaMenuItem) {\n        return `${this.getItemId(processedItem)}_list`;\n    }\n\n    getItemLabel(processedItem: ProcessedMegaMenuItem | undefined): string {\n        return this.getItemProp(processedItem, 'label');\n    }\n\n    isSubmenuVisible(submenu: ProcessedMegaMenuItem | undefined) {\n        if (this.submenu() && !this.root()) {\n            return this.isItemVisible(submenu);\n        } else {\n            return true;\n        }\n    }\n\n    isItemVisible(processedItem: ProcessedMegaMenuItem | undefined): boolean {\n        return this.getItemProp(processedItem, 'visible') !== false;\n    }\n\n    isItemActive(processedItem: ProcessedMegaMenuItem) {\n        const activeItem = this.activeItem();\n        return isNotEmpty(activeItem) && activeItem ? activeItem.key === processedItem.key : false;\n    }\n\n    isItemDisabled(processedItem: ProcessedMegaMenuItem): boolean {\n        return this.getItemProp(processedItem, 'disabled');\n    }\n\n    isItemFocused(processedItem: ProcessedMegaMenuItem): boolean {\n        return this.focusedItemId() === this.getItemId(processedItem);\n    }\n\n    isItemGroup(processedItem: ProcessedMegaMenuItem): boolean {\n        return isNotEmpty(processedItem.items);\n    }\n\n    getAriaSetSize() {\n        return this.items()?.filter((processedItem) => this.isItemVisible(processedItem) && !this.getItemProp(processedItem, 'separator')).length;\n    }\n\n    getAriaPosInset(index: number) {\n        return (\n            index -\n            (this.items()\n                ?.slice(0, index)\n                .filter((processedItem) => this.isItemVisible(processedItem) && this.getItemProp(processedItem, 'separator')).length || 0) +\n            1\n        );\n    }\n\n    onItemMouseEnter(param: { $event: Event; processedItem: ProcessedMegaMenuItem }) {\n        const { $event, processedItem } = param;\n        this.itemMouseEnter.emit({ originalEvent: $event, processedItem });\n    }\n\n    getPTOptions(processedItem: ProcessedMegaMenuItem, index: number, key: string) {\n        const ptContext = {\n            context: {\n                item: processedItem.item,\n                index,\n                active: this.isItemActive(processedItem),\n                focused: this.isItemFocused(processedItem),\n                disabled: this.isItemDisabled(processedItem)\n            }\n        };\n\n        return this.ptm(key, ptContext);\n    }\n}\n","import { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, contentChild, effect, ElementRef, inject, input, NgModule, numberAttribute, signal, TemplateRef, viewChild, ViewEncapsulation } from '@angular/core';\nimport { MotionOptions } from '@primeuix/motion';\nimport { findLastIndex, findSingle, focus, isEmpty, isNotEmpty, isPrintableCharacter, isTouchDevice, resolve, uuid } from '@primeuix/utils';\nimport { MegaMenuItem, SharedModule } from 'primeng/api';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind } from 'primeng/bind';\nimport { Bars as BarsIcon } from '@primeicons/angular/bars';\nimport { MotionModule } from 'primeng/motion';\nimport { VoidListener } from 'primeng/ts-helpers';\nimport { MegaMenuFocusedItemInfo, MegaMenuItemClickEvent, MegaMenuItemMouseEnterEvent, MegaMenuItemTemplateContext, MegaMenuOrientation, MegaMenuPassThrough, ProcessedMegaMenuItem } from 'primeng/types/megamenu';\nimport { ZIndexUtils } from 'primeng/utils';\nimport { MegaMenuSub } from './megamenu-sub';\nimport { MEGAMENU_INSTANCE } from './megamenu-token';\nimport { MegaMenuStyle } from './style/megamenustyle';\n\n/**\n * MegaMenu is navigation component that displays submenus together.\n * @group Components\n */\n@Component({\n    selector: 'p-megamenu, p-mega-menu',\n    standalone: true,\n    imports: [NgTemplateOutlet, MegaMenuSub, BarsIcon, SharedModule, Bind, MotionModule],\n    template: `\n        @if (startTemplate()) {\n            <div [class]=\"cx('start')\" [pBind]=\"ptm('start')\">\n                <ng-container *ngTemplateOutlet=\"startTemplate()\" />\n            </div>\n        }\n        @if (!buttonTemplate()) {\n            @if (model()?.length) {\n                <a\n                    #menubutton\n                    role=\"button\"\n                    tabindex=\"0\"\n                    [class]=\"cx('button')\"\n                    [attr.aria-haspopup]=\"true\"\n                    [attr.aria-expanded]=\"mobileActive()\"\n                    [attr.aria-controls]=\"$id()\"\n                    [attr.aria-label]=\"navigationAriaLabel\"\n                    [pBind]=\"ptm('button')\"\n                    (click)=\"menuButtonClick($event)\"\n                    (keydown)=\"menuButtonKeydown($event)\"\n                >\n                    @if (!buttoniconTemplate()) {\n                        <svg data-p-icon=\"bars\" [pBind]=\"ptm('buttonIcon')\" />\n                    }\n                    <ng-container *ngTemplateOutlet=\"buttoniconTemplate()\" />\n                </a>\n            }\n        }\n        <ng-container *ngTemplateOutlet=\"buttonTemplate()\" />\n        <ul\n            pMegaMenuSub\n            #rootmenu\n            [pMotion]=\"!queryMatches() || mobileActive()\"\n            [pMotionName]=\"'p-anchored-overlay'\"\n            [pMotionOptions]=\"computedMotionOptions()\"\n            [motionOptions]=\"computedMotionOptions()\"\n            [itemTemplate]=\"itemTemplate()\"\n            [items]=\"processedItems()\"\n            [attr.id]=\"$id() + '_list'\"\n            [menuId]=\"$id()\"\n            [root]=\"true\"\n            [orientation]=\"orientation()\"\n            [ariaLabel]=\"ariaLabel()\"\n            [disabled]=\"disabled()\"\n            [tabindex]=\"rootMenuTabindex()\"\n            [activeItem]=\"activeItem()\"\n            [level]=\"0\"\n            [ariaLabelledBy]=\"ariaLabelledBy()\"\n            [focusedItemId]=\"activeFocusedItemId()\"\n            [mobileActive]=\"mobileActive()\"\n            (itemClick)=\"onItemClick($event)\"\n            (menuFocus)=\"onMenuFocus($event)\"\n            (menuBlur)=\"onMenuBlur($event)\"\n            (menuKeydown)=\"onKeyDown($event)\"\n            (menuMouseDown)=\"onMenuMouseDown($event)\"\n            (itemMouseEnter)=\"onItemMouseEnter($event)\"\n            [queryMatches]=\"queryMatches()\"\n            [scrollHeight]=\"scrollHeight()\"\n            [pt]=\"pt()\"\n            [unstyled]=\"unstyled()\"\n        ></ul>\n        @if (endTemplate()) {\n            <div [class]=\"cx('end')\" [pBind]=\"ptm('end')\">\n                <ng-container *ngTemplateOutlet=\"endTemplate()\" />\n            </div>\n        }\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    providers: [MegaMenuStyle, { provide: MEGAMENU_INSTANCE, useExisting: MegaMenu }, { provide: PARENT_INSTANCE, useExisting: MegaMenu }],\n    host: {\n        '[class]': 'cx(\"root\")',\n        '[id]': '$id()'\n    },\n    hostDirectives: [Bind]\n})\nexport class MegaMenu extends BaseComponent<MegaMenuPassThrough> {\n    componentName = 'MegaMenu';\n\n    bindDirectiveInstance = inject(Bind, { self: true });\n\n    /**\n     * An array of menuitems.\n     * @group Props\n     */\n    model = input<MegaMenuItem[]>();\n\n    /**\n     * Defines the orientation.\n     * @group Props\n     */\n    orientation = input<MegaMenuOrientation>('horizontal');\n\n    /**\n     * Current id state as a string.\n     * @group Props\n     */\n    id = input<string>();\n\n    /**\n     * Defines a string value that labels an interactive element.\n     * @group Props\n     */\n    ariaLabel = input<string>();\n\n    /**\n     * Identifier of the underlying input element.\n     * @group Props\n     */\n    ariaLabelledBy = input<string>();\n\n    /**\n     * The breakpoint to define the maximum width boundary.\n     * @group Props\n     */\n    breakpoint = input('960px');\n\n    /**\n     * Height of the viewport, a scrollbar is defined if height of list exceeds this value.\n     * @group Props\n     */\n    scrollHeight = input('20rem');\n\n    /**\n     * When present, it specifies that the component should be disabled.\n     * @group Props\n     */\n    disabled = input(false, { transform: booleanAttribute });\n\n    /**\n     * Index of the element in tabbing order.\n     * @group Props\n     */\n    tabindex = input(0, { transform: numberAttribute });\n\n    /**\n     * Defines the motion options for the submenu open/close animation.\n     * @group Props\n     */\n    motionOptions = input<MotionOptions>();\n\n    computedMotionOptions = computed<MotionOptions>(() => {\n        return {\n            ...this.ptm('motion'),\n            ...this.motionOptions()\n        };\n    });\n\n    /**\n     * Defines template option for start.\n     * @group Templates\n     */\n    startTemplate = contentChild<TemplateRef<void>>('start', { descendants: false });\n\n    /**\n     * Defines template option for end.\n     * @group Templates\n     */\n    endTemplate = contentChild<TemplateRef<void>>('end', { descendants: false });\n\n    /**\n     * Defines template option for menu icon.\n     * @group Templates\n     */\n    menuiconTemplate = contentChild<TemplateRef<void>>('menuicon', { descendants: false });\n\n    /**\n     * Defines template option for submenu icon.\n     * @group Templates\n     */\n    submenuiconTemplate = contentChild<TemplateRef<void>>('submenuicon', { descendants: false });\n\n    /**\n     * Custom item template.\n     * @param {MegaMenuItemTemplateContext} context - item context.\n     * @see {@link MegaMenuItemTemplateContext}\n     * @group Templates\n     */\n    itemTemplate = contentChild<TemplateRef<MegaMenuItemTemplateContext>>('item', { descendants: false });\n\n    /**\n     * Custom menu button template on responsive mode.\n     * @group Templates\n     */\n    buttonTemplate = contentChild<TemplateRef<void>>('button', { descendants: false });\n\n    /**\n     * Custom menu button icon template on responsive mode.\n     * @group Templates\n     */\n    buttoniconTemplate = contentChild<TemplateRef<void>>('buttonicon', { descendants: false });\n\n    menubuttonViewChild = viewChild<ElementRef>('menubutton');\n\n    rootmenu = viewChild<MegaMenuSub>('rootmenu');\n\n    outsideClickListener: VoidListener;\n\n    resizeListener: ((event: Event) => void) | null = null;\n\n    dirty: boolean = false;\n\n    focused = signal(false);\n\n    activeItem = signal<ProcessedMegaMenuItem | null>(null);\n\n    focusedItemInfo = signal<MegaMenuFocusedItemInfo>({ index: -1, level: 0, parentKey: '', item: null });\n\n    searchValue: string = '';\n\n    searchTimeout: ReturnType<typeof setTimeout> | null = null;\n\n    _componentStyle = inject(MegaMenuStyle);\n\n    private matchMediaListener: (() => void) | null = null;\n\n    private query: MediaQueryList | null = null;\n\n    queryMatches = signal<boolean>(false);\n\n    mobileActive = signal(false);\n\n    private _internalId = uuid('pn_id_');\n\n    $id = computed(() => this.id() || this._internalId);\n\n    processedItems = computed<ProcessedMegaMenuItem[]>(() => this.createProcessedItems(this.model() || []));\n\n    visibleItems = computed<ProcessedMegaMenuItem[]>(() => {\n        const activeItemValue = this.activeItem();\n        const processedItem = isNotEmpty(activeItemValue) ? activeItemValue : null;\n\n        return processedItem\n            ? (processedItem.items as ProcessedMegaMenuItem[][]).reduce((items: ProcessedMegaMenuItem[], col) => {\n                  col.forEach((submenu) => {\n                      (submenu.items as ProcessedMegaMenuItem[]).forEach((a) => {\n                          items.push(a);\n                      });\n                  });\n\n                  return items;\n              }, [])\n            : this.processedItems();\n    });\n\n    focusedItemId = computed(() => {\n        const focusedItem = this.focusedItemInfo();\n        return focusedItem?.item && focusedItem.item?.id ? focusedItem.item.id : isNotEmpty(focusedItem.key) ? `${this.$id()}_${focusedItem.key}` : null;\n    });\n\n    rootMenuTabindex = computed(() => (!this.disabled() ? this.tabindex() : -1));\n\n    activeFocusedItemId = computed(() => (this.focused() ? this.focusedItemId() : undefined));\n\n    get navigationAriaLabel(): string | undefined {\n        return this.config.translation?.aria?.navigation;\n    }\n\n    constructor() {\n        super();\n        effect(() => {\n            const activeItem = this.activeItem();\n            if (isNotEmpty(activeItem)) {\n                this.bindOutsideClickListener();\n                this.bindResizeListener();\n            } else {\n                this.unbindOutsideClickListener();\n                this.unbindResizeListener();\n            }\n        });\n    }\n\n    onInit() {\n        this.bindMatchMediaListener();\n    }\n\n    onAfterViewChecked() {\n        this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n    }\n\n    bindMatchMediaListener() {\n        if (isPlatformBrowser(this.platformId) && !this.matchMediaListener) {\n            const query = window.matchMedia(`(max-width: ${this.breakpoint()})`);\n\n            this.query = query;\n            this.queryMatches.set(query.matches);\n\n            this.matchMediaListener = () => {\n                this.queryMatches.set(query.matches);\n                this.mobileActive.set(false);\n            };\n\n            query.addEventListener('change', this.matchMediaListener);\n        }\n    }\n\n    unbindMatchMediaListener() {\n        if (this.matchMediaListener && this.query) {\n            this.query.removeEventListener('change', this.matchMediaListener);\n            this.matchMediaListener = null;\n        }\n    }\n\n    createProcessedItems(items: MegaMenuItem[], level = 0, parent: ProcessedMegaMenuItem | Record<string, never> = {}, parentKey = '', columnIndex?: number): ProcessedMegaMenuItem[] {\n        const processedItems: ProcessedMegaMenuItem[] = [];\n\n        items &&\n            items.forEach((item, index) => {\n                const key = (parentKey !== '' ? parentKey + '_' : '') + (columnIndex !== undefined ? columnIndex + '_' : '') + index;\n                const newItem: ProcessedMegaMenuItem = {\n                    item,\n                    index,\n                    level,\n                    key,\n                    parent,\n                    parentKey,\n                    columnIndex: columnIndex !== undefined ? columnIndex : (parent as ProcessedMegaMenuItem).columnIndex !== undefined ? (parent as ProcessedMegaMenuItem).columnIndex : index\n                };\n\n                newItem.items =\n                    level === 0 && item.items && item.items.length > 0\n                        ? item.items.map((_items, _index) => this.createProcessedItems(_items as MegaMenuItem[], level + 1, newItem, key, _index))\n                        : this.createProcessedItems((item.items || []) as MegaMenuItem[], level + 1, newItem, key);\n                processedItems.push(newItem);\n            });\n        return processedItems;\n    }\n\n    getItemProp(item: MegaMenuItem, name: string) {\n        return item ? resolve(item[name]) : undefined;\n    }\n\n    onItemClick(event: MegaMenuItemClickEvent) {\n        this.dirty = true;\n        const { originalEvent, processedItem } = event;\n        const grouped = this.isProcessedItemGroup(processedItem);\n        const root = isEmpty(processedItem.parent);\n        const selected = this.isSelected(processedItem);\n\n        if (selected) {\n            const { index, key, parentKey, item } = processedItem;\n\n            this.activeItem.set(null);\n            this.focusedItemInfo.set({ index, level: 0, key, parentKey, item });\n\n            this.dirty = !root;\n            if (!this.mobileActive()) {\n                focus(this.rootmenu()?.el?.nativeElement, { preventScroll: true });\n            }\n        } else {\n            if (grouped) {\n                this.onItemChange(event);\n            } else {\n                this.hide(originalEvent);\n            }\n        }\n    }\n\n    onItemMouseEnter(event: MegaMenuItemMouseEnterEvent) {\n        if (!this.mobileActive() && this.dirty) {\n            this.onItemChange(event);\n        }\n    }\n\n    menuButtonClick(event: MouseEvent) {\n        this.toggle(event);\n    }\n\n    menuButtonKeydown(event: KeyboardEvent) {\n        (event.code === 'Enter' || event.code === 'NumpadEnter' || event.code === 'Space') && this.menuButtonClick(event as unknown as MouseEvent);\n    }\n\n    toggle(event: MouseEvent) {\n        if (this.mobileActive()) {\n            this.mobileActive.set(false);\n            ZIndexUtils.clear(this.rootmenu()?.el.nativeElement);\n            this.hide();\n        } else {\n            this.mobileActive.set(true);\n            ZIndexUtils.set('menu', this.rootmenu()?.el.nativeElement, this.config.zIndex.menu);\n            setTimeout(() => {\n                this.show();\n            }, 0);\n        }\n\n        this.bindOutsideClickListener();\n        event.preventDefault();\n    }\n\n    show() {\n        this.focusedItemInfo.set({ index: this.findFirstFocusedItemIndex(), level: 0, parentKey: '', item: null });\n\n        focus(this.rootmenu()?.el.nativeElement);\n    }\n\n    scrollInView(index: number = -1) {\n        const id = index !== -1 ? `${this.$id()}_${index}` : this.focusedItemId();\n\n        let element: HTMLElement | null | undefined;\n\n        if (id === null && this.queryMatches()) {\n            element = this.menubuttonViewChild()?.nativeElement;\n        } else {\n            element = findSingle(this.rootmenu()?.el?.nativeElement, `li[id=\"${id}\"]`) as HTMLElement | null;\n        }\n\n        if (element) {\n            element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest', behavior: 'smooth' });\n        }\n    }\n\n    onItemChange(event: MegaMenuItemClickEvent | MegaMenuItemMouseEnterEvent) {\n        const { processedItem } = event;\n\n        if (isEmpty(processedItem)) return;\n\n        const { index, key, parentKey, items, item } = processedItem;\n        const grouped = isNotEmpty(items);\n\n        if (grouped) {\n            this.activeItem.set(processedItem);\n        }\n        this.focusedItemInfo.set({ index, level: 0, key, parentKey, item });\n\n        grouped && (this.dirty = true);\n        if ('isFocus' in event && event.isFocus) {\n            focus(this.rootmenu()?.el?.nativeElement);\n        }\n    }\n\n    hide(_event?: Event, isFocus?: boolean) {\n        if (this.mobileActive()) {\n            this.mobileActive.set(false);\n            setTimeout(() => {\n                focus(this.menubuttonViewChild()?.nativeElement);\n                this.scrollInView();\n            }, 100);\n        }\n\n        this.activeItem.set(null);\n        this.focusedItemInfo.set({ index: -1, level: 0, key: '', parentKey: '', item: null });\n\n        isFocus && focus(this.rootmenu()?.el?.nativeElement);\n        this.dirty = false;\n    }\n\n    onMenuMouseDown(_event: MouseEvent) {\n        this.dirty = true;\n    }\n\n    onMenuFocus(event: FocusEvent) {\n        this.focused.set(true);\n\n        const relatedTarget = event.relatedTarget as HTMLElement | null;\n        const isFromOutside = !relatedTarget || !this.el.nativeElement.contains(relatedTarget);\n\n        if (isFromOutside && this.focusedItemInfo().index === -1 && isEmpty(this.activeItem()) && !this.dirty) {\n            const index = this.findFirstFocusedItemIndex();\n            const processedItem = this.findVisibleItem(index);\n\n            if (processedItem) {\n                this.focusedItemInfo.set({ index, level: 0, key: processedItem.key, parentKey: processedItem.parentKey, item: processedItem.item });\n            }\n        }\n    }\n\n    onMenuBlur(event: FocusEvent) {\n        const relatedTarget = event.relatedTarget as HTMLElement | null;\n        if (relatedTarget && this.el.nativeElement.contains(relatedTarget)) {\n            return;\n        }\n\n        setTimeout(() => {\n            const activeElement = this.document.activeElement;\n            if (activeElement && this.el.nativeElement.contains(activeElement)) {\n                return;\n            }\n\n            this.focused.set(false);\n            this.focusedItemInfo.set({ index: -1, level: 0, parentKey: '', item: null });\n            this.searchValue = '';\n            this.dirty = false;\n        });\n    }\n\n    onKeyDown(event: KeyboardEvent) {\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                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\n    findFirstFocusedItemIndex() {\n        const selectedIndex = this.findSelectedItemIndex();\n\n        return selectedIndex < 0 ? this.findFirstItemIndex() : selectedIndex;\n    }\n\n    findFirstItemIndex() {\n        return this.visibleItems().findIndex((processedItem) => this.isValidItem(processedItem));\n    }\n\n    findSelectedItemIndex() {\n        return this.visibleItems().findIndex((processedItem) => this.isValidSelectedItem(processedItem));\n    }\n\n    isProcessedItemGroup(processedItem: ProcessedMegaMenuItem): boolean {\n        return processedItem && isNotEmpty(processedItem.items);\n    }\n\n    isSelected(processedItem: ProcessedMegaMenuItem): boolean {\n        const activeItemValue = this.activeItem();\n        return isNotEmpty(activeItemValue) && activeItemValue ? activeItemValue.key === processedItem.key : false;\n    }\n\n    isValidSelectedItem(processedItem: ProcessedMegaMenuItem): boolean {\n        return this.isValidItem(processedItem) && this.isSelected(processedItem);\n    }\n\n    isValidItem(processedItem: ProcessedMegaMenuItem): boolean {\n        return !!processedItem && !this.isItemDisabled(processedItem.item) && !this.isItemSeparator(processedItem.item);\n    }\n\n    isItemDisabled(item: MegaMenuItem): boolean {\n        return this.getItemProp(item, 'disabled');\n    }\n\n    isItemSeparator(item: MegaMenuItem): boolean {\n        return this.getItemProp(item, 'separator');\n    }\n\n    isItemMatched(processedItem: ProcessedMegaMenuItem): boolean {\n        return this.isValidItem(processedItem) && this.getProccessedItemLabel(processedItem).toLocaleLowerCase().startsWith(this.searchValue.toLocaleLowerCase());\n    }\n\n    isProccessedItemGroup(processedItem: ProcessedMegaMenuItem | null): boolean {\n        return !!processedItem && isNotEmpty(processedItem.items);\n    }\n\n    searchItems(event: KeyboardEvent, char: string) {\n        this.searchValue = (this.searchValue || '') + char;\n        const visibleItemsList = this.visibleItems();\n\n        let itemIndex = -1;\n        let matched = false;\n\n        if (this.focusedItemInfo().index !== -1) {\n            itemIndex = visibleItemsList.slice(this.focusedItemInfo().index).findIndex((processedItem) => this.isItemMatched(processedItem));\n            itemIndex = itemIndex === -1 ? visibleItemsList.slice(0, this.focusedItemInfo().index).findIndex((processedItem) => this.isItemMatched(processedItem)) : itemIndex + this.focusedItemInfo().index;\n        } else {\n            itemIndex = visibleItemsList.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.changeFocusedItemInfo(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\n    getProccessedItemLabel(processedItem: ProcessedMegaMenuItem) {\n        return processedItem ? this.getItemLabel(processedItem.item) : undefined;\n    }\n\n    getItemLabel(item: MegaMenuItem) {\n        return this.getItemProp(item, 'label');\n    }\n\n    changeFocusedItemInfo(_event: KeyboardEvent, index: number) {\n        const processedItem = this.findVisibleItem(index);\n        if (isNotEmpty(processedItem) && processedItem) {\n            const { key, parentKey, item } = processedItem;\n            this.focusedItemInfo.set({ index, level: 0, key: key ? key : '', parentKey, item });\n        }\n\n        this.scrollInView();\n    }\n\n    onArrowDownKey(event: KeyboardEvent) {\n        const activeItemValue = this.activeItem();\n        if (this.orientation() === 'horizontal') {\n            if (isNotEmpty(activeItemValue) && activeItemValue!.key === this.focusedItemInfo().key) {\n                const { key, item } = activeItemValue!;\n                this.focusedItemInfo.set({ index: -1, level: 0, key: '', parentKey: key, item });\n            } else {\n                const processedItem = this.findVisibleItem(this.focusedItemInfo().index);\n                const grouped = this.isProccessedItemGroup(processedItem);\n\n                if (grouped && processedItem) {\n                    const { parentKey, key, item } = processedItem;\n                    this.onItemChange({ originalEvent: event, processedItem });\n                    this.focusedItemInfo.set({ index: -1, level: 0, key: key, parentKey: parentKey, item: item });\n                    this.searchValue = '';\n                }\n            }\n        }\n\n        const itemIndex = this.focusedItemInfo().index !== -1 ? this.findNextItemIndex(this.focusedItemInfo().index) : this.findFirstFocusedItemIndex();\n        this.changeFocusedItemInfo(event, itemIndex);\n        event.preventDefault();\n    }\n\n    onArrowRightKey(event: KeyboardEvent) {\n        const activeItemValue = this.activeItem();\n        const visibleItemsList = this.visibleItems();\n        let processedItem = this.findVisibleItem(this.focusedItemInfo().index);\n        const grouped = this.isProccessedItemGroup(processedItem);\n\n        if (grouped && processedItem) {\n            if (this.orientation() === 'vertical') {\n                if (isNotEmpty(activeItemValue) && activeItemValue!.key === processedItem.key) {\n                    this.focusedItemInfo.set({ index: -1, level: 0, key: '', parentKey: activeItemValue!.key, item: processedItem.item });\n                } else {\n                    processedItem = this.findVisibleItem(this.focusedItemInfo().index);\n                    const innerGrouped = this.isProccessedItemGroup(processedItem);\n\n                    if (innerGrouped && processedItem) {\n                        this.onItemChange({ originalEvent: event, processedItem });\n                        this.focusedItemInfo.set({\n                            index: -1,\n                            level: 0,\n                            key: processedItem.key,\n                            parentKey: processedItem.parentKey,\n                            item: processedItem.item\n                        });\n                        this.searchValue = '';\n                    }\n                }\n            }\n\n            const itemIndex = this.focusedItemInfo().index !== -1 ? this.findNextItemIndex(this.focusedItemInfo().index) : this.findFirstFocusedItemIndex();\n\n            this.changeFocusedItemInfo(event, itemIndex);\n        } else if (processedItem) {\n            const columnIndex = (processedItem.columnIndex || 0) + 1;\n            const itemIndex = visibleItemsList.findIndex((item) => item.columnIndex === columnIndex);\n\n            itemIndex !== -1 && this.changeFocusedItemInfo(event, itemIndex);\n        }\n\n        event.preventDefault();\n    }\n\n    onArrowUpKey(event: KeyboardEvent) {\n        const activeItemValue = this.activeItem();\n        if (event.altKey && this.orientation() === 'horizontal') {\n            if (this.focusedItemInfo().index !== -1) {\n                const processedItem = this.findVisibleItem(this.focusedItemInfo().index);\n                const grouped = this.isProccessedItemGroup(processedItem);\n\n                if (!grouped && isNotEmpty(activeItemValue) && processedItem) {\n                    if (this.focusedItemInfo().index === 0) {\n                        this.focusedItemInfo.set({\n                            index: activeItemValue!.index,\n                            level: 0,\n                            key: activeItemValue!.key,\n                            parentKey: activeItemValue!.parentKey,\n                            item: processedItem.item\n                        });\n                        this.activeItem.set(null);\n                    } else {\n                        this.changeFocusedItemInfo(event, this.findFirstItemIndex());\n                    }\n                }\n            }\n\n            event.preventDefault();\n        } else {\n            const itemIndex = this.focusedItemInfo().index !== -1 ? this.findPrevItemIndex(this.focusedItemInfo().index) : this.findLastFocusedItemIndex();\n\n            this.changeFocusedItemInfo(event, itemIndex);\n            event.preventDefault();\n        }\n    }\n\n    onArrowLeftKey(event: KeyboardEvent) {\n        const activeItemValue = this.activeItem();\n        const visibleItemsList = this.visibleItems();\n        const processedItem = this.findVisibleItem(this.focusedItemInfo().index);\n        const grouped = this.isProccessedItemGroup(processedItem);\n\n        if (grouped) {\n            if (this.orientation() === 'horizontal') {\n                const itemIndex = this.focusedItemInfo().index !== -1 ? this.findPrevItemIndex(this.focusedItemInfo().index) : this.findLastFocusedItemIndex();\n\n                this.changeFocusedItemInfo(event, itemIndex);\n            }\n        } else if (processedItem) {\n            if (this.orientation() === 'vertical' && isNotEmpty(activeItemValue)) {\n                if (processedItem.columnIndex === 0) {\n                    this.focusedItemInfo.set({\n                        index: activeItemValue!.index,\n                        level: 0,\n                        key: activeItemValue!.key,\n                        parentKey: activeItemValue!.parentKey,\n                        item: processedItem.item\n                    });\n                    this.activeItem.set(null);\n                }\n            }\n\n            const columnIndex = (processedItem.columnIndex || 0) - 1;\n            const itemIndex = visibleItemsList.findIndex((item) => item.columnIndex === columnIndex);\n\n            itemIndex !== -1 && this.changeFocusedItemInfo(event, itemIndex);\n        }\n\n        event.preventDefault();\n    }\n\n    onHomeKey(event: KeyboardEvent) {\n        this.changeFocusedItemInfo(event, this.findFirstItemIndex());\n        event.preventDefault();\n    }\n\n    onEndKey(event: KeyboardEvent) {\n        this.changeFocusedItemInfo(event, this.findLastItemIndex());\n        event.preventDefault();\n    }\n\n    onSpaceKey(event: KeyboardEvent) {\n        this.onEnterKey(event);\n    }\n\n    onEscapeKey(event: KeyboardEvent) {\n        const activeItemValue = this.activeItem();\n        if (isNotEmpty(activeItemValue) && activeItemValue) {\n            this.focusedItemInfo.set({ index: activeItemValue.index, level: 0, key: activeItemValue.key, parentKey: '', item: activeItemValue.item });\n            this.activeItem.set(null);\n        }\n\n        event.preventDefault();\n    }\n\n    onTabKey(event: KeyboardEvent) {\n        if (this.focusedItemInfo().index !== -1) {\n            const processedItem = this.findVisibleItem(this.focusedItemInfo().index);\n            const grouped = this.isProccessedItemGroup(processedItem);\n\n            if (!grouped && processedItem) {\n                this.onItemChange({ originalEvent: event, processedItem });\n            }\n        }\n\n        this.hide();\n    }\n\n    onEnterKey(event: KeyboardEvent) {\n        if (this.focusedItemInfo().index !== -1) {\n            const element = findSingle(this.rootmenu()?.el?.nativeElement, `li[id=\"${`${this.focusedItemId()}`}\"]`) as HTMLElement | null;\n            const anchorElement = element && ((findSingle(element, '[data-pc-section=\"itemlink\"]') || findSingle(element, 'a,button')) as HTMLElement | null);\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.changeFocusedItemInfo(event, this.findFirstFocusedItemIndex());\n        }\n\n        event.preventDefault();\n    }\n\n    findVisibleItem(index: number) {\n        const visibleItemsList = this.visibleItems();\n        return isNotEmpty(visibleItemsList) ? visibleItemsList[index] : null;\n    }\n\n    findLastFocusedItemIndex() {\n        const selectedIndex = this.findSelectedItemIndex();\n        return selectedIndex < 0 ? this.findLastItemIndex() : selectedIndex;\n    }\n\n    findLastItemIndex() {\n        return findLastIndex(this.visibleItems(), (processedItem) => this.isValidItem(processedItem));\n    }\n\n    findPrevItemIndex(index: number) {\n        const visibleItemsList = this.visibleItems();\n        const matchedItemIndex = index > 0 ? findLastIndex(visibleItemsList.slice(0, index), (processedItem) => this.isValidItem(processedItem)) : -1;\n\n        return matchedItemIndex > -1 ? matchedItemIndex : index;\n    }\n\n    findNextItemIndex(index: number) {\n        const visibleItemsList = this.visibleItems();\n        const matchedItemIndex = index < visibleItemsList.length - 1 ? visibleItemsList.slice(index + 1).findIndex((processedItem) => this.isValidItem(processedItem)) : -1;\n\n        return matchedItemIndex > -1 ? matchedItemIndex + index + 1 : index;\n    }\n\n    bindResizeListener() {\n        if (isPlatformBrowser(this.platformId) && !this.resizeListener) {\n            this.resizeListener = (event: Event) => {\n                if (!isTouchDevice()) {\n                    this.hide(event, true);\n                }\n\n                this.mobileActive.set(false);\n            };\n\n            window.addEventListener('resize', this.resizeListener);\n        }\n    }\n\n    bindOutsideClickListener() {\n        if (!this.outsideClickListener) {\n            this.outsideClickListener = this.renderer.listen(this.document, 'click', (event) => {\n                const isOutsideContainer = this.el?.nativeElement !== event.target && !this.el?.nativeElement.contains(event.target);\n\n                if (isOutsideContainer) {\n                    this.hide();\n                }\n            });\n        }\n    }\n\n    unbindOutsideClickListener() {\n        if (this.outsideClickListener) {\n            this.outsideClickListener();\n            this.outsideClickListener = null;\n        }\n    }\n\n    unbindResizeListener() {\n        if (this.resizeListener) {\n            window.removeEventListener('resize', this.resizeListener);\n            this.resizeListener = null!;\n        }\n    }\n\n    onDestroy() {\n        this.unbindOutsideClickListener();\n        this.unbindResizeListener();\n        this.unbindMatchMediaListener();\n    }\n}\n\n@NgModule({\n    imports: [MegaMenu, SharedModule],\n    exports: [MegaMenu, SharedModule]\n})\nexport class MegaMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["AngleDownIcon","AngleRightIcon","BarsIcon","i2"],"mappings":"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"}