{"version":3,"file":"ironsource-fusion-ui-components-tooltip-common-base.mjs","sources":["../../../projects/fusion-ui/components/tooltip/common/base/tooltip.entities.ts","../../../projects/fusion-ui/components/tooltip/common/base/tooltip.base.service.ts","../../../projects/fusion-ui/components/tooltip/common/base/tooltip.base.directive.ts","../../../projects/fusion-ui/components/tooltip/common/base/tooltip.base.component.ts","../../../projects/fusion-ui/components/tooltip/common/base/ironsource-fusion-ui-components-tooltip-common-base.ts"],"sourcesContent":["import {Component, ElementRef, Type} from '@angular/core';\nimport {IconData} from '@ironsource/fusion-ui/components/icon/common/entities';\n\nexport enum TooltipPosition {\n    Top = 0,\n    Right = 1,\n    Bottom = 2,\n    Left = 3,\n    TopFixed = 4,\n    TopLeft = 5,\n    TopRight = 6,\n    BottomLeft = 7,\n    BottomRight = 8\n}\nexport enum TooltipType {\n    Html = 0,\n    Component = 1\n}\n\nexport interface ITooltipData {\n    parentEl?: ElementRef;\n    position?: TooltipPosition;\n    content?: string;\n    width?: number;\n    type?: TooltipType;\n    icon?: IconData;\n    componentData?: any;\n}\n\nexport interface IShiftPosition {\n    top: number;\n    left: number;\n}\n\nexport type TooltipComponentStyleConfiguration = {\n    top?: string;\n    left?: string;\n    width?: string;\n    height?: string;\n    'text-align'?: string;\n    backgroundColor?: string;\n};\n\nexport type tooltipConfiguration = {\n    width?: number;\n    height?: number;\n    backgroundColor?: string;\n    preventTooltipToClose?: boolean;\n    position?: TooltipPosition;\n    positionOffset?: number;\n    suppressPositionArrow?: boolean;\n};\n\nexport interface TooltipCustom {\n    content?: {\n        component: Type<Component>;\n        dataInputs: any;\n    };\n    configuration?: tooltipConfiguration;\n}\n","import {Injectable, OnDestroy} from '@angular/core';\nimport {ITooltipData} from './tooltip.entities';\nimport {BehaviorSubject, fromEvent, Subject} from 'rxjs';\nimport {filter, delay} from 'rxjs/operators';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class TooltipService implements OnDestroy {\n    private delayData$ = new BehaviorSubject<ITooltipData>({});\n    public tooltipData$ = this.delayData$.asObservable().pipe(delay(0));\n    private onDestroy$ = new Subject<void>();\n    static mouseOver$ = fromEvent<MouseEvent>(document.body, 'mouseover');\n\n    ngOnDestroy() {\n        this.onDestroy$.next();\n        this.onDestroy$.complete();\n    }\n\n    public getMouseHoverObservable(element: Element) {\n        return TooltipService.mouseOver$.pipe(filter((event: MouseEvent) => TooltipService.isEventInElementRegion({event, element})));\n    }\n\n    public showTooltip(tooltipData: ITooltipData) {\n        this.delayData$.next(tooltipData);\n    }\n\n    public closeTooltip() {\n        this.delayData$.next({});\n    }\n\n    static isEventInElementRegion({event, element}: {event: MouseEvent; element: Element}): boolean {\n        return element.contains(event.target as Element);\n    }\n}\n","import {Directive, ElementRef, HostBinding, Inject, Input, OnDestroy, Renderer2} from '@angular/core';\nimport {ITooltipData, TooltipPosition, TooltipType} from './tooltip.entities';\nimport {TooltipService} from './tooltip.base.service';\nimport {Subject, fromEvent, merge, Observable, of} from 'rxjs';\nimport {switchMap, take, takeUntil} from 'rxjs/operators';\nimport {IconData} from '@ironsource/fusion-ui/components/icon/v1';\nimport {DOCUMENT} from '@angular/common';\n\n@Directive()\nexport abstract class TooltipBaseDirective implements OnDestroy {\n    @Input() set fusionTooltip(tooltipContent: string) {\n        if (!!tooltipContent) {\n            this.clearTooltipContentListener$.next();\n            this.fusionTooltipContent = tooltipContent;\n            this.renderer.setAttribute(this.elementRef.nativeElement, 'role', 'tooltiped');\n            this.onMouseEnterObservable$ = this.tooltipService.getMouseHoverObservable(this.elementRef.nativeElement);\n            this.initListeners();\n        }\n    }\n    @Input() tooltipWidth: number; // Allow custom width for tooltip\n    @Input() tooltipPosition: TooltipPosition = TooltipPosition.Top;\n    @Input() tooltipType: TooltipType = TooltipType.Html;\n    @Input() tooltipComponentData: ITooltipData = {};\n    @Input() tooltipIcon: IconData;\n    @Input() tooltipPreventToClose = false;\n    @HostBinding('attr.title') emptyTooltip = ''; // remove existed title from parent element\n\n    private visible = false;\n    private onDestroy$ = new Subject<void>();\n    private clearListeners$ = new Subject<void>();\n    private clearTooltipContentListener$ = new Subject<void>();\n    private clearHover$ = merge(this.clearTooltipContentListener$.asObservable(), this.onDestroy$.asObservable());\n    private takeUntil$ = merge(this.clearListeners$.asObservable(), this.onDestroy$.asObservable());\n    private onMouseEnterObservable$: Observable<MouseEvent>;\n    private fusionTooltipContent = '';\n\n    constructor(\n        private elementRef: ElementRef,\n        private tooltipService: TooltipService,\n        private renderer: Renderer2,\n        @Inject(DOCUMENT) private document: Document\n    ) {}\n\n    ngOnDestroy() {\n        if (this.visible) {\n            this.closeTooltip();\n        }\n        this.onDestroy$.next();\n        this.onDestroy$.complete();\n        this.clearListeners$.complete();\n        this.clearTooltipContentListener$.complete();\n    }\n\n    initListeners(): void {\n        this.onMouseEnterObservable$.pipe(takeUntil(this.clearHover$)).subscribe(() => {\n            this.onHover();\n        });\n    }\n\n    onHover(): void {\n        const needToShow = this.calcTruncate();\n        if (this.visible || !needToShow) {\n            return;\n        }\n        this.visible = true;\n        this.buildTooltipComponent();\n        this.setMouseListeners();\n    }\n\n    private closeTooltip(): void {\n        this.visible = false;\n        this.tooltipService.closeTooltip();\n    }\n\n    private onHoverEnds(): void {\n        if (this.visible) {\n            this.closeTooltip();\n        }\n    }\n\n    private onClick(event: any): void {\n        if (\n            (!!event && event.target.closest('fusion-icon[role=\"tooltiped\"]') && this.visible) ||\n            this.elementRef.nativeElement.offsetParent === null\n        ) {\n            this.closeTooltip();\n        }\n    }\n\n    private buildTooltipComponent(): void {\n        const tooltipData: ITooltipData = {\n            parentEl: this.elementRef,\n            position: this.tooltipPosition,\n            content: this.fusionTooltipContent,\n            icon: this.tooltipIcon,\n            width: this.tooltipWidth,\n            type: this.tooltipType,\n            componentData: this.tooltipComponentData\n        };\n        this.tooltipService.showTooltip(tooltipData);\n    }\n\n    private setMouseListeners(): void {\n        fromEvent(this.elementRef.nativeElement, 'click').pipe(takeUntil(this.takeUntil$)).subscribe(this.onClick.bind(this));\n        fromEvent(this.elementRef.nativeElement, 'mouseleave')\n            .pipe(\n                switchMap((event: MouseEvent) => {\n                    return this.haveToBeClosed(event);\n                }),\n                take(1)\n            )\n            .subscribe(() => {\n                this.onHoverEnds();\n                this.clearListeners$.next();\n            });\n    }\n\n    private calcTruncate(): boolean {\n        if (!this.fusionTooltipContent) {\n            return false;\n        }\n        const nativeElement = this.elementRef.nativeElement;\n        return !(nativeElement.className.includes('truncate') && nativeElement.clientWidth >= nativeElement.scrollWidth);\n    }\n\n    haveToBeClosed(event: MouseEvent): Observable<Event> {\n        const marginSize = 10;\n        const tooltipEl = this.document.querySelector('fusion-tooltip');\n        let haveToBeClosed = true;\n        if (this.tooltipPreventToClose && !!tooltipEl) {\n            const rectTooltip = tooltipEl.getBoundingClientRect();\n            haveToBeClosed = !(\n                event.x >= rectTooltip.left - marginSize &&\n                event.x <= rectTooltip.right + marginSize &&\n                event.y >= rectTooltip.top - marginSize &&\n                event.y <= rectTooltip.bottom + marginSize\n            );\n        }\n        return haveToBeClosed ? of(event) : fromEvent(tooltipEl, 'mouseleave');\n    }\n}\n","import {AfterViewInit, Directive, ElementRef, HostBinding, Injector, Input, OnChanges, Renderer2, SimpleChanges} from '@angular/core';\nimport {IShiftPosition, ITooltipData, TooltipPosition, TooltipType} from './tooltip.entities';\nimport {WindowService} from '@ironsource/fusion-ui/services/window';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\nimport {isNullOrUndefined} from '@ironsource/fusion-ui/utils';\nimport {IconData} from '@ironsource/fusion-ui/components/icon/v1';\n\nconst TOOLTIP_ARROW_SIZE = 6;\n\n@Directive()\nexport abstract class TooltipBaseComponent implements AfterViewInit, OnChanges {\n    public content: string | SafeHtml;\n    public componentData: any;\n    public icon: string | IconData;\n    private position: TooltipPosition;\n    private hostEl: ElementRef;\n    private type: TooltipType;\n    @Input() set tooltipData(newTooltipData: ITooltipData) {\n        this.hostEl = newTooltipData.parentEl;\n        this.position = newTooltipData.position || TooltipPosition.Top;\n        this.content =\n            newTooltipData.type === TooltipType.Html\n                ? this.sanitizer.bypassSecurityTrustHtml(newTooltipData.content)\n                : newTooltipData.content;\n        this.width = newTooltipData.width;\n        this.icon = newTooltipData.icon;\n        this.type = newTooltipData.type || TooltipType.Html;\n        this.componentData = newTooltipData.componentData || {};\n        const classToRemove = Array.from(this.tooltipElRef.nativeElement.classList).find((value: string) => value.includes('is-position-'));\n        this.renderer.removeClass(this.tooltipElRef.nativeElement, classToRemove as string);\n    }\n    @HostBinding('style.width.px') width: number;\n\n    public get hasIcon(): boolean {\n        return !!this.icon;\n    }\n\n    public get isHtml() {\n        return this.type === TooltipType.Html;\n    }\n\n    constructor(\n        injector: Injector,\n        private tooltipElRef: ElementRef,\n        private window: WindowService,\n        private renderer: Renderer2,\n        private sanitizer: DomSanitizer\n    ) {}\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (!changes.tooltipData.isFirstChange()) {\n            this._setPosition();\n        }\n    }\n\n    ngAfterViewInit() {\n        this._setPosition();\n    }\n\n    /**\n     * Reposition Tooltip Content\n     */\n    _setPosition() {\n        if (!isNullOrUndefined(this.hostEl)) {\n            const positionOffset: IShiftPosition = this._calcPosition(\n                this.position,\n                this.tooltipElRef.nativeElement,\n                this.hostEl.nativeElement\n            );\n\n            const rect = this.hostEl.nativeElement.getBoundingClientRect();\n            this.renderer.setStyle(this.tooltipElRef.nativeElement, 'top', rect.top + positionOffset.top + 'px');\n            this.renderer.setStyle(this.tooltipElRef.nativeElement, 'left', rect.left + positionOffset.left + 'px');\n        }\n    }\n\n    _adjustPosition(position: TooltipPosition, tooltipEl, hostEl): TooltipPosition {\n        // for fixed, not calculated Position type\n        if (position === TooltipPosition.TopFixed) {\n            return TooltipPosition.Top;\n        }\n\n        const tooltipWidth = this.width || 250;\n        const hostRect = hostEl.getBoundingClientRect();\n        const tooltipRect = tooltipEl.getBoundingClientRect();\n\n        if (this.window.nativeWindow.innerWidth - tooltipWidth - hostRect.left <= 0) {\n            // tooltip host on right side of page\n            position = TooltipPosition.Left;\n        } else if (hostRect.left - tooltipWidth <= 0) {\n            // tooltip host on left side of page\n            position = TooltipPosition.Right;\n        } else if (hostRect.top - tooltipRect.height <= 0) {\n            position = hostRect.left - tooltipWidth <= 0 ? TooltipPosition.Right : TooltipPosition.Left;\n        }\n\n        return position;\n    }\n\n    /**\n     * Calculate position\n     * @param TooltipPosition position\n     */\n    _calcPosition(position: TooltipPosition, tooltipEl: any, hostEl: any): IShiftPosition {\n        let shiftPosition: IShiftPosition;\n        position = this._adjustPosition(position, tooltipEl, hostEl);\n\n        this.renderer.addClass(this.tooltipElRef.nativeElement, 'is-position-' + TooltipPosition[position].toLowerCase());\n\n        switch (position) {\n            case TooltipPosition.Left:\n                shiftPosition = {\n                    top: hostEl.offsetHeight / 2 - tooltipEl.offsetHeight / 2,\n                    left: 0 - tooltipEl.offsetWidth - TOOLTIP_ARROW_SIZE\n                };\n                break;\n            case TooltipPosition.Right:\n                shiftPosition = {\n                    top: hostEl.offsetHeight / 2 - tooltipEl.offsetHeight / 2,\n                    left: hostEl.offsetWidth + TOOLTIP_ARROW_SIZE\n                };\n                break;\n            case TooltipPosition.Bottom:\n                shiftPosition = {\n                    top: hostEl.offsetHeight + TOOLTIP_ARROW_SIZE,\n                    left: hostEl.offsetWidth / 2 - tooltipEl.offsetWidth / 2\n                };\n                break;\n            default:\n                // TooltipPosition.Top\n                shiftPosition = {\n                    top: 0 - tooltipEl.offsetHeight - TOOLTIP_ARROW_SIZE,\n                    left: hostEl.offsetWidth / 2 - tooltipEl.offsetWidth / 2\n                };\n                break;\n        }\n\n        return shiftPosition;\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}