{"version":3,"sources":["libs/galaxy/popover/src/popover-positions.ts","libs/galaxy/popover/src/popover.component.ts","libs/galaxy/popover/src/popover.component.html","libs/galaxy/popover/src/directives/popover.directive.ts","libs/galaxy/popover/src/directives/popover-actions.directive.ts","libs/galaxy/popover/src/directives/popover-title.directive.ts","libs/galaxy/popover/src/popover.module.ts","libs/galaxy/popover/public_api.ts","libs/galaxy/popover/index.ts","libs/galaxy/tooltip/src/tooltip.component.ts","libs/galaxy/tooltip/src/tooltip.component.html","libs/galaxy/tooltip/src/directive/tooltip.directive.ts","libs/galaxy/tooltip/src/tooltip.module.ts","libs/galaxy/tooltip/public_api.ts","libs/galaxy/tooltip/index.ts","node_modules/@angular/material/fesm2022/menu.mjs"],"sourcesContent":["import { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport const PopoverPositions: Record = {\n Top: {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n panelClass: ['top'],\n },\n Bottom: {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n panelClass: ['bottom'],\n },\n Left: {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n panelClass: ['left'],\n },\n Right: {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n panelClass: ['right'],\n },\n TopRight: {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n panelClass: ['top', 'corner-left'],\n },\n TopLeft: {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n panelClass: ['top', 'corner-right'],\n },\n BottomRight: {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n panelClass: ['bottom', 'corner-left'],\n },\n BottomLeft: {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n panelClass: ['bottom', 'corner-right'],\n },\n};\n\nexport const DEFAULT_POSITIONS: ConnectedPosition[] = [\n {\n ...PopoverPositions.Top,\n },\n {\n ...PopoverPositions.Bottom,\n },\n {\n ...PopoverPositions.Left,\n },\n {\n ...PopoverPositions.Right,\n },\n {\n ...PopoverPositions.TopRight,\n },\n {\n ...PopoverPositions.TopLeft,\n },\n {\n ...PopoverPositions.BottomRight,\n },\n {\n ...PopoverPositions.BottomLeft,\n },\n];\n","import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n AfterContentInit,\n OnInit,\n Component,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n booleanAttribute,\n} from '@angular/core';\n\nimport { DEFAULT_POSITIONS } from './popover-positions';\nimport { Observable } from 'rxjs';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { map } from 'rxjs/operators';\n\nexport type PaddingSize = 'large' | 'small' | 'none';\n\n@Component({\n selector: 'glxy-popover',\n templateUrl: './popover.component.html',\n styleUrls: ['./popover.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class PopoverComponent implements OnInit, AfterContentInit, OnChanges {\n _positions?: ConnectedPosition[];\n\n /** Origin that references the component the popover should be created relative to. Comes from CdkOverlayOrigin directive */\n @Input() origin!: CdkOverlayOrigin;\n\n /** Whether the popover is open or closed */\n @Input({ transform: booleanAttribute }) isOpen = false;\n\n /** Width and Height of the popover box */\n @Input() maxWidth: number | string = '320px';\n @Input() maxHeight: number | string = 'auto';\n\n /** Option to place a backdrop element behind the popover to allow for click interaction/blocking */\n @Input({ transform: booleanAttribute }) hasBackdrop = false;\n\n /** Option to color the backdrop, or leave it transparent, IF hasBackdrop is true */\n @Input({ transform: booleanAttribute }) showBackdrop = false;\n\n /** Option to close the popover when the backdrop is clicked */\n /** Will automatically enable the background if enabled */\n @Input({ transform: booleanAttribute }) closeOnBackdropClick = false;\n\n /** Option to close the popover when the escape key is pressed */\n @Input({ transform: booleanAttribute }) closeOnEscapeKey = false;\n\n /** Whether to show the arrow for the popover */\n @Input({ transform: booleanAttribute }) hasArrow = true;\n\n /** Whether to move the popover to keep it on screen **/\n @Input({ transform: booleanAttribute }) keepOnScreen = false;\n\n /** Control the amount of padding on the popover */\n @Input() padding: PaddingSize = 'large';\n\n /** Change the background color and text for high contrast with white backgrounds */\n @Input({ transform: booleanAttribute }) highContrast = false;\n\n /** If the popover should change to fullscreen on smaller viewports */\n @Input({ transform: booleanAttribute }) mobileFullScreen = false;\n\n /** Breakpoint below which the popover becomes fullscreen, if using mobileFullScreen **/\n @Input() breakpoint = '425px';\n\n /** Whether to show a close button on mobileFullScreen popovers */\n @Input({ transform: booleanAttribute }) showMobileClose = true;\n\n /**\n * What positioning strategy to use for the popover. By default, the strategy allows for the popover\n * to move to above, below, left, and right of the origin depending on screen size\n */\n @Input() positions: ConnectedPosition[] = DEFAULT_POSITIONS;\n\n @Output() readonly isOpenChange: EventEmitter = new EventEmitter(/* isAsync */ true);\n\n /** Emits when the backdrop has been clicked */\n @Output() backdropClick: EventEmitter = new EventEmitter();\n\n /** Listen to escape key and close popover when closeOnEscapeKey is true */\n @HostListener('document:keydown.escape')\n handleEscapeKey() {\n if (this.closeOnEscapeKey && this.isOpen) this.close();\n }\n\n get _cooercedMaxWidth(): string {\n return coerceCssPixelValue(this.maxWidth);\n }\n get _cooercedMaxHeight(): string {\n return coerceCssPixelValue(this.maxHeight);\n }\n get _popoverClasses(): string[] {\n return ['glxy-popover', this.hasArrow ? 'has-arrow' : ''];\n }\n get _backdropClass(): string {\n return this.showBackdrop ? '' : 'hide-backdrop';\n }\n\n isFullscreen$?: Observable;\n mobileBreakpoint = '';\n\n constructor(private readonly breakpointObserver: BreakpointObserver) {}\n\n ngOnInit(): void {\n this.mobileBreakpoint = `(max-width: ${this.breakpoint})`;\n this.isFullscreen$ = this.breakpointObserver.observe([this.mobileBreakpoint]).pipe(\n map((resp) => {\n return resp.breakpoints[this.mobileBreakpoint];\n }),\n );\n }\n\n ngAfterContentInit(): void {\n this.setupPositions();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const { positions } = changes;\n if (positions && positions.previousValue !== this.positions) {\n this.setupPositions();\n }\n }\n\n setupPositions(): void {\n this._positions = this.positions.map((pos: ConnectedPosition) => {\n const newPos = { ...pos };\n return newPos;\n });\n }\n\n /** Used by the popover directive to attach itself to the popover component */\n setOrigin(origin: CdkOverlayOrigin): void {\n this.origin = origin;\n }\n\n onBackdropClick(): void {\n this.backdropClick.emit();\n if (this.closeOnBackdropClick) this.close();\n }\n\n open(): void {\n this.isOpen = true;\n this.isOpenChange.emit(this.isOpen);\n }\n\n close(): void {\n this.isOpen = false;\n this.isOpenChange.emit(this.isOpen);\n }\n\n toggle(): void {\n this.isOpen = !this.isOpen;\n this.isOpenChange.emit(this.isOpen);\n }\n}\n","\n \n
\n \n
\n \n
\n \n
\n\n @if (hasArrow && (isFullscreen$ | async) === false) {\n
\n }\n\n @if (mobileFullScreen && showMobileClose && (isFullscreen$ | async)) {\n
\n \n
\n }\n \n\n","import { CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { Directive, ElementRef, Input, OnInit } from '@angular/core';\nimport { PopoverComponent } from '../popover.component';\n\n@Directive({\n selector: '[glxyPopover]',\n exportAs: 'glxyPopover',\n standalone: false,\n})\nexport class GalaxyPopoverDirective implements OnInit {\n /** Passed in reference of the popover */\n @Input('glxyPopover') popover?: PopoverComponent;\n\n private readonly origin: CdkOverlayOrigin;\n\n constructor(private elementRef: ElementRef) {\n this.origin = new CdkOverlayOrigin(this.elementRef);\n }\n\n ngOnInit(): void {\n this.popover?.setOrigin(this.origin);\n }\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: 'glxy-popover-actions, [glxyPopoverActions]',\n standalone: false,\n})\nexport class PopoverActionsDirective {\n @HostBinding('class') class = 'glxy-popover-actions';\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: 'glxy-popover-title, [glxyPopoverTitle]',\n standalone: false,\n})\nexport class PopoverTitleDirective {\n @HostBinding('class') class = 'glxy-popover-title';\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PopoverComponent } from './popover.component';\nexport { PopoverComponent } from './popover.component';\n\nimport { PopoverActionsDirective } from './directives/popover-actions.directive';\nexport { PopoverActionsDirective } from './directives/popover-actions.directive';\n\nimport { PopoverTitleDirective } from './directives/popover-title.directive';\nexport { PopoverTitleDirective } from './directives/popover-title.directive';\n\nimport { GalaxyPopoverDirective } from './directives/popover.directive';\nexport { GalaxyPopoverDirective } from './directives/popover.directive';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\nexport const MODULE_IMPORTS = [CommonModule, OverlayModule, MatIconModule, MatButtonModule];\nexport const MODULE_DECLARATIONS = [\n PopoverComponent,\n PopoverTitleDirective,\n PopoverActionsDirective,\n GalaxyPopoverDirective,\n];\n\n@NgModule({\n declarations: MODULE_DECLARATIONS,\n exports: MODULE_DECLARATIONS,\n imports: [MODULE_IMPORTS],\n})\nexport class GalaxyPopoverModule {}\n","export * from './src/popover.module';\nexport { PopoverPositions } from './src/popover-positions';\n","// Export things like public API, and interfaces from here.\nexport * from './public_api';\n","import { CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';\nimport { booleanAttribute, Component, ElementRef, HostBinding, Input } from '@angular/core';\nimport { PopoverPositions } from '@vendasta/galaxy/popover';\n\n@Component({\n selector: 'glxy-tooltip,',\n templateUrl: './tooltip.component.html',\n standalone: false,\n})\nexport class TooltipComponent {\n @HostBinding('class') class = 'glxy-tooltip';\n\n positions = [PopoverPositions.Top, PopoverPositions.Bottom];\n /** Origin that references the component the tooltip should be created relative to. Comes from CdkOverlayOrigin directive */\n @Input() origin!: CdkOverlayOrigin;\n\n /** Optional title for the tooltip */\n @Input() title?: string;\n\n /** text that can be added to the tooltip */\n @Input() text?: string;\n\n /** Change the background color and text for high contrast with page background */\n @Input({ transform: booleanAttribute }) highContrast = false;\n\n show = false;\n\n constructor(public elementRef: ElementRef) {}\n\n setOrigin(origin: CdkOverlayOrigin): void {\n this.origin = origin;\n }\n\n setText(text: string): void {\n this.text = text;\n }\n\n setTitle(title: string): void {\n this.title = title;\n }\n\n sethighContrast(mode: boolean): void {\n this.highContrast = mode;\n }\n\n setPositions(positions: ConnectedPosition[]): void {\n this.positions = positions;\n }\n\n showTooltip(): void {\n this.show = true;\n }\n\n hideTooltip(): void {\n this.show = false;\n }\n}\n","@if (origin && (!!title || !!text)) {\n \n @if (title) {\n \n {{ title | translate }}\n \n }\n @if (text) {\n {{ text | translate }}\n }\n \n}\n","import { CdkOverlayOrigin, ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { booleanAttribute, Directive, ElementRef, HostListener, Input, OnChanges, OnDestroy } from '@angular/core';\nimport { TooltipComponent } from '../tooltip.component';\n\nconst HIDDEN_TEST_WAIT = 500;\n\n@Directive({\n selector: '[glxyTooltip]',\n exportAs: 'glxyTooltip',\n standalone: false,\n})\nexport class GalaxyTooltipDirective implements OnChanges, OnDestroy {\n private readonly tooltip: TooltipComponent;\n private readonly origin: CdkOverlayOrigin;\n show = false;\n\n private readonly overlayRef: OverlayRef;\n\n /** The text of the tooltip */\n @Input({ required: true }) glxyTooltip = '';\n\n /** An optional title that can be given to the tooltip */\n @Input() tooltipTitle?: string;\n\n /** Disables the tooltip when true */\n @Input({ transform: booleanAttribute }) glxyTooltipDisabled = false;\n\n /**\n * What positioning strategy to use for the tooltip. If empty, no positions are applied to the popover (it has a default position set)\n */\n @Input() tooltipPositions?: ConnectedPosition[] = [];\n\n /** Change the background color and text for high contrast with white backgrounds */\n @Input({ transform: booleanAttribute }) highContrast = true;\n\n private hiddenTestID = 0;\n\n @HostListener('mouseenter') onMouseEnter(): void {\n this.showTooltip();\n\n // Stop any previous tests, if any\n window.clearTimeout(this.hiddenTestID);\n // Kick off a new test loop\n this.testElementHidden();\n }\n\n @HostListener('mouseleave') onMouseLeave(): void {\n this.hideTooltip();\n\n // Stop current test from running\n window.clearTimeout(this.hiddenTestID);\n }\n\n constructor(\n private elementRef: ElementRef,\n private overlay: Overlay,\n ) {\n this.overlayRef = this.overlay.create({\n hasBackdrop: false,\n });\n this.tooltip = this.overlayRef?.attach(new ComponentPortal(TooltipComponent)).instance;\n this.origin = new CdkOverlayOrigin(this.elementRef);\n this.updateTooltipValues();\n }\n\n ngOnChanges(): void {\n this.updateTooltipValues();\n }\n\n ngOnDestroy(): void {\n this.overlayRef?.dispose();\n }\n\n updateTooltipValues(): void {\n if (this.tooltip) {\n this.tooltip.setOrigin(this.origin);\n this.tooltip.setTitle(this.tooltipTitle || '');\n this.tooltip.setText(this.glxyTooltip);\n this.tooltip.sethighContrast(this.highContrast);\n if (this.tooltipPositions?.length) {\n this.tooltip.setPositions(this.tooltipPositions);\n }\n }\n }\n\n showTooltip(): void {\n if (!this.glxyTooltipDisabled) {\n this.tooltip?.showTooltip();\n }\n }\n\n hideTooltip(): void {\n this.tooltip?.hideTooltip();\n }\n\n /**\n * Test to see if the parent element is in the DOM. If not, hide the tooltip\n */\n private testElementHidden(): void {\n if (!this.tooltip?.show) {\n return;\n }\n\n this.hiddenTestID = window.setTimeout(() => {\n if (!document.body.contains(this.elementRef.nativeElement)) {\n this.hideTooltip();\n }\n this.testElementHidden();\n }, HIDDEN_TEST_WAIT);\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyPopoverModule } from '@vendasta/galaxy/popover';\nimport { GalaxyTooltipDirective } from './directive/tooltip.directive';\nimport { TooltipComponent } from './tooltip.component';\n\nexport const MODULE_IMPORTS = [CommonModule, OverlayModule, GalaxyPopoverModule, TranslateModule];\n\nexport const MODULE_DECLARATIONS = [TooltipComponent, GalaxyTooltipDirective];\n\n@NgModule({\n declarations: MODULE_DECLARATIONS,\n imports: MODULE_IMPORTS,\n exports: [TooltipComponent, GalaxyTooltipDirective],\n})\nexport class GalaxyTooltipModule {}\n","export { GalaxyTooltipDirective as GalaxyTooltip } from './src/directive/tooltip.directive';\nexport { TooltipComponent } from './src/tooltip.component';\nexport * from './src/tooltip.module';\n","// Export things like public API, and interfaces from here.\nexport * from './public_api';\n","import * as i0 from '@angular/core';\nimport { InjectionToken, inject, ElementRef, ChangeDetectorRef, booleanAttribute, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, TemplateRef, ApplicationRef, Injector, ViewContainerRef, Directive, QueryList, EventEmitter, ANIMATION_MODULE_TYPE, afterNextRender, ContentChildren, ViewChild, ContentChild, Output, NgZone, NgModule } from '@angular/core';\nimport { FocusMonitor, _IdGenerator, FocusKeyManager, isFakeTouchstartFromScreenReader, isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';\nimport { UP_ARROW, DOWN_ARROW, RIGHT_ARROW, LEFT_ARROW, ESCAPE, hasModifierKey, ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { Subject, merge, Subscription, of } from 'rxjs';\nimport { startWith, switchMap, takeUntil, take, filter } from 'rxjs/operators';\nimport { DOCUMENT } from '@angular/common';\nimport { _StructuralStylesLoader, MatRipple, MatRippleModule, MatCommonModule } from '@angular/material/core';\nimport { _CdkPrivateStyleLoader } from '@angular/cdk/private';\nimport { TemplatePortal, DomPortalOutlet } from '@angular/cdk/portal';\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';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\n\n/**\n * Injection token used to provide the parent menu to menu-specific components.\n * @docs-private\n */\nconst _c0 = [\"mat-menu-item\", \"\"];\nconst _c1 = [[[\"mat-icon\"], [\"\", \"matMenuItemIcon\", \"\"]], \"*\"];\nconst _c2 = [\"mat-icon, [matMenuItemIcon]\", \"*\"];\nfunction MatMenuItem_Conditional_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(0, \"svg\", 2);\n i0.ɵɵelement(1, \"polygon\", 3);\n i0.ɵɵelementEnd();\n }\n}\nconst _c3 = [\"*\"];\nfunction MatMenu_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵlistener(\"click\", function MatMenu_ng_template_0_Template_div_click_0_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.closed.emit(\"click\"));\n })(\"animationstart\", function MatMenu_ng_template_0_Template_div_animationstart_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1._onAnimationStart($event.animationName));\n })(\"animationend\", function MatMenu_ng_template_0_Template_div_animationend_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1._onAnimationDone($event.animationName));\n })(\"animationcancel\", function MatMenu_ng_template_0_Template_div_animationcancel_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1._onAnimationDone($event.animationName));\n });\n i0.ɵɵelementStart(1, \"div\", 1);\n i0.ɵɵprojection(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassMap(ctx_r1._classList);\n i0.ɵɵclassProp(\"mat-menu-panel-animations-disabled\", ctx_r1._animationsDisabled)(\"mat-menu-panel-exit-animation\", ctx_r1._panelAnimationState === \"void\")(\"mat-menu-panel-animating\", ctx_r1._isAnimating);\n i0.ɵɵproperty(\"id\", ctx_r1.panelId);\n i0.ɵɵattribute(\"aria-label\", ctx_r1.ariaLabel || null)(\"aria-labelledby\", ctx_r1.ariaLabelledby || null)(\"aria-describedby\", ctx_r1.ariaDescribedby || null);\n }\n}\nconst MAT_MENU_PANEL = /*#__PURE__*/new InjectionToken('MAT_MENU_PANEL');\n\n/**\n * Single item inside a `mat-menu`. Provides the menu item styling and accessibility treatment.\n */\nlet MatMenuItem = /*#__PURE__*/(() => {\n class MatMenuItem {\n _elementRef = inject(ElementRef);\n _document = inject(DOCUMENT);\n _focusMonitor = inject(FocusMonitor);\n _parentMenu = inject(MAT_MENU_PANEL, {\n optional: true\n });\n _changeDetectorRef = inject(ChangeDetectorRef);\n /** ARIA role for the menu item. */\n role = 'menuitem';\n /** Whether the menu item is disabled. */\n disabled = false;\n /** Whether ripples are disabled on the menu item. */\n disableRipple = false;\n /** Stream that emits when the menu item is hovered. */\n _hovered = new Subject();\n /** Stream that emits when the menu item is focused. */\n _focused = new Subject();\n /** Whether the menu item is highlighted. */\n _highlighted = false;\n /** Whether the menu item acts as a trigger for a sub-menu. */\n _triggersSubmenu = false;\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n this._parentMenu?.addItem?.(this);\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 _checkDisabled(event) {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n /** Emits to the hover stream. */\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 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 icons[i].remove();\n }\n return clone.textContent?.trim() || '';\n }\n _setHighlighted(isHighlighted) {\n // We need to mark this for check for the case where the content is coming from a\n // `matMenuContent` whose change detection tree is at the declaration position,\n // not the insertion position. See #23175.\n this._highlighted = isHighlighted;\n this._changeDetectorRef.markForCheck();\n }\n _setTriggersSubmenu(triggersSubmenu) {\n this._triggersSubmenu = triggersSubmenu;\n this._changeDetectorRef.markForCheck();\n }\n _hasFocus() {\n return this._document && this._document.activeElement === this._getHostElement();\n }\n static ɵfac = function MatMenuItem_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatMenuItem)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatMenuItem,\n selectors: [[\"\", \"mat-menu-item\", \"\"]],\n hostAttrs: [1, \"mat-mdc-menu-item\", \"mat-focus-indicator\"],\n hostVars: 8,\n hostBindings: function MatMenuItem_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵ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 i0.ɵɵattribute(\"role\", ctx.role)(\"tabindex\", ctx._getTabIndex())(\"aria-disabled\", ctx.disabled)(\"disabled\", ctx.disabled || null);\n i0.ɵɵclassProp(\"mat-mdc-menu-item-highlighted\", ctx._highlighted)(\"mat-mdc-menu-item-submenu-trigger\", ctx._triggersSubmenu);\n }\n },\n inputs: {\n role: \"role\",\n disabled: [2, \"disabled\", \"disabled\", booleanAttribute],\n disableRipple: [2, \"disableRipple\", \"disableRipple\", booleanAttribute]\n },\n exportAs: [\"matMenuItem\"],\n features: [i0.ɵɵInputTransformsFeature],\n attrs: _c0,\n ngContentSelectors: _c2,\n decls: 5,\n vars: 3,\n consts: [[1, \"mat-mdc-menu-item-text\"], [\"matRipple\", \"\", 1, \"mat-mdc-menu-ripple\", 3, \"matRippleDisabled\", \"matRippleTrigger\"], [\"viewBox\", \"0 0 5 10\", \"focusable\", \"false\", \"aria-hidden\", \"true\", 1, \"mat-mdc-menu-submenu-icon\"], [\"points\", \"0,0 5,5 0,10\"]],\n template: function MatMenuItem_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c1);\n i0.ɵɵprojection(0);\n i0.ɵɵelementStart(1, \"span\", 0);\n i0.ɵɵprojection(2, 1);\n i0.ɵɵelementEnd();\n i0.ɵɵelement(3, \"div\", 1);\n i0.ɵɵtemplate(4, MatMenuItem_Conditional_4_Template, 2, 0, \":svg:svg\", 2);\n }\n if (rf & 2) {\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"matRippleDisabled\", ctx.disableRipple || ctx.disabled)(\"matRippleTrigger\", ctx._getHostElement());\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx._triggersSubmenu ? 4 : -1);\n }\n },\n dependencies: [MatRipple],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n return MatMenuItem;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Throws an exception for the case when menu's x-position value isn't valid.\n * In other words, it doesn't match 'before' or 'after'.\n * @docs-private\n */\nfunction throwMatMenuInvalidPositionX() {\n throw Error(`xPosition value must be either 'before' or after'.\n Example: `);\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: `);\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 * 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 = /*#__PURE__*/new InjectionToken('MatMenuContent');\n/** Menu content that will be rendered lazily once the menu is opened. */\nlet MatMenuContent = /*#__PURE__*/(() => {\n class MatMenuContent {\n _template = inject(TemplateRef);\n _appRef = inject(ApplicationRef);\n _injector = inject(Injector);\n _viewContainerRef = inject(ViewContainerRef);\n _document = inject(DOCUMENT);\n _changeDetectorRef = inject(ChangeDetectorRef);\n _portal;\n _outlet;\n /** Emits when the menu content has been attached. */\n _attached = new Subject();\n constructor() {}\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'), null, 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 this._changeDetectorRef.markForCheck();\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 this.detach();\n this._outlet?.dispose();\n }\n static ɵfac = function MatMenuContent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatMenuContent)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatMenuContent,\n selectors: [[\"ng-template\", \"matMenuContent\", \"\"]],\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_MENU_CONTENT,\n useExisting: MatMenuContent\n }])]\n });\n }\n return MatMenuContent;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** Injection token to be used to override the default options for `mat-menu`. */\nconst MAT_MENU_DEFAULT_OPTIONS = /*#__PURE__*/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/** Name of the enter animation `@keyframes`. */\nconst ENTER_ANIMATION = '_mat-menu-enter';\n/** Name of the exit animation `@keyframes`. */\nconst EXIT_ANIMATION = '_mat-menu-exit';\nlet MatMenu = /*#__PURE__*/(() => {\n class MatMenu {\n _elementRef = inject(ElementRef);\n _changeDetectorRef = inject(ChangeDetectorRef);\n _injector = inject(Injector);\n _keyManager;\n _xPosition;\n _yPosition;\n _firstItemFocusRef;\n _exitFallbackTimeout;\n /** Whether animations are currently disabled. */\n _animationsDisabled;\n /** All items inside the menu. Includes items nested inside another menu. */\n _allItems;\n /** Only the direct descendant menu items. */\n _directDescendantItems = new QueryList();\n /** Classes to be applied to the menu panel. */\n _classList = {};\n /** Current state of the panel animation. */\n _panelAnimationState = 'void';\n /** Emits whenever an animation on the menu completes. */\n _animationDone = new Subject();\n /** Whether the menu is animating. */\n _isAnimating = false;\n /** Parent menu of the current menu panel. */\n parentMenu;\n /** Layout direction of the menu. */\n direction;\n /** Class or list of classes to be added to the overlay panel. */\n overlayPanelClass;\n /** Class to be added to the backdrop element. */\n backdropClass;\n /** aria-label for the menu panel. */\n ariaLabel;\n /** aria-labelledby for the menu panel. */\n ariaLabelledby;\n /** aria-describedby for the menu panel. */\n ariaDescribedby;\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 /** @docs-private */\n templateRef;\n /**\n * List of the items inside of a menu.\n * @deprecated\n * @breaking-change 8.0.0\n */\n items;\n /**\n * Menu content that will be rendered lazily.\n * @docs-private\n */\n lazyContent;\n /** Whether the menu should overlap its trigger. */\n overlapTrigger;\n /** Whether the menu has a backdrop. */\n hasBackdrop;\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 const newClassList = {\n ...this._classList\n };\n if (previousPanelClass && previousPanelClass.length) {\n previousPanelClass.split(' ').forEach(className => {\n newClassList[className] = false;\n });\n }\n this._previousPanelClass = classes;\n if (classes && classes.length) {\n classes.split(' ').forEach(className => {\n newClassList[className] = true;\n });\n this._elementRef.nativeElement.className = '';\n }\n this._classList = newClassList;\n }\n _previousPanelClass;\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 /** Event emitted when the menu is closed. */\n 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 close = this.closed;\n panelId = inject(_IdGenerator).getId('mat-menu-panel-');\n constructor() {\n const defaultOptions = inject(MAT_MENU_DEFAULT_OPTIONS);\n this.overlayPanelClass = defaultOptions.overlayPanelClass || '';\n this._xPosition = defaultOptions.xPosition;\n this._yPosition = defaultOptions.yPosition;\n this.backdropClass = defaultOptions.backdropClass;\n this.overlapTrigger = defaultOptions.overlapTrigger;\n this.hasBackdrop = defaultOptions.hasBackdrop;\n this._animationsDisabled = inject(ANIMATION_MODULE_TYPE, {\n optional: true\n }) === 'NoopAnimations';\n }\n ngOnInit() {\n this.setPositionClasses();\n }\n ngAfterContentInit() {\n this._updateDirectDescendants();\n this._keyManager = new FocusKeyManager(this._directDescendantItems).withWrap().withTypeAhead().withHomeAndEnd();\n 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 this._directDescendantItems.changes.subscribe(itemsList => {\n // Move focus to another item, if the active item is removed from the list.\n // We need to debounce the callback, because multiple items might be removed\n // in quick succession.\n const manager = this._keyManager;\n if (this._panelAnimationState === 'enter' && manager.activeItem?._hasFocus()) {\n const items = itemsList.toArray();\n const index = Math.max(0, Math.min(items.length - 1, manager.activeItemIndex || 0));\n if (items[index] && !items[index].disabled) {\n manager.setActiveItem(index);\n } else {\n manager.setNextItemActive();\n }\n }\n });\n }\n ngOnDestroy() {\n this._keyManager?.destroy();\n this._directDescendantItems.destroy();\n this.closed.complete();\n this._firstItemFocusRef?.destroy();\n clearTimeout(this._exitFallbackTimeout);\n }\n /** Stream that emits whenever the hovered menu item changes. */\n _hovered() {\n // Coerce the `changes` property because Angular types it as `Observable`\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 return;\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 // Wait for `afterNextRender` to ensure iOS VoiceOver screen reader focuses the first item (#24735).\n this._firstItemFocusRef?.destroy();\n this._firstItemFocusRef = afterNextRender(() => {\n const menuPanel = this._resolvePanel();\n // If an item in the menuPanel is already focused, avoid overriding the focus.\n if (!menuPanel || !menuPanel.contains(document.activeElement)) {\n const manager = this._keyManager;\n manager.setFocusOrigin(origin).setFirstItemActive();\n // If there's no active item at this point, it means that all the items are disabled.\n // Move focus to the menuPanel panel so keyboard events like Escape still work. Also this will\n // give _some_ feedback to screen readers.\n if (!manager.activeItem && menuPanel) {\n menuPanel.focus();\n }\n }\n }, {\n injector: this._injector\n });\n }\n /**\n * 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 * @deprecated No longer used and will be removed.\n * @breaking-change 21.0.0\n */\n setElevation(_depth) {}\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 this._classList = {\n ...this._classList,\n ['mat-menu-before']: posX === 'before',\n ['mat-menu-after']: posX === 'after',\n ['mat-menu-above']: posY === 'above',\n ['mat-menu-below']: posY === 'below'\n };\n this._changeDetectorRef.markForCheck();\n }\n /** Callback that is invoked when the panel animation completes. */\n _onAnimationDone(state) {\n const isExit = state === EXIT_ANIMATION;\n if (isExit || state === ENTER_ANIMATION) {\n if (isExit) {\n clearTimeout(this._exitFallbackTimeout);\n this._exitFallbackTimeout = undefined;\n }\n this._animationDone.next(isExit ? 'void' : 'enter');\n this._isAnimating = false;\n }\n }\n _onAnimationStart(state) {\n if (state === ENTER_ANIMATION || state === EXIT_ANIMATION) {\n this._isAnimating = true;\n }\n }\n _setIsOpen(isOpen) {\n this._panelAnimationState = isOpen ? 'enter' : 'void';\n if (isOpen) {\n if (this._keyManager.activeItemIndex === 0) {\n // Scroll the content element to the top as soon as the animation starts. This is necessary,\n // because we move focus to the first item while it's still being animated, which can throw\n // the browser off when it determines the scroll position. Alternatively we can move focus\n // when the animation is done, however moving focus asynchronously will interrupt screen\n // readers which are in the process of reading out the menu already. We take the `element`\n // from the `event` since we can't use a `ViewChild` to access the pane.\n const menuPanel = this._resolvePanel();\n if (menuPanel) {\n menuPanel.scrollTop = 0;\n }\n }\n } else if (!this._animationsDisabled) {\n // Some apps do `* { animation: none !important; }` in tests which will prevent the\n // `animationend` event from firing. Since the exit animation is loading-bearing for\n // removing the content from the DOM, add a fallback timer.\n this._exitFallbackTimeout = setTimeout(() => this._onAnimationDone(EXIT_ANIMATION), 200);\n }\n // Animation events won't fire when animations are disabled so we simulate them.\n if (this._animationsDisabled) {\n setTimeout(() => {\n this._onAnimationDone(isOpen ? ENTER_ANIMATION : EXIT_ANIMATION);\n });\n }\n this._changeDetectorRef.markForCheck();\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 /** Gets the menu panel DOM node. */\n _resolvePanel() {\n let menuPanel = null;\n if (this._directDescendantItems.length) {\n // Because the `mat-menuPanel` is at the DOM insertion point, not inside the overlay, we don't\n // have a nice way of getting a hold of the menuPanel panel. We can't use a `ViewChild` either\n // because the panel is inside an `ng-template`. We work around it by starting from one of\n // the items and walking up the DOM.\n menuPanel = this._directDescendantItems.first._getHostElement().closest('[role=\"menu\"]');\n }\n return menuPanel;\n }\n static ɵfac = function MatMenu_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatMenu)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatMenu,\n selectors: [[\"mat-menu\"]],\n contentQueries: function MatMenu_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MAT_MENU_CONTENT, 5);\n i0.ɵɵcontentQuery(dirIndex, MatMenuItem, 5);\n i0.ɵɵcontentQuery(dirIndex, MatMenuItem, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.lazyContent = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._allItems = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.items = _t);\n }\n },\n viewQuery: function MatMenu_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(TemplateRef, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templateRef = _t.first);\n }\n },\n hostVars: 3,\n hostBindings: function MatMenu_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-label\", null)(\"aria-labelledby\", null)(\"aria-describedby\", null);\n }\n },\n inputs: {\n backdropClass: \"backdropClass\",\n ariaLabel: [0, \"aria-label\", \"ariaLabel\"],\n ariaLabelledby: [0, \"aria-labelledby\", \"ariaLabelledby\"],\n ariaDescribedby: [0, \"aria-describedby\", \"ariaDescribedby\"],\n xPosition: \"xPosition\",\n yPosition: \"yPosition\",\n overlapTrigger: [2, \"overlapTrigger\", \"overlapTrigger\", booleanAttribute],\n hasBackdrop: [2, \"hasBackdrop\", \"hasBackdrop\", value => value == null ? null : booleanAttribute(value)],\n panelClass: [0, \"class\", \"panelClass\"],\n classList: \"classList\"\n },\n outputs: {\n closed: \"closed\",\n close: \"close\"\n },\n exportAs: [\"matMenu\"],\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_MENU_PANEL,\n useExisting: MatMenu\n }]), i0.ɵɵInputTransformsFeature],\n ngContentSelectors: _c3,\n decls: 1,\n vars: 0,\n consts: [[\"tabindex\", \"-1\", \"role\", \"menu\", 1, \"mat-mdc-menu-panel\", 3, \"click\", \"animationstart\", \"animationend\", \"animationcancel\", \"id\"], [1, \"mat-mdc-menu-content\"]],\n template: function MatMenu_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, MatMenu_ng_template_0_Template, 3, 12, \"ng-template\");\n }\n },\n styles: [\"mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;outline:0}.mat-mdc-menu-content,.mat-mdc-menu-content .mat-mdc-menu-item .mat-mdc-menu-item-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;flex:1;white-space:normal;font-family:var(--mat-menu-item-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-menu-item-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-menu-item-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-menu-item-label-text-tracking, var(--mat-sys-label-large-tracking));font-weight:var(--mat-menu-item-label-text-weight, var(--mat-sys-label-large-weight))}@keyframes _mat-menu-enter{from{opacity:0;transform:scale(0.8)}to{opacity:1;transform:none}}@keyframes _mat-menu-exit{from{opacity:1}to{opacity:0}}.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;box-sizing:border-box;outline:0;animation:_mat-menu-enter 120ms cubic-bezier(0, 0, 0.2, 1);border-radius:var(--mat-menu-container-shape, var(--mat-sys-corner-extra-small));background-color:var(--mat-menu-container-color, var(--mat-sys-surface-container));box-shadow:var(--mat-menu-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));will-change:transform,opacity}.mat-mdc-menu-panel.mat-menu-panel-exit-animation{animation:_mat-menu-exit 100ms 25ms linear forwards}.mat-mdc-menu-panel.mat-menu-panel-animations-disabled{animation:none}.mat-mdc-menu-panel.mat-menu-panel-animating{pointer-events:none}.mat-mdc-menu-panel.mat-menu-panel-animating:has(.mat-mdc-menu-content:empty){display:none}@media(forced-colors: active){.mat-mdc-menu-panel{outline:solid 1px}}.mat-mdc-menu-panel .mat-divider{color:var(--mat-menu-divider-color, var(--mat-sys-surface-variant));margin-bottom:var(--mat-menu-divider-bottom-spacing, 8px);margin-top:var(--mat-menu-divider-top-spacing, 8px)}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;min-height:48px;padding-left:var(--mat-menu-item-leading-spacing, 12px);padding-right:var(--mat-menu-item-trailing-spacing, 12px);-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-menu-item::-moz-focus-inner{border:0}[dir=rtl] .mat-mdc-menu-item{padding-left:var(--mat-menu-item-trailing-spacing, 12px);padding-right:var(--mat-menu-item-leading-spacing, 12px)}.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-leading-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-trailing-spacing, 12px)}[dir=rtl] .mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-trailing-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-leading-spacing, 12px)}.mat-mdc-menu-item,.mat-mdc-menu-item:visited,.mat-mdc-menu-item:link{color:var(--mat-menu-item-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-item .mat-mdc-menu-submenu-icon{color:var(--mat-menu-item-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:\\\"\\\";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item:focus{outline:0}.mat-mdc-menu-item .mat-icon{flex-shrink:0;margin-right:var(--mat-menu-item-spacing, 12px);height:var(--mat-menu-item-icon-size, 24px);width:var(--mat-menu-item-icon-size, 24px)}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:var(--mat-menu-item-spacing, 12px)}.mat-mdc-menu-item:not([disabled]):hover{background-color:var(--mat-menu-item-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}.mat-mdc-menu-item:not([disabled]).cdk-program-focused,.mat-mdc-menu-item:not([disabled]).cdk-keyboard-focused,.mat-mdc-menu-item:not([disabled]).mat-mdc-menu-item-highlighted{background-color:var(--mat-menu-item-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent))}@media(forced-colors: active){.mat-mdc-menu-item{margin-top:1px}}.mat-mdc-menu-submenu-icon{width:var(--mat-menu-item-icon-size, 24px);height:10px;fill:currentColor;padding-left:var(--mat-menu-item-spacing, 12px)}[dir=rtl] .mat-mdc-menu-submenu-icon{padding-right:var(--mat-menu-item-spacing, 12px);padding-left:0}[dir=rtl] .mat-mdc-menu-submenu-icon polygon{transform:scaleX(-1);transform-origin:center}@media(forced-colors: active){.mat-mdc-menu-submenu-icon{fill:CanvasText}}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n return MatMenu;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** Injection token that determines the scroll handling while the menu is open. */\nconst MAT_MENU_SCROLL_STRATEGY = /*#__PURE__*/new InjectionToken('mat-menu-scroll-strategy', {\n providedIn: 'root',\n factory: () => {\n const overlay = inject(Overlay);\n return () => overlay.scrollStrategies.reposition();\n }\n});\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/** Options for binding a passive event listener. */\nconst passiveEventListenerOptions = /*#__PURE__*/normalizePassiveListenerOptions({\n passive: true\n});\n/**\n * Default top padding of the menu panel.\n * @deprecated No longer being used. Will be removed.\n * @breaking-change 15.0.0\n */\nconst MENU_PANEL_TOP_PADDING = 8;\n/** Mapping between menu panels and the last trigger that opened them. */\nconst PANELS_TO_TRIGGERS = /*#__PURE__*/new WeakMap();\n/** Directive applied to an element that should trigger a `mat-menu`. */\nlet MatMenuTrigger = /*#__PURE__*/(() => {\n class MatMenuTrigger {\n _overlay = inject(Overlay);\n _element = inject(ElementRef);\n _viewContainerRef = inject(ViewContainerRef);\n _menuItemInstance = inject(MatMenuItem, {\n optional: true,\n self: true\n });\n _dir = inject(Directionality, {\n optional: true\n });\n _focusMonitor = inject(FocusMonitor);\n _ngZone = inject(NgZone);\n _scrollStrategy = inject(MAT_MENU_SCROLL_STRATEGY);\n _changeDetectorRef = inject(ChangeDetectorRef);\n _portal;\n _overlayRef = null;\n _menuOpen = false;\n _closingActionsSubscription = Subscription.EMPTY;\n _hoverSubscription = Subscription.EMPTY;\n _menuCloseSubscription = Subscription.EMPTY;\n _pendingRemoval;\n /**\n * We're specifically looking for a `MatMenu` here since the generic `MatMenuPanel`\n * interface lacks some functionality around nested menus and animations.\n */\n _parentMaterialMenu;\n /**\n * Cached value of the padding of the parent menu panel.\n * Used to offset sub-menus to compensate for the padding.\n */\n _parentInnerPadding;\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 _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 _openedBy = undefined;\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 this._menuItemInstance?._setTriggersSubmenu(this.triggersSubmenu());\n }\n _menu;\n /** Data to be passed along to any lazily-rendered content. */\n menuData;\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 restoreFocus = true;\n /** Event emitted when the associated menu is opened. */\n 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 onMenuOpen = this.menuOpened;\n /** Event emitted when the associated menu is closed. */\n 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 onMenuClose = this.menuClosed;\n constructor() {\n const parentMenu = inject(MAT_MENU_PANEL, {\n optional: true\n });\n this._parentMaterialMenu = parentMenu instanceof MatMenu ? parentMenu : undefined;\n this._element.nativeElement.addEventListener('touchstart', this._handleTouchStart, passiveEventListenerOptions);\n }\n ngAfterContentInit() {\n this._handleHover();\n }\n ngOnDestroy() {\n if (this.menu && this._ownsMenu(this.menu)) {\n PANELS_TO_TRIGGERS.delete(this.menu);\n }\n this._element.nativeElement.removeEventListener('touchstart', this._handleTouchStart, passiveEventListenerOptions);\n this._pendingRemoval?.unsubscribe();\n this._menuCloseSubscription.unsubscribe();\n this._closingActionsSubscription.unsubscribe();\n this._hoverSubscription.unsubscribe();\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\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 && this.menu);\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 const menu = this.menu;\n if (this._menuOpen || !menu) {\n return;\n }\n this._pendingRemoval?.unsubscribe();\n const previousTrigger = PANELS_TO_TRIGGERS.get(menu);\n PANELS_TO_TRIGGERS.set(menu, this);\n // If the same menu is currently attached to another trigger,\n // we need to close it so it doesn't end up in a broken state.\n if (previousTrigger && previousTrigger !== this) {\n previousTrigger.closeMenu();\n }\n const overlayRef = this._createOverlay(menu);\n const overlayConfig = overlayRef.getConfig();\n const positionStrategy = overlayConfig.positionStrategy;\n this._setPosition(menu, positionStrategy);\n overlayConfig.hasBackdrop = menu.hasBackdrop == null ? !this.triggersSubmenu() : menu.hasBackdrop;\n // We need the `hasAttached` check for the case where the user kicked off a removal animation,\n // but re-entered the menu. Re-attaching the same portal will trigger an error otherwise.\n if (!overlayRef.hasAttached()) {\n overlayRef.attach(this._getPortal(menu));\n menu.lazyContent?.attach(this.menuData);\n }\n this._closingActionsSubscription = this._menuClosingActions().subscribe(() => this.closeMenu());\n menu.parentMenu = this.triggersSubmenu() ? this._parentMaterialMenu : undefined;\n menu.direction = this.dir;\n menu.focusFirstItem(this._openedBy || 'program');\n this._setIsMenuOpen(true);\n if (menu instanceof MatMenu) {\n menu._setIsOpen(true);\n menu._directDescendantItems.changes.pipe(takeUntil(menu.close)).subscribe(() => {\n // Re-adjust the position without locking when the amount of items\n // changes so that the overlay is allowed to pick a new optimal position.\n positionStrategy.withLockedPosition(false).reapplyLastPosition();\n positionStrategy.withLockedPosition(true);\n });\n }\n }\n /** 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 /**\n * Updates the position of the menu to ensure that it fits all options within the viewport.\n */\n updatePosition() {\n this._overlayRef?.updatePosition();\n }\n /** Closes the menu and does the necessary cleanup. */\n _destroyMenu(reason) {\n const overlayRef = this._overlayRef;\n const menu = this._menu;\n if (!overlayRef || !this.menuOpen) {\n return;\n }\n this._closingActionsSubscription.unsubscribe();\n this._pendingRemoval?.unsubscribe();\n // Note that we don't wait for the animation to finish if another trigger took\n // over the menu, because the panel will end up empty which looks glitchy.\n if (menu instanceof MatMenu && this._ownsMenu(menu)) {\n this._pendingRemoval = menu._animationDone.pipe(take(1)).subscribe(() => {\n overlayRef.detach();\n menu.lazyContent?.detach();\n });\n menu._setIsOpen(false);\n } else {\n overlayRef.detach();\n menu?.lazyContent?.detach();\n }\n if (menu && this._ownsMenu(menu)) {\n PANELS_TO_TRIGGERS.delete(menu);\n }\n // Always restore focus if the user is navigating using the keyboard or the menu was opened\n // programmatically. We don't restore for non-root triggers, because it can prevent focus\n // from making it back to the root trigger when closing a long chain of menus by clicking\n // on the backdrop.\n if (this.restoreFocus && (reason === 'keydown' || !this._openedBy || !this.triggersSubmenu())) {\n this.focus(this._openedBy);\n }\n this._openedBy = undefined;\n this._setIsMenuOpen(false);\n }\n // set state rather than toggle to support triggers sharing a menu\n _setIsMenuOpen(isOpen) {\n if (isOpen !== this._menuOpen) {\n this._menuOpen = isOpen;\n this._menuOpen ? this.menuOpened.emit() : this.menuClosed.emit();\n if (this.triggersSubmenu()) {\n this._menuItemInstance._setHighlighted(isOpen);\n }\n this._changeDetectorRef.markForCheck();\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(menu) {\n if (!this._overlayRef) {\n const config = this._getOverlayConfig(menu);\n this._subscribeToPositions(menu, config.positionStrategy);\n this._overlayRef = this._overlay.create(config);\n this._overlayRef.keydownEvents().subscribe(event => {\n if (this.menu instanceof MatMenu) {\n this.menu._handleKeydown(event);\n }\n });\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(menu) {\n return new OverlayConfig({\n positionStrategy: this._overlay.position().flexibleConnectedTo(this._element).withLockedPosition().withGrowAfterOpen().withTransformOriginOn('.mat-menu-panel, .mat-mdc-menu-panel'),\n backdropClass: menu.backdropClass || 'cdk-overlay-transparent-backdrop',\n panelClass: menu.overlayPanelClass,\n scrollStrategy: this._scrollStrategy(),\n direction: this._dir || 'ltr'\n });\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(menu, position) {\n if (menu.setPositionClasses) {\n position.positionChanges.subscribe(change => {\n this._ngZone.run(() => {\n const posX = change.connectionPair.overlayX === 'start' ? 'after' : 'before';\n const posY = change.connectionPair.overlayY === 'top' ? 'below' : 'above';\n menu.setPositionClasses(posX, posY);\n });\n });\n }\n }\n /**\n * Sets the appropriate positions on a position strategy\n * so the overlay connects with the trigger correctly.\n * @param positionStrategy Strategy whose position to update.\n */\n _setPosition(menu, positionStrategy) {\n let [originX, originFallbackX] = menu.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'];\n let [overlayY, overlayFallbackY] = 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 = menu.xPosition === 'before' ? 'start' : 'end';\n originFallbackX = overlayX = originX === 'end' ? 'start' : 'end';\n if (this._parentMaterialMenu) {\n if (this._parentInnerPadding == null) {\n const firstItem = this._parentMaterialMenu.items.first;\n this._parentInnerPadding = firstItem ? firstItem._getHostElement().offsetTop : 0;\n }\n offsetY = overlayY === 'bottom' ? this._parentInnerPadding : -this._parentInnerPadding;\n }\n } else if (!menu.overlapTrigger) {\n originY = overlayY === 'top' ? 'bottom' : 'top';\n originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';\n }\n 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 => this._menuOpen && active !== this._menuItemInstance)) : 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 this._hoverSubscription = this._parentMaterialMenu._hovered().subscribe(active => {\n if (active === this._menuItemInstance && !active.disabled) {\n this._openedBy = 'mouse';\n this.openMenu();\n }\n });\n }\n }\n /** Gets the portal that should be attached to the overlay. */\n _getPortal(menu) {\n // Note that we can avoid this check by keeping the portal on the menu panel.\n // While it would be cleaner, we'd have to introduce another required method on\n // `MatMenuPanel`, making it harder to consume.\n if (!this._portal || this._portal.templateRef !== menu.templateRef) {\n this._portal = new TemplatePortal(menu.templateRef, this._viewContainerRef);\n }\n return this._portal;\n }\n /**\n * Determines whether the trigger owns a specific menu panel, at the current point in time.\n * This allows us to distinguish the case where the same panel is passed into multiple triggers\n * and multiple are open at a time.\n */\n _ownsMenu(menu) {\n return PANELS_TO_TRIGGERS.get(menu) === this;\n }\n static ɵfac = function MatMenuTrigger_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatMenuTrigger)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatMenuTrigger,\n selectors: [[\"\", \"mat-menu-trigger-for\", \"\"], [\"\", \"matMenuTriggerFor\", \"\"]],\n hostAttrs: [1, \"mat-mdc-menu-trigger\"],\n hostVars: 3,\n hostBindings: function MatMenuTrigger_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function MatMenuTrigger_click_HostBindingHandler($event) {\n return ctx._handleClick($event);\n })(\"mousedown\", function MatMenuTrigger_mousedown_HostBindingHandler($event) {\n return ctx._handleMousedown($event);\n })(\"keydown\", function MatMenuTrigger_keydown_HostBindingHandler($event) {\n return ctx._handleKeydown($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-haspopup\", ctx.menu ? \"menu\" : null)(\"aria-expanded\", ctx.menuOpen)(\"aria-controls\", ctx.menuOpen ? ctx.menu.panelId : null);\n }\n },\n inputs: {\n _deprecatedMatMenuTriggerFor: [0, \"mat-menu-trigger-for\", \"_deprecatedMatMenuTriggerFor\"],\n menu: [0, \"matMenuTriggerFor\", \"menu\"],\n menuData: [0, \"matMenuTriggerData\", \"menuData\"],\n restoreFocus: [0, \"matMenuTriggerRestoreFocus\", \"restoreFocus\"]\n },\n outputs: {\n menuOpened: \"menuOpened\",\n onMenuOpen: \"onMenuOpen\",\n menuClosed: \"menuClosed\",\n onMenuClose: \"onMenuClose\"\n },\n exportAs: [\"matMenuTrigger\"]\n });\n }\n return MatMenuTrigger;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatMenuModule = /*#__PURE__*/(() => {\n class MatMenuModule {\n static ɵfac = function MatMenuModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatMenuModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatMenuModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER],\n imports: [MatRippleModule, MatCommonModule, OverlayModule, CdkScrollableModule, MatCommonModule]\n });\n }\n return MatMenuModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\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 * @deprecated No longer used, will be removed.\n * @breaking-change 21.0.0\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: /*#__PURE__*/trigger('transformMenu', [/*#__PURE__*/state('void', /*#__PURE__*/style({\n opacity: 0,\n transform: 'scale(0.8)'\n })), /*#__PURE__*/transition('void => enter', /*#__PURE__*/animate('120ms cubic-bezier(0, 0, 0.2, 1)', /*#__PURE__*/style({\n opacity: 1,\n transform: 'scale(1)'\n }))), /*#__PURE__*/transition('* => void', /*#__PURE__*/animate('100ms 25ms linear', /*#__PURE__*/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: /*#__PURE__*/trigger('fadeInItems', [\n /*#__PURE__*/\n // TODO(crisbeto): this is inside the `transformMenu`\n // now. Remove next time we do breaking changes.\n state('showing', /*#__PURE__*/style({\n opacity: 1\n })), /*#__PURE__*/transition('void => *', [/*#__PURE__*/style({\n opacity: 0\n }), /*#__PURE__*/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 * Generated bundle index. Do not edit.\n */\n\nexport { MAT_MENU_CONTENT, MAT_MENU_DEFAULT_OPTIONS, MAT_MENU_PANEL, MAT_MENU_SCROLL_STRATEGY, MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER, MENU_PANEL_TOP_PADDING, MatMenu, MatMenuContent, MatMenuItem, MatMenuModule, MatMenuTrigger, fadeInItems, matMenuAnimations, transformMenu };\n"],"mappings":"swCAEA,IAAaA,EA2DAC,GA3DbC,GAAAC,EAAA,KAAaH,EAAsD,CACjEI,IAAK,CACHC,QAAS,SACTC,QAAS,MACTC,SAAU,SACVC,SAAU,SACVC,WAAY,CAAC,KAAK,GAEpBC,OAAQ,CACNL,QAAS,SACTC,QAAS,SACTC,SAAU,SACVC,SAAU,MACVC,WAAY,CAAC,QAAQ,GAEvBE,KAAM,CACJN,QAAS,QACTC,QAAS,SACTC,SAAU,MACVC,SAAU,SACVC,WAAY,CAAC,MAAM,GAErBG,MAAO,CACLP,QAAS,MACTC,QAAS,SACTC,SAAU,QACVC,SAAU,SACVC,WAAY,CAAC,OAAO,GAEtBI,SAAU,CACRR,QAAS,MACTC,QAAS,MACTC,SAAU,MACVC,SAAU,SACVC,WAAY,CAAC,MAAO,aAAa,GAEnCK,QAAS,CACPT,QAAS,QACTC,QAAS,MACTC,SAAU,QACVC,SAAU,SACVC,WAAY,CAAC,MAAO,cAAc,GAEpCM,YAAa,CACXV,QAAS,MACTC,QAAS,SACTC,SAAU,MACVC,SAAU,MACVC,WAAY,CAAC,SAAU,aAAa,GAEtCO,WAAY,CACVX,QAAS,QACTC,QAAS,SACTC,SAAU,QACVC,SAAU,MACVC,WAAY,CAAC,SAAU,cAAc,IAI5BR,GAAyC,CACpDgB,EAAA,GACKjB,EAAiBI,KAEtBa,EAAA,GACKjB,EAAiBU,QAEtBO,EAAA,GACKjB,EAAiBW,MAEtBM,EAAA,GACKjB,EAAiBY,OAEtBK,EAAA,GACKjB,EAAiBa,UAEtBI,EAAA,GACKjB,EAAiBc,SAEtBG,EAAA,GACKjB,EAAiBe,aAEtBE,EAAA,GACKjB,EAAiBgB,WACrB,0BEtDGE,EAAA,EAAA,MAAA,CAAA,sCAIAC,EAAA,EAAA,MAAA,CAAA,EAAgC,EAAA,SAAA,CAAA,EACNC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAG,MAAA,CAAO,CAAA,CAAA,EAAEP,EAAA,EAAA,UAAA,EAAUQ,EAAA,EAAA,OAAA,EAAKC,EAAA,EAAW,EAAS,6BAxBnFT,EAAA,EAAA,MAAA,CAAA,4BAUEA,EAAA,EAAA,MAAA,CAAA,EACEU,EAAA,CAAA,EACAV,EAAA,EAAA,MAAA,CAAA,EACEU,EAAA,EAAA,CAAA,EACFD,EAAA,EACAC,EAAA,EAAA,CAAA,EACFD,EAAA,EAEAE,EAAA,EAAAC,GAAA,EAAA,EAAA,MAAA,CAAA,eAIAD,EAAA,GAAAE,GAAA,EAAA,EAAA,MAAA,CAAA,gBAKFJ,EAAA,kBApBEK,GAAA,YAAAV,EAAAW,iBAAA,EAAqC,aAAAX,EAAAY,kBAAA,EALrCC,EAAA,gBAAAb,EAAAc,UAAA,OAAA,EAA2C,gBAAAd,EAAAc,UAAA,OAAA,EACA,gBAAAd,EAAAe,YAAA,EACP,YAAAf,EAAAgB,UAAAC,EAAA,EAAA,GAAAjB,EAAAkB,aAAA,IAAA,EAAA,EAC6B,2BAAAlB,EAAAmB,kBAAAF,EAAA,EAAA,GAAAjB,EAAAkB,aAAA,CAAA,EAajEE,EAAA,CAAA,EAAAC,EAAArB,EAAAgB,UAAAC,EAAA,EAAA,GAAAjB,EAAAkB,aAAA,IAAA,GAAA,EAAA,EAAA,EAIAE,EAAA,CAAA,EAAAC,EAAArB,EAAAmB,kBAAAnB,EAAAsB,iBAAAL,EAAA,GAAA,GAAAjB,EAAAkB,aAAA,EAAA,GAAA,EAAA,GDlCJ,UA8BaK,GA9BbC,GAAAC,EAAA,KAAAC,KAEAC,IAcAC,KAGAC,qPAWaN,IAAgB,IAAA,CAAvB,MAAOA,CAAgB,CA4D3BO,iBAAe,CACT,KAAKC,kBAAoB,KAAKC,QAAQ,KAAK7B,MAAK,CACtD,CAEA,IAAIQ,mBAAiB,CACnB,OAAOsB,GAAoB,KAAKC,QAAQ,CAC1C,CACA,IAAItB,oBAAkB,CACpB,OAAOqB,GAAoB,KAAKE,SAAS,CAC3C,CACA,IAAIC,iBAAe,CACjB,MAAO,CAAC,eAAgB,KAAKpB,SAAW,YAAc,EAAE,CAC1D,CACA,IAAIqB,gBAAc,CAChB,OAAO,KAAKC,aAAe,GAAK,eAClC,CAKAC,YAA6BC,EAAsC,CAAtC,KAAAA,mBAAAA,EAzEW,KAAAR,OAAS,GAGxC,KAAAE,SAA4B,QAC5B,KAAAC,UAA6B,OAGE,KAAAM,YAAc,GAGd,KAAAH,aAAe,GAIf,KAAAI,qBAAuB,GAGvB,KAAAX,iBAAmB,GAGnB,KAAAf,SAAW,GAGX,KAAA2B,aAAe,GAG9C,KAAA7B,QAAuB,QAGQ,KAAAC,aAAe,GAGf,KAAAI,iBAAmB,GAGlD,KAAAyB,WAAa,QAGkB,KAAAtB,gBAAkB,GAMjD,KAAAuB,UAAiCC,GAEvB,KAAAC,aAAsC,IAAIC,EAAoC,EAAI,EAG3F,KAAAC,cAAmC,IAAID,EAsBjD,KAAAE,iBAAmB,EAEmD,CAEtEC,UAAQ,CACN,KAAKD,iBAAmB,eAAe,KAAKN,UAAU,IACtD,KAAK1B,cAAgB,KAAKsB,mBAAmBY,QAAQ,CAAC,KAAKF,gBAAgB,CAAC,EAAEG,KAC5EC,GAAKC,GACIA,EAAKC,YAAY,KAAKN,gBAAgB,CAC9C,CAAC,CAEN,CAEAO,oBAAkB,CAChB,KAAKC,eAAc,CACrB,CAEAC,YAAYC,EAAsB,CAChC,GAAM,CAAEf,UAAAA,CAAS,EAAKe,EAClBf,GAAaA,EAAUgB,gBAAkB,KAAKhB,WAChD,KAAKa,eAAc,CAEvB,CAEAA,gBAAc,CACZ,KAAKI,WAAa,KAAKjB,UAAUS,IAAKS,GACrBC,EAAA,GAAKD,EAErB,CACH,CAGAE,UAAUC,EAAwB,CAChC,KAAKA,OAASA,CAChB,CAEAC,iBAAe,CACb,KAAKlB,cAAcmB,KAAI,EACnB,KAAK1B,sBAAsB,KAAKvC,MAAK,CAC3C,CAEAkE,MAAI,CACF,KAAKrC,OAAS,GACd,KAAKe,aAAaqB,KAAK,KAAKpC,MAAM,CACpC,CAEA7B,OAAK,CACH,KAAK6B,OAAS,GACd,KAAKe,aAAaqB,KAAK,KAAKpC,MAAM,CACpC,CAEAsC,QAAM,CACJ,KAAKtC,OAAS,CAAC,KAAKA,OACpB,KAAKe,aAAaqB,KAAK,KAAKpC,MAAM,CACpC,iDApIWT,GAAgBgD,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAhBjD,EAAgBkD,UAAA,CAAA,CAAA,cAAA,CAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAAhB9E,EAAA,iBAAA,UAAA,CAAA,OAAA+E,EAAA9C,gBAAA,CAAiB,EAAA,GAAA+C,EAAA,uDAORC,CAAgB,EAAA5C,SAAA,WAAAC,UAAA,YAAAM,YAAA,CAAA,EAAA,cAAA,cAOhBqC,CAAgB,EAAAxC,aAAA,CAAA,EAAA,eAAA,eAGhBwC,CAAgB,EAAApC,qBAAA,CAAA,EAAA,uBAAA,uBAIhBoC,CAAgB,EAAA/C,iBAAA,CAAA,EAAA,mBAAA,mBAGhB+C,CAAgB,EAAA9D,SAAA,CAAA,EAAA,WAAA,WAGhB8D,CAAgB,EAAAnC,aAAA,CAAA,EAAA,eAAA,eAGhBmC,CAAgB,EAAAhE,QAAA,UAAAC,aAAA,CAAA,EAAA,eAAA,eAMhB+D,CAAgB,EAAA3D,iBAAA,CAAA,EAAA,mBAAA,mBAGhB2D,CAAgB,EAAAlC,WAAA,aAAAtB,gBAAA,CAAA,EAAA,kBAAA,kBAMhBwD,CAAgB,EAAAjC,UAAA,WAAA,EAAAkC,QAAA,CAAAhC,aAAA,eAAAE,cAAA,eAAA,EAAA+B,WAAA,GAAAC,SAAA,CAAAC,EAAAC,EAAA,EAAAC,mBAAAC,GAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,sBAAA,GAAA,EAAA,gBAAA,4BAAA,0BAAA,+BAAA,iCAAA,mCAAA,gCAAA,kCAAA,yBAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAd,EAAAC,EAAA,CAAAD,EAAA,UC3EtCpE,EAAA,EAAAmF,GAAA,GAAA,GAAA,cAAA,CAAA,EAUE7F,EAAA,gBAAA,UAAA,CAAA,OAAiB+E,EAAAT,gBAAA,CAAiB,CAAA,QARlCwB,EAAA,4BAAAf,EAAAV,MAAA,EAAoC,0BAAAU,EAAA5C,MAAA,EACF,+BAAA4C,EAAAd,UAAA,EACS,iCAAAc,EAAAnC,aAAAmC,EAAAlC,oBAAA,EAC2B,mCAAAkC,EAAAvC,cAAA,EACnB,gCAAAuC,EAAAxC,eAAA,EACF,kCAAA,EAAA,EACT,0BAAAwC,EAAAjC,YAAA;;6BDsB7BpB,CAAgB,GAAA,IE9B7B,IASaqE,GATbC,GAAAC,EAAA,KAAAC,QASaH,IAAsB,IAAA,CAA7B,MAAOA,CAAsB,CAMjCI,YAAoBC,EAAsB,CAAtB,KAAAA,WAAAA,EAClB,KAAKC,OAAS,IAAIC,GAAiB,KAAKF,UAAU,CACpD,CAEAG,UAAQ,CACN,KAAKC,SAASC,UAAU,KAAKJ,MAAM,CACrC,iDAZWN,GAAsBW,EAAAC,CAAA,CAAA,CAAA,CAAA,+BAAtBZ,EAAsBa,UAAA,CAAA,CAAA,GAAA,cAAA,EAAA,CAAA,EAAAC,OAAA,CAAAL,QAAA,CAAA,EAAA,cAAA,SAAA,CAAA,EAAAM,SAAA,CAAA,aAAA,EAAAC,WAAA,EAAA,CAAA,CAAA,SAAtBhB,CAAsB,GAAA,ICTnC,IAMaiB,GANbC,GAAAC,EAAA,SAMaF,IAAuB,IAAA,CAA9B,MAAOA,CAAuB,CAJpCG,aAAA,CAKwB,KAAAC,MAAQ,uEADnBJ,EAAuB,CAAA,+BAAvBA,EAAuBK,UAAA,CAAA,CAAA,sBAAA,EAAA,CAAA,GAAA,qBAAA,EAAA,CAAA,EAAAC,SAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAAvBE,EAAAD,EAAAL,KAAA,2BAAAJ,CAAuB,GAAA,ICNpC,IAMaW,GANbC,GAAAC,EAAA,SAMaF,IAAqB,IAAA,CAA5B,MAAOA,CAAqB,CAJlCG,aAAA,CAKwB,KAAAC,MAAQ,qEADnBJ,EAAqB,CAAA,+BAArBA,EAAqBK,UAAA,CAAA,CAAA,oBAAA,EAAA,CAAA,GAAA,mBAAA,EAAA,CAAA,EAAAC,SAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAArBE,EAAAD,EAAAL,KAAA,2BAAAJ,CAAqB,GAAA,ICNlC,IAmBaW,GAaAC,GAhCbC,GAAAC,EAAA,KAAAC,IACAC,KAeAC,KACAC,SAEaP,GAAiB,CAACQ,GAAcC,EAAeC,GAAeC,EAAe,EAa7EV,IAAmB,IAAA,CAA1B,MAAOA,CAAmB,iDAAnBA,EAAmB,CAAA,+BAAnBA,CAAmB,CAAA,CAAA,mCAFpBD,EAAc,CAAA,CAAA,CAAA,SAEbC,CAAmB,GAAA,IChChC,IAAAW,GAAAC,EAAA,KAAAC,KACAC,OCDA,IAAAC,GAAAC,EAAA,KACAC,iCESMC,EAAA,EAAA,oBAAA,EACEC,EAAA,CAAA,mBACFC,EAAA,mBADEC,EAAA,EAAAC,GAAA,IAAAC,EAAA,EAAA,EAAAC,EAAAC,KAAA,EAAA,GAAA,6BAIFP,EAAA,EAAA,MAAA,EAAMC,EAAA,CAAA,mBAAsBC,EAAA,mBAAtBC,EAAA,EAAAK,GAAAH,EAAA,EAAA,EAAAC,EAAAG,IAAA,CAAA,6BAdVT,EAAA,EAAA,eAAA,CAAA,EAQEU,EAAA,EAAAC,GAAA,EAAA,EAAA,oBAAA,EAAa,EAAAC,GAAA,EAAA,EAAA,MAAA,EAQfV,EAAA,kBAfEW,EAAA,SAAAP,EAAAQ,MAAA,EAAiB,SAAAR,EAAAS,IAAA,EACF,YAAAT,EAAAU,SAAA,EACQ,WAAA,EAAA,EACN,UAAAV,EAAAC,MAAA,QAAA,OAAA,EACoB,eAAAD,EAAAW,YAAA,EAGrCd,EAAA,EAAAe,EAAAZ,EAAAC,MAAA,EAAA,EAAA,EAKAJ,EAAA,EAAAe,EAAAZ,EAAAG,KAAA,EAAA,EAAA,GDdJ,IASaU,GATbC,GAAAC,EAAA,KACAC,IACAC,wBAOaJ,IAAgB,IAAA,CAAvB,MAAOA,CAAgB,CAkB3BK,YAAmBC,EAAsB,CAAtB,KAAAA,WAAAA,EAjBG,KAAAC,MAAQ,eAE9B,KAAAV,UAAY,CAACW,EAAiBC,IAAKD,EAAiBE,MAAM,EAWlB,KAAAZ,aAAe,GAEvD,KAAAF,KAAO,EAEqC,CAE5Ce,UAAUhB,EAAwB,CAChC,KAAKA,OAASA,CAChB,CAEAiB,QAAQtB,EAAY,CAClB,KAAKA,KAAOA,CACd,CAEAuB,SAASzB,EAAa,CACpB,KAAKA,MAAQA,CACf,CAEA0B,gBAAgBC,EAAa,CAC3B,KAAKjB,aAAeiB,CACtB,CAEAC,aAAanB,EAA8B,CACzC,KAAKA,UAAYA,CACnB,CAEAoB,aAAW,CACT,KAAKrB,KAAO,EACd,CAEAsB,aAAW,CACT,KAAKtB,KAAO,EACd,iDA9CWI,GAAgBmB,EAAAC,CAAA,CAAA,CAAA,CAAA,+BAAhBpB,EAAgBqB,UAAA,CAAA,CAAA,cAAA,EAAA,CAAA,EAAA,CAAA,EAAAC,SAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAAhBE,EAAAD,EAAAlB,KAAA,mGAcSoB,CAAgB,CAAA,EAAAC,WAAA,GAAAC,SAAA,CAAAC,CAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,SAAA,SAAA,YAAA,WAAA,UAAA,cAAA,CAAA,EAAAC,SAAA,SAAAV,EAAAC,EAAA,CAAAD,EAAA,GCvBtCjC,EAAA,EAAA4C,GAAA,EAAA,EAAA,eAAA,CAAA,OAAApC,EAAA0B,EAAA9B,SAAA8B,EAAArC,OAAAqC,EAAAnC,MAAA,EAAA,EAAA,qDDSaU,CAAgB,GAAA,IET7B,IAKMoC,GAOOC,GAZbC,GAAAC,EAAA,KAAAC,IACAC,KACAC,IACAC,aAEMP,GAAmB,IAOZC,IAAsB,IAAA,CAA7B,MAAOA,CAAsB,CA0BLO,cAAY,CACtC,KAAKC,YAAW,EAGhBC,OAAOC,aAAa,KAAKC,YAAY,EAErC,KAAKC,kBAAiB,CACxB,CAE4BC,cAAY,CACtC,KAAKC,YAAW,EAGhBL,OAAOC,aAAa,KAAKC,YAAY,CACvC,CAEAI,YACUC,EACAC,EAAgB,CADhB,KAAAD,WAAAA,EACA,KAAAC,QAAAA,EAzCV,KAAAC,KAAO,GAKoB,KAAAC,YAAc,GAMD,KAAAC,oBAAsB,GAKrD,KAAAC,iBAAyC,CAAA,EAGV,KAAAC,aAAe,GAE/C,KAAAX,aAAe,EAsBrB,KAAKY,WAAa,KAAKN,QAAQO,OAAO,CACpCC,YAAa,GACd,EACD,KAAKC,QAAU,KAAKH,YAAYI,OAAO,IAAIC,GAAgBC,EAAgB,CAAC,EAAEC,SAC9E,KAAKC,OAAS,IAAIC,GAAiB,KAAKhB,UAAU,EAClD,KAAKiB,oBAAmB,CAC1B,CAEAC,aAAW,CACT,KAAKD,oBAAmB,CAC1B,CAEAE,aAAW,CACT,KAAKZ,YAAYa,QAAO,CAC1B,CAEAH,qBAAmB,CACb,KAAKP,UACP,KAAKA,QAAQW,UAAU,KAAKN,MAAM,EAClC,KAAKL,QAAQY,SAAS,KAAKC,cAAgB,EAAE,EAC7C,KAAKb,QAAQc,QAAQ,KAAKrB,WAAW,EACrC,KAAKO,QAAQe,gBAAgB,KAAKnB,YAAY,EAC1C,KAAKD,kBAAkBqB,QACzB,KAAKhB,QAAQiB,aAAa,KAAKtB,gBAAgB,EAGrD,CAEAb,aAAW,CACJ,KAAKY,qBACR,KAAKM,SAASlB,YAAW,CAE7B,CAEAM,aAAW,CACT,KAAKY,SAASZ,YAAW,CAC3B,CAKQF,mBAAiB,CAClB,KAAKc,SAASR,OAInB,KAAKP,aAAeF,OAAOmC,WAAW,IAAK,CACpCC,SAASC,KAAKC,SAAS,KAAK/B,WAAWgC,aAAa,GACvD,KAAKlC,YAAW,EAElB,KAAKF,kBAAiB,CACxB,EAAGb,EAAgB,EACrB,iDAlGWC,GAAsBiD,EAAAC,CAAA,EAAAD,EAAAE,CAAA,CAAA,CAAA,CAAA,+BAAtBnD,EAAsBoD,UAAA,CAAA,CAAA,GAAA,cAAA,EAAA,CAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAAtBE,EAAA,aAAA,UAAA,CAAA,OAAAD,EAAAhD,aAAA,CAAc,CAAA,EAAQ,aAAA,UAAA,CAAA,OAAtBgD,EAAA1C,aAAA,CAAc,CAAA,oIAcL4C,CAAgB,EAAApC,iBAAA,mBAAAC,aAAA,CAAA,EAAA,eAAA,eAQhBmC,CAAgB,CAAA,EAAAC,SAAA,CAAA,aAAA,EAAAC,WAAA,GAAAC,SAAA,CAAAC,EAAAC,EAAA,CAAA,CAAA,CAAA,SAtBzB9D,CAAsB,GAAA,ICZnC,IAQa+D,GASAC,GAjBbC,GAAAC,EAAA,KAAAC,IACAC,KAEAC,KACAC,SAIaP,GAAiB,CAACQ,GAAcC,EAAeC,GAAqBC,EAAe,EASnFV,IAAmB,IAAA,CAA1B,MAAOA,CAAmB,iDAAnBA,EAAmB,CAAA,+BAAnBA,CAAmB,CAAA,CAAA,mCAHrBD,EAAc,CAAA,CAAA,CAAA,SAGZC,CAAmB,GAAA,ICjBhC,IAAAW,GAAAC,EAAA,KAEAC,OCFA,IAAAC,GAAAC,EAAA,KACAC,OCsBA,SAASC,GAAmCC,EAAIC,EAAK,CAC/CD,EAAK,IACJE,GAAe,EACfC,EAAe,EAAG,MAAO,CAAC,EAC1BC,EAAU,EAAG,UAAW,CAAC,EACzBC,EAAa,EAEpB,CAEA,SAASC,GAA+BN,EAAIC,EAAK,CAC/C,GAAID,EAAK,EAAG,CACV,IAAMO,EAASC,GAAiB,EAC7BL,EAAe,EAAG,MAAO,CAAC,EAC1BM,EAAW,QAAS,UAA+D,CACjFC,EAAcH,CAAG,EACpB,IAAMI,EAAYC,EAAc,EAChC,OAAUC,EAAYF,EAAO,OAAO,KAAK,OAAO,CAAC,CACnD,CAAC,EAAE,iBAAkB,SAAsEG,EAAQ,CAC9FJ,EAAcH,CAAG,EACpB,IAAMI,EAAYC,EAAc,EAChC,OAAUC,EAAYF,EAAO,kBAAkBG,EAAO,aAAa,CAAC,CACtE,CAAC,EAAE,eAAgB,SAAoEA,EAAQ,CAC1FJ,EAAcH,CAAG,EACpB,IAAMI,EAAYC,EAAc,EAChC,OAAUC,EAAYF,EAAO,iBAAiBG,EAAO,aAAa,CAAC,CACrE,CAAC,EAAE,kBAAmB,SAAuEA,EAAQ,CAChGJ,EAAcH,CAAG,EACpB,IAAMI,EAAYC,EAAc,EAChC,OAAUC,EAAYF,EAAO,iBAAiBG,EAAO,aAAa,CAAC,CACrE,CAAC,EACEX,EAAe,EAAG,MAAO,CAAC,EAC1BY,EAAa,CAAC,EACdV,EAAa,EAAE,CACpB,CACA,GAAIL,EAAK,EAAG,CACV,IAAMW,EAAYC,EAAc,EAC7BI,EAAWL,EAAO,UAAU,EAC5BM,EAAY,qCAAsCN,EAAO,mBAAmB,EAAE,gCAAiCA,EAAO,uBAAyB,MAAM,EAAE,2BAA4BA,EAAO,YAAY,EACtMO,EAAW,KAAMP,EAAO,OAAO,EAC/BQ,EAAY,aAAcR,EAAO,WAAa,IAAI,EAAE,kBAAmBA,EAAO,gBAAkB,IAAI,EAAE,mBAAoBA,EAAO,iBAAmB,IAAI,CAC7J,CACF,CAkRA,SAASS,IAAmC,CAC1C,MAAO,CACL,eAAgB,GAChB,UAAW,QACX,UAAW,QACX,cAAe,kCACjB,CACF,CAibA,SAASC,GAAiCC,EAAS,CACjD,MAAO,IAAMA,EAAQ,iBAAiB,WAAW,CACnD,CA5wBA,IAoBMC,GACAC,GACAC,GASAC,GAkCAC,GAKFC,GA8LEC,GAEFC,GAuEEC,GAcAC,GAEAC,GACFC,GAoaEC,GAYAC,GAMAC,GAUAC,EAEFC,GAmdAC,GA2BEC,GAqCAC,GAMAC,GAzzCNC,GAAAC,EAAA,KAAAC,IACAA,IACAC,KACAC,KACAC,KACAC,KACAC,KACAL,KACAM,KACAC,KACAC,KACAC,IACAC,KACAC,KACAC,KAMMnC,GAAM,CAAC,gBAAiB,EAAE,EAC1BC,GAAM,CAAC,CAAC,CAAC,UAAU,EAAG,CAAC,GAAI,kBAAmB,EAAE,CAAC,EAAG,GAAG,EACvDC,GAAM,CAAC,8BAA+B,GAAG,EASzCC,GAAM,CAAC,GAAG,EAkCVC,GAA8B,IAAIgC,EAAe,gBAAgB,EAKnE/B,IAA4B,IAAM,CACpC,MAAMA,CAAY,CAChB,YAAcgC,EAAOC,CAAU,EAC/B,UAAYD,EAAOE,EAAQ,EAC3B,cAAgBF,EAAOG,EAAY,EACnC,YAAcH,EAAOjC,GAAgB,CACnC,SAAU,EACZ,CAAC,EACD,mBAAqBiC,EAAOI,CAAiB,EAE7C,KAAO,WAEP,SAAW,GAEX,cAAgB,GAEhB,SAAW,IAAIC,EAEf,SAAW,IAAIA,EAEf,aAAe,GAEf,iBAAmB,GACnB,aAAc,CACZL,EAAOM,EAAsB,EAAE,KAAKC,EAAuB,EAC3D,KAAK,aAAa,UAAU,IAAI,CAClC,CAEA,MAAMC,EAAQC,EAAS,CACjB,KAAK,eAAiBD,EACxB,KAAK,cAAc,SAAS,KAAK,gBAAgB,EAAGA,EAAQC,CAAO,EAEnE,KAAK,gBAAgB,EAAE,MAAMA,CAAO,EAEtC,KAAK,SAAS,KAAK,IAAI,CACzB,CACA,iBAAkB,CACZ,KAAK,eAIP,KAAK,cAAc,QAAQ,KAAK,YAAa,EAAK,CAEtD,CACA,aAAc,CACR,KAAK,eACP,KAAK,cAAc,eAAe,KAAK,WAAW,EAEhD,KAAK,aAAe,KAAK,YAAY,YACvC,KAAK,YAAY,WAAW,IAAI,EAElC,KAAK,SAAS,SAAS,EACvB,KAAK,SAAS,SAAS,CACzB,CAEA,cAAe,CACb,OAAO,KAAK,SAAW,KAAO,GAChC,CAEA,iBAAkB,CAChB,OAAO,KAAK,YAAY,aAC1B,CAEA,eAAeC,EAAO,CAChB,KAAK,WACPA,EAAM,eAAe,EACrBA,EAAM,gBAAgB,EAE1B,CAEA,mBAAoB,CAClB,KAAK,SAAS,KAAK,IAAI,CACzB,CAEA,UAAW,CACT,IAAMC,EAAQ,KAAK,YAAY,cAAc,UAAU,EAAI,EACrDC,EAAQD,EAAM,iBAAiB,2BAA2B,EAEhE,QAASE,EAAI,EAAGA,EAAID,EAAM,OAAQC,IAChCD,EAAMC,CAAC,EAAE,OAAO,EAElB,OAAOF,EAAM,aAAa,KAAK,GAAK,EACtC,CACA,gBAAgBG,EAAe,CAI7B,KAAK,aAAeA,EACpB,KAAK,mBAAmB,aAAa,CACvC,CACA,oBAAoBC,EAAiB,CACnC,KAAK,iBAAmBA,EACxB,KAAK,mBAAmB,aAAa,CACvC,CACA,WAAY,CACV,OAAO,KAAK,WAAa,KAAK,UAAU,gBAAkB,KAAK,gBAAgB,CACjF,CACA,OAAO,UAAO,SAA6BC,EAAmB,CAC5D,OAAO,IAAKA,GAAqBhD,EACnC,EACA,OAAO,UAAyBiD,EAAkB,CAChD,KAAMjD,EACN,UAAW,CAAC,CAAC,GAAI,gBAAiB,EAAE,CAAC,EACrC,UAAW,CAAC,EAAG,oBAAqB,qBAAqB,EACzD,SAAU,EACV,aAAc,SAAkC5B,EAAIC,EAAK,CACnDD,EAAK,GACJS,EAAW,QAAS,SAA8CK,EAAQ,CAC3E,OAAOb,EAAI,eAAea,CAAM,CAClC,CAAC,EAAE,aAAc,UAAqD,CACpE,OAAOb,EAAI,kBAAkB,CAC/B,CAAC,EAECD,EAAK,IACJmB,EAAY,OAAQlB,EAAI,IAAI,EAAE,WAAYA,EAAI,aAAa,CAAC,EAAE,gBAAiBA,EAAI,QAAQ,EAAE,WAAYA,EAAI,UAAY,IAAI,EAC7HgB,EAAY,gCAAiChB,EAAI,YAAY,EAAE,oCAAqCA,EAAI,gBAAgB,EAE/H,EACA,OAAQ,CACN,KAAM,OACN,SAAU,CAAC,EAAG,WAAY,WAAY6E,CAAgB,EACtD,cAAe,CAAC,EAAG,gBAAiB,gBAAiBA,CAAgB,CACvE,EACA,SAAU,CAAC,aAAa,EACxB,SAAU,CAAIC,CAAwB,EACtC,MAAOxD,GACP,mBAAoBE,GACpB,MAAO,EACP,KAAM,EACN,OAAQ,CAAC,CAAC,EAAG,wBAAwB,EAAG,CAAC,YAAa,GAAI,EAAG,sBAAuB,EAAG,oBAAqB,kBAAkB,EAAG,CAAC,UAAW,WAAY,YAAa,QAAS,cAAe,OAAQ,EAAG,2BAA2B,EAAG,CAAC,SAAU,cAAc,CAAC,EACjQ,SAAU,SAA8BzB,EAAIC,EAAK,CAC3CD,EAAK,IACJgF,EAAgBxD,EAAG,EACnBT,EAAa,CAAC,EACdZ,EAAe,EAAG,OAAQ,CAAC,EAC3BY,EAAa,EAAG,CAAC,EACjBV,EAAa,EACbD,EAAU,EAAG,MAAO,CAAC,EACrB6E,EAAW,EAAGlF,GAAoC,EAAG,EAAG,WAAY,CAAC,GAEtEC,EAAK,IACJkF,EAAU,CAAC,EACXhE,EAAW,oBAAqBjB,EAAI,eAAiBA,EAAI,QAAQ,EAAE,mBAAoBA,EAAI,gBAAgB,CAAC,EAC5GiF,EAAU,EACVC,EAAclF,EAAI,iBAAmB,EAAI,EAAE,EAElD,EACA,aAAc,CAACmF,EAAS,EACxB,cAAe,EACf,gBAAiB,CACnB,CAAC,CACH,CACA,OAAOxD,CACT,GAAG,EAqCGC,GAAgC,IAAI8B,EAAe,gBAAgB,EAErE7B,IAA+B,IAAM,CACvC,MAAMA,CAAe,CACnB,UAAY8B,EAAOyB,EAAW,EAC9B,QAAUzB,EAAO0B,EAAc,EAC/B,UAAY1B,EAAO2B,EAAQ,EAC3B,kBAAoB3B,EAAO4B,EAAgB,EAC3C,UAAY5B,EAAOE,EAAQ,EAC3B,mBAAqBF,EAAOI,CAAiB,EAC7C,QACA,QAEA,UAAY,IAAIC,EAChB,aAAc,CAAC,CAKf,OAAOwB,EAAU,CAAC,EAAG,CACd,KAAK,UACR,KAAK,QAAU,IAAIC,GAAe,KAAK,UAAW,KAAK,iBAAiB,GAE1E,KAAK,OAAO,EACP,KAAK,UACR,KAAK,QAAU,IAAIC,GAAgB,KAAK,UAAU,cAAc,KAAK,EAAG,KAAM,KAAK,QAAS,KAAK,SAAS,GAE5G,IAAMC,EAAU,KAAK,UAAU,WAAW,cAI1CA,EAAQ,WAAW,aAAa,KAAK,QAAQ,cAAeA,CAAO,EAMnE,KAAK,mBAAmB,aAAa,EACrC,KAAK,QAAQ,OAAO,KAAK,QAASH,CAAO,EACzC,KAAK,UAAU,KAAK,CACtB,CAKA,QAAS,CACH,KAAK,SAAS,YAChB,KAAK,QAAQ,OAAO,CAExB,CACA,aAAc,CACZ,KAAK,OAAO,EACZ,KAAK,SAAS,QAAQ,CACxB,CACA,OAAO,UAAO,SAAgCb,EAAmB,CAC/D,OAAO,IAAKA,GAAqB9C,EACnC,EACA,OAAO,UAAyB+D,EAAkB,CAChD,KAAM/D,EACN,UAAW,CAAC,CAAC,cAAe,iBAAkB,EAAE,CAAC,EACjD,SAAU,CAAIgE,GAAmB,CAAC,CAChC,QAASjE,GACT,YAAaC,CACf,CAAC,CAAC,CAAC,CACL,CAAC,CACH,CACA,OAAOA,CACT,GAAG,EAMGC,GAAwC,IAAI4B,EAAe,2BAA4B,CAC3F,WAAY,OACZ,QAASvC,EACX,CAAC,EAWKY,GAAkB,kBAElBC,GAAiB,iBACnBC,IAAwB,IAAM,CAChC,MAAMA,CAAQ,CACZ,YAAc0B,EAAOC,CAAU,EAC/B,mBAAqBD,EAAOI,CAAiB,EAC7C,UAAYJ,EAAO2B,EAAQ,EAC3B,YACA,WACA,WACA,mBACA,qBAEA,oBAEA,UAEA,uBAAyB,IAAIQ,GAE7B,WAAa,CAAC,EAEd,qBAAuB,OAEvB,eAAiB,IAAI9B,EAErB,aAAe,GAEf,WAEA,UAEA,kBAEA,cAEA,UAEA,eAEA,gBAEA,IAAI,WAAY,CACd,OAAO,KAAK,UACd,CACA,IAAI,UAAU+B,EAAO,CAInB,KAAK,WAAaA,EAClB,KAAK,mBAAmB,CAC1B,CAEA,IAAI,WAAY,CACd,OAAO,KAAK,UACd,CACA,IAAI,UAAUA,EAAO,CAInB,KAAK,WAAaA,EAClB,KAAK,mBAAmB,CAC1B,CAEA,YAMA,MAKA,YAEA,eAEA,YAOA,IAAI,WAAWC,EAAS,CACtB,IAAMC,EAAqB,KAAK,oBAC1BC,EAAeC,EAAA,GAChB,KAAK,YAENF,GAAsBA,EAAmB,QAC3CA,EAAmB,MAAM,GAAG,EAAE,QAAQG,GAAa,CACjDF,EAAaE,CAAS,EAAI,EAC5B,CAAC,EAEH,KAAK,oBAAsBJ,EACvBA,GAAWA,EAAQ,SACrBA,EAAQ,MAAM,GAAG,EAAE,QAAQI,GAAa,CACtCF,EAAaE,CAAS,EAAI,EAC5B,CAAC,EACD,KAAK,YAAY,cAAc,UAAY,IAE7C,KAAK,WAAaF,CACpB,CACA,oBAQA,IAAI,WAAY,CACd,OAAO,KAAK,UACd,CACA,IAAI,UAAUF,EAAS,CACrB,KAAK,WAAaA,CACpB,CAEA,OAAS,IAAIK,EAMb,MAAQ,KAAK,OACb,QAAU1C,EAAO2C,EAAY,EAAE,MAAM,iBAAiB,EACtD,aAAc,CACZ,IAAMC,EAAiB5C,EAAO7B,EAAwB,EACtD,KAAK,kBAAoByE,EAAe,mBAAqB,GAC7D,KAAK,WAAaA,EAAe,UACjC,KAAK,WAAaA,EAAe,UACjC,KAAK,cAAgBA,EAAe,cACpC,KAAK,eAAiBA,EAAe,eACrC,KAAK,YAAcA,EAAe,YAClC,KAAK,oBAAsB5C,EAAO6C,GAAuB,CACvD,SAAU,EACZ,CAAC,IAAM,gBACT,CACA,UAAW,CACT,KAAK,mBAAmB,CAC1B,CACA,oBAAqB,CACnB,KAAK,yBAAyB,EAC9B,KAAK,YAAc,IAAIC,GAAgB,KAAK,sBAAsB,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAC9G,KAAK,YAAY,OAAO,UAAU,IAAM,KAAK,OAAO,KAAK,KAAK,CAAC,EAI/D,KAAK,uBAAuB,QAAQ,KAAKC,GAAU,KAAK,sBAAsB,EAAGC,GAAUC,GAASC,GAAM,GAAGD,EAAM,IAAIE,GAAQA,EAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAUC,GAAe,KAAK,YAAY,iBAAiBA,CAAW,CAAC,EACxN,KAAK,uBAAuB,QAAQ,UAAUC,GAAa,CAIzD,IAAMC,EAAU,KAAK,YACrB,GAAI,KAAK,uBAAyB,SAAWA,EAAQ,YAAY,UAAU,EAAG,CAC5E,IAAML,EAAQI,EAAU,QAAQ,EAC1BE,EAAQ,KAAK,IAAI,EAAG,KAAK,IAAIN,EAAM,OAAS,EAAGK,EAAQ,iBAAmB,CAAC,CAAC,EAC9EL,EAAMM,CAAK,GAAK,CAACN,EAAMM,CAAK,EAAE,SAChCD,EAAQ,cAAcC,CAAK,EAE3BD,EAAQ,kBAAkB,CAE9B,CACF,CAAC,CACH,CACA,aAAc,CACZ,KAAK,aAAa,QAAQ,EAC1B,KAAK,uBAAuB,QAAQ,EACpC,KAAK,OAAO,SAAS,EACrB,KAAK,oBAAoB,QAAQ,EACjC,aAAa,KAAK,oBAAoB,CACxC,CAEA,UAAW,CAGT,OADoB,KAAK,uBAAuB,QAC7B,KAAKP,GAAU,KAAK,sBAAsB,EAAGC,GAAUC,GAASC,GAAM,GAAGD,EAAM,IAAIE,GAAQA,EAAK,QAAQ,CAAC,CAAC,CAAC,CAChI,CAOA,QAAQK,EAAO,CAAC,CAOhB,WAAWA,EAAO,CAAC,CAEnB,eAAe9C,EAAO,CACpB,IAAM+C,EAAU/C,EAAM,QAChB4C,EAAU,KAAK,YACrB,OAAQG,EAAS,CACf,IAAK,IACEC,GAAehD,CAAK,IACvBA,EAAM,eAAe,EACrB,KAAK,OAAO,KAAK,SAAS,GAE5B,MACF,IAAK,IACC,KAAK,YAAc,KAAK,YAAc,OACxC,KAAK,OAAO,KAAK,SAAS,EAE5B,MACF,IAAK,IACC,KAAK,YAAc,KAAK,YAAc,OACxC,KAAK,OAAO,KAAK,SAAS,EAE5B,MACF,SACM+C,IAAY,IAAYA,IAAY,KACtCH,EAAQ,eAAe,UAAU,EAEnCA,EAAQ,UAAU5C,CAAK,EACvB,MACJ,CACF,CAKA,eAAeF,EAAS,UAAW,CAEjC,KAAK,oBAAoB,QAAQ,EACjC,KAAK,mBAAqBmD,GAAgB,IAAM,CAC9C,IAAMC,EAAY,KAAK,cAAc,EAErC,GAAI,CAACA,GAAa,CAACA,EAAU,SAAS,SAAS,aAAa,EAAG,CAC7D,IAAMN,EAAU,KAAK,YACrBA,EAAQ,eAAe9C,CAAM,EAAE,mBAAmB,EAI9C,CAAC8C,EAAQ,YAAcM,GACzBA,EAAU,MAAM,CAEpB,CACF,EAAG,CACD,SAAU,KAAK,SACjB,CAAC,CACH,CAKA,iBAAkB,CAChB,KAAK,YAAY,cAAc,EAAE,CACnC,CAKA,aAAaC,EAAQ,CAAC,CAQtB,mBAAmBC,EAAO,KAAK,UAAWC,EAAO,KAAK,UAAW,CAC/D,KAAK,WAAaC,GAAAxB,EAAA,GACb,KAAK,YADQ,CAEf,kBAAoBsB,IAAS,SAC7B,iBAAmBA,IAAS,QAC5B,iBAAmBC,IAAS,QAC5B,iBAAmBA,IAAS,OAC/B,GACA,KAAK,mBAAmB,aAAa,CACvC,CAEA,iBAAiBE,EAAO,CACtB,IAAMC,EAASD,IAAU5F,IACrB6F,GAAUD,IAAU7F,MAClB8F,IACF,aAAa,KAAK,oBAAoB,EACtC,KAAK,qBAAuB,QAE9B,KAAK,eAAe,KAAKA,EAAS,OAAS,OAAO,EAClD,KAAK,aAAe,GAExB,CACA,kBAAkBD,EAAO,EACnBA,IAAU7F,IAAmB6F,IAAU5F,MACzC,KAAK,aAAe,GAExB,CACA,WAAW8F,EAAQ,CAEjB,GADA,KAAK,qBAAuBA,EAAS,QAAU,OAC3CA,GACF,GAAI,KAAK,YAAY,kBAAoB,EAAG,CAO1C,IAAMP,EAAY,KAAK,cAAc,EACjCA,IACFA,EAAU,UAAY,EAE1B,OACU,KAAK,sBAIf,KAAK,qBAAuB,WAAW,IAAM,KAAK,iBAAiBvF,EAAc,EAAG,GAAG,GAGrF,KAAK,qBACP,WAAW,IAAM,CACf,KAAK,iBAAiB8F,EAAS/F,GAAkBC,EAAc,CACjE,CAAC,EAEH,KAAK,mBAAmB,aAAa,CACvC,CAOA,0BAA2B,CACzB,KAAK,UAAU,QAAQ,KAAK0E,GAAU,KAAK,SAAS,CAAC,EAAE,UAAUE,GAAS,CACxE,KAAK,uBAAuB,MAAMA,EAAM,OAAOE,GAAQA,EAAK,cAAgB,IAAI,CAAC,EACjF,KAAK,uBAAuB,gBAAgB,CAC9C,CAAC,CACH,CAEA,eAAgB,CACd,IAAIS,EAAY,KAChB,OAAI,KAAK,uBAAuB,SAK9BA,EAAY,KAAK,uBAAuB,MAAM,gBAAgB,EAAE,QAAQ,eAAe,GAElFA,CACT,CACA,OAAO,UAAO,SAAyB5C,EAAmB,CACxD,OAAO,IAAKA,GAAqB1C,EACnC,EACA,OAAO,UAAyB2C,EAAkB,CAChD,KAAM3C,EACN,UAAW,CAAC,CAAC,UAAU,CAAC,EACxB,eAAgB,SAAgClC,EAAIC,EAAK+H,EAAU,CAMjE,GALIhI,EAAK,IACJiI,GAAeD,EAAUnG,GAAkB,CAAC,EAC5CoG,GAAeD,EAAUpG,GAAa,CAAC,EACvCqG,GAAeD,EAAUpG,GAAa,CAAC,GAExC5B,EAAK,EAAG,CACV,IAAIkI,EACDC,EAAeD,EAAQE,EAAY,CAAC,IAAMnI,EAAI,YAAciI,EAAG,OAC/DC,EAAeD,EAAQE,EAAY,CAAC,IAAMnI,EAAI,UAAYiI,GAC1DC,EAAeD,EAAQE,EAAY,CAAC,IAAMnI,EAAI,MAAQiI,EAC3D,CACF,EACA,UAAW,SAAuBlI,EAAIC,EAAK,CAIzC,GAHID,EAAK,GACJqI,GAAYhD,GAAa,CAAC,EAE3BrF,EAAK,EAAG,CACV,IAAIkI,EACDC,EAAeD,EAAQE,EAAY,CAAC,IAAMnI,EAAI,YAAciI,EAAG,MACpE,CACF,EACA,SAAU,EACV,aAAc,SAA8BlI,EAAIC,EAAK,CAC/CD,EAAK,GACJmB,EAAY,aAAc,IAAI,EAAE,kBAAmB,IAAI,EAAE,mBAAoB,IAAI,CAExF,EACA,OAAQ,CACN,cAAe,gBACf,UAAW,CAAC,EAAG,aAAc,WAAW,EACxC,eAAgB,CAAC,EAAG,kBAAmB,gBAAgB,EACvD,gBAAiB,CAAC,EAAG,mBAAoB,iBAAiB,EAC1D,UAAW,YACX,UAAW,YACX,eAAgB,CAAC,EAAG,iBAAkB,iBAAkB2D,CAAgB,EACxE,YAAa,CAAC,EAAG,cAAe,cAAekB,GAASA,GAAS,KAAO,KAAOlB,EAAiBkB,CAAK,CAAC,EACtG,WAAY,CAAC,EAAG,QAAS,YAAY,EACrC,UAAW,WACb,EACA,QAAS,CACP,OAAQ,SACR,MAAO,OACT,EACA,SAAU,CAAC,SAAS,EACpB,SAAU,CAAIF,GAAmB,CAAC,CAChC,QAASnE,GACT,YAAaO,CACf,CAAC,CAAC,EAAM6C,CAAwB,EAChC,mBAAoBrD,GACpB,MAAO,EACP,KAAM,EACN,OAAQ,CAAC,CAAC,WAAY,KAAM,OAAQ,OAAQ,EAAG,qBAAsB,EAAG,QAAS,iBAAkB,eAAgB,kBAAmB,IAAI,EAAG,CAAC,EAAG,sBAAsB,CAAC,EACxK,SAAU,SAA0B1B,EAAIC,EAAK,CACvCD,EAAK,IACJgF,EAAgB,EAChBC,EAAW,EAAG3E,GAAgC,EAAG,GAAI,aAAa,EAEzE,EACA,OAAQ,CAAC,s8JAAw8J,EACj9J,cAAe,EACf,gBAAiB,CACnB,CAAC,CACH,CACA,OAAO4B,CACT,GAAG,EAMGC,GAAwC,IAAIwB,EAAe,2BAA4B,CAC3F,WAAY,OACZ,QAAS,IAAM,CACb,IAAMrC,EAAUsC,EAAO0E,CAAO,EAC9B,MAAO,IAAMhH,EAAQ,iBAAiB,WAAW,CACnD,CACF,CAAC,EAMKc,GAA4C,CAChD,QAASD,GACT,KAAM,CAACmG,CAAO,EACd,WAAYjH,EACd,EAEMgB,GAA2CkG,GAAgC,CAC/E,QAAS,EACX,CAAC,EAQKjG,EAAkC,IAAI,QAExCC,IAA+B,IAAM,CACvC,MAAMA,CAAe,CACnB,SAAWqB,EAAO0E,CAAO,EACzB,SAAW1E,EAAOC,CAAU,EAC5B,kBAAoBD,EAAO4B,EAAgB,EAC3C,kBAAoB5B,EAAOhC,GAAa,CACtC,SAAU,GACV,KAAM,EACR,CAAC,EACD,KAAOgC,EAAO4E,GAAgB,CAC5B,SAAU,EACZ,CAAC,EACD,cAAgB5E,EAAOG,EAAY,EACnC,QAAUH,EAAO6E,EAAM,EACvB,gBAAkB7E,EAAOzB,EAAwB,EACjD,mBAAqByB,EAAOI,CAAiB,EAC7C,QACA,YAAc,KACd,UAAY,GACZ,4BAA8B0E,EAAa,MAC3C,mBAAqBA,EAAa,MAClC,uBAAyBA,EAAa,MACtC,gBAKA,oBAKA,oBAKA,kBAAoBpE,GAAS,CACtBqE,GAAiCrE,CAAK,IACzC,KAAK,UAAY,QAErB,EAGA,UAAY,OAKZ,IAAI,8BAA+B,CACjC,OAAO,KAAK,IACd,CACA,IAAI,6BAA6BsE,EAAG,CAClC,KAAK,KAAOA,CACd,CAEA,IAAI,MAAO,CACT,OAAO,KAAK,KACd,CACA,IAAI,KAAKC,EAAM,CACTA,IAAS,KAAK,QAGlB,KAAK,MAAQA,EACb,KAAK,uBAAuB,YAAY,EACpCA,IACW,KAAK,oBAGlB,KAAK,uBAAyBA,EAAK,MAAM,UAAUC,GAAU,CAC3D,KAAK,aAAaA,CAAM,GAEnBA,IAAW,SAAWA,IAAW,QAAU,KAAK,qBACnD,KAAK,oBAAoB,OAAO,KAAKA,CAAM,CAE/C,CAAC,GAEH,KAAK,mBAAmB,oBAAoB,KAAK,gBAAgB,CAAC,EACpE,CACA,MAEA,SAMA,aAAe,GAEf,WAAa,IAAIxC,EAOjB,WAAa,KAAK,WAElB,WAAa,IAAIA,EAOjB,YAAc,KAAK,WACnB,aAAc,CACZ,IAAMyC,EAAanF,EAAOjC,GAAgB,CACxC,SAAU,EACZ,CAAC,EACD,KAAK,oBAAsBoH,aAAsB7G,GAAU6G,EAAa,OACxE,KAAK,SAAS,cAAc,iBAAiB,aAAc,KAAK,kBAAmB1G,EAA2B,CAChH,CACA,oBAAqB,CACnB,KAAK,aAAa,CACpB,CACA,aAAc,CACR,KAAK,MAAQ,KAAK,UAAU,KAAK,IAAI,GACvCC,EAAmB,OAAO,KAAK,IAAI,EAErC,KAAK,SAAS,cAAc,oBAAoB,aAAc,KAAK,kBAAmBD,EAA2B,EACjH,KAAK,iBAAiB,YAAY,EAClC,KAAK,uBAAuB,YAAY,EACxC,KAAK,4BAA4B,YAAY,EAC7C,KAAK,mBAAmB,YAAY,EAChC,KAAK,cACP,KAAK,YAAY,QAAQ,EACzB,KAAK,YAAc,KAEvB,CAEA,IAAI,UAAW,CACb,OAAO,KAAK,SACd,CAEA,IAAI,KAAM,CACR,OAAO,KAAK,MAAQ,KAAK,KAAK,QAAU,MAAQ,MAAQ,KAC1D,CAEA,iBAAkB,CAChB,MAAO,CAAC,EAAE,KAAK,mBAAqB,KAAK,qBAAuB,KAAK,KACvE,CAEA,YAAa,CACX,OAAO,KAAK,UAAY,KAAK,UAAU,EAAI,KAAK,SAAS,CAC3D,CAEA,UAAW,CACT,IAAMwG,EAAO,KAAK,KAClB,GAAI,KAAK,WAAa,CAACA,EACrB,OAEF,KAAK,iBAAiB,YAAY,EAClC,IAAMG,EAAkB1G,EAAmB,IAAIuG,CAAI,EACnDvG,EAAmB,IAAIuG,EAAM,IAAI,EAG7BG,GAAmBA,IAAoB,MACzCA,EAAgB,UAAU,EAE5B,IAAMC,EAAa,KAAK,eAAeJ,CAAI,EACrCK,EAAgBD,EAAW,UAAU,EACrCE,EAAmBD,EAAc,iBACvC,KAAK,aAAaL,EAAMM,CAAgB,EACxCD,EAAc,YAAcL,EAAK,aAAe,KAAO,CAAC,KAAK,gBAAgB,EAAIA,EAAK,YAGjFI,EAAW,YAAY,IAC1BA,EAAW,OAAO,KAAK,WAAWJ,CAAI,CAAC,EACvCA,EAAK,aAAa,OAAO,KAAK,QAAQ,GAExC,KAAK,4BAA8B,KAAK,oBAAoB,EAAE,UAAU,IAAM,KAAK,UAAU,CAAC,EAC9FA,EAAK,WAAa,KAAK,gBAAgB,EAAI,KAAK,oBAAsB,OACtEA,EAAK,UAAY,KAAK,IACtBA,EAAK,eAAe,KAAK,WAAa,SAAS,EAC/C,KAAK,eAAe,EAAI,EACpBA,aAAgB3G,KAClB2G,EAAK,WAAW,EAAI,EACpBA,EAAK,uBAAuB,QAAQ,KAAKO,GAAUP,EAAK,KAAK,CAAC,EAAE,UAAU,IAAM,CAG9EM,EAAiB,mBAAmB,EAAK,EAAE,oBAAoB,EAC/DA,EAAiB,mBAAmB,EAAI,CAC1C,CAAC,EAEL,CAEA,WAAY,CACV,KAAK,MAAM,MAAM,KAAK,CACxB,CAKA,MAAM/E,EAAQC,EAAS,CACjB,KAAK,eAAiBD,EACxB,KAAK,cAAc,SAAS,KAAK,SAAUA,EAAQC,CAAO,EAE1D,KAAK,SAAS,cAAc,MAAMA,CAAO,CAE7C,CAIA,gBAAiB,CACf,KAAK,aAAa,eAAe,CACnC,CAEA,aAAayE,EAAQ,CACnB,IAAMG,EAAa,KAAK,YAClBJ,EAAO,KAAK,MACd,CAACI,GAAc,CAAC,KAAK,WAGzB,KAAK,4BAA4B,YAAY,EAC7C,KAAK,iBAAiB,YAAY,EAG9BJ,aAAgB3G,IAAW,KAAK,UAAU2G,CAAI,GAChD,KAAK,gBAAkBA,EAAK,eAAe,KAAKQ,GAAK,CAAC,CAAC,EAAE,UAAU,IAAM,CACvEJ,EAAW,OAAO,EAClBJ,EAAK,aAAa,OAAO,CAC3B,CAAC,EACDA,EAAK,WAAW,EAAK,IAErBI,EAAW,OAAO,EAClBJ,GAAM,aAAa,OAAO,GAExBA,GAAQ,KAAK,UAAUA,CAAI,GAC7BvG,EAAmB,OAAOuG,CAAI,EAM5B,KAAK,eAAiBC,IAAW,WAAa,CAAC,KAAK,WAAa,CAAC,KAAK,gBAAgB,IACzF,KAAK,MAAM,KAAK,SAAS,EAE3B,KAAK,UAAY,OACjB,KAAK,eAAe,EAAK,EAC3B,CAEA,eAAef,EAAQ,CACjBA,IAAW,KAAK,YAClB,KAAK,UAAYA,EACjB,KAAK,UAAY,KAAK,WAAW,KAAK,EAAI,KAAK,WAAW,KAAK,EAC3D,KAAK,gBAAgB,GACvB,KAAK,kBAAkB,gBAAgBA,CAAM,EAE/C,KAAK,mBAAmB,aAAa,EAEzC,CAKA,eAAec,EAAM,CACnB,GAAI,CAAC,KAAK,YAAa,CACrB,IAAMS,EAAS,KAAK,kBAAkBT,CAAI,EAC1C,KAAK,sBAAsBA,EAAMS,EAAO,gBAAgB,EACxD,KAAK,YAAc,KAAK,SAAS,OAAOA,CAAM,EAC9C,KAAK,YAAY,cAAc,EAAE,UAAUhF,GAAS,CAC9C,KAAK,gBAAgBpC,IACvB,KAAK,KAAK,eAAeoC,CAAK,CAElC,CAAC,CACH,CACA,OAAO,KAAK,WACd,CAKA,kBAAkBuE,EAAM,CACtB,OAAO,IAAIU,GAAc,CACvB,iBAAkB,KAAK,SAAS,SAAS,EAAE,oBAAoB,KAAK,QAAQ,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,sBAAsB,sCAAsC,EACnL,cAAeV,EAAK,eAAiB,mCACrC,WAAYA,EAAK,kBACjB,eAAgB,KAAK,gBAAgB,EACrC,UAAW,KAAK,MAAQ,KAC1B,CAAC,CACH,CAMA,sBAAsBA,EAAMW,EAAU,CAChCX,EAAK,oBACPW,EAAS,gBAAgB,UAAUC,GAAU,CAC3C,KAAK,QAAQ,IAAI,IAAM,CACrB,IAAM/B,EAAO+B,EAAO,eAAe,WAAa,QAAU,QAAU,SAC9D9B,EAAO8B,EAAO,eAAe,WAAa,MAAQ,QAAU,QAClEZ,EAAK,mBAAmBnB,EAAMC,CAAI,CACpC,CAAC,CACH,CAAC,CAEL,CAMA,aAAakB,EAAMM,EAAkB,CACnC,GAAI,CAACO,EAASC,CAAe,EAAId,EAAK,YAAc,SAAW,CAAC,MAAO,OAAO,EAAI,CAAC,QAAS,KAAK,EAC7F,CAACe,EAAUC,CAAgB,EAAIhB,EAAK,YAAc,QAAU,CAAC,SAAU,KAAK,EAAI,CAAC,MAAO,QAAQ,EAChG,CAACiB,GAASC,EAAe,EAAI,CAACH,EAAUC,CAAgB,EACxD,CAACG,GAAUC,EAAgB,EAAI,CAACP,EAASC,CAAe,EACxDO,EAAU,EACd,GAAI,KAAK,gBAAgB,GAKvB,GAFAD,GAAmBP,EAAUb,EAAK,YAAc,SAAW,QAAU,MACrEc,EAAkBK,GAAWN,IAAY,MAAQ,QAAU,MACvD,KAAK,oBAAqB,CAC5B,GAAI,KAAK,qBAAuB,KAAM,CACpC,IAAMS,GAAY,KAAK,oBAAoB,MAAM,MACjD,KAAK,oBAAsBA,GAAYA,GAAU,gBAAgB,EAAE,UAAY,CACjF,CACAD,EAAUN,IAAa,SAAW,KAAK,oBAAsB,CAAC,KAAK,mBACrE,OACUf,EAAK,iBACfiB,GAAUF,IAAa,MAAQ,SAAW,MAC1CG,GAAkBF,IAAqB,MAAQ,SAAW,OAE5DV,EAAiB,cAAc,CAAC,CAC9B,QAAAO,EACA,QAAAI,GACA,SAAAE,GACA,SAAAJ,EACA,QAAAM,CACF,EAAG,CACD,QAASP,EACT,QAAAG,GACA,SAAUG,GACV,SAAAL,EACA,QAAAM,CACF,EAAG,CACD,QAAAR,EACA,QAASK,GACT,SAAAC,GACA,SAAUH,EACV,QAAS,CAACK,CACZ,EAAG,CACD,QAASP,EACT,QAASI,GACT,SAAUE,GACV,SAAUJ,EACV,QAAS,CAACK,CACZ,CAAC,CAAC,CACJ,CAEA,qBAAsB,CACpB,IAAME,EAAW,KAAK,YAAY,cAAc,EAC1CC,EAAc,KAAK,YAAY,YAAY,EAC3CC,EAAc,KAAK,oBAAsB,KAAK,oBAAoB,OAASC,GAAG,EAC9EC,EAAQ,KAAK,oBAAsB,KAAK,oBAAoB,SAAS,EAAE,KAAKC,GAAOC,GAAU,KAAK,WAAaA,IAAW,KAAK,iBAAiB,CAAC,EAAIH,GAAG,EAC9J,OAAOzD,GAAMsD,EAAUE,EAAaE,EAAOH,CAAW,CACxD,CAEA,iBAAiB/F,EAAO,CACjBqG,GAAgCrG,CAAK,IAGxC,KAAK,UAAYA,EAAM,SAAW,EAAI,QAAU,OAI5C,KAAK,gBAAgB,GACvBA,EAAM,eAAe,EAG3B,CAEA,eAAeA,EAAO,CACpB,IAAM+C,EAAU/C,EAAM,SAElB+C,IAAY,IAASA,IAAY,MACnC,KAAK,UAAY,YAEf,KAAK,gBAAgB,IAAMA,IAAY,IAAe,KAAK,MAAQ,OAASA,IAAY,IAAc,KAAK,MAAQ,SACrH,KAAK,UAAY,WACjB,KAAK,SAAS,EAElB,CAEA,aAAa/C,EAAO,CACd,KAAK,gBAAgB,GAEvBA,EAAM,gBAAgB,EACtB,KAAK,SAAS,GAEd,KAAK,WAAW,CAEpB,CAEA,cAAe,CAET,KAAK,gBAAgB,GAAK,KAAK,sBACjC,KAAK,mBAAqB,KAAK,oBAAoB,SAAS,EAAE,UAAUoG,GAAU,CAC5EA,IAAW,KAAK,mBAAqB,CAACA,EAAO,WAC/C,KAAK,UAAY,QACjB,KAAK,SAAS,EAElB,CAAC,EAEL,CAEA,WAAW7B,EAAM,CAIf,OAAI,CAAC,KAAK,SAAW,KAAK,QAAQ,cAAgBA,EAAK,eACrD,KAAK,QAAU,IAAInD,GAAemD,EAAK,YAAa,KAAK,iBAAiB,GAErE,KAAK,OACd,CAMA,UAAUA,EAAM,CACd,OAAOvG,EAAmB,IAAIuG,CAAI,IAAM,IAC1C,CACA,OAAO,UAAO,SAAgCjE,EAAmB,CAC/D,OAAO,IAAKA,GAAqBrC,EACnC,EACA,OAAO,UAAyBsD,EAAkB,CAChD,KAAMtD,EACN,UAAW,CAAC,CAAC,GAAI,uBAAwB,EAAE,EAAG,CAAC,GAAI,oBAAqB,EAAE,CAAC,EAC3E,UAAW,CAAC,EAAG,sBAAsB,EACrC,SAAU,EACV,aAAc,SAAqCvC,EAAIC,EAAK,CACtDD,EAAK,GACJS,EAAW,QAAS,SAAiDK,EAAQ,CAC9E,OAAOb,EAAI,aAAaa,CAAM,CAChC,CAAC,EAAE,YAAa,SAAqDA,EAAQ,CAC3E,OAAOb,EAAI,iBAAiBa,CAAM,CACpC,CAAC,EAAE,UAAW,SAAmDA,EAAQ,CACvE,OAAOb,EAAI,eAAea,CAAM,CAClC,CAAC,EAECd,EAAK,GACJmB,EAAY,gBAAiBlB,EAAI,KAAO,OAAS,IAAI,EAAE,gBAAiBA,EAAI,QAAQ,EAAE,gBAAiBA,EAAI,SAAWA,EAAI,KAAK,QAAU,IAAI,CAEpJ,EACA,OAAQ,CACN,6BAA8B,CAAC,EAAG,uBAAwB,8BAA8B,EACxF,KAAM,CAAC,EAAG,oBAAqB,MAAM,EACrC,SAAU,CAAC,EAAG,qBAAsB,UAAU,EAC9C,aAAc,CAAC,EAAG,6BAA8B,cAAc,CAChE,EACA,QAAS,CACP,WAAY,aACZ,WAAY,aACZ,WAAY,aACZ,YAAa,aACf,EACA,SAAU,CAAC,gBAAgB,CAC7B,CAAC,CACH,CACA,OAAOsC,CACT,GAAG,EAICC,IAA8B,IAAM,CACtC,MAAMA,CAAc,CAClB,OAAO,UAAO,SAA+BoC,EAAmB,CAC9D,OAAO,IAAKA,GAAqBpC,EACnC,EACA,OAAO,UAAyBoI,EAAiB,CAC/C,KAAMpI,CACR,CAAC,EACD,OAAO,UAAyBqI,EAAiB,CAC/C,UAAW,CAACzI,EAAyC,EACrD,QAAS,CAAC0I,GAAiBC,GAAiBC,EAAeC,GAAqBF,EAAe,CACjG,CAAC,CACH,CACA,OAAOvI,CACT,GAAG,EAaGC,GAAoB,CASxB,cAA4ByI,GAAQ,gBAAiB,CAAcrD,GAAM,OAAqBsD,EAAM,CAClG,QAAS,EACT,UAAW,YACb,CAAC,CAAC,EAAgBC,GAAW,gBAA8BC,GAAQ,mCAAiDF,EAAM,CACxH,QAAS,EACT,UAAW,UACb,CAAC,CAAC,CAAC,EAAgBC,GAAW,YAA0BC,GAAQ,oBAAkCF,EAAM,CACtG,QAAS,CACX,CAAC,CAAC,CAAC,CAAC,CAAC,EAKL,YAA0BD,GAAQ,cAAe,CAIjDrD,GAAM,UAAwBsD,EAAM,CAClC,QAAS,CACX,CAAC,CAAC,EAAgBC,GAAW,YAAa,CAAcD,EAAM,CAC5D,QAAS,CACX,CAAC,EAAgBE,GAAQ,8CAA8C,CAAC,CAAC,CAAC,CAAC,CAC7E,EAMM3I,GAAcD,GAAkB,YAMhCE,GAAgBF,GAAkB","names":["PopoverPositions","DEFAULT_POSITIONS","init_popover_positions","__esmMin","Top","originX","originY","overlayX","overlayY","panelClass","Bottom","Left","Right","TopRight","TopLeft","BottomRight","BottomLeft","__spreadValues","ɵɵelement","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","close","ɵɵtext","ɵɵelementEnd","ɵɵprojection","ɵɵtemplate","PopoverComponent_ng_template_0_Conditional_8_Template","PopoverComponent_ng_template_0_Conditional_10_Template","ɵɵstyleProp","_cooercedMaxWidth","_cooercedMaxHeight","ɵɵclassProp","padding","highContrast","hasArrow","ɵɵpipeBind1","isFullscreen$","mobileFullScreen","ɵɵadvance","ɵɵconditional","showMobileClose","PopoverComponent","init_popover_component","__esmMin","init_coercion","init_core","init_popover_positions","init_operators","handleEscapeKey","closeOnEscapeKey","isOpen","coerceCssPixelValue","maxWidth","maxHeight","_popoverClasses","_backdropClass","showBackdrop","constructor","breakpointObserver","hasBackdrop","closeOnBackdropClick","keepOnScreen","breakpoint","positions","DEFAULT_POSITIONS","isOpenChange","EventEmitter","backdropClick","mobileBreakpoint","ngOnInit","observe","pipe","map","resp","breakpoints","ngAfterContentInit","setupPositions","ngOnChanges","changes","previousValue","_positions","pos","__spreadValues","setOrigin","origin","onBackdropClick","emit","open","toggle","ɵɵdirectiveInject","BreakpointObserver","selectors","hostBindings","rf","ctx","ɵɵresolveDocument","booleanAttribute","outputs","standalone","features","ɵɵInputTransformsFeature","ɵɵNgOnChangesFeature","ngContentSelectors","_c1","decls","vars","consts","template","PopoverComponent_ng_template_0_Template","ɵɵproperty","GalaxyPopoverDirective","init_popover_directive","__esmMin","init_overlay","constructor","elementRef","origin","CdkOverlayOrigin","ngOnInit","popover","setOrigin","ɵɵdirectiveInject","ElementRef","selectors","inputs","exportAs","standalone","PopoverActionsDirective","init_popover_actions_directive","__esmMin","constructor","class","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","PopoverTitleDirective","init_popover_title_directive","__esmMin","constructor","class","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","MODULE_IMPORTS","GalaxyPopoverModule","init_popover_module","__esmMin","init_overlay","init_common","init_button","init_icon","CommonModule","OverlayModule","MatIconModule","MatButtonModule","init_public_api","__esmMin","init_popover_module","init_popover_positions","init_popover","__esmMin","init_public_api","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ctx_r0","title","ɵɵtextInterpolate","text","ɵɵtemplate","TooltipComponent_Conditional_0_Conditional_1_Template","TooltipComponent_Conditional_0_Conditional_2_Template","ɵɵproperty","origin","show","positions","highContrast","ɵɵconditional","TooltipComponent","init_tooltip_component","__esmMin","init_core","init_popover","constructor","elementRef","class","PopoverPositions","Top","Bottom","setOrigin","setText","setTitle","sethighContrast","mode","setPositions","showTooltip","hideTooltip","ɵɵdirectiveInject","ElementRef","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","booleanAttribute","standalone","features","ɵɵInputTransformsFeature","decls","vars","consts","template","TooltipComponent_Conditional_0_Template","HIDDEN_TEST_WAIT","GalaxyTooltipDirective","init_tooltip_directive","__esmMin","init_overlay","init_portal","init_core","init_tooltip_component","onMouseEnter","showTooltip","window","clearTimeout","hiddenTestID","testElementHidden","onMouseLeave","hideTooltip","constructor","elementRef","overlay","show","glxyTooltip","glxyTooltipDisabled","tooltipPositions","highContrast","overlayRef","create","hasBackdrop","tooltip","attach","ComponentPortal","TooltipComponent","instance","origin","CdkOverlayOrigin","updateTooltipValues","ngOnChanges","ngOnDestroy","dispose","setOrigin","setTitle","tooltipTitle","setText","sethighContrast","length","setPositions","setTimeout","document","body","contains","nativeElement","ɵɵdirectiveInject","ElementRef","Overlay","selectors","hostBindings","rf","ctx","ɵɵlistener","booleanAttribute","exportAs","standalone","features","ɵɵInputTransformsFeature","ɵɵNgOnChangesFeature","MODULE_IMPORTS","GalaxyTooltipModule","init_tooltip_module","__esmMin","init_overlay","init_common","init_ngx_translate_core","init_popover","CommonModule","OverlayModule","GalaxyPopoverModule","TranslateModule","init_public_api","__esmMin","init_tooltip_module","init_tooltip","__esmMin","init_public_api","MatMenuItem_Conditional_4_Template","rf","ctx","ɵɵnamespaceSVG","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","MatMenu_ng_template_0_Template","_r1","ɵɵgetCurrentView","ɵɵlistener","ɵɵrestoreView","ctx_r1","ɵɵnextContext","ɵɵresetView","$event","ɵɵprojection","ɵɵclassMap","ɵɵclassProp","ɵɵproperty","ɵɵattribute","MAT_MENU_DEFAULT_OPTIONS_FACTORY","MAT_MENU_SCROLL_STRATEGY_FACTORY","overlay","_c0","_c1","_c2","_c3","MAT_MENU_PANEL","MatMenuItem","MAT_MENU_CONTENT","MatMenuContent","MAT_MENU_DEFAULT_OPTIONS","ENTER_ANIMATION","EXIT_ANIMATION","MatMenu","MAT_MENU_SCROLL_STRATEGY","MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER","passiveEventListenerOptions","PANELS_TO_TRIGGERS","MatMenuTrigger","MatMenuModule","matMenuAnimations","fadeInItems","transformMenu","init_menu","__esmMin","init_core","init_a11y","init_keycodes","init_esm","init_operators","init_common","init_private","init_portal","init_bidi","init_overlay","init_platform","init_scrolling","init_animations","InjectionToken","inject","ElementRef","DOCUMENT","FocusMonitor","ChangeDetectorRef","Subject","_CdkPrivateStyleLoader","_StructuralStylesLoader","origin","options","event","clone","icons","i","isHighlighted","triggersSubmenu","__ngFactoryType__","ɵɵdefineComponent","booleanAttribute","ɵɵInputTransformsFeature","ɵɵprojectionDef","ɵɵtemplate","ɵɵadvance","ɵɵconditional","MatRipple","TemplateRef","ApplicationRef","Injector","ViewContainerRef","context","TemplatePortal","DomPortalOutlet","element","ɵɵdefineDirective","ɵɵProvidersFeature","QueryList","value","classes","previousPanelClass","newClassList","__spreadValues","className","EventEmitter","_IdGenerator","defaultOptions","ANIMATION_MODULE_TYPE","FocusKeyManager","startWith","switchMap","items","merge","item","focusedItem","itemsList","manager","index","_item","keyCode","hasModifierKey","afterNextRender","menuPanel","_depth","posX","posY","__spreadProps","state","isExit","isOpen","dirIndex","ɵɵcontentQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵviewQuery","Overlay","normalizePassiveListenerOptions","Directionality","NgZone","Subscription","isFakeTouchstartFromScreenReader","v","menu","reason","parentMenu","previousTrigger","overlayRef","overlayConfig","positionStrategy","takeUntil","take","config","OverlayConfig","position","change","originX","originFallbackX","overlayY","overlayFallbackY","originY","originFallbackY","overlayX","overlayFallbackX","offsetY","firstItem","backdrop","detachments","parentClose","of","hover","filter","active","isFakeMousedownFromScreenReader","ɵɵdefineNgModule","ɵɵdefineInjector","MatRippleModule","MatCommonModule","OverlayModule","CdkScrollableModule","trigger","style","transition","animate"],"x_google_ignoreList":[15]}