{"version":3,"file":"ncstate-sat-popover.mjs","sources":["../../../src/lib/popover/popover.animations.ts","../../../src/lib/popover/types.ts","../../../src/lib/popover/popover.errors.ts","../../../src/lib/popover/popover-anchoring.service.ts","../../../src/lib/popover/tokens.ts","../../../src/lib/popover/popover.component.ts","../../../src/lib/popover/popover.component.html","../../../src/lib/popover/popover-hover.directive.ts","../../../src/lib/popover/popover.module.ts","../../../src/lib/ncstate-sat-popover.ts"],"sourcesContent":["import { trigger, state, style, animate, transition, AnimationTriggerMetadata } from '@angular/animations';\n\nexport const transformPopover: AnimationTriggerMetadata = trigger('transformPopover', [\n  state('enter', style({ opacity: 1, transform: 'scale(1)' }), { params: { startAtScale: 0.3 } }),\n  state('void, exit', style({ opacity: 0, transform: 'scale({{endAtScale}})' }), { params: { endAtScale: 0.5 } }),\n  transition('* => enter', [\n    style({ opacity: 0, transform: 'scale({{endAtScale}})' }),\n    animate('{{openTransition}}', style({ opacity: 1, transform: 'scale(1)' }))\n  ]),\n  transition('* => void, * => exit', [\n    animate('{{closeTransition}}', style({ opacity: 0, transform: 'scale({{endAtScale}})' }))\n  ])\n]);\n","export type SatPopoverScrollStrategy = 'noop' | 'block' | 'reposition' | 'close';\nexport const VALID_SCROLL: SatPopoverScrollStrategy[] = ['noop', 'block', 'reposition', 'close'];\n\nexport type SatPopoverHorizontalAlign = 'before' | 'start' | 'center' | 'end' | 'after';\nexport const VALID_HORIZ_ALIGN: SatPopoverHorizontalAlign[] = ['before', 'start', 'center', 'end', 'after'];\n\nexport type SatPopoverVerticalAlign = 'above' | 'start' | 'center' | 'end' | 'below';\nexport const VALID_VERT_ALIGN: SatPopoverVerticalAlign[] = ['above', 'start', 'center', 'end', 'below'];\n\nexport interface SatPopoverOpenOptions {\n  /**\n   * Whether the popover should return focus to the previously focused element after\n   * closing. Defaults to true.\n   */\n  restoreFocus?: boolean;\n\n  /** Whether the first focusable element should be focused on open. Defaults to true. */\n  autoFocus?: boolean;\n}\n","import { VALID_HORIZ_ALIGN, VALID_VERT_ALIGN, VALID_SCROLL } from './types';\n\nexport function getUnanchoredPopoverError(): Error {\n  return Error('SatPopover does not have an anchor.');\n}\n\nexport function getInvalidPopoverAnchorError(): Error {\n  return Error('SatPopover#anchor must be an instance of SatPopoverAnchor, ElementRef, or HTMLElement.');\n}\n\nexport function getInvalidPopoverError(): Error {\n  return Error('SatPopoverAnchor#satPopoverAnchor must be an instance of SatPopover.');\n}\n\nexport function getInvalidSatPopoverAnchorError(): Error {\n  return Error(\n    `SatPopoverAnchor must be associated with a ` +\n      `SatPopover component. ` +\n      `Examples: <sat-popover [anchor]=\"satPopoverAnchorTemplateRef\"> or ` +\n      `<button satPopoverAnchor [satPopoverAnchor]=\"satPopoverTemplateRef\">`\n  );\n}\n\nexport function getInvalidHorizontalAlignError(alignment): Error {\n  return Error(generateGenericError('horizontalAlign/xAlign', alignment, VALID_HORIZ_ALIGN));\n}\n\nexport function getInvalidVerticalAlignError(alignment): Error {\n  return Error(generateGenericError('verticalAlign/yAlign', alignment, VALID_VERT_ALIGN));\n}\n\nexport function getInvalidScrollStrategyError(strategy): Error {\n  return Error(generateGenericError('scrollStrategy', strategy, VALID_SCROLL));\n}\n\nfunction generateGenericError(apiName: string, invalid: string | null, valid: string[]): string {\n  return `Invalid ${apiName}: '${invalid}'. Valid options are ${valid.map((v) => `'${v}'`).join(', ')}.`;\n}\n","import { ElementRef, Injectable, NgZone, OnDestroy, ViewContainerRef, inject } from '@angular/core';\nimport {\n  ConnectionPositionPair,\n  FlexibleConnectedPositionStrategy,\n  HorizontalConnectionPos,\n  Overlay,\n  OverlayConfig,\n  OverlayRef,\n  ScrollStrategy,\n  VerticalConnectionPos\n} from '@angular/cdk/overlay';\nimport { Directionality, Direction } from '@angular/cdk/bidi';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Subscription, Subject } from 'rxjs';\nimport { takeUntil, take, filter, tap } from 'rxjs/operators';\n\nimport { SatPopoverComponent } from './popover.component';\nimport {\n  SatPopoverHorizontalAlign,\n  SatPopoverVerticalAlign,\n  SatPopoverScrollStrategy,\n  SatPopoverOpenOptions\n} from './types';\n\n/**\n * Configuration provided by the popover for the anchoring service\n * to build the correct overlay config.\n */\ninterface PopoverConfig {\n  horizontalAlign: SatPopoverHorizontalAlign;\n  verticalAlign: SatPopoverVerticalAlign;\n  hasBackdrop: boolean;\n  backdropClass: string;\n  scrollStrategy: SatPopoverScrollStrategy;\n  forceAlignment: boolean;\n  lockAlignment: boolean;\n  panelClass: string | string[];\n}\n\n@Injectable()\nexport class SatPopoverAnchoringService implements OnDestroy {\n  /** Emits when the popover is opened. */\n  popoverOpened = new Subject<void>();\n\n  /** Emits when the popover is closed. */\n  popoverClosed = new Subject<unknown>();\n\n  /** Reference to the overlay containing the popover component. */\n  _overlayRef: OverlayRef | null = null;\n\n  /** Right-to-left support, if needed */\n  private _dir: Directionality | null = inject(Directionality, { optional: true });\n\n  /** Reference to the target popover. */\n  private _popover!: SatPopoverComponent;\n\n  /** Reference to the view container for the popover template. */\n  private _viewContainerRef!: ViewContainerRef;\n\n  /** Reference to the anchor element. */\n  private _anchor!: HTMLElement;\n\n  /** Reference to a template portal where the overlay will be attached. */\n  private _portal!: TemplatePortal<unknown>;\n\n  /** Single subscription to notifications service events. */\n  private _notificationsSubscription!: Subscription;\n\n  /** Single subscription to position changes. */\n  private _positionChangeSubscription!: Subscription;\n\n  /** Whether the popover is presently open. */\n  private _popoverOpen = false;\n\n  private _ngZone: NgZone = inject(NgZone);\n\n  /** Emits when the service is destroyed. */\n  private _onDestroy = new Subject<void>();\n\n  private _overlay: Overlay = inject(Overlay);\n\n  ngOnDestroy() {\n    // Destroy popover before terminating subscriptions so that any resulting\n    // detachments update 'closed state'\n    this._destroyPopover();\n\n    // Terminate subscriptions\n    if (this._notificationsSubscription) {\n      this._notificationsSubscription.unsubscribe();\n    }\n    if (this._positionChangeSubscription) {\n      this._positionChangeSubscription.unsubscribe();\n    }\n    this._onDestroy.next();\n    this._onDestroy.complete();\n\n    this.popoverOpened.complete();\n    this.popoverClosed.complete();\n  }\n\n  /** Anchor a popover instance to a view and connection element. */\n  anchor(popover: SatPopoverComponent, viewContainerRef: ViewContainerRef, anchor: ElementRef | HTMLElement): void {\n    // If we're just changing the anchor element and the overlayRef already exists,\n    // simply update the existing _overlayRef's anchor.\n    if (this._popover === popover && this._viewContainerRef === viewContainerRef && this._overlayRef) {\n      this._anchor = anchor instanceof ElementRef ? anchor.nativeElement : anchor;\n      const config = this._overlayRef.getConfig();\n      const strategy = config.positionStrategy as FlexibleConnectedPositionStrategy;\n      strategy.setOrigin(this._anchor);\n      this._overlayRef.updatePosition();\n      return;\n    }\n\n    // Destroy any previous popovers\n    this._destroyPopover();\n\n    // Assign local refs\n    this._popover = popover;\n    this._viewContainerRef = viewContainerRef;\n    this._anchor = anchor instanceof ElementRef ? anchor.nativeElement : anchor;\n  }\n\n  /** Gets whether the popover is presently open. */\n  isPopoverOpen(): boolean {\n    return this._popoverOpen;\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(options: SatPopoverOpenOptions = {}): void {\n    if (!this._popoverOpen) {\n      this._applyOpenOptions(options);\n      this._createOverlay();\n      this._subscribeToBackdrop();\n      this._subscribeToEscape();\n      this._subscribeToDetachments();\n      this._saveOpenedState();\n    }\n  }\n\n  /** Closes the popover. */\n  closePopover(value?: unknown): void {\n    if (!this._overlayRef) {\n      return;\n    }\n\n    this._saveClosedState(value);\n    this._overlayRef.detach();\n  }\n\n  /** TODO: implement when the overlay's position can be dynamically changed */\n  repositionPopover(): void {\n    this.updatePopoverConfig();\n  }\n\n  /** TODO: when the overlay's position can be dynamically changed, do not destroy */\n  updatePopoverConfig(): void {\n    this._destroyPopoverOnceClosed();\n  }\n\n  /** Realign the popover to the anchor. */\n  realignPopoverToAnchor(): void {\n    if (!this._overlayRef) {\n      return;\n    }\n\n    const config = this._overlayRef.getConfig();\n    const strategy = config.positionStrategy as FlexibleConnectedPositionStrategy;\n    strategy.reapplyLastPosition();\n  }\n\n  /** Get a reference to the anchor element. */\n  getAnchorElement(): HTMLElement {\n    return this._anchor;\n  }\n\n  /** Apply behavior properties on the popover based on the open options. */\n  private _applyOpenOptions(options: SatPopoverOpenOptions): void {\n    // Only override restoreFocus as `false` if the option is explicitly `false`\n    const restoreFocus = options.restoreFocus !== false;\n    this._popover._restoreFocusOverride = restoreFocus;\n\n    // Only override autoFocus as `false` if the option is explicitly `false`\n    const autoFocus = options.autoFocus !== false;\n    this._popover._autoFocusOverride = autoFocus;\n  }\n\n  /** Create an overlay to be attached to the portal. */\n  private _createOverlay(): OverlayRef {\n    // Create overlay if it doesn't yet exist\n    if (!this._overlayRef) {\n      this._portal = new TemplatePortal(this._popover._templateRef, this._viewContainerRef);\n\n      const popoverConfig: PopoverConfig = {\n        horizontalAlign: this._popover.horizontalAlign,\n        verticalAlign: this._popover.verticalAlign,\n        hasBackdrop: coerceBooleanProperty(this._popover.hasBackdrop),\n        backdropClass: this._popover.backdropClass,\n        scrollStrategy: this._popover.scrollStrategy,\n        forceAlignment: coerceBooleanProperty(this._popover.forceAlignment),\n        lockAlignment: coerceBooleanProperty(this._popover.lockAlignment),\n        panelClass: this._popover.panelClass\n      };\n\n      const overlayConfig = this._getOverlayConfig(popoverConfig, this._anchor);\n\n      this._subscribeToPositionChanges(overlayConfig.positionStrategy as FlexibleConnectedPositionStrategy);\n\n      this._overlayRef = this._overlay.create(overlayConfig);\n    }\n\n    // Actually open the popover\n    this._overlayRef.attach(this._portal);\n    return this._overlayRef;\n  }\n\n  /** Removes the popover from the DOM. Does NOT update open state. */\n  private _destroyPopover(): void {\n    if (this._overlayRef) {\n      this._overlayRef.dispose();\n      this._overlayRef = null;\n    }\n  }\n\n  /**\n   * Destroys the popover immediately if it is closed, or waits until it\n   * has been closed to destroy it.\n   */\n  private _destroyPopoverOnceClosed(): void {\n    if (this.isPopoverOpen() && this._overlayRef) {\n      this._overlayRef\n        .detachments()\n        .pipe(take(1), takeUntil(this._onDestroy))\n        .subscribe(() => this._destroyPopover());\n    } else {\n      this._destroyPopover();\n    }\n  }\n\n  /** Close popover when backdrop is clicked. */\n  private _subscribeToBackdrop(): void {\n    if (!this._overlayRef) {\n      return;\n    }\n\n    this._overlayRef\n      .backdropClick()\n      .pipe(\n        tap(() => this._popover.backdropClicked.emit()),\n        filter(() => this._popover.interactiveClose),\n        takeUntil(this.popoverClosed),\n        takeUntil(this._onDestroy)\n      )\n      .subscribe(() => this.closePopover());\n  }\n\n  /** Close popover when escape keydown event occurs. */\n  private _subscribeToEscape(): void {\n    if (!this._overlayRef) {\n      return;\n    }\n\n    this._overlayRef\n      .keydownEvents()\n      .pipe(\n        tap((event) => this._popover.overlayKeydown.emit(event)),\n        filter((event) => event.keyCode === ESCAPE),\n        filter(() => this._popover.interactiveClose),\n        takeUntil(this.popoverClosed),\n        takeUntil(this._onDestroy)\n      )\n      .subscribe(() => this.closePopover());\n  }\n\n  /** Set state back to closed when detached. */\n  private _subscribeToDetachments(): void {\n    if (!this._overlayRef) {\n      return;\n    }\n\n    this._overlayRef\n      .detachments()\n      .pipe(takeUntil(this._onDestroy))\n      .subscribe(() => this._saveClosedState());\n  }\n\n  /** Save the opened state of the popover and emit. */\n  private _saveOpenedState(): void {\n    if (!this._popoverOpen) {\n      this._popover._state = 'enter';\n      this._popover._open = this._popoverOpen = true;\n\n      this.popoverOpened.next();\n      this._popover.opened.emit();\n    }\n  }\n\n  /** Save the closed state of the popover and emit. */\n  private _saveClosedState(value?: unknown): void {\n    if (this._popoverOpen) {\n      this._popover._open = this._popoverOpen = false;\n\n      this._popover._startExitAnimation();\n      this.popoverClosed.next(value);\n      this._popover.closed.emit(value);\n    }\n  }\n\n  /** Gets the text direction of the containing app. */\n  private _getDirection(): Direction {\n    return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n  }\n\n  /** Create and return a config for creating the overlay. */\n  private _getOverlayConfig(config: PopoverConfig, anchor: HTMLElement): OverlayConfig {\n    return new OverlayConfig({\n      positionStrategy: this._getPositionStrategy(\n        config.horizontalAlign,\n        config.verticalAlign,\n        config.forceAlignment,\n        config.lockAlignment,\n        anchor\n      ),\n      hasBackdrop: config.hasBackdrop,\n      backdropClass: config.backdropClass || 'cdk-overlay-transparent-backdrop',\n      scrollStrategy: this._getScrollStrategyInstance(config.scrollStrategy),\n      direction: this._getDirection(),\n      panelClass: config.panelClass\n    });\n  }\n\n  /**\n   * Listen to changes in the position of the overlay and set the correct alignment classes,\n   * ensuring that the animation origin is correct, even with a fallback position.\n   */\n  private _subscribeToPositionChanges(position: FlexibleConnectedPositionStrategy): void {\n    if (this._positionChangeSubscription) {\n      this._positionChangeSubscription.unsubscribe();\n    }\n\n    this._positionChangeSubscription = position.positionChanges.pipe(takeUntil(this._onDestroy)).subscribe((change) => {\n      // Position changes may occur outside the Angular zone\n      this._ngZone.run(() => {\n        this._popover._setAlignmentClasses(\n          getHorizontalPopoverAlignment(change.connectionPair.overlayX),\n          getVerticalPopoverAlignment(change.connectionPair.overlayY)\n        );\n      });\n    });\n  }\n\n  /** Map a scroll strategy string type to an instance of a scroll strategy. */\n  private _getScrollStrategyInstance(strategy: SatPopoverScrollStrategy): ScrollStrategy {\n    switch (strategy) {\n      case 'block':\n        return this._overlay.scrollStrategies.block();\n      case 'reposition':\n        return this._overlay.scrollStrategies.reposition();\n      case 'close':\n        return this._overlay.scrollStrategies.close();\n      case 'noop':\n      default:\n        return this._overlay.scrollStrategies.noop();\n    }\n  }\n\n  /** Create and return a position strategy based on config provided to the component instance. */\n  private _getPositionStrategy(\n    horizontalTarget: SatPopoverHorizontalAlign,\n    verticalTarget: SatPopoverVerticalAlign,\n    forceAlignment: boolean,\n    lockAlignment: boolean,\n    anchor: HTMLElement\n  ): FlexibleConnectedPositionStrategy {\n    // Attach the overlay at the preferred position\n    const targetPosition = getPosition(horizontalTarget, verticalTarget);\n    const positions = [targetPosition];\n\n    const strategy = this._overlay\n      .position()\n      .flexibleConnectedTo(anchor)\n      .withFlexibleDimensions(false)\n      .withPush(false)\n      .withViewportMargin(0)\n      .withLockedPosition(lockAlignment);\n\n    // Unless the alignment is forced, add fallbacks based on the preferred positions\n    if (!forceAlignment) {\n      const fallbacks = this._getFallbacks(horizontalTarget, verticalTarget);\n      positions.push(...fallbacks);\n    }\n\n    return strategy.withPositions(positions);\n  }\n\n  /** Get fallback positions based around target alignments. */\n  private _getFallbacks(\n    hTarget: SatPopoverHorizontalAlign,\n    vTarget: SatPopoverVerticalAlign\n  ): ConnectionPositionPair[] {\n    // Determine if the target alignments overlap the anchor\n    const horizontalOverlapAllowed = hTarget !== 'before' && hTarget !== 'after';\n    const verticalOverlapAllowed = vTarget !== 'above' && vTarget !== 'below';\n\n    // If a target alignment doesn't cover the anchor, don't let any of the fallback alignments\n    // cover the anchor\n    const possibleHorizontalAlignments: SatPopoverHorizontalAlign[] = horizontalOverlapAllowed\n      ? ['before', 'start', 'center', 'end', 'after']\n      : ['before', 'after'];\n    const possibleVerticalAlignments: SatPopoverVerticalAlign[] = verticalOverlapAllowed\n      ? ['above', 'start', 'center', 'end', 'below']\n      : ['above', 'below'];\n\n    // Create fallbacks for each allowed prioritized fallback alignment combo\n    const fallbacks: ConnectionPositionPair[] = [];\n    prioritizeAroundTarget(hTarget, possibleHorizontalAlignments).forEach((h) => {\n      prioritizeAroundTarget(vTarget, possibleVerticalAlignments).forEach((v) => {\n        fallbacks.push(getPosition(h, v));\n      });\n    });\n\n    // Remove the first item since it will be the target alignment and isn't considered a fallback\n    return fallbacks.slice(1, fallbacks.length);\n  }\n}\n\n/** Helper function to get a cdk position pair from SatPopover alignments. */\nfunction getPosition(h: SatPopoverHorizontalAlign, v: SatPopoverVerticalAlign): ConnectionPositionPair {\n  const { originX, overlayX } = getHorizontalConnectionPosPair(h);\n  const { originY, overlayY } = getVerticalConnectionPosPair(v);\n  return new ConnectionPositionPair({ originX, originY }, { overlayX, overlayY });\n}\n\n/** Helper function to convert an overlay connection position to equivalent popover alignment. */\nfunction getHorizontalPopoverAlignment(h: HorizontalConnectionPos): SatPopoverHorizontalAlign {\n  if (h === 'start') {\n    return 'after';\n  }\n\n  if (h === 'end') {\n    return 'before';\n  }\n\n  return 'center';\n}\n\n/** Helper function to convert an overlay connection position to equivalent popover alignment. */\nfunction getVerticalPopoverAlignment(v: VerticalConnectionPos): SatPopoverVerticalAlign {\n  if (v === 'top') {\n    return 'below';\n  }\n\n  if (v === 'bottom') {\n    return 'above';\n  }\n\n  return 'center';\n}\n\n/** Helper function to convert alignment to origin/overlay position pair. */\nfunction getHorizontalConnectionPosPair(h: SatPopoverHorizontalAlign): {\n  originX: HorizontalConnectionPos;\n  overlayX: HorizontalConnectionPos;\n} {\n  switch (h) {\n    case 'before':\n      return { originX: 'start', overlayX: 'end' };\n    case 'start':\n      return { originX: 'start', overlayX: 'start' };\n    case 'end':\n      return { originX: 'end', overlayX: 'end' };\n    case 'after':\n      return { originX: 'end', overlayX: 'start' };\n    default:\n      return { originX: 'center', overlayX: 'center' };\n  }\n}\n\n/** Helper function to convert alignment to origin/overlay position pair. */\nfunction getVerticalConnectionPosPair(v: SatPopoverVerticalAlign): {\n  originY: VerticalConnectionPos;\n  overlayY: VerticalConnectionPos;\n} {\n  switch (v) {\n    case 'above':\n      return { originY: 'top', overlayY: 'bottom' };\n    case 'start':\n      return { originY: 'top', overlayY: 'top' };\n    case 'end':\n      return { originY: 'bottom', overlayY: 'bottom' };\n    case 'below':\n      return { originY: 'bottom', overlayY: 'top' };\n    default:\n      return { originY: 'center', overlayY: 'center' };\n  }\n}\n\n/**\n * Helper function that takes an ordered array options and returns a reorderded\n * array around the target item. e.g.:\n *\n * target: 3; options: [1, 2, 3, 4, 5, 6, 7];\n *\n * return: [3, 4, 2, 5, 1, 6, 7]\n */\nfunction prioritizeAroundTarget<T>(target: T, options: T[]): T[] {\n  const targetIndex = options.indexOf(target);\n\n  // Set the first item to be the target\n  const reordered = [target];\n\n  // Make left and right stacks where the highest priority item is last\n  const left = options.slice(0, targetIndex);\n  const right = options.slice(targetIndex + 1, options.length).reverse();\n\n  // Alternate between stacks until one is empty\n  while (left.length && right.length) {\n    reordered.push(right.pop()!);\n    reordered.push(left.pop()!);\n  }\n\n  // Flush out right side\n  while (right.length) {\n    reordered.push(right.pop()!);\n  }\n\n  // Flush out left side\n  while (left.length) {\n    reordered.push(left.pop()!);\n  }\n\n  return reordered;\n}\n","import { InjectionToken } from '@angular/core';\n\n// See http://cubic-bezier.com/#.25,.8,.25,1 for reference.\n// const DEFAULT_TRANSITION = '200ms cubic-bezier(0.25, 0.8, 0.25, 1)';\nexport const DEFAULT_TRANSITION = new InjectionToken<string>('DefaultTransition');\n","import {\n  inject,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  ViewChild,\n  ViewEncapsulation,\n  TemplateRef,\n  OnInit,\n  Output,\n  Directive,\n  ViewContainerRef,\n  AfterViewInit,\n  DOCUMENT\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ConfigurableFocusTrap, ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty, coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\n\nimport { transformPopover } from './popover.animations';\nimport {\n  getUnanchoredPopoverError,\n  getInvalidHorizontalAlignError,\n  getInvalidVerticalAlignError,\n  getInvalidScrollStrategyError,\n  getInvalidPopoverAnchorError,\n  getInvalidSatPopoverAnchorError,\n  getInvalidPopoverError\n} from './popover.errors';\nimport {\n  SatPopoverScrollStrategy,\n  SatPopoverHorizontalAlign,\n  SatPopoverVerticalAlign,\n  VALID_SCROLL,\n  VALID_HORIZ_ALIGN,\n  VALID_VERT_ALIGN,\n  SatPopoverOpenOptions\n} from './types';\nimport { SatPopoverAnchoringService } from './popover-anchoring.service';\nimport { DEFAULT_TRANSITION } from './tokens';\n\nconst DEFAULT_OPEN_ANIMATION_START_SCALE = 0.3;\nconst DEFAULT_CLOSE_ANIMATION_END_SCALE = 0.5;\n\n@Directive({\n  selector: '[satPopoverAnchor]',\n  exportAs: 'satPopoverAnchor'\n})\nexport class SatPopoverAnchorDirective implements AfterViewInit {\n  elementRef: ElementRef = inject(ElementRef);\n  viewContainerRef: ViewContainerRef = inject(ViewContainerRef);\n\n  @Input('satPopoverAnchor')\n  get popover() {\n    return this._popover;\n  }\n  set popover(val: SatPopoverComponent) {\n    if (val instanceof SatPopoverComponent) {\n      val.anchor = this;\n    } else {\n      // when a directive is added with no arguments,\n      // angular assigns `''` as the argument\n      if (val !== '') {\n        throw getInvalidPopoverError();\n      }\n    }\n  }\n\n  /** @internal */\n  _popover!: SatPopoverComponent;\n\n  ngAfterViewInit() {\n    if (!this.popover) {\n      throw getInvalidSatPopoverAnchorError();\n    }\n  }\n}\n\n@Component({\n  animations: [transformPopover],\n  encapsulation: ViewEncapsulation.None,\n  imports: [CommonModule],\n  providers: [SatPopoverAnchoringService],\n  selector: 'sat-popover',\n  styleUrls: ['./popover.component.scss'],\n  templateUrl: './popover.component.html'\n})\nexport class SatPopoverComponent implements OnInit {\n  /** Anchor element. */\n  @Input()\n  get anchor() {\n    return this._anchor;\n  }\n  set anchor(val: SatPopoverAnchorDirective | ElementRef<HTMLElement> | HTMLElement) {\n    if (val instanceof SatPopoverAnchorDirective) {\n      val._popover = this;\n      this._anchoringService.anchor(this, val.viewContainerRef, val.elementRef);\n      this._anchor = val;\n    } else if (val instanceof ElementRef || val instanceof HTMLElement) {\n      this._anchoringService.anchor(this, this._viewContainerRef, val);\n      this._anchor = val;\n    } else if (val) {\n      throw getInvalidPopoverAnchorError();\n    }\n  }\n  private _anchor!: SatPopoverAnchorDirective | ElementRef<HTMLElement> | HTMLElement;\n\n  /** Alignment of the popover on the horizontal axis. */\n  @Input()\n  get horizontalAlign() {\n    return this._horizontalAlign;\n  }\n  set horizontalAlign(val: SatPopoverHorizontalAlign) {\n    this._validateHorizontalAlign(val);\n    if (this._horizontalAlign !== val) {\n      this._horizontalAlign = val;\n      this._anchoringService.repositionPopover();\n    }\n  }\n  private _horizontalAlign: SatPopoverHorizontalAlign = 'center';\n\n  /** Alignment of the popover on the x axis. Alias for `horizontalAlign`. */\n  @Input()\n  get xAlign() {\n    return this.horizontalAlign;\n  }\n  set xAlign(val: SatPopoverHorizontalAlign) {\n    this.horizontalAlign = val;\n  }\n\n  /** Alignment of the popover on the vertical axis. */\n  @Input()\n  get verticalAlign() {\n    return this._verticalAlign;\n  }\n  set verticalAlign(val: SatPopoverVerticalAlign) {\n    this._validateVerticalAlign(val);\n    if (this._verticalAlign !== val) {\n      this._verticalAlign = val;\n      this._anchoringService.repositionPopover();\n    }\n  }\n  private _verticalAlign: SatPopoverVerticalAlign = 'center';\n\n  /** Alignment of the popover on the y axis. Alias for `verticalAlign`. */\n  @Input()\n  get yAlign() {\n    return this.verticalAlign;\n  }\n  set yAlign(val: SatPopoverVerticalAlign) {\n    this.verticalAlign = val;\n  }\n\n  /** Whether the popover always opens with the specified alignment. */\n  @Input()\n  get forceAlignment() {\n    return this._forceAlignment;\n  }\n  set forceAlignment(val: BooleanInput) {\n    const coercedVal = coerceBooleanProperty(val);\n    if (this._forceAlignment !== coercedVal) {\n      this._forceAlignment = coercedVal;\n      this._anchoringService.repositionPopover();\n    }\n  }\n  private _forceAlignment = false;\n\n  /**\n   * Whether the popover's alignment is locked after opening. This prevents the popover\n   * from changing its alignement when scrolling or changing the size of the viewport.\n   */\n  @Input()\n  get lockAlignment() {\n    return this._lockAlignment;\n  }\n  set lockAlignment(val: BooleanInput) {\n    const coercedVal = coerceBooleanProperty(val);\n    if (this._lockAlignment !== coercedVal) {\n      this._lockAlignment = coerceBooleanProperty(val);\n      this._anchoringService.repositionPopover();\n    }\n  }\n  private _lockAlignment = false;\n\n  /** Whether the first focusable element should be focused on open. */\n  @Input()\n  get autoFocus() {\n    return this._autoFocus && this._autoFocusOverride;\n  }\n  set autoFocus(val: BooleanInput) {\n    this._autoFocus = coerceBooleanProperty(val);\n  }\n  private _autoFocus = true;\n  _autoFocusOverride = true;\n\n  /** Whether the popover should return focus to the previously focused element after closing. */\n  @Input()\n  get restoreFocus() {\n    return this._restoreFocus && this._restoreFocusOverride;\n  }\n  set restoreFocus(val: BooleanInput) {\n    this._restoreFocus = coerceBooleanProperty(val);\n  }\n  private _restoreFocus = true;\n  _restoreFocusOverride = true;\n\n  /** How the popover should handle scrolling. */\n  @Input()\n  get scrollStrategy() {\n    return this._scrollStrategy;\n  }\n  set scrollStrategy(val: SatPopoverScrollStrategy) {\n    this._validateScrollStrategy(val);\n    if (this._scrollStrategy !== val) {\n      this._scrollStrategy = val;\n      this._anchoringService.updatePopoverConfig();\n    }\n  }\n  private _scrollStrategy: SatPopoverScrollStrategy = 'reposition';\n\n  /** Whether the popover should have a backdrop (includes closing on click). */\n  @Input()\n  get hasBackdrop() {\n    return this._hasBackdrop;\n  }\n  set hasBackdrop(val: BooleanInput) {\n    this._hasBackdrop = coerceBooleanProperty(val);\n  }\n  private _hasBackdrop = false;\n\n  /** Whether the popover should close when the user clicks the backdrop or presses ESC. */\n  @Input()\n  get interactiveClose(): boolean {\n    return this._interactiveClose;\n  }\n  set interactiveClose(val: BooleanInput) {\n    this._interactiveClose = coerceBooleanProperty(val);\n  }\n  private _interactiveClose = true;\n\n  /** Custom transition to use while opening. */\n  @Input()\n  get openTransition() {\n    return this._openTransition;\n  }\n  set openTransition(val: string) {\n    if (val) {\n      this._openTransition = val;\n    }\n  }\n  private _openTransition: string = inject(DEFAULT_TRANSITION);\n\n  /** Custom transition to use while closing. */\n  @Input()\n  get closeTransition() {\n    return this._closeTransition;\n  }\n  set closeTransition(val: string) {\n    if (val) {\n      this._closeTransition = val;\n    }\n  }\n  private _closeTransition: string = inject(DEFAULT_TRANSITION);\n\n  /** Scale value at the start of the :enter animation. */\n  @Input()\n  get openAnimationStartAtScale() {\n    return this._openAnimationStartAtScale;\n  }\n  set openAnimationStartAtScale(val: NumberInput) {\n    const coercedVal = coerceNumberProperty(val);\n    if (!isNaN(coercedVal)) {\n      this._openAnimationStartAtScale = coercedVal;\n    }\n  }\n  private _openAnimationStartAtScale = DEFAULT_OPEN_ANIMATION_START_SCALE;\n\n  /** Scale value at the end of the :leave animation */\n  @Input()\n  get closeAnimationEndAtScale() {\n    return this._closeAnimationEndAtScale;\n  }\n  set closeAnimationEndAtScale(val: NumberInput) {\n    const coercedVal = coerceNumberProperty(val);\n    if (!isNaN(coercedVal)) {\n      this._closeAnimationEndAtScale = coercedVal;\n    }\n  }\n  private _closeAnimationEndAtScale = DEFAULT_CLOSE_ANIMATION_END_SCALE;\n\n  /** Optional backdrop class. */\n  @Input() backdropClass = '';\n\n  /** Optional custom class to add to the overlay pane. */\n  @Input() panelClass: string | string[] = '';\n\n  /** Emits when the popover is opened. */\n  @Output() opened = new EventEmitter<void>();\n\n  /** Emits when the popover is closed. */\n  @Output() closed = new EventEmitter<unknown | void>();\n\n  /** Emits when the popover has finished opening. */\n  @Output() afterOpen = new EventEmitter<void>();\n\n  /** Emits when the popover has finished closing. */\n  @Output() afterClose = new EventEmitter<void>();\n\n  /** Emits when the backdrop is clicked. */\n  @Output() backdropClicked = new EventEmitter<void>();\n\n  /** Emits when a keydown event is targeted to this popover's overlay. */\n  @Output() overlayKeydown = new EventEmitter<KeyboardEvent>();\n\n  /** Reference to template so it can be placed within a portal. */\n  @ViewChild(TemplateRef, { static: true })\n  _templateRef!: TemplateRef<unknown>;\n\n  /** Classes to be added to the popover for setting the correct transform origin. */\n  _classList: { [className: string]: boolean } = {};\n\n  _defaultTransition: string = inject(DEFAULT_TRANSITION);\n\n  _document = inject(DOCUMENT, { optional: true });\n\n  /** Whether the popover is presently open. */\n  _open = false;\n\n  _state: 'enter' | 'void' | 'exit' = 'enter';\n\n  /** @internal */\n  _anchoringService: SatPopoverAnchoringService = inject(SatPopoverAnchoringService);\n\n  /** Reference to the element to build a focus trap around. */\n  @ViewChild('focusTrapElement')\n  private _focusTrapElement!: ElementRef;\n\n  /** Reference to the element that was focused before opening. */\n  private _previouslyFocusedElement!: HTMLElement | undefined;\n\n  /** Reference to a focus trap around the popover. */\n  private _focusTrap!: ConfigurableFocusTrap | undefined;\n\n  private _focusTrapFactory: ConfigurableFocusTrapFactory = inject(ConfigurableFocusTrapFactory);\n\n  private _viewContainerRef: ViewContainerRef = inject(ViewContainerRef);\n\n  ngOnInit() {\n    this._setAlignmentClasses();\n  }\n\n  /** Open this popover. */\n  open(options: SatPopoverOpenOptions = {}): void {\n    if (this._anchor) {\n      this._anchoringService.openPopover(options);\n      return;\n    }\n\n    throw getUnanchoredPopoverError();\n  }\n\n  /** Close this popover. */\n  close(value?: unknown): void {\n    this._anchoringService.closePopover(value);\n  }\n\n  /** Toggle this popover open or closed. */\n  toggle(): void {\n    this._anchoringService.togglePopover();\n  }\n\n  /** Realign the popover to the anchor. */\n  realign(): void {\n    this._anchoringService.realignPopoverToAnchor();\n  }\n\n  /** Gets whether the popover is presently open. */\n  isOpen(): boolean {\n    return this._open;\n  }\n\n  /** Allows programmatically setting a custom anchor. */\n  setCustomAnchor(viewContainer: ViewContainerRef, el: ElementRef<HTMLElement> | HTMLElement): void {\n    this._anchor = el;\n    this._anchoringService.anchor(this, viewContainer, el);\n  }\n\n  /** Gets an animation config with customized (or default) transition values. */\n  get state() {\n    return this._state;\n  }\n  get params() {\n    return {\n      openTransition: this.openTransition,\n      closeTransition: this.closeTransition,\n      startAtScale: this.openAnimationStartAtScale,\n      endAtScale: this.closeAnimationEndAtScale\n    };\n  }\n\n  /** Callback for when the popover is finished animating in or out. */\n  _onAnimationDone(event: any) {\n    const toState = event?.toState;\n    if (toState === 'enter') {\n      this._trapFocus();\n      this.afterOpen.emit();\n    } else if (toState === 'exit' || toState === 'void') {\n      this._restoreFocusAndDestroyTrap();\n      this.afterClose.emit();\n    }\n  }\n\n  /** Starts the dialog exit animation. */\n  _startExitAnimation(): void {\n    this._state = 'exit';\n  }\n  /** Apply alignment classes based on alignment inputs. */\n  _setAlignmentClasses(horizAlign = this.horizontalAlign, vertAlign = this.verticalAlign) {\n    this._classList['sat-popover-before'] = horizAlign === 'before' || horizAlign === 'end';\n    this._classList['sat-popover-after'] = horizAlign === 'after' || horizAlign === 'start';\n\n    this._classList['sat-popover-above'] = vertAlign === 'above' || vertAlign === 'end';\n    this._classList['sat-popover-below'] = vertAlign === 'below' || vertAlign === 'start';\n\n    this._classList['sat-popover-center'] = horizAlign === 'center' || vertAlign === 'center';\n  }\n\n  /** Move the focus inside the focus trap and remember where to return later. */\n  private _trapFocus(): void {\n    this._savePreviouslyFocusedElement();\n\n    // There won't be a focus trap element if the close animation starts before open finishes\n    if (!this._focusTrapElement) {\n      return;\n    }\n\n    if (!this._focusTrap && this._focusTrapElement) {\n      this._focusTrap = this._focusTrapFactory.create(this._focusTrapElement.nativeElement);\n    }\n\n    if (this.autoFocus) {\n      if (this._focusTrap) {\n        this._focusTrap.focusInitialElementWhenReady();\n      }\n    }\n  }\n\n  /** Restore focus to the element focused before the popover opened. Also destroy trap. */\n  private _restoreFocusAndDestroyTrap(): void {\n    const toFocus = this._previouslyFocusedElement;\n\n    // Must check active element is focusable for IE sake\n    if (toFocus && 'focus' in toFocus && this.restoreFocus) {\n      toFocus.focus();\n    }\n\n    this._previouslyFocusedElement = undefined;\n\n    if (this._focusTrap) {\n      this._focusTrap.destroy();\n      this._focusTrap = undefined;\n    }\n  }\n\n  /** Save a reference to the element focused before the popover was opened. */\n  private _savePreviouslyFocusedElement(): void {\n    if (this._document) {\n      this._previouslyFocusedElement = this._document.activeElement as HTMLElement;\n    }\n  }\n\n  /** Throws an error if the alignment is not a valid horizontalAlign. */\n  private _validateHorizontalAlign(pos: SatPopoverHorizontalAlign): void {\n    if (VALID_HORIZ_ALIGN.indexOf(pos) === -1) {\n      throw getInvalidHorizontalAlignError(pos);\n    }\n  }\n\n  /** Throws an error if the alignment is not a valid verticalAlign. */\n  private _validateVerticalAlign(pos: SatPopoverVerticalAlign): void {\n    if (VALID_VERT_ALIGN.indexOf(pos) === -1) {\n      throw getInvalidVerticalAlignError(pos);\n    }\n  }\n\n  /** Throws an error if the scroll strategy is not a valid strategy. */\n  private _validateScrollStrategy(strategy: SatPopoverScrollStrategy): void {\n    if (VALID_SCROLL.indexOf(strategy) === -1) {\n      throw getInvalidScrollStrategyError(strategy);\n    }\n  }\n}\n","<ng-template>\n  <div\n    class=\"sat-popover-container\"\n    #focusTrapElement\n    [ngClass]=\"_classList\"\n    [@transformPopover]=\"{ value: state, params: params }\"\n    (@transformPopover.done)=\"_onAnimationDone($event)\"\n  >\n    <ng-content></ng-content>\n  </div>\n</ng-template>\n","import { inject, AfterViewInit, Directive, HostListener, Input, OnDestroy } from '@angular/core';\nimport { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport { of, Subject } from 'rxjs';\nimport { delay, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { SatPopoverAnchorDirective } from './popover.component';\n\n@Directive({\n  selector: '[satPopoverHover]'\n})\nexport class SatPopoverHoverDirective implements AfterViewInit, OnDestroy {\n  anchor: SatPopoverAnchorDirective = inject(SatPopoverAnchorDirective);\n\n  /**\n   * Amount of time to delay (ms) after hovering starts before\n   * the popover opens. Defaults to 0ms.\n   */\n  @Input()\n  get satPopoverHover() {\n    return this._satPopoverHover;\n  }\n  set satPopoverHover(val: NumberInput) {\n    this._satPopoverHover = coerceNumberProperty(val);\n  }\n  private _satPopoverHover = 0;\n\n  /** Emits when the directive is destroyed. */\n  private _onDestroy = new Subject<void>();\n\n  /** Emits when the user's mouse enters the element. */\n  private _onMouseEnter = new Subject<void>();\n\n  /** Emits when the user's mouse leaves the element. */\n  private _onMouseLeave = new Subject<void>();\n\n  ngAfterViewInit() {\n    // Whenever the user hovers this host element, delay the configured\n    // amount of time and open the popover. Terminate if the mouse leaves\n    // the host element before the delay is complete.\n    this._onMouseEnter\n      .pipe(\n        switchMap(() => {\n          return of(null).pipe(delay(this._satPopoverHover || 0), takeUntil(this._onMouseLeave));\n        }),\n        takeUntil(this._onDestroy)\n      )\n      .subscribe(() => this.anchor.popover.open());\n  }\n\n  ngOnDestroy() {\n    this._onDestroy.next();\n    this._onDestroy.complete();\n  }\n\n  @HostListener('mouseenter')\n  showPopover() {\n    this._onMouseEnter.next();\n  }\n\n  @HostListener('mouseleave')\n  closePopover() {\n    this._onMouseLeave.next();\n    this.anchor.popover.close();\n  }\n}\n","import { NgModule, provideZoneChangeDetection } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { BidiModule } from '@angular/cdk/bidi';\n\nimport { SatPopoverComponent, SatPopoverAnchorDirective } from './popover.component';\nimport { SatPopoverHoverDirective } from './popover-hover.directive';\nimport { DEFAULT_TRANSITION } from './tokens';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    OverlayModule,\n    A11yModule,\n    BidiModule,\n    SatPopoverComponent,\n    SatPopoverAnchorDirective,\n    SatPopoverHoverDirective\n  ],\n  providers: [\n    // See http://cubic-bezier.com/#.25,.8,.25,1 for reference.\n    { provide: DEFAULT_TRANSITION, useValue: '200ms cubic-bezier(0.25, 0.8, 0.25, 1)' },\n    provideZoneChangeDetection()\n  ],\n  exports: [SatPopoverComponent, SatPopoverAnchorDirective, SatPopoverHoverDirective, BidiModule]\n})\nexport class SatPopoverModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}