mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-18 12:37:53 +00:00
1 line
201 KiB
JSON
1 line
201 KiB
JSON
{"ast":null,"code":"import { FocusMonitor, FocusKeyManager, isFakeTouchstartFromScreenReader, isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { UP_ARROW, DOWN_ARROW, RIGHT_ARROW, LEFT_ARROW, ESCAPE, hasModifierKey, ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { InjectionToken, Directive, TemplateRef, ComponentFactoryResolver, ApplicationRef, Injector, ViewContainerRef, Inject, ChangeDetectorRef, Component, ChangeDetectionStrategy, ViewEncapsulation, ElementRef, Optional, Input, HostListener, QueryList, EventEmitter, NgZone, ContentChildren, ViewChild, ContentChild, Output, Self, NgModule } from '@angular/core';\nimport { Subject, Subscription, merge, of, asapScheduler } from 'rxjs';\nimport { startWith, switchMap, take, filter, takeUntil, delay } from 'rxjs/operators';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { TemplatePortal, DomPortalOutlet } from '@angular/cdk/portal';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { mixinDisableRipple, mixinDisabled, MatCommonModule, MatRippleModule } from '@angular/material/core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\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.io/license\n */\n/**\n * Animations used by the mat-menu component.\n * Animation duration and timing values are based on:\n * https://material.io/guidelines/components/menus.html#menus-usage\n * @docs-private\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/cdk/a11y';\nimport * as ɵngcc2 from '@angular/material/core';\nimport * as ɵngcc3 from '@angular/common';\nimport * as ɵngcc4 from '@angular/cdk/overlay';\nimport * as ɵngcc5 from '@angular/cdk/bidi';\nconst _c0 = [\"mat-menu-item\", \"\"];\nconst _c1 = [\"*\"];\nfunction MatMenu_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r2 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵlistener(\"keydown\", function MatMenu_ng_template_0_Template_div_keydown_0_listener($event) {\n ɵngcc0.ɵɵrestoreView(_r2);\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n return ɵngcc0.ɵɵresetView(ctx_r1._handleKeydown($event));\n })(\"click\", function MatMenu_ng_template_0_Template_div_click_0_listener() {\n ɵngcc0.ɵɵrestoreView(_r2);\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n return ɵngcc0.ɵɵresetView(ctx_r3.closed.emit(\"click\"));\n })(\"@transformMenu.start\", function MatMenu_ng_template_0_Template_div_animation_transformMenu_start_0_listener($event) {\n ɵngcc0.ɵɵrestoreView(_r2);\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n return ɵngcc0.ɵɵresetView(ctx_r4._onAnimationStart($event));\n })(\"@transformMenu.done\", function MatMenu_ng_template_0_Template_div_animation_transformMenu_done_0_listener($event) {\n ɵngcc0.ɵɵrestoreView(_r2);\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n return ɵngcc0.ɵɵresetView(ctx_r5._onAnimationDone($event));\n });\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"id\", ctx_r0.panelId)(\"ngClass\", ctx_r0._classList)(\"@transformMenu\", ctx_r0._panelAnimationState);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r0.ariaLabel || null)(\"aria-labelledby\", ctx_r0.ariaLabelledby || null)(\"aria-describedby\", ctx_r0.ariaDescribedby || null);\n }\n}\nconst matMenuAnimations = {\n /**\n * This animation controls the menu panel's entry and exit from the page.\n *\n * When the menu panel is added to the DOM, it scales in and fades in its border.\n *\n * When the menu panel is removed from the DOM, it simply fades out after a brief\n * delay to display the ripple.\n */\n transformMenu: trigger('transformMenu', [state('void', style({\n opacity: 0,\n transform: 'scale(0.8)'\n })), transition('void => enter', animate('120ms cubic-bezier(0, 0, 0.2, 1)', style({\n opacity: 1,\n transform: 'scale(1)'\n }))), transition('* => void', animate('100ms 25ms linear', style({\n opacity: 0\n })))]),\n /**\n * This animation fades in the background color and content of the menu panel\n * after its containing element is scaled in.\n */\n fadeInItems: trigger('fadeInItems', [\n // TODO(crisbeto): this is inside the `transformMenu`\n // now. Remove next time we do breaking changes.\n state('showing', style({\n opacity: 1\n })), transition('void => *', [style({\n opacity: 0\n }), animate('400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')])])\n};\n/**\n * @deprecated\n * @breaking-change 8.0.0\n * @docs-private\n */\nconst fadeInItems = matMenuAnimations.fadeInItems;\n/**\n * @deprecated\n * @breaking-change 8.0.0\n * @docs-private\n */\nconst transformMenu = matMenuAnimations.transformMenu;\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.io/license\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 */\nconst MAT_MENU_CONTENT = new InjectionToken('MatMenuContent');\n/**\n * Menu content that will be rendered lazily once the menu is opened.\n */\nclass MatMenuContent {\n constructor(_template, _componentFactoryResolver, _appRef, _injector, _viewContainerRef, _document, _changeDetectorRef) {\n this._template = _template;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n this._injector = _injector;\n this._viewContainerRef = _viewContainerRef;\n this._document = _document;\n this._changeDetectorRef = _changeDetectorRef;\n /** Emits when the menu content has been attached. */\n this._attached = new Subject();\n }\n /**\n * Attaches the content with a particular context.\n * @docs-private\n */\n attach(context = {}) {\n if (!this._portal) {\n this._portal = new TemplatePortal(this._template, this._viewContainerRef);\n }\n this.detach();\n if (!this._outlet) {\n this._outlet = new DomPortalOutlet(this._document.createElement('div'), this._componentFactoryResolver, this._appRef, this._injector);\n }\n const element = this._template.elementRef.nativeElement;\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 // 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 // @breaking-change 9.0.0 Make change detector ref required\n if (this._changeDetectorRef) {\n this._changeDetectorRef.markForCheck();\n }\n this._portal.attach(this._outlet, context);\n this._attached.next();\n }\n /**\n * Detaches the content.\n * @docs-private\n */\n detach() {\n if (this._portal.isAttached) {\n this._portal.detach();\n }\n }\n ngOnDestroy() {\n if (this._outlet) {\n this._outlet.dispose();\n }\n }\n}\nMatMenuContent.ɵfac = function MatMenuContent_Factory(t) {\n return new (t || MatMenuContent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef));\n};\nMatMenuContent.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n type: MatMenuContent,\n selectors: [[\"ng-template\", \"matMenuContent\", \"\"]],\n features: [ɵngcc0.ɵɵProvidersFeature([{\n provide: MAT_MENU_CONTENT,\n useExisting: MatMenuContent\n }])]\n});\nMatMenuContent.ctorParameters = () => [{\n type: TemplateRef\n}, {\n type: ComponentFactoryResolver\n}, {\n type: ApplicationRef\n}, {\n type: Injector\n}, {\n type: ViewContainerRef\n}, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n}, {\n type: ChangeDetectorRef\n}];\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatMenuContent, [{\n type: Directive,\n args: [{\n selector: 'ng-template[matMenuContent]',\n providers: [{\n provide: MAT_MENU_CONTENT,\n useExisting: MatMenuContent\n }]\n }]\n }], function () {\n return [{\n type: ɵngcc0.TemplateRef\n }, {\n type: ɵngcc0.ComponentFactoryResolver\n }, {\n type: ɵngcc0.ApplicationRef\n }, {\n type: ɵngcc0.Injector\n }, {\n type: ɵngcc0.ViewContainerRef\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: ɵngcc0.ChangeDetectorRef\n }];\n }, null);\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.io/license\n */\n/**\n * Throws an exception for the case when menu trigger doesn't have a valid mat-menu instance\n * @docs-private\n */\nfunction throwMatMenuMissingError() {\n throw Error(`matMenuTriggerFor: must pass in an mat-menu instance.\n\n Example:\n <mat-menu #menu=\"matMenu\"></mat-menu>\n <button [matMenuTriggerFor]=\"menu\"></button>`);\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 */\nfunction 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 * 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 */\nfunction 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 * 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 */\nfunction throwMatMenuRecursiveError() {\n throw Error(`matMenuTriggerFor: menu cannot contain its own trigger. Assign a menu that is ` + `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.io/license\n */\n/**\n * Injection token used to provide the parent menu to menu-specific components.\n * @docs-private\n */\nconst MAT_MENU_PANEL = new InjectionToken('MAT_MENU_PANEL');\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.io/license\n */\n// Boilerplate for applying mixins to MatMenuItem.\n/** @docs-private */\nclass MatMenuItemBase {}\nconst _MatMenuItemMixinBase = mixinDisableRipple(mixinDisabled(MatMenuItemBase));\n/**\n * Single item inside of a `mat-menu`. Provides the menu item styling and accessibility treatment.\n */\nclass MatMenuItem extends _MatMenuItemMixinBase {\n constructor(_elementRef,\n /**\n * @deprecated `_document` parameter is no longer being used and will be removed.\n * @breaking-change 12.0.0\n */\n _document, _focusMonitor, _parentMenu) {\n // @breaking-change 8.0.0 make `_focusMonitor` and `document` required params.\n super();\n this._elementRef = _elementRef;\n this._focusMonitor = _focusMonitor;\n this._parentMenu = _parentMenu;\n /** ARIA role for the menu item. */\n this.role = 'menuitem';\n /** Stream that emits when the menu item is hovered. */\n this._hovered = new Subject();\n /** Stream that emits when the menu item is focused. */\n this._focused = new Subject();\n /** Whether the menu item is highlighted. */\n this._highlighted = false;\n /** Whether the menu item acts as a trigger for a sub-menu. */\n this._triggersSubmenu = false;\n if (_parentMenu && _parentMenu.addItem) {\n _parentMenu.addItem(this);\n }\n }\n /** Focuses the menu item. */\n focus(origin, options) {\n if (this._focusMonitor && origin) {\n this._focusMonitor.focusVia(this._getHostElement(), origin, options);\n } else {\n this._getHostElement().focus(options);\n }\n this._focused.next(this);\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 ngOnDestroy() {\n if (this._focusMonitor) {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n if (this._parentMenu && this._parentMenu.removeItem) {\n this._parentMenu.removeItem(this);\n }\n this._hovered.complete();\n this._focused.complete();\n }\n /** Used to set the `tabindex`. */\n _getTabIndex() {\n return this.disabled ? '-1' : '0';\n }\n /** Returns the host DOM element. */\n _getHostElement() {\n return this._elementRef.nativeElement;\n }\n /** Prevents the default element actions if it is disabled. */\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n _checkDisabled(event) {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n /** Emits to the hover stream. */\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n _handleMouseEnter() {\n this._hovered.next(this);\n }\n /** Gets the label to be used when determining whether the option should be focused. */\n getLabel() {\n var _a, _b;\n const clone = this._elementRef.nativeElement.cloneNode(true);\n const icons = clone.querySelectorAll('mat-icon, .material-icons');\n // Strip away icons so they don't show up in the text.\n for (let i = 0; i < icons.length; i++) {\n const icon = icons[i];\n (_a = icon.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(icon);\n }\n return ((_b = clone.textContent) === null || _b === void 0 ? void 0 : _b.trim()) || '';\n }\n}\nMatMenuItem.ɵfac = function MatMenuItem_Factory(t) {\n return new (t || MatMenuItem)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.FocusMonitor), ɵngcc0.ɵɵdirectiveInject(MAT_MENU_PANEL, 8));\n};\nMatMenuItem.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n type: MatMenuItem,\n selectors: [[\"\", \"mat-menu-item\", \"\"]],\n hostAttrs: [1, \"mat-focus-indicator\"],\n hostVars: 10,\n hostBindings: function MatMenuItem_HostBindings(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function MatMenuItem_click_HostBindingHandler($event) {\n return ctx._checkDisabled($event);\n })(\"mouseenter\", function MatMenuItem_mouseenter_HostBindingHandler() {\n return ctx._handleMouseEnter();\n });\n }\n if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"role\", ctx.role)(\"tabindex\", ctx._getTabIndex())(\"aria-disabled\", ctx.disabled.toString())(\"disabled\", ctx.disabled || null);\n ɵngcc0.ɵɵclassProp(\"mat-menu-item\", true)(\"mat-menu-item-highlighted\", ctx._highlighted)(\"mat-menu-item-submenu-trigger\", ctx._triggersSubmenu);\n }\n },\n inputs: {\n disabled: \"disabled\",\n disableRipple: \"disableRipple\",\n role: \"role\"\n },\n exportAs: [\"matMenuItem\"],\n features: [ɵngcc0.ɵɵInheritDefinitionFeature],\n attrs: _c0,\n ngContentSelectors: _c1,\n decls: 2,\n vars: 2,\n consts: [[\"matRipple\", \"\", 1, \"mat-menu-ripple\", 3, \"matRippleDisabled\", \"matRippleTrigger\"]],\n template: function MatMenuItem_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n ɵngcc0.ɵɵelement(1, \"div\", 0);\n }\n if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"matRippleDisabled\", ctx.disableRipple || ctx.disabled)(\"matRippleTrigger\", ctx._getHostElement());\n }\n },\n dependencies: [ɵngcc2.MatRipple],\n encapsulation: 2,\n changeDetection: 0\n});\nMatMenuItem.ctorParameters = () => [{\n type: ElementRef\n}, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n}, {\n type: FocusMonitor\n}, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MAT_MENU_PANEL]\n }, {\n type: Optional\n }]\n}];\nMatMenuItem.propDecorators = {\n role: [{\n type: Input\n }],\n _checkDisabled: [{\n type: HostListener,\n args: ['click', ['$event']]\n }],\n _handleMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }]\n};\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatMenuItem, [{\n type: Component,\n args: [{\n selector: '[mat-menu-item]',\n exportAs: 'matMenuItem',\n inputs: ['disabled', 'disableRipple'],\n host: {\n '[attr.role]': 'role',\n '[class.mat-menu-item]': 'true',\n '[class.mat-menu-item-highlighted]': '_highlighted',\n '[class.mat-menu-item-submenu-trigger]': '_triggersSubmenu',\n '[attr.tabindex]': '_getTabIndex()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.disabled]': 'disabled || null',\n 'class': 'mat-focus-indicator'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: \"<ng-content></ng-content>\\n<div class=\\\"mat-menu-ripple\\\" matRipple\\n [matRippleDisabled]=\\\"disableRipple || disabled\\\"\\n [matRippleTrigger]=\\\"_getHostElement()\\\">\\n</div>\\n\"\n }]\n }], function () {\n return [{\n type: ɵngcc0.ElementRef\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: ɵngcc1.FocusMonitor\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MAT_MENU_PANEL]\n }, {\n type: Optional\n }]\n }];\n }, {\n role: [{\n type: Input\n }],\n /** Prevents the default element actions if it is disabled. */\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n _checkDisabled: [{\n type: HostListener,\n args: ['click', ['$event']]\n }],\n /** Emits to the hover stream. */\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n _handleMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\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.io/license\n */\n/** Injection token to be used to override the default options for `mat-menu`. */\nconst MAT_MENU_DEFAULT_OPTIONS = new InjectionToken('mat-menu-default-options', {\n providedIn: 'root',\n factory: MAT_MENU_DEFAULT_OPTIONS_FACTORY\n});\n/** @docs-private */\nfunction MAT_MENU_DEFAULT_OPTIONS_FACTORY() {\n return {\n overlapTrigger: false,\n xPosition: 'after',\n yPosition: 'below',\n backdropClass: 'cdk-overlay-transparent-backdrop'\n };\n}\n/**\n * Start elevation for the menu panel.\n * @docs-private\n */\nconst MAT_MENU_BASE_ELEVATION = 4;\nlet menuPanelUid = 0;\n/** Base class with all of the `MatMenu` functionality. */\nclass _MatMenuBase {\n constructor(_elementRef, _ngZone, _defaultOptions) {\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n this._defaultOptions = _defaultOptions;\n this._xPosition = this._defaultOptions.xPosition;\n this._yPosition = this._defaultOptions.yPosition;\n /** Only the direct descendant menu items. */\n this._directDescendantItems = new QueryList();\n /** Subscription to tab events on the menu panel */\n this._tabSubscription = Subscription.EMPTY;\n /** Config object to be passed into the menu's ngClass */\n this._classList = {};\n /** Current state of the panel animation. */\n this._panelAnimationState = 'void';\n /** Emits whenever an animation on the menu completes. */\n this._animationDone = new Subject();\n /** Class or list of classes to be added to the overlay panel. */\n this.overlayPanelClass = this._defaultOptions.overlayPanelClass || '';\n /** Class to be added to the backdrop element. */\n this.backdropClass = this._defaultOptions.backdropClass;\n this._overlapTrigger = this._defaultOptions.overlapTrigger;\n this._hasBackdrop = this._defaultOptions.hasBackdrop;\n /** Event emitted when the menu is closed. */\n this.closed = new EventEmitter();\n /**\n * Event emitted when the menu is closed.\n * @deprecated Switch to `closed` instead\n * @breaking-change 8.0.0\n */\n this.close = this.closed;\n this.panelId = `mat-menu-panel-${menuPanelUid++}`;\n }\n /** Position of the menu in the X axis. */\n get xPosition() {\n return this._xPosition;\n }\n set xPosition(value) {\n if (value !== 'before' && value !== 'after' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuInvalidPositionX();\n }\n this._xPosition = value;\n this.setPositionClasses();\n }\n /** Position of the menu in the Y axis. */\n get yPosition() {\n return this._yPosition;\n }\n set yPosition(value) {\n if (value !== 'above' && value !== 'below' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuInvalidPositionY();\n }\n this._yPosition = value;\n this.setPositionClasses();\n }\n /** Whether the menu should overlap its trigger. */\n get overlapTrigger() {\n return this._overlapTrigger;\n }\n set overlapTrigger(value) {\n this._overlapTrigger = coerceBooleanProperty(value);\n }\n /** Whether the menu has a backdrop. */\n get hasBackdrop() {\n return this._hasBackdrop;\n }\n set hasBackdrop(value) {\n this._hasBackdrop = coerceBooleanProperty(value);\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 set panelClass(classes) {\n const previousPanelClass = this._previousPanelClass;\n if (previousPanelClass && previousPanelClass.length) {\n previousPanelClass.split(' ').forEach(className => {\n this._classList[className] = false;\n });\n }\n this._previousPanelClass = classes;\n if (classes && classes.length) {\n classes.split(' ').forEach(className => {\n this._classList[className] = true;\n });\n this._elementRef.nativeElement.className = '';\n }\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 get classList() {\n return this.panelClass;\n }\n set classList(classes) {\n this.panelClass = classes;\n }\n ngOnInit() {\n this.setPositionClasses();\n }\n ngAfterContentInit() {\n this._updateDirectDescendants();\n this._keyManager = new FocusKeyManager(this._directDescendantItems).withWrap().withTypeAhead().withHomeAndEnd();\n this._tabSubscription = this._keyManager.tabOut.subscribe(() => this.closed.emit('tab'));\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.pipe(startWith(this._directDescendantItems), switchMap(items => merge(...items.map(item => item._focused)))).subscribe(focusedItem => this._keyManager.updateActiveItem(focusedItem));\n }\n ngOnDestroy() {\n this._directDescendantItems.destroy();\n this._tabSubscription.unsubscribe();\n this.closed.complete();\n }\n /** Stream that emits whenever the hovered menu item changes. */\n _hovered() {\n // Coerce the `changes` property because Angular types it as `Observable<any>`\n const itemChanges = this._directDescendantItems.changes;\n return itemChanges.pipe(startWith(this._directDescendantItems), switchMap(items => merge(...items.map(item => item._hovered))));\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) {}\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) {}\n /** Handle a keyboard event from the menu, delegating to the appropriate action. */\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n const manager = this._keyManager;\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 manager.onKeydown(event);\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 = 'program') {\n // When the content is rendered lazily, it takes a bit before the items are inside the DOM.\n if (this.lazyContent) {\n this._ngZone.onStable.pipe(take(1)).subscribe(() => this._focusFirstItem(origin));\n } else {\n this._focusFirstItem(origin);\n }\n }\n /**\n * Actual implementation that focuses the first item. Needs to be separated\n * out so we don't repeat the same logic in the public `focusFirstItem` method.\n */\n _focusFirstItem(origin) {\n const manager = this._keyManager;\n manager.setFocusOrigin(origin).setFirstItemActive();\n // If there's no active item at this point, it means that all the items are disabled.\n // Move focus to the menu panel so keyboard events like Escape still work. Also this will\n // give _some_ feedback to screen readers.\n if (!manager.activeItem && this._directDescendantItems.length) {\n let element = this._directDescendantItems.first._getHostElement().parentElement;\n // Because the `mat-menu` is at the DOM insertion point, not inside the overlay, we don't\n // have a nice way of getting a hold of the menu 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 while (element) {\n if (element.getAttribute('role') === 'menu') {\n element.focus();\n break;\n } else {\n element = element.parentElement;\n }\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 * Sets the menu panel elevation.\n * @param depth Number of parent menus that come before the menu.\n */\n setElevation(depth) {\n // The elevation starts at the base and increases by one for each level.\n // Capped at 24 because that's the maximum elevation defined in the Material design spec.\n const elevation = Math.min(MAT_MENU_BASE_ELEVATION + depth, 24);\n const newElevation = `mat-elevation-z${elevation}`;\n const customElevation = Object.keys(this._classList).find(c => c.startsWith('mat-elevation-z'));\n if (!customElevation || customElevation === this._previousElevation) {\n if (this._previousElevation) {\n this._classList[this._previousElevation] = false;\n }\n this._classList[newElevation] = true;\n this._previousElevation = newElevation;\n }\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 = this.xPosition, posY = this.yPosition) {\n const classes = this._classList;\n classes['mat-menu-before'] = posX === 'before';\n classes['mat-menu-after'] = posX === 'after';\n classes['mat-menu-above'] = posY === 'above';\n classes['mat-menu-below'] = posY === 'below';\n }\n /** Starts the enter animation. */\n _startAnimation() {\n // @breaking-change 8.0.0 Combine with _resetAnimation.\n this._panelAnimationState = 'enter';\n }\n /** Resets the panel animation to its initial state. */\n _resetAnimation() {\n // @breaking-change 8.0.0 Combine with _startAnimation.\n this._panelAnimationState = 'void';\n }\n /** Callback that is invoked when the panel animation completes. */\n _onAnimationDone(event) {\n this._animationDone.next(event);\n this._isAnimating = false;\n }\n _onAnimationStart(event) {\n this._isAnimating = true;\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 if (event.toState === 'enter' && this._keyManager.activeItemIndex === 0) {\n event.element.scrollTop = 0;\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 _updateDirectDescendants() {\n this._allItems.changes.pipe(startWith(this._allItems)).subscribe(items => {\n this._directDescendantItems.reset(items.filter(item => item._parentMenu === this));\n this._directDescendantItems.notifyOnChanges();\n });\n }\n}\n_MatMenuBase.ɵfac = function _MatMenuBase_Factory(t) {\n return new (t || _MatMenuBase)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(MAT_MENU_DEFAULT_OPTIONS));\n};\n_MatMenuBase.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n type: _MatMenuBase,\n contentQueries: function _MatMenuBase_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, MAT_MENU_CONTENT, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, MatMenuItem, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, MatMenuItem, 4);\n }\n if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.lazyContent = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._allItems = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.items = _t);\n }\n },\n viewQuery: function _MatMenuBase_Query(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(TemplateRef, 5);\n }\n if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.templateRef = _t.first);\n }\n },\n inputs: {\n backdropClass: \"backdropClass\",\n xPosition: \"xPosition\",\n yPosition: \"yPosition\",\n overlapTrigger: \"overlapTrigger\",\n hasBackdrop: \"hasBackdrop\",\n panelClass: [\"class\", \"panelClass\"],\n classList: \"classList\",\n ariaLabel: [\"aria-label\", \"ariaLabel\"],\n ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"],\n ariaDescribedby: [\"aria-describedby\", \"ariaDescribedby\"]\n },\n outputs: {\n closed: \"closed\",\n close: \"close\"\n }\n});\n_MatMenuBase.ctorParameters = () => [{\n type: ElementRef\n}, {\n type: NgZone\n}, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MAT_MENU_DEFAULT_OPTIONS]\n }]\n}];\n_MatMenuBase.propDecorators = {\n _allItems: [{\n type: ContentChildren,\n args: [MatMenuItem, {\n descendants: true\n }]\n }],\n backdropClass: [{\n type: Input\n }],\n ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }],\n ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }],\n ariaDescribedby: [{\n type: Input,\n args: ['aria-describedby']\n }],\n xPosition: [{\n type: Input\n }],\n yPosition: [{\n type: Input\n }],\n templateRef: [{\n type: ViewChild,\n args: [TemplateRef]\n }],\n items: [{\n type: ContentChildren,\n args: [MatMenuItem, {\n descendants: false\n }]\n }],\n lazyContent: [{\n type: ContentChild,\n args: [MAT_MENU_CONTENT]\n }],\n overlapTrigger: [{\n type: Input\n }],\n hasBackdrop: [{\n type: Input\n }],\n panelClass: [{\n type: Input,\n args: ['class']\n }],\n classList: [{\n type: Input\n }],\n closed: [{\n type: Output\n }],\n close: [{\n type: Output\n }]\n};\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(_MatMenuBase, [{\n type: Directive\n }], function () {\n return [{\n type: ɵngcc0.ElementRef\n }, {\n type: ɵngcc0.NgZone\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MAT_MENU_DEFAULT_OPTIONS]\n }]\n }];\n }, {\n backdropClass: [{\n type: Input\n }],\n closed: [{\n type: Output\n }],\n close: [{\n type: Output\n }],\n xPosition: [{\n type: Input\n }],\n yPosition: [{\n type: Input\n }],\n overlapTrigger: [{\n type: Input\n }],\n hasBackdrop: [{\n type: Input\n }],\n panelClass: [{\n type: Input,\n args: ['class']\n }],\n classList: [{\n type: Input\n }],\n _allItems: [{\n type: ContentChildren,\n args: [MatMenuItem, {\n descendants: true\n }]\n }],\n ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }],\n ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }],\n ariaDescribedby: [{\n type: Input,\n args: ['aria-describedby']\n }],\n templateRef: [{\n type: ViewChild,\n args: [TemplateRef]\n }],\n items: [{\n type: ContentChildren,\n args: [MatMenuItem, {\n descendants: false\n }]\n }],\n lazyContent: [{\n type: ContentChild,\n args: [MAT_MENU_CONTENT]\n }]\n });\n})();\n/** @docs-public MatMenu */\nclass MatMenu extends _MatMenuBase {\n constructor(elementRef, ngZone, defaultOptions) {\n super(elementRef, ngZone, defaultOptions);\n }\n}\nMatMenu.ɵfac = function MatMenu_Factory(t) {\n return new (t || MatMenu)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(MAT_MENU_DEFAULT_OPTIONS));\n};\nMatMenu.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n type: MatMenu,\n selectors: [[\"mat-menu\"]],\n hostVars: 3,\n hostBindings: function MatMenu_HostBindings(rf, ctx) {\n if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-label\", null)(\"aria-labelledby\", null)(\"aria-describedby\", null);\n }\n },\n exportAs: [\"matMenu\"],\n features: [ɵngcc0.ɵɵProvidersFeature([{\n provide: MAT_MENU_PANEL,\n useExisting: MatMenu\n }]), ɵngcc0.ɵɵInheritDefinitionFeature],\n ngContentSelectors: _c1,\n decls: 1,\n vars: 0,\n consts: [[\"tabindex\", \"-1\", \"role\", \"menu\", 1, \"mat-menu-panel\", 3, \"id\", \"ngClass\", \"keydown\", \"click\"], [1, \"mat-menu-content\"]],\n template: function MatMenu_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, MatMenu_ng_template_0_Template, 3, 6, \"ng-template\");\n }\n },\n dependencies: [ɵngcc3.NgClass],\n styles: [\"mat-menu{display:none}.mat-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 48px);border-radius:4px;outline:0;min-height:64px}.mat-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-menu-panel{outline:solid 1px}.mat-menu-content:not(:empty){padding-top:8px;padding-bottom:8px}.mat-menu-item{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative}.mat-menu-item::-moz-focus-inner{border:0}.mat-menu-item[disabled]{cursor:default}[dir=rtl] .mat-menu-item{text-align:right}.mat-menu-item .mat-icon{margin-right:16px;vertical-align:middle}.mat-menu-item .mat-icon svg{vertical-align:top}[dir=rtl] .mat-menu-item .mat-icon{margin-left:16px;margin-right:0}.mat-menu-item[disabled]{pointer-events:none}.cdk-high-contrast-active .mat-menu-item{margin-top:1px}.cdk-high-contrast-active .mat-menu-item.cdk-program-focused,.cdk-high-contrast-active .mat-menu-item.cdk-keyboard-focused,.cdk-high-contrast-active .mat-menu-item-highlighted{outline:dotted 1px}.mat-menu-item-submenu-trigger{padding-right:32px}.mat-menu-item-submenu-trigger::after{width:0;height:0;border-style:solid;border-width:5px 0 5px 5px;border-color:transparent transparent transparent currentColor;content:\\\"\\\";display:inline-block;position:absolute;top:50%;right:16px;transform:translateY(-50%)}[dir=rtl] .mat-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}[dir=rtl] .mat-menu-item-submenu-trigger::after{right:auto;left:16px;transform:rotateY(180deg) translateY(-50%)}button.mat-menu-item{width:100%}.mat-menu-item .mat-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\\n\"],\n encapsulation: 2,\n data: {\n animation: [matMenuAnimations.transformMenu, matMenuAnimations.fadeInItems]\n },\n changeDetection: 0\n});\nMatMenu.ctorParameters = () => [{\n type: ElementRef\n}, {\n type: NgZone\n}, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MAT_MENU_DEFAULT_OPTIONS]\n }]\n}];\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatMenu, [{\n type: Component,\n args: [{\n selector: 'mat-menu',\n template: \"<ng-template>\\n <div\\n class=\\\"mat-menu-panel\\\"\\n [id]=\\\"panelId\\\"\\n [ngClass]=\\\"_classList\\\"\\n (keydown)=\\\"_handleKeydown($event)\\\"\\n (click)=\\\"closed.emit('click')\\\"\\n [@transformMenu]=\\\"_panelAnimationState\\\"\\n (@transformMenu.start)=\\\"_onAnimationStart($event)\\\"\\n (@transformMenu.done)=\\\"_onAnimationDone($event)\\\"\\n tabindex=\\\"-1\\\"\\n role=\\\"menu\\\"\\n [attr.aria-label]=\\\"ariaLabel || null\\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledby || null\\\"\\n [attr.aria-describedby]=\\\"ariaDescribedby || null\\\">\\n <div class=\\\"mat-menu-content\\\">\\n <ng-content></ng-content>\\n </div>\\n </div>\\n</ng-template>\\n\",\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 animations: [matMenuAnimations.transformMenu, matMenuAnimations.fadeInItems],\n providers: [{\n provide: MAT_MENU_PANEL,\n useExisting: MatMenu\n }],\n styles: [\"mat-menu{display:none}.mat-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 48px);border-radius:4px;outline:0;min-height:64px}.mat-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-menu-panel{outline:solid 1px}.mat-menu-content:not(:empty){padding-top:8px;padding-bottom:8px}.mat-menu-item{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative}.mat-menu-item::-moz-focus-inner{border:0}.mat-menu-item[disabled]{cursor:default}[dir=rtl] .mat-menu-item{text-align:right}.mat-menu-item .mat-icon{margin-right:16px;vertical-align:middle}.mat-menu-item .mat-icon svg{vertical-align:top}[dir=rtl] .mat-menu-item .mat-icon{margin-left:16px;margin-right:0}.mat-menu-item[disabled]{pointer-events:none}.cdk-high-contrast-active .mat-menu-item{margin-top:1px}.cdk-high-contrast-active .mat-menu-item.cdk-program-focused,.cdk-high-contrast-active .mat-menu-item.cdk-keyboard-focused,.cdk-high-contrast-active .mat-menu-item-highlighted{outline:dotted 1px}.mat-menu-item-submenu-trigger{padding-right:32px}.mat-menu-item-submenu-trigger::after{width:0;height:0;border-style:solid;border-width:5px 0 5px 5px;border-color:transparent transparent transparent currentColor;content:\\\"\\\";display:inline-block;position:absolute;top:50%;right:16px;transform:translateY(-50%)}[dir=rtl] .mat-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}[dir=rtl] .mat-menu-item-submenu-trigger::after{right:auto;left:16px;transform:rotateY(180deg) translateY(-50%)}button.mat-menu-item{width:100%}.mat-menu-item .mat-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\\n\"]\n }]\n }], function () {\n return [{\n type: ɵngcc0.ElementRef\n }, {\n type: ɵngcc0.NgZone\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MAT_MENU_DEFAULT_OPTIONS]\n }]\n }];\n }, null);\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.io/license\n */\n/** Injection token that determines the scroll handling while the menu is open. */\nconst MAT_MENU_SCROLL_STRATEGY = new InjectionToken('mat-menu-scroll-strategy');\n/** @docs-private */\nfunction MAT_MENU_SCROLL_STRATEGY_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_MENU_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_MENU_SCROLL_STRATEGY_FACTORY\n};\n/** Default top padding of the menu panel. */\nconst MENU_PANEL_TOP_PADDING = 8;\n/** Options for binding a passive event listener. */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({\n passive: true\n});\n// TODO(andrewseguin): Remove the kebab versions in favor of camelCased attribute selectors\n/** Directive applied to an element that should trigger a `mat-menu`. */\nclass MatMenuTrigger {\n constructor(_overlay, _element, _viewContainerRef, scrollStrategy, parentMenu,\n // `MatMenuTrigger` is commonly used in combination with a `MatMenuItem`.\n // tslint:disable-next-line: lightweight-tokens\n _menuItemInstance, _dir,\n // TODO(crisbeto): make the _focusMonitor required when doing breaking changes.\n // @breaking-change 8.0.0\n _focusMonitor) {\n this._overlay = _overlay;\n this._element = _element;\n this._viewContainerRef = _viewContainerRef;\n this._menuItemInstance = _menuItemInstance;\n this._dir = _dir;\n this._focusMonitor = _focusMonitor;\n this._overlayRef = null;\n this._menuOpen = false;\n this._closingActionsSubscription = Subscription.EMPTY;\n this._hoverSubscription = Subscription.EMPTY;\n this._menuCloseSubscription = Subscription.EMPTY;\n /**\n * Handles touch start events on the trigger.\n * Needs to be an arrow function so we can easily use addEventListener and removeEventListener.\n */\n this._handleTouchStart = event => {\n if (!isFakeTouchstartFromScreenReader(event)) {\n this._openedBy = 'touch';\n }\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 this._openedBy = undefined;\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 this.restoreFocus = true;\n /** Event emitted when the associated menu is opened. */\n this.menuOpened = new EventEmitter();\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 this.onMenuOpen = this.menuOpened;\n /** Event emitted when the associated menu is closed. */\n this.menuClosed = new EventEmitter();\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 this.onMenuClose = this.menuClosed;\n this._scrollStrategy = scrollStrategy;\n this._parentMaterialMenu = parentMenu instanceof _MatMenuBase ? parentMenu : undefined;\n _element.nativeElement.addEventListener('touchstart', this._handleTouchStart, passiveEventListenerOptions);\n if (_menuItemInstance) {\n _menuItemInstance._triggersSubmenu = this.triggersSubmenu();\n }\n }\n /**\n * @deprecated\n * @breaking-change 8.0.0\n */\n get _deprecatedMatMenuTriggerFor() {\n return this.menu;\n }\n set _deprecatedMatMenuTriggerFor(v) {\n this.menu = v;\n }\n /** References the menu instance that the trigger is associated with. */\n get menu() {\n return this._menu;\n }\n set menu(menu) {\n if (menu === this._menu) {\n return;\n }\n this._menu = menu;\n this._menuCloseSubscription.unsubscribe();\n if (menu) {\n if (menu === this._parentMaterialMenu && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuRecursiveError();\n }\n this._menuCloseSubscription = menu.close.subscribe(reason => {\n this._destroyMenu(reason);\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 ngAfterContentInit() {\n this._checkMenu();\n this._handleHover();\n }\n ngOnDestroy() {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n this._element.nativeElement.removeEventListener('touchstart', this._handleTouchStart, passiveEventListenerOptions);\n this._menuCloseSubscription.unsubscribe();\n this._closingActionsSubscription.unsubscribe();\n this._hoverSubscription.unsubscribe();\n }\n /** Whether the menu is open. */\n get menuOpen() {\n return this._menuOpen;\n }\n /** The text direction of the containing app. */\n get dir() {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n /** Whether the menu triggers a sub-menu or a top-level one. */\n triggersSubmenu() {\n return !!(this._menuItemInstance && this._parentMaterialMenu);\n }\n /** Toggles the menu between the open and closed states. */\n toggleMenu() {\n return this._menuOpen ? this.closeMenu() : this.openMenu();\n }\n /** Opens the menu. */\n openMenu() {\n if (this._menuOpen) {\n return;\n }\n this._checkMenu();\n const overlayRef = this._createOverlay();\n const overlayConfig = overlayRef.getConfig();\n this._setPosition(overlayConfig.positionStrategy);\n overlayConfig.hasBackdrop = this.menu.hasBackdrop == null ? !this.triggersSubmenu() : this.menu.hasBackdrop;\n overlayRef.attach(this._getPortal());\n if (this.menu.lazyContent) {\n this.menu.lazyContent.attach(this.menuData);\n }\n this._closingActionsSubscription = this._menuClosingActions().subscribe(() => this.closeMenu());\n this._initMenu();\n if (this.menu instanceof _MatMenuBase) {\n this.menu._startAnimation();\n }\n }\n /** Closes the menu. */\n closeMenu() {\n this.menu.close.emit();\n }\n /**\n * Focuses the menu trigger.\n * @param origin Source of the menu trigger's focus.\n */\n focus(origin, options) {\n if (this._focusMonitor && origin) {\n this._focusMonitor.focusVia(this._element, origin, options);\n } else {\n this._element.nativeElement.focus(options);\n }\n }\n /** Closes the menu and does the necessary cleanup. */\n _destroyMenu(reason) {\n if (!this._overlayRef || !this.menuOpen) {\n return;\n }\n const menu = this.menu;\n this._closingActionsSubscription.unsubscribe();\n this._overlayRef.detach();\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 (this.restoreFocus && (reason === 'keydown' || !this._openedBy || !this.triggersSubmenu())) {\n this.focus(this._openedBy);\n }\n this._openedBy = undefined;\n if (menu instanceof _MatMenuBase) {\n menu._resetAnimation();\n if (menu.lazyContent) {\n // Wait for the exit animation to finish before detaching the content.\n menu._animationDone.pipe(filter(event => event.toState === 'void'), take(1),\n // Interrupt if the content got re-attached.\n takeUntil(menu.lazyContent._attached)).subscribe({\n next: () => menu.lazyContent.detach(),\n // No matter whether the content got re-attached, reset the menu.\n complete: () => this._setIsMenuOpen(false)\n });\n } else {\n this._setIsMenuOpen(false);\n }\n } else {\n this._setIsMenuOpen(false);\n if (menu.lazyContent) {\n menu.lazyContent.detach();\n }\n }\n }\n /**\n * This method sets the menu state to open and focuses the first item if\n * the menu was opened via the keyboard.\n */\n _initMenu() {\n this.menu.parentMenu = this.triggersSubmenu() ? this._parentMaterialMenu : undefined;\n this.menu.direction = this.dir;\n this._setMenuElevation();\n this.menu.focusFirstItem(this._openedBy || 'program');\n this._setIsMenuOpen(true);\n }\n /** Updates the menu elevation based on the amount of parent menus that it has. */\n _setMenuElevation() {\n if (this.menu.setElevation) {\n let depth = 0;\n let parentMenu = this.menu.parentMenu;\n while (parentMenu) {\n depth++;\n parentMenu = parentMenu.parentMenu;\n }\n this.menu.setElevation(depth);\n }\n }\n // set state rather than toggle to support triggers sharing a menu\n _setIsMenuOpen(isOpen) {\n this._menuOpen = isOpen;\n this._menuOpen ? this.menuOpened.emit() : this.menuClosed.emit();\n if (this.triggersSubmenu()) {\n this._menuItemInstance._highlighted = isOpen;\n }\n }\n /**\n * This method checks that a valid instance of MatMenu has been passed into\n * matMenuTriggerFor. If not, an exception is thrown.\n */\n _checkMenu() {\n if (!this.menu && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuMissingError();\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 _createOverlay() {\n if (!this._overlayRef) {\n const config = this._getOverlayConfig();\n this._subscribeToPositions(config.positionStrategy);\n this._overlayRef = this._overlay.create(config);\n // Consume the `keydownEvents` in order to prevent them from going to another overlay.\n // Ideally we'd also have our keyboard event logic in here, however doing so will\n // break anybody that may have implemented the `MatMenuPanel` themselves.\n this._overlayRef.keydownEvents().subscribe();\n }\n return this._overlayRef;\n }\n /**\n * This method builds the configuration object needed to create the overlay, the OverlayState.\n * @returns OverlayConfig\n */\n _getOverlayConfig() {\n return new OverlayConfig({\n positionStrategy: this._overlay.position().flexibleConnectedTo(this._element).withLockedPosition().withGrowAfterOpen().withTransformOriginOn('.mat-menu-panel, .mat-mdc-menu-panel'),\n backdropClass: this.menu.backdropClass || 'cdk-overlay-transparent-backdrop',\n panelClass: this.menu.overlayPanelClass,\n scrollStrategy: this._scrollStrategy(),\n direction: this._dir\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 _subscribeToPositions(position) {\n if (this.menu.setPositionClasses) {\n position.positionChanges.subscribe(change => {\n const posX = change.connectionPair.overlayX === 'start' ? 'after' : 'before';\n const posY = change.connectionPair.overlayY === 'top' ? 'below' : 'above';\n this.menu.setPositionClasses(posX, posY);\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 _setPosition(positionStrategy) {\n let [originX, originFallbackX] = this.menu.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'];\n let [overlayY, overlayFallbackY] = this.menu.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];\n let [originY, originFallbackY] = [overlayY, overlayFallbackY];\n let [overlayX, overlayFallbackX] = [originX, originFallbackX];\n let offsetY = 0;\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 = this.menu.xPosition === 'before' ? 'start' : 'end';\n originFallbackX = overlayX = originX === 'end' ? 'start' : 'end';\n offsetY = overlayY === 'bottom' ? MENU_PANEL_TOP_PADDING : -MENU_PANEL_TOP_PADDING;\n } else if (!this.menu.overlapTrigger) {\n originY = overlayY === 'top' ? 'bottom' : 'top';\n originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';\n }\n positionStrategy.withPositions([{\n originX,\n originY,\n overlayX,\n overlayY,\n offsetY\n }, {\n originX: originFallbackX,\n originY,\n overlayX: overlayFallbackX,\n overlayY,\n offsetY\n }, {\n originX,\n originY: originFallbackY,\n overlayX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY\n }, {\n originX: originFallbackX,\n originY: originFallbackY,\n overlayX: overlayFallbackX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY\n }]);\n }\n /** Returns a stream that emits whenever an action that should close the menu occurs. */\n _menuClosingActions() {\n const backdrop = this._overlayRef.backdropClick();\n const detachments = this._overlayRef.detachments();\n const parentClose = this._parentMaterialMenu ? this._parentMaterialMenu.closed : of();\n const hover = this._parentMaterialMenu ? this._parentMaterialMenu._hovered().pipe(filter(active => active !== this._menuItemInstance), filter(() => this._menuOpen)) : of();\n return merge(backdrop, parentClose, hover, detachments);\n }\n /** Handles mouse presses on the trigger. */\n _handleMousedown(event) {\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 // 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 /** Handles key presses on the trigger. */\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n // Pressing enter on the trigger will trigger the click handler later.\n if (keyCode === ENTER || keyCode === SPACE) {\n this._openedBy = 'keyboard';\n }\n if (this.triggersSubmenu() && (keyCode === RIGHT_ARROW && this.dir === 'ltr' || keyCode === LEFT_ARROW && this.dir === 'rtl')) {\n this._openedBy = 'keyboard';\n this.openMenu();\n }\n }\n /** Handles click events on the trigger. */\n _handleClick(event) {\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 /** Handles the cases where the user hovers over the trigger. */\n _handleHover() {\n // Subscribe to changes in the hovered item in order to toggle the panel.\n if (!this.triggersSubmenu() || !this._parentMaterialMenu) {\n return;\n }\n this._hoverSubscription = this._parentMaterialMenu._hovered()\n // Since we might have multiple competing triggers for the same menu (e.g. a sub-menu\n // with different data and triggers), we have to delay it by a tick to ensure that\n // it won't be closed immediately after it is opened.\n .pipe(filter(active => active === this._menuItemInstance && !active.disabled), delay(0, asapScheduler)).subscribe(() => {\n this._openedBy = 'mouse';\n // If the same menu is used between multiple triggers, it might still be animating\n // while the new trigger tries to re-open it. Wait for the animation to finish\n // before doing so. Also interrupt if the user moves to another item.\n if (this.menu instanceof _MatMenuBase && this.menu._isAnimating) {\n // We need the `delay(0)` here in order to avoid\n // 'changed after checked' errors in some cases. See #12194.\n this.menu._animationDone.pipe(take(1), delay(0, asapScheduler), takeUntil(this._parentMaterialMenu._hovered())).subscribe(() => this.openMenu());\n } else {\n this.openMenu();\n }\n });\n }\n /** Gets the portal that should be attached to the overlay. */\n _getPortal() {\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 !== this.menu.templateRef) {\n this._portal = new TemplatePortal(this.menu.templateRef, this._viewContainerRef);\n }\n return this._portal;\n }\n}\nMatMenuTrigger.ɵfac = function MatMenuTrigger_Factory(t) {\n return new (t || MatMenuTrigger)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.Overlay), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(MAT_MENU_SCROLL_STRATEGY), ɵngcc0.ɵɵdirectiveInject(MAT_MENU_PANEL, 8), ɵngcc0.ɵɵdirectiveInject(MatMenuItem, 10), ɵngcc0.ɵɵdirectiveInject(ɵngcc5.Directionality, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.FocusMonitor));\n};\nMatMenuTrigger.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n type: MatMenuTrigger,\n selectors: [[\"\", \"mat-menu-trigger-for\", \"\"], [\"\", \"matMenuTriggerFor\", \"\"]],\n hostAttrs: [\"aria-haspopup\", \"true\", 1, \"mat-menu-trigger\"],\n hostVars: 2,\n hostBindings: function MatMenuTrigger_HostBindings(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mousedown\", function MatMenuTrigger_mousedown_HostBindingHandler($event) {\n return ctx._handleMousedown($event);\n })(\"keydown\", function MatMenuTrigger_keydown_HostBindingHandler($event) {\n return ctx._handleKeydown($event);\n })(\"click\", function MatMenuTrigger_click_HostBindingHandler($event) {\n return ctx._handleClick($event);\n });\n }\n if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.menuOpen || null)(\"aria-controls\", ctx.menuOpen ? ctx.menu.panelId : null);\n }\n },\n inputs: {\n restoreFocus: [\"matMenuTriggerRestoreFocus\", \"restoreFocus\"],\n _deprecatedMatMenuTriggerFor: [\"mat-menu-trigger-for\", \"_deprecatedMatMenuTriggerFor\"],\n menu: [\"matMenuTriggerFor\", \"menu\"],\n menuData: [\"matMenuTriggerData\", \"menuData\"]\n },\n outputs: {\n menuOpened: \"menuOpened\",\n onMenuOpen: \"onMenuOpen\",\n menuClosed: \"menuClosed\",\n onMenuClose: \"onMenuClose\"\n },\n exportAs: [\"matMenuTrigger\"]\n});\nMatMenuTrigger.ctorParameters = () => [{\n type: Overlay\n}, {\n type: ElementRef\n}, {\n type: ViewContainerRef\n}, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MAT_MENU_SCROLL_STRATEGY]\n }]\n}, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MAT_MENU_PANEL]\n }, {\n type: Optional\n }]\n}, {\n type: MatMenuItem,\n decorators: [{\n type: Optional\n }, {\n type: Self\n }]\n}, {\n type: Directionality,\n decorators: [{\n type: Optional\n }]\n}, {\n type: FocusMonitor\n}];\nMatMenuTrigger.propDecorators = {\n _deprecatedMatMenuTriggerFor: [{\n type: Input,\n args: ['mat-menu-trigger-for']\n }],\n menu: [{\n type: Input,\n args: ['matMenuTriggerFor']\n }],\n menuData: [{\n type: Input,\n args: ['matMenuTriggerData']\n }],\n restoreFocus: [{\n type: Input,\n args: ['matMenuTriggerRestoreFocus']\n }],\n menuOpened: [{\n type: Output\n }],\n onMenuOpen: [{\n type: Output\n }],\n menuClosed: [{\n type: Output\n }],\n onMenuClose: [{\n type: Output\n }]\n};\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatMenuTrigger, [{\n type: Directive,\n args: [{\n selector: `[mat-menu-trigger-for], [matMenuTriggerFor]`,\n host: {\n 'class': 'mat-menu-trigger',\n 'aria-haspopup': 'true',\n '[attr.aria-expanded]': 'menuOpen || null',\n '[attr.aria-controls]': 'menuOpen ? menu.panelId : null',\n '(mousedown)': '_handleMousedown($event)',\n '(keydown)': '_handleKeydown($event)',\n '(click)': '_handleClick($event)'\n },\n exportAs: 'matMenuTrigger'\n }]\n }], function () {\n return [{\n type: ɵngcc4.Overlay\n }, {\n type: ɵngcc0.ElementRef\n }, {\n type: ɵngcc0.ViewContainerRef\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MAT_MENU_SCROLL_STRATEGY]\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MAT_MENU_PANEL]\n }, {\n type: Optional\n }]\n }, {\n type: MatMenuItem,\n decorators: [{\n type: Optional\n }, {\n type: Self\n }]\n }, {\n type: ɵngcc5.Directionality,\n decorators: [{\n type: Optional\n }]\n }, {\n type: ɵngcc1.FocusMonitor\n }];\n }, {\n restoreFocus: [{\n type: Input,\n args: ['matMenuTriggerRestoreFocus']\n }],\n menuOpened: [{\n type: Output\n }],\n onMenuOpen: [{\n type: Output\n }],\n menuClosed: [{\n type: Output\n }],\n onMenuClose: [{\n type: Output\n }],\n _deprecatedMatMenuTriggerFor: [{\n type: Input,\n args: ['mat-menu-trigger-for']\n }],\n menu: [{\n type: Input,\n args: ['matMenuTriggerFor']\n }],\n menuData: [{\n type: Input,\n args: ['matMenuTriggerData']\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.io/license\n */\n/**\n * Used by both the current `MatMenuModule` and the MDC `MatMenuModule`\n * to declare the menu-related directives.\n */\nclass _MatMenuDirectivesModule {}\n_MatMenuDirectivesModule.ɵfac = function _MatMenuDirectivesModule_Factory(t) {\n return new (t || _MatMenuDirectivesModule)();\n};\n_MatMenuDirectivesModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n type: _MatMenuDirectivesModule\n});\n_MatMenuDirectivesModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({\n providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER],\n imports: [MatCommonModule]\n});\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(_MatMenuDirectivesModule, [{\n type: NgModule,\n args: [{\n exports: [MatMenuTrigger, MatMenuContent, MatCommonModule],\n declarations: [MatMenuTrigger, MatMenuContent],\n providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER]\n }]\n }], null, null);\n})();\n(function () {\n (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(_MatMenuDirectivesModule, {\n declarations: function () {\n return [MatMenuTrigger, MatMenuContent];\n },\n exports: function () {\n return [MatMenuTrigger, MatMenuContent, MatCommonModule];\n }\n });\n})();\nclass MatMenuModule {}\nMatMenuModule.ɵfac = function MatMenuModule_Factory(t) {\n return new (t || MatMenuModule)();\n};\nMatMenuModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n type: MatMenuModule\n});\nMatMenuModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({\n providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER],\n imports: [CommonModule, MatCommonModule, MatRippleModule, OverlayModule, _MatMenuDirectivesModule, CdkScrollableModule, MatCommonModule, _MatMenuDirectivesModule]\n});\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatMenuModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule, MatCommonModule, MatRippleModule, OverlayModule, _MatMenuDirectivesModule],\n exports: [CdkScrollableModule, MatCommonModule, MatMenu, MatMenuItem, _MatMenuDirectivesModule],\n declarations: [MatMenu, MatMenuItem],\n providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER]\n }]\n }], null, null);\n})();\n(function () {\n (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MatMenuModule, {\n declarations: function () {\n return [MatMenu, MatMenuItem];\n },\n imports: function () {\n return [CommonModule, MatCommonModule, MatRippleModule, OverlayModule, _MatMenuDirectivesModule];\n },\n exports: function () {\n return [CdkScrollableModule, MatCommonModule, MatMenu, MatMenuItem, _MatMenuDirectivesModule];\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.io/license\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.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_MENU_CONTENT, MAT_MENU_DEFAULT_OPTIONS, MAT_MENU_PANEL, MAT_MENU_SCROLL_STRATEGY, MatMenu, MatMenuContent, MatMenuItem, MatMenuModule, MatMenuTrigger, _MatMenuBase, _MatMenuDirectivesModule, fadeInItems, matMenuAnimations, transformMenu, MAT_MENU_DEFAULT_OPTIONS_FACTORY as ɵangular_material_src_material_menu_menu_a, MAT_MENU_SCROLL_STRATEGY_FACTORY as ɵangular_material_src_material_menu_menu_b, MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER as ɵangular_material_src_material_menu_menu_c };","map":{"version":3,"names":["FocusMonitor","FocusKeyManager","isFakeTouchstartFromScreenReader","isFakeMousedownFromScreenReader","coerceBooleanProperty","UP_ARROW","DOWN_ARROW","RIGHT_ARROW","LEFT_ARROW","ESCAPE","hasModifierKey","ENTER","SPACE","InjectionToken","Directive","TemplateRef","ComponentFactoryResolver","ApplicationRef","Injector","ViewContainerRef","Inject","ChangeDetectorRef","Component","ChangeDetectionStrategy","ViewEncapsulation","ElementRef","Optional","Input","HostListener","QueryList","EventEmitter","NgZone","ContentChildren","ViewChild","ContentChild","Output","Self","NgModule","Subject","Subscription","merge","of","asapScheduler","startWith","switchMap","take","filter","takeUntil","delay","trigger","state","style","transition","animate","TemplatePortal","DomPortalOutlet","DOCUMENT","CommonModule","mixinDisableRipple","mixinDisabled","MatCommonModule","MatRippleModule","Directionality","Overlay","OverlayConfig","OverlayModule","normalizePassiveListenerOptions","CdkScrollableModule","ɵngcc0","ɵngcc1","ɵngcc2","ɵngcc3","ɵngcc4","ɵngcc5","_c0","_c1","MatMenu_ng_template_0_Template","rf","ctx","_r2","ɵɵgetCurrentView","ɵɵelementStart","ɵɵlistener","MatMenu_ng_template_0_Template_div_keydown_0_listener","$event","ɵɵrestoreView","ctx_r1","ɵɵnextContext","ɵɵresetView","_handleKeydown","MatMenu_ng_template_0_Template_div_click_0_listener","ctx_r3","closed","emit","MatMenu_ng_template_0_Template_div_animation_transformMenu_start_0_listener","ctx_r4","_onAnimationStart","MatMenu_ng_template_0_Template_div_animation_transformMenu_done_0_listener","ctx_r5","_onAnimationDone","ɵɵprojection","ɵɵelementEnd","ctx_r0","ɵɵproperty","panelId","_classList","_panelAnimationState","ɵɵattribute","ariaLabel","ariaLabelledby","ariaDescribedby","matMenuAnimations","transformMenu","opacity","transform","fadeInItems","MAT_MENU_CONTENT","MatMenuContent","constructor","_template","_componentFactoryResolver","_appRef","_injector","_viewContainerRef","_document","_changeDetectorRef","_attached","attach","context","_portal","detach","_outlet","createElement","element","elementRef","nativeElement","parentNode","insertBefore","outletElement","markForCheck","next","isAttached","ngOnDestroy","dispose","ɵfac","MatMenuContent_Factory","t","ɵɵdirectiveInject","ɵdir","ɵɵdefineDirective","type","selectors","features","ɵɵProvidersFeature","provide","useExisting","ctorParameters","undefined","decorators","args","ngDevMode","ɵsetClassMetadata","selector","providers","throwMatMenuMissingError","Error","throwMatMenuInvalidPositionX","throwMatMenuInvalidPositionY","throwMatMenuRecursiveError","MAT_MENU_PANEL","MatMenuItemBase","_MatMenuItemMixinBase","MatMenuItem","_elementRef","_focusMonitor","_parentMenu","role","_hovered","_focused","_highlighted","_triggersSubmenu","addItem","focus","origin","options","focusVia","_getHostElement","ngAfterViewInit","monitor","stopMonitoring","removeItem","complete","_getTabIndex","disabled","_checkDisabled","event","preventDefault","stopPropagation","_handleMouseEnter","getLabel","_a","_b","clone","cloneNode","icons","querySelectorAll","i","length","icon","removeChild","textContent","trim","MatMenuItem_Factory","ɵcmp","ɵɵdefineComponent","hostAttrs","hostVars","hostBindings","MatMenuItem_HostBindings","MatMenuItem_click_HostBindingHandler","MatMenuItem_mouseenter_HostBindingHandler","toString","ɵɵclassProp","inputs","disableRipple","exportAs","ɵɵInheritDefinitionFeature","attrs","ngContentSelectors","decls","vars","consts","template","MatMenuItem_Template","ɵɵprojectionDef","ɵɵelement","ɵɵadvance","dependencies","MatRipple","encapsulation","changeDetection","propDecorators","host","OnPush","None","MAT_MENU_DEFAULT_OPTIONS","providedIn","factory","MAT_MENU_DEFAULT_OPTIONS_FACTORY","overlapTrigger","xPosition","yPosition","backdropClass","MAT_MENU_BASE_ELEVATION","menuPanelUid","_MatMenuBase","_ngZone","_defaultOptions","_xPosition","_yPosition","_directDescendantItems","_tabSubscription","EMPTY","_animationDone","overlayPanelClass","_overlapTrigger","_hasBackdrop","hasBackdrop","close","value","setPositionClasses","panelClass","classes","previousPanelClass","_previousPanelClass","split","forEach","className","classList","ngOnInit","ngAfterContentInit","_updateDirectDescendants","_keyManager","withWrap","withTypeAhead","withHomeAndEnd","tabOut","subscribe","changes","pipe","items","map","item","focusedItem","updateActiveItem","destroy","unsubscribe","itemChanges","_item","keyCode","manager","parentMenu","direction","setFocusOrigin","onKeydown","focusFirstItem","lazyContent","onStable","_focusFirstItem","setFirstItemActive","activeItem","first","parentElement","getAttribute","resetActiveItem","setActiveItem","setElevation","depth","elevation","Math","min","newElevation","customElevation","Object","keys","find","c","startsWith","_previousElevation","posX","posY","_startAnimation","_resetAnimation","_isAnimating","toState","activeItemIndex","scrollTop","_allItems","reset","notifyOnChanges","_MatMenuBase_Factory","contentQueries","_MatMenuBase_ContentQueries","dirIndex","ɵɵcontentQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","viewQuery","_MatMenuBase_Query","ɵɵviewQuery","templateRef","outputs","descendants","MatMenu","ngZone","defaultOptions","MatMenu_Factory","MatMenu_HostBindings","MatMenu_Template","ɵɵtemplate","NgClass","styles","data","animation","animations","MAT_MENU_SCROLL_STRATEGY","MAT_MENU_SCROLL_STRATEGY_FACTORY","overlay","scrollStrategies","reposition","MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER","deps","useFactory","MENU_PANEL_TOP_PADDING","passiveEventListenerOptions","passive","MatMenuTrigger","_overlay","_element","scrollStrategy","_menuItemInstance","_dir","_overlayRef","_menuOpen","_closingActionsSubscription","_hoverSubscription","_menuCloseSubscription","_handleTouchStart","_openedBy","restoreFocus","menuOpened","onMenuOpen","menuClosed","onMenuClose","_scrollStrategy","_parentMaterialMenu","addEventListener","triggersSubmenu","_deprecatedMatMenuTriggerFor","menu","v","_menu","reason","_destroyMenu","_checkMenu","_handleHover","removeEventListener","menuOpen","dir","toggleMenu","closeMenu","openMenu","overlayRef","_createOverlay","overlayConfig","getConfig","_setPosition","positionStrategy","_getPortal","menuData","_menuClosingActions","_initMenu","_setIsMenuOpen","_setMenuElevation","isOpen","config","_getOverlayConfig","_subscribeToPositions","create","keydownEvents","position","flexibleConnectedTo","withLockedPosition","withGrowAfterOpen","withTransformOriginOn","positionChanges","change","connectionPair","overlayX","overlayY","originX","originFallbackX","overlayFallbackY","originY","originFallbackY","overlayFallbackX","offsetY","withPositions","backdrop","backdropClick","detachments","parentClose","hover","active","_handleMousedown","button","_handleClick","MatMenuTrigger_Factory","MatMenuTrigger_HostBindings","MatMenuTrigger_mousedown_HostBindingHandler","MatMenuTrigger_keydown_HostBindingHandler","MatMenuTrigger_click_HostBindingHandler","_MatMenuDirectivesModule","_MatMenuDirectivesModule_Factory","ɵmod","ɵɵdefineNgModule","ɵinj","ɵɵdefineInjector","imports","exports","declarations","ngJitMode","ɵɵsetNgModuleScope","MatMenuModule","MatMenuModule_Factory","ɵangular_material_src_material_menu_menu_a","ɵangular_material_src_material_menu_menu_b","ɵangular_material_src_material_menu_menu_c"],"sources":["C:/Users/eudes.inacio/GabineteDigital/gabinete-digital-fo/node_modules/@angular/material/__ivy_ngcc__/fesm2015/menu.js"],"sourcesContent":["import { FocusMonitor, FocusKeyManager, isFakeTouchstartFromScreenReader, isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { UP_ARROW, DOWN_ARROW, RIGHT_ARROW, LEFT_ARROW, ESCAPE, hasModifierKey, ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { InjectionToken, Directive, TemplateRef, ComponentFactoryResolver, ApplicationRef, Injector, ViewContainerRef, Inject, ChangeDetectorRef, Component, ChangeDetectionStrategy, ViewEncapsulation, ElementRef, Optional, Input, HostListener, QueryList, EventEmitter, NgZone, ContentChildren, ViewChild, ContentChild, Output, Self, NgModule } from '@angular/core';\nimport { Subject, Subscription, merge, of, asapScheduler } from 'rxjs';\nimport { startWith, switchMap, take, filter, takeUntil, delay } from 'rxjs/operators';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { TemplatePortal, DomPortalOutlet } from '@angular/cdk/portal';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { mixinDisableRipple, mixinDisabled, MatCommonModule, MatRippleModule } from '@angular/material/core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\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.io/license\n */\n/**\n * Animations used by the mat-menu component.\n * Animation duration and timing values are based on:\n * https://material.io/guidelines/components/menus.html#menus-usage\n * @docs-private\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/cdk/a11y';\nimport * as ɵngcc2 from '@angular/material/core';\nimport * as ɵngcc3 from '@angular/common';\nimport * as ɵngcc4 from '@angular/cdk/overlay';\nimport * as ɵngcc5 from '@angular/cdk/bidi';\n\nconst _c0 = [\"mat-menu-item\", \"\"];\nconst _c1 = [\"*\"];\nfunction MatMenu_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n const _r2 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵlistener(\"keydown\", function MatMenu_ng_template_0_Template_div_keydown_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r2); const ctx_r1 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r1._handleKeydown($event)); })(\"click\", function MatMenu_ng_template_0_Template_div_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r2); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r3.closed.emit(\"click\")); })(\"@transformMenu.start\", function MatMenu_ng_template_0_Template_div_animation_transformMenu_start_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r2); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r4._onAnimationStart($event)); })(\"@transformMenu.done\", function MatMenu_ng_template_0_Template_div_animation_transformMenu_done_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r2); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r5._onAnimationDone($event)); });\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"id\", ctx_r0.panelId)(\"ngClass\", ctx_r0._classList)(\"@transformMenu\", ctx_r0._panelAnimationState);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r0.ariaLabel || null)(\"aria-labelledby\", ctx_r0.ariaLabelledby || null)(\"aria-describedby\", ctx_r0.ariaDescribedby || null);\n} }\nconst matMenuAnimations = {\n /**\n * This animation controls the menu panel's entry and exit from the page.\n *\n * When the menu panel is added to the DOM, it scales in and fades in its border.\n *\n * When the menu panel is removed from the DOM, it simply fades out after a brief\n * delay to display the ripple.\n */\n transformMenu: trigger('transformMenu', [\n state('void', style({\n opacity: 0,\n transform: 'scale(0.8)'\n })),\n transition('void => enter', animate('120ms cubic-bezier(0, 0, 0.2, 1)', style({\n opacity: 1,\n transform: 'scale(1)'\n }))),\n transition('* => void', animate('100ms 25ms linear', style({ opacity: 0 })))\n ]),\n /**\n * This animation fades in the background color and content of the menu panel\n * after its containing element is scaled in.\n */\n fadeInItems: trigger('fadeInItems', [\n // TODO(crisbeto): this is inside the `transformMenu`\n // now. Remove next time we do breaking changes.\n state('showing', style({ opacity: 1 })),\n transition('void => *', [\n style({ opacity: 0 }),\n animate('400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')\n ])\n ])\n};\n/**\n * @deprecated\n * @breaking-change 8.0.0\n * @docs-private\n */\nconst fadeInItems = matMenuAnimations.fadeInItems;\n/**\n * @deprecated\n * @breaking-change 8.0.0\n * @docs-private\n */\nconst transformMenu = matMenuAnimations.transformMenu;\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.io/license\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 */\nconst MAT_MENU_CONTENT = new InjectionToken('MatMenuContent');\n/**\n * Menu content that will be rendered lazily once the menu is opened.\n */\nclass MatMenuContent {\n constructor(_template, _componentFactoryResolver, _appRef, _injector, _viewContainerRef, _document, _changeDetectorRef) {\n this._template = _template;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n this._injector = _injector;\n this._viewContainerRef = _viewContainerRef;\n this._document = _document;\n this._changeDetectorRef = _changeDetectorRef;\n /** Emits when the menu content has been attached. */\n this._attached = new Subject();\n }\n /**\n * Attaches the content with a particular context.\n * @docs-private\n */\n attach(context = {}) {\n if (!this._portal) {\n this._portal = new TemplatePortal(this._template, this._viewContainerRef);\n }\n this.detach();\n if (!this._outlet) {\n this._outlet = new DomPortalOutlet(this._document.createElement('div'), this._componentFactoryResolver, this._appRef, this._injector);\n }\n const element = this._template.elementRef.nativeElement;\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 // 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 // @breaking-change 9.0.0 Make change detector ref required\n if (this._changeDetectorRef) {\n this._changeDetectorRef.markForCheck();\n }\n this._portal.attach(this._outlet, context);\n this._attached.next();\n }\n /**\n * Detaches the content.\n * @docs-private\n */\n detach() {\n if (this._portal.isAttached) {\n this._portal.detach();\n }\n }\n ngOnDestroy() {\n if (this._outlet) {\n this._outlet.dispose();\n }\n }\n}\nMatMenuContent.ɵfac = function MatMenuContent_Factory(t) { return new (t || MatMenuContent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nMatMenuContent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MatMenuContent, selectors: [[\"ng-template\", \"matMenuContent\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: MAT_MENU_CONTENT, useExisting: MatMenuContent }])] });\nMatMenuContent.ctorParameters = () => [\n { type: TemplateRef },\n { type: ComponentFactoryResolver },\n { type: ApplicationRef },\n { type: Injector },\n { type: ViewContainerRef },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ChangeDetectorRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatMenuContent, [{\n type: Directive,\n args: [{\n selector: 'ng-template[matMenuContent]',\n providers: [{ provide: MAT_MENU_CONTENT, useExisting: MatMenuContent }]\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.ApplicationRef }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.ChangeDetectorRef }]; }, null); })();\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.io/license\n */\n/**\n * Throws an exception for the case when menu trigger doesn't have a valid mat-menu instance\n * @docs-private\n */\nfunction throwMatMenuMissingError() {\n throw Error(`matMenuTriggerFor: must pass in an mat-menu instance.\n\n Example:\n <mat-menu #menu=\"matMenu\"></mat-menu>\n <button [matMenuTriggerFor]=\"menu\"></button>`);\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 */\nfunction 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 * 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 */\nfunction 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 * 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 */\nfunction throwMatMenuRecursiveError() {\n throw Error(`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.io/license\n */\n/**\n * Injection token used to provide the parent menu to menu-specific components.\n * @docs-private\n */\nconst MAT_MENU_PANEL = new InjectionToken('MAT_MENU_PANEL');\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.io/license\n */\n// Boilerplate for applying mixins to MatMenuItem.\n/** @docs-private */\nclass MatMenuItemBase {\n}\nconst _MatMenuItemMixinBase = mixinDisableRipple(mixinDisabled(MatMenuItemBase));\n/**\n * Single item inside of a `mat-menu`. Provides the menu item styling and accessibility treatment.\n */\nclass MatMenuItem extends _MatMenuItemMixinBase {\n constructor(_elementRef, \n /**\n * @deprecated `_document` parameter is no longer being used and will be removed.\n * @breaking-change 12.0.0\n */\n _document, _focusMonitor, _parentMenu) {\n // @breaking-change 8.0.0 make `_focusMonitor` and `document` required params.\n super();\n this._elementRef = _elementRef;\n this._focusMonitor = _focusMonitor;\n this._parentMenu = _parentMenu;\n /** ARIA role for the menu item. */\n this.role = 'menuitem';\n /** Stream that emits when the menu item is hovered. */\n this._hovered = new Subject();\n /** Stream that emits when the menu item is focused. */\n this._focused = new Subject();\n /** Whether the menu item is highlighted. */\n this._highlighted = false;\n /** Whether the menu item acts as a trigger for a sub-menu. */\n this._triggersSubmenu = false;\n if (_parentMenu && _parentMenu.addItem) {\n _parentMenu.addItem(this);\n }\n }\n /** Focuses the menu item. */\n focus(origin, options) {\n if (this._focusMonitor && origin) {\n this._focusMonitor.focusVia(this._getHostElement(), origin, options);\n }\n else {\n this._getHostElement().focus(options);\n }\n this._focused.next(this);\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 ngOnDestroy() {\n if (this._focusMonitor) {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n if (this._parentMenu && this._parentMenu.removeItem) {\n this._parentMenu.removeItem(this);\n }\n this._hovered.complete();\n this._focused.complete();\n }\n /** Used to set the `tabindex`. */\n _getTabIndex() {\n return this.disabled ? '-1' : '0';\n }\n /** Returns the host DOM element. */\n _getHostElement() {\n return this._elementRef.nativeElement;\n }\n /** Prevents the default element actions if it is disabled. */\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n _checkDisabled(event) {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n /** Emits to the hover stream. */\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n _handleMouseEnter() {\n this._hovered.next(this);\n }\n /** Gets the label to be used when determining whether the option should be focused. */\n getLabel() {\n var _a, _b;\n const clone = this._elementRef.nativeElement.cloneNode(true);\n const icons = clone.querySelectorAll('mat-icon, .material-icons');\n // Strip away icons so they don't show up in the text.\n for (let i = 0; i < icons.length; i++) {\n const icon = icons[i];\n (_a = icon.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(icon);\n }\n return ((_b = clone.textContent) === null || _b === void 0 ? void 0 : _b.trim()) || '';\n }\n}\nMatMenuItem.ɵfac = function MatMenuItem_Factory(t) { return new (t || MatMenuItem)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.FocusMonitor), ɵngcc0.ɵɵdirectiveInject(MAT_MENU_PANEL, 8)); };\nMatMenuItem.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MatMenuItem, selectors: [[\"\", \"mat-menu-item\", \"\"]], hostAttrs: [1, \"mat-focus-indicator\"], hostVars: 10, hostBindings: function MatMenuItem_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function MatMenuItem_click_HostBindingHandler($event) { return ctx._checkDisabled($event); })(\"mouseenter\", function MatMenuItem_mouseenter_HostBindingHandler() { return ctx._handleMouseEnter(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"role\", ctx.role)(\"tabindex\", ctx._getTabIndex())(\"aria-disabled\", ctx.disabled.toString())(\"disabled\", ctx.disabled || null);\n ɵngcc0.ɵɵclassProp(\"mat-menu-item\", true)(\"mat-menu-item-highlighted\", ctx._highlighted)(\"mat-menu-item-submenu-trigger\", ctx._triggersSubmenu);\n } }, inputs: { disabled: \"disabled\", disableRipple: \"disableRipple\", role: \"role\" }, exportAs: [\"matMenuItem\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature], attrs: _c0, ngContentSelectors: _c1, decls: 2, vars: 2, consts: [[\"matRipple\", \"\", 1, \"mat-menu-ripple\", 3, \"matRippleDisabled\", \"matRippleTrigger\"]], template: function MatMenuItem_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n ɵngcc0.ɵɵelement(1, \"div\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"matRippleDisabled\", ctx.disableRipple || ctx.disabled)(\"matRippleTrigger\", ctx._getHostElement());\n } }, dependencies: [ɵngcc2.MatRipple], encapsulation: 2, changeDetection: 0 });\nMatMenuItem.ctorParameters = () => [\n { type: ElementRef },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: FocusMonitor },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_MENU_PANEL,] }, { type: Optional }] }\n];\nMatMenuItem.propDecorators = {\n role: [{ type: Input }],\n _checkDisabled: [{ type: HostListener, args: ['click', ['$event'],] }],\n _handleMouseEnter: [{ type: HostListener, args: ['mouseenter',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatMenuItem, [{\n type: Component,\n args: [{\n selector: '[mat-menu-item]',\n exportAs: 'matMenuItem',\n inputs: ['disabled', 'disableRipple'],\n host: {\n '[attr.role]': 'role',\n '[class.mat-menu-item]': 'true',\n '[class.mat-menu-item-highlighted]': '_highlighted',\n '[class.mat-menu-item-submenu-trigger]': '_triggersSubmenu',\n '[attr.tabindex]': '_getTabIndex()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.disabled]': 'disabled || null',\n 'class': 'mat-focus-indicator'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: \"<ng-content></ng-content>\\n<div class=\\\"mat-menu-ripple\\\" matRipple\\n [matRippleDisabled]=\\\"disableRipple || disabled\\\"\\n [matRippleTrigger]=\\\"_getHostElement()\\\">\\n</div>\\n\"\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc1.FocusMonitor }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_MENU_PANEL]\n }, {\n type: Optional\n }] }]; }, { role: [{\n type: Input\n }], \n /** Prevents the default element actions if it is disabled. */\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n _checkDisabled: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], \n /** Emits to the hover stream. */\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n _handleMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\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.io/license\n */\n/** Injection token to be used to override the default options for `mat-menu`. */\nconst MAT_MENU_DEFAULT_OPTIONS = new InjectionToken('mat-menu-default-options', {\n providedIn: 'root',\n factory: MAT_MENU_DEFAULT_OPTIONS_FACTORY\n});\n/** @docs-private */\nfunction MAT_MENU_DEFAULT_OPTIONS_FACTORY() {\n return {\n overlapTrigger: false,\n xPosition: 'after',\n yPosition: 'below',\n backdropClass: 'cdk-overlay-transparent-backdrop',\n };\n}\n/**\n * Start elevation for the menu panel.\n * @docs-private\n */\nconst MAT_MENU_BASE_ELEVATION = 4;\nlet menuPanelUid = 0;\n/** Base class with all of the `MatMenu` functionality. */\nclass _MatMenuBase {\n constructor(_elementRef, _ngZone, _defaultOptions) {\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n this._defaultOptions = _defaultOptions;\n this._xPosition = this._defaultOptions.xPosition;\n this._yPosition = this._defaultOptions.yPosition;\n /** Only the direct descendant menu items. */\n this._directDescendantItems = new QueryList();\n /** Subscription to tab events on the menu panel */\n this._tabSubscription = Subscription.EMPTY;\n /** Config object to be passed into the menu's ngClass */\n this._classList = {};\n /** Current state of the panel animation. */\n this._panelAnimationState = 'void';\n /** Emits whenever an animation on the menu completes. */\n this._animationDone = new Subject();\n /** Class or list of classes to be added to the overlay panel. */\n this.overlayPanelClass = this._defaultOptions.overlayPanelClass || '';\n /** Class to be added to the backdrop element. */\n this.backdropClass = this._defaultOptions.backdropClass;\n this._overlapTrigger = this._defaultOptions.overlapTrigger;\n this._hasBackdrop = this._defaultOptions.hasBackdrop;\n /** Event emitted when the menu is closed. */\n this.closed = new EventEmitter();\n /**\n * Event emitted when the menu is closed.\n * @deprecated Switch to `closed` instead\n * @breaking-change 8.0.0\n */\n this.close = this.closed;\n this.panelId = `mat-menu-panel-${menuPanelUid++}`;\n }\n /** Position of the menu in the X axis. */\n get xPosition() { return this._xPosition; }\n set xPosition(value) {\n if (value !== 'before' && value !== 'after' &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuInvalidPositionX();\n }\n this._xPosition = value;\n this.setPositionClasses();\n }\n /** Position of the menu in the Y axis. */\n get yPosition() { return this._yPosition; }\n set yPosition(value) {\n if (value !== 'above' && value !== 'below' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuInvalidPositionY();\n }\n this._yPosition = value;\n this.setPositionClasses();\n }\n /** Whether the menu should overlap its trigger. */\n get overlapTrigger() { return this._overlapTrigger; }\n set overlapTrigger(value) {\n this._overlapTrigger = coerceBooleanProperty(value);\n }\n /** Whether the menu has a backdrop. */\n get hasBackdrop() { return this._hasBackdrop; }\n set hasBackdrop(value) {\n this._hasBackdrop = coerceBooleanProperty(value);\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 set panelClass(classes) {\n const previousPanelClass = this._previousPanelClass;\n if (previousPanelClass && previousPanelClass.length) {\n previousPanelClass.split(' ').forEach((className) => {\n this._classList[className] = false;\n });\n }\n this._previousPanelClass = classes;\n if (classes && classes.length) {\n classes.split(' ').forEach((className) => {\n this._classList[className] = true;\n });\n this._elementRef.nativeElement.className = '';\n }\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 get classList() { return this.panelClass; }\n set classList(classes) { this.panelClass = classes; }\n ngOnInit() {\n this.setPositionClasses();\n }\n ngAfterContentInit() {\n this._updateDirectDescendants();\n this._keyManager = new FocusKeyManager(this._directDescendantItems)\n .withWrap()\n .withTypeAhead()\n .withHomeAndEnd();\n this._tabSubscription = this._keyManager.tabOut.subscribe(() => this.closed.emit('tab'));\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.pipe(startWith(this._directDescendantItems), switchMap(items => merge(...items.map((item) => item._focused)))).subscribe(focusedItem => this._keyManager.updateActiveItem(focusedItem));\n }\n ngOnDestroy() {\n this._directDescendantItems.destroy();\n this._tabSubscription.unsubscribe();\n this.closed.complete();\n }\n /** Stream that emits whenever the hovered menu item changes. */\n _hovered() {\n // Coerce the `changes` property because Angular types it as `Observable<any>`\n const itemChanges = this._directDescendantItems.changes;\n return itemChanges.pipe(startWith(this._directDescendantItems), switchMap(items => merge(...items.map((item) => item._hovered))));\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) { }\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) { }\n /** Handle a keyboard event from the menu, delegating to the appropriate action. */\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n const manager = this._keyManager;\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 manager.onKeydown(event);\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 = 'program') {\n // When the content is rendered lazily, it takes a bit before the items are inside the DOM.\n if (this.lazyContent) {\n this._ngZone.onStable\n .pipe(take(1))\n .subscribe(() => this._focusFirstItem(origin));\n }\n else {\n this._focusFirstItem(origin);\n }\n }\n /**\n * Actual implementation that focuses the first item. Needs to be separated\n * out so we don't repeat the same logic in the public `focusFirstItem` method.\n */\n _focusFirstItem(origin) {\n const manager = this._keyManager;\n manager.setFocusOrigin(origin).setFirstItemActive();\n // If there's no active item at this point, it means that all the items are disabled.\n // Move focus to the menu panel so keyboard events like Escape still work. Also this will\n // give _some_ feedback to screen readers.\n if (!manager.activeItem && this._directDescendantItems.length) {\n let element = this._directDescendantItems.first._getHostElement().parentElement;\n // Because the `mat-menu` is at the DOM insertion point, not inside the overlay, we don't\n // have a nice way of getting a hold of the menu 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 while (element) {\n if (element.getAttribute('role') === 'menu') {\n element.focus();\n break;\n }\n else {\n element = element.parentElement;\n }\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 * Sets the menu panel elevation.\n * @param depth Number of parent menus that come before the menu.\n */\n setElevation(depth) {\n // The elevation starts at the base and increases by one for each level.\n // Capped at 24 because that's the maximum elevation defined in the Material design spec.\n const elevation = Math.min(MAT_MENU_BASE_ELEVATION + depth, 24);\n const newElevation = `mat-elevation-z${elevation}`;\n const customElevation = Object.keys(this._classList).find(c => c.startsWith('mat-elevation-z'));\n if (!customElevation || customElevation === this._previousElevation) {\n if (this._previousElevation) {\n this._classList[this._previousElevation] = false;\n }\n this._classList[newElevation] = true;\n this._previousElevation = newElevation;\n }\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 = this.xPosition, posY = this.yPosition) {\n const classes = this._classList;\n classes['mat-menu-before'] = posX === 'before';\n classes['mat-menu-after'] = posX === 'after';\n classes['mat-menu-above'] = posY === 'above';\n classes['mat-menu-below'] = posY === 'below';\n }\n /** Starts the enter animation. */\n _startAnimation() {\n // @breaking-change 8.0.0 Combine with _resetAnimation.\n this._panelAnimationState = 'enter';\n }\n /** Resets the panel animation to its initial state. */\n _resetAnimation() {\n // @breaking-change 8.0.0 Combine with _startAnimation.\n this._panelAnimationState = 'void';\n }\n /** Callback that is invoked when the panel animation completes. */\n _onAnimationDone(event) {\n this._animationDone.next(event);\n this._isAnimating = false;\n }\n _onAnimationStart(event) {\n this._isAnimating = true;\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 if (event.toState === 'enter' && this._keyManager.activeItemIndex === 0) {\n event.element.scrollTop = 0;\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 _updateDirectDescendants() {\n this._allItems.changes\n .pipe(startWith(this._allItems))\n .subscribe((items) => {\n this._directDescendantItems.reset(items.filter(item => item._parentMenu === this));\n this._directDescendantItems.notifyOnChanges();\n });\n }\n}\n_MatMenuBase.ɵfac = function _MatMenuBase_Factory(t) { return new (t || _MatMenuBase)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(MAT_MENU_DEFAULT_OPTIONS)); };\n_MatMenuBase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: _MatMenuBase, contentQueries: function _MatMenuBase_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, MAT_MENU_CONTENT, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, MatMenuItem, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, MatMenuItem, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.lazyContent = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._allItems = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.items = _t);\n } }, viewQuery: function _MatMenuBase_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(TemplateRef, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.templateRef = _t.first);\n } }, inputs: { backdropClass: \"backdropClass\", xPosition: \"xPosition\", yPosition: \"yPosition\", overlapTrigger: \"overlapTrigger\", hasBackdrop: \"hasBackdrop\", panelClass: [\"class\", \"panelClass\"], classList: \"classList\", ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], ariaDescribedby: [\"aria-describedby\", \"ariaDescribedby\"] }, outputs: { closed: \"closed\", close: \"close\" } });\n_MatMenuBase.ctorParameters = () => [\n { type: ElementRef },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_MENU_DEFAULT_OPTIONS,] }] }\n];\n_MatMenuBase.propDecorators = {\n _allItems: [{ type: ContentChildren, args: [MatMenuItem, { descendants: true },] }],\n backdropClass: [{ type: Input }],\n ariaLabel: [{ type: Input, args: ['aria-label',] }],\n ariaLabelledby: [{ type: Input, args: ['aria-labelledby',] }],\n ariaDescribedby: [{ type: Input, args: ['aria-describedby',] }],\n xPosition: [{ type: Input }],\n yPosition: [{ type: Input }],\n templateRef: [{ type: ViewChild, args: [TemplateRef,] }],\n items: [{ type: ContentChildren, args: [MatMenuItem, { descendants: false },] }],\n lazyContent: [{ type: ContentChild, args: [MAT_MENU_CONTENT,] }],\n overlapTrigger: [{ type: Input }],\n hasBackdrop: [{ type: Input }],\n panelClass: [{ type: Input, args: ['class',] }],\n classList: [{ type: Input }],\n closed: [{ type: Output }],\n close: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(_MatMenuBase, [{\n type: Directive\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_MENU_DEFAULT_OPTIONS]\n }] }]; }, { backdropClass: [{\n type: Input\n }], closed: [{\n type: Output\n }], close: [{\n type: Output\n }], xPosition: [{\n type: Input\n }], yPosition: [{\n type: Input\n }], overlapTrigger: [{\n type: Input\n }], hasBackdrop: [{\n type: Input\n }], panelClass: [{\n type: Input,\n args: ['class']\n }], classList: [{\n type: Input\n }], _allItems: [{\n type: ContentChildren,\n args: [MatMenuItem, { descendants: true }]\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], ariaDescribedby: [{\n type: Input,\n args: ['aria-describedby']\n }], templateRef: [{\n type: ViewChild,\n args: [TemplateRef]\n }], items: [{\n type: ContentChildren,\n args: [MatMenuItem, { descendants: false }]\n }], lazyContent: [{\n type: ContentChild,\n args: [MAT_MENU_CONTENT]\n }] }); })();\n/** @docs-public MatMenu */\nclass MatMenu extends _MatMenuBase {\n constructor(elementRef, ngZone, defaultOptions) {\n super(elementRef, ngZone, defaultOptions);\n }\n}\nMatMenu.ɵfac = function MatMenu_Factory(t) { return new (t || MatMenu)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(MAT_MENU_DEFAULT_OPTIONS)); };\nMatMenu.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MatMenu, selectors: [[\"mat-menu\"]], hostVars: 3, hostBindings: function MatMenu_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-label\", null)(\"aria-labelledby\", null)(\"aria-describedby\", null);\n } }, exportAs: [\"matMenu\"], features: [ɵngcc0.ɵɵProvidersFeature([\n { provide: MAT_MENU_PANEL, useExisting: MatMenu },\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c1, decls: 1, vars: 0, consts: [[\"tabindex\", \"-1\", \"role\", \"menu\", 1, \"mat-menu-panel\", 3, \"id\", \"ngClass\", \"keydown\", \"click\"], [1, \"mat-menu-content\"]], template: function MatMenu_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, MatMenu_ng_template_0_Template, 3, 6, \"ng-template\");\n } }, dependencies: [ɵngcc3.NgClass], styles: [\"mat-menu{display:none}.mat-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 48px);border-radius:4px;outline:0;min-height:64px}.mat-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-menu-panel{outline:solid 1px}.mat-menu-content:not(:empty){padding-top:8px;padding-bottom:8px}.mat-menu-item{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative}.mat-menu-item::-moz-focus-inner{border:0}.mat-menu-item[disabled]{cursor:default}[dir=rtl] .mat-menu-item{text-align:right}.mat-menu-item .mat-icon{margin-right:16px;vertical-align:middle}.mat-menu-item .mat-icon svg{vertical-align:top}[dir=rtl] .mat-menu-item .mat-icon{margin-left:16px;margin-right:0}.mat-menu-item[disabled]{pointer-events:none}.cdk-high-contrast-active .mat-menu-item{margin-top:1px}.cdk-high-contrast-active .mat-menu-item.cdk-program-focused,.cdk-high-contrast-active .mat-menu-item.cdk-keyboard-focused,.cdk-high-contrast-active .mat-menu-item-highlighted{outline:dotted 1px}.mat-menu-item-submenu-trigger{padding-right:32px}.mat-menu-item-submenu-trigger::after{width:0;height:0;border-style:solid;border-width:5px 0 5px 5px;border-color:transparent transparent transparent currentColor;content:\\\"\\\";display:inline-block;position:absolute;top:50%;right:16px;transform:translateY(-50%)}[dir=rtl] .mat-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}[dir=rtl] .mat-menu-item-submenu-trigger::after{right:auto;left:16px;transform:rotateY(180deg) translateY(-50%)}button.mat-menu-item{width:100%}.mat-menu-item .mat-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\\n\"], encapsulation: 2, data: { animation: [\n matMenuAnimations.transformMenu,\n matMenuAnimations.fadeInItems\n ] }, changeDetection: 0 });\nMatMenu.ctorParameters = () => [\n { type: ElementRef },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_MENU_DEFAULT_OPTIONS,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatMenu, [{\n type: Component,\n args: [{ selector: 'mat-menu', template: \"<ng-template>\\n <div\\n class=\\\"mat-menu-panel\\\"\\n [id]=\\\"panelId\\\"\\n [ngClass]=\\\"_classList\\\"\\n (keydown)=\\\"_handleKeydown($event)\\\"\\n (click)=\\\"closed.emit('click')\\\"\\n [@transformMenu]=\\\"_panelAnimationState\\\"\\n (@transformMenu.start)=\\\"_onAnimationStart($event)\\\"\\n (@transformMenu.done)=\\\"_onAnimationDone($event)\\\"\\n tabindex=\\\"-1\\\"\\n role=\\\"menu\\\"\\n [attr.aria-label]=\\\"ariaLabel || null\\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledby || null\\\"\\n [attr.aria-describedby]=\\\"ariaDescribedby || null\\\">\\n <div class=\\\"mat-menu-content\\\">\\n <ng-content></ng-content>\\n </div>\\n </div>\\n</ng-template>\\n\", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, exportAs: 'matMenu', host: {\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null'\n }, animations: [\n matMenuAnimations.transformMenu,\n matMenuAnimations.fadeInItems\n ], providers: [\n { provide: MAT_MENU_PANEL, useExisting: MatMenu },\n ], styles: [\"mat-menu{display:none}.mat-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 48px);border-radius:4px;outline:0;min-height:64px}.mat-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-menu-panel{outline:solid 1px}.mat-menu-content:not(:empty){padding-top:8px;padding-bottom:8px}.mat-menu-item{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative}.mat-menu-item::-moz-focus-inner{border:0}.mat-menu-item[disabled]{cursor:default}[dir=rtl] .mat-menu-item{text-align:right}.mat-menu-item .mat-icon{margin-right:16px;vertical-align:middle}.mat-menu-item .mat-icon svg{vertical-align:top}[dir=rtl] .mat-menu-item .mat-icon{margin-left:16px;margin-right:0}.mat-menu-item[disabled]{pointer-events:none}.cdk-high-contrast-active .mat-menu-item{margin-top:1px}.cdk-high-contrast-active .mat-menu-item.cdk-program-focused,.cdk-high-contrast-active .mat-menu-item.cdk-keyboard-focused,.cdk-high-contrast-active .mat-menu-item-highlighted{outline:dotted 1px}.mat-menu-item-submenu-trigger{padding-right:32px}.mat-menu-item-submenu-trigger::after{width:0;height:0;border-style:solid;border-width:5px 0 5px 5px;border-color:transparent transparent transparent currentColor;content:\\\"\\\";display:inline-block;position:absolute;top:50%;right:16px;transform:translateY(-50%)}[dir=rtl] .mat-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}[dir=rtl] .mat-menu-item-submenu-trigger::after{right:auto;left:16px;transform:rotateY(180deg) translateY(-50%)}button.mat-menu-item{width:100%}.mat-menu-item .mat-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\\n\"] }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_MENU_DEFAULT_OPTIONS]\n }] }]; }, null); })();\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.io/license\n */\n/** Injection token that determines the scroll handling while the menu is open. */\nconst MAT_MENU_SCROLL_STRATEGY = new InjectionToken('mat-menu-scroll-strategy');\n/** @docs-private */\nfunction MAT_MENU_SCROLL_STRATEGY_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_MENU_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_MENU_SCROLL_STRATEGY_FACTORY,\n};\n/** Default top padding of the menu panel. */\nconst MENU_PANEL_TOP_PADDING = 8;\n/** Options for binding a passive event listener. */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({ passive: true });\n// TODO(andrewseguin): Remove the kebab versions in favor of camelCased attribute selectors\n/** Directive applied to an element that should trigger a `mat-menu`. */\nclass MatMenuTrigger {\n constructor(_overlay, _element, _viewContainerRef, scrollStrategy, parentMenu, \n // `MatMenuTrigger` is commonly used in combination with a `MatMenuItem`.\n // tslint:disable-next-line: lightweight-tokens\n _menuItemInstance, _dir, \n // TODO(crisbeto): make the _focusMonitor required when doing breaking changes.\n // @breaking-change 8.0.0\n _focusMonitor) {\n this._overlay = _overlay;\n this._element = _element;\n this._viewContainerRef = _viewContainerRef;\n this._menuItemInstance = _menuItemInstance;\n this._dir = _dir;\n this._focusMonitor = _focusMonitor;\n this._overlayRef = null;\n this._menuOpen = false;\n this._closingActionsSubscription = Subscription.EMPTY;\n this._hoverSubscription = Subscription.EMPTY;\n this._menuCloseSubscription = Subscription.EMPTY;\n /**\n * Handles touch start events on the trigger.\n * Needs to be an arrow function so we can easily use addEventListener and removeEventListener.\n */\n this._handleTouchStart = (event) => {\n if (!isFakeTouchstartFromScreenReader(event)) {\n this._openedBy = 'touch';\n }\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 this._openedBy = undefined;\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 this.restoreFocus = true;\n /** Event emitted when the associated menu is opened. */\n this.menuOpened = new EventEmitter();\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 this.onMenuOpen = this.menuOpened;\n /** Event emitted when the associated menu is closed. */\n this.menuClosed = new EventEmitter();\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 this.onMenuClose = this.menuClosed;\n this._scrollStrategy = scrollStrategy;\n this._parentMaterialMenu = parentMenu instanceof _MatMenuBase ? parentMenu : undefined;\n _element.nativeElement.addEventListener('touchstart', this._handleTouchStart, passiveEventListenerOptions);\n if (_menuItemInstance) {\n _menuItemInstance._triggersSubmenu = this.triggersSubmenu();\n }\n }\n /**\n * @deprecated\n * @breaking-change 8.0.0\n */\n get _deprecatedMatMenuTriggerFor() { return this.menu; }\n set _deprecatedMatMenuTriggerFor(v) {\n this.menu = v;\n }\n /** References the menu instance that the trigger is associated with. */\n get menu() { return this._menu; }\n set menu(menu) {\n if (menu === this._menu) {\n return;\n }\n this._menu = menu;\n this._menuCloseSubscription.unsubscribe();\n if (menu) {\n if (menu === this._parentMaterialMenu && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuRecursiveError();\n }\n this._menuCloseSubscription = menu.close.subscribe((reason) => {\n this._destroyMenu(reason);\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 ngAfterContentInit() {\n this._checkMenu();\n this._handleHover();\n }\n ngOnDestroy() {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n this._element.nativeElement.removeEventListener('touchstart', this._handleTouchStart, passiveEventListenerOptions);\n this._menuCloseSubscription.unsubscribe();\n this._closingActionsSubscription.unsubscribe();\n this._hoverSubscription.unsubscribe();\n }\n /** Whether the menu is open. */\n get menuOpen() {\n return this._menuOpen;\n }\n /** The text direction of the containing app. */\n get dir() {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n /** Whether the menu triggers a sub-menu or a top-level one. */\n triggersSubmenu() {\n return !!(this._menuItemInstance && this._parentMaterialMenu);\n }\n /** Toggles the menu between the open and closed states. */\n toggleMenu() {\n return this._menuOpen ? this.closeMenu() : this.openMenu();\n }\n /** Opens the menu. */\n openMenu() {\n if (this._menuOpen) {\n return;\n }\n this._checkMenu();\n const overlayRef = this._createOverlay();\n const overlayConfig = overlayRef.getConfig();\n this._setPosition(overlayConfig.positionStrategy);\n overlayConfig.hasBackdrop = this.menu.hasBackdrop == null ? !this.triggersSubmenu() :\n this.menu.hasBackdrop;\n overlayRef.attach(this._getPortal());\n if (this.menu.lazyContent) {\n this.menu.lazyContent.attach(this.menuData);\n }\n this._closingActionsSubscription = this._menuClosingActions().subscribe(() => this.closeMenu());\n this._initMenu();\n if (this.menu instanceof _MatMenuBase) {\n this.menu._startAnimation();\n }\n }\n /** Closes the menu. */\n closeMenu() {\n this.menu.close.emit();\n }\n /**\n * Focuses the menu trigger.\n * @param origin Source of the menu trigger's focus.\n */\n focus(origin, options) {\n if (this._focusMonitor && origin) {\n this._focusMonitor.focusVia(this._element, origin, options);\n }\n else {\n this._element.nativeElement.focus(options);\n }\n }\n /** Closes the menu and does the necessary cleanup. */\n _destroyMenu(reason) {\n if (!this._overlayRef || !this.menuOpen) {\n return;\n }\n const menu = this.menu;\n this._closingActionsSubscription.unsubscribe();\n this._overlayRef.detach();\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 (this.restoreFocus && (reason === 'keydown' || !this._openedBy || !this.triggersSubmenu())) {\n this.focus(this._openedBy);\n }\n this._openedBy = undefined;\n if (menu instanceof _MatMenuBase) {\n menu._resetAnimation();\n if (menu.lazyContent) {\n // Wait for the exit animation to finish before detaching the content.\n menu._animationDone\n .pipe(filter(event => event.toState === 'void'), take(1), \n // Interrupt if the content got re-attached.\n takeUntil(menu.lazyContent._attached))\n .subscribe({\n next: () => menu.lazyContent.detach(),\n // No matter whether the content got re-attached, reset the menu.\n complete: () => this._setIsMenuOpen(false)\n });\n }\n else {\n this._setIsMenuOpen(false);\n }\n }\n else {\n this._setIsMenuOpen(false);\n if (menu.lazyContent) {\n menu.lazyContent.detach();\n }\n }\n }\n /**\n * This method sets the menu state to open and focuses the first item if\n * the menu was opened via the keyboard.\n */\n _initMenu() {\n this.menu.parentMenu = this.triggersSubmenu() ? this._parentMaterialMenu : undefined;\n this.menu.direction = this.dir;\n this._setMenuElevation();\n this.menu.focusFirstItem(this._openedBy || 'program');\n this._setIsMenuOpen(true);\n }\n /** Updates the menu elevation based on the amount of parent menus that it has. */\n _setMenuElevation() {\n if (this.menu.setElevation) {\n let depth = 0;\n let parentMenu = this.menu.parentMenu;\n while (parentMenu) {\n depth++;\n parentMenu = parentMenu.parentMenu;\n }\n this.menu.setElevation(depth);\n }\n }\n // set state rather than toggle to support triggers sharing a menu\n _setIsMenuOpen(isOpen) {\n this._menuOpen = isOpen;\n this._menuOpen ? this.menuOpened.emit() : this.menuClosed.emit();\n if (this.triggersSubmenu()) {\n this._menuItemInstance._highlighted = isOpen;\n }\n }\n /**\n * This method checks that a valid instance of MatMenu has been passed into\n * matMenuTriggerFor. If not, an exception is thrown.\n */\n _checkMenu() {\n if (!this.menu && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuMissingError();\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 _createOverlay() {\n if (!this._overlayRef) {\n const config = this._getOverlayConfig();\n this._subscribeToPositions(config.positionStrategy);\n this._overlayRef = this._overlay.create(config);\n // Consume the `keydownEvents` in order to prevent them from going to another overlay.\n // Ideally we'd also have our keyboard event logic in here, however doing so will\n // break anybody that may have implemented the `MatMenuPanel` themselves.\n this._overlayRef.keydownEvents().subscribe();\n }\n return this._overlayRef;\n }\n /**\n * This method builds the configuration object needed to create the overlay, the OverlayState.\n * @returns OverlayConfig\n */\n _getOverlayConfig() {\n return new OverlayConfig({\n positionStrategy: this._overlay.position()\n .flexibleConnectedTo(this._element)\n .withLockedPosition()\n .withGrowAfterOpen()\n .withTransformOriginOn('.mat-menu-panel, .mat-mdc-menu-panel'),\n backdropClass: this.menu.backdropClass || 'cdk-overlay-transparent-backdrop',\n panelClass: this.menu.overlayPanelClass,\n scrollStrategy: this._scrollStrategy(),\n direction: this._dir\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 _subscribeToPositions(position) {\n if (this.menu.setPositionClasses) {\n position.positionChanges.subscribe(change => {\n const posX = change.connectionPair.overlayX === 'start' ? 'after' : 'before';\n const posY = change.connectionPair.overlayY === 'top' ? 'below' : 'above';\n this.menu.setPositionClasses(posX, posY);\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 _setPosition(positionStrategy) {\n let [originX, originFallbackX] = this.menu.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'];\n let [overlayY, overlayFallbackY] = this.menu.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];\n let [originY, originFallbackY] = [overlayY, overlayFallbackY];\n let [overlayX, overlayFallbackX] = [originX, originFallbackX];\n let offsetY = 0;\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 = this.menu.xPosition === 'before' ? 'start' : 'end';\n originFallbackX = overlayX = originX === 'end' ? 'start' : 'end';\n offsetY = overlayY === 'bottom' ? MENU_PANEL_TOP_PADDING : -MENU_PANEL_TOP_PADDING;\n }\n else if (!this.menu.overlapTrigger) {\n originY = overlayY === 'top' ? 'bottom' : 'top';\n originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';\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 /** Returns a stream that emits whenever an action that should close the menu occurs. */\n _menuClosingActions() {\n const backdrop = this._overlayRef.backdropClick();\n const detachments = this._overlayRef.detachments();\n const parentClose = this._parentMaterialMenu ? this._parentMaterialMenu.closed : of();\n const hover = this._parentMaterialMenu ? this._parentMaterialMenu._hovered().pipe(filter(active => active !== this._menuItemInstance), filter(() => this._menuOpen)) : of();\n return merge(backdrop, parentClose, hover, detachments);\n }\n /** Handles mouse presses on the trigger. */\n _handleMousedown(event) {\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 // 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 /** Handles key presses on the trigger. */\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n // Pressing enter on the trigger will trigger the click handler later.\n if (keyCode === ENTER || keyCode === SPACE) {\n this._openedBy = 'keyboard';\n }\n if (this.triggersSubmenu() && ((keyCode === RIGHT_ARROW && this.dir === 'ltr') ||\n (keyCode === LEFT_ARROW && this.dir === 'rtl'))) {\n this._openedBy = 'keyboard';\n this.openMenu();\n }\n }\n /** Handles click events on the trigger. */\n _handleClick(event) {\n if (this.triggersSubmenu()) {\n // Stop event propagation to avoid closing the parent menu.\n event.stopPropagation();\n this.openMenu();\n }\n else {\n this.toggleMenu();\n }\n }\n /** Handles the cases where the user hovers over the trigger. */\n _handleHover() {\n // Subscribe to changes in the hovered item in order to toggle the panel.\n if (!this.triggersSubmenu() || !this._parentMaterialMenu) {\n return;\n }\n this._hoverSubscription = this._parentMaterialMenu._hovered()\n // Since we might have multiple competing triggers for the same menu (e.g. a sub-menu\n // with different data and triggers), we have to delay it by a tick to ensure that\n // it won't be closed immediately after it is opened.\n .pipe(filter(active => active === this._menuItemInstance && !active.disabled), delay(0, asapScheduler))\n .subscribe(() => {\n this._openedBy = 'mouse';\n // If the same menu is used between multiple triggers, it might still be animating\n // while the new trigger tries to re-open it. Wait for the animation to finish\n // before doing so. Also interrupt if the user moves to another item.\n if (this.menu instanceof _MatMenuBase && this.menu._isAnimating) {\n // We need the `delay(0)` here in order to avoid\n // 'changed after checked' errors in some cases. See #12194.\n this.menu._animationDone\n .pipe(take(1), delay(0, asapScheduler), takeUntil(this._parentMaterialMenu._hovered()))\n .subscribe(() => this.openMenu());\n }\n else {\n this.openMenu();\n }\n });\n }\n /** Gets the portal that should be attached to the overlay. */\n _getPortal() {\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 !== this.menu.templateRef) {\n this._portal = new TemplatePortal(this.menu.templateRef, this._viewContainerRef);\n }\n return this._portal;\n }\n}\nMatMenuTrigger.ɵfac = function MatMenuTrigger_Factory(t) { return new (t || MatMenuTrigger)(ɵngcc0.ɵɵdirectiveInject(ɵngcc4.Overlay), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(MAT_MENU_SCROLL_STRATEGY), ɵngcc0.ɵɵdirectiveInject(MAT_MENU_PANEL, 8), ɵngcc0.ɵɵdirectiveInject(MatMenuItem, 10), ɵngcc0.ɵɵdirectiveInject(ɵngcc5.Directionality, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.FocusMonitor)); };\nMatMenuTrigger.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MatMenuTrigger, selectors: [[\"\", \"mat-menu-trigger-for\", \"\"], [\"\", \"matMenuTriggerFor\", \"\"]], hostAttrs: [\"aria-haspopup\", \"true\", 1, \"mat-menu-trigger\"], hostVars: 2, hostBindings: function MatMenuTrigger_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mousedown\", function MatMenuTrigger_mousedown_HostBindingHandler($event) { return ctx._handleMousedown($event); })(\"keydown\", function MatMenuTrigger_keydown_HostBindingHandler($event) { return ctx._handleKeydown($event); })(\"click\", function MatMenuTrigger_click_HostBindingHandler($event) { return ctx._handleClick($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.menuOpen || null)(\"aria-controls\", ctx.menuOpen ? ctx.menu.panelId : null);\n } }, inputs: { restoreFocus: [\"matMenuTriggerRestoreFocus\", \"restoreFocus\"], _deprecatedMatMenuTriggerFor: [\"mat-menu-trigger-for\", \"_deprecatedMatMenuTriggerFor\"], menu: [\"matMenuTriggerFor\", \"menu\"], menuData: [\"matMenuTriggerData\", \"menuData\"] }, outputs: { menuOpened: \"menuOpened\", onMenuOpen: \"onMenuOpen\", menuClosed: \"menuClosed\", onMenuClose: \"onMenuClose\" }, exportAs: [\"matMenuTrigger\"] });\nMatMenuTrigger.ctorParameters = () => [\n { type: Overlay },\n { type: ElementRef },\n { type: ViewContainerRef },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_MENU_SCROLL_STRATEGY,] }] },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_MENU_PANEL,] }, { type: Optional }] },\n { type: MatMenuItem, decorators: [{ type: Optional }, { type: Self }] },\n { type: Directionality, decorators: [{ type: Optional }] },\n { type: FocusMonitor }\n];\nMatMenuTrigger.propDecorators = {\n _deprecatedMatMenuTriggerFor: [{ type: Input, args: ['mat-menu-trigger-for',] }],\n menu: [{ type: Input, args: ['matMenuTriggerFor',] }],\n menuData: [{ type: Input, args: ['matMenuTriggerData',] }],\n restoreFocus: [{ type: Input, args: ['matMenuTriggerRestoreFocus',] }],\n menuOpened: [{ type: Output }],\n onMenuOpen: [{ type: Output }],\n menuClosed: [{ type: Output }],\n onMenuClose: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatMenuTrigger, [{\n type: Directive,\n args: [{\n selector: `[mat-menu-trigger-for], [matMenuTriggerFor]`,\n host: {\n 'class': 'mat-menu-trigger',\n 'aria-haspopup': 'true',\n '[attr.aria-expanded]': 'menuOpen || null',\n '[attr.aria-controls]': 'menuOpen ? menu.panelId : null',\n '(mousedown)': '_handleMousedown($event)',\n '(keydown)': '_handleKeydown($event)',\n '(click)': '_handleClick($event)'\n },\n exportAs: 'matMenuTrigger'\n }]\n }], function () { return [{ type: ɵngcc4.Overlay }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_MENU_SCROLL_STRATEGY]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_MENU_PANEL]\n }, {\n type: Optional\n }] }, { type: MatMenuItem, decorators: [{\n type: Optional\n }, {\n type: Self\n }] }, { type: ɵngcc5.Directionality, decorators: [{\n type: Optional\n }] }, { type: ɵngcc1.FocusMonitor }]; }, { restoreFocus: [{\n type: Input,\n args: ['matMenuTriggerRestoreFocus']\n }], menuOpened: [{\n type: Output\n }], onMenuOpen: [{\n type: Output\n }], menuClosed: [{\n type: Output\n }], onMenuClose: [{\n type: Output\n }], _deprecatedMatMenuTriggerFor: [{\n type: Input,\n args: ['mat-menu-trigger-for']\n }], menu: [{\n type: Input,\n args: ['matMenuTriggerFor']\n }], menuData: [{\n type: Input,\n args: ['matMenuTriggerData']\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.io/license\n */\n/**\n * Used by both the current `MatMenuModule` and the MDC `MatMenuModule`\n * to declare the menu-related directives.\n */\nclass _MatMenuDirectivesModule {\n}\n_MatMenuDirectivesModule.ɵfac = function _MatMenuDirectivesModule_Factory(t) { return new (t || _MatMenuDirectivesModule)(); };\n_MatMenuDirectivesModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: _MatMenuDirectivesModule });\n_MatMenuDirectivesModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [MatCommonModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(_MatMenuDirectivesModule, [{\n type: NgModule,\n args: [{\n exports: [MatMenuTrigger, MatMenuContent, MatCommonModule],\n declarations: [\n MatMenuTrigger,\n MatMenuContent,\n ],\n providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(_MatMenuDirectivesModule, { declarations: function () { return [MatMenuTrigger, MatMenuContent]; }, exports: function () { return [MatMenuTrigger, MatMenuContent, MatCommonModule]; } }); })();\nclass MatMenuModule {\n}\nMatMenuModule.ɵfac = function MatMenuModule_Factory(t) { return new (t || MatMenuModule)(); };\nMatMenuModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: MatMenuModule });\nMatMenuModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [CommonModule,\n MatCommonModule,\n MatRippleModule,\n OverlayModule,\n _MatMenuDirectivesModule, CdkScrollableModule, MatCommonModule, _MatMenuDirectivesModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MatMenuModule, [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n MatCommonModule,\n MatRippleModule,\n OverlayModule,\n _MatMenuDirectivesModule,\n ],\n exports: [CdkScrollableModule, MatCommonModule, MatMenu, MatMenuItem, _MatMenuDirectivesModule],\n declarations: [MatMenu, MatMenuItem],\n providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MatMenuModule, { declarations: function () { return [MatMenu, MatMenuItem]; }, imports: function () { return [CommonModule,\n MatCommonModule,\n MatRippleModule,\n OverlayModule, _MatMenuDirectivesModule]; }, exports: function () { return [CdkScrollableModule, MatCommonModule, MatMenu, MatMenuItem, _MatMenuDirectivesModule]; } }); })();\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.io/license\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.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_MENU_CONTENT, MAT_MENU_DEFAULT_OPTIONS, MAT_MENU_PANEL, MAT_MENU_SCROLL_STRATEGY, MatMenu, MatMenuContent, MatMenuItem, MatMenuModule, MatMenuTrigger, _MatMenuBase, _MatMenuDirectivesModule, fadeInItems, matMenuAnimations, transformMenu, MAT_MENU_DEFAULT_OPTIONS_FACTORY as ɵangular_material_src_material_menu_menu_a, MAT_MENU_SCROLL_STRATEGY_FACTORY as ɵangular_material_src_material_menu_menu_b, MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER as ɵangular_material_src_material_menu_menu_c };\n\n"],"mappings":"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"},"metadata":{},"sourceType":"module"} |