{"version":3,"file":"primeng-tooltip.umd.js","sources":["../../src/app/components/tooltip/tooltip.ts","../../src/app/components/tooltip/primeng-tooltip.ts"],"sourcesContent":["import { NgModule, Directive, ElementRef, AfterViewInit, OnDestroy, Input, NgZone } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\n\n@Directive({\n    selector: '[pTooltip]'\n})\nexport class Tooltip implements AfterViewInit, OnDestroy {\n\n    @Input() tooltipPosition: string = 'right';\n\n    @Input() tooltipEvent: string = 'hover';\n\n    @Input() appendTo: any = 'body';\n\n    @Input() positionStyle: string;\n\n    @Input() tooltipStyleClass: string;\n\n    @Input() tooltipZIndex: string = 'auto';\n\n    @Input() escape: boolean = true;\n\n    @Input() showDelay: number;\n\n    @Input() hideDelay: number;\n\n    @Input() life: number;\n\n    @Input(\"tooltipDisabled\") get disabled(): boolean {\n        return this._disabled;\n    }\n    set disabled(val:boolean) {\n        this._disabled = val;\n        this.deactivate();\n    }\n\n    _disabled: boolean;\n\n    container: any;\n\n    styleClass: string;\n\n    tooltipText: any;\n\n    showTimeout: any;\n\n    hideTimeout: any;\n\n    active: boolean;\n\n    _text: string;\n\n    mouseEnterListener: Function;\n\n    mouseLeaveListener: Function;\n\n    clickListener: Function;\n\n    focusListener: Function;\n\n    blurListener: Function;\n\n    scrollHandler: any;\n\n    resizeListener: any;\n\n    constructor(public el: ElementRef, public zone: NgZone) { }\n\n    ngAfterViewInit() {\n        this.zone.runOutsideAngular(() => {\n            if (this.tooltipEvent === 'hover') {\n                this.mouseEnterListener = this.onMouseEnter.bind(this);\n                this.mouseLeaveListener = this.onMouseLeave.bind(this);\n                this.clickListener = this.onClick.bind(this);\n                this.el.nativeElement.addEventListener('mouseenter', this.mouseEnterListener);\n                this.el.nativeElement.addEventListener('mouseleave', this.mouseLeaveListener);\n                this.el.nativeElement.addEventListener('click', this.clickListener);\n            }\n            else if (this.tooltipEvent === 'focus') {\n                this.focusListener = this.onFocus.bind(this);\n                this.blurListener = this.onBlur.bind(this);\n                this.el.nativeElement.addEventListener('focus', this.focusListener);\n                this.el.nativeElement.addEventListener('blur', this.blurListener);\n            }\n        });\n    }\n\n    onMouseEnter(e: Event) {\n        if (!this.container && !this.showTimeout) {\n            this.activate();\n        }\n    }\n\n    onMouseLeave(e: Event) {\n        this.deactivate();\n    }\n\n    onFocus(e: Event) {\n        this.activate();\n    }\n\n    onBlur(e: Event) {\n        this.deactivate();\n    }\n\n    onClick(e: Event) {\n        this.deactivate();\n    }\n\n    activate() {\n        this.active = true;\n        this.clearHideTimeout();\n\n        if (this.showDelay)\n            this.showTimeout = setTimeout(() => { this.show() }, this.showDelay);\n        else\n            this.show();\n\n        if (this.life) {\n            let duration = this.showDelay ? this.life + this.showDelay : this.life;\n            this.hideTimeout = setTimeout(() => { this.hide() }, duration);\n        }\n    }\n\n    deactivate() {\n        this.active = false;\n        this.clearShowTimeout();\n\n        if (this.hideDelay) {\n            this.clearHideTimeout();    //life timeout\n            this.hideTimeout = setTimeout(() => { this.hide() }, this.hideDelay);\n        }\n        else {\n            this.hide();\n        }\n    }\n\n    get text(): string {\n        return this._text;\n    }\n\n    @Input('pTooltip') set text(text: string) {\n        this._text = text;\n        if (this.active) {\n            if (this._text) {\n                if (this.container && this.container.offsetParent) {\n                    this.updateText();\n\t\t\t\t\tthis.align();\n\t\t\t\t}\n                else {\n                    this.show();\n                }\n            }\n            else {\n                this.hide();\n            }\n        }\n    }\n\n    create() {\n        if (this.container) {\n            this.clearHideTimeout();\n            this.remove();\n        }\n\n        this.container = document.createElement('div');\n\n        let tooltipArrow = document.createElement('div');\n        tooltipArrow.className = 'p-tooltip-arrow';\n        this.container.appendChild(tooltipArrow);\n\n        this.tooltipText = document.createElement('div');\n        this.tooltipText.className = 'p-tooltip-text';\n\n        this.updateText();\n\n        if (this.positionStyle) {\n            this.container.style.position = this.positionStyle;\n        }\n\n        this.container.appendChild(this.tooltipText);\n\n        if (this.appendTo === 'body')\n            document.body.appendChild(this.container);\n        else if (this.appendTo === 'target')\n            DomHandler.appendChild(this.container, this.el.nativeElement);\n        else\n            DomHandler.appendChild(this.container, this.appendTo);\n\n        this.container.style.display = 'inline-block';\n    }\n\n    show() {\n        if (!this.text || this.disabled) {\n            return;\n        }\n\n        this.create();\n        this.align();\n        DomHandler.fadeIn(this.container, 250);\n\n        if (this.tooltipZIndex === 'auto')\n            this.container.style.zIndex = ++DomHandler.zindex;\n        else\n            this.container.style.zIndex = this.tooltipZIndex;\n\n        this.bindDocumentResizeListener();\n        this.bindScrollListener();\n    }\n\n    hide() {\n        this.remove();\n    }\n\n    updateText() {\n        if (this.escape) {\n            this.tooltipText.innerHTML = '';\n            this.tooltipText.appendChild(document.createTextNode(this._text));\n        }\n        else {\n            this.tooltipText.innerHTML = this._text;\n        }\n    }\n\n    align() {\n        let position = this.tooltipPosition;\n\n        switch (position) {\n            case 'top':\n                this.alignTop();\n                if (this.isOutOfBounds()) {\n                    this.alignBottom();\n                    if (this.isOutOfBounds()) {\n                        this.alignRight();\n\n                        if (this.isOutOfBounds()) {\n                            this.alignLeft();\n                        }\n                    }\n                }\n                break;\n\n            case 'bottom':\n                this.alignBottom();\n                if (this.isOutOfBounds()) {\n                    this.alignTop();\n                    if (this.isOutOfBounds()) {\n                        this.alignRight();\n\n                        if (this.isOutOfBounds()) {\n                            this.alignLeft();\n                        }\n                    }\n                }\n                break;\n\n            case 'left':\n                this.alignLeft();\n                if (this.isOutOfBounds()) {\n                    this.alignRight();\n\n                    if (this.isOutOfBounds()) {\n                        this.alignTop();\n\n                        if (this.isOutOfBounds()) {\n                            this.alignBottom();\n                        }\n                    }\n                }\n                break;\n\n            case 'right':\n                this.alignRight();\n                if (this.isOutOfBounds()) {\n                    this.alignLeft();\n\n                    if (this.isOutOfBounds()) {\n                        this.alignTop();\n\n                        if (this.isOutOfBounds()) {\n                            this.alignBottom();\n                        }\n                    }\n                }\n                break;\n        }\n    }\n\n    getHostOffset() {\n        if (this.appendTo === 'body' || this.appendTo === 'target') {\n            let offset = this.el.nativeElement.getBoundingClientRect();\n            let targetLeft = offset.left + DomHandler.getWindowScrollLeft();\n            let targetTop = offset.top + DomHandler.getWindowScrollTop();\n\n            return { left: targetLeft, top: targetTop };\n        }\n        else {\n            return { left: 0, top: 0 };\n        }\n    }\n\n    alignRight() {\n        this.preAlign('right');\n        let hostOffset = this.getHostOffset();\n        let left = hostOffset.left + DomHandler.getOuterWidth(this.el.nativeElement);\n        let top = hostOffset.top + (DomHandler.getOuterHeight(this.el.nativeElement) - DomHandler.getOuterHeight(this.container)) / 2;\n        this.container.style.left = left + 'px';\n        this.container.style.top = top + 'px';\n    }\n\n    alignLeft() {\n        this.preAlign('left');\n        let hostOffset = this.getHostOffset();\n        let left = hostOffset.left - DomHandler.getOuterWidth(this.container);\n        let top = hostOffset.top + (DomHandler.getOuterHeight(this.el.nativeElement) - DomHandler.getOuterHeight(this.container)) / 2;\n        this.container.style.left = left + 'px';\n        this.container.style.top = top + 'px';\n    }\n\n    alignTop() {\n        this.preAlign('top');\n        let hostOffset = this.getHostOffset();\n        let left = hostOffset.left + (DomHandler.getOuterWidth(this.el.nativeElement) - DomHandler.getOuterWidth(this.container)) / 2;\n        let top = hostOffset.top - DomHandler.getOuterHeight(this.container);\n        this.container.style.left = left + 'px';\n        this.container.style.top = top + 'px';\n    }\n\n    alignBottom() {\n        this.preAlign('bottom');\n        let hostOffset = this.getHostOffset();\n        let left = hostOffset.left + (DomHandler.getOuterWidth(this.el.nativeElement) - DomHandler.getOuterWidth(this.container)) / 2;\n        let top = hostOffset.top + DomHandler.getOuterHeight(this.el.nativeElement);\n        this.container.style.left = left + 'px';\n        this.container.style.top = top + 'px';\n    }\n\n    preAlign(position: string) {\n        this.container.style.left = -999 + 'px';\n        this.container.style.top = -999 + 'px';\n\n        let defaultClassName = 'p-tooltip p-component p-tooltip-' + position;\n        this.container.className = this.tooltipStyleClass ? defaultClassName + ' ' + this.tooltipStyleClass : defaultClassName;\n    }\n\n    isOutOfBounds(): boolean {\n        let offset = this.container.getBoundingClientRect();\n        let targetTop = offset.top;\n        let targetLeft = offset.left;\n        let width = DomHandler.getOuterWidth(this.container);\n        let height = DomHandler.getOuterHeight(this.container);\n        let viewport = DomHandler.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        this.zone.runOutsideAngular(() => {\n            this.resizeListener = this.onWindowResize.bind(this);\n            window.addEventListener('resize', this.resizeListener);\n        });\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        if (this.tooltipEvent === 'hover') {\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        else if (this.tooltipEvent === 'focus') {\n            this.el.nativeElement.removeEventListener('focus', this.focusListener);\n            this.el.nativeElement.removeEventListener('blur', this.blurListener);\n        }\n\n        this.unbindDocumentResizeListener();\n    }\n\n    remove() {\n        if (this.container && this.container.parentElement) {\n            if (this.appendTo === 'body')\n                document.body.removeChild(this.container);\n            else if (this.appendTo === 'target')\n                this.el.nativeElement.removeChild(this.container);\n            else\n                DomHandler.removeChild(this.container, this.appendTo);\n        }\n\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\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    ngOnDestroy() {\n        this.unbindEvents();\n        this.remove();\n\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [Tooltip],\n    declarations: [Tooltip]\n})\nexport class TooltipModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["DomHandler","ConnectedOverlayScrollHandler","Directive","Input","CommonModule","NgModule"],"mappings":"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"}