mirror of https://github.com/ghostfolio/ghostfolio
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
109 KiB
1 lines
109 KiB
{"version":3,"file":"menu.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/menu/menu-panel.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/menu/menu-item.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/menu/menu-item.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/menu/menu-errors.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/menu/menu-content.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/menu/menu.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/menu/menu.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/menu/menu-trigger-base.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/menu/menu-trigger.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/menu/context-menu-trigger.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/menu/menu-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {EventEmitter, TemplateRef, InjectionToken} from '@angular/core';\nimport {MenuPositionX, MenuPositionY} from './menu-positions';\nimport {Direction} from '@angular/cdk/bidi';\nimport {FocusOrigin} from '@angular/cdk/a11y';\nimport {MatMenuContent} from './menu-content';\n\n/**\n * Injection token used to provide the parent menu to menu-specific components.\n * @docs-private\n */\nexport const MAT_MENU_PANEL = new InjectionToken<MatMenuPanel>('MAT_MENU_PANEL');\n\n/**\n * Interface for a custom menu panel that can be used with `matMenuTriggerFor`.\n * @docs-private\n */\nexport interface MatMenuPanel<T = any> {\n xPosition: MenuPositionX;\n yPosition: MenuPositionY;\n overlapTrigger: boolean;\n templateRef: TemplateRef<any>;\n readonly close: EventEmitter<void | 'click' | 'keydown' | 'tab'>;\n parentMenu?: MatMenuPanel | undefined;\n direction?: Direction;\n focusFirstItem: (origin?: FocusOrigin) => void;\n resetActiveItem: () => void;\n setPositionClasses?: (x: MenuPositionX, y: MenuPositionY) => void;\n\n /**\n * @deprecated No longer used and will be removed.\n * @breaking-change 21.0.0\n */\n setElevation?(depth: number): void;\n lazyContent?: MatMenuContent;\n backdropClass?: string;\n overlayPanelClass?: string | string[];\n hasBackdrop?: boolean;\n readonly panelId?: string;\n\n /**\n * @deprecated To be removed.\n * @breaking-change 8.0.0\n */\n addItem?: (item: T) => void;\n\n /**\n * @deprecated To be removed.\n * @breaking-change 8.0.0\n */\n removeItem?: (item: T) => void;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n ViewEncapsulation,\n Input,\n AfterViewInit,\n ChangeDetectorRef,\n booleanAttribute,\n inject,\n DOCUMENT,\n} from '@angular/core';\nimport {FocusableOption, FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\nimport {Subject} from 'rxjs';\n\nimport {MatMenuPanel, MAT_MENU_PANEL} from './menu-panel';\nimport {_StructuralStylesLoader, MatRipple} from '../core';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\n\n/**\n * Single item inside a `mat-menu`. Provides the menu item styling and accessibility treatment.\n */\n@Component({\n selector: '[mat-menu-item]',\n exportAs: 'matMenuItem',\n host: {\n '[attr.role]': 'role',\n 'class': 'mat-mdc-menu-item mat-focus-indicator',\n '[class.mat-mdc-menu-item-highlighted]': '_highlighted',\n '[class.mat-mdc-menu-item-submenu-trigger]': '_triggersSubmenu',\n '[attr.tabindex]': '_getTabIndex()',\n '[attr.aria-disabled]': 'disabled',\n '[attr.disabled]': 'disabled || null',\n '(click)': '_checkDisabled($event)',\n '(mouseenter)': '_handleMouseEnter()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n templateUrl: 'menu-item.html',\n imports: [MatRipple],\n})\nexport class MatMenuItem implements FocusableOption, AfterViewInit, OnDestroy {\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _document = inject(DOCUMENT);\n private _focusMonitor = inject(FocusMonitor);\n _parentMenu? = inject<MatMenuPanel<MatMenuItem>>(MAT_MENU_PANEL, {optional: true});\n private _changeDetectorRef = inject(ChangeDetectorRef);\n\n /** ARIA role for the menu item. */\n @Input() role: 'menuitem' | 'menuitemradio' | 'menuitemcheckbox' = 'menuitem';\n\n /** Whether the menu item is disabled. */\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n\n /** Whether ripples are disabled on the menu item. */\n @Input({transform: booleanAttribute}) disableRipple: boolean = false;\n\n /** Stream that emits when the menu item is hovered. */\n readonly _hovered: Subject<MatMenuItem> = new Subject<MatMenuItem>();\n\n /** Stream that emits when the menu item is focused. */\n readonly _focused = new Subject<MatMenuItem>();\n\n /** Whether the menu item is highlighted. */\n _highlighted: boolean = false;\n\n /** Whether the menu item acts as a trigger for a sub-menu. */\n _triggersSubmenu: boolean = false;\n\n constructor(...args: unknown[]);\n\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n this._parentMenu?.addItem?.(this);\n }\n\n /** Focuses the menu item. */\n focus(origin?: FocusOrigin, options?: FocusOptions): void {\n if (this._focusMonitor && origin) {\n this._focusMonitor.focusVia(this._getHostElement(), origin, options);\n } else {\n this._getHostElement().focus(options);\n }\n\n this._focused.next(this);\n }\n\n ngAfterViewInit() {\n if (this._focusMonitor) {\n // Start monitoring the element, so it gets the appropriate focused classes. We want\n // to show the focus style for menu items only when the focus was not caused by a\n // mouse or touch interaction.\n this._focusMonitor.monitor(this._elementRef, false);\n }\n }\n\n ngOnDestroy() {\n if (this._focusMonitor) {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n if (this._parentMenu && this._parentMenu.removeItem) {\n this._parentMenu.removeItem(this);\n }\n\n this._hovered.complete();\n this._focused.complete();\n }\n\n /** Used to set the `tabindex`. */\n _getTabIndex(): string {\n return this.disabled ? '-1' : '0';\n }\n\n /** Returns the host DOM element. */\n _getHostElement(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n /** Prevents the default element actions if it is disabled. */\n _checkDisabled(event: Event): void {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n /** Emits to the hover stream. */\n _handleMouseEnter() {\n this._hovered.next(this);\n }\n\n /** Gets the label to be used when determining whether the option should be focused. */\n getLabel(): string {\n const clone = this._elementRef.nativeElement.cloneNode(true) as HTMLElement;\n const icons = clone.querySelectorAll('mat-icon, .material-icons');\n\n // Strip away icons, so they don't show up in the text.\n for (let i = 0; i < icons.length; i++) {\n icons[i].remove();\n }\n\n return clone.textContent?.trim() || '';\n }\n\n _setHighlighted(isHighlighted: boolean) {\n // We need to mark this for check for the case where the content is coming from a\n // `matMenuContent` whose change detection tree is at the declaration position,\n // not the insertion position. See #23175.\n this._highlighted = isHighlighted;\n this._changeDetectorRef.markForCheck();\n }\n\n _setTriggersSubmenu(triggersSubmenu: boolean) {\n this._triggersSubmenu = triggersSubmenu;\n this._changeDetectorRef.markForCheck();\n }\n\n _hasFocus(): boolean {\n return this._document && this._document.activeElement === this._getHostElement();\n }\n}\n","<ng-content select=\"mat-icon, [matMenuItemIcon]\"></ng-content>\n<span class=\"mat-mdc-menu-item-text\"><ng-content></ng-content></span>\n<div class=\"mat-mdc-menu-ripple\" matRipple\n [matRippleDisabled]=\"disableRipple || disabled\"\n [matRippleTrigger]=\"_getHostElement()\">\n</div>\n\n@if (_triggersSubmenu) {\n <svg\n class=\"mat-mdc-menu-submenu-icon\"\n viewBox=\"0 0 5 10\"\n focusable=\"false\"\n aria-hidden=\"true\"><polygon points=\"0,0 5,5 0,10\"/></svg>\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n/**\n * Throws an exception for the case when menu's x-position value isn't valid.\n * In other words, it doesn't match 'before' or 'after'.\n * @docs-private\n */\nexport function throwMatMenuInvalidPositionX() {\n throw Error(`xPosition value must be either 'before' or after'.\n Example: <mat-menu xPosition=\"before\" #menu=\"matMenu\"></mat-menu>`);\n}\n\n/**\n * Throws an exception for the case when menu's y-position value isn't valid.\n * In other words, it doesn't match 'above' or 'below'.\n * @docs-private\n */\nexport function throwMatMenuInvalidPositionY() {\n throw Error(`yPosition value must be either 'above' or below'.\n Example: <mat-menu yPosition=\"above\" #menu=\"matMenu\"></mat-menu>`);\n}\n\n/**\n * Throws an exception for the case when a menu is assigned\n * to a trigger that is placed inside the same menu.\n * @docs-private\n */\nexport function throwMatMenuRecursiveError() {\n throw Error(\n `matMenuTriggerFor: menu cannot contain its own trigger. Assign a menu that is ` +\n `not a parent of the trigger or move the trigger outside of the menu.`,\n );\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {DomPortalOutlet, TemplatePortal} from '@angular/cdk/portal';\n\nimport {\n ApplicationRef,\n ChangeDetectorRef,\n Directive,\n InjectionToken,\n Injector,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n inject,\n DOCUMENT,\n} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/**\n * Injection token that can be used to reference instances of `MatMenuContent`. It serves\n * as alternative token to the actual `MatMenuContent` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const MAT_MENU_CONTENT = new InjectionToken<MatMenuContent>('MatMenuContent');\n\n/** Menu content that will be rendered lazily once the menu is opened. */\n@Directive({\n selector: 'ng-template[matMenuContent]',\n providers: [{provide: MAT_MENU_CONTENT, useExisting: MatMenuContent}],\n})\nexport class MatMenuContent implements OnDestroy {\n private _template = inject<TemplateRef<any>>(TemplateRef);\n private _appRef = inject(ApplicationRef);\n private _injector = inject(Injector);\n private _viewContainerRef = inject(ViewContainerRef);\n private _document = inject(DOCUMENT);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n\n private _portal: TemplatePortal<any> | undefined;\n private _outlet: DomPortalOutlet | undefined;\n\n /** Emits when the menu content has been attached. */\n readonly _attached = new Subject<void>();\n\n constructor(...args: unknown[]);\n\n constructor() {}\n\n /**\n * Attaches the content with a particular context.\n * @docs-private\n */\n attach(context: any = {}) {\n if (!this._portal) {\n this._portal = new TemplatePortal(this._template, this._viewContainerRef);\n }\n\n this.detach();\n\n if (!this._outlet) {\n this._outlet = new DomPortalOutlet(\n this._document.createElement('div'),\n this._appRef,\n this._injector,\n );\n }\n\n const element: HTMLElement = this._template.elementRef.nativeElement;\n\n // Because we support opening the same menu from different triggers (which in turn have their\n // own `OverlayRef` panel), we have to re-insert the host element every time, otherwise we\n // risk it staying attached to a pane that's no longer in the DOM.\n element.parentNode!.insertBefore(this._outlet.outletElement, element);\n\n // When `MatMenuContent` is used in an `OnPush` component, the insertion of the menu\n // content via `createEmbeddedView` does not cause the content to be seen as \"dirty\"\n // by Angular. This causes the `@ContentChildren` for menu items within the menu to\n // not be updated by Angular. By explicitly marking for check here, we tell Angular that\n // it needs to check for new menu items and update the `@ContentChild` in `MatMenu`.\n this._changeDetectorRef.markForCheck();\n this._portal.attach(this._outlet, context);\n this._attached.next();\n }\n\n /**\n * Detaches the content.\n * @docs-private\n */\n detach() {\n if (this._portal?.isAttached) {\n this._portal.detach();\n }\n }\n\n ngOnDestroy() {\n this.detach();\n this._outlet?.dispose();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n InjectionToken,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n OnInit,\n ChangeDetectorRef,\n booleanAttribute,\n afterNextRender,\n AfterRenderRef,\n inject,\n Injector,\n signal,\n} from '@angular/core';\nimport {_IdGenerator, FocusKeyManager, FocusOrigin} from '@angular/cdk/a11y';\nimport {Direction} from '@angular/cdk/bidi';\nimport {\n ESCAPE,\n LEFT_ARROW,\n RIGHT_ARROW,\n DOWN_ARROW,\n UP_ARROW,\n hasModifierKey,\n} from '@angular/cdk/keycodes';\nimport {merge, Observable, Subject} from 'rxjs';\nimport {startWith, switchMap} from 'rxjs/operators';\nimport {MatMenuItem} from './menu-item';\nimport {MatMenuPanel, MAT_MENU_PANEL} from './menu-panel';\nimport {MenuPositionX, MenuPositionY} from './menu-positions';\nimport {throwMatMenuInvalidPositionX, throwMatMenuInvalidPositionY} from './menu-errors';\nimport {MatMenuContent, MAT_MENU_CONTENT} from './menu-content';\nimport {_animationsDisabled} from '../core';\n\n/** Reason why the menu was closed. */\nexport type MenuCloseReason = void | 'click' | 'keydown' | 'tab';\n\n/** Default `mat-menu` options that can be overridden. */\nexport interface MatMenuDefaultOptions {\n /** The x-axis position of the menu. */\n xPosition: MenuPositionX;\n\n /** The y-axis position of the menu. */\n yPosition: MenuPositionY;\n\n /** Whether the menu should overlap the menu trigger. */\n overlapTrigger: boolean;\n\n /** Class to be applied to the menu's backdrop. */\n backdropClass: string;\n\n /** Class or list of classes to be applied to the menu's overlay panel. */\n overlayPanelClass?: string | string[];\n\n /** Whether the menu has a backdrop. */\n hasBackdrop?: boolean;\n}\n\n/** Injection token to be used to override the default options for `mat-menu`. */\nexport const MAT_MENU_DEFAULT_OPTIONS = new InjectionToken<MatMenuDefaultOptions>(\n 'mat-menu-default-options',\n {\n providedIn: 'root',\n factory: () => ({\n overlapTrigger: false,\n xPosition: 'after',\n yPosition: 'below',\n backdropClass: 'cdk-overlay-transparent-backdrop',\n }),\n },\n);\n\n/** Name of the enter animation `@keyframes`. */\nconst ENTER_ANIMATION = '_mat-menu-enter';\n\n/** Name of the exit animation `@keyframes`. */\nconst EXIT_ANIMATION = '_mat-menu-exit';\n\n@Component({\n selector: 'mat-menu',\n templateUrl: 'menu.html',\n styleUrl: 'menu.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matMenu',\n host: {\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n },\n providers: [{provide: MAT_MENU_PANEL, useExisting: MatMenu}],\n})\nexport class MatMenu implements AfterContentInit, MatMenuPanel<MatMenuItem>, OnInit, OnDestroy {\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _injector = inject(Injector);\n\n private _keyManager!: FocusKeyManager<MatMenuItem>;\n private _xPosition: MenuPositionX;\n private _yPosition: MenuPositionY;\n private _firstItemFocusRef?: AfterRenderRef;\n private _exitFallbackTimeout: ReturnType<typeof setTimeout> | undefined;\n\n /** Whether animations are currently disabled. */\n protected _animationsDisabled = _animationsDisabled();\n\n /** All items inside the menu. Includes items nested inside another menu. */\n @ContentChildren(MatMenuItem, {descendants: true}) _allItems!: QueryList<MatMenuItem>;\n\n /** Only the direct descendant menu items. */\n _directDescendantItems = new QueryList<MatMenuItem>();\n\n /** Classes to be applied to the menu panel. */\n _classList: {[key: string]: boolean} = {};\n\n /** Current state of the panel animation. */\n _panelAnimationState: 'void' | 'enter' = 'void';\n\n /** Emits whenever an animation on the menu completes. */\n readonly _animationDone = new Subject<'void' | 'enter'>();\n\n /** Whether the menu is animating. */\n _isAnimating = signal(false);\n\n /** Parent menu of the current menu panel. */\n parentMenu: MatMenuPanel | undefined;\n\n /** Layout direction of the menu. */\n direction!: Direction;\n\n /** Class or list of classes to be added to the overlay panel. */\n overlayPanelClass: string | string[];\n\n /** Class to be added to the backdrop element. */\n @Input() backdropClass: string;\n\n /** aria-label for the menu panel. */\n @Input('aria-label') ariaLabel!: string;\n\n /** aria-labelledby for the menu panel. */\n @Input('aria-labelledby') ariaLabelledby!: string;\n\n /** aria-describedby for the menu panel. */\n @Input('aria-describedby') ariaDescribedby!: string;\n\n /** Position of the menu in the X axis. */\n @Input()\n get xPosition(): MenuPositionX {\n return this._xPosition;\n }\n set xPosition(value: MenuPositionX) {\n if (\n value !== 'before' &&\n value !== 'after' &&\n (typeof ngDevMode === 'undefined' || ngDevMode)\n ) {\n throwMatMenuInvalidPositionX();\n }\n this._xPosition = value;\n this.setPositionClasses();\n }\n\n /** Position of the menu in the Y axis. */\n @Input()\n get yPosition(): MenuPositionY {\n return this._yPosition;\n }\n set yPosition(value: MenuPositionY) {\n if (value !== 'above' && value !== 'below' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuInvalidPositionY();\n }\n this._yPosition = value;\n this.setPositionClasses();\n }\n\n /** @docs-private */\n @ViewChild(TemplateRef) templateRef!: TemplateRef<any>;\n\n /**\n * List of the items inside of a menu.\n * @deprecated\n * @breaking-change 8.0.0\n */\n @ContentChildren(MatMenuItem, {descendants: false}) items!: QueryList<MatMenuItem>;\n\n /**\n * Menu content that will be rendered lazily.\n * @docs-private\n */\n @ContentChild(MAT_MENU_CONTENT) lazyContent!: MatMenuContent;\n\n /** Whether the menu should overlap its trigger. */\n @Input({transform: booleanAttribute}) overlapTrigger: boolean = false;\n\n /** Whether the menu has a backdrop. */\n @Input({transform: (value: any) => (value == null ? null : booleanAttribute(value))})\n hasBackdrop?: boolean;\n\n /**\n * This method takes classes set on the host mat-menu element and applies them on the\n * menu template that displays in the overlay container. Otherwise, it's difficult\n * to style the containing menu from outside the component.\n * @param classes list of class names\n */\n @Input('class')\n set panelClass(classes: string) {\n const previousPanelClass = this._previousPanelClass;\n const newClassList = {...this._classList};\n\n if (previousPanelClass && previousPanelClass.length) {\n previousPanelClass.split(' ').forEach((className: string) => {\n newClassList[className] = false;\n });\n }\n\n this._previousPanelClass = classes;\n\n if (classes && classes.length) {\n classes.split(' ').forEach((className: string) => {\n newClassList[className] = true;\n });\n\n this._elementRef.nativeElement.className = '';\n }\n\n this._classList = newClassList;\n }\n private _previousPanelClass!: string;\n\n /**\n * This method takes classes set on the host mat-menu element and applies them on the\n * menu template that displays in the overlay container. Otherwise, it's difficult\n * to style the containing menu from outside the component.\n * @deprecated Use `panelClass` instead.\n * @breaking-change 8.0.0\n */\n @Input()\n get classList(): string {\n return this.panelClass;\n }\n set classList(classes: string) {\n this.panelClass = classes;\n }\n\n /** Event emitted when the menu is closed. */\n @Output() readonly closed: EventEmitter<MenuCloseReason> = new EventEmitter<MenuCloseReason>();\n\n /**\n * Event emitted when the menu is closed.\n * @deprecated Switch to `closed` instead\n * @breaking-change 8.0.0\n */\n @Output() readonly close: EventEmitter<MenuCloseReason> = this.closed;\n\n readonly panelId: string = inject(_IdGenerator).getId('mat-menu-panel-');\n\n constructor(...args: unknown[]);\n\n constructor() {\n const defaultOptions = inject<MatMenuDefaultOptions>(MAT_MENU_DEFAULT_OPTIONS);\n this.overlayPanelClass = defaultOptions.overlayPanelClass || '';\n this._xPosition = defaultOptions.xPosition;\n this._yPosition = defaultOptions.yPosition;\n this.backdropClass = defaultOptions.backdropClass;\n this.overlapTrigger = defaultOptions.overlapTrigger;\n this.hasBackdrop = defaultOptions.hasBackdrop;\n }\n\n ngOnInit() {\n this.setPositionClasses();\n }\n\n ngAfterContentInit() {\n this._updateDirectDescendants();\n this._keyManager = new FocusKeyManager(this._directDescendantItems)\n .withWrap()\n .withTypeAhead()\n .withHomeAndEnd();\n this._keyManager.tabOut.subscribe(() => this.closed.emit('tab'));\n\n // If a user manually (programmatically) focuses a menu item, we need to reflect that focus\n // change back to the key manager. Note that we don't need to unsubscribe here because _focused\n // is internal and we know that it gets completed on destroy.\n this._directDescendantItems.changes\n .pipe(\n startWith(this._directDescendantItems),\n switchMap(items => merge(...items.map((item: MatMenuItem) => item._focused))),\n )\n .subscribe(focusedItem => this._keyManager.updateActiveItem(focusedItem as MatMenuItem));\n\n this._directDescendantItems.changes.subscribe((itemsList: QueryList<MatMenuItem>) => {\n // Move focus to another item, if the active item is removed from the list.\n // We need to debounce the callback, because multiple items might be removed\n // in quick succession.\n const manager = this._keyManager;\n\n if (this._panelAnimationState === 'enter' && manager.activeItem?._hasFocus()) {\n const items = itemsList.toArray();\n const index = Math.max(0, Math.min(items.length - 1, manager.activeItemIndex || 0));\n\n if (items[index] && !items[index].disabled) {\n manager.setActiveItem(index);\n } else {\n manager.setNextItemActive();\n }\n }\n });\n }\n\n ngOnDestroy() {\n this._keyManager?.destroy();\n this._directDescendantItems.destroy();\n this.closed.complete();\n this._firstItemFocusRef?.destroy();\n clearTimeout(this._exitFallbackTimeout);\n }\n\n /** Stream that emits whenever the hovered menu item changes. */\n _hovered(): Observable<MatMenuItem> {\n // Coerce the `changes` property because Angular types it as `Observable<any>`\n const itemChanges = this._directDescendantItems.changes as Observable<QueryList<MatMenuItem>>;\n return itemChanges.pipe(\n startWith(this._directDescendantItems),\n switchMap(items => merge(...items.map((item: MatMenuItem) => item._hovered))),\n ) as Observable<MatMenuItem>;\n }\n\n /*\n * Registers a menu item with the menu.\n * @docs-private\n * @deprecated No longer being used. To be removed.\n * @breaking-change 9.0.0\n */\n addItem(_item: MatMenuItem) {}\n\n /**\n * Removes an item from the menu.\n * @docs-private\n * @deprecated No longer being used. To be removed.\n * @breaking-change 9.0.0\n */\n removeItem(_item: MatMenuItem) {}\n\n /** Handle a keyboard event from the menu, delegating to the appropriate action. */\n _handleKeydown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n const manager = this._keyManager;\n\n switch (keyCode) {\n case ESCAPE:\n if (!hasModifierKey(event)) {\n event.preventDefault();\n this.closed.emit('keydown');\n }\n break;\n case LEFT_ARROW:\n if (this.parentMenu && this.direction === 'ltr') {\n this.closed.emit('keydown');\n }\n break;\n case RIGHT_ARROW:\n if (this.parentMenu && this.direction === 'rtl') {\n this.closed.emit('keydown');\n }\n break;\n default:\n if (keyCode === UP_ARROW || keyCode === DOWN_ARROW) {\n manager.setFocusOrigin('keyboard');\n }\n\n manager.onKeydown(event);\n return;\n }\n }\n\n /**\n * Focus the first item in the menu.\n * @param origin Action from which the focus originated. Used to set the correct styling.\n */\n focusFirstItem(origin: FocusOrigin = 'program'): void {\n // Wait for `afterNextRender` to ensure iOS VoiceOver screen reader focuses the first item (#24735).\n this._firstItemFocusRef?.destroy();\n this._firstItemFocusRef = afterNextRender(\n () => {\n const menuPanel = this._resolvePanel();\n\n // If an item in the menuPanel is already focused, avoid overriding the focus.\n if (!menuPanel || !menuPanel.contains(document.activeElement)) {\n const manager = this._keyManager;\n manager.setFocusOrigin(origin).setFirstItemActive();\n\n // If there's no active item at this point, it means that all the items are disabled.\n // Move focus to the menuPanel panel so keyboard events like Escape still work. Also this will\n // give _some_ feedback to screen readers.\n if (!manager.activeItem && menuPanel) {\n menuPanel.focus();\n }\n }\n },\n {injector: this._injector},\n );\n }\n\n /**\n * Resets the active item in the menu. This is used when the menu is opened, allowing\n * the user to start from the first option when pressing the down arrow.\n */\n resetActiveItem() {\n this._keyManager.setActiveItem(-1);\n }\n\n /**\n * @deprecated No longer used and will be removed.\n * @breaking-change 21.0.0\n */\n setElevation(_depth: number): void {}\n\n /**\n * Adds classes to the menu panel based on its position. Can be used by\n * consumers to add specific styling based on the position.\n * @param posX Position of the menu along the x axis.\n * @param posY Position of the menu along the y axis.\n * @docs-private\n */\n setPositionClasses(posX: MenuPositionX = this.xPosition, posY: MenuPositionY = this.yPosition) {\n this._classList = {\n ...this._classList,\n ['mat-menu-before']: posX === 'before',\n ['mat-menu-after']: posX === 'after',\n ['mat-menu-above']: posY === 'above',\n ['mat-menu-below']: posY === 'below',\n };\n\n this._changeDetectorRef.markForCheck();\n }\n\n /** Callback that is invoked when the panel animation completes. */\n protected _onAnimationDone(state: string) {\n const isExit = state === EXIT_ANIMATION;\n\n if (isExit || state === ENTER_ANIMATION) {\n if (isExit) {\n clearTimeout(this._exitFallbackTimeout);\n this._exitFallbackTimeout = undefined;\n }\n this._animationDone.next(isExit ? 'void' : 'enter');\n this._isAnimating.set(false);\n }\n }\n\n protected _onAnimationStart(state: string) {\n if (state === ENTER_ANIMATION || state === EXIT_ANIMATION) {\n this._isAnimating.set(true);\n }\n }\n\n _setIsOpen(isOpen: boolean) {\n this._panelAnimationState = isOpen ? 'enter' : 'void';\n\n if (isOpen) {\n if (this._keyManager.activeItemIndex === 0) {\n // Scroll the content element to the top as soon as the animation starts. This is necessary,\n // because we move focus to the first item while it's still being animated, which can throw\n // the browser off when it determines the scroll position. Alternatively we can move focus\n // when the animation is done, however moving focus asynchronously will interrupt screen\n // readers which are in the process of reading out the menu already. We take the `element`\n // from the `event` since we can't use a `ViewChild` to access the pane.\n const menuPanel = this._resolvePanel();\n\n if (menuPanel) {\n menuPanel.scrollTop = 0;\n }\n }\n } else if (!this._animationsDisabled) {\n // Some apps do `* { animation: none !important; }` in tests which will prevent the\n // `animationend` event from firing. Since the exit animation is loading-bearing for\n // removing the content from the DOM, add a fallback timer.\n this._exitFallbackTimeout = setTimeout(() => this._onAnimationDone(EXIT_ANIMATION), 200);\n }\n\n // Animation events won't fire when animations are disabled so we simulate them.\n if (this._animationsDisabled) {\n setTimeout(() => {\n this._onAnimationDone(isOpen ? ENTER_ANIMATION : EXIT_ANIMATION);\n });\n }\n\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Sets up a stream that will keep track of any newly-added menu items and will update the list\n * of direct descendants. We collect the descendants this way, because `_allItems` can include\n * items that are part of child menus, and using a custom way of registering items is unreliable\n * when it comes to maintaining the item order.\n */\n private _updateDirectDescendants() {\n this._allItems.changes\n .pipe(startWith(this._allItems))\n .subscribe((items: QueryList<MatMenuItem>) => {\n this._directDescendantItems.reset(items.filter(item => item._parentMenu === this));\n this._directDescendantItems.notifyOnChanges();\n });\n }\n\n /** Gets the menu panel DOM node. */\n private _resolvePanel(): HTMLElement | null {\n let menuPanel: HTMLElement | null = null;\n\n if (this._directDescendantItems.length) {\n // Because the `mat-menuPanel` is at the DOM insertion point, not inside the overlay, we don't\n // have a nice way of getting a hold of the menuPanel panel. We can't use a `ViewChild` either\n // because the panel is inside an `ng-template`. We work around it by starting from one of\n // the items and walking up the DOM.\n menuPanel = this._directDescendantItems.first!._getHostElement().closest('[role=\"menu\"]');\n }\n\n return menuPanel;\n }\n}\n","<ng-template>\n <div\n class=\"mat-mdc-menu-panel\"\n [id]=\"panelId\"\n [class]=\"_classList\"\n [class.mat-menu-panel-animations-disabled]=\"_animationsDisabled\"\n [class.mat-menu-panel-exit-animation]=\"_panelAnimationState === 'void'\"\n [class.mat-menu-panel-animating]=\"_isAnimating()\"\n (click)=\"closed.emit('click')\"\n tabindex=\"-1\"\n role=\"menu\"\n (animationstart)=\"_onAnimationStart($event.animationName)\"\n (animationend)=\"_onAnimationDone($event.animationName)\"\n (animationcancel)=\"_onAnimationDone($event.animationName)\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby || null\"\n [attr.aria-describedby]=\"ariaDescribedby || null\">\n <div class=\"mat-mdc-menu-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\nimport {Direction, Directionality} from '@angular/cdk/bidi';\nimport {\n createFlexibleConnectedPositionStrategy,\n createOverlayRef,\n createRepositionScrollStrategy,\n FlexibleConnectedPositionStrategy,\n FlexibleConnectedPositionStrategyOrigin,\n HorizontalConnectionPos,\n OverlayConfig,\n OverlayRef,\n ScrollStrategy,\n VerticalConnectionPos,\n} from '@angular/cdk/overlay';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {\n booleanAttribute,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n InjectionToken,\n Injector,\n NgZone,\n OnDestroy,\n ViewContainerRef,\n} from '@angular/core';\nimport {merge, Observable, of as observableOf, Subscription} from 'rxjs';\nimport {filter, take, takeUntil} from 'rxjs/operators';\nimport {MatMenu, MenuCloseReason} from './menu';\nimport {throwMatMenuRecursiveError} from './menu-errors';\nimport {MatMenuItem} from './menu-item';\nimport {MAT_MENU_PANEL, MatMenuPanel} from './menu-panel';\nimport {MenuPositionX, MenuPositionY} from './menu-positions';\nimport {_animationsDisabled} from '../core';\n\n/** Injection token that determines the scroll handling while the menu is open. */\nexport const MAT_MENU_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n 'mat-menu-scroll-strategy',\n {\n providedIn: 'root',\n factory: () => {\n const injector = inject(Injector);\n return () => createRepositionScrollStrategy(injector);\n },\n },\n);\n\n/**\n * Default top padding of the menu panel.\n * @deprecated No longer being used. Will be removed.\n * @breaking-change 15.0.0\n */\nexport const MENU_PANEL_TOP_PADDING = 8;\n\n/** Mapping between menu panels and the last trigger that opened them. */\nconst PANELS_TO_TRIGGERS = new WeakMap<MatMenuPanel, MatMenuTriggerBase>();\n\n/** Directive applied to an element that should trigger a `mat-menu`. */\n@Directive()\nexport abstract class MatMenuTriggerBase implements OnDestroy {\n protected _element = inject<ElementRef<HTMLElement>>(ElementRef);\n private _viewContainerRef = inject(ViewContainerRef);\n protected _menuItemInstance = inject(MatMenuItem, {optional: true, self: true})!;\n private _dir = inject(Directionality, {optional: true});\n private _focusMonitor = inject(FocusMonitor);\n private _ngZone = inject(NgZone);\n private _injector = inject(Injector);\n private _scrollStrategy = inject(MAT_MENU_SCROLL_STRATEGY);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _animationsDisabled = _animationsDisabled();\n\n private _portal!: TemplatePortal;\n protected _overlayRef: OverlayRef | null = null;\n private _menuOpen: boolean = false;\n private _closingActionsSubscription = Subscription.EMPTY;\n private _menuCloseSubscription = Subscription.EMPTY;\n private _pendingRemoval: Subscription | undefined;\n\n /**\n * We're specifically looking for a `MatMenu` here since the generic `MatMenuPanel`\n * interface lacks some functionality around nested menus and animations.\n */\n protected _parentMaterialMenu: MatMenu | undefined;\n\n /**\n * Cached value of the padding of the parent menu panel.\n * Used to offset sub-menus to compensate for the padding.\n */\n private _parentInnerPadding: number | undefined;\n\n // Tracking input type is necessary so it's possible to only auto-focus\n // the first item of the list when the menu is opened via the keyboard\n protected _openedBy: Exclude<FocusOrigin, 'program' | null> | undefined = undefined;\n\n /** Data that will be passed to the menu panel. */\n abstract menuData: any;\n\n /** Whether focus should be restored when the menu is closed. */\n abstract restoreFocus: boolean;\n\n /** Menu currently assigned to the trigger. */\n protected get _menu(): MatMenuPanel | null {\n return this._menuInternal;\n }\n\n protected set _menu(menu: MatMenuPanel | null) {\n if (menu === this._menuInternal) {\n return;\n }\n\n this._menuInternal = menu;\n this._menuCloseSubscription.unsubscribe();\n\n if (menu) {\n if (menu === this._parentMaterialMenu && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuRecursiveError();\n }\n\n this._menuCloseSubscription = menu.close.subscribe((reason: MenuCloseReason) => {\n this._destroyMenu(reason);\n\n // If a click closed the menu, we should close the entire chain of nested menus.\n if ((reason === 'click' || reason === 'tab') && this._parentMaterialMenu) {\n this._parentMaterialMenu.closed.emit(reason);\n }\n });\n }\n\n this._menuItemInstance?._setTriggersSubmenu(this._triggersSubmenu());\n }\n private _menuInternal: MatMenuPanel | null = null;\n\n /** Event emitted when the associated menu is opened. */\n abstract menuOpened: EventEmitter<void>;\n\n /** Event emitted when the associated menu is closed. */\n abstract menuClosed: EventEmitter<void>;\n\n /** Gets the origin for the overlay. */\n protected abstract _getOverlayOrigin(): FlexibleConnectedPositionStrategyOrigin;\n\n protected abstract _getOutsideClickStream(overlayRef: OverlayRef): Observable<unknown>;\n\n constructor(private readonly _canHaveBackdrop: boolean) {\n const parentMenu = inject<MatMenuPanel>(MAT_MENU_PANEL, {optional: true});\n this._parentMaterialMenu = parentMenu instanceof MatMenu ? parentMenu : undefined;\n }\n\n ngOnDestroy() {\n if (this._menu && this._ownsMenu(this._menu)) {\n PANELS_TO_TRIGGERS.delete(this._menu);\n }\n\n this._pendingRemoval?.unsubscribe();\n this._menuCloseSubscription.unsubscribe();\n this._closingActionsSubscription.unsubscribe();\n\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n }\n\n /** Whether the menu is open. */\n get menuOpen(): boolean {\n return this._menuOpen;\n }\n\n /** The text direction of the containing app. */\n get dir(): Direction {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n\n /** Whether the menu triggers a sub-menu or a top-level one. */\n protected _triggersSubmenu(): boolean {\n return !!(this._menuItemInstance && this._parentMaterialMenu && this._menu);\n }\n\n protected _closeMenu() {\n this._menu?.close.emit();\n }\n\n /** Internal method to open menu providing option to auto focus on first item. */\n protected _openMenu(autoFocus: boolean): void {\n if (this._triggerIsAriaDisabled()) {\n return;\n }\n\n const menu = this._menu;\n\n if (this._menuOpen || !menu) {\n return;\n }\n\n this._pendingRemoval?.unsubscribe();\n const previousTrigger = PANELS_TO_TRIGGERS.get(menu);\n PANELS_TO_TRIGGERS.set(menu, this);\n\n // If the same menu is currently attached to another trigger,\n // we need to close it so it doesn't end up in a broken state.\n if (previousTrigger && previousTrigger !== this) {\n previousTrigger._closeMenu();\n }\n\n const overlayRef = this._createOverlay(menu);\n const overlayConfig = overlayRef.getConfig();\n const positionStrategy = overlayConfig.positionStrategy as FlexibleConnectedPositionStrategy;\n\n this._setPosition(menu, positionStrategy);\n\n if (this._canHaveBackdrop) {\n overlayConfig.hasBackdrop =\n menu.hasBackdrop == null ? !this._triggersSubmenu() : menu.hasBackdrop;\n } else {\n overlayConfig.hasBackdrop = false;\n }\n\n // We need the `hasAttached` check for the case where the user kicked off a removal animation,\n // but re-entered the menu. Re-attaching the same portal will trigger an error otherwise.\n if (!overlayRef.hasAttached()) {\n overlayRef.attach(this._getPortal(menu));\n menu.lazyContent?.attach(this.menuData);\n }\n\n this._closingActionsSubscription = this._menuClosingActions().subscribe(() =>\n this._closeMenu(),\n );\n menu.parentMenu = this._triggersSubmenu() ? this._parentMaterialMenu : undefined;\n menu.direction = this.dir;\n\n if (autoFocus) {\n menu.focusFirstItem(this._openedBy || 'program');\n }\n\n this._setIsMenuOpen(true);\n\n if (menu instanceof MatMenu) {\n menu._setIsOpen(true);\n menu._directDescendantItems.changes.pipe(takeUntil(menu.close)).subscribe(() => {\n // Re-adjust the position without locking when the amount of items\n // changes so that the overlay is allowed to pick a new optimal position.\n positionStrategy.withLockedPosition(false).reapplyLastPosition();\n positionStrategy.withLockedPosition(true);\n });\n }\n }\n\n /**\n * Focuses the menu trigger.\n * @param origin Source of the menu trigger's focus.\n */\n focus(origin?: FocusOrigin, options?: FocusOptions) {\n if (this._focusMonitor && origin) {\n this._focusMonitor.focusVia(this._element, origin, options);\n } else {\n this._element.nativeElement.focus(options);\n }\n }\n\n /** Closes the menu and does the necessary cleanup. */\n protected _destroyMenu(reason: MenuCloseReason) {\n const overlayRef = this._overlayRef;\n const menu = this._menu;\n\n if (!overlayRef || !this.menuOpen) {\n return;\n }\n\n this._closingActionsSubscription.unsubscribe();\n this._pendingRemoval?.unsubscribe();\n\n // Note that we don't wait for the animation to finish if another trigger took\n // over the menu, because the panel will end up empty which looks glitchy.\n if (menu instanceof MatMenu && this._ownsMenu(menu)) {\n this._pendingRemoval = menu._animationDone.pipe(take(1)).subscribe(() => {\n overlayRef.detach();\n\n // Only detach the lazy content if no other trigger took over the menu, otherwise we may\n // detach something we no longer own. Note that we don't use `this._ownsMenu` here,\n // because the current trigger relinquishes ownership as soon as the closing sequence\n // is kicked off whereas the animation takes some time to play out.\n if (!PANELS_TO_TRIGGERS.has(menu)) {\n menu.lazyContent?.detach();\n }\n });\n menu._setIsOpen(false);\n } else {\n overlayRef.detach();\n menu?.lazyContent?.detach();\n }\n\n if (menu && this._ownsMenu(menu)) {\n PANELS_TO_TRIGGERS.delete(menu);\n }\n\n // Always restore focus if the user is navigating using the keyboard or the menu was opened\n // programmatically. We don't restore for non-root triggers, because it can prevent focus\n // from making it back to the root trigger when closing a long chain of menus by clicking\n // on the backdrop.\n if (\n this.restoreFocus &&\n (reason === 'keydown' || !this._openedBy || !this._triggersSubmenu())\n ) {\n this.focus(this._openedBy);\n }\n\n this._openedBy = undefined;\n this._setIsMenuOpen(false);\n }\n\n // set state rather than toggle to support triggers sharing a menu\n private _setIsMenuOpen(isOpen: boolean): void {\n if (isOpen !== this._menuOpen) {\n this._menuOpen = isOpen;\n this._menuOpen ? this.menuOpened.emit() : this.menuClosed.emit();\n\n if (this._triggersSubmenu()) {\n this._menuItemInstance._setHighlighted(isOpen);\n }\n\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * This method creates the overlay from the provided menu's template and saves its\n * OverlayRef so that it can be attached to the DOM when openMenu is called.\n */\n private _createOverlay(menu: MatMenuPanel): OverlayRef {\n if (!this._overlayRef) {\n const config = this._getOverlayConfig(menu);\n this._subscribeToPositions(\n menu,\n config.positionStrategy as FlexibleConnectedPositionStrategy,\n );\n this._overlayRef = createOverlayRef(this._injector, config);\n this._overlayRef.keydownEvents().subscribe(event => {\n if (this._menu instanceof MatMenu) {\n this._menu._handleKeydown(event);\n }\n });\n }\n\n return this._overlayRef;\n }\n\n /**\n * This method builds the configuration object needed to create the overlay, the OverlayState.\n * @returns OverlayConfig\n */\n private _getOverlayConfig(menu: MatMenuPanel): OverlayConfig {\n return new OverlayConfig({\n positionStrategy: createFlexibleConnectedPositionStrategy(\n this._injector,\n this._getOverlayOrigin(),\n )\n .withLockedPosition()\n .withGrowAfterOpen()\n .withTransformOriginOn('.mat-menu-panel, .mat-mdc-menu-panel'),\n backdropClass: menu.backdropClass || 'cdk-overlay-transparent-backdrop',\n panelClass: menu.overlayPanelClass,\n scrollStrategy: this._scrollStrategy(),\n direction: this._dir || 'ltr',\n disableAnimations: this._animationsDisabled,\n });\n }\n\n /**\n * Listens to changes in the position of the overlay and sets the correct classes\n * on the menu based on the new position. This ensures the animation origin is always\n * correct, even if a fallback position is used for the overlay.\n */\n private _subscribeToPositions(menu: MatMenuPanel, position: FlexibleConnectedPositionStrategy) {\n if (menu.setPositionClasses) {\n position.positionChanges.subscribe(change => {\n this._ngZone.run(() => {\n const posX: MenuPositionX =\n change.connectionPair.overlayX === 'start' ? 'after' : 'before';\n const posY: MenuPositionY = change.connectionPair.overlayY === 'top' ? 'below' : 'above';\n menu.setPositionClasses!(posX, posY);\n });\n });\n }\n }\n\n /**\n * Sets the appropriate positions on a position strategy\n * so the overlay connects with the trigger correctly.\n * @param positionStrategy Strategy whose position to update.\n */\n private _setPosition(menu: MatMenuPanel, positionStrategy: FlexibleConnectedPositionStrategy) {\n let [originX, originFallbackX]: HorizontalConnectionPos[] =\n menu.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'];\n\n let [overlayY, overlayFallbackY]: VerticalConnectionPos[] =\n menu.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];\n\n let [originY, originFallbackY] = [overlayY, overlayFallbackY];\n let [overlayX, overlayFallbackX] = [originX, originFallbackX];\n let offsetY = 0;\n\n if (this._triggersSubmenu()) {\n // When the menu is a sub-menu, it should always align itself\n // to the edges of the trigger, instead of overlapping it.\n overlayFallbackX = originX = menu.xPosition === 'before' ? 'start' : 'end';\n originFallbackX = overlayX = originX === 'end' ? 'start' : 'end';\n\n if (this._parentMaterialMenu) {\n if (this._parentInnerPadding == null) {\n const firstItem = this._parentMaterialMenu.items.first;\n this._parentInnerPadding = firstItem ? firstItem._getHostElement().offsetTop : 0;\n }\n\n offsetY = overlayY === 'bottom' ? this._parentInnerPadding : -this._parentInnerPadding;\n }\n } else if (!menu.overlapTrigger) {\n originY = overlayY === 'top' ? 'bottom' : 'top';\n originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';\n }\n\n positionStrategy.withPositions([\n {originX, originY, overlayX, overlayY, offsetY},\n {originX: originFallbackX, originY, overlayX: overlayFallbackX, overlayY, offsetY},\n {\n originX,\n originY: originFallbackY,\n overlayX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY,\n },\n {\n originX: originFallbackX,\n originY: originFallbackY,\n overlayX: overlayFallbackX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY,\n },\n ]);\n }\n\n /** Returns a stream that emits whenever an action that should close the menu occurs. */\n private _menuClosingActions() {\n const outsideClicks = this._getOutsideClickStream(this._overlayRef!);\n const detachments = this._overlayRef!.detachments();\n const parentClose = this._parentMaterialMenu ? this._parentMaterialMenu.closed : observableOf();\n const hover = this._parentMaterialMenu\n ? this._parentMaterialMenu\n ._hovered()\n .pipe(filter(active => this._menuOpen && active !== this._menuItemInstance))\n : observableOf();\n\n return merge(outsideClicks, parentClose as Observable<MenuCloseReason>, hover, detachments);\n }\n\n /** Gets the portal that should be attached to the overlay. */\n private _getPortal(menu: MatMenuPanel): TemplatePortal {\n // Note that we can avoid this check by keeping the portal on the menu panel.\n // While it would be cleaner, we'd have to introduce another required method on\n // `MatMenuPanel`, making it harder to consume.\n if (!this._portal || this._portal.templateRef !== menu.templateRef) {\n this._portal = new TemplatePortal(menu.templateRef, this._viewContainerRef);\n }\n\n return this._portal;\n }\n\n /**\n * Determines whether the trigger owns a specific menu panel, at the current point in time.\n * This allows us to distinguish the case where the same panel is passed into multiple triggers\n * and multiple are open at a time.\n */\n private _ownsMenu(menu: MatMenuPanel): boolean {\n return PANELS_TO_TRIGGERS.get(menu) === this;\n }\n\n /**\n * Detect if the trigger element is aria-disabled, indicating it should behave as\n * disabled and not open the menu.\n */\n private _triggerIsAriaDisabled() {\n return booleanAttribute(this._element.nativeElement.getAttribute('aria-disabled'));\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader} from '@angular/cdk/a11y';\nimport {ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE} from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n Directive,\n EventEmitter,\n inject,\n Input,\n OnDestroy,\n Output,\n Renderer2,\n} from '@angular/core';\nimport {OverlayRef} from '@angular/cdk/overlay';\nimport {Subscription} from 'rxjs';\nimport {MatMenuPanel} from './menu-panel';\nimport {_animationsDisabled} from '../core';\nimport {MatMenuTriggerBase} from './menu-trigger-base';\n\n/** Directive applied to an element that should trigger a `mat-menu`. */\n@Directive({\n selector: '[mat-menu-trigger-for], [matMenuTriggerFor]',\n host: {\n 'class': 'mat-mdc-menu-trigger',\n '[attr.aria-haspopup]': 'menu ? \"menu\" : null',\n '[attr.aria-expanded]': 'menuOpen',\n '[attr.aria-controls]': 'menuOpen ? menu?.panelId : null',\n '(click)': '_handleClick($event)',\n '(mousedown)': '_handleMousedown($event)',\n '(keydown)': '_handleKeydown($event)',\n },\n exportAs: 'matMenuTrigger',\n})\nexport class MatMenuTrigger extends MatMenuTriggerBase implements AfterContentInit, OnDestroy {\n private _cleanupTouchstart: () => void;\n private _hoverSubscription = Subscription.EMPTY;\n\n /**\n * @deprecated\n * @breaking-change 8.0.0\n */\n @Input('mat-menu-trigger-for')\n get _deprecatedMatMenuTriggerFor(): MatMenuPanel | null {\n return this.menu;\n }\n set _deprecatedMatMenuTriggerFor(v: MatMenuPanel | null) {\n this.menu = v;\n }\n\n /** References the menu instance that the trigger is associated with. */\n @Input('matMenuTriggerFor')\n get menu(): MatMenuPanel | null {\n return this._menu;\n }\n set menu(menu: MatMenuPanel | null) {\n this._menu = menu;\n }\n\n /** Data to be passed along to any lazily-rendered content. */\n @Input('matMenuTriggerData')\n override menuData: any;\n\n /**\n * Whether focus should be restored when the menu is closed.\n * Note that disabling this option can have accessibility implications\n * and it's up to you to manage focus, if you decide to turn it off.\n */\n @Input('matMenuTriggerRestoreFocus')\n override restoreFocus: boolean = true;\n\n /** Event emitted when the associated menu is opened. */\n @Output() readonly menuOpened: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Event emitted when the associated menu is opened.\n * @deprecated Switch to `menuOpened` instead\n * @breaking-change 8.0.0\n */\n // tslint:disable-next-line:no-output-on-prefix\n @Output() readonly onMenuOpen: EventEmitter<void> = this.menuOpened;\n\n /** Event emitted when the associated menu is closed. */\n @Output() readonly menuClosed: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Event emitted when the associated menu is closed.\n * @deprecated Switch to `menuClosed` instead\n * @breaking-change 8.0.0\n */\n // tslint:disable-next-line:no-output-on-prefix\n @Output() readonly onMenuClose: EventEmitter<void> = this.menuClosed;\n\n constructor(...args: unknown[]);\n\n constructor() {\n super(true);\n\n const renderer = inject(Renderer2);\n this._cleanupTouchstart = renderer.listen(\n this._element.nativeElement,\n 'touchstart',\n (event: TouchEvent) => {\n if (!isFakeTouchstartFromScreenReader(event)) {\n this._openedBy = 'touch';\n }\n },\n {passive: true},\n );\n }\n\n /** Whether the menu triggers a sub-menu or a top-level one. */\n triggersSubmenu(): boolean {\n return super._triggersSubmenu();\n }\n\n /** Toggles the menu between the open and closed states. */\n toggleMenu(): void {\n return this.menuOpen ? this.closeMenu() : this.openMenu();\n }\n\n /** Opens the menu. */\n openMenu(): void {\n this._openMenu(true);\n }\n\n /** Closes the menu. */\n closeMenu(): void {\n this._closeMenu();\n }\n\n /**\n * Updates the position of the menu to ensure that it fits all options within the viewport.\n */\n updatePosition(): void {\n this._overlayRef?.updatePosition();\n }\n\n ngAfterContentInit() {\n this._handleHover();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this._cleanupTouchstart();\n this._hoverSubscription.unsubscribe();\n }\n\n protected override _getOverlayOrigin() {\n return this._element;\n }\n\n protected override _getOutsideClickStream(overlayRef: OverlayRef) {\n return overlayRef.backdropClick();\n }\n\n /** Handles mouse presses on the trigger. */\n _handleMousedown(event: MouseEvent): void {\n if (!isFakeMousedownFromScreenReader(event)) {\n // Since right or middle button clicks won't trigger the `click` event,\n // we shouldn't consider the menu as opened by mouse in those cases.\n this._openedBy = event.button === 0 ? 'mouse' : undefined;\n\n // Since clicking on the trigger won't close the menu if it opens a sub-menu,\n // we should prevent focus from moving onto it via click to avoid the\n // highlight from lingering on the menu item.\n if (this.triggersSubmenu()) {\n event.preventDefault();\n }\n }\n }\n\n /** Handles key presses on the trigger. */\n _handleKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n\n // Pressing enter on the trigger will trigger the click handler later.\n if (keyCode === ENTER || keyCode === SPACE) {\n this._openedBy = 'keyboard';\n }\n\n if (\n this.triggersSubmenu() &&\n ((keyCode === RIGHT_ARROW && this.dir === 'ltr') ||\n (keyCode === LEFT_ARROW && this.dir === 'rtl'))\n ) {\n this._openedBy = 'keyboard';\n this.openMenu();\n }\n }\n\n /** Handles click events on the trigger. */\n _handleClick(event: MouseEvent): void {\n if (this.triggersSubmenu()) {\n // Stop event propagation to avoid closing the parent menu.\n event.stopPropagation();\n this.openMenu();\n } else {\n this.toggleMenu();\n }\n }\n\n /** Handles the cases where the user hovers over the trigger. */\n private _handleHover() {\n // Subscribe to changes in the hovered item in order to toggle the panel.\n if (this.triggersSubmenu() && this._parentMaterialMenu) {\n this._hoverSubscription = this._parentMaterialMenu._hovered().subscribe(active => {\n if (\n active === this._menuItemInstance &&\n !active.disabled &&\n // Ignore hover events if the parent menu is in the process of being closed (see #31956).\n this._parentMaterialMenu?._panelAnimationState !== 'void'\n ) {\n this._openedBy = 'mouse';\n // Open the menu, but do NOT auto-focus on first item when just hovering.\n // When VoiceOver is enabled, this is particularly confusing as the focus will\n // cause another hover event, and continue opening sub-menus without interaction.\n this._openMenu(false);\n }\n });\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n booleanAttribute,\n Directive,\n DOCUMENT,\n EventEmitter,\n inject,\n Input,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport {MatMenuTriggerBase} from './menu-trigger-base';\nimport {\n FlexibleConnectedPositionStrategy,\n OverlayRef,\n ScrollDispatcher,\n ViewportRuler,\n} from '@angular/cdk/overlay';\nimport {_getEventTarget, _getShadowRoot} from '@angular/cdk/platform';\nimport {Subscription} from 'rxjs';\nimport {skipWhile} from 'rxjs/operators';\nimport {MatMenuPanel} from './menu-panel';\nimport {_animationsDisabled} from '../core';\nimport {MenuCloseReason} from './menu';\n\n/**\n * Trigger that opens a menu whenever the user right-clicks within its host element.\n */\n@Directive({\n selector: '[matContextMenuTriggerFor]',\n host: {\n 'class': 'mat-context-menu-trigger',\n '[class.mat-context-menu-trigger-disabled]': 'disabled',\n '[attr.aria-controls]': 'menuOpen ? menu?.panelId : null',\n '(contextmenu)': '_handleContextMenuEvent($event)',\n },\n exportAs: 'matContextMenuTrigger',\n})\nexport class MatContextMenuTrigger extends MatMenuTriggerBase implements OnDestroy {\n private _point = {x: 0, y: 0, initialX: 0, initialY: 0, initialScrollX: 0, initialScrollY: 0};\n private _triggerPressedControl = false;\n private _rootNode: DocumentOrShadowRoot | undefined;\n private _document = inject(DOCUMENT);\n private _viewportRuler = inject(ViewportRuler);\n private _scrollDispatcher = inject(ScrollDispatcher);\n private _scrollSubscription: Subscription | undefined;\n\n /** References the menu instance that the trigger is associated with. */\n @Input({alias: 'matContextMenuTriggerFor', required: true})\n get menu(): MatMenuPanel | null {\n return this._menu;\n }\n set menu(menu: MatMenuPanel | null) {\n this._menu = menu;\n }\n\n /** Data to be passed along to any lazily-rendered content. */\n @Input('matContextMenuTriggerData')\n override menuData: any;\n\n /**\n * Whether focus should be restored when the menu is closed.\n * Note that disabling this option can have accessibility implications\n * and it's up to you to manage focus, if you decide to turn it off.\n */\n @Input('matContextMenuTriggerRestoreFocus')\n override restoreFocus: boolean = true;\n\n /** Whether the context menu is disabled. */\n @Input({alias: 'matContextMenuTriggerDisabled', transform: booleanAttribute})\n disabled: boolean = false;\n\n /** Event emitted when the associated menu is opened. */\n @Output()\n readonly menuOpened: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emitted when the associated menu is closed. */\n @Output() readonly menuClosed: EventEmitter<void> = new EventEmitter<void>();\n\n constructor() {\n super(false);\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._scrollSubscription?.unsubscribe();\n }\n\n /** Handler for `contextmenu` events. */\n protected _handleContextMenuEvent(event: MouseEvent) {\n if (!this.disabled) {\n event.preventDefault();\n\n // If the menu is already open, only update its position.\n if (this.menuOpen) {\n this._initializePoint(event.clientX, event.clientY);\n this._updatePosition();\n } else {\n this._openContextMenu(event);\n }\n }\n }\n\n protected override _destroyMenu(reason: MenuCloseReason): void {\n super._destroyMenu(reason);\n this._scrollSubscription?.unsubscribe();\n }\n\n protected override _getOverlayOrigin() {\n return this._point;\n }\n\n protected override _getOutsideClickStream(overlayRef: OverlayRef) {\n return overlayRef.outsidePointerEvents().pipe(\n skipWhile((event, index) => {\n if (event.type === 'contextmenu') {\n // Do not close when attempting to open a context menu within the trigger.\n return this._isWithinMenuOrTrigger(_getEventTarget(event) as Element);\n } else if (event.type === 'auxclick') {\n // Skip the first `auxclick` since it happens at\n // the same time as the event that opens the menu.\n if (index === 0) {\n return true;\n }\n\n // Do not close on `auxclick` within the menu since we want to reposition the menu\n // instead. Note that we have to resolve the clicked element using its position,\n // rather than `event.target`, because the `target` is set to the `body`.\n this._rootNode ??= _getShadowRoot(this._element.nativeElement) || this._document;\n return this._isWithinMenuOrTrigger(\n this._rootNode.elementFromPoint(event.clientX, event.clientY),\n );\n }\n\n // Using a mouse, the `contextmenu` event can fire either when pressing the right button\n // or left button + control. Most browsers won't dispatch a `click` event right after\n // a `contextmenu` event triggered by left button + control, but Safari will (see #27832).\n // This closes the menu immediately. To work around it, we check that both the triggering\n // event and the current outside click event both had the control key pressed, and that\n // that this is the first outside click event.\n return this._triggerPressedControl && index === 0 && event.ctrlKey;\n }),\n );\n }\n\n /** Checks whether an element is within the trigger or the opened overlay. */\n private _isWithinMenuOrTrigger(target: Element | null): boolean {\n if (!target) {\n return false;\n }\n\n const element = this._element.nativeElement;\n if (target === element || element.contains(target)) {\n return true;\n }\n\n const overlay = this._overlayRef?.hostElement;\n return overlay === target || !!overlay?.contains(target);\n }\n\n /** Opens the context menu. */\n private _openContextMenu(event: MouseEvent) {\n // A context menu can be triggered via a mouse right click or a keyboard shortcut.\n if (event.button === 2) {\n this._openedBy = 'mouse';\n } else {\n this._openedBy = event.button === 0 ? 'keyboard' : undefined;\n }\n\n this._initializePoint(event.clientX, event.clientY);\n this._triggerPressedControl = event.ctrlKey;\n super._openMenu(true);\n this._scrollSubscription?.unsubscribe();\n this._scrollSubscription = this._scrollDispatcher.scrolled(0).subscribe(() => {\n // When passing a point to the connected position strategy, the position\n // won't update as the user is scrolling so we have to do it manually.\n const position = this._viewportRuler.getViewportScrollPosition();\n const point = this._point;\n point.y = point.initialY + (point.initialScrollY - position.top);\n point.x = point.initialX + (point.initialScrollX - position.left);\n this._updatePosition();\n });\n }\n\n /** Initializes the point representing the origin relative to which the menu will be rendered. */\n private _initializePoint(x: number, y: number) {\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n const point = this._point;\n point.x = point.initialX = x;\n point.y = point.initialY = y;\n point.initialScrollX = scrollPosition.left;\n point.initialScrollY = scrollPosition.top;\n }\n\n /** Refreshes the position of the overlay. */\n private _updatePosition() {\n const overlayRef = this._overlayRef;\n\n if (overlayRef) {\n const positionStrategy = overlayRef.getConfig()\n .positionStrategy as FlexibleConnectedPositionStrategy;\n positionStrategy.setOrigin(this._point);\n overlayRef.updatePosition();\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {MatRippleModule} from '../core';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {CdkScrollableModule} from '@angular/cdk/scrolling';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {MatMenu} from './menu';\nimport {MatMenuItem} from './menu-item';\nimport {MatMenuContent} from './menu-content';\nimport {MatMenuTrigger} from './menu-trigger';\nimport {MatContextMenuTrigger} from './context-menu-trigger';\n\n@NgModule({\n imports: [\n MatRippleModule,\n OverlayModule,\n MatMenu,\n MatMenuItem,\n MatMenuContent,\n MatMenuTrigger,\n MatContextMenuTrigger,\n ],\n exports: [\n BidiModule,\n CdkScrollableModule,\n MatMenu,\n MatMenuItem,\n MatMenuContent,\n MatMenuTrigger,\n MatContextMenuTrigger,\n ],\n})\nexport class MatMenuModule {}\n"],"names":["MAT_MENU_PANEL","InjectionToken","MatMenuItem","_elementRef","inject","ElementRef","_document","DOCUMENT","_focusMonitor","FocusMonitor","_parentMenu","optional","_changeDetectorRef","ChangeDetectorRef","role","disabled","disableRipple","_hovered","Subject","_focused","_highlighted","_triggersSubmenu","constructor","_CdkPrivateStyleLoader","load","_StructuralStylesLoader","addItem","focus","origin","options","focusVia","_getHostElement","next","ngAfterViewInit","monitor","ngOnDestroy","stopMonitoring","removeItem","complete","_getTabIndex","nativeElement","_checkDisabled","event","preventDefault","stopPropagation","_handleMouseEnter","getLabel","clone","cloneNode","icons","querySelectorAll","i","length","remove","textContent","trim","_setHighlighted","isHighlighted","markForCheck","_setTriggersSubmenu","triggersSubmenu","_hasFocus","activeElement","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","booleanAttribute","host","listeners","properties","classAttribute","exportAs","ngImport","template","MatRipple","selector","inputs","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","imports","Input","transform","throwMatMenuInvalidPositionX","Error","throwMatMenuInvalidPositionY","throwMatMenuRecursiveError","MAT_MENU_CONTENT","MatMenuContent","_template","TemplateRef","_appRef","ApplicationRef","_injector","Injector","_viewContainerRef","ViewContainerRef","_portal","_outlet","_attached","attach","context","TemplatePortal","detach","DomPortalOutlet","createElement","element","elementRef","parentNode","insertBefore","outletElement","isAttached","dispose","Directive","isStandalone","providers","provide","useExisting","args","MAT_MENU_DEFAULT_OPTIONS","providedIn","factory","overlapTrigger","xPosition","yPosition","backdropClass","ENTER_ANIMATION","EXIT_ANIMATION","MatMenu","_keyManager","_xPosition","_yPosition","_firstItemFocusRef","_exitFallbackTimeout","_animationsDisabled","_allItems","_directDescendantItems","QueryList","_classList","_panelAnimationState","_animationDone","_isAnimating","signal","parentMenu","direction","overlayPanelClass","ariaLabel","ariaLabelledby","ariaDescribedby","value","ngDevMode","setPositionClasses","templateRef","items","lazyContent","hasBackdrop","panelClass","classes","previousPanelClass","_previousPanelClass","newClassList","split","forEach","className","classList","closed","EventEmitter","close","panelId","_IdGenerator","getId","defaultOptions","ngOnInit","ngAfterContentInit","_updateDirectDescendants","FocusKeyManager","withWrap","withTypeAhead","withHomeAndEnd","tabOut","subscribe","emit","changes","pipe","startWith","switchMap","merge","map","item","focusedItem","updateActiveItem","itemsList","manager","activeItem","toArray","index","Math","max","min","activeItemIndex","setActiveItem","setNextItemActive","destroy","clearTimeout","itemChanges","_item","_handleKeydown","keyCode","ESCAPE","hasModifierKey","LEFT_ARROW","RIGHT_ARROW","UP_ARROW","DOWN_ARROW","setFocusOrigin","onKeydown","focusFirstItem","afterNextRender","menuPanel","_resolvePanel","contains","document","setFirstItemActive","injector","resetActiveItem","setElevation","_depth","posX","posY","_onAnimationDone","state","isExit","undefined","set","_onAnimationStart","_setIsOpen","isOpen","scrollTop","setTimeout","reset","filter","notifyOnChanges","first","closest","outputs","queries","propertyName","predicate","descendants","viewQueries","styles","ContentChildren","ViewChild","ContentChild","Output","MAT_MENU_SCROLL_STRATEGY","createRepositionScrollStrategy","MENU_PANEL_TOP_PADDING","PANELS_TO_TRIGGERS","WeakMap","MatMenuTriggerBase","_canHaveBackdrop","_element","_menuItemInstance","self","_dir","Directionality","_ngZone","NgZone","_scrollStrategy","_overlayRef","_menuOpen","_closingActionsSubscription","Subscription","EMPTY","_menuCloseSubscription","_pendingRemoval","_parentMaterialMenu","_parentInnerPadding","_openedBy","_menu","_menuInternal","menu","unsubscribe","reason","_destroyMenu","_ownsMenu","delete","menuOpen","dir","_closeMenu","_openMenu","autoFocus","_triggerIsAriaDisabled","previousTrigger","get","overlayRef","_createOverlay","overlayConfig","getConfig","positionStrategy","_setPosition","hasAttached","_getPortal","menuData","_menuClosingActions","_setIsMenuOpen","takeUntil","withLockedPosition","reapplyLastPosition","take","has","restoreFocus","menuOpened","menuClosed","config","_getOverlayConfig","_subscribeToPositions","createOverlayRef","keydownEvents","OverlayConfig","createFlexibleConnectedPositionStrategy","_getOverlayOrigin","withGrowAfterOpen","withTransformOriginOn","scrollStrategy","disableAnimations","position","positionChanges","change","run","connectionPair","overlayX","overlayY","originX","originFallbackX","overlayFallbackY","originY","originFallbackY","overlayFallbackX","offsetY","firstItem","offsetTop","withPositions","outsideClicks","_getOutsideClickStream","detachments","parentClose","observableOf","hover","active","getAttribute","MatMenuTrigger","_cleanupTouchstart","_hoverSubscription","_deprecatedMatMenuTriggerFor","v","onMenuOpen","onMenuClose","renderer","Renderer2","listen","isFakeTouchstartFromScreenReader","passive","toggleMenu","closeMenu","openMenu","updatePosition","_handleHover","backdropClick","_handleMousedown","isFakeMousedownFromScreenReader","button","ENTER","SPACE","_handleClick","usesInheritance","MatContextMenuTrigger","_point","x","y","initialX","initialY","initialScrollX","initialScrollY","_triggerPressedControl","_rootNode","_viewportRuler","ViewportRuler","_scrollDispatcher","ScrollDispatcher","_scrollSubscription","_handleContextMenuEvent","_initializePoint","clientX","clientY","_updatePosition","_openContextMenu","outsidePointerEvents","skipWhile","_isWithinMenuOrTrigger","_getEventTarget","_getShadowRoot","elementFromPoint","ctrlKey","overlay","hostElement","scrolled","getViewportScrollPosition","point","top","left","scrollPosition","setOrigin","ɵdir","ɵɵngDeclareDirective","alias","required","MatMenuModule","NgModule","ɵmod","ɵɵngDeclareNgModule","MatRippleModule","OverlayModule","BidiModule","CdkScrollableModule","ɵinj","ɵɵngDeclareInjector","exports"],"mappings":"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"}
|