{"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})\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 { Direction } from '@angular/cdk/bidi';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\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} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { transformPopover } from './popover-animations';\nimport { MtxPopoverContent, MTX_POPOVER_CONTENT } 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  styleUrls: ['./popover.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  animations: [transformPopover],\n  exportAs: 'mtxPopover',\n})\nexport class MtxPopover implements MtxPopoverPanel, OnInit, OnDestroy {\n  private _triggerEvent = this._defaultOptions.triggerEvent ?? 'hover';\n  private _enterDelay = this._defaultOptions.enterDelay ?? 100;\n  private _leaveDelay = this._defaultOptions.leaveDelay ?? 100;\n  private _position = this._defaultOptions.position ?? ['below', 'after'];\n  private _panelOffsetX = this._defaultOptions.xOffset ?? 0;\n  private _panelOffsetY = this._defaultOptions.yOffset ?? 0;\n  private _arrowWidth = this._defaultOptions.arrowWidth ?? 16;\n  private _arrowHeight = this._defaultOptions.arrowHeight ?? 16;\n  private _arrowOffsetX = this._defaultOptions.arrowOffsetX ?? 20;\n  private _arrowOffsetY = this._defaultOptions.arrowOffsetY ?? 20;\n  private _closeOnPanelClick = this._defaultOptions.closeOnPanelClick ?? false;\n  private _closeOnBackdropClick = this._defaultOptions.closeOnBackdropClick ?? true;\n  private _focusTrapEnabled = this._defaultOptions.focusTrapEnabled ?? false;\n  private _focusTrapAutoCaptureEnabled = this._defaultOptions.focusTrapAutoCaptureEnabled ?? false;\n  private _hasBackdrop = this._defaultOptions.hasBackdrop;\n  private _elevation = this._defaultOptions.elevation ?? 8;\n\n  private _previousElevation?: string;\n  private _elevationPrefix = 'mat-elevation-z';\n\n  /** Config object to be passed into the popover's ngClass. */\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 ngStyle */\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()\n  get triggerEvent(): MtxPopoverTriggerEvent {\n    return this._triggerEvent;\n  }\n  set triggerEvent(value: MtxPopoverTriggerEvent) {\n    this._triggerEvent = value;\n  }\n\n  /** Popover's enter delay. */\n  @Input()\n  get enterDelay(): number {\n    return this._enterDelay;\n  }\n  set enterDelay(value: number) {\n    this._enterDelay = value;\n  }\n\n  /** Popover's leave delay. */\n  @Input()\n  get leaveDelay(): number {\n    return this._leaveDelay;\n  }\n  set leaveDelay(value: number) {\n    this._leaveDelay = value;\n  }\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\n  /** Popover-panel's X offset. */\n  @Input()\n  get xOffset(): number {\n    return this._panelOffsetX;\n  }\n  set xOffset(value: number) {\n    this._panelOffsetX = value;\n  }\n\n  /** Popover-panel's Y offset. */\n  @Input()\n  get yOffset(): number {\n    return this._panelOffsetY;\n  }\n  set yOffset(value: number) {\n    this._panelOffsetY = value;\n  }\n\n  /** Popover-arrow's width. */\n  @Input()\n  get arrowWidth(): number {\n    return this._arrowWidth;\n  }\n  set arrowWidth(value: number) {\n    this._arrowWidth = value;\n  }\n\n  /** Popover-arrow's height. */\n  @Input()\n  get arrowHeight(): number {\n    return this._arrowHeight;\n  }\n  set arrowHeight(value: number) {\n    this._arrowHeight = value;\n  }\n\n  /** Popover-arrow's X offset. */\n  @Input()\n  get arrowOffsetX(): number {\n    return this._arrowOffsetX;\n  }\n  set arrowOffsetX(value: number) {\n    this._arrowOffsetX = value;\n  }\n\n  /** Popover-arrow's Y offset. */\n  @Input()\n  get arrowOffsetY(): number {\n    return this._arrowOffsetY;\n  }\n  set arrowOffsetY(value: number) {\n    this._arrowOffsetY = value;\n  }\n\n  /** Whether popover can be closed when click the popover-panel. */\n  @Input()\n  get closeOnPanelClick(): boolean {\n    return this._closeOnPanelClick;\n  }\n  set closeOnPanelClick(value: boolean) {\n    this._closeOnPanelClick = coerceBooleanProperty(value);\n  }\n\n  /** Whether popover can be closed when click the backdrop. */\n  @Input()\n  get closeOnBackdropClick(): boolean {\n    return this._closeOnBackdropClick;\n  }\n  set closeOnBackdropClick(value: boolean) {\n    this._closeOnBackdropClick = coerceBooleanProperty(value);\n  }\n\n  /** Whether enable focus trap using `cdkTrapFocus`. */\n  @Input()\n  get focusTrapEnabled(): boolean {\n    return this._focusTrapEnabled;\n  }\n  set focusTrapEnabled(value: boolean) {\n    this._focusTrapEnabled = coerceBooleanProperty(value);\n  }\n\n  /** Whether enable focus trap auto capture using `cdkTrapFocusAutoCapture`. */\n  @Input()\n  get focusTrapAutoCaptureEnabled(): boolean {\n    return this._focusTrapAutoCaptureEnabled;\n  }\n  set focusTrapAutoCaptureEnabled(value: boolean) {\n    this._focusTrapAutoCaptureEnabled = coerceBooleanProperty(value);\n  }\n\n  /** Whether the popover has a backdrop. It will always be false if the trigger event is hover. */\n  @Input()\n  get hasBackdrop(): boolean | undefined {\n    return this._hasBackdrop;\n  }\n  set hasBackdrop(value: boolean | undefined) {\n    this._hasBackdrop = coerceBooleanProperty(value);\n  }\n\n  /** Popover-panel's elevation (0~24). */\n  @Input()\n  get elevation(): number {\n    return Math.max(0, Math.min(Math.round(this._elevation), 24));\n  }\n  set elevation(value: number) {\n    this._elevation = value;\n  }\n\n  /**\n   * This method takes classes set on the host md-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    if (classes && classes.length) {\n      this._classList = classes.split(' ').reduce((obj: any, className: string) => {\n        obj[className] = true;\n        return obj;\n      }, {});\n\n      this._elementRef.nativeElement.className = '';\n      this.setPositionClasses();\n    }\n  }\n\n  /**\n   * This method takes classes set on the host md-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 _ngZone: 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    const newElevation = `${this._elevationPrefix}${this.elevation}`;\n\n    if (this._previousElevation) {\n      this._classList[this._previousElevation] = false;\n    }\n\n    this._classList[newElevation] = true;\n    this._previousElevation = newElevation;\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  static ngAcceptInputType_closeOnPanelClick: BooleanInput;\n  static ngAcceptInputType_closeOnBackdropClick: BooleanInput;\n  static ngAcceptInputType_focusTrapEnabled: BooleanInput;\n  static ngAcceptInputType_focusTrapAutoCaptureEnabled: BooleanInput;\n  static ngAcceptInputType_hasBackdrop: BooleanInput;\n}\n","<ng-template>\r\n  <div class=\"mtx-popover-panel\"\r\n       [id]=\"panelId\"\r\n       [ngClass]=\"_classList\"\r\n       (keydown)=\"_handleKeydown($event)\"\r\n       (click)=\"_handleClick()\"\r\n       (mouseover)=\"_handleMouseOver()\"\r\n       (mouseleave)=\"_handleMouseLeave()\"\r\n       [@transformPopover]=\"_panelAnimationState\"\r\n       (@transformPopover.start)=\"_onAnimationStart($event)\"\r\n       (@transformPopover.done)=\"_onAnimationDone($event)\"\r\n       tabindex=\"-1\"\r\n       role=\"dialog\"\r\n       [attr.aria-label]=\"ariaLabel || null\"\r\n       [attr.aria-labelledby]=\"ariaLabelledby || null\"\r\n       [attr.aria-describedby]=\"ariaDescribedby || null\"\r\n       [cdkTrapFocus]=\"focusTrapEnabled\"\r\n       [cdkTrapFocusAutoCapture]=\"focusTrapAutoCaptureEnabled\">\r\n    <div class=\"mtx-popover-content\">\r\n      <ng-content></ng-content>\r\n    </div>\r\n    <div class=\"mtx-popover-direction-arrow\" [ngStyle]=\"arrowStyles\"></div>\r\n  </div>\r\n</ng-template>\r\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} 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\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 || null',\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})\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();\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._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\n      if (popover.lazyContent) {\n        popover.lazyContent.detach();\n      }\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    this._popoverOpen = isOpen;\n    this._popoverOpen ? this.popoverOpened.emit() : this.popoverClosed.emit();\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})\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: [CommonModule, OverlayModule, A11yModule],\n  exports: [MtxPopover, MtxPopoverTrigger, MtxPopoverTarget, MtxPopoverContent],\n  declarations: [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":["i2","observableOf"],"mappings":"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"}