{"version":3,"file":"_tooltip-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/tooltip/tooltip.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/tooltip/tooltip.html"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\nimport {takeUntil} from 'rxjs/operators';\nimport {\n  BooleanInput,\n  coerceBooleanProperty,\n  coerceNumberProperty,\n  NumberInput,\n} from '@angular/cdk/coercion';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Directive,\n  ElementRef,\n  InjectionToken,\n  Input,\n  NgZone,\n  OnDestroy,\n  ViewChild,\n  ViewContainerRef,\n  ViewEncapsulation,\n  inject,\n  afterNextRender,\n  Injector,\n  DOCUMENT,\n  Renderer2,\n} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\nimport {AriaDescriber, FocusMonitor} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n  ConnectedPosition,\n  ConnectionPositionPair,\n  createFlexibleConnectedPositionStrategy,\n  createOverlayRef,\n  createRepositionScrollStrategy,\n  FlexibleConnectedPositionStrategy,\n  HorizontalConnectionPos,\n  OriginConnectionPosition,\n  OverlayConnectionPosition,\n  OverlayRef,\n  ScrollDispatcher,\n  ScrollStrategy,\n  VerticalConnectionPos,\n} from '@angular/cdk/overlay';\nimport {ComponentPortal} from '@angular/cdk/portal';\nimport {MediaMatcher} from '@angular/cdk/layout';\nimport {Observable, Subject} from 'rxjs';\nimport {_animationsDisabled} from '../core';\n\n/** Possible positions for a tooltip. */\nexport type TooltipPosition = 'left' | 'right' | 'above' | 'below' | 'before' | 'after';\n\n/**\n * Options for how the tooltip trigger should handle touch gestures.\n * See `MatTooltip.touchGestures` for more information.\n */\nexport type TooltipTouchGestures = 'auto' | 'on' | 'off';\n\n/** Possible visibility states of a tooltip. */\nexport type TooltipVisibility = 'initial' | 'visible' | 'hidden';\n\n/** Time in ms to throttle repositioning after scroll events. */\nexport const SCROLL_THROTTLE_MS = 20;\n\n/**\n * Creates an error to be thrown if the user supplied an invalid tooltip position.\n * @docs-private\n */\nexport function getMatTooltipInvalidPositionError(position: string) {\n  return Error(`Tooltip position \"${position}\" is invalid.`);\n}\n\n/** Injection token that determines the scroll handling while a tooltip is visible. */\nexport const MAT_TOOLTIP_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n  'mat-tooltip-scroll-strategy',\n  {\n    providedIn: 'root',\n    factory: () => {\n      const injector = inject(Injector);\n      return () => createRepositionScrollStrategy(injector, {scrollThrottle: SCROLL_THROTTLE_MS});\n    },\n  },\n);\n\n/** Injection token to be used to override the default options for `matTooltip`. */\nexport const MAT_TOOLTIP_DEFAULT_OPTIONS = new InjectionToken<MatTooltipDefaultOptions>(\n  'mat-tooltip-default-options',\n  {\n    providedIn: 'root',\n    factory: () => ({\n      showDelay: 0,\n      hideDelay: 0,\n      touchendHideDelay: 1500,\n    }),\n  },\n);\n\n/** Default `matTooltip` options that can be overridden. */\nexport interface MatTooltipDefaultOptions {\n  /** Default delay when the tooltip is shown. */\n  showDelay: number;\n\n  /** Default delay when the tooltip is hidden. */\n  hideDelay: number;\n\n  /** Default delay when hiding the tooltip on a touch device. */\n  touchendHideDelay: number;\n\n  /** Time between the user putting the pointer on a tooltip trigger and the long press event being fired on a touch device. */\n  touchLongPressShowDelay?: number;\n\n  /** Default touch gesture handling for tooltips. */\n  touchGestures?: TooltipTouchGestures;\n\n  /** Default position for tooltips. */\n  position?: TooltipPosition;\n\n  /**\n   * Default value for whether tooltips should be positioned near the click or touch origin\n   * instead of outside the element bounding box.\n   */\n  positionAtOrigin?: boolean;\n\n  /** Disables the ability for the user to interact with the tooltip element. */\n  disableTooltipInteractivity?: boolean;\n\n  /**\n   * Default classes to be applied to the tooltip. These default classes will not be applied if\n   * `tooltipClass` is defined directly on the tooltip element, as it will override the default.\n   */\n  tooltipClass?: string | string[];\n\n  /**\n   * By default the tooltip attempts to detect whether the user's device is able to hover by\n   * consulting the `Platform` provider that was created a long time ago and is based on\n   * some data points that may not be entirely accurate anymore (e.g. user agent string and\n   * Android/iOS-specific APIs), however changing them will break existing users. You can use this\n   * config property to opt into a more modern detection mechanism.\n   *\n   * The supported values include:\n   *\n   * - `false` - Default value. Detection is based on the `Platform` provider.\n   * - `true` - The tooltip will use the `any-hover` media query for more accurate detection.\n   * Note that this may break existing unit tests running in a headless browser.\n   * - `() => boolean` - If the automatic detection doesn't work properly in your case (e.g. the\n   * `any-hover` media query isn't supported) and you're able to detect more accurately, you can\n   * pass in a function that will be used for detection instead. It should return `true` if the\n   * device **has the ability to hover**, or `false` if it cannot.\n   */\n  detectHoverCapability?: boolean | (() => boolean);\n}\n\n/**\n * CSS class that will be attached to the overlay panel.\n * @deprecated\n * @breaking-change 13.0.0 remove this variable\n */\nexport const TOOLTIP_PANEL_CLASS = 'mat-mdc-tooltip-panel';\n\nconst PANEL_CLASS = 'tooltip-panel';\n\n/** Options used to bind passive event listeners. */\nconst passiveListenerOptions = {passive: true};\n\n// These constants were taken from MDC's `numbers` object. We can't import them from MDC,\n// because they have some top-level references to `window` which break during SSR.\nconst MIN_VIEWPORT_TOOLTIP_THRESHOLD = 8;\nconst UNBOUNDED_ANCHOR_GAP = 8;\nconst MIN_HEIGHT = 24;\nconst MAX_WIDTH = 200;\n\n/**\n * Directive that attaches a material design tooltip to the host element. Animates the showing and\n * hiding of a tooltip provided position (defaults to below the element).\n *\n * https://material.io/design/components/tooltips.html\n */\n@Directive({\n  selector: '[matTooltip]',\n  exportAs: 'matTooltip',\n  host: {\n    'class': 'mat-mdc-tooltip-trigger',\n    '[class.mat-mdc-tooltip-disabled]': 'disabled',\n  },\n})\nexport class MatTooltip implements OnDestroy, AfterViewInit {\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _ngZone = inject(NgZone);\n  private _platform = inject(Platform);\n  private _ariaDescriber = inject(AriaDescriber);\n  private _focusMonitor = inject(FocusMonitor);\n  protected _dir = inject(Directionality);\n  private _injector = inject(Injector);\n  private _viewContainerRef = inject(ViewContainerRef);\n  private _mediaMatcher = inject(MediaMatcher);\n  private _document = inject(DOCUMENT);\n  private _renderer = inject(Renderer2);\n  private _animationsDisabled = _animationsDisabled();\n  private _defaultOptions = inject<MatTooltipDefaultOptions>(MAT_TOOLTIP_DEFAULT_OPTIONS, {\n    optional: true,\n  });\n\n  _overlayRef: OverlayRef | null = null;\n  _tooltipInstance: TooltipComponent | null = null;\n  _overlayPanelClass: string[] | undefined; // Used for styling internally.\n\n  private _portal!: ComponentPortal<TooltipComponent>;\n  private _position: TooltipPosition = 'below';\n  private _positionAtOrigin: boolean = false;\n  private _disabled: boolean = false;\n  private _tooltipClass!: string | string[] | Set<string> | {[key: string]: unknown};\n  private _viewInitialized = false;\n  private _pointerExitEventsInitialized = false;\n  private readonly _tooltipComponent = TooltipComponent;\n  private _viewportMargin = 8;\n  private _currentPosition!: TooltipPosition;\n  private readonly _cssClassPrefix: string = 'mat-mdc';\n  private _ariaDescriptionPending = false;\n  private _dirSubscribed = false;\n\n  /** Allows the user to define the position of the tooltip relative to the parent element */\n  @Input('matTooltipPosition')\n  get position(): TooltipPosition {\n    return this._position;\n  }\n\n  set position(value: TooltipPosition) {\n    if (value !== this._position) {\n      this._position = value;\n\n      if (this._overlayRef) {\n        this._updatePosition(this._overlayRef);\n        this._tooltipInstance?.show(0);\n        this._overlayRef.updatePosition();\n      }\n    }\n  }\n\n  /**\n   * Whether tooltip should be relative to the click or touch origin\n   * instead of outside the element bounding box.\n   */\n  @Input('matTooltipPositionAtOrigin')\n  get positionAtOrigin(): boolean {\n    return this._positionAtOrigin;\n  }\n\n  set positionAtOrigin(value: BooleanInput) {\n    this._positionAtOrigin = coerceBooleanProperty(value);\n    this._detach();\n    this._overlayRef = null;\n  }\n\n  /** Disables the display of the tooltip. */\n  @Input('matTooltipDisabled')\n  get disabled(): boolean {\n    return this._disabled;\n  }\n\n  set disabled(value: BooleanInput) {\n    const isDisabled = coerceBooleanProperty(value);\n\n    if (this._disabled !== isDisabled) {\n      this._disabled = isDisabled;\n\n      // If tooltip is disabled, hide immediately.\n      if (isDisabled) {\n        this.hide(0);\n      } else {\n        this._setupPointerEnterEventsIfNeeded();\n      }\n\n      this._syncAriaDescription(this.message);\n    }\n  }\n\n  /** The default delay in ms before showing the tooltip after show is called */\n  @Input('matTooltipShowDelay')\n  get showDelay(): number {\n    return this._showDelay;\n  }\n\n  set showDelay(value: NumberInput) {\n    this._showDelay = coerceNumberProperty(value);\n  }\n\n  private _showDelay!: number;\n\n  /** The default delay in ms before hiding the tooltip after hide is called */\n  @Input('matTooltipHideDelay')\n  get hideDelay(): number {\n    return this._hideDelay;\n  }\n\n  set hideDelay(value: NumberInput) {\n    this._hideDelay = coerceNumberProperty(value);\n\n    if (this._tooltipInstance) {\n      this._tooltipInstance._mouseLeaveHideDelay = this._hideDelay;\n    }\n  }\n\n  private _hideDelay!: number;\n\n  /**\n   * How touch gestures should be handled by the tooltip. On touch devices the tooltip directive\n   * uses a long press gesture to show and hide, however it can conflict with the native browser\n   * gestures. To work around the conflict, Angular Material disables native gestures on the\n   * trigger, but that might not be desirable on particular elements (e.g. inputs and draggable\n   * elements). The different values for this option configure the touch event handling as follows:\n   * - `auto` - Enables touch gestures for all elements, but tries to avoid conflicts with native\n   *   browser gestures on particular elements. In particular, it allows text selection on inputs\n   *   and textareas, and preserves the native browser dragging on elements marked as `draggable`.\n   * - `on` - Enables touch gestures for all elements and disables native\n   *   browser gestures with no exceptions.\n   * - `off` - Disables touch gestures. Note that this will prevent the tooltip from\n   *   showing on touch devices.\n   */\n  @Input('matTooltipTouchGestures') touchGestures: TooltipTouchGestures = 'auto';\n\n  /** The message to be displayed in the tooltip */\n  @Input('matTooltip')\n  get message(): string {\n    return this._message;\n  }\n\n  set message(value: string | number | null | undefined) {\n    const oldMessage = this._message;\n\n    // If the message is not a string (e.g. number), convert it to a string and trim it.\n    // Must convert with `String(value)`, not `${value}`, otherwise Closure Compiler optimises\n    // away the string-conversion: https://github.com/angular/components/issues/20684\n    this._message = value != null ? String(value).trim() : '';\n\n    if (!this._message && this._isTooltipVisible()) {\n      this.hide(0);\n    } else {\n      this._setupPointerEnterEventsIfNeeded();\n      this._updateTooltipMessage();\n    }\n\n    this._syncAriaDescription(oldMessage);\n  }\n\n  private _message = '';\n\n  /** Classes to be passed to the tooltip. Supports the same syntax as `ngClass`. */\n  @Input('matTooltipClass')\n  get tooltipClass() {\n    return this._tooltipClass;\n  }\n\n  set tooltipClass(value: string | string[] | Set<string> | {[key: string]: unknown}) {\n    this._tooltipClass = value;\n    if (this._tooltipInstance) {\n      this._setTooltipClass(this._tooltipClass);\n    }\n  }\n\n  /** Manually-bound passive event listeners. */\n  private readonly _eventCleanups: (() => void)[] = [];\n\n  /** Timer started at the last `touchstart` event. */\n  private _touchstartTimeout: null | ReturnType<typeof setTimeout> = null;\n\n  /** Emits when the component is destroyed. */\n  private readonly _destroyed = new Subject<void>();\n\n  /** Whether ngOnDestroyed has been called. */\n  private _isDestroyed = false;\n\n  constructor(...args: unknown[]);\n\n  constructor() {\n    const defaultOptions = this._defaultOptions;\n\n    if (defaultOptions) {\n      this._showDelay = defaultOptions.showDelay;\n      this._hideDelay = defaultOptions.hideDelay;\n\n      if (defaultOptions.position) {\n        this.position = defaultOptions.position;\n      }\n\n      if (defaultOptions.positionAtOrigin) {\n        this.positionAtOrigin = defaultOptions.positionAtOrigin;\n      }\n\n      if (defaultOptions.touchGestures) {\n        this.touchGestures = defaultOptions.touchGestures;\n      }\n\n      if (defaultOptions.tooltipClass) {\n        this.tooltipClass = defaultOptions.tooltipClass;\n      }\n    }\n\n    this._viewportMargin = MIN_VIEWPORT_TOOLTIP_THRESHOLD;\n  }\n\n  ngAfterViewInit() {\n    // This needs to happen after view init so the initial values for all inputs have been set.\n    this._viewInitialized = true;\n    this._setupPointerEnterEventsIfNeeded();\n\n    this._focusMonitor\n      .monitor(this._elementRef)\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(origin => {\n        // Note that the focus monitor runs outside the Angular zone.\n        if (!origin) {\n          this._ngZone.run(() => this.hide(0));\n        } else if (origin === 'keyboard') {\n          this._ngZone.run(() => this.show());\n        }\n      });\n  }\n\n  /**\n   * Dispose the tooltip when destroyed.\n   */\n  ngOnDestroy() {\n    const nativeElement = this._elementRef.nativeElement;\n\n    // Optimization: Do not call clearTimeout unless there is an active timer.\n    if (this._touchstartTimeout) {\n      clearTimeout(this._touchstartTimeout);\n    }\n\n    if (this._overlayRef) {\n      this._overlayRef.dispose();\n      this._tooltipInstance = null;\n    }\n\n    this._eventCleanups.forEach(cleanup => cleanup());\n    this._eventCleanups.length = 0;\n    this._destroyed.next();\n    this._destroyed.complete();\n    this._isDestroyed = true;\n    this._ariaDescriber.removeDescription(nativeElement, this.message, 'tooltip');\n    this._focusMonitor.stopMonitoring(nativeElement);\n  }\n\n  /** Shows the tooltip after the delay in ms, defaults to tooltip-delay-show or 0ms if no input */\n  show(delay: number = this.showDelay, origin?: {x: number; y: number}): void {\n    if (this.disabled || !this.message || this._isTooltipVisible()) {\n      this._tooltipInstance?._cancelPendingAnimations();\n      return;\n    }\n\n    const overlayRef = this._createOverlay(origin);\n    this._detach();\n    this._portal =\n      this._portal || new ComponentPortal(this._tooltipComponent, this._viewContainerRef);\n    const instance = (this._tooltipInstance = overlayRef.attach(this._portal).instance);\n    instance._triggerElement = this._elementRef.nativeElement;\n    instance._mouseLeaveHideDelay = this._hideDelay;\n    instance\n      .afterHidden()\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(() => this._detach());\n    this._setTooltipClass(this._tooltipClass);\n    this._updateTooltipMessage();\n    instance.show(delay);\n  }\n\n  /** Hides the tooltip after the delay in ms, defaults to tooltip-delay-hide or 0ms if no input */\n  hide(delay: number = this.hideDelay): void {\n    const instance = this._tooltipInstance;\n\n    if (instance) {\n      if (instance.isVisible()) {\n        instance.hide(delay);\n      } else {\n        instance._cancelPendingAnimations();\n        this._detach();\n      }\n    }\n  }\n\n  /** Shows/hides the tooltip */\n  toggle(origin?: {x: number; y: number}): void {\n    this._isTooltipVisible() ? this.hide() : this.show(undefined, origin);\n  }\n\n  /** Returns true if the tooltip is currently visible to the user */\n  _isTooltipVisible(): boolean {\n    return !!this._tooltipInstance && this._tooltipInstance.isVisible();\n  }\n\n  /** Create the overlay config and position strategy */\n  private _createOverlay(origin?: {x: number; y: number}): OverlayRef {\n    if (this._overlayRef) {\n      const existingStrategy = this._overlayRef.getConfig()\n        .positionStrategy as FlexibleConnectedPositionStrategy;\n\n      if ((!this.positionAtOrigin || !origin) && existingStrategy._origin instanceof ElementRef) {\n        return this._overlayRef;\n      }\n\n      this._detach();\n    }\n\n    const scrollableAncestors = this._injector\n      .get(ScrollDispatcher)\n      .getAncestorScrollContainers(this._elementRef);\n\n    const panelClass = `${this._cssClassPrefix}-${PANEL_CLASS}`;\n\n    // Create connected position strategy that listens for scroll events to reposition.\n    const strategy = createFlexibleConnectedPositionStrategy(\n      this._injector,\n      this.positionAtOrigin ? origin || this._elementRef : this._elementRef,\n    )\n      .withTransformOriginOn(`.${this._cssClassPrefix}-tooltip`)\n      .withFlexibleDimensions(false)\n      .withViewportMargin(this._viewportMargin)\n      .withScrollableContainers(scrollableAncestors)\n      .withPopoverLocation('global');\n\n    strategy.positionChanges.pipe(takeUntil(this._destroyed)).subscribe(change => {\n      this._updateCurrentPositionClass(change.connectionPair);\n\n      if (this._tooltipInstance) {\n        if (change.scrollableViewProperties.isOverlayClipped && this._tooltipInstance.isVisible()) {\n          // After position changes occur and the overlay is clipped by\n          // a parent scrollable then close the tooltip.\n          this._ngZone.run(() => this.hide(0));\n        }\n      }\n    });\n\n    this._overlayRef = createOverlayRef(this._injector, {\n      direction: this._dir,\n      positionStrategy: strategy,\n      panelClass: this._overlayPanelClass ? [...this._overlayPanelClass, panelClass] : panelClass,\n      scrollStrategy: this._injector.get(MAT_TOOLTIP_SCROLL_STRATEGY)(),\n      disableAnimations: this._animationsDisabled,\n      eventPredicate: this._overlayEventPredicate,\n    });\n\n    this._updatePosition(this._overlayRef);\n\n    this._overlayRef\n      .detachments()\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(() => this._detach());\n\n    this._overlayRef\n      .outsidePointerEvents()\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(() => this._tooltipInstance?._handleBodyInteraction());\n\n    this._overlayRef\n      .keydownEvents()\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(event => {\n        // Note: we don't check the `keyCode` since it's covered by the `eventPredicate` above.\n        event.preventDefault();\n        event.stopPropagation();\n        this._ngZone.run(() => this.hide(0));\n      });\n\n    if (this._defaultOptions?.disableTooltipInteractivity) {\n      this._overlayRef.addPanelClass(`${this._cssClassPrefix}-tooltip-panel-non-interactive`);\n    }\n\n    if (!this._dirSubscribed) {\n      this._dirSubscribed = true;\n      this._dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => {\n        if (this._overlayRef) {\n          this._updatePosition(this._overlayRef);\n        }\n      });\n    }\n\n    return this._overlayRef;\n  }\n\n  /** Detaches the currently-attached tooltip. */\n  private _detach() {\n    if (this._overlayRef && this._overlayRef.hasAttached()) {\n      this._overlayRef.detach();\n    }\n\n    this._tooltipInstance = null;\n  }\n\n  /** Updates the position of the current tooltip. */\n  private _updatePosition(overlayRef: OverlayRef) {\n    const position = overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy;\n    const origin = this._getOrigin();\n    const overlay = this._getOverlayPosition();\n\n    position.withPositions([\n      this._addOffset({...origin.main, ...overlay.main}),\n      this._addOffset({...origin.fallback, ...overlay.fallback}),\n    ]);\n  }\n\n  /** Adds the configured offset to a position. Used as a hook for child classes. */\n  protected _addOffset(position: ConnectedPosition): ConnectedPosition {\n    const offset = UNBOUNDED_ANCHOR_GAP;\n    const isLtr = !this._dir || this._dir.value == 'ltr';\n\n    if (position.originY === 'top') {\n      position.offsetY = -offset;\n    } else if (position.originY === 'bottom') {\n      position.offsetY = offset;\n    } else if (position.originX === 'start') {\n      position.offsetX = isLtr ? -offset : offset;\n    } else if (position.originX === 'end') {\n      position.offsetX = isLtr ? offset : -offset;\n    }\n\n    return position;\n  }\n\n  /**\n   * Returns the origin position and a fallback position based on the user's position preference.\n   * The fallback position is the inverse of the origin (e.g. `'below' -> 'above'`).\n   */\n  _getOrigin(): {main: OriginConnectionPosition; fallback: OriginConnectionPosition} {\n    const isLtr = !this._dir || this._dir.value == 'ltr';\n    const position = this.position;\n    let originPosition: OriginConnectionPosition;\n\n    if (position == 'above' || position == 'below') {\n      originPosition = {originX: 'center', originY: position == 'above' ? 'top' : 'bottom'};\n    } else if (\n      position == 'before' ||\n      (position == 'left' && isLtr) ||\n      (position == 'right' && !isLtr)\n    ) {\n      originPosition = {originX: 'start', originY: 'center'};\n    } else if (\n      position == 'after' ||\n      (position == 'right' && isLtr) ||\n      (position == 'left' && !isLtr)\n    ) {\n      originPosition = {originX: 'end', originY: 'center'};\n    } else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      throw getMatTooltipInvalidPositionError(position);\n    }\n\n    const {x, y} = this._invertPosition(originPosition!.originX, originPosition!.originY);\n\n    return {\n      main: originPosition!,\n      fallback: {originX: x, originY: y},\n    };\n  }\n\n  /** Returns the overlay position and a fallback position based on the user's preference */\n  _getOverlayPosition(): {main: OverlayConnectionPosition; fallback: OverlayConnectionPosition} {\n    const isLtr = !this._dir || this._dir.value == 'ltr';\n    const position = this.position;\n    let overlayPosition: OverlayConnectionPosition;\n\n    if (position == 'above') {\n      overlayPosition = {overlayX: 'center', overlayY: 'bottom'};\n    } else if (position == 'below') {\n      overlayPosition = {overlayX: 'center', overlayY: 'top'};\n    } else if (\n      position == 'before' ||\n      (position == 'left' && isLtr) ||\n      (position == 'right' && !isLtr)\n    ) {\n      overlayPosition = {overlayX: 'end', overlayY: 'center'};\n    } else if (\n      position == 'after' ||\n      (position == 'right' && isLtr) ||\n      (position == 'left' && !isLtr)\n    ) {\n      overlayPosition = {overlayX: 'start', overlayY: 'center'};\n    } else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      throw getMatTooltipInvalidPositionError(position);\n    }\n\n    const {x, y} = this._invertPosition(overlayPosition!.overlayX, overlayPosition!.overlayY);\n\n    return {\n      main: overlayPosition!,\n      fallback: {overlayX: x, overlayY: y},\n    };\n  }\n\n  /** Updates the tooltip message and repositions the overlay according to the new message length */\n  private _updateTooltipMessage() {\n    // Must wait for the message to be painted to the tooltip so that the overlay can properly\n    // calculate the correct positioning based on the size of the text.\n    if (this._tooltipInstance) {\n      this._tooltipInstance.message = this.message;\n      this._tooltipInstance._markForCheck();\n\n      afterNextRender(\n        () => {\n          if (this._tooltipInstance) {\n            this._overlayRef!.updatePosition();\n          }\n        },\n        {\n          injector: this._injector,\n        },\n      );\n    }\n  }\n\n  /** Updates the tooltip class */\n  private _setTooltipClass(\n    tooltipClass: string | string[] | Set<string> | {[key: string]: unknown},\n  ) {\n    if (this._tooltipInstance) {\n      this._tooltipInstance.tooltipClass =\n        tooltipClass instanceof Set ? Array.from(tooltipClass) : tooltipClass;\n      this._tooltipInstance._markForCheck();\n    }\n  }\n\n  /** Inverts an overlay position. */\n  private _invertPosition(x: HorizontalConnectionPos, y: VerticalConnectionPos) {\n    if (this.position === 'above' || this.position === 'below') {\n      if (y === 'top') {\n        y = 'bottom';\n      } else if (y === 'bottom') {\n        y = 'top';\n      }\n    } else {\n      if (x === 'end') {\n        x = 'start';\n      } else if (x === 'start') {\n        x = 'end';\n      }\n    }\n\n    return {x, y};\n  }\n\n  /** Updates the class on the overlay panel based on the current position of the tooltip. */\n  private _updateCurrentPositionClass(connectionPair: ConnectionPositionPair): void {\n    const {overlayY, originX, originY} = connectionPair;\n    let newPosition: TooltipPosition;\n\n    // If the overlay is in the middle along the Y axis,\n    // it means that it's either before or after.\n    if (overlayY === 'center') {\n      // Note that since this information is used for styling, we want to\n      // resolve `start` and `end` to their real values, otherwise consumers\n      // would have to remember to do it themselves on each consumption.\n      if (this._dir && this._dir.value === 'rtl') {\n        newPosition = originX === 'end' ? 'left' : 'right';\n      } else {\n        newPosition = originX === 'start' ? 'left' : 'right';\n      }\n    } else {\n      newPosition = overlayY === 'bottom' && originY === 'top' ? 'above' : 'below';\n    }\n\n    if (newPosition !== this._currentPosition) {\n      const overlayRef = this._overlayRef;\n\n      if (overlayRef) {\n        const classPrefix = `${this._cssClassPrefix}-${PANEL_CLASS}-`;\n        overlayRef.removePanelClass(classPrefix + this._currentPosition);\n        overlayRef.addPanelClass(classPrefix + newPosition);\n      }\n\n      this._currentPosition = newPosition;\n    }\n  }\n\n  /** Binds the pointer events to the tooltip trigger. */\n  private _setupPointerEnterEventsIfNeeded() {\n    // Optimization: Defer hooking up events if there's no message or the tooltip is disabled.\n    if (this._disabled || !this.message || !this._viewInitialized || this._eventCleanups.length) {\n      return;\n    }\n\n    // The mouse events shouldn't be bound on mobile devices, because they can prevent the\n    // first tap from firing its click event or can cause the tooltip to open for clicks.\n    if (!this._isTouchPlatform()) {\n      this._addListener('mouseenter', (event: MouseEvent) => {\n        this._setupPointerExitEventsIfNeeded();\n        let point = undefined;\n        if (event.x !== undefined && event.y !== undefined) {\n          point = event;\n        }\n        this.show(undefined, point);\n      });\n    } else if (this.touchGestures !== 'off') {\n      this._disableNativeGesturesIfNecessary();\n      this._addListener('touchstart', (event: TouchEvent) => {\n        const touch = event.targetTouches?.[0];\n        const origin = touch ? {x: touch.clientX, y: touch.clientY} : undefined;\n        // Note that it's important that we don't `preventDefault` here,\n        // because it can prevent click events from firing on the element.\n        this._setupPointerExitEventsIfNeeded();\n        if (this._touchstartTimeout) {\n          clearTimeout(this._touchstartTimeout);\n        }\n\n        const DEFAULT_LONGPRESS_DELAY = 500;\n        this._touchstartTimeout = setTimeout(() => {\n          this._touchstartTimeout = null;\n          this.show(undefined, origin);\n        }, this._defaultOptions?.touchLongPressShowDelay ?? DEFAULT_LONGPRESS_DELAY);\n      });\n    }\n  }\n\n  private _setupPointerExitEventsIfNeeded() {\n    if (this._pointerExitEventsInitialized) {\n      return;\n    }\n    this._pointerExitEventsInitialized = true;\n\n    if (!this._isTouchPlatform()) {\n      this._addListener('mouseleave', (event: MouseEvent) => {\n        const newTarget = event.relatedTarget as Node | null;\n        if (!newTarget || !this._overlayRef?.overlayElement.contains(newTarget)) {\n          this.hide();\n        }\n      });\n\n      this._addListener('wheel', (event: WheelEvent) => {\n        if (this._isTooltipVisible()) {\n          const elementUnderPointer = this._document.elementFromPoint(event.clientX, event.clientY);\n          const element = this._elementRef.nativeElement;\n\n          // On non-touch devices we depend on the `mouseleave` event to close the tooltip, but it\n          // won't fire if the user scrolls away using the wheel without moving their cursor. We\n          // work around it by finding the element under the user's cursor and closing the tooltip\n          // if it's not the trigger.\n          if (elementUnderPointer !== element && !element.contains(elementUnderPointer)) {\n            this.hide();\n          }\n        }\n      });\n    } else if (this.touchGestures !== 'off') {\n      this._disableNativeGesturesIfNecessary();\n      const touchendListener = () => {\n        if (this._touchstartTimeout) {\n          clearTimeout(this._touchstartTimeout);\n        }\n        this.hide(this._defaultOptions?.touchendHideDelay);\n      };\n\n      this._addListener('touchend', touchendListener);\n      this._addListener('touchcancel', touchendListener);\n    }\n  }\n\n  private _addListener<T extends Event>(name: string, listener: (event: T) => void) {\n    this._eventCleanups.push(\n      this._renderer.listen(this._elementRef.nativeElement, name, listener, passiveListenerOptions),\n    );\n  }\n\n  private _isTouchPlatform(): boolean {\n    const detectHoverCapability = this._defaultOptions?.detectHoverCapability;\n\n    if (typeof detectHoverCapability === 'function') {\n      return !detectHoverCapability();\n    }\n\n    if (this._platform.IOS || this._platform.ANDROID) {\n      // If we detected iOS or Android, it's definitely supported.\n      return true;\n    } else if (!this._platform.isBrowser) {\n      // If it's not a browser, it's definitely not supported.\n      return false;\n    }\n\n    return !!detectHoverCapability && this._mediaMatcher.matchMedia('(any-hover: none)').matches;\n  }\n\n  /** Disables the native browser gestures, based on how the tooltip has been configured. */\n  private _disableNativeGesturesIfNecessary() {\n    const gestures = this.touchGestures;\n\n    if (gestures !== 'off') {\n      const element = this._elementRef.nativeElement;\n      const style = element.style as unknown as Record<string, string>;\n\n      // If gestures are set to `auto`, we don't disable text selection on inputs and\n      // textareas, because it prevents the user from typing into them on iOS Safari.\n      if (gestures === 'on' || (element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA')) {\n        style['userSelect'] =\n          style['msUserSelect'] =\n          style['webkitUserSelect'] =\n          style['MozUserSelect'] =\n            'none';\n      }\n\n      // If we have `auto` gestures and the element uses native HTML dragging,\n      // we don't set `-webkit-user-drag` because it prevents the native behavior.\n      if (gestures === 'on' || !element.draggable) {\n        style['webkitUserDrag'] = 'none';\n      }\n\n      style['touchAction'] = 'none';\n      style['webkitTapHighlightColor'] = 'transparent';\n    }\n  }\n\n  /** Updates the tooltip's ARIA description based on it current state. */\n  private _syncAriaDescription(oldMessage: string): void {\n    if (this._ariaDescriptionPending) {\n      return;\n    }\n\n    this._ariaDescriptionPending = true;\n    this._ariaDescriber.removeDescription(this._elementRef.nativeElement, oldMessage, 'tooltip');\n\n    // The `AriaDescriber` has some functionality that avoids adding a description if it's the\n    // same as the `aria-label` of an element, however we can't know whether the tooltip trigger\n    // has a data-bound `aria-label` or when it'll be set for the first time. We can avoid the\n    // issue by deferring the description by a tick so Angular has time to set the `aria-label`.\n    if (!this._isDestroyed) {\n      afterNextRender(\n        {\n          write: () => {\n            this._ariaDescriptionPending = false;\n\n            if (this.message && !this.disabled) {\n              this._ariaDescriber.describe(this._elementRef.nativeElement, this.message, 'tooltip');\n            }\n          },\n        },\n        {injector: this._injector},\n      );\n    }\n  }\n\n  /** Determines which events should be routed to the tooltip overlay. */\n  private _overlayEventPredicate = (event: Event) => {\n    if (event.type === 'keydown') {\n      return (\n        this._isTooltipVisible() &&\n        (event as KeyboardEvent).keyCode === ESCAPE &&\n        !hasModifierKey(event as KeyboardEvent)\n      );\n    }\n    return true;\n  };\n}\n\n/**\n * Internal component that wraps the tooltip's content.\n * @docs-private\n */\n@Component({\n  selector: 'mat-tooltip-component',\n  templateUrl: 'tooltip.html',\n  styleUrl: 'tooltip.css',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '(mouseleave)': '_handleMouseLeave($event)',\n    'aria-hidden': 'true',\n  },\n})\nexport class TooltipComponent implements OnDestroy {\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  protected _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n  /* Whether the tooltip text overflows to multiple lines */\n  _isMultiline = false;\n\n  /** Message to display in the tooltip */\n  message!: string;\n\n  /** Classes to be added to the tooltip. */\n  tooltipClass!: string | string[] | {[key: string]: unknown};\n\n  /** The timeout ID of any current timer set to show the tooltip */\n  private _showTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n  /** The timeout ID of any current timer set to hide the tooltip */\n  private _hideTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n  /** Element that caused the tooltip to open. */\n  _triggerElement!: HTMLElement;\n\n  /** Amount of milliseconds to delay the closing sequence. */\n  _mouseLeaveHideDelay!: number;\n\n  /** Whether animations are currently disabled. */\n  private _animationsDisabled = _animationsDisabled();\n\n  /** Reference to the internal tooltip element. */\n  @ViewChild('tooltip', {\n    // Use a static query here since we interact directly with\n    // the DOM which can happen before `ngAfterViewInit`.\n    static: true,\n  })\n  _tooltip!: ElementRef<HTMLElement>;\n\n  /** Whether interactions on the page should close the tooltip */\n  private _closeOnInteraction = false;\n\n  /** Whether the tooltip is currently visible. */\n  private _isVisible = false;\n\n  /** Subject for notifying that the tooltip has been hidden from the view */\n  private readonly _onHide: Subject<void> = new Subject();\n\n  /** Name of the show animation and the class that toggles it. */\n  private readonly _showAnimation = 'mat-mdc-tooltip-show';\n\n  /** Name of the hide animation and the class that toggles it. */\n  private readonly _hideAnimation = 'mat-mdc-tooltip-hide';\n\n  constructor(...args: unknown[]);\n\n  constructor() {}\n\n  /**\n   * Shows the tooltip with an animation originating from the provided origin\n   * @param delay Amount of milliseconds to the delay showing the tooltip.\n   */\n  show(delay: number): void {\n    // Cancel the delayed hide if it is scheduled\n    if (this._hideTimeoutId != null) {\n      clearTimeout(this._hideTimeoutId);\n    }\n\n    this._showTimeoutId = setTimeout(() => {\n      this._toggleVisibility(true);\n      this._showTimeoutId = undefined;\n    }, delay);\n  }\n\n  /**\n   * Begins the animation to hide the tooltip after the provided delay in ms.\n   * @param delay Amount of milliseconds to delay showing the tooltip.\n   */\n  hide(delay: number): void {\n    // Cancel the delayed show if it is scheduled\n    if (this._showTimeoutId != null) {\n      clearTimeout(this._showTimeoutId);\n    }\n\n    this._hideTimeoutId = setTimeout(() => {\n      this._toggleVisibility(false);\n      this._hideTimeoutId = undefined;\n    }, delay);\n  }\n\n  /** Returns an observable that notifies when the tooltip has been hidden from view. */\n  afterHidden(): Observable<void> {\n    return this._onHide;\n  }\n\n  /** Whether the tooltip is being displayed. */\n  isVisible(): boolean {\n    return this._isVisible;\n  }\n\n  ngOnDestroy() {\n    this._cancelPendingAnimations();\n    this._onHide.complete();\n    this._triggerElement = null!;\n  }\n\n  /**\n   * Interactions on the HTML body should close the tooltip immediately as defined in the\n   * material design spec.\n   * https://material.io/design/components/tooltips.html#behavior\n   */\n  _handleBodyInteraction(): void {\n    if (this._closeOnInteraction) {\n      this.hide(0);\n    }\n  }\n\n  /**\n   * Marks that the tooltip needs to be checked in the next change detection run.\n   * Mainly used for rendering the initial text before positioning a tooltip, which\n   * can be problematic in components with OnPush change detection.\n   */\n  _markForCheck(): void {\n    this._changeDetectorRef.markForCheck();\n  }\n\n  _handleMouseLeave({relatedTarget}: MouseEvent) {\n    if (!relatedTarget || !this._triggerElement.contains(relatedTarget as Node)) {\n      if (this.isVisible()) {\n        this.hide(this._mouseLeaveHideDelay);\n      } else {\n        this._finalizeAnimation(false);\n      }\n    }\n  }\n\n  /**\n   * Callback for when the timeout in this.show() gets completed.\n   * This method is only needed by the mdc-tooltip, and so it is only implemented\n   * in the mdc-tooltip, not here.\n   */\n  protected _onShow(): void {\n    this._isMultiline = this._isTooltipMultiline();\n    this._markForCheck();\n  }\n\n  /** Whether the tooltip text has overflown to the next line */\n  private _isTooltipMultiline() {\n    const rect = this._elementRef.nativeElement.getBoundingClientRect();\n    return rect.height > MIN_HEIGHT && rect.width >= MAX_WIDTH;\n  }\n\n  /** Event listener dispatched when an animation on the tooltip finishes. */\n  _handleAnimationEnd({animationName}: AnimationEvent) {\n    if (animationName === this._showAnimation || animationName === this._hideAnimation) {\n      this._finalizeAnimation(animationName === this._showAnimation);\n    }\n  }\n\n  /** Cancels any pending animation sequences. */\n  _cancelPendingAnimations() {\n    if (this._showTimeoutId != null) {\n      clearTimeout(this._showTimeoutId);\n    }\n\n    if (this._hideTimeoutId != null) {\n      clearTimeout(this._hideTimeoutId);\n    }\n\n    this._showTimeoutId = this._hideTimeoutId = undefined;\n  }\n\n  /** Handles the cleanup after an animation has finished. */\n  private _finalizeAnimation(toVisible: boolean) {\n    if (toVisible) {\n      this._closeOnInteraction = true;\n    } else if (!this.isVisible()) {\n      this._onHide.next();\n    }\n  }\n\n  /** Toggles the visibility of the tooltip element. */\n  private _toggleVisibility(isVisible: boolean) {\n    // We set the classes directly here ourselves so that toggling the tooltip state\n    // isn't bound by change detection. This allows us to hide it even if the\n    // view ref has been detached from the CD tree.\n    const tooltip = this._tooltip.nativeElement;\n    const showClass = this._showAnimation;\n    const hideClass = this._hideAnimation;\n    tooltip.classList.remove(isVisible ? hideClass : showClass);\n    tooltip.classList.add(isVisible ? showClass : hideClass);\n    if (this._isVisible !== isVisible) {\n      this._isVisible = isVisible;\n      this._changeDetectorRef.markForCheck();\n    }\n\n    // It's common for internal apps to disable animations using `* { animation: none !important }`\n    // which can break the opening sequence. Try to detect such cases and work around them.\n    if (isVisible && !this._animationsDisabled && typeof getComputedStyle === 'function') {\n      const styles = getComputedStyle(tooltip);\n\n      // Use `getPropertyValue` to avoid issues with property renaming.\n      if (\n        styles.getPropertyValue('animation-duration') === '0s' ||\n        styles.getPropertyValue('animation-name') === 'none'\n      ) {\n        this._animationsDisabled = true;\n      }\n    }\n\n    if (isVisible) {\n      this._onShow();\n    }\n\n    if (this._animationsDisabled) {\n      tooltip.classList.add('_mat-animation-noopable');\n      this._finalizeAnimation(isVisible);\n    }\n  }\n}\n","<div\n  #tooltip\n  class=\"mdc-tooltip mat-mdc-tooltip\"\n  [class]=\"tooltipClass\"\n  (animationend)=\"_handleAnimationEnd($event)\"\n  [class.mdc-tooltip--multiline]=\"_isMultiline\">\n  <div class=\"mat-mdc-tooltip-surface mdc-tooltip__surface\">{{message}}</div>\n</div>\n"],"names":["SCROLL_THROTTLE_MS","getMatTooltipInvalidPositionError","position","Error","MAT_TOOLTIP_SCROLL_STRATEGY","InjectionToken","providedIn","factory","injector","inject","Injector","createRepositionScrollStrategy","scrollThrottle","MAT_TOOLTIP_DEFAULT_OPTIONS","showDelay","hideDelay","touchendHideDelay","TOOLTIP_PANEL_CLASS","PANEL_CLASS","passiveListenerOptions","passive","MIN_VIEWPORT_TOOLTIP_THRESHOLD","UNBOUNDED_ANCHOR_GAP","MIN_HEIGHT","MAX_WIDTH","MatTooltip","_elementRef","ElementRef","_ngZone","NgZone","_platform","Platform","_ariaDescriber","AriaDescriber","_focusMonitor","FocusMonitor","_dir","Directionality","_injector","_viewContainerRef","ViewContainerRef","_mediaMatcher","MediaMatcher","_document","DOCUMENT","_renderer","Renderer2","_animationsDisabled","_defaultOptions","optional","_overlayRef","_tooltipInstance","_overlayPanelClass","_portal","_position","_positionAtOrigin","_disabled","_tooltipClass","_viewInitialized","_pointerExitEventsInitialized","_tooltipComponent","TooltipComponent","_viewportMargin","_currentPosition","_cssClassPrefix","_ariaDescriptionPending","_dirSubscribed","value","_updatePosition","show","updatePosition","positionAtOrigin","coerceBooleanProperty","_detach","disabled","isDisabled","hide","_setupPointerEnterEventsIfNeeded","_syncAriaDescription","message","_showDelay","coerceNumberProperty","_hideDelay","_mouseLeaveHideDelay","touchGestures","_message","oldMessage","String","trim","_isTooltipVisible","_updateTooltipMessage","tooltipClass","_setTooltipClass","_eventCleanups","_touchstartTimeout","_destroyed","Subject","_isDestroyed","constructor","defaultOptions","ngAfterViewInit","monitor","pipe","takeUntil","subscribe","origin","run","ngOnDestroy","nativeElement","clearTimeout","dispose","forEach","cleanup","length","next","complete","removeDescription","stopMonitoring","delay","_cancelPendingAnimations","overlayRef","_createOverlay","ComponentPortal","instance","attach","_triggerElement","afterHidden","isVisible","toggle","undefined","existingStrategy","getConfig","positionStrategy","_origin","scrollableAncestors","get","ScrollDispatcher","getAncestorScrollContainers","panelClass","strategy","createFlexibleConnectedPositionStrategy","withTransformOriginOn","withFlexibleDimensions","withViewportMargin","withScrollableContainers","withPopoverLocation","positionChanges","change","_updateCurrentPositionClass","connectionPair","scrollableViewProperties","isOverlayClipped","createOverlayRef","direction","scrollStrategy","disableAnimations","eventPredicate","_overlayEventPredicate","detachments","outsidePointerEvents","_handleBodyInteraction","keydownEvents","event","preventDefault","stopPropagation","disableTooltipInteractivity","addPanelClass","hasAttached","detach","_getOrigin","overlay","_getOverlayPosition","withPositions","_addOffset","main","fallback","offset","isLtr","originY","offsetY","originX","offsetX","originPosition","ngDevMode","x","y","_invertPosition","overlayPosition","overlayX","overlayY","_markForCheck","afterNextRender","Set","Array","from","newPosition","classPrefix","removePanelClass","_isTouchPlatform","_addListener","_setupPointerExitEventsIfNeeded","point","_disableNativeGesturesIfNecessary","touch","targetTouches","clientX","clientY","DEFAULT_LONGPRESS_DELAY","setTimeout","touchLongPressShowDelay","newTarget","relatedTarget","overlayElement","contains","elementUnderPointer","elementFromPoint","element","touchendListener","name","listener","push","listen","detectHoverCapability","IOS","ANDROID","isBrowser","matchMedia","matches","gestures","style","nodeName","draggable","write","describe","type","keyCode","ESCAPE","hasModifierKey","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","inputs","host","properties","classAttribute","exportAs","ngImport","decorators","args","Input","_changeDetectorRef","ChangeDetectorRef","_isMultiline","_showTimeoutId","_hideTimeoutId","_tooltip","_closeOnInteraction","_isVisible","_onHide","_showAnimation","_hideAnimation","_toggleVisibility","markForCheck","_handleMouseLeave","_finalizeAnimation","_onShow","_isTooltipMultiline","rect","getBoundingClientRect","height","width","_handleAnimationEnd","animationName","toVisible","tooltip","showClass","hideClass","classList","remove","add","getComputedStyle","styles","getPropertyValue","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","template","ViewChild","static"],"mappings":"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"}