{"version":3,"file":"mtxTooltip.mjs","sources":["../../../projects/extensions/tooltip/tooltip-animations.ts","../../../projects/extensions/tooltip/tooltip.ts","../../../projects/extensions/tooltip/tooltip.html","../../../projects/extensions/tooltip/tooltip-module.ts","../../../projects/extensions/tooltip/mtxTooltip.ts"],"sourcesContent":["import {\n  animate,\n  AnimationTriggerMetadata,\n  keyframes,\n  state,\n  style,\n  transition,\n  trigger,\n} from '@angular/animations';\n\n/**\n * Animations used by MtxTooltip.\n * @docs-private\n */\nexport const mtxTooltipAnimations: {\n  readonly tooltipState: AnimationTriggerMetadata;\n} = {\n  /** Animation that transitions a tooltip in and out. */\n  tooltipState: trigger('state', [\n    state('initial, void, hidden', style({ opacity: 0, transform: 'scale(0)' })),\n    state('visible', style({ transform: 'scale(1)' })),\n    transition(\n      '* => visible',\n      animate(\n        '200ms cubic-bezier(0, 0, 0.2, 1)',\n        keyframes([\n          style({ opacity: 0, transform: 'scale(0)', offset: 0 }),\n          style({ opacity: 0.5, transform: 'scale(0.99)', offset: 0.5 }),\n          style({ opacity: 1, transform: 'scale(1)', offset: 1 }),\n        ])\n      )\n    ),\n    transition('* => hidden', animate('100ms cubic-bezier(0, 0, 0.2, 1)', style({ opacity: 0 }))),\n  ]),\n};\n","import { AnimationEvent } from '@angular/animations';\nimport { AriaDescriber, FocusMonitor } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { BooleanInput, coerceBooleanProperty, NumberInput } from '@angular/cdk/coercion';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nimport { BreakpointObserver, Breakpoints, BreakpointState } from '@angular/cdk/layout';\nimport {\n  FlexibleConnectedPositionStrategy,\n  HorizontalConnectionPos,\n  OriginConnectionPosition,\n  Overlay,\n  OverlayConnectionPosition,\n  OverlayRef,\n  ScrollStrategy,\n  VerticalConnectionPos,\n} from '@angular/cdk/overlay';\nimport { Platform, normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ScrollDispatcher } from '@angular/cdk/scrolling';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Directive,\n  ElementRef,\n  Inject,\n  InjectionToken,\n  Input,\n  NgZone,\n  OnDestroy,\n  Optional,\n  ViewContainerRef,\n  ViewEncapsulation,\n  AfterViewInit,\n  TemplateRef,\n} from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { mtxTooltipAnimations } from './tooltip-animations';\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 `MtxTooltip.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/** CSS class that will be attached to the overlay panel. */\nexport const TOOLTIP_PANEL_CLASS = 'mtx-tooltip-panel';\n\n/** Options used to bind passive event listeners. */\nconst passiveListenerOptions = normalizePassiveListenerOptions({ passive: true });\n\n/**\n * Time between the user putting the pointer on a tooltip\n * trigger and the long press event being fired.\n */\nconst LONGPRESS_DELAY = 500;\n\n/**\n * Creates an error to be thrown if the user supplied an invalid tooltip position.\n * @docs-private\n */\nexport function getMtxTooltipInvalidPositionError(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 MTX_TOOLTIP_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n  'mtx-tooltip-scroll-strategy'\n);\n\n/** @docs-private */\nexport function MTX_TOOLTIP_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n  return () => overlay.scrollStrategies.reposition({ scrollThrottle: SCROLL_THROTTLE_MS });\n}\n\n/** @docs-private */\nexport const MTX_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n  provide: MTX_TOOLTIP_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: MTX_TOOLTIP_SCROLL_STRATEGY_FACTORY,\n};\n\n/** Default `mtxTooltip` options that can be overridden. */\nexport interface MtxTooltipDefaultOptions {\n  showDelay: number;\n  hideDelay: number;\n  touchendHideDelay: number;\n  touchGestures?: TooltipTouchGestures;\n  position?: TooltipPosition;\n}\n\n/** Injection token to be used to override the default options for `matTooltip`. */\nexport const MTX_TOOLTIP_DEFAULT_OPTIONS = new InjectionToken<MtxTooltipDefaultOptions>(\n  'mtx-tooltip-default-options',\n  {\n    providedIn: 'root',\n    factory: MTX_TOOLTIP_DEFAULT_OPTIONS_FACTORY,\n  }\n);\n\n/** @docs-private */\nexport function MTX_TOOLTIP_DEFAULT_OPTIONS_FACTORY(): MtxTooltipDefaultOptions {\n  return {\n    showDelay: 0,\n    hideDelay: 0,\n    touchendHideDelay: 1500,\n  };\n}\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: '[mtxTooltip]',\n  exportAs: 'mtxTooltip',\n  host: {\n    class: 'mtx-tooltip-trigger',\n  },\n})\nexport class MtxTooltip implements OnDestroy, AfterViewInit {\n  _overlayRef!: OverlayRef | null;\n  _tooltipInstance!: TooltipComponent | null;\n\n  private _portal!: ComponentPortal<TooltipComponent>;\n  private _position: TooltipPosition = 'below';\n  private _disabled: boolean = false;\n  private _tooltipClass!: string | string[] | Set<string> | { [key: string]: any };\n  private _scrollStrategy: () => ScrollStrategy;\n  private _viewInitialized = false;\n  private _pointerExitEventsInitialized = false;\n\n  /** Allows the user to define the position of the tooltip relative to the parent element */\n  @Input('mtxTooltipPosition')\n  get position(): TooltipPosition {\n    return this._position;\n  }\n  set position(value: TooltipPosition) {\n    if (value !== this._position) {\n      this._position = value;\n\n      if (this._overlayRef) {\n        this._updatePosition();\n\n        if (this._tooltipInstance) {\n          this._tooltipInstance!.show(0);\n        }\n\n        this._overlayRef.updatePosition();\n      }\n    }\n  }\n\n  /** Disables the display of the tooltip. */\n  @Input('mtxTooltipDisabled')\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value) {\n    this._disabled = coerceBooleanProperty(value);\n\n    // If tooltip is disabled, hide immediately.\n    if (this._disabled) {\n      this.hide(0);\n    } else {\n      this._setupPointerEnterEventsIfNeeded();\n    }\n  }\n\n  /** The default delay in ms before showing the tooltip after show is called */\n  @Input('mtxTooltipShowDelay') showDelay: number = this._defaultOptions.showDelay;\n\n  /** The default delay in ms before hiding the tooltip after hide is called */\n  @Input('mtxTooltipHideDelay') hideDelay: number = this._defaultOptions.hideDelay;\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('mtxTooltipTouchGestures') touchGestures: TooltipTouchGestures = 'auto';\n\n  /** The message to be displayed in the tooltip */\n  @Input('mtxTooltip')\n  get message() {\n    return this._message;\n  }\n  set message(value: string | TemplateRef<any>) {\n    this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this._message as string);\n\n    // TODO: If the message is a TemplateRef, it's hard to support a11y.\n    // If the message is not a string (e.g. number), convert it to a string and trim it.\n    this._message = value instanceof TemplateRef ? value : value != null ? `${value}`.trim() : '';\n\n    if (!this._message && this._isTooltipVisible()) {\n      this.hide(0);\n    } else {\n      this._setupPointerEnterEventsIfNeeded();\n      this._updateTooltipMessage();\n      this._ngZone.runOutsideAngular(() => {\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        Promise.resolve().then(() => {\n          this._ariaDescriber.describe(this._elementRef.nativeElement, this.message as string);\n        });\n      });\n    }\n  }\n  private _message: string | TemplateRef<any> = '';\n\n  /** Classes to be passed to the tooltip. Supports the same syntax as `ngClass`. */\n  @Input('mtxTooltipClass')\n  get tooltipClass() {\n    return this._tooltipClass;\n  }\n  set tooltipClass(value: string | string[] | Set<string> | { [key: string]: any }) {\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 _passiveListeners: (readonly [string, EventListenerOrEventListenerObject])[] =\n    [];\n\n  /** Timer started at the last `touchstart` event. */\n  private _touchstartTimeout!: number;\n\n  /** Emits when the component is destroyed. */\n  private readonly _destroyed = new Subject<void>();\n\n  constructor(\n    private _overlay: Overlay,\n    private _elementRef: ElementRef<HTMLElement>,\n    private _scrollDispatcher: ScrollDispatcher,\n    private _viewContainerRef: ViewContainerRef,\n    private _ngZone: NgZone,\n    private _platform: Platform,\n    private _ariaDescriber: AriaDescriber,\n    private _focusMonitor: FocusMonitor,\n    @Inject(MTX_TOOLTIP_SCROLL_STRATEGY) scrollStrategy: any,\n    @Optional() private _dir: Directionality,\n    @Optional()\n    @Inject(MTX_TOOLTIP_DEFAULT_OPTIONS)\n    private _defaultOptions: MtxTooltipDefaultOptions\n  ) {\n    this._scrollStrategy = scrollStrategy;\n\n    if (_defaultOptions) {\n      if (_defaultOptions.position) {\n        this.position = _defaultOptions.position;\n      }\n\n      if (_defaultOptions.touchGestures) {\n        this.touchGestures = _defaultOptions.touchGestures;\n      }\n    }\n\n    _ngZone.runOutsideAngular(() => {\n      _elementRef.nativeElement.addEventListener('keydown', this._handleKeydown);\n    });\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    clearTimeout(this._touchstartTimeout);\n\n    if (this._overlayRef) {\n      this._overlayRef.dispose();\n      this._tooltipInstance = null;\n    }\n\n    // Clean up the event listeners set in the constructor\n    nativeElement.removeEventListener('keydown', this._handleKeydown);\n    this._passiveListeners.forEach(([event, listener]) => {\n      nativeElement.removeEventListener(event, listener, passiveListenerOptions);\n    });\n    this._passiveListeners.length = 0;\n\n    this._destroyed.next();\n    this._destroyed.complete();\n\n    this._ariaDescriber.removeDescription(nativeElement, this.message as string);\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): void {\n    if (\n      this.disabled ||\n      !this.message ||\n      (this._isTooltipVisible() &&\n        !this._tooltipInstance!._showTimeoutId &&\n        !this._tooltipInstance!._hideTimeoutId)\n    ) {\n      return;\n    }\n\n    const overlayRef = this._createOverlay();\n    this._detach();\n    this._portal = this._portal || new ComponentPortal(TooltipComponent, this._viewContainerRef);\n    this._tooltipInstance = overlayRef.attach(this._portal).instance;\n    this._tooltipInstance\n      .afterHidden()\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(() => this._detach());\n    this._setTooltipClass(this._tooltipClass);\n    this._updateTooltipMessage();\n    this._tooltipInstance!.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    if (this._tooltipInstance) {\n      this._tooltipInstance.hide(delay);\n    }\n  }\n\n  /** Shows/hides the tooltip */\n  toggle(): void {\n    this._isTooltipVisible() ? this.hide() : this.show();\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  /**\n   * Handles the keydown events on the host element.\n   * Needs to be an arrow function so that we can use it in addEventListener.\n   */\n  private _handleKeydown = (event: KeyboardEvent) => {\n    if (this._isTooltipVisible() && event.keyCode === ESCAPE && !hasModifierKey(event)) {\n      event.preventDefault();\n      event.stopPropagation();\n      this._ngZone.run(() => this.hide(0));\n    }\n  };\n\n  /** Create the overlay config and position strategy */\n  private _createOverlay(): OverlayRef {\n    if (this._overlayRef) {\n      return this._overlayRef;\n    }\n\n    const scrollableAncestors = this._scrollDispatcher.getAncestorScrollContainers(\n      this._elementRef\n    );\n\n    // Create connected position strategy that listens for scroll events to reposition.\n    const strategy = this._overlay\n      .position()\n      .flexibleConnectedTo(this._elementRef)\n      .withTransformOriginOn('.mtx-tooltip')\n      .withFlexibleDimensions(false)\n      .withViewportMargin(8)\n      .withScrollableContainers(scrollableAncestors);\n\n    strategy.positionChanges.pipe(takeUntil(this._destroyed)).subscribe(change => {\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 = this._overlay.create({\n      direction: this._dir,\n      positionStrategy: strategy,\n      panelClass: TOOLTIP_PANEL_CLASS,\n      scrollStrategy: this._scrollStrategy(),\n    });\n\n    this._updatePosition();\n\n    this._overlayRef\n      .detachments()\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(() => this._detach());\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() {\n    const position = this._overlayRef!.getConfig()\n      .positionStrategy as FlexibleConnectedPositionStrategy;\n    const origin = this._getOrigin();\n    const overlay = this._getOverlayPosition();\n\n    position.withPositions([\n      { ...origin.main, ...overlay.main },\n      { ...origin.fallback, ...overlay.fallback },\n    ]);\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 {\n      throw getMtxTooltipInvalidPositionError(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 {\n      throw getMtxTooltipInvalidPositionError(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      this._ngZone.onMicrotaskEmpty\n        .asObservable()\n        .pipe(take(1), takeUntil(this._destroyed))\n        .subscribe(() => {\n          if (this._tooltipInstance) {\n            this._overlayRef!.updatePosition();\n          }\n        });\n    }\n  }\n\n  /** Updates the tooltip class */\n  private _setTooltipClass(tooltipClass: string | string[] | Set<string> | { [key: string]: any }) {\n    if (this._tooltipInstance) {\n      this._tooltipInstance.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  /** 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 (\n      this._disabled ||\n      !this.message ||\n      !this._viewInitialized ||\n      this._passiveListeners.length\n    ) {\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._platformSupportsMouseEvents()) {\n      this._passiveListeners.push([\n        'mouseenter',\n        () => {\n          this._setupPointerExitEventsIfNeeded();\n          this.show();\n        },\n      ]);\n    } else if (this.touchGestures !== 'off') {\n      this._disableNativeGesturesIfNecessary();\n\n      this._passiveListeners.push([\n        'touchstart',\n        () => {\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          clearTimeout(this._touchstartTimeout);\n          this._touchstartTimeout = setTimeout(() => this.show(), LONGPRESS_DELAY) as any;\n        },\n      ]);\n    }\n\n    this._addListeners(this._passiveListeners);\n  }\n\n  private _setupPointerExitEventsIfNeeded() {\n    if (this._pointerExitEventsInitialized) {\n      return;\n    }\n    this._pointerExitEventsInitialized = true;\n\n    const exitListeners: (readonly [string, EventListenerOrEventListenerObject])[] = [];\n    if (this._platformSupportsMouseEvents()) {\n      exitListeners.push(['mouseleave', () => this.hide()]);\n    } else if (this.touchGestures !== 'off') {\n      this._disableNativeGesturesIfNecessary();\n      const touchendListener = () => {\n        clearTimeout(this._touchstartTimeout);\n        this.hide(this._defaultOptions.touchendHideDelay);\n      };\n\n      exitListeners.push(['touchend', touchendListener], ['touchcancel', touchendListener]);\n    }\n\n    this._addListeners(exitListeners);\n    this._passiveListeners.push(...exitListeners);\n  }\n\n  private _addListeners(\n    listeners: ReadonlyArray<readonly [string, EventListenerOrEventListenerObject]>\n  ) {\n    listeners.forEach(([event, listener]) => {\n      this._elementRef.nativeElement.addEventListener(event, listener, passiveListenerOptions);\n    });\n  }\n\n  private _platformSupportsMouseEvents() {\n    return !this._platform.IOS && !this._platform.ANDROID;\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;\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 as any).msUserSelect =\n          style.webkitUserSelect =\n          (style as any).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 as any).webkitUserDrag = 'none';\n      }\n\n      style.touchAction = 'none';\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      style.webkitTapHighlightColor = 'transparent';\n    }\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n  static ngAcceptInputType_hideDelay: NumberInput;\n  static ngAcceptInputType_showDelay: NumberInput;\n}\n\n/**\n * Internal component that wraps the tooltip's content.\n * @docs-private\n */\n@Component({\n  selector: 'mtx-tooltip-component',\n  templateUrl: 'tooltip.html',\n  styleUrls: ['tooltip.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [mtxTooltipAnimations.tooltipState],\n  host: {\n    // Forces the element to have a layout in IE and Edge. This fixes issues where the element\n    // won't be rendered if the animations are disabled or there is no web animations polyfill.\n    '[style.zoom]': '_visibility === \"visible\" ? 1 : null',\n    '(body:click)': 'this._handleBodyInteraction()',\n    'aria-hidden': 'true',\n  },\n})\nexport class TooltipComponent implements OnDestroy {\n  /** Message to display in the tooltip */\n  message!: string | TemplateRef<any>;\n\n  /** Classes to be added to the tooltip. Supports the same syntax as `ngClass`. */\n  tooltipClass!: string | string[] | Set<string> | { [key: string]: any };\n\n  /** The timeout ID of any current timer set to show the tooltip */\n  _showTimeoutId!: number | null;\n\n  /** The timeout ID of any current timer set to hide the tooltip */\n  _hideTimeoutId!: number | null;\n\n  /** Property watched by the animation framework to show or hide the tooltip */\n  _visibility: TooltipVisibility = 'initial';\n\n  /** Whether interactions on the page should close the tooltip */\n  private _closeOnInteraction: boolean = 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  /** Stream that emits whether the user has a handset-sized display.  */\n  _isHandset: Observable<BreakpointState> = this._breakpointObserver.observe(Breakpoints.Handset);\n\n  _isTemplateRef(obj: any) {\n    return obj instanceof TemplateRef;\n  }\n\n  constructor(\n    private _changeDetectorRef: ChangeDetectorRef,\n    private _breakpointObserver: BreakpointObserver\n  ) {}\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) {\n      clearTimeout(this._hideTimeoutId);\n      this._hideTimeoutId = null;\n    }\n\n    // Body interactions should cancel the tooltip if there is a delay in showing.\n    this._closeOnInteraction = true;\n    this._showTimeoutId = setTimeout(() => {\n      this._visibility = 'visible';\n      this._showTimeoutId = null;\n\n      // Mark for check so if any parent component has set the\n      // ChangeDetectionStrategy to OnPush it will be checked anyways\n      this._markForCheck();\n    }, delay) as any;\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) {\n      clearTimeout(this._showTimeoutId);\n      this._showTimeoutId = null;\n    }\n\n    this._hideTimeoutId = setTimeout(() => {\n      this._visibility = 'hidden';\n      this._hideTimeoutId = null;\n\n      // Mark for check so if any parent component has set the\n      // ChangeDetectionStrategy to OnPush it will be checked anyways\n      this._markForCheck();\n    }, delay) as any;\n  }\n\n  /** Returns an observable that notifies when the tooltip has been hidden from view. */\n  afterHidden(): Observable<void> {\n    return this._onHide.asObservable();\n  }\n\n  /** Whether the tooltip is being displayed. */\n  isVisible(): boolean {\n    return this._visibility === 'visible';\n  }\n\n  ngOnDestroy() {\n    this._onHide.complete();\n  }\n\n  _animationStart() {\n    this._closeOnInteraction = false;\n  }\n\n  _animationDone(event: AnimationEvent): void {\n    const toState = event.toState as TooltipVisibility;\n\n    if (toState === 'hidden' && !this.isVisible()) {\n      this._onHide.next();\n    }\n\n    if (toState === 'visible' || toState === 'hidden') {\n      this._closeOnInteraction = true;\n    }\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","<div class=\"mtx-tooltip\"\n     [ngClass]=\"tooltipClass\"\n     [class.mtx-tooltip-handset]=\"(_isHandset | async)?.matches\"\n     [@state]=\"_visibility\"\n     (@state.start)=\"_animationStart()\"\n     (@state.done)=\"_animationDone($event)\">\n  <ng-template [ngIf]=\"_isTemplateRef(message)\" [ngIfElse]=\"msgStrTpl\">\n    <ng-template [ngTemplateOutlet]=\"$any(message)\"></ng-template>\n  </ng-template>\n  <ng-template #msgStrTpl>{{message}}</ng-template>\n</div>\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatCommonModule } from '@angular/material/core';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\nimport {\n  MtxTooltip,\n  TooltipComponent,\n  MTX_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER,\n} from './tooltip';\n\n@NgModule({\n  imports: [A11yModule, CommonModule, OverlayModule, MatCommonModule],\n  exports: [MtxTooltip, TooltipComponent, MatCommonModule, CdkScrollableModule],\n  declarations: [MtxTooltip, TooltipComponent],\n  providers: [MTX_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER],\n})\nexport class MtxTooltipModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}