Ignore:
Timestamp:
11/25/21 22:08:24 (3 years ago)
Author:
Ema <ema_spirova@…>
Branches:
master
Children:
8d391a1
Parents:
59329aa
Message:

primeNG components

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trip-planner-front/node_modules/@angular/material/fesm2015/tooltip.js.map

    r59329aa re29cc2e  
    1 {"version":3,"file":"tooltip.js","sources":["../../../../../../src/material/tooltip/tooltip-animations.ts","../../../../../../src/material/tooltip/tooltip.ts","../../../../../../src/material/tooltip/tooltip-module.ts","../../../../../../src/material/tooltip/public-api.ts","../../../../../../src/material/tooltip/index.ts"],"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.io/license\n */\nimport {\n  animate,\n  AnimationTriggerMetadata,\n  keyframes,\n  state,\n  style,\n  transition,\n  trigger,\n} from '@angular/animations';\n\n/**\n * Animations used by MatTooltip.\n * @docs-private\n */\nexport const matTooltipAnimations: {\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('* => visible', animate('200ms cubic-bezier(0, 0, 0.2, 1)', 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    transition('* => hidden', animate('100ms cubic-bezier(0, 0, 0.2, 1)', style({opacity: 0}))),\n  ])\n};\n","/**\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.io/license\n */\nimport {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  ConnectedPosition,\n  FlexibleConnectedPositionStrategy,\n  HorizontalConnectionPos,\n  OriginConnectionPosition,\n  Overlay,\n  OverlayConnectionPosition,\n  OverlayRef,\n  ScrollStrategy,\n  VerticalConnectionPos,\n  ConnectionPositionPair,\n} from '@angular/cdk/overlay';\nimport {Platform, normalizePassiveListenerOptions} from '@angular/cdk/platform';\nimport {ComponentPortal, ComponentType} 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} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\nimport {Observable, Subject} from 'rxjs';\nimport {take, takeUntil} from 'rxjs/operators';\n\nimport {matTooltipAnimations} from './tooltip-animations';\n\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 * 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-tooltip-panel';\n\nconst PANEL_CLASS = '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 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 =\n    new InjectionToken<() => ScrollStrategy>('mat-tooltip-scroll-strategy');\n\n/** @docs-private */\nexport function MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n  return () => overlay.scrollStrategies.reposition({scrollThrottle: SCROLL_THROTTLE_MS});\n}\n\n/** @docs-private */\nexport const MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n  provide: MAT_TOOLTIP_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY,\n};\n\n/** Default `matTooltip` options that can be overridden. */\nexport interface MatTooltipDefaultOptions {\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 MAT_TOOLTIP_DEFAULT_OPTIONS =\n    new InjectionToken<MatTooltipDefaultOptions>('mat-tooltip-default-options', {\n      providedIn: 'root',\n      factory: MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY\n    });\n\n/** @docs-private */\nexport function MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY(): MatTooltipDefaultOptions {\n  return {\n    showDelay: 0,\n    hideDelay: 0,\n    touchendHideDelay: 1500,\n  };\n}\n\n\n@Directive()\nexport abstract class _MatTooltipBase<T extends _TooltipComponentBase> implements OnDestroy,\n  AfterViewInit {\n  _overlayRef: OverlayRef | null;\n  _tooltipInstance: T | null;\n\n  private _portal: ComponentPortal<T>;\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  protected abstract readonly _tooltipComponent: ComponentType<T>;\n  protected _viewportMargin = 8;\n  private _currentPosition: TooltipPosition;\n  protected readonly _cssClassPrefix: string = 'mat';\n\n  /** Allows the user to define the position of the tooltip relative to the parent element */\n  @Input('matTooltipPosition')\n  get position(): TooltipPosition { return this._position; }\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  /** Disables the display of the tooltip. */\n  @Input('matTooltipDisabled')\n  get disabled(): boolean { return this._disabled; }\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('matTooltipShowDelay') showDelay: number = this._defaultOptions.showDelay;\n\n  /** The default delay in ms before hiding the tooltip after hide is called */\n  @Input('matTooltipHideDelay') 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('matTooltipTouchGestures') touchGestures: TooltipTouchGestures = 'auto';\n\n  /** The message to be displayed in the tooltip */\n  @Input('matTooltip')\n  get message() { return this._message; }\n  set message(value: string) {\n    this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this._message, 'tooltip');\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      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, 'tooltip');\n        });\n      });\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() { return this._tooltipClass; }\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:\n      (readonly [string, EventListenerOrEventListenerObject])[] = [];\n\n  /** Reference to the current document. */\n  private _document: Document;\n\n  /** Timer started at the last `touchstart` event. */\n  private _touchstartTimeout: any;\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    scrollStrategy: any,\n    protected _dir: Directionality,\n    private _defaultOptions: MatTooltipDefaultOptions,\n    @Inject(DOCUMENT) _document: any) {\n\n    this._scrollStrategy = scrollStrategy;\n    this._document = _document;\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    _dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => {\n      if (this._overlayRef) {\n        this._updatePosition(this._overlayRef);\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.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, '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): void {\n    if (this.disabled || !this.message || (this._isTooltipVisible() &&\n      !this._tooltipInstance!._showTimeoutId && !this._tooltipInstance!._hideTimeoutId)) {\n        return;\n    }\n\n    const overlayRef = this._createOverlay();\n    this._detach();\n    this._portal = this._portal ||\n       new ComponentPortal(this._tooltipComponent, this._viewContainerRef);\n    this._tooltipInstance = overlayRef.attach(this._portal).instance;\n    this._tooltipInstance.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 =\n        this._scrollDispatcher.getAncestorScrollContainers(this._elementRef);\n\n    // Create connected position strategy that listens for scroll events to reposition.\n    const strategy = this._overlay.position()\n                         .flexibleConnectedTo(this._elementRef)\n                         .withTransformOriginOn(`.${this._cssClassPrefix}-tooltip`)\n                         .withFlexibleDimensions(false)\n                         .withViewportMargin(this._viewportMargin)\n                         .withScrollableContainers(scrollableAncestors);\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 = this._overlay.create({\n      direction: this._dir,\n      positionStrategy: strategy,\n      panelClass: `${this._cssClassPrefix}-${PANEL_CLASS}`,\n      scrollStrategy: this._scrollStrategy()\n    });\n\n    this._updatePosition(this._overlayRef);\n\n    this._overlayRef.detachments()\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(() => this._detach());\n\n    this._overlayRef.outsidePointerEvents()\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(() => this._tooltipInstance?._handleBodyInteraction());\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    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      originPosition = {originX: 'start', originY: 'center'};\n    } else if (\n      position == 'after' ||\n      (position == 'right' && isLtr) ||\n      (position == 'left' && !isLtr)) {\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      overlayPosition = {overlayX: 'end', overlayY: 'center'};\n    } else if (\n      position == 'after' ||\n      (position == 'right' && isLtr) ||\n      (position == 'left' && !isLtr)) {\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      this._ngZone.onMicrotaskEmpty.pipe(\n        take(1),\n        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  /** 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 ||\n        this._passiveListeners.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._platformSupportsMouseEvents()) {\n      this._passiveListeners\n          .push(['mouseenter', () => {\n            this._setupPointerExitEventsIfNeeded();\n            this.show();\n          }]);\n    } else if (this.touchGestures !== 'off') {\n      this._disableNativeGesturesIfNecessary();\n\n      this._passiveListeners\n          .push(['touchstart', () => {\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);\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(\n        ['mouseleave', () => this.hide()],\n        ['wheel', event => this._wheelListener(event as WheelEvent)]\n      );\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(\n        ['touchend', touchendListener],\n        ['touchcancel', touchendListener],\n      );\n    }\n\n    this._addListeners(exitListeners);\n    this._passiveListeners.push(...exitListeners);\n  }\n\n  private _addListeners(\n      listeners: (readonly [string, EventListenerOrEventListenerObject])[]) {\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  /** Listener for the `wheel` event on the element. */\n  private _wheelListener(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\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 = (style as any).msUserSelect = style.webkitUserSelect =\n            (style as any).MozUserSelect = '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      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 * 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-tooltip-trigger'\n  }\n})\nexport class MatTooltip extends _MatTooltipBase<TooltipComponent> {\n  protected readonly _tooltipComponent = TooltipComponent;\n\n  constructor(\n    overlay: Overlay,\n    elementRef: ElementRef<HTMLElement>,\n    scrollDispatcher: ScrollDispatcher,\n    viewContainerRef: ViewContainerRef,\n    ngZone: NgZone,\n    platform: Platform,\n    ariaDescriber: AriaDescriber,\n    focusMonitor: FocusMonitor,\n    @Inject(MAT_TOOLTIP_SCROLL_STRATEGY) scrollStrategy: any,\n    @Optional() dir: Directionality,\n    @Optional() @Inject(MAT_TOOLTIP_DEFAULT_OPTIONS) defaultOptions: MatTooltipDefaultOptions,\n    @Inject(DOCUMENT) _document: any) {\n\n    super(overlay, elementRef, scrollDispatcher, viewContainerRef, ngZone, platform, ariaDescriber,\n      focusMonitor, scrollStrategy, dir, defaultOptions, _document);\n  }\n}\n\n@Directive()\nexport abstract class _TooltipComponentBase implements OnDestroy {\n  /** Message to display in the tooltip */\n  message: string;\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: any;\n\n  /** The timeout ID of any current timer set to hide the tooltip */\n  _hideTimeoutId: any;\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  constructor(private _changeDetectorRef: ChangeDetectorRef) {}\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    clearTimeout(this._hideTimeoutId);\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 = undefined;\n      this._onShow();\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);\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    clearTimeout(this._showTimeoutId);\n\n    this._hideTimeoutId = setTimeout(() => {\n      this._visibility = 'hidden';\n      this._hideTimeoutId = undefined;\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);\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._visibility === 'visible';\n  }\n\n  ngOnDestroy() {\n    clearTimeout(this._showTimeoutId);\n    clearTimeout(this._hideTimeoutId);\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  /**\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}\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  styleUrls: ['tooltip.css'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [matTooltipAnimations.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    'aria-hidden': 'true',\n  }\n})\nexport class TooltipComponent extends _TooltipComponentBase {\n  /** Stream that emits whether the user has a handset-sized display.  */\n  _isHandset: Observable<BreakpointState> = this._breakpointObserver.observe(Breakpoints.Handset);\n\n  constructor(\n    changeDetectorRef: ChangeDetectorRef,\n    private _breakpointObserver: BreakpointObserver) {\n    super(changeDetectorRef);\n  }\n}\n","/**\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.io/license\n */\n\nimport {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  MatTooltip,\n  TooltipComponent,\n  MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER,\n} from './tooltip';\n\n@NgModule({\n  imports: [\n    A11yModule,\n    CommonModule,\n    OverlayModule,\n    MatCommonModule,\n  ],\n  exports: [MatTooltip, TooltipComponent, MatCommonModule, CdkScrollableModule],\n  declarations: [MatTooltip, TooltipComponent],\n  entryComponents: [TooltipComponent],\n  providers: [MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER]\n})\nexport class MatTooltipModule {}\n","/**\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.io/license\n */\n\nexport * from './tooltip-module';\nexport * from './tooltip';\nexport * from './tooltip-animations';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
     1{"version":3,"file":"tooltip.js","sources":["../../../../../../src/material/tooltip/tooltip-animations.ts","../../../../../../src/material/tooltip/tooltip.ts","../../../../../../src/material/tooltip/tooltip-module.ts","../../../../../../src/material/tooltip/public-api.ts","../../../../../../src/material/tooltip/index.ts"],"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.io/license\n */\nimport {\n  animate,\n  AnimationTriggerMetadata,\n  keyframes,\n  state,\n  style,\n  transition,\n  trigger,\n} from '@angular/animations';\n\n/**\n * Animations used by MatTooltip.\n * @docs-private\n */\nexport const matTooltipAnimations: {\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('* => visible', animate('200ms cubic-bezier(0, 0, 0.2, 1)', 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    transition('* => hidden', animate('100ms cubic-bezier(0, 0, 0.2, 1)', style({opacity: 0}))),\n  ])\n};\n","/**\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.io/license\n */\nimport {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  ConnectedPosition,\n  FlexibleConnectedPositionStrategy,\n  HorizontalConnectionPos,\n  OriginConnectionPosition,\n  Overlay,\n  OverlayConnectionPosition,\n  OverlayRef,\n  ScrollStrategy,\n  VerticalConnectionPos,\n  ConnectionPositionPair,\n} from '@angular/cdk/overlay';\nimport {Platform, normalizePassiveListenerOptions} from '@angular/cdk/platform';\nimport {ComponentPortal, ComponentType} 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} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\nimport {Observable, Subject} from 'rxjs';\nimport {take, takeUntil} from 'rxjs/operators';\n\nimport {matTooltipAnimations} from './tooltip-animations';\n\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 * 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-tooltip-panel';\n\nconst PANEL_CLASS = '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 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 =\n    new InjectionToken<() => ScrollStrategy>('mat-tooltip-scroll-strategy');\n\n/** @docs-private */\nexport function MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n  return () => overlay.scrollStrategies.reposition({scrollThrottle: SCROLL_THROTTLE_MS});\n}\n\n/** @docs-private */\nexport const MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n  provide: MAT_TOOLTIP_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY,\n};\n\n/** Default `matTooltip` options that can be overridden. */\nexport interface MatTooltipDefaultOptions {\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 MAT_TOOLTIP_DEFAULT_OPTIONS =\n    new InjectionToken<MatTooltipDefaultOptions>('mat-tooltip-default-options', {\n      providedIn: 'root',\n      factory: MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY\n    });\n\n/** @docs-private */\nexport function MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY(): MatTooltipDefaultOptions {\n  return {\n    showDelay: 0,\n    hideDelay: 0,\n    touchendHideDelay: 1500,\n  };\n}\n\n\n@Directive()\nexport abstract class _MatTooltipBase<T extends _TooltipComponentBase> implements OnDestroy,\n  AfterViewInit {\n  _overlayRef: OverlayRef | null;\n  _tooltipInstance: T | null;\n\n  private _portal: ComponentPortal<T>;\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  protected abstract readonly _tooltipComponent: ComponentType<T>;\n  protected _viewportMargin = 8;\n  private _currentPosition: TooltipPosition;\n  protected readonly _cssClassPrefix: string = 'mat';\n\n  /** Allows the user to define the position of the tooltip relative to the parent element */\n  @Input('matTooltipPosition')\n  get position(): TooltipPosition { return this._position; }\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  /** Disables the display of the tooltip. */\n  @Input('matTooltipDisabled')\n  get disabled(): boolean { return this._disabled; }\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('matTooltipShowDelay') showDelay: number = this._defaultOptions.showDelay;\n\n  /** The default delay in ms before hiding the tooltip after hide is called */\n  @Input('matTooltipHideDelay') 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('matTooltipTouchGestures') touchGestures: TooltipTouchGestures = 'auto';\n\n  /** The message to be displayed in the tooltip */\n  @Input('matTooltip')\n  get message() { return this._message; }\n  set message(value: string) {\n    this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this._message, 'tooltip');\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      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, 'tooltip');\n        });\n      });\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() { return this._tooltipClass; }\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:\n      (readonly [string, EventListenerOrEventListenerObject])[] = [];\n\n  /** Reference to the current document. */\n  private _document: Document;\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    scrollStrategy: any,\n    protected _dir: Directionality,\n    private _defaultOptions: MatTooltipDefaultOptions,\n    @Inject(DOCUMENT) _document: any) {\n\n    this._scrollStrategy = scrollStrategy;\n    this._document = _document;\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    _dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => {\n      if (this._overlayRef) {\n        this._updatePosition(this._overlayRef);\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.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, '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): void {\n    if (this.disabled || !this.message || (this._isTooltipVisible() &&\n      !this._tooltipInstance!._showTimeoutId && !this._tooltipInstance!._hideTimeoutId)) {\n        return;\n    }\n\n    const overlayRef = this._createOverlay();\n    this._detach();\n    this._portal = this._portal ||\n       new ComponentPortal(this._tooltipComponent, this._viewContainerRef);\n    this._tooltipInstance = overlayRef.attach(this._portal).instance;\n    this._tooltipInstance.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 =\n        this._scrollDispatcher.getAncestorScrollContainers(this._elementRef);\n\n    // Create connected position strategy that listens for scroll events to reposition.\n    const strategy = this._overlay.position()\n                         .flexibleConnectedTo(this._elementRef)\n                         .withTransformOriginOn(`.${this._cssClassPrefix}-tooltip`)\n                         .withFlexibleDimensions(false)\n                         .withViewportMargin(this._viewportMargin)\n                         .withScrollableContainers(scrollableAncestors);\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 = this._overlay.create({\n      direction: this._dir,\n      positionStrategy: strategy,\n      panelClass: `${this._cssClassPrefix}-${PANEL_CLASS}`,\n      scrollStrategy: this._scrollStrategy()\n    });\n\n    this._updatePosition(this._overlayRef);\n\n    this._overlayRef.detachments()\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(() => this._detach());\n\n    this._overlayRef.outsidePointerEvents()\n      .pipe(takeUntil(this._destroyed))\n      .subscribe(() => this._tooltipInstance?._handleBodyInteraction());\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    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      originPosition = {originX: 'start', originY: 'center'};\n    } else if (\n      position == 'after' ||\n      (position == 'right' && isLtr) ||\n      (position == 'left' && !isLtr)) {\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      overlayPosition = {overlayX: 'end', overlayY: 'center'};\n    } else if (\n      position == 'after' ||\n      (position == 'right' && isLtr) ||\n      (position == 'left' && !isLtr)) {\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      this._ngZone.onMicrotaskEmpty.pipe(\n        take(1),\n        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  /** 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 ||\n        this._passiveListeners.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._platformSupportsMouseEvents()) {\n      this._passiveListeners\n          .push(['mouseenter', () => {\n            this._setupPointerExitEventsIfNeeded();\n            this.show();\n          }]);\n    } else if (this.touchGestures !== 'off') {\n      this._disableNativeGesturesIfNecessary();\n\n      this._passiveListeners\n          .push(['touchstart', () => {\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);\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(\n        ['mouseleave', () => this.hide()],\n        ['wheel', event => this._wheelListener(event as WheelEvent)]\n      );\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(\n        ['touchend', touchendListener],\n        ['touchcancel', touchendListener],\n      );\n    }\n\n    this._addListeners(exitListeners);\n    this._passiveListeners.push(...exitListeners);\n  }\n\n  private _addListeners(\n      listeners: (readonly [string, EventListenerOrEventListenerObject])[]) {\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  /** Listener for the `wheel` event on the element. */\n  private _wheelListener(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\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 = (style as any).msUserSelect = style.webkitUserSelect =\n            (style as any).MozUserSelect = '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      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 * 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-tooltip-trigger'\n  }\n})\nexport class MatTooltip extends _MatTooltipBase<TooltipComponent> {\n  protected readonly _tooltipComponent = TooltipComponent;\n\n  constructor(\n    overlay: Overlay,\n    elementRef: ElementRef<HTMLElement>,\n    scrollDispatcher: ScrollDispatcher,\n    viewContainerRef: ViewContainerRef,\n    ngZone: NgZone,\n    platform: Platform,\n    ariaDescriber: AriaDescriber,\n    focusMonitor: FocusMonitor,\n    @Inject(MAT_TOOLTIP_SCROLL_STRATEGY) scrollStrategy: any,\n    @Optional() dir: Directionality,\n    @Optional() @Inject(MAT_TOOLTIP_DEFAULT_OPTIONS) defaultOptions: MatTooltipDefaultOptions,\n    @Inject(DOCUMENT) _document: any) {\n\n    super(overlay, elementRef, scrollDispatcher, viewContainerRef, ngZone, platform, ariaDescriber,\n      focusMonitor, scrollStrategy, dir, defaultOptions, _document);\n  }\n}\n\n@Directive()\nexport abstract class _TooltipComponentBase implements OnDestroy {\n  /** Message to display in the tooltip */\n  message: string;\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 | undefined;\n\n  /** The timeout ID of any current timer set to hide the tooltip */\n  _hideTimeoutId: number | undefined;\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  constructor(private _changeDetectorRef: ChangeDetectorRef) {}\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    clearTimeout(this._hideTimeoutId);\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 = undefined;\n      this._onShow();\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);\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    clearTimeout(this._showTimeoutId);\n\n    this._hideTimeoutId = setTimeout(() => {\n      this._visibility = 'hidden';\n      this._hideTimeoutId = undefined;\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);\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._visibility === 'visible';\n  }\n\n  ngOnDestroy() {\n    clearTimeout(this._showTimeoutId);\n    clearTimeout(this._hideTimeoutId);\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  /**\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}\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  styleUrls: ['tooltip.css'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [matTooltipAnimations.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    'aria-hidden': 'true',\n  }\n})\nexport class TooltipComponent extends _TooltipComponentBase {\n  /** Stream that emits whether the user has a handset-sized display.  */\n  _isHandset: Observable<BreakpointState> = this._breakpointObserver.observe(Breakpoints.Handset);\n\n  constructor(\n    changeDetectorRef: ChangeDetectorRef,\n    private _breakpointObserver: BreakpointObserver) {\n    super(changeDetectorRef);\n  }\n}\n","/**\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.io/license\n */\n\nimport {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  MatTooltip,\n  TooltipComponent,\n  MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER,\n} from './tooltip';\n\n@NgModule({\n  imports: [\n    A11yModule,\n    CommonModule,\n    OverlayModule,\n    MatCommonModule,\n  ],\n  exports: [MatTooltip, TooltipComponent, MatCommonModule, CdkScrollableModule],\n  declarations: [MatTooltip, TooltipComponent],\n  entryComponents: [TooltipComponent],\n  providers: [MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER]\n})\nexport class MatTooltipModule {}\n","/**\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.io/license\n */\n\nexport * from './tooltip-module';\nexport * from './tooltip';\nexport * from './tooltip-animations';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;;AAiBA;;;;MAIa,oBAAoB,GAE7B;;IAEF,YAAY,EAAE,OAAO,CAAC,OAAO,EAAE;QAC7B,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAC,CAAC,CAAC;QAC1E,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAC,SAAS,EAAE,UAAU,EAAC,CAAC,CAAC;QAChD,UAAU,CAAC,cAAc,EAAE,OAAO,CAAC,kCAAkC,EAAE,SAAS,CAAC;YAC/E,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC;YACrD,KAAK,CAAC,EAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAC,CAAC;YAC5D,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC;SACtD,CAAC,CAAC,CAAC;QACJ,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC,kCAAkC,EAAE,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;KAC5F,CAAC;;;AC6BJ;MACa,kBAAkB,GAAG,GAAG;AAErC;;;;;MAKa,mBAAmB,GAAG,oBAAoB;AAEvD,MAAM,WAAW,GAAG,eAAe,CAAC;AAEpC;AACA,MAAM,sBAAsB,GAAG,+BAA+B,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;AAEhF;;;;AAIA,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B;;;;SAIgB,iCAAiC,CAAC,QAAgB;IAChE,OAAO,KAAK,CAAC,qBAAqB,QAAQ,eAAe,CAAC,CAAC;AAC7D,CAAC;AAED;MACa,2BAA2B,GACpC,IAAI,cAAc,CAAuB,6BAA6B,EAAE;AAE5E;SACgB,mCAAmC,CAAC,OAAgB;IAClE,OAAO,MAAM,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAC,cAAc,EAAE,kBAAkB,EAAC,CAAC,CAAC;AACzF,CAAC;AAED;MACa,4CAA4C,GAAG;IAC1D,OAAO,EAAE,2BAA2B;IACpC,IAAI,EAAE,CAAC,OAAO,CAAC;IACf,UAAU,EAAE,mCAAmC;EAC/C;AAWF;MACa,2BAA2B,GACpC,IAAI,cAAc,CAA2B,6BAA6B,EAAE;IAC1E,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,mCAAmC;CAC7C,EAAE;AAEP;SACgB,mCAAmC;IACjD,OAAO;QACL,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,CAAC;QACZ,iBAAiB,EAAE,IAAI;KACxB,CAAC;AACJ,CAAC;MAIqB,eAAe;IAwHnC,YACU,QAAiB,EACjB,WAAoC,EACpC,iBAAmC,EACnC,iBAAmC,EACnC,OAAe,EACf,SAAmB,EACnB,cAA6B,EAC7B,aAA2B,EACnC,cAAmB,EACT,IAAoB,EACtB,eAAyC,EAC/B,SAAc;QAXxB,aAAQ,GAAR,QAAQ,CAAS;QACjB,gBAAW,GAAX,WAAW,CAAyB;QACpC,sBAAiB,GAAjB,iBAAiB,CAAkB;QACnC,sBAAiB,GAAjB,iBAAiB,CAAkB;QACnC,YAAO,GAAP,OAAO,CAAQ;QACf,cAAS,GAAT,SAAS,CAAU;QACnB,mBAAc,GAAd,cAAc,CAAe;QAC7B,kBAAa,GAAb,aAAa,CAAc;QAEzB,SAAI,GAAJ,IAAI,CAAgB;QACtB,oBAAe,GAAf,eAAe,CAA0B;QA7H3C,cAAS,GAAoB,OAAO,CAAC;QACrC,cAAS,GAAY,KAAK,CAAC;QAG3B,qBAAgB,GAAG,KAAK,CAAC;QACzB,kCAA6B,GAAG,KAAK,CAAC;QAEpC,oBAAe,GAAG,CAAC,CAAC;QAEX,oBAAe,GAAW,KAAK,CAAC;;QAgCrB,cAAS,GAAW,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;;QAGnD,cAAS,GAAW,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;QAgB/C,kBAAa,GAAyB,MAAM,CAAC;QA6BvE,aAAQ,GAAG,EAAE,CAAC;;QAaL,sBAAiB,GAC8B,EAAE,CAAC;;QASlD,eAAU,GAAG,IAAI,OAAO,EAAQ,CAAC;;;;;QA6H1C,mBAAc,GAAG,CAAC,KAAoB;YAC5C,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;gBAClF,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aACtC;SACF,CAAA;QAnHC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,eAAe,EAAE;YACnB,IAAI,eAAe,CAAC,QAAQ,EAAE;gBAC5B,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC;aAC1C;YAED,IAAI,eAAe,CAAC,aAAa,EAAE;gBACjC,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC,aAAa,CAAC;aACpD;SACF;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YACrD,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aACxC;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,iBAAiB,CAAC;YACxB,WAAW,CAAC,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;SAC5E,CAAC,CAAC;KACJ;;IA1ID,IACI,QAAQ,KAAsB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;IAC1D,IAAI,QAAQ,CAAC,KAAsB;;QACjC,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE;YAC5B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACvC,MAAA,IAAI,CAAC,gBAAgB,0CAAE,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;aACnC;SACF;KACF;;IAGD,IACI,QAAQ,KAAc,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;IAClD,IAAI,QAAQ,CAAC,KAAK;QAChB,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;;QAG9C,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACd;aAAM;YACL,IAAI,CAAC,gCAAgC,EAAE,CAAC;SACzC;KACF;;IAyBD,IACI,OAAO,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;IACvC,IAAI,OAAO,CAAC,KAAa;QACvB,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;;;;QAKhG,IAAI,CAAC,QAAQ,GAAG,KAAK,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;QAE1D,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC9C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACd;aAAM;YACL,IAAI,CAAC,gCAAgC,EAAE,CAAC;YACxC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;;;;;gBAK7B,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;oBACrB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;iBACvF,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;KACF;;IAID,IACI,YAAY,KAAK,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE;IACjD,IAAI,YAAY,CAAC,KAAuD;QACtE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SAC3C;KACF;IAqDD,eAAe;;QAEb,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,gCAAgC,EAAE,CAAC;QAExC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;aACzC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAChC,SAAS,CAAC,MAAM;;YAEf,IAAI,CAAC,MAAM,EAAE;gBACX,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aACtC;iBAAM,IAAI,MAAM,KAAK,UAAU,EAAE;gBAChC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;aACrC;SACJ,CAAC,CAAC;KACJ;;;;IAKD,WAAW;QACT,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;QAErD,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAEtC,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAC9B;;QAGD,aAAa,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAClE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC;YAC/C,aAAa,CAAC,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC;SAC5E,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAE3B,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC9E,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;KAClD;;IAGD,IAAI,CAAC,QAAgB,IAAI,CAAC,SAAS;QACjC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,iBAAiB,EAAE;YAC7D,CAAC,IAAI,CAAC,gBAAiB,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,gBAAiB,CAAC,cAAc,CAAC,EAAE;YACjF,OAAO;SACV;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;YACxB,IAAI,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACvE,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;QACjE,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;aAChC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAChC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1C,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,gBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpC;;IAGD,IAAI,CAAC,QAAgB,IAAI,CAAC,SAAS;QACjC,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnC;KACF;;IAGD,MAAM;QACJ,IAAI,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;KACtD;;IAGD,iBAAiB;QACf,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;KACrE;;IAeO,cAAc;QACpB,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,IAAI,CAAC,WAAW,CAAC;SACzB;QAED,MAAM,mBAAmB,GACrB,IAAI,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;QAGzE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;aACnB,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC;aACrC,qBAAqB,CAAC,IAAI,IAAI,CAAC,eAAe,UAAU,CAAC;aACzD,sBAAsB,CAAC,KAAK,CAAC;aAC7B,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC;aACxC,wBAAwB,CAAC,mBAAmB,CAAC,CAAC;QAEpE,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM;YACxE,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAExD,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACzB,IAAI,MAAM,CAAC,wBAAwB,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE;;;oBAGzF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;iBACtC;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YACtC,SAAS,EAAE,IAAI,CAAC,IAAI;YACpB,gBAAgB,EAAE,QAAQ;YAC1B,UAAU,EAAE,GAAG,IAAI,CAAC,eAAe,IAAI,WAAW,EAAE;YACpD,cAAc,EAAE,IAAI,CAAC,eAAe,EAAE;SACvC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEvC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;aAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAChC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAEnC,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE;aACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAChC,SAAS,CAAC,gBAAM,OAAA,MAAA,IAAI,CAAC,gBAAgB,0CAAE,sBAAsB,EAAE,CAAA,EAAA,CAAC,CAAC;QAEpE,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;;IAGO,OAAO;QACb,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE;YACtD,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;SAC3B;QAED,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;KAC9B;;IAGO,eAAe,CAAC,UAAsB;QAC5C,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC,gBAAqD,CAAC;QAC9F,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3C,QAAQ,CAAC,aAAa,CAAC;YACrB,IAAI,CAAC,UAAU,iCAAK,MAAM,CAAC,IAAI,GAAK,OAAO,CAAC,IAAI,EAAE;YAClD,IAAI,CAAC,UAAU,iCAAK,MAAM,CAAC,QAAQ,GAAK,OAAO,CAAC,QAAQ,EAAE;SAC3D,CAAC,CAAC;KACJ;;IAGS,UAAU,CAAC,QAA2B;QAC9C,OAAO,QAAQ,CAAC;KACjB;;;;;IAMD,UAAU;QACR,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,cAAwC,CAAC;QAE7C,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ,IAAI,OAAO,EAAE;YAC9C,cAAc,GAAG,EAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,OAAO,GAAG,KAAK,GAAG,QAAQ,EAAC,CAAC;SACvF;aAAM,IACL,QAAQ,IAAI,QAAQ;aACnB,QAAQ,IAAI,MAAM,IAAI,KAAK,CAAC;aAC5B,QAAQ,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE;YACjC,cAAc,GAAG,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAC,CAAC;SACxD;aAAM,IACL,QAAQ,IAAI,OAAO;aAClB,QAAQ,IAAI,OAAO,IAAI,KAAK,CAAC;aAC7B,QAAQ,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE;YAChC,cAAc,GAAG,EAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAC,CAAC;SACtD;aAAM,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;YACxD,MAAM,iCAAiC,CAAC,QAAQ,CAAC,CAAC;SACnD;QAED,MAAM,EAAC,CAAC,EAAE,CAAC,EAAC,GAAG,IAAI,CAAC,eAAe,CAAC,cAAe,CAAC,OAAO,EAAE,cAAe,CAAC,OAAO,CAAC,CAAC;QAEtF,OAAO;YACL,IAAI,EAAE,cAAe;YACrB,QAAQ,EAAE,EAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAC;SACnC,CAAC;KACH;;IAGD,mBAAmB;QACjB,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,eAA0C,CAAC;QAE/C,IAAI,QAAQ,IAAI,OAAO,EAAE;YACvB,eAAe,GAAG,EAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAAC;SAC5D;aAAM,IAAI,QAAQ,IAAI,OAAO,EAAE;YAC9B,eAAe,GAAG,EAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC;SACzD;aAAM,IACL,QAAQ,IAAI,QAAQ;aACnB,QAAQ,IAAI,MAAM,IAAI,KAAK,CAAC;aAC5B,QAAQ,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE;YACjC,eAAe,GAAG,EAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAAC;SACzD;aAAM,IACL,QAAQ,IAAI,OAAO;aAClB,QAAQ,IAAI,OAAO,IAAI,KAAK,CAAC;aAC7B,QAAQ,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE;YAChC,eAAe,GAAG,EAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAAC;SAC3D;aAAM,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE;YACxD,MAAM,iCAAiC,CAAC,QAAQ,CAAC,CAAC;SACnD;QAED,MAAM,EAAC,CAAC,EAAE,CAAC,EAAC,GAAG,IAAI,CAAC,eAAe,CAAC,eAAgB,CAAC,QAAQ,EAAE,eAAgB,CAAC,QAAQ,CAAC,CAAC;QAE1F,OAAO;YACL,IAAI,EAAE,eAAgB;YACtB,QAAQ,EAAE,EAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAC;SACrC,CAAC;KACH;;IAGO,qBAAqB;;;QAG3B,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC7C,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC;YAEtC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAChC,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B,CAAC,SAAS,CAAC;gBACV,IAAI,IAAI,CAAC,gBAAgB,EAAE;oBACzB,IAAI,CAAC,WAAY,CAAC,cAAc,EAAE,CAAC;iBACpC;aACF,CAAC,CAAC;SACJ;KACF;;IAGO,gBAAgB,CAAC,YAA8D;QACrF,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,gBAAgB,CAAC,YAAY,GAAG,YAAY,CAAC;YAClD,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC;SACvC;KACF;;IAGO,eAAe,CAAC,CAA0B,EAAE,CAAwB;QAC1E,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;YAC1D,IAAI,CAAC,KAAK,KAAK,EAAE;gBACf,CAAC,GAAG,QAAQ,CAAC;aACd;iBAAM,IAAI,CAAC,KAAK,QAAQ,EAAE;gBACzB,CAAC,GAAG,KAAK,CAAC;aACX;SACF;aAAM;YACL,IAAI,CAAC,KAAK,KAAK,EAAE;gBACf,CAAC,GAAG,OAAO,CAAC;aACb;iBAAM,IAAI,CAAC,KAAK,OAAO,EAAE;gBACxB,CAAC,GAAG,KAAK,CAAC;aACX;SACF;QAED,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,CAAC;KACf;;IAGO,2BAA2B,CAAC,cAAsC;QACxE,MAAM,EAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAC,GAAG,cAAc,CAAC;QACpD,IAAI,WAA4B,CAAC;;;QAIjC,IAAI,QAAQ,KAAK,QAAQ,EAAE;;;;YAIzB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;gBAC1C,WAAW,GAAG,OAAO,KAAK,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;aACpD;iBAAM;gBACL,WAAW,GAAG,OAAO,KAAK,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;aACtD;SACF;aAAM;YACL,WAAW,GAAG,QAAQ,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;SAC9E;QAED,IAAI,WAAW,KAAK,IAAI,CAAC,gBAAgB,EAAE;YACzC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;YAEpC,IAAI,UAAU,EAAE;gBACd,MAAM,WAAW,GAAG,GAAG,IAAI,CAAC,eAAe,IAAI,WAAW,GAAG,CAAC;gBAC9D,UAAU,CAAC,gBAAgB,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACjE,UAAU,CAAC,aAAa,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC;aACrD;YAED,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC;SACrC;KACF;;IAGO,gCAAgC;;QAEtC,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB;YACzD,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;YACjC,OAAO;SACR;;;QAID,IAAI,IAAI,CAAC,4BAA4B,EAAE,EAAE;YACvC,IAAI,CAAC,iBAAiB;iBACjB,IAAI,CAAC,CAAC,YAAY,EAAE;oBACnB,IAAI,CAAC,+BAA+B,EAAE,CAAC;oBACvC,IAAI,CAAC,IAAI,EAAE,CAAC;iBACb,CAAC,CAAC,CAAC;SACT;aAAM,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE;YACvC,IAAI,CAAC,iCAAiC,EAAE,CAAC;YAEzC,IAAI,CAAC,iBAAiB;iBACjB,IAAI,CAAC,CAAC,YAAY,EAAE;;;oBAGnB,IAAI,CAAC,+BAA+B,EAAE,CAAC;oBACvC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBACtC,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC;iBAC1E,CAAC,CAAC,CAAC;SACT;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;KAC5C;IAEO,+BAA+B;QACrC,IAAI,IAAI,CAAC,6BAA6B,EAAE;YACtC,OAAO;SACR;QACD,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;QAE1C,MAAM,aAAa,GAA8D,EAAE,CAAC;QACpF,IAAI,IAAI,CAAC,4BAA4B,EAAE,EAAE;YACvC,aAAa,CAAC,IAAI,CAChB,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,EACjC,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,KAAmB,CAAC,CAAC,CAC7D,CAAC;SACH;aAAM,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE;YACvC,IAAI,CAAC,iCAAiC,EAAE,CAAC;YACzC,MAAM,gBAAgB,GAAG;gBACvB,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACtC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;aACnD,CAAC;YAEF,aAAa,CAAC,IAAI,CAChB,CAAC,UAAU,EAAE,gBAAgB,CAAC,EAC9B,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAClC,CAAC;SACH;QAED,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAClC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;KAC/C;IAEO,aAAa,CACjB,SAAoE;QACtE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC;YAClC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC;SAC1F,CAAC,CAAC;KACJ;IAEO,4BAA4B;QAClC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KACvD;;IAGO,cAAc,CAAC,KAAiB;QACtC,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC5B,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC1F,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;;;;;YAM/C,IAAI,mBAAmB,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;gBAC7E,IAAI,CAAC,IAAI,EAAE,CAAC;aACb;SACF;KACF;;IAGO,iCAAiC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QAEpC,IAAI,QAAQ,KAAK,KAAK,EAAE;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;YAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;;;YAI5B,IAAI,QAAQ,KAAK,IAAI,KAAK,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,UAAU,CAAC,EAAE;gBAC1F,KAAK,CAAC,UAAU,GAAI,KAAa,CAAC,YAAY,GAAG,KAAK,CAAC,gBAAgB;oBAClE,KAAa,CAAC,aAAa,GAAG,MAAM,CAAC;aAC3C;;;YAID,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;gBAC1C,KAAa,CAAC,cAAc,GAAG,MAAM,CAAC;aACxC;YAED,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC;YAC3B,KAAK,CAAC,uBAAuB,GAAG,aAAa,CAAC;SAC/C;KACF;;;YAvkBF,SAAS;;;YApHR,OAAO;YAeP,UAAU;YANJ,gBAAgB;YAatB,gBAAgB;YAHhB,MAAM;YAZA,QAAQ;YAjBR,aAAa;YAAE,YAAY;;YAC3B,cAAc;;4CAkQjB,MAAM,SAAC,QAAQ;;;uBAlHjB,KAAK,SAAC,oBAAoB;uBAe1B,KAAK,SAAC,oBAAoB;wBAc1B,KAAK,SAAC,qBAAqB;wBAG3B,KAAK,SAAC,qBAAqB;4BAgB3B,KAAK,SAAC,yBAAyB;sBAG/B,KAAK,SAAC,YAAY;2BA6BlB,KAAK,SAAC,iBAAiB;;AA2e1B;;;;;;MAaa,UAAW,SAAQ,eAAiC;IAG/D,YACE,OAAgB,EAChB,UAAmC,EACnC,gBAAkC,EAClC,gBAAkC,EAClC,MAAc,EACd,QAAkB,EAClB,aAA4B,EAC5B,YAA0B,EACW,cAAmB,EAC5C,GAAmB,EACkB,cAAwC,EACvE,SAAc;QAEhC,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAC5F,YAAY,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;QAjB/C,sBAAiB,GAAG,gBAAgB,CAAC;KAkBvD;;;YA1BF,SAAS,SAAC;gBACT,QAAQ,EAAE,cAAc;gBACxB,QAAQ,EAAE,YAAY;gBACtB,IAAI,EAAE;oBACJ,OAAO,EAAE,qBAAqB;iBAC/B;aACF;;;YA9sBC,OAAO;YAeP,UAAU;YANJ,gBAAgB;YAatB,gBAAgB;YAHhB,MAAM;YAZA,QAAQ;YAjBR,aAAa;YAAE,YAAY;4CAquB9B,MAAM,SAAC,2BAA2B;YApuB/B,cAAc,uBAquBjB,QAAQ;4CACR,QAAQ,YAAI,MAAM,SAAC,2BAA2B;4CAC9C,MAAM,SAAC,QAAQ;;MAQE,qBAAqB;IAsBzC,YAAoB,kBAAqC;QAArC,uBAAkB,GAAlB,kBAAkB,CAAmB;;QARzD,gBAAW,GAAsB,SAAS,CAAC;;QAGnC,wBAAmB,GAAY,KAAK,CAAC;;QAG5B,YAAO,GAAkB,IAAI,OAAO,EAAE,CAAC;KAEK;;;;;IAM7D,IAAI,CAAC,KAAa;;QAEhB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;;QAGlC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;YAC/B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;YAC7B,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;;;YAIf,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB,EAAE,KAAK,CAAC,CAAC;KACX;;;;;IAMD,IAAI,CAAC,KAAa;;QAEhB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAElC,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;YAC/B,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;YAC5B,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;;;YAIhC,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB,EAAE,KAAK,CAAC,CAAC;KACX;;IAGD,WAAW;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;;IAGD,SAAS;QACP,OAAO,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC;KACvC;IAED,WAAW;QACT,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;KACzB;IAED,eAAe;QACb,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;KAClC;IAED,cAAc,CAAC,KAAqB;QAClC,MAAM,OAAO,GAAG,KAAK,CAAC,OAA4B,CAAC;QAEnD,IAAI,OAAO,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YAC7C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SACrB;QAED,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,QAAQ,EAAE;YACjD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;SACjC;KACF;;;;;;IAOD,sBAAsB;QACpB,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACd;KACF;;;;;;IAOD,aAAa;QACX,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;;;;;IAOS,OAAO,MAAW;;;YAzH7B,SAAS;;;YAztBR,iBAAiB;;AAq1BnB;;;;MAkBa,gBAAiB,SAAQ,qBAAqB;IAIzD,YACE,iBAAoC,EAC5B,mBAAuC;QAC/C,KAAK,CAAC,iBAAiB,CAAC,CAAC;QADjB,wBAAmB,GAAnB,mBAAmB,CAAoB;;QAJjD,eAAU,GAAgC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;KAM/F;;;YAtBF,SAAS,SAAC;gBACT,QAAQ,EAAE,uBAAuB;gBACjC,wRAA2B;gBAE3B,aAAa,EAAE,iBAAiB,CAAC,IAAI;gBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;gBAC/C,UAAU,EAAE,CAAC,oBAAoB,CAAC,YAAY,CAAC;gBAC/C,IAAI,EAAE;;;oBAGJ,cAAc,EAAE,sCAAsC;oBACtD,aAAa,EAAE,MAAM;iBACtB;;aACF;;;YAt2BC,iBAAiB;YAlBX,kBAAkB;;;ACZ1B;;;;;;;MAgCa,gBAAgB;;;YAZ5B,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,UAAU;oBACV,YAAY;oBACZ,aAAa;oBACb,eAAe;iBAChB;gBACD,OAAO,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,CAAC;gBAC7E,YAAY,EAAE,CAAC,UAAU,EAAE,gBAAgB,CAAC;gBAC5C,eAAe,EAAE,CAAC,gBAAgB,CAAC;gBACnC,SAAS,EAAE,CAAC,4CAA4C,CAAC;aAC1D;;;AC/BD;;;;;;;;ACAA;;;;;;"}
Note: See TracChangeset for help on using the changeset viewer.