{"version":3,"file":"mtxPopover.mjs","sources":["../../../projects/extensions/popover/popover-animations.ts","../../../projects/extensions/popover/popover-content.ts","../../../projects/extensions/popover/popover-errors.ts","../../../projects/extensions/popover/popover.ts","../../../projects/extensions/popover/popover.html","../../../projects/extensions/popover/popover-trigger.ts","../../../projects/extensions/popover/popover-target.ts","../../../projects/extensions/popover/popover-module.ts","../../../projects/extensions/popover/mtxPopover.ts"],"sourcesContent":["import {\n  trigger,\n  state,\n  style,\n  animate,\n  transition,\n  AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Below are all the animations for the mtx-popover component.\n * Animation duration and timing values are based on AngularJS Material.\n */\n\n/**\n * This animation controls the popover panel's entry and exit from the page.\n *\n * When the popover panel is added to the DOM, it scales in and fades in its border.\n *\n * When the popover panel is removed from the DOM, it simply fades out after a brief\n * delay to display the ripple.\n */\n\nexport const transformPopover: AnimationTriggerMetadata = trigger('transformPopover', [\n  state(\n    'void',\n    style({\n      opacity: 0,\n      transform: 'scale(0.8)',\n    })\n  ),\n  transition(\n    'void => enter',\n    animate(\n      '120ms cubic-bezier(0, 0, 0.2, 1)',\n      style({\n        opacity: 1,\n        transform: 'scale(1)',\n      })\n    )\n  ),\n  transition('* => void', animate('100ms 25ms linear', style({ opacity: 0 }))),\n]);\n","import { DomPortalOutlet, TemplatePortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  ApplicationRef,\n  ChangeDetectorRef,\n  ComponentFactoryResolver,\n  Directive,\n  Inject,\n  InjectionToken,\n  Injector,\n  OnDestroy,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/**\n * Injection token that can be used to reference instances of `MtxPopoverContent`. It serves\n * as alternative token to the actual `MtxPopoverContent` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const MTX_POPOVER_CONTENT = new InjectionToken<MtxPopoverContent>('MtxPopoverContent');\n\n@Directive()\nexport abstract class _MtxPopoverContentBase implements OnDestroy {\n  private _portal!: TemplatePortal<any>;\n  private _outlet!: DomPortalOutlet;\n\n  /** Emits when the popover content has been attached. */\n  readonly _attached = new Subject<void>();\n\n  constructor(\n    private _template: TemplateRef<any>,\n    private _componentFactoryResolver: ComponentFactoryResolver,\n    private _appRef: ApplicationRef,\n    private _injector: Injector,\n    private _viewContainerRef: ViewContainerRef,\n    @Inject(DOCUMENT) private _document: any,\n    private _changeDetectorRef?: ChangeDetectorRef\n  ) {}\n\n  /**\n   * Attaches the content with a particular context.\n   * @docs-private\n   */\n  attach(context: any = {}) {\n    if (!this._portal) {\n      this._portal = new TemplatePortal(this._template, this._viewContainerRef);\n    }\n\n    this.detach();\n\n    if (!this._outlet) {\n      this._outlet = new DomPortalOutlet(\n        this._document.createElement('div'),\n        this._componentFactoryResolver,\n        this._appRef,\n        this._injector\n      );\n    }\n\n    const element: HTMLElement = this._template.elementRef.nativeElement;\n\n    // Because we support opening the same popover from different triggers (which in turn have their\n    // own `OverlayRef` panel), we have to re-insert the host element every time, otherwise we\n    // risk it staying attached to a pane that's no longer in the DOM.\n    element.parentNode!.insertBefore(this._outlet.outletElement, element);\n\n    // When `MtxPopoverContent` is used in an `OnPush` component, the insertion of the popover\n    // content via `createEmbeddedView` does not cause the content to be seen as \"dirty\"\n    // by Angular. This causes the `@ContentChildren` for popover items within the popover to\n    // not be updated by Angular. By explicitly marking for check here, we tell Angular that\n    // it needs to check for new popover items and update the `@ContentChild` in `MtxPopover`.\n    // @breaking-change 9.0.0 Make change detector ref required\n    if (this._changeDetectorRef) {\n      this._changeDetectorRef.markForCheck();\n    }\n\n    this._portal.attach(this._outlet, context);\n    this._attached.next();\n  }\n\n  /**\n   * Detaches the content.\n   * @docs-private\n   */\n  detach() {\n    if (this._portal.isAttached) {\n      this._portal.detach();\n    }\n  }\n\n  ngOnDestroy() {\n    if (this._outlet) {\n      this._outlet.dispose();\n    }\n  }\n}\n\n/**\n * Popover content that will be rendered lazily once the popover is opened.\n */\n@Directive({\n  selector: 'ng-template[mtxPopoverContent]',\n  providers: [{ provide: MTX_POPOVER_CONTENT, useExisting: MtxPopoverContent }],\n  standalone: true,\n})\nexport class MtxPopoverContent extends _MtxPopoverContentBase {}\n","/**\n * Throws an exception for the case when popover trigger doesn't have a valid mtx-popover instance\n */\nexport function throwMtxPopoverMissingError() {\n  throw Error(`mtx-popover-trigger: must pass in an mtx-popover instance.\n\n    Example:\n      <mtx-popover #popover=\"mtxPopover\"></mtx-popover>\n      <button [mtxPopoverTriggerFor]=\"popover\"></button>`);\n}\n\n/**\n * Throws an exception for the case when popover's mtxPopoverPosition[0] value isn't valid.\n * In other words, it doesn't match 'above', 'below', 'before' or 'after'.\n */\nexport function throwMtxPopoverInvalidPositionStart() {\n  throw Error(`mtxPopoverPosition[0] value must be either 'above', 'below', 'before' or 'after'.\n    Example: <mtx-popover [position]=\"['below', 'after']\" #popover=\"mtxPopover\"></mtx-popover>`);\n}\n\n/**\n * Throws an exception for the case when popover's mtxPopoverPosition[1] value isn't valid.\n * In other words, it doesn't match 'above', 'below', 'before', 'after' or 'center'.\n */\nexport function throwMtxPopoverInvalidPositionEnd() {\n  throw Error(`mtxPopoverPosition[1] value must be either 'above', 'below', 'before', 'after' or 'center'.\n    Example: <mtx-popover [position]=\"['below', 'after']\" #popover=\"mtxPopover\"></mtx-popover>`);\n}\n","import { AnimationEvent } from '@angular/animations';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { Direction } from '@angular/cdk/bidi';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  InjectionToken,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Output,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation,\n  booleanAttribute,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { transformPopover } from './popover-animations';\nimport { MTX_POPOVER_CONTENT, MtxPopoverContent } from './popover-content';\nimport {\n  throwMtxPopoverInvalidPositionEnd,\n  throwMtxPopoverInvalidPositionStart,\n} from './popover-errors';\nimport { MtxPopoverDefaultOptions, MtxPopoverPanel } from './popover-interfaces';\nimport { MtxPopoverPosition, MtxPopoverTriggerEvent, PopoverCloseReason } from './popover-types';\n\n/** Injection token to be used to override the default options for `mtx-popover`. */\nexport const MTX_POPOVER_DEFAULT_OPTIONS = new InjectionToken<MtxPopoverDefaultOptions>(\n  'mtx-popover-default-options',\n  {\n    providedIn: 'root',\n    factory: MTX_POPOVER_DEFAULT_OPTIONS_FACTORY,\n  }\n);\n\n/** @docs-private */\nexport function MTX_POPOVER_DEFAULT_OPTIONS_FACTORY(): MtxPopoverDefaultOptions {\n  return {\n    backdropClass: 'cdk-overlay-transparent-backdrop',\n  };\n}\n\nlet popoverPanelUid = 0;\n\n@Component({\n  selector: 'mtx-popover',\n  templateUrl: './popover.html',\n  styleUrl: './popover.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  animations: [transformPopover],\n  exportAs: 'mtxPopover',\n  standalone: true,\n  imports: [CdkTrapFocus],\n})\nexport class MtxPopover implements MtxPopoverPanel, OnInit, OnDestroy {\n  private _previousElevation?: string;\n  private _elevationPrefix = 'mat-elevation-z';\n  private _baseElevation: number | null = null;\n\n  /** Config object to be passed into the popover's class. */\n  _classList: { [key: string]: boolean } = {};\n\n  /** Current state of the panel animation. */\n  _panelAnimationState: 'void' | 'enter' = 'void';\n\n  /** Emits whenever an animation on the popover completes. */\n  readonly _animationDone = new Subject<AnimationEvent>();\n\n  /** Whether the popover is animating. */\n  _isAnimating = false;\n\n  /** Closing disabled on popover */\n  closeDisabled = false;\n\n  /** Config object to be passed into the popover's arrow style */\n  arrowStyles?: Record<string, unknown>;\n\n  /** Layout direction of the popover. */\n  direction?: Direction;\n\n  /** Class or list of classes to be added to the overlay panel. */\n  overlayPanelClass: string | string[] = this._defaultOptions.overlayPanelClass || '';\n\n  /** Class to be added to the backdrop element. */\n  @Input() backdropClass = this._defaultOptions.backdropClass;\n\n  /** aria-label for the popover panel. */\n  @Input('aria-label') ariaLabel?: string;\n\n  /** aria-labelledby for the popover panel. */\n  @Input('aria-labelledby') ariaLabelledby?: string;\n\n  /** aria-describedby for the popover panel. */\n  @Input('aria-describedby') ariaDescribedby?: string;\n\n  /** Popover's trigger event. */\n  @Input() triggerEvent: MtxPopoverTriggerEvent = this._defaultOptions.triggerEvent ?? 'hover';\n\n  /** Popover's enter delay. */\n  @Input() enterDelay = this._defaultOptions.enterDelay ?? 100;\n\n  /** Popover's leave delay. */\n  @Input() leaveDelay = this._defaultOptions.leaveDelay ?? 100;\n\n  /** Popover's position. */\n  @Input()\n  get position() {\n    return this._position;\n  }\n  set position(value: MtxPopoverPosition) {\n    if (!['before', 'after', 'above', 'below'].includes(value[0])) {\n      throwMtxPopoverInvalidPositionStart();\n    }\n    if (!['before', 'after', 'above', 'below', 'center'].includes(value[1])) {\n      throwMtxPopoverInvalidPositionEnd();\n    }\n    this._position = value;\n    this.setPositionClasses();\n  }\n  private _position = this._defaultOptions.position ?? ['below', 'after'];\n\n  /** Popover-panel's X offset. */\n  @Input() xOffset = this._defaultOptions.xOffset ?? 0;\n\n  /** Popover-panel's Y offset. */\n  @Input() yOffset = this._defaultOptions.yOffset ?? 0;\n\n  /** Popover-arrow's width. */\n  @Input() arrowWidth = this._defaultOptions.arrowWidth ?? 16;\n\n  /** Popover-arrow's height. */\n  @Input() arrowHeight = this._defaultOptions.arrowHeight ?? 16;\n\n  /** Popover-arrow's X offset. */\n  @Input() arrowOffsetX = this._defaultOptions.arrowOffsetX ?? 20;\n\n  /** Popover-arrow's Y offset. */\n  @Input() arrowOffsetY = this._defaultOptions.arrowOffsetY ?? 20;\n\n  /** Whether the popover arrow should be hidden. */\n  @Input({ transform: booleanAttribute })\n  hideArrow = this._defaultOptions.hideArrow ?? false;\n\n  /** Whether popover can be closed when click the popover-panel. */\n  @Input({ transform: booleanAttribute })\n  closeOnPanelClick = this._defaultOptions.closeOnPanelClick ?? false;\n\n  /** Whether popover can be closed when click the backdrop. */\n  @Input({ transform: booleanAttribute })\n  closeOnBackdropClick = this._defaultOptions.closeOnBackdropClick ?? true;\n\n  /** Whether enable focus trap using `cdkTrapFocus`. */\n  @Input({ transform: booleanAttribute })\n  focusTrapEnabled = this._defaultOptions.focusTrapEnabled ?? false;\n\n  /** Whether enable focus trap auto capture using `cdkTrapFocusAutoCapture`. */\n  @Input({ transform: booleanAttribute })\n  focusTrapAutoCaptureEnabled = this._defaultOptions.focusTrapAutoCaptureEnabled ?? false;\n\n  /** Whether the popover has a backdrop. It will always be false if the trigger event is hover. */\n  @Input({ transform: booleanAttribute })\n  hasBackdrop = this._defaultOptions.hasBackdrop;\n\n  /**\n   * This method takes classes set on the host mtx-popover element and applies them on the\n   * popover template that displays in the overlay container. Otherwise, it's difficult\n   * to style the containing popover from outside the component.\n   * @param classes list of class names\n   */\n  @Input('class')\n  set panelClass(classes: string) {\n    const previousPanelClass = this._previousPanelClass;\n    const newClassList = { ...this._classList };\n\n    if (previousPanelClass && previousPanelClass.length) {\n      previousPanelClass.split(' ').forEach((className: string) => {\n        newClassList[className] = false;\n      });\n    }\n\n    this._previousPanelClass = classes;\n\n    if (classes && classes.length) {\n      classes.split(' ').forEach((className: string) => {\n        newClassList[className] = true;\n      });\n\n      this._elementRef.nativeElement.className = '';\n\n      this.setPositionClasses();\n    }\n\n    this._classList = newClassList;\n  }\n  private _previousPanelClass?: string;\n\n  /**\n   * This method takes classes set on the host mtx-popover element and applies them on the\n   * popover template that displays in the overlay container. Otherwise, it's difficult\n   * to style the containing popover from outside the component.\n   * @deprecated Use `panelClass` instead.\n   * @breaking-change 8.0.0\n   */\n  @Input()\n  get classList(): string {\n    return this.panelClass;\n  }\n  set classList(classes: string) {\n    this.panelClass = classes;\n  }\n\n  /** Event emitted when the popover is closed. */\n  @Output() closed = new EventEmitter<PopoverCloseReason>();\n\n  /** @docs-private */\n  @ViewChild(TemplateRef) templateRef!: TemplateRef<any>;\n\n  /**\n   * Popover content that will be rendered lazily.\n   * @docs-private\n   */\n  @ContentChild(MTX_POPOVER_CONTENT) lazyContent?: MtxPopoverContent;\n\n  readonly panelId = `mtx-popover-panel-${popoverPanelUid++}`;\n\n  constructor(\n    private _elementRef: ElementRef,\n    private _unusedNgZone: NgZone,\n    @Inject(MTX_POPOVER_DEFAULT_OPTIONS) private _defaultOptions: MtxPopoverDefaultOptions\n  ) {}\n\n  ngOnInit() {\n    this.setPositionClasses();\n  }\n\n  ngOnDestroy() {\n    this.closed.complete();\n  }\n\n  /** Handle a keyboard event from the popover, delegating to the appropriate action. */\n  _handleKeydown(event: KeyboardEvent) {\n    const keyCode = event.keyCode;\n\n    switch (keyCode) {\n      case ESCAPE:\n        if (!hasModifierKey(event)) {\n          event.preventDefault();\n          this.closed.emit('keydown');\n        }\n        break;\n    }\n  }\n\n  /** Close popover on click if `closeOnPanelClick` is true. */\n  _handleClick() {\n    if (this.closeOnPanelClick) {\n      this.closed.emit('click');\n    }\n  }\n\n  /** Disables close of popover when leaving trigger element and mouse over the popover. */\n  _handleMouseOver() {\n    if (this.triggerEvent === 'hover') {\n      this.closeDisabled = true;\n    }\n  }\n\n  /** Enables close of popover when mouse leaving popover element. */\n  _handleMouseLeave() {\n    if (this.triggerEvent === 'hover') {\n      setTimeout(() => {\n        this.closeDisabled = false;\n        this.closed.emit();\n      }, this.leaveDelay);\n    }\n  }\n\n  /** Sets the current styles for the popover to allow for dynamically changing settings. */\n  setCurrentStyles(pos = this.position) {\n    const left =\n      pos[1] === 'after'\n        ? `${this.arrowOffsetX - this.arrowWidth / 2}px`\n        : pos[1] === 'center'\n          ? `calc(50% - ${this.arrowWidth / 2}px)`\n          : '';\n    const right = pos[1] === 'before' ? `${this.arrowOffsetX - this.arrowWidth / 2}px` : '';\n\n    const bottom =\n      pos[1] === 'above'\n        ? `${this.arrowOffsetY - this.arrowHeight / 2}px`\n        : pos[1] === 'center'\n          ? `calc(50% - ${this.arrowHeight / 2}px)`\n          : '';\n    const top = pos[1] === 'below' ? `${this.arrowOffsetY - this.arrowHeight / 2}px` : '';\n\n    this.arrowStyles =\n      pos[0] === 'above' || pos[0] === 'below'\n        ? {\n            left: this.direction === 'ltr' ? left : right,\n            right: this.direction === 'ltr' ? right : left,\n          }\n        : { top, bottom };\n  }\n\n  /**\n   * It's necessary to set position-based classes to ensure the popover panel animation\n   * folds out from the correct direction.\n   */\n  setPositionClasses(pos = this.position): void {\n    this._classList['mtx-popover-before-above'] = pos[0] === 'before' && pos[1] === 'above';\n    this._classList['mtx-popover-before-center'] = pos[0] === 'before' && pos[1] === 'center';\n    this._classList['mtx-popover-before-below'] = pos[0] === 'before' && pos[1] === 'below';\n    this._classList['mtx-popover-after-above'] = pos[0] === 'after' && pos[1] === 'above';\n    this._classList['mtx-popover-after-center'] = pos[0] === 'after' && pos[1] === 'center';\n    this._classList['mtx-popover-after-below'] = pos[0] === 'after' && pos[1] === 'below';\n    this._classList['mtx-popover-above-before'] = pos[0] === 'above' && pos[1] === 'before';\n    this._classList['mtx-popover-above-center'] = pos[0] === 'above' && pos[1] === 'center';\n    this._classList['mtx-popover-above-after'] = pos[0] === 'above' && pos[1] === 'after';\n    this._classList['mtx-popover-below-before'] = pos[0] === 'below' && pos[1] === 'before';\n    this._classList['mtx-popover-below-center'] = pos[0] === 'below' && pos[1] === 'center';\n    this._classList['mtx-popover-below-after'] = pos[0] === 'below' && pos[1] === 'after';\n  }\n\n  /** Sets the popover-panel's elevation. */\n  setElevation(): void {\n    // The base elevation depends on which version of the spec\n    // we're running so we have to resolve it at runtime.\n    if (this._baseElevation === null) {\n      const styles =\n        typeof getComputedStyle === 'function'\n          ? getComputedStyle(this._elementRef.nativeElement)\n          : null;\n      const value = styles?.getPropertyValue('--mtx-popover-base-elevation-level') || '8';\n      this._baseElevation = parseInt(value);\n    }\n\n    // The elevation starts at the base and increases by one for each level.\n    // Capped at 24 because that's the maximum elevation defined in the Material design spec.\n    const elevation = Math.min(this._baseElevation, 24);\n    const newElevation = `${this._elevationPrefix}${elevation}`;\n    const customElevation = Object.keys(this._classList).find(className => {\n      return className.startsWith(this._elevationPrefix);\n    });\n    if (!customElevation || customElevation === this._previousElevation) {\n      const newClassList = { ...this._classList };\n      if (this._previousElevation) {\n        newClassList[this._previousElevation] = false;\n      }\n      newClassList[newElevation] = true;\n      this._previousElevation = newElevation;\n      this._classList = newClassList;\n    }\n  }\n\n  /** Starts the enter animation. */\n  _startAnimation() {\n    // @breaking-change 8.0.0 Combine with _resetAnimation.\n    this._panelAnimationState = 'enter';\n  }\n\n  /** Resets the panel animation to its initial state. */\n  _resetAnimation() {\n    // @breaking-change 8.0.0 Combine with _startAnimation.\n    this._panelAnimationState = 'void';\n  }\n\n  /** Callback that is invoked when the panel animation completes. */\n  _onAnimationDone(event: AnimationEvent) {\n    this._animationDone.next(event);\n    this._isAnimating = false;\n  }\n\n  _onAnimationStart(event: AnimationEvent) {\n    this._isAnimating = true;\n  }\n}\n","<ng-template>\n  <div\n    [id]=\"panelId\"\n    class=\"mtx-popover-panel\"\n    [class]=\"_classList\"\n    [class.mtx-popover-panel-without-arrow]=\"hideArrow\"\n    (keydown)=\"_handleKeydown($event)\"\n    (click)=\"_handleClick()\"\n    (mouseover)=\"_handleMouseOver()\"\n    (mouseleave)=\"_handleMouseLeave()\"\n    [@transformPopover]=\"_panelAnimationState\"\n    (@transformPopover.start)=\"_onAnimationStart($event)\"\n    (@transformPopover.done)=\"_onAnimationDone($event)\"\n    tabindex=\"-1\"\n    role=\"dialog\"\n    [attr.aria-label]=\"ariaLabel || null\"\n    [attr.aria-labelledby]=\"ariaLabelledby || null\"\n    [attr.aria-describedby]=\"ariaDescribedby || null\"\n    [cdkTrapFocus]=\"focusTrapEnabled\"\n    [cdkTrapFocusAutoCapture]=\"focusTrapAutoCaptureEnabled\">\n    <div class=\"mtx-popover-content\">\n      <ng-content></ng-content>\n    </div>\n    @if (!hideArrow) {\n      <div class=\"mtx-popover-direction-arrow\" [style]=\"arrowStyles\"></div>\n    }\n  </div>\n</ng-template>\n","import { FocusMonitor, FocusOrigin, isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';\nimport { Direction, Directionality } from '@angular/cdk/bidi';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport {\n  ConnectedPosition,\n  FlexibleConnectedPositionStrategy,\n  HorizontalConnectionPos,\n  Overlay,\n  OverlayConfig,\n  OverlayRef,\n  ScrollStrategy,\n  VerticalConnectionPos,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n  AfterContentInit,\n  ChangeDetectorRef,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  InjectionToken,\n  Input,\n  OnDestroy,\n  Optional,\n  Output,\n  ViewContainerRef,\n  inject,\n} from '@angular/core';\nimport { merge, of as observableOf, Subscription } from 'rxjs';\nimport { filter, take, takeUntil } from 'rxjs/operators';\nimport { MtxPopover } from './popover';\nimport { throwMtxPopoverMissingError } from './popover-errors';\nimport { MtxPopoverPanel } from './popover-interfaces';\nimport { MtxPopoverTarget } from './popover-target';\nimport {\n  MtxPopoverPosition,\n  MtxPopoverPositionStart,\n  MtxPopoverTriggerEvent,\n  PopoverCloseReason,\n} from './popover-types';\n\n/** Injection token that determines the scroll handling while the popover is open. */\nexport const MTX_POPOVER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n  'mtx-popover-scroll-strategy',\n  {\n    providedIn: 'root',\n    factory: () => {\n      const overlay = inject(Overlay);\n      return () => overlay.scrollStrategies.reposition();\n    },\n  }\n);\n\n/** @docs-private */\nexport function MTX_POPOVER_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n  return () => overlay.scrollStrategies.reposition();\n}\n\n/** @docs-private */\nexport const MTX_POPOVER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n  provide: MTX_POPOVER_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: MTX_POPOVER_SCROLL_STRATEGY_FACTORY,\n};\n\n/**\n * This directive is intended to be used in conjunction with an `mtx-popover` tag. It is\n * responsible for toggling the display of the provided popover instance.\n */\n@Directive({\n  selector: '[mtx-popover-trigger-for], [mtxPopoverTriggerFor]',\n  exportAs: 'mtxPopoverTrigger',\n  host: {\n    'aria-haspopup': 'true',\n    '[attr.aria-expanded]': 'popoverOpen',\n    '[attr.aria-controls]': 'popoverOpen ? popover.panelId : null',\n    '(click)': '_handleClick($event)',\n    '(mouseenter)': '_handleMouseEnter($event)',\n    '(mouseleave)': '_handleMouseLeave($event)',\n    '(mousedown)': '_handleMousedown($event)',\n    '(keydown)': '_handleKeydown($event)',\n  },\n  standalone: true,\n})\nexport class MtxPopoverTrigger implements AfterContentInit, OnDestroy {\n  private _portal?: TemplatePortal;\n  private _overlayRef: OverlayRef | null = null;\n  private _popoverOpen = false;\n  private _halt = false;\n  private _positionSubscription = Subscription.EMPTY;\n  private _popoverCloseSubscription = Subscription.EMPTY;\n  private _closingActionsSubscription = Subscription.EMPTY;\n  private _scrollStrategy!: () => ScrollStrategy;\n  private _mouseoverTimer: any;\n\n  // Tracking input type is necessary so it's possible to only auto-focus\n  // the first item of the list when the popover is opened via the keyboard\n  _openedBy: Exclude<FocusOrigin, 'program' | null> | undefined = undefined;\n\n  /** References the popover instance that the trigger is associated with. */\n  @Input('mtxPopoverTriggerFor')\n  get popover() {\n    return this._popover;\n  }\n  set popover(popover: MtxPopoverPanel) {\n    if (popover === this._popover) {\n      return;\n    }\n\n    this._popover = popover;\n    this._popoverCloseSubscription.unsubscribe();\n\n    if (popover) {\n      this._popoverCloseSubscription = popover.closed.subscribe((reason: PopoverCloseReason) => {\n        this._destroyPopover(reason);\n      });\n    }\n  }\n  private _popover!: MtxPopoverPanel;\n\n  /** Data to be passed along to any lazily-rendered content. */\n  @Input('mtxPopoverTriggerData') popoverData: any;\n\n  /** References the popover target instance that the trigger is associated with. */\n  @Input('mtxPopoverTargetAt') targetElement?: MtxPopoverTarget;\n\n  /** Popover trigger event */\n  @Input('mtxPopoverTriggerOn') triggerEvent?: MtxPopoverTriggerEvent;\n\n  /** Event emitted when the associated popover is opened. */\n  @Output() popoverOpened = new EventEmitter<void>();\n\n  /** Event emitted when the associated popover is closed. */\n  @Output() popoverClosed = new EventEmitter<void>();\n\n  constructor(\n    private _overlay: Overlay,\n    private _elementRef: ElementRef<HTMLElement>,\n    private _viewContainerRef: ViewContainerRef,\n    @Inject(MTX_POPOVER_SCROLL_STRATEGY) scrollStrategy: any,\n    @Optional() private _dir: Directionality,\n    private _changeDetectorRef: ChangeDetectorRef,\n    private _focusMonitor?: FocusMonitor\n  ) {\n    this._scrollStrategy = scrollStrategy;\n  }\n\n  ngAfterContentInit() {\n    this._checkPopover();\n    this._setCurrentConfig();\n  }\n\n  ngOnDestroy() {\n    if (this._overlayRef) {\n      this._overlayRef.dispose();\n      this._overlayRef = null;\n    }\n\n    this._halt = true;\n    this._positionSubscription.unsubscribe();\n    this._popoverCloseSubscription.unsubscribe();\n    this._closingActionsSubscription.unsubscribe();\n  }\n\n  private _setCurrentConfig() {\n    if (this.triggerEvent) {\n      this.popover.triggerEvent = this.triggerEvent;\n    }\n\n    this.popover.setCurrentStyles();\n  }\n\n  /** Whether the popover is open. */\n  get popoverOpen(): boolean {\n    return this._popoverOpen;\n  }\n\n  /** The text direction of the containing app. */\n  get dir(): Direction {\n    return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n  }\n\n  /** Handles mouse click on the trigger. */\n  _handleClick(event: MouseEvent): void {\n    if (this.popover.triggerEvent === 'click') {\n      this.togglePopover();\n    }\n  }\n\n  /** Handles mouse enter on the trigger. */\n  _handleMouseEnter(event: MouseEvent): void {\n    this._halt = false;\n\n    if (this.popover.triggerEvent === 'hover') {\n      this._mouseoverTimer = setTimeout(() => {\n        this.openPopover();\n      }, this.popover.enterDelay);\n    }\n  }\n\n  /** Handles mouse leave on the trigger. */\n  _handleMouseLeave(event: MouseEvent): void {\n    if (this.popover.triggerEvent === 'hover') {\n      if (this._mouseoverTimer) {\n        clearTimeout(this._mouseoverTimer);\n        this._mouseoverTimer = null;\n      }\n\n      if (this._popoverOpen) {\n        setTimeout(() => {\n          if (!this.popover.closeDisabled) {\n            this.closePopover();\n          }\n        }, this.popover.leaveDelay);\n      } else {\n        this._halt = true;\n      }\n    }\n  }\n\n  /** Handles mouse presses on the trigger. */\n  _handleMousedown(event: MouseEvent): void {\n    if (!isFakeMousedownFromScreenReader(event)) {\n      // Since right or middle button clicks won't trigger the `click` event,\n      // we shouldn't consider the popover as opened by mouse in those cases.\n      this._openedBy = event.button === 0 ? 'mouse' : undefined;\n    }\n  }\n\n  /** Handles key presses on the trigger. */\n  _handleKeydown(event: KeyboardEvent): void {\n    const keyCode = event.keyCode;\n\n    // Pressing enter on the trigger will trigger the click handler later.\n    if (keyCode === ENTER || keyCode === SPACE) {\n      this._openedBy = 'keyboard';\n    }\n  }\n\n  /** Toggles the popover between the open and closed states. */\n  togglePopover(): void {\n    return this._popoverOpen ? this.closePopover() : this.openPopover();\n  }\n\n  /** Opens the popover. */\n  openPopover(): void {\n    if (this._popoverOpen || this._halt) {\n      return;\n    }\n\n    this._checkPopover();\n\n    const overlayRef = this._createOverlay();\n    const overlayConfig = overlayRef.getConfig();\n\n    this._setPosition(overlayConfig.positionStrategy as FlexibleConnectedPositionStrategy);\n    if (this.popover.triggerEvent === 'click') {\n      overlayConfig.hasBackdrop = this.popover.hasBackdrop ?? true;\n    }\n    overlayRef.attach(this._getPortal());\n\n    if (this.popover.lazyContent) {\n      this.popover.lazyContent.attach(this.popoverData);\n    }\n\n    this._closingActionsSubscription = this._popoverClosingActions().subscribe(() =>\n      this.closePopover()\n    );\n    this._initPopover();\n\n    if (this.popover instanceof MtxPopover) {\n      this.popover._startAnimation();\n    }\n  }\n\n  /** Closes the popover. */\n  closePopover(): void {\n    this.popover.closed.emit();\n  }\n\n  /**\n   * Focuses the popover trigger.\n   * @param origin Source of the popover trigger's focus.\n   */\n  focus(origin?: FocusOrigin, options?: FocusOptions) {\n    if (this._focusMonitor && origin) {\n      this._focusMonitor.focusVia(this._elementRef, origin, options);\n    } else {\n      this._elementRef.nativeElement.focus(options);\n    }\n  }\n\n  /** Removes the popover from the DOM. */\n  private _destroyPopover(reason: PopoverCloseReason) {\n    if (!this._overlayRef || !this.popoverOpen) {\n      return;\n    }\n\n    // Clear the timeout for hover event.\n    if (this._mouseoverTimer) {\n      clearTimeout(this._mouseoverTimer);\n      this._mouseoverTimer = null;\n    }\n\n    const popover = this.popover;\n    this._closingActionsSubscription.unsubscribe();\n    this._overlayRef.detach();\n\n    this._openedBy = undefined;\n\n    if (popover instanceof MtxPopover) {\n      popover._resetAnimation();\n\n      if (popover.lazyContent) {\n        // Wait for the exit animation to finish before detaching the content.\n        popover._animationDone\n          .pipe(\n            filter(event => event.toState === 'void'),\n            take(1),\n            // Interrupt if the content got re-attached.\n            takeUntil(popover.lazyContent._attached)\n          )\n          .subscribe({\n            next: () => popover.lazyContent!.detach(),\n            // No matter whether the content got re-attached, reset the popover.\n            complete: () => this._setIsPopoverOpen(false),\n          });\n      } else {\n        this._setIsPopoverOpen(false);\n      }\n    } else {\n      this._setIsPopoverOpen(false);\n      popover.lazyContent?.detach();\n    }\n  }\n\n  /**\n   * This method sets the popover state to open.\n   */\n  private _initPopover(): void {\n    this.popover.direction = this.dir;\n    this.popover.setElevation();\n    this._setIsPopoverOpen(true);\n  }\n\n  // set state rather than toggle to support triggers sharing a popover\n  private _setIsPopoverOpen(isOpen: boolean): void {\n    if (isOpen !== this._popoverOpen) {\n      this._popoverOpen = isOpen;\n      this._popoverOpen ? this.popoverOpened.emit() : this.popoverClosed.emit();\n\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  /**\n   * This method checks that a valid instance of MdPopover has been passed into\n   * `mtxPopoverTriggerFor`. If not, an exception is thrown.\n   */\n  private _checkPopover() {\n    if (!this.popover) {\n      throwMtxPopoverMissingError();\n    }\n  }\n\n  /**\n   * This method creates the overlay from the provided popover's template and saves its\n   * OverlayRef so that it can be attached to the DOM when openPopover is called.\n   */\n  private _createOverlay(): OverlayRef {\n    if (!this._overlayRef) {\n      const config = this._getOverlayConfig();\n      this._subscribeToPositions(config.positionStrategy as FlexibleConnectedPositionStrategy);\n      this._overlayRef = this._overlay.create(config);\n    } else {\n      const overlayConfig = this._overlayRef.getConfig();\n      const positionStrategy = overlayConfig.positionStrategy as FlexibleConnectedPositionStrategy;\n      positionStrategy.setOrigin(this._getTargetElement());\n    }\n\n    return this._overlayRef;\n  }\n\n  /**\n   * This method builds the configuration object needed to create the overlay, the OverlayConfig.\n   * @returns OverlayConfig\n   */\n  private _getOverlayConfig(): OverlayConfig {\n    return new OverlayConfig({\n      positionStrategy: this._overlay\n        .position()\n        .flexibleConnectedTo(this._getTargetElement())\n        .withLockedPosition()\n        .withGrowAfterOpen()\n        .withTransformOriginOn('.mtx-popover-panel'),\n      backdropClass: this.popover.backdropClass || 'cdk-overlay-transparent-backdrop',\n      panelClass: this.popover.overlayPanelClass,\n      scrollStrategy: this._scrollStrategy(),\n      direction: this._dir,\n    });\n  }\n\n  private _getTargetElement(): ElementRef<HTMLElement> {\n    if (this.targetElement) {\n      return this.targetElement.elementRef;\n    }\n\n    return this._elementRef;\n  }\n\n  /**\n   * Listens to changes in the position of the overlay and sets the correct classes\n   * on the popover based on the new position. This ensures the animation origin is always\n   * correct, even if a fallback position is used for the overlay.\n   */\n  private _subscribeToPositions(position: FlexibleConnectedPositionStrategy): void {\n    this._positionSubscription = position.positionChanges.subscribe(change => {\n      const posX =\n        change.connectionPair.overlayX === 'start'\n          ? 'after'\n          : change.connectionPair.overlayX === 'end'\n            ? 'before'\n            : 'center';\n      const posY =\n        change.connectionPair.overlayY === 'top'\n          ? 'below'\n          : change.connectionPair.overlayY === 'bottom'\n            ? 'above'\n            : 'center';\n\n      const pos: MtxPopoverPosition =\n        this.popover.position[0] === 'above' || this.popover.position[0] === 'below'\n          ? [posY as MtxPopoverPositionStart, posX]\n          : [posX as MtxPopoverPositionStart, posY];\n\n      // required for ChangeDetectionStrategy.OnPush\n      this._changeDetectorRef.markForCheck();\n\n      this.popover.setCurrentStyles(pos);\n      this.popover.setPositionClasses(pos);\n    });\n  }\n\n  /**\n   * Sets the appropriate positions on a position strategy\n   * so the overlay connects with the trigger correctly.\n   * @param positionStrategy Strategy whose position to update.\n   */\n  private _setPosition(positionStrategy: FlexibleConnectedPositionStrategy) {\n    const [originX, origin2ndX, origin3rdX]: HorizontalConnectionPos[] =\n      this.popover.position[0] === 'before' || this.popover.position[1] === 'after'\n        ? ['start', 'center', 'end']\n        : this.popover.position[0] === 'after' || this.popover.position[1] === 'before'\n          ? ['end', 'center', 'start']\n          : ['center', 'start', 'end'];\n\n    const [originY, origin2ndY, origin3rdY]: VerticalConnectionPos[] =\n      this.popover.position[0] === 'above' || this.popover.position[1] === 'below'\n        ? ['top', 'center', 'bottom']\n        : this.popover.position[0] === 'below' || this.popover.position[1] === 'above'\n          ? ['bottom', 'center', 'top']\n          : ['center', 'top', 'bottom'];\n\n    const [overlayX, overlayFallbackX]: HorizontalConnectionPos[] =\n      this.popover.position[0] === 'below' || this.popover.position[0] === 'above'\n        ? [originX, originX]\n        : this.popover.position[0] === 'before'\n          ? ['end', 'start']\n          : ['start', 'end'];\n\n    const [overlayY, overlayFallbackY]: VerticalConnectionPos[] =\n      this.popover.position[0] === 'before' || this.popover.position[0] === 'after'\n        ? [originY, originY]\n        : this.popover.position[0] === 'below'\n          ? ['top', 'bottom']\n          : ['bottom', 'top'];\n\n    const originFallbackX = overlayX;\n    const originFallbackY = overlayY;\n\n    const offsetX =\n      this.popover.xOffset && !isNaN(Number(this.popover.xOffset))\n        ? Number(this.dir === 'ltr' ? this.popover.xOffset : -this.popover.xOffset)\n        : 0;\n    const offsetY =\n      this.popover.yOffset && !isNaN(Number(this.popover.yOffset))\n        ? Number(this.popover.yOffset)\n        : 0;\n\n    let positions: ConnectedPosition[] = [{ originX, originY, overlayX, overlayY }];\n\n    if (this.popover.position[0] === 'above' || this.popover.position[0] === 'below') {\n      positions = [\n        { originX, originY, overlayX, overlayY, offsetY },\n        { originX: origin2ndX, originY, overlayX: origin2ndX, overlayY, offsetY },\n        { originX: origin3rdX, originY, overlayX: origin3rdX, overlayY, offsetY },\n        {\n          originX,\n          originY: originFallbackY,\n          overlayX,\n          overlayY: overlayFallbackY,\n          offsetY: -offsetY,\n        },\n        {\n          originX: origin2ndX,\n          originY: originFallbackY,\n          overlayX: origin2ndX,\n          overlayY: overlayFallbackY,\n          offsetY: -offsetY,\n        },\n        {\n          originX: origin3rdX,\n          originY: originFallbackY,\n          overlayX: origin3rdX,\n          overlayY: overlayFallbackY,\n          offsetY: -offsetY,\n        },\n      ];\n    }\n\n    if (this.popover.position[0] === 'before' || this.popover.position[0] === 'after') {\n      positions = [\n        { originX, originY, overlayX, overlayY, offsetX },\n        { originX, originY: origin2ndY, overlayX, overlayY: origin2ndY, offsetX },\n        { originX, originY: origin3rdY, overlayX, overlayY: origin3rdY, offsetX },\n        {\n          originX: originFallbackX,\n          originY,\n          overlayX: overlayFallbackX,\n          overlayY,\n          offsetX: -offsetX,\n        },\n        {\n          originX: originFallbackX,\n          originY: origin2ndY,\n          overlayX: overlayFallbackX,\n          overlayY: origin2ndY,\n          offsetX: -offsetX,\n        },\n        {\n          originX: originFallbackX,\n          originY: origin3rdY,\n          overlayX: overlayFallbackX,\n          overlayY: origin3rdY,\n          offsetX: -offsetX,\n        },\n      ];\n    }\n\n    positionStrategy\n      .withPositions(positions)\n      .withDefaultOffsetX(offsetX)\n      .withDefaultOffsetY(offsetY);\n  }\n\n  /** Returns a stream that emits whenever an action that should close the popover occurs. */\n  private _popoverClosingActions() {\n    const backdrop =\n      this.popover.triggerEvent === 'click' && this.popover.closeOnBackdropClick === true\n        ? this._overlayRef!.backdropClick()\n        : observableOf();\n    const detachments = this._overlayRef!.detachments();\n    return merge(backdrop, detachments);\n  }\n\n  /** Gets the portal that should be attached to the overlay. */\n  private _getPortal(): TemplatePortal {\n    // Note that we can avoid this check by keeping the portal on the popover panel.\n    // While it would be cleaner, we'd have to introduce another required method on\n    // `MtxPopoverPanel`, making it harder to consume.\n    if (!this._portal || this._portal.templateRef !== this.popover.templateRef) {\n      this._portal = new TemplatePortal(this.popover.templateRef, this._viewContainerRef);\n    }\n\n    return this._portal;\n  }\n}\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n  selector: 'mtx-popover-target, [mtxPopoverTarget]',\n  exportAs: 'mtxPopoverTarget',\n  standalone: true,\n})\nexport class MtxPopoverTarget {\n  constructor(public elementRef: ElementRef) {}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { A11yModule } from '@angular/cdk/a11y';\n\nimport { MtxPopover } from './popover';\nimport { MtxPopoverTrigger, MTX_POPOVER_SCROLL_STRATEGY_FACTORY_PROVIDER } from './popover-trigger';\nimport { MtxPopoverTarget } from './popover-target';\nimport { MtxPopoverContent } from './popover-content';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    OverlayModule,\n    A11yModule,\n    MtxPopover,\n    MtxPopoverTrigger,\n    MtxPopoverTarget,\n    MtxPopoverContent,\n  ],\n  exports: [MtxPopover, MtxPopoverTrigger, MtxPopoverTarget, MtxPopoverContent],\n  providers: [MTX_POPOVER_SCROLL_STRATEGY_FACTORY_PROVIDER],\n})\nexport class MtxPopoverModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["observableOf"],"mappings":"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"}