{"version":3,"file":"fundamental-ngx-platform-menu.mjs","sources":["../../../../libs/platform/menu/menu-item.component.ts","../../../../libs/platform/menu/menu-item.component.html","../../../../libs/platform/menu/menu.component.ts","../../../../libs/platform/menu/menu.component.html","../../../../libs/platform/menu/menu-trigger.directive.ts","../../../../libs/platform/menu/menu.module.ts","../../../../libs/platform/menu/fundamental-ngx-platform-menu.ts"],"sourcesContent":["import { FocusableOption } from '@angular/cdk/a11y';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    HostListener,\n    Input,\n    OnDestroy,\n    Output,\n    ViewEncapsulation\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { MenuInteractiveComponent } from '@fundamental-ngx/core/menu';\n\n/**\n * @deprecated\n */\n@Component({\n    selector: 'fdp-menu-item',\n    templateUrl: './menu-item.component.html',\n    styleUrl: './menu-item.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        class: 'fd-menu__item',\n        tabindex: '-1'\n    },\n    imports: [NgTemplateOutlet]\n})\nexport class MenuItemComponent implements OnDestroy, FocusableOption {\n    /** Set the Menu Item as disabled/enabled */\n    @Input()\n    disabled = false;\n\n    /** Menu direction */\n    @Input()\n    cascadeDirection: 'right' | 'left' = 'right';\n\n    /** Event emitted when item is selected. */\n    @Output()\n    itemSelect: EventEmitter<void> = new EventEmitter<void>();\n\n    /** Sets whether this item is a trigger for sub-menu. */\n    @HostBinding('class.trigger')\n    isTrigger = false;\n\n    /** @hidden */\n    @ContentChild(MenuInteractiveComponent)\n    _fdMenuInteractiveChild: MenuInteractiveComponent;\n\n    /** Track when menu item is hovered over */\n    hovered: Subject<MenuItemComponent> = new Subject<MenuItemComponent>();\n    /** @hidden */\n    _isSelected = false;\n    /**\n     * @hidden\n     * set CSS class 'is-selected' if menu-item opens a sub-menu.\n     */\n    set isSelected(selected: boolean) {\n        if (this._isSelected !== selected) {\n            this._isSelected = selected;\n            this._cdr.markForCheck();\n        }\n    }\n\n    /** @hidden */\n    get isSelected(): boolean {\n        return this._isSelected;\n    }\n\n    /** @hidden */\n    constructor(\n        private _elementRef: ElementRef,\n        private _cdr: ChangeDetectorRef\n    ) {}\n\n    /**\n     * @hidden\n     * Handle selection of item via keyboard 'Enter'\n     */\n    @HostListener('keydown', ['$event'])\n    protected _onItemKeydown(event: KeyboardEvent): void {\n        if (event && KeyUtil.isKeyCode(event, [SPACE, ENTER]) && !this.disabled) {\n            this.itemSelect.emit();\n        } else if (this.disabled) {\n            event.stopPropagation();\n        }\n    }\n\n    /**\n     * @hidden\n     * Handle click of item via mouse click.\n     */\n    @HostListener('click', ['$event'])\n    protected _onItemClick(event: MouseEvent): void {\n        if (!this.disabled) {\n            this.itemSelect.emit();\n        } else {\n            event.stopPropagation();\n        }\n    }\n\n    /**\n     * @hidden\n     * Handle mouse enter event.\n     */\n    @HostListener('mouseenter')\n    protected _onMouseEnter(): void {\n        this.hovered.next(this);\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this.hovered.complete();\n    }\n    /** Focus on option */\n    focus(): void {\n        const interactive = this._elementRef.nativeElement?.firstElementChild as HTMLElement;\n        interactive?.focus();\n    }\n}\n","@if (!_fdMenuInteractiveChild) {\n    <div\n        class=\"fd-menu__link\"\n        [class.is-disabled]=\"disabled\"\n        [attr.disabled]=\"disabled\"\n        [class.is-selected]=\"isSelected\"\n        tabindex=\"0\"\n        role=\"menuitem\"\n    >\n        <span class=\"fd-menu__title\">\n            <ng-template [ngTemplateOutlet]=\"projectedContent\"></ng-template>\n        </span>\n        @if (isTrigger) {\n            <span class=\"fd-menu__addon-after fd-menu__addon-after--submenu\"></span>\n        }\n    </div>\n} @else {\n    <ng-template [ngTemplateOutlet]=\"projectedContent\"></ng-template>\n}\n<ng-template #projectedContent>\n    <ng-content></ng-content>\n</ng-template>\n","import { FocusKeyManager, FocusOrigin } from '@angular/cdk/a11y';\nimport { ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';\nimport {\n    AfterContentInit,\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    ContentChildren,\n    EventEmitter,\n    inject,\n    Input,\n    OnDestroy,\n    Output,\n    QueryList,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { merge, Observable, Subscription } from 'rxjs';\nimport { startWith, switchMap } from 'rxjs/operators';\n\nimport { KeyUtil, RtlService, warnOnce } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { MenuItemComponent } from './menu-item.component';\n\nexport type MenuCloseMethod = void | 'mouse' | 'keyboard' | 'tab' | 'arrow';\n\n/**\n * Variables for generating menu IDs.\n * Needed for establishing 'aria-control' between trigger and menu.\n */\nconst MENU_ID_ROOT = 'fdp-menu-';\nlet menuIdCounter = 0;\n\n/**\n * @deprecated\n * Menu component is deprecated. Use `fd-menu` from `@fundamental-ngx/core/menu` instead.\n */\n@Component({\n    selector: 'fdp-menu',\n    templateUrl: './menu.component.html',\n    styleUrl: './menu.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    providers: [contentDensityObserverProviders()]\n})\nexport class MenuComponent implements AfterViewInit, AfterContentInit, OnDestroy {\n    /** Menu ID */\n    @Input()\n    set id(id: string) {\n        this._id = id;\n\n        // Use 'id' property to create menu ID for aria-control purposes.\n        this.menuId = MENU_ID_ROOT + id;\n    }\n    get id(): string {\n        return this._id;\n    }\n\n    /**\n     * Whether menu can be opened using arrow keys\n     * @default true\n     */\n    @Input()\n    openByArrowKeys = true;\n\n    /**\n     * Horizontal position of menu in relation to trigger element.\n     */\n    @Input()\n    xPosition: 'before' | 'after' = 'after';\n\n    /**\n     * The templateRef needs to be available to the menu trigger for\n     * opening in a CDK overlay.\n     */\n    @ViewChild('menuTemplate', { static: false })\n    templateRef: TemplateRef<any>;\n\n    /**\n     * Child items of the menu.\n     */\n    @ContentChildren(MenuItemComponent)\n    menuItems: QueryList<MenuItemComponent>;\n\n    /**\n     * Emitted event when menu closes\n     */\n    // eslint-disable-next-line @angular-eslint/no-output-native\n    @Output() close: EventEmitter<MenuCloseMethod> = new EventEmitter();\n\n    /** @hidden */\n    menuId: string;\n\n    /** @hidden */\n    readonly contentDensityObserver = inject(ContentDensityObserver);\n\n    /** Menu direction */\n    protected readonly direction = computed(() => (this._rtlService?.rtl() ? 'rtl' : 'ltr'));\n\n    /** @hidden */\n    private _id: string;\n\n    /** @hidden */\n    private _keyManager: FocusKeyManager<MenuItemComponent>;\n\n    /** @hidden */\n    private _tabSubscription = Subscription.EMPTY;\n\n    /** @hidden */\n    private readonly _rtlService = inject(RtlService, { optional: true });\n\n    /** @hidden */\n    constructor() {\n        warnOnce(`MenuComponent is deprecated. Use 'fd-menu' from '@fundamental-ngx/core/menu' instead.`);\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        if (!this.menuId) {\n            this.menuId = MENU_ID_ROOT + menuIdCounter++;\n        }\n        if (this.menuItems) {\n            this._keyManager = new FocusKeyManager(this.menuItems);\n            this._tabSubscription = this._keyManager.tabOut.subscribe(() => {\n                this.close.emit('keyboard');\n            });\n        }\n    }\n\n    /** @hidden */\n    ngAfterContentInit(): void {\n        this._setMenuItemCascadeDirection();\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this.close.complete();\n        this._tabSubscription.unsubscribe();\n        this._keyManager?.destroy();\n    }\n\n    /**\n     * Set focus on first item\n     * @param origin FocusOrigin\n     */\n    focusOnFirstItem(origin: FocusOrigin = 'program'): void {\n        this._keyManager.setFocusOrigin(origin).setFirstItemActive();\n    }\n\n    /**\n     * Close menu\n     * @param method menu close method\n     */\n    closeMenu(method: MenuCloseMethod): void {\n        this.close.emit(method);\n    }\n\n    /**\n     * @hidden\n     * Menu keydown handler\n     */\n    _onKeydown(event: KeyboardEvent): void {\n        if (KeyUtil.isKeyCode(event, LEFT_ARROW)) {\n            if (this._cascadesRight()) {\n                this.close.emit('arrow');\n            }\n        } else if (KeyUtil.isKeyCode(event, RIGHT_ARROW)) {\n            if (this._cascadesLeft()) {\n                this.close.emit('arrow');\n            }\n        } else if (KeyUtil.isKeyCode(event, ESCAPE)) {\n            this.close.emit('keyboard');\n        } else if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n            event.preventDefault();\n            this.close.emit('keyboard');\n        } else {\n            this._keyManager.onKeydown(event);\n        }\n    }\n\n    /**\n     * @hidden\n     * Menu click handler\n     */\n    _onClick(): void {\n        this.close.emit('mouse');\n    }\n\n    /**\n     * @hidden\n     * Get stream of menu items hover change\n     */\n    _menuItemHoverChange(): Observable<MenuItemComponent> {\n        const menuItems = this.menuItems.changes as Observable<QueryList<MenuItemComponent>>;\n        return menuItems.pipe(\n            startWith(this.menuItems),\n            switchMap((items) => merge(...items.map((item: MenuItemComponent) => item.hovered)))\n        ) as Observable<MenuItemComponent>;\n    }\n\n    /** @hidden */\n    _setMenuItemCascadeDirection(): void {\n        if (!this.menuItems) {\n            return;\n        }\n        // set cascade direction\n        this.menuItems.forEach((item) => {\n            item.cascadeDirection = this._cascadesLeft() ? 'left' : 'right';\n        });\n    }\n\n    /**\n     * @hidden\n     * Check if cascade menu should appear from right\n     */\n    _cascadesRight(): boolean {\n        return (\n            (this.xPosition === 'after' && this.direction() === 'ltr') ||\n            (this.xPosition === 'before' && this.direction() === 'rtl')\n        );\n    }\n\n    /**\n     * @hidden\n     * Check if cascade menu should appear from left\n     */\n    _cascadesLeft(): boolean {\n        return (\n            (this.xPosition === 'after' && this.direction() === 'rtl') ||\n            (this.xPosition === 'before' && this.direction() === 'ltr')\n        );\n    }\n}\n","<ng-template #menuTemplate>\n    <nav\n        [attr.id]=\"menuId\"\n        [attr.dir]=\"direction()\"\n        class=\"fd-menu\"\n        [class.is-compact]=\"contentDensityObserver.isCompactSignal()\"\n        tabindex=\"0\"\n        role=\"menu\"\n        (click)=\"_onClick()\"\n        (keydown)=\"_onKeydown($event)\"\n    >\n        <div class=\"fd-menu__list\">\n            <ng-content></ng-content>\n        </div>\n    </nav>\n</ng-template>\n","import { ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';\nimport { ConnectedPosition, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n    AfterContentInit,\n    Directive,\n    ElementRef,\n    HostListener,\n    Input,\n    OnDestroy,\n    Optional,\n    Self,\n    ViewContainerRef,\n    inject\n} from '@angular/core';\nimport { Subscription, fromEvent } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { MenuButtonComponent } from '@fundamental-ngx/platform/menu-button';\nimport { MenuItemComponent } from './menu-item.component';\nimport { MenuCloseMethod, MenuComponent } from './menu.component';\n\n@Directive({\n    selector: `[fdpMenuTriggerFor]`,\n    host: {\n        'aria-haspopup': 'menu',\n        '[attr.aria-expanded]': 'isMenuOpen || null',\n        '[attr.aria-controls]': 'isMenuOpen ? menu.menuId : null'\n    },\n    standalone: true\n})\nexport class MenuTriggerDirective implements OnDestroy, AfterContentInit {\n    /** Set Menu Component for which this trigger will be associated. */\n    @Input('fdpMenuTriggerFor')\n    set menu(menu: MenuComponent) {\n        if (this._menu === menu) {\n            return;\n        }\n        this._menu = menu;\n        this._menuCloseSubscription.unsubscribe();\n    }\n    get menu(): MenuComponent {\n        return this._menu;\n    }\n\n    /** Flag to determine if associated menu is open. */\n    get isMenuOpen(): boolean {\n        return this._isMenuOpen;\n    }\n    /** @hidden */\n    private _menu: MenuComponent;\n    /** @hidden */\n    private _overlayRef: OverlayRef | null;\n    /** @hidden */\n    private _portal: TemplatePortal;\n    /** @hidden */\n    private _isMenuOpen = false;\n    /** @hidden */\n    private _outsideClickSubscription: Subscription = Subscription.EMPTY;\n    /** @hidden */\n    private _menuCloseSubscription: Subscription = Subscription.EMPTY;\n    /** @hidden */\n    private _parentMenuCloseSubscription: Subscription = Subscription.EMPTY;\n\n    /** @hidden */\n    private _menuItemHoverChangeSubscription: Subscription = Subscription.EMPTY;\n\n    private _menuButton = inject(MenuButtonComponent, { host: true, optional: true });\n\n    /** @hidden */\n    constructor(\n        private _element: ElementRef<HTMLElement>,\n        private _overlay: Overlay,\n        private _viewContainerRef: ViewContainerRef,\n        @Optional() @Self() private _menuItem: MenuItemComponent,\n        @Optional() private _parentMenu: MenuComponent\n    ) {}\n\n    /**\n     * @hidden\n     * Handle click on trigger element.\n     */\n    @HostListener('click', ['$event'])\n    _onTriggerClick(event: MouseEvent): void {\n        // Need to interupt default menu behavior of closing the menu\n        if (this._isMenuItem()) {\n            event.preventDefault();\n            event.stopPropagation();\n        }\n        // filter out clicks initiated by keyboard enter.\n        // For IE 11, MouseEvent fires a MSPointerEvent object instead of MouseEvent.\n        if (event.detail > 0 || (event instanceof PointerEvent && event.detail === 0)) {\n            this.toggleMenu();\n        }\n    }\n\n    /**\n     * @hidden\n     * Handled keypress which focus is on trigger element.\n     */\n    @HostListener('keydown', ['$event'])\n    _onTriggerKeydown(event: KeyboardEvent): void {\n        if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n            if (KeyUtil.isKeyCode(event, [SPACE])) {\n                event.preventDefault();\n            }\n\n            // Need to interupt default menu item behavior of closing the menu\n            if (this._isMenuItem()) {\n                event.preventDefault();\n                event.stopPropagation();\n            }\n            if (this._menuItem) {\n                this._menuItem.isSelected = true;\n            }\n            this.openMenu();\n        } else if (KeyUtil.isKeyCode(event, [RIGHT_ARROW])) {\n            if (this._menu._cascadesRight() && this._menu.openByArrowKeys) {\n                if (this._menuItem) {\n                    this._menuItem.isSelected = true;\n                }\n                this.openMenu();\n            }\n        } else if (KeyUtil.isKeyCode(event, [LEFT_ARROW])) {\n            if (this._menu._cascadesLeft() && this._menu.openByArrowKeys) {\n                if (this._menuItem) {\n                    this._menuItem.isSelected = true;\n                }\n                this.openMenu();\n            }\n        }\n    }\n\n    /** @hidden */\n    ngAfterContentInit(): void {\n        if (this._isMenuItem()) {\n            // mark menu item as trigger\n            this._menuItem.isTrigger = true;\n\n            // subscribe to changes of menu item hover state\n            this._menuItemHoverChangeSubscription = this._parentMenu._menuItemHoverChange().subscribe((item) => {\n                if (item === this._menuItem) {\n                    if (!this.isMenuOpen) {\n                        this._menuItem.isSelected = true;\n                        this.openMenu();\n                    }\n                } else {\n                    this._menuItem.isSelected = false;\n                    this.closeMenu();\n                }\n            });\n        }\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        if (this._overlayRef) {\n            this._overlayRef.dispose();\n            this._overlayRef = null;\n        }\n        this._outsideClickSubscription.unsubscribe();\n        this._menuCloseSubscription.unsubscribe();\n        this._parentMenuCloseSubscription.unsubscribe();\n        this._menuItemHoverChangeSubscription.unsubscribe();\n    }\n\n    /**\n     * @hidden\n     * Toggle display of associated menu.\n     */\n    toggleMenu(): void {\n        /**\n         * Need to add delay here to ensure that any \"closeMenu\" operation which\n         * has been invoked within an \"outsideClickSubscription\" gets resolved\n         * before \"openMenu\" is called. This can happen when there are multiple\n         * triggers for the same menu.\n         */\n        setTimeout(() => {\n            this._isMenuOpen ? this._destroyMenu() : this.openMenu();\n        }, 0);\n    }\n\n    /**\n     * @hidden\n     * Open associated menu.\n     */\n    openMenu(): void {\n        // create overlay\n        const overlayConfig = this._getOverlayConfig();\n        this._overlayRef = this._overlay.create(overlayConfig);\n\n        // get portal and attach to overlay\n        this._portal = new TemplatePortal(this._menu.templateRef, this._viewContainerRef);\n        this._overlayRef.attach(this._portal);\n\n        // add subscription to capture clicks outside menu\n        if (this._outsideClickSubscription) {\n            this._outsideClickSubscription.unsubscribe();\n        }\n        this._outsideClickSubscription = fromEvent<MouseEvent>(document, 'click')\n            .pipe(\n                filter((event) => {\n                    const target = event.target as HTMLElement;\n                    return (\n                        !this._element.nativeElement.contains(target) &&\n                        !!this._overlayRef &&\n                        !this._overlayRef.overlayElement.contains(target) &&\n                        this.isMenuOpen\n                    );\n                }),\n                take(1)\n            )\n            .subscribe(() => {\n                this.closeMenu();\n            });\n\n        // add subscription to menu 'close' event\n        if (this._menuCloseSubscription) {\n            this._menuCloseSubscription.unsubscribe();\n        }\n        this._menuCloseSubscription = this._menu.close.subscribe((method: MenuCloseMethod) => {\n            this._destroyMenu();\n            // Need to close parent menu if closing of menu was done by terminating action\n            if (this._parentMenu && (method === 'keyboard' || method === 'mouse')) {\n                this._parentMenu.closeMenu(method);\n            }\n        });\n\n        // add subscription to parent menu 'close' event\n        if (this._parentMenu) {\n            if (this._parentMenuCloseSubscription) {\n                this._parentMenuCloseSubscription.unsubscribe();\n            }\n            this._parentMenuCloseSubscription = this._parentMenu.close.subscribe(() => {\n                this.closeMenu();\n            });\n        }\n\n        // set focus to menu\n        this._menu.focusOnFirstItem();\n\n        this._isMenuOpen = true;\n    }\n\n    /**\n     * @hidden\n     * Close associated menu.\n     */\n    closeMenu(): void {\n        this._menu.closeMenu();\n    }\n\n    /**\n     * @hidden\n     * destroy associated menu.\n     */\n    private _destroyMenu(): void {\n        if (this._menuItem) {\n            this._menuItem.isSelected = false;\n        }\n        if (!this._overlayRef || !this._isMenuOpen) {\n            return;\n        }\n        if (this._menuItem) {\n            this._menuItem.focus();\n        } else {\n            this._element.nativeElement.focus();\n            this._menuButton?._elementRef.nativeElement.children[0].focus();\n        }\n        this._overlayRef.detach();\n        this._isMenuOpen = false;\n    }\n\n    /** @hidden */\n    private _getOverlayConfig(): OverlayConfig {\n        const positions = this._getPositions();\n        const positionStrategy = this._overlay\n            .position()\n            .flexibleConnectedTo(this._element)\n            .withLockedPosition()\n            .withPositions(positions);\n\n        const scrollStrategy = this._overlay.scrollStrategies.reposition();\n\n        return new OverlayConfig({\n            positionStrategy,\n            scrollStrategy,\n            backdropClass: 'cdk-overlay-transparent-backdrop'\n        });\n    }\n\n    /** @hidden */\n    private _getPositions(): ConnectedPosition[] {\n        let positions: ConnectedPosition[];\n        const offsetYPosition = 0;\n        const offsetXPosition = 0;\n        const subMenuXPadding = 4; // horizontal padding of 0.25rem(4px) is needed for sub-menu\n        const subMenuYPadding = 4; // vertical padding of 0.25rem(4px) is needed for sub-menu\n\n        if (this._isMenuItem()) {\n            if (this._menu._cascadesLeft()) {\n                positions = [\n                    {\n                        originX: 'start',\n                        originY: 'top',\n                        overlayX: 'end',\n                        overlayY: 'top',\n                        offsetX: subMenuXPadding,\n                        offsetY: subMenuYPadding\n                    },\n                    {\n                        originX: 'start',\n                        originY: 'bottom',\n                        overlayX: 'end',\n                        overlayY: 'bottom',\n                        offsetX: subMenuXPadding,\n                        offsetY: -subMenuYPadding\n                    }\n                ];\n            } else {\n                positions = [\n                    {\n                        originX: 'end',\n                        originY: 'top',\n                        overlayX: 'start',\n                        overlayY: 'top',\n                        offsetX: -subMenuXPadding,\n                        offsetY: subMenuYPadding\n                    },\n                    {\n                        originX: 'end',\n                        originY: 'bottom',\n                        overlayX: 'start',\n                        overlayY: 'bottom',\n                        offsetX: -subMenuXPadding,\n                        offsetY: -subMenuYPadding\n                    }\n                ];\n            }\n        } else {\n            if (this._menu._cascadesLeft()) {\n                positions = [\n                    {\n                        originX: 'end',\n                        originY: 'bottom',\n                        overlayX: 'end',\n                        overlayY: 'top',\n                        offsetY: offsetYPosition,\n                        offsetX: offsetXPosition\n                    },\n                    {\n                        originX: 'end',\n                        originY: 'top',\n                        overlayX: 'end',\n                        overlayY: 'bottom',\n                        offsetY: -offsetYPosition,\n                        offsetX: offsetXPosition\n                    }\n                ];\n            } else {\n                positions = [\n                    {\n                        originX: 'start',\n                        originY: 'bottom',\n                        overlayX: 'start',\n                        overlayY: 'top',\n                        offsetY: offsetYPosition,\n                        offsetX: -offsetXPosition\n                    },\n                    {\n                        originX: 'start',\n                        originY: 'top',\n                        overlayX: 'start',\n                        overlayY: 'bottom',\n                        offsetY: -offsetYPosition,\n                        offsetX: -offsetXPosition\n                    }\n                ];\n            }\n        }\n\n        return positions;\n    }\n\n    /** @hidden */\n    private _isMenuItem(): boolean {\n        return !!(this._parentMenu && this._menuItem);\n    }\n}\n","import { NgModule } from '@angular/core';\n\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { MenuItemComponent } from './menu-item.component';\nimport { MenuTriggerDirective } from './menu-trigger.directive';\nimport { MenuComponent } from './menu.component';\n\nconst components = [MenuComponent, MenuItemComponent, MenuTriggerDirective, ContentDensityModule];\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [...components],\n    exports: [...components]\n})\nexport class PlatformMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.MenuItemComponent","i3.MenuComponent"],"mappings":"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"}