{"version":3,"file":"primeng-tooltip.mjs","sources":["../../src/tooltip/style/tooltipstyle.ts","../../src/tooltip/tooltip.ts","../../src/tooltip/primeng-tooltip.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { style } from '@primeuix/styles/tooltip';\nimport { BaseStyle } from 'primeng/base';\n\nconst classes = {\n    root: 'p-tooltip p-component',\n    arrow: 'p-tooltip-arrow',\n    text: 'p-tooltip-text'\n};\n\n@Injectable()\nexport class TooltipStyle extends BaseStyle {\n    name = 'tooltip';\n\n    style = style;\n\n    classes = classes;\n}\n\n/**\n *\n * Tooltip directive provides advisory information for a component.\n *\n * [Live Demo](https://www.primeng.org/tooltip)\n *\n * @module tooltipstyle\n *\n */\nexport enum TooltipClasses {\n    /**\n     * Class name of the root element\n     */\n    root = 'p-tooltip',\n    /**\n     * Class name of the arrow element\n     */\n    arrow = 'p-tooltip-arrow',\n    /**\n     * Class name of the text element\n     */\n    text = 'p-tooltip-text'\n}\n\nexport interface TooltipStyle extends BaseStyle {}\n","import { isPlatformBrowser } from '@angular/common';\nimport { booleanAttribute, computed, Directive, effect, ElementRef, inject, InjectionToken, input, NgModule, numberAttribute, TemplateRef, untracked, ViewContainerRef } from '@angular/core';\nimport { appendChild, createElement, fadeIn, findSingle, getOuterHeight, getOuterWidth, getViewport, getWindowScrollLeft, getWindowScrollTop, hasClass, removeChild, uuid } from '@primeuix/utils';\nimport { TooltipOptions } from 'primeng/api';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { BindModule } from 'primeng/bind';\nimport { ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport type { AppendTo } from 'primeng/types/shared';\nimport { Nullable } from 'primeng/ts-helpers';\nimport { ZIndexUtils } from 'primeng/utils';\nimport { TooltipStyle } from './style/tooltipstyle';\nimport type { TooltipEvent, TooltipPassThrough, TooltipPassThroughOptions, TooltipPosition } from 'primeng/types/tooltip';\n\nconst TOOLTIP_INSTANCE = new InjectionToken<Tooltip>('TOOLTIP_INSTANCE');\n\n/**\n * Tooltip directive provides advisory information for a component.\n * @group Components\n */\n@Directive({\n    selector: '[pTooltip]',\n    standalone: true,\n    providers: [TooltipStyle, { provide: TOOLTIP_INSTANCE, useExisting: Tooltip }, { provide: PARENT_INSTANCE, useExisting: Tooltip }]\n})\nexport class Tooltip extends BaseComponent<TooltipPassThroughOptions> {\n    componentName = 'Tooltip';\n\n    $pcTooltip: Tooltip | undefined = inject(TOOLTIP_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n    /**\n     * Position of the tooltip.\n     * @group Props\n     */\n    tooltipPosition = input<TooltipPosition>();\n    /**\n     * Event to show the tooltip.\n     * @group Props\n     */\n    tooltipEvent = input<TooltipEvent>('hover');\n    /**\n     * Type of CSS position.\n     * @group Props\n     */\n    positionStyle = input<string>();\n    /**\n     * Style class of the tooltip.\n     * @group Props\n     */\n    tooltipStyleClass = input<string>();\n    /**\n     * Whether the z-index should be managed automatically to always go on top or have a fixed value.\n     * @group Props\n     */\n    tooltipZIndex = input<string>();\n    /**\n     * By default the tooltip contents are rendered as text. Set to false to support html tags in the content.\n     * @group Props\n     */\n    escape = input(true, { transform: booleanAttribute });\n    /**\n     * Delay to show the tooltip in milliseconds.\n     * @group Props\n     */\n    showDelay = input<number | undefined, unknown>(undefined, { transform: numberAttribute });\n    /**\n     * Delay to hide the tooltip in milliseconds.\n     * @group Props\n     */\n    hideDelay = input<number | undefined, unknown>(undefined, { transform: numberAttribute });\n    /**\n     * Time to wait in milliseconds to hide the tooltip even it is active.\n     * @group Props\n     */\n    life = input<number | undefined, unknown>(undefined, { transform: numberAttribute });\n    /**\n     * Specifies the additional vertical offset of the tooltip from its default position.\n     * @group Props\n     */\n    positionTop = input<number | undefined, unknown>(undefined, { transform: numberAttribute });\n    /**\n     * Specifies the additional horizontal offset of the tooltip from its default position.\n     * @group Props\n     */\n    positionLeft = input<number | undefined, unknown>(undefined, { transform: numberAttribute });\n    /**\n     * Whether to hide tooltip when hovering over tooltip content.\n     * @group Props\n     */\n    autoHide = input(true, { transform: booleanAttribute });\n    /**\n     * Automatically adjusts the element position when there is not enough space on the selected position.\n     * @group Props\n     */\n    fitContent = input(true, { transform: booleanAttribute });\n    /**\n     * Whether to hide tooltip on escape key press.\n     * @group Props\n     */\n    hideOnEscape = input(true, { transform: booleanAttribute });\n    /**\n     * Whether to show the tooltip only when the target text overflows (e.g., ellipsis is active).\n     * @group Props\n     */\n    showOnEllipsis = input(false, { transform: booleanAttribute });\n    /**\n     * Content of the tooltip.\n     * @group Props\n     */\n    content = input<string | TemplateRef<HTMLElement> | undefined>(undefined, { alias: 'pTooltip' });\n    /**\n     * When present, it specifies that the component should be disabled.\n     * @defaultValue false\n     * @group Props\n     */\n    tooltipDisabled = input(false, { transform: booleanAttribute });\n    /**\n     * Specifies the tooltip configuration options for the component.\n     * @group Props\n     */\n    tooltipOptions = input<TooltipOptions>();\n    /**\n     * Target element to attach the overlay, valid values are \"body\" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]=\"mydiv\" for a div element having #mydiv as variable name).\n     * @defaultValue 'self'\n     * @group Props\n     */\n    appendTo = input<AppendTo>(undefined);\n\n    $appendTo = computed(() => this.appendTo() || this.config.overlayAppendTo());\n\n    private readonly tooltipId = uuid('pn_id_') + '_tooltip';\n\n    /**\n     * Computed tooltip options that merges individual props with tooltipOptions.\n     * Priority: tooltipOptions > individual props (with inline defaults)\n     */\n    _tooltipOptions = computed<TooltipOptions>(() => ({\n        tooltipLabel: this.content() as string,\n        tooltipPosition: this.tooltipPosition() ?? 'right',\n        tooltipEvent: this.tooltipEvent(),\n        appendTo: this.appendTo() ?? 'body',\n        positionStyle: this.positionStyle(),\n        tooltipStyleClass: this.tooltipStyleClass(),\n        tooltipZIndex: this.tooltipZIndex() ?? 'auto',\n        escape: this.escape(),\n        showDelay: this.showDelay(),\n        hideDelay: this.hideDelay(),\n        life: this.life(),\n        positionTop: this.positionTop() ?? 0,\n        positionLeft: this.positionLeft() ?? 0,\n        autoHide: this.autoHide(),\n        hideOnEscape: this.hideOnEscape(),\n        showOnEllipsis: this.showOnEllipsis(),\n        disabled: this.tooltipDisabled(),\n        ...this.tooltipOptions(),\n        id: this.tooltipId\n    }));\n\n    container: HTMLDivElement | null = null;\n\n    styleClass: string | undefined;\n\n    tooltipText: HTMLDivElement | null = null;\n\n    rootPTClasses: string = '';\n\n    showTimeout: ReturnType<typeof setTimeout> | null = null;\n\n    hideTimeout: ReturnType<typeof setTimeout> | null = null;\n\n    active: boolean | undefined;\n\n    mouseEnterListener: Nullable<Function>;\n\n    mouseLeaveListener: Nullable<Function>;\n\n    containerMouseleaveListener: Nullable<Function>;\n\n    clickListener: Nullable<Function>;\n\n    focusListener: Nullable<Function>;\n\n    blurListener: Nullable<Function>;\n\n    touchStartListener: Nullable<Function>;\n\n    touchEndListener: Nullable<Function>;\n\n    documentTouchListener: Nullable<Function>;\n\n    documentEscapeListener: Nullable<Function>;\n\n    scrollHandler: ConnectedOverlayScrollHandler | null = null;\n\n    resizeListener: ((event: Event) => void) | null = null;\n\n    _componentStyle = inject(TooltipStyle);\n\n    /**\n     * Used to pass attributes to DOM elements inside the Tooltip component.\n     * @defaultValue undefined\n     * @group Props\n     */\n    pTooltipPT = input<TooltipPassThrough | undefined>();\n    /**\n     * Indicates whether the component should be rendered without styles.\n     * @defaultValue undefined\n     * @group Props\n     */\n    pTooltipUnstyled = input<boolean | undefined>();\n\n    private viewContainer = inject(ViewContainerRef);\n\n    constructor() {\n        super();\n\n        effect(() => {\n            const pt = this.pTooltipPT();\n            pt && this.directivePT.set(pt);\n        });\n\n        effect(() => {\n            this.pTooltipUnstyled() && this.directiveUnstyled.set(this.pTooltipUnstyled());\n        });\n\n        effect(() => {\n            const content = this.content();\n\n            untracked(() => {\n                if (this.active) {\n                    if (content) {\n                        if (this.container && this.container.offsetParent) {\n                            this.updateText();\n                            this.align();\n                        } else {\n                            this.show();\n                        }\n                    } else {\n                        this.hide();\n                    }\n                }\n            });\n        });\n\n        effect(() => {\n            const disabled = this.tooltipDisabled();\n\n            untracked(() => {\n                if (disabled) {\n                    this.deactivate();\n                }\n            });\n        });\n\n        effect(() => {\n            const options = this.tooltipOptions();\n\n            untracked(() => {\n                if (options) {\n                    this.deactivate();\n\n                    if (this.active) {\n                        if (this.getOption('tooltipLabel')) {\n                            if (this.container && this.container.offsetParent) {\n                                this.updateText();\n                                this.align();\n                            } else {\n                                this.show();\n                            }\n                        } else {\n                            this.hide();\n                        }\n                    }\n                }\n            });\n        });\n    }\n\n    onAfterViewInit() {\n        if (isPlatformBrowser(this.platformId)) {\n            const tooltipEvent = this.getOption('tooltipEvent');\n\n            if (tooltipEvent === 'hover' || tooltipEvent === 'both') {\n                this.mouseEnterListener = this.onMouseEnter.bind(this);\n                this.mouseLeaveListener = this.onMouseLeave.bind(this);\n                this.clickListener = this.onInputClick.bind(this);\n                this.el.nativeElement.addEventListener('mouseenter', this.mouseEnterListener);\n                this.el.nativeElement.addEventListener('click', this.clickListener);\n                this.el.nativeElement.addEventListener('mouseleave', this.mouseLeaveListener);\n\n                // Touch support\n                this.touchStartListener = this.onTouchStart.bind(this);\n                this.touchEndListener = this.onTouchEnd.bind(this);\n                this.el.nativeElement.addEventListener('touchstart', this.touchStartListener, { passive: true });\n                this.el.nativeElement.addEventListener('touchend', this.touchEndListener, { passive: true });\n            }\n            if (tooltipEvent === 'focus' || tooltipEvent === 'both') {\n                this.focusListener = this.onFocus.bind(this);\n                this.blurListener = this.onBlur.bind(this);\n\n                let target = this.el.nativeElement.querySelector('.p-component');\n\n                if (!target) {\n                    target = this.getTarget(this.el.nativeElement);\n                }\n\n                target.addEventListener('focus', this.focusListener);\n                target.addEventListener('blur', this.blurListener);\n            }\n        }\n    }\n\n    isAutoHide(): boolean {\n        return this.getOption('autoHide');\n    }\n\n    onMouseEnter(e: Event) {\n        if (!this.container && !this.showTimeout) {\n            this.activate();\n        }\n    }\n\n    onMouseLeave(e: MouseEvent) {\n        if (!this.isAutoHide()) {\n            const valid = hasClass(e.relatedTarget as any, 'p-tooltip') || hasClass(e.relatedTarget as any, 'p-tooltip-text') || hasClass(e.relatedTarget as any, 'p-tooltip-arrow');\n            !valid && this.deactivate();\n        } else {\n            this.deactivate();\n        }\n    }\n\n    onTouchStart(e: TouchEvent) {\n        if (!this.container && !this.showTimeout) {\n            this.activate();\n\n            if (!this.isAutoHide()) {\n                this.bindDocumentTouchListener();\n            }\n        }\n    }\n\n    onTouchEnd(e: TouchEvent) {\n        if (this.isAutoHide()) {\n            this.deactivate();\n        }\n    }\n\n    bindDocumentTouchListener() {\n        if (!this.documentTouchListener) {\n            this.documentTouchListener = this.renderer.listen('document', 'touchstart', (e: TouchEvent) => {\n                const target = e.target as Node;\n                if (this.container && !this.container.contains(target) && !this.el.nativeElement.contains(target)) {\n                    this.deactivate();\n                    this.unbindDocumentTouchListener();\n                }\n            });\n        }\n    }\n\n    unbindDocumentTouchListener() {\n        if (this.documentTouchListener) {\n            this.documentTouchListener();\n            this.documentTouchListener = null;\n        }\n    }\n\n    onFocus(e: Event) {\n        this.activate();\n    }\n\n    onBlur(e: Event) {\n        this.deactivate();\n    }\n\n    onInputClick(e: Event) {\n        this.deactivate();\n    }\n\n    hasEllipsis(): boolean {\n        const el = this.el.nativeElement;\n        return el.offsetWidth < el.scrollWidth || el.offsetHeight < el.scrollHeight;\n    }\n\n    activate() {\n        if (this.active) return;\n\n        if (this.getOption('showOnEllipsis') && !this.hasEllipsis()) {\n            return;\n        }\n\n        this.active = true;\n        this.clearHideTimeout();\n\n        const showDelay = this.getOption('showDelay');\n        if (showDelay) {\n            this.showTimeout = setTimeout(() => {\n                this.show();\n            }, showDelay);\n        } else {\n            this.show();\n        }\n\n        const life = this.getOption('life');\n        if (life) {\n            const duration = showDelay ? life + showDelay : life;\n            this.hideTimeout = setTimeout(() => {\n                this.hide();\n            }, duration);\n        }\n\n        if (this.getOption('hideOnEscape')) {\n            this.documentEscapeListener = this.renderer.listen('document', 'keydown.escape', () => {\n                this.deactivate();\n                this.documentEscapeListener?.();\n            });\n        }\n    }\n\n    deactivate() {\n        this.active = false;\n        this.clearShowTimeout();\n\n        const hideDelay = this.getOption('hideDelay');\n        if (hideDelay) {\n            this.clearHideTimeout(); //life timeout\n            this.hideTimeout = setTimeout(() => {\n                this.hide();\n            }, hideDelay);\n        } else {\n            this.hide();\n        }\n\n        if (this.documentEscapeListener) {\n            this.documentEscapeListener();\n        }\n    }\n\n    create() {\n        if (this.container) {\n            this.clearHideTimeout();\n            this.remove();\n        }\n\n        const container = createElement('div', { class: this.cx('root'), 'p-bind': this.ptm('root'), 'data-pc-section': 'root' }) as HTMLDivElement;\n        const tooltipArrow = createElement('div', { class: this.cx('arrow'), 'p-bind': this.ptm('arrow'), 'data-pc-section': 'arrow' }) as HTMLDivElement;\n        const tooltipText = createElement('div', { class: this.cx('text'), 'p-bind': this.ptm('text'), 'data-pc-section': 'text' }) as HTMLDivElement;\n\n        container.setAttribute('role', 'tooltip');\n        container.appendChild(tooltipArrow);\n\n        this.container = container;\n        this.tooltipText = tooltipText;\n\n        this.updateText();\n\n        if (this.getOption('positionStyle')) {\n            container.style.position = this.getOption('positionStyle');\n        }\n\n        container.appendChild(tooltipText);\n\n        if (this.getOption('appendTo') === 'body') document.body.appendChild(container);\n        else if (this.getOption('appendTo') === 'target') appendChild(container, this.el.nativeElement);\n        else appendChild(this.getOption('appendTo'), container);\n\n        container.style.display = 'none';\n\n        if (this.fitContent()) {\n            container.style.width = 'fit-content';\n        }\n\n        if (this.isAutoHide()) {\n            container.style.pointerEvents = 'none';\n        } else {\n            container.style.pointerEvents = 'unset';\n            this.bindContainerMouseleaveListener();\n        }\n    }\n\n    bindContainerMouseleaveListener() {\n        if (!this.containerMouseleaveListener && this.container) {\n            this.containerMouseleaveListener = this.renderer.listen(this.container, 'mouseleave', () => {\n                this.deactivate();\n            });\n        }\n    }\n\n    unbindContainerMouseleaveListener() {\n        if (this.containerMouseleaveListener) {\n            this.bindContainerMouseleaveListener();\n            this.containerMouseleaveListener = null;\n        }\n    }\n\n    show() {\n        if (!this.getOption('tooltipLabel') || this.getOption('disabled')) {\n            return;\n        }\n\n        this.create();\n\n        const container = this.container!;\n        const nativeElement = this.el.nativeElement;\n        const pDialogWrapper = nativeElement.closest('p-dialog');\n\n        if (pDialogWrapper) {\n            setTimeout(() => {\n                if (this.container) {\n                    this.container.style.display = 'inline-block';\n                    this.align();\n                }\n            }, 100);\n        } else {\n            container.style.display = 'inline-block';\n            this.align();\n        }\n\n        fadeIn(container, 250);\n\n        if (this.getOption('tooltipZIndex') === 'auto') ZIndexUtils.set('tooltip', container, this.config.zIndex.tooltip);\n        else container.style.zIndex = this.getOption('tooltipZIndex');\n\n        this.bindDocumentResizeListener();\n        this.bindScrollListener();\n    }\n\n    hide() {\n        if (this.getOption('tooltipZIndex') === 'auto') {\n            ZIndexUtils.clear(this.container);\n        }\n        this.remove();\n    }\n\n    updateText() {\n        if (!this.tooltipText) return;\n\n        const content = this.getOption('tooltipLabel');\n        if (content && typeof content.createEmbeddedView === 'function') {\n            const embeddedViewRef = this.viewContainer.createEmbeddedView(content);\n            embeddedViewRef.detectChanges();\n            embeddedViewRef.rootNodes.forEach((node) => this.tooltipText!.appendChild(node));\n        } else if (this.getOption('escape')) {\n            this.tooltipText.innerHTML = '';\n            this.tooltipText.appendChild(document.createTextNode(content));\n        } else {\n            this.tooltipText.innerHTML = content;\n        }\n    }\n\n    align() {\n        const position = this.getOption('tooltipPosition') as keyof typeof positionPriority;\n\n        const positionPriority = {\n            top: [this.alignTop, this.alignBottom, this.alignRight, this.alignLeft],\n            bottom: [this.alignBottom, this.alignTop, this.alignRight, this.alignLeft],\n            left: [this.alignLeft, this.alignRight, this.alignTop, this.alignBottom],\n            right: [this.alignRight, this.alignLeft, this.alignTop, this.alignBottom]\n        };\n\n        const alignFns = positionPriority[position] || [];\n        for (let [index, alignmentFn] of alignFns.entries()) {\n            if (index === 0) alignmentFn.call(this);\n            else if (this.isOutOfBounds()) alignmentFn.call(this);\n            else break;\n        }\n    }\n\n    getHostOffset() {\n        if (this.getOption('appendTo') === 'body' || this.getOption('appendTo') === 'target') {\n            let offset = this.el.nativeElement.getBoundingClientRect();\n            let targetLeft = offset.left + getWindowScrollLeft();\n            let targetTop = offset.top + getWindowScrollTop();\n\n            return { left: targetLeft, top: targetTop };\n        } else {\n            return { left: 0, top: 0 };\n        }\n    }\n\n    private get activeElement(): HTMLElement {\n        return this.el.nativeElement.nodeName.startsWith('P-') ? (findSingle(this.el.nativeElement, '.p-component') as HTMLElement) : this.el.nativeElement;\n    }\n\n    alignRight() {\n        this.preAlign('right');\n        const el = this.activeElement;\n        const offsetLeft = getOuterWidth(el);\n        const offsetTop = (getOuterHeight(el) - getOuterHeight(this.container!)) / 2;\n        this.alignTooltip(offsetLeft, offsetTop);\n        let arrowElement = this.getArrowElement();\n\n        if (arrowElement) {\n            arrowElement.style.top = '50%';\n            arrowElement.style.right = '';\n            arrowElement.style.bottom = '';\n            arrowElement.style.left = '0';\n        }\n    }\n\n    alignLeft() {\n        this.preAlign('left');\n        let arrowElement = this.getArrowElement();\n        let offsetLeft = getOuterWidth(this.container!);\n        let offsetTop = (getOuterHeight(this.el.nativeElement) - getOuterHeight(this.container!)) / 2;\n        this.alignTooltip(-offsetLeft, offsetTop);\n\n        if (arrowElement) {\n            arrowElement.style.top = '50%';\n            arrowElement.style.right = '0';\n            arrowElement.style.bottom = '';\n            arrowElement.style.left = '';\n        }\n    }\n\n    alignTop() {\n        this.preAlign('top');\n        let arrowElement = this.getArrowElement();\n        let hostOffset = this.getHostOffset();\n        let elementWidth = getOuterWidth(this.container!);\n\n        let offsetLeft = (getOuterWidth(this.el.nativeElement) - getOuterWidth(this.container!)) / 2;\n        let offsetTop = getOuterHeight(this.container!);\n        this.alignTooltip(offsetLeft, -offsetTop);\n\n        let elementRelativeCenter = hostOffset.left - this.getHostOffset().left + elementWidth / 2;\n        if (arrowElement) {\n            arrowElement.style.top = '';\n            arrowElement.style.right = '';\n            arrowElement.style.bottom = '0';\n            arrowElement.style.left = elementRelativeCenter + 'px';\n        }\n    }\n\n    getArrowElement(): HTMLElement | null {\n        return findSingle(this.container!, '[data-pc-section=\"arrow\"]') as HTMLElement | null;\n    }\n\n    alignBottom() {\n        this.preAlign('bottom');\n        let arrowElement = this.getArrowElement();\n        let elementWidth = getOuterWidth(this.container!);\n        let hostOffset = this.getHostOffset();\n        let offsetLeft = (getOuterWidth(this.el.nativeElement) - getOuterWidth(this.container!)) / 2;\n        let offsetTop = getOuterHeight(this.el.nativeElement);\n        this.alignTooltip(offsetLeft, offsetTop);\n\n        let elementRelativeCenter = hostOffset.left - this.getHostOffset().left + elementWidth / 2;\n\n        if (arrowElement) {\n            arrowElement.style.top = '0';\n            arrowElement.style.right = '';\n            arrowElement.style.bottom = '';\n            arrowElement.style.left = elementRelativeCenter + 'px';\n        }\n    }\n\n    alignTooltip(offsetLeft: number, offsetTop: number) {\n        let hostOffset = this.getHostOffset();\n        let left = hostOffset.left + offsetLeft;\n        let top = hostOffset.top + offsetTop;\n        this.container!.style.left = left + this.getOption('positionLeft') + 'px';\n        this.container!.style.top = top + this.getOption('positionTop') + 'px';\n    }\n\n    getOption(option: string) {\n        const options = this._tooltipOptions();\n        return options[option];\n    }\n\n    getTarget(el: Element) {\n        return hasClass(el, 'p-inputwrapper') ? findSingle(el, 'input') : el;\n    }\n\n    preAlign(position: string) {\n        this.container!.style.left = -999 + 'px';\n        this.container!.style.top = -999 + 'px';\n        this.container!.className = this.cn(this.cx('root'), this.ptm('root')?.class, 'p-tooltip-' + position, this.getOption('tooltipStyleClass') ?? '') ?? '';\n    }\n\n    isOutOfBounds(): boolean {\n        let offset = this.container!.getBoundingClientRect();\n        let targetTop = offset.top;\n        let targetLeft = offset.left;\n        let width = getOuterWidth(this.container!);\n        let height = getOuterHeight(this.container!);\n        let viewport = getViewport();\n\n        return targetLeft + width > viewport.width || targetLeft < 0 || targetTop < 0 || targetTop + height > viewport.height;\n    }\n\n    onWindowResize(e: Event) {\n        this.hide();\n    }\n\n    bindDocumentResizeListener() {\n        const listener = this.onWindowResize.bind(this);\n        this.resizeListener = listener;\n        window.addEventListener('resize', listener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.resizeListener) {\n            window.removeEventListener('resize', this.resizeListener);\n            this.resizeListener = null;\n        }\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.el.nativeElement, () => {\n                if (this.container) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    unbindEvents() {\n        const tooltipEvent = this.getOption('tooltipEvent');\n\n        if (tooltipEvent === 'hover' || tooltipEvent === 'both') {\n            this.el.nativeElement.removeEventListener('mouseenter', this.mouseEnterListener);\n            this.el.nativeElement.removeEventListener('mouseleave', this.mouseLeaveListener);\n            this.el.nativeElement.removeEventListener('click', this.clickListener);\n\n            // Touch support\n            this.el.nativeElement.removeEventListener('touchstart', this.touchStartListener);\n            this.el.nativeElement.removeEventListener('touchend', this.touchEndListener);\n            this.unbindDocumentTouchListener();\n        }\n        if (tooltipEvent === 'focus' || tooltipEvent === 'both') {\n            let target = this.el.nativeElement.querySelector('.p-component');\n\n            if (!target) {\n                target = this.getTarget(this.el.nativeElement);\n            }\n\n            target.removeEventListener('focus', this.focusListener);\n            target.removeEventListener('blur', this.blurListener);\n        }\n        this.unbindDocumentResizeListener();\n    }\n\n    remove() {\n        if (this.container && this.container.parentElement) {\n            if (this.getOption('appendTo') === 'body') document.body.removeChild(this.container);\n            else if (this.getOption('appendTo') === 'target') this.el.nativeElement.removeChild(this.container);\n            else removeChild(this.getOption('appendTo'), this.container);\n        }\n\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n        this.unbindContainerMouseleaveListener();\n        this.unbindDocumentTouchListener();\n        this.clearTimeouts();\n        this.container = null;\n        this.scrollHandler = null;\n    }\n\n    clearShowTimeout() {\n        if (this.showTimeout) {\n            clearTimeout(this.showTimeout);\n            this.showTimeout = null;\n        }\n    }\n\n    clearHideTimeout() {\n        if (this.hideTimeout) {\n            clearTimeout(this.hideTimeout);\n            this.hideTimeout = null;\n        }\n    }\n\n    clearTimeouts() {\n        this.clearShowTimeout();\n        this.clearHideTimeout();\n    }\n\n    onDestroy() {\n        this.unbindEvents();\n\n        if (this.container) {\n            ZIndexUtils.clear(this.container);\n        }\n\n        this.remove();\n\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.documentEscapeListener) {\n            this.documentEscapeListener();\n        }\n    }\n}\n\n@NgModule({\n    imports: [Tooltip, BindModule],\n    exports: [Tooltip, BindModule]\n})\nexport class TooltipModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}