blob: dc833a73d4b0383c9d747af7274cad7dfdb61f1a [file] [log] [blame]
{"version":3,"file":"material-tooltip.umd.min.js","sources":["../../src/material/tooltip/tooltip.ts","../../node_modules/tslib/tslib.es6.js","../../src/material/tooltip/tooltip-animations.ts","../../src/material/tooltip/tooltip-module.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 {AnimationEvent} from '@angular/animations';\nimport {AriaDescriber, FocusMonitor} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {coerceBooleanProperty} 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} 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 OnInit,\n Optional,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {HAMMER_LOADER, HammerLoader} from '@angular/platform-browser';\nimport {Observable, Subject} from 'rxjs';\nimport {take, takeUntil} from 'rxjs/operators';\n\nimport {matTooltipAnimations} from './tooltip-animations';\n\n\nexport type TooltipPosition = 'left' | 'right' | 'above' | 'below' | 'before' | 'after';\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 = 'mat-tooltip-panel';\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 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 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 '(longpress)': 'show()',\n '(keydown)': '_handleKeydown($event)',\n '(touchend)': '_handleTouchend()',\n },\n})\nexport class MatTooltip implements OnDestroy, OnInit {\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\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();\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('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 }\n }\n\n /** The default delay in ms before showing the tooltip after show is called */\n @Input('matTooltipShowDelay') showDelay = this._defaultOptions.showDelay;\n\n /** The default delay in ms before hiding the tooltip after hide is called */\n @Input('matTooltipHideDelay') hideDelay = this._defaultOptions.hideDelay;\n\n private _message = '';\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);\n\n // If the message is not a string (e.g. number), convert it to a string and trim it.\n this._message = value != null ? `${value}`.trim() : '';\n\n if (!this._message && this._isTooltipVisible()) {\n this.hide(0);\n } else {\n this._updateTooltipMessage();\n this._ariaDescriber.describe(this._elementRef.nativeElement, this.message);\n }\n }\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 private _manualListeners = new Map<string, EventListenerOrEventListenerObject>();\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 platform: Platform,\n private _ariaDescriber: AriaDescriber,\n private _focusMonitor: FocusMonitor,\n @Inject(MAT_TOOLTIP_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() private _dir: Directionality,\n @Optional() @Inject(MAT_TOOLTIP_DEFAULT_OPTIONS)\n private _defaultOptions: MatTooltipDefaultOptions,\n @Optional() @Inject(HAMMER_LOADER) hammerLoader?: HammerLoader) {\n\n this._scrollStrategy = scrollStrategy;\n const element: HTMLElement = _elementRef.nativeElement;\n const hasGestures = typeof window === 'undefined' || (window as any).Hammer || hammerLoader;\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 (!platform.IOS && !platform.ANDROID) {\n this._manualListeners\n .set('mouseenter', () => this.show())\n .set('mouseleave', () => this.hide());\n } else if (!hasGestures) {\n // If Hammerjs isn't loaded, fall back to showing on `touchstart`, otherwise\n // there's no way for the user to trigger the tooltip on a touch device.\n this._manualListeners.set('touchstart', () => this.show());\n }\n\n this._manualListeners.forEach((listener, event) => element.addEventListener(event, listener));\n\n _focusMonitor.monitor(_elementRef).pipe(takeUntil(this._destroyed)).subscribe(origin => {\n // Note that the focus monitor runs outside the Angular zone.\n if (!origin) {\n _ngZone.run(() => this.hide(0));\n } else if (origin === 'keyboard') {\n _ngZone.run(() => this.show());\n }\n });\n\n if (_defaultOptions && _defaultOptions.position) {\n this.position = _defaultOptions.position;\n }\n }\n\n /**\n * Setup styling-specific things\n */\n ngOnInit() {\n const element = this._elementRef.nativeElement;\n const elementStyle = element.style as CSSStyleDeclaration & {webkitUserDrag: string};\n\n if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n // When we bind a gesture event on an element (in this case `longpress`), HammerJS\n // will add some inline styles by default, including `user-select: none`. This is\n // problematic on iOS and in Safari, because it will prevent users from typing in inputs.\n // Since `user-select: none` is not needed for the `longpress` event and can cause unexpected\n // behavior for text fields, we always clear the `user-select` to avoid such issues.\n elementStyle.webkitUserSelect = elementStyle.userSelect = elementStyle.msUserSelect = '';\n }\n\n // Hammer applies `-webkit-user-drag: none` on all elements by default,\n // which breaks the native drag&drop. If the consumer explicitly made\n // the element draggable, clear the `-webkit-user-drag`.\n if (element.draggable && elementStyle.webkitUserDrag === 'none') {\n elementStyle.webkitUserDrag = '';\n }\n }\n\n /**\n * Dispose the tooltip when destroyed.\n */\n ngOnDestroy() {\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 this._manualListeners.forEach((listener, event) => {\n this._elementRef.nativeElement.removeEventListener(event, listener);\n });\n this._manualListeners.clear();\n\n this._destroyed.next();\n this._destroyed.complete();\n\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.message);\n this._focusMonitor.stopMonitoring(this._elementRef);\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\n this._detach();\n this._portal = this._portal || new ComponentPortal(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 /** Handles the keydown events on the host element. */\n _handleKeydown(e: KeyboardEvent) {\n if (this._isTooltipVisible() && e.keyCode === ESCAPE && !hasModifierKey(e)) {\n e.preventDefault();\n e.stopPropagation();\n this.hide(0);\n }\n }\n\n /** Handles the touchend events on the host element. */\n _handleTouchend() {\n this.hide(this._defaultOptions.touchendHideDelay);\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('.mat-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.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 =\n this._overlayRef!.getConfig().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 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 {\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 {\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.asObservable().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\nexport type TooltipVisibility = 'initial' | 'visible' | 'hidden';\n\n/**\n * Internal component that wraps the tooltip's content.\n * @docs-private\n */\n@Component({\n moduleId: module.id,\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 '(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;\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<any> = 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 constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _breakpointObserver: BreakpointObserver) {}\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);\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);\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","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\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 {\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 */\n\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {GestureConfig, MatCommonModule} from '@angular/material/core';\nimport {HAMMER_GESTURE_CONFIG} from '@angular/platform-browser';\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],\n declarations: [MatTooltip, TooltipComponent],\n entryComponents: [TooltipComponent],\n providers: [\n MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER,\n {provide: HAMMER_GESTURE_CONFIG, useClass: GestureConfig},\n ]\n})\nexport class MatTooltipModule {}\n"],"names":["getMatTooltipInvalidPositionError","position","Error","MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY","overlay","scrollStrategies","reposition","scrollThrottle","SCROLL_THROTTLE_MS","MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY","showDelay","hideDelay","touchendHideDelay","__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","matTooltipAnimations","tooltipState","trigger","state","style","opacity","transform","transition","animate","keyframes","offset","MAT_TOOLTIP_SCROLL_STRATEGY","InjectionToken","MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER","provide","deps","Overlay","useFactory","MAT_TOOLTIP_DEFAULT_OPTIONS","providedIn","factory","MatTooltip","_overlay","_elementRef","_scrollDispatcher","_viewContainerRef","_ngZone","platform","_ariaDescriber","_focusMonitor","scrollStrategy","_dir","_defaultOptions","hammerLoader","_this","_position","_disabled","_message","_manualListeners","Map","_destroyed","Subject","_scrollStrategy","element","nativeElement","hasGestures","window","Hammer","IOS","ANDROID","set","show","hide","forEach","listener","event","addEventListener","monitor","pipe","takeUntil","subscribe","origin","run","defineProperty","value","_overlayRef","_updatePosition","_tooltipInstance","updatePosition","coerceBooleanProperty","removeDescription","trim","_isTooltipVisible","_updateTooltipMessage","describe","message","_tooltipClass","_setTooltipClass","ngOnInit","elementStyle","nodeName","webkitUserSelect","userSelect","msUserSelect","draggable","webkitUserDrag","ngOnDestroy","dispose","removeEventListener","clear","next","complete","stopMonitoring","delay","disabled","_showTimeoutId","_hideTimeoutId","overlayRef","_createOverlay","_detach","_portal","ComponentPortal","TooltipComponent","attach","instance","afterHidden","toggle","isVisible","_handleKeydown","e","keyCode","ESCAPE","hasModifierKey","preventDefault","stopPropagation","_handleTouchend","scrollableAncestors","getAncestorScrollContainers","strategy","flexibleConnectedTo","withTransformOriginOn","withFlexibleDimensions","withViewportMargin","withScrollableContainers","positionChanges","change","scrollableViewProperties","isOverlayClipped","create","direction","positionStrategy","panelClass","detachments","hasAttached","detach","getConfig","_getOrigin","_getOverlayPosition","withPositions","tslib_1.__assign","main","fallback","originPosition","isLtr","originX","originY","_a","_invertPosition","x","y","overlayPosition","overlayX","overlayY","_markForCheck","onMicrotaskEmpty","asObservable","take","tooltipClass","type","Directive","args","selector","exportAs","host","(longpress)","(keydown)","(touchend)","ElementRef","ScrollDispatcher","ViewContainerRef","NgZone","Platform","AriaDescriber","FocusMonitor","undefined","decorators","Inject","Directionality","Optional","HAMMER_LOADER","Input","_changeDetectorRef","_breakpointObserver","_visibility","_closeOnInteraction","_onHide","_isHandset","observe","Breakpoints","Handset","clearTimeout","setTimeout","_animationStart","_animationDone","toState","_handleBodyInteraction","markForCheck","Component","template","styles","encapsulation","ViewEncapsulation","None","changeDetection","ChangeDetectionStrategy","OnPush","animations","aria-hidden","MatTooltipModule","NgModule","imports","A11yModule","CommonModule","OverlayModule","MatCommonModule","exports","declarations","entryComponents","providers","HAMMER_GESTURE_CONFIG","useClass","GestureConfig"],"mappings":"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"}