{"version":3,"file":"ironsource-fusion-ui-components-tooltip-v4.mjs","sources":["../../../projects/fusion-ui/components/tooltip/v4/tooltip-content-v4.component.ts","../../../projects/fusion-ui/components/tooltip/v4/tooltip-content-v4.directive.ts","../../../projects/fusion-ui/components/tooltip/v4/tooltip-v4.directive.ts","../../../projects/fusion-ui/components/tooltip/v4/tooltip-v4.component.ts","../../../projects/fusion-ui/components/tooltip/v4/ironsource-fusion-ui-components-tooltip-v4.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, ElementRef, Injector, Input, Renderer2, TemplateRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TooltipComponentStyleConfiguration, TooltipPosition} from '@ironsource/fusion-ui/components/tooltip/common/base';\nimport {GenericPipe} from '@ironsource/fusion-ui/pipes/generic';\nimport {TooltipTestIdModifiers} from '@ironsource/fusion-ui/entities';\nimport {TestIdsService} from '@ironsource/fusion-ui/services/test-ids';\n\n@Component({\n    selector: 'fusion-tooltip-content',\n    standalone: true,\n    imports: [CommonModule, GenericPipe],\n    template: ` <div class=\"fu-tooltip-component\" [attr.data-testid]=\"testId\">\n        <ng-container *ngIf=\"!tooltipInnerText\" [ngTemplateOutlet]=\"temp\"></ng-container>\n        <span *ngIf=\"tooltipInnerText\">{{ tooltipInnerText }}</span>\n        <div class=\"fu-tooltip-arrow\"></div>\n    </div>`,\n    styleUrls: ['./tooltip-content-v4.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TooltipContentV4Component {\n    /** @internal */\n    tooltipInnerText: string;\n    /** @internal */\n    position: string;\n    /** @internal */\n    temp: TemplateRef<any>;\n\n    @Input() testId: string;\n\n    @Input() set tooltipTextContent(text: string) {\n        if (text) {\n            this.tooltipInnerText = text;\n        }\n    }\n\n    /** @internal */\n    testIdTooltipModifiers: typeof TooltipTestIdModifiers = TooltipTestIdModifiers;\n    /** @internal */\n    testIdsService: TestIdsService = this.injector.get(TestIdsService);\n\n    /** @internal */\n    @Input() set templateRef(template: TemplateRef<any>) {\n        this.temp = template;\n    }\n\n    @Input() set tooltipPositionClass(pos: TooltipPosition) {\n        this.position = TooltipPosition[pos]?.toLowerCase();\n        if (!!this.position) {\n            this.renderer.addClass(this.elementRef.nativeElement, 'fu-tooltip-' + this.position);\n        }\n    }\n\n    @Input() set tooltipStyleConfiguration(config: TooltipComponentStyleConfiguration) {\n        if (config) {\n            this.setTooltipStyle(config);\n        }\n    }\n\n    constructor(\n        /** @internal */\n        public elementRef: ElementRef,\n        private renderer: Renderer2,\n        private injector: Injector\n    ) {}\n\n    suppressTooltipArrow(suppressPositionArrow: boolean) {\n        if (suppressPositionArrow) {\n            this.renderer.addClass(this.elementRef.nativeElement, 'fu-tooltip-no-arrow');\n        }\n    }\n\n    private setTooltipStyle(propertyValue: {[key: string]: string}) {\n        Object.keys(propertyValue).forEach(val => {\n            if (val === 'backgroundColor' && !!propertyValue[val]) {\n                this.elementRef.nativeElement.style.setProperty('--fu-tooltip-background-color', propertyValue[val]);\n            } else {\n                this.renderer.setStyle(this.elementRef.nativeElement, val, propertyValue[val]);\n            }\n        });\n    }\n}\n","import {ComponentRef, Directive, Input, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {TooltipContentV4Component} from './tooltip-content-v4.component';\n\n@Directive({\n    standalone: true,\n    selector: `[fusionTooltipContent]`\n})\nexport class TooltipContentV4Directive {\n    private componentRef: ComponentRef<TooltipContentV4Component>;\n\n    @Input() testId!: string;\n\n    constructor(private templateRef: TemplateRef<any>, private viewContainerRef: ViewContainerRef) {}\n\n    get tooltipComponentRef() {\n        return this.componentRef;\n    }\n\n    create() {\n        if (!this.componentRef) {\n            this.componentRef = this.viewContainerRef.createComponent(TooltipContentV4Component);\n            this.componentRef.instance.templateRef = this.templateRef;\n        }\n    }\n\n    destroy() {\n        this.componentRef.destroy();\n        this.componentRef = null;\n    }\n}\n","import {\n    Input,\n    Renderer2,\n    Directive,\n    ElementRef,\n    ContentChild,\n    OnDestroy,\n    AfterViewInit,\n    ComponentRef,\n    ViewContainerRef\n} from '@angular/core';\nimport {IShiftPosition, tooltipConfiguration, TooltipPosition} from '@ironsource/fusion-ui/components/tooltip/common/base';\nimport {fromEvent, Observable, of, Subject} from 'rxjs';\nimport {switchMap, takeUntil} from 'rxjs/operators';\nimport {TooltipContentV4Directive} from './tooltip-content-v4.directive';\nimport {TooltipContentV4Component} from './tooltip-content-v4.component';\nimport {isNullOrUndefined} from '@ironsource/fusion-ui/utils';\n\nconst POSITION_SHIFTING = 10;\n\n@Directive({standalone: true, selector: '[fusionTooltip]'})\nexport class TooltipV4Directive implements OnDestroy, AfterViewInit {\n    @ContentChild(TooltipContentV4Directive, {static: true}) directiveRef!: TooltipContentV4Directive;\n    @ContentChild('tooltipTriggerElement', {static: true}) tooltipTriggerElement!: ElementRef;\n    @ContentChild('tooltipTriggerElement', {\n        static: true,\n        read: ViewContainerRef\n    })\n    viewTriggerContainer!: ViewContainerRef;\n\n    @Input() fusionTooltip = '';\n\n    @Input() set configuration(config: tooltipConfiguration) {\n        if (config) {\n            this.width = config?.width;\n            this.height = config?.height;\n            this.backgroundColor = config?.backgroundColor;\n            this.preventTooltipToClose = config?.preventTooltipToClose;\n            this.position = config?.position || TooltipPosition.Top;\n            this.suppressPositionArrow = config?.suppressPositionArrow;\n            this.positionOffset = config?.positionOffset ?? 0;\n        }\n    }\n\n    width: number;\n    height: number;\n    backgroundColor: string;\n    preventTooltipToClose: boolean = false;\n    suppressPositionArrow: boolean = false;\n    positionOffset: number = 0;\n\n    private visible = false;\n    private onDestroy$ = new Subject<void>();\n    private tooltipElement: HTMLElement;\n    private position = TooltipPosition.Top;\n    private tooltipPosition: {\n        position: TooltipPosition;\n        left: number;\n        top: number;\n    };\n    private viewContainerRef: ViewContainerRef;\n    private tooltipComponentRef: ComponentRef<TooltipContentV4Component>;\n    @Input() testId!: string;\n    @Input() contentTestId!: string;\n\n    constructor(private renderer: Renderer2, private elementRef: ElementRef, private vcr: ViewContainerRef) {}\n\n    ngAfterViewInit() {\n        this.viewContainerRef = this.viewTriggerContainer ? this.viewTriggerContainer : this.vcr;\n        this.tooltipElement = this.preventTooltipToClose\n            ? this.elementRef.nativeElement\n            : !!this.tooltipTriggerElement?.nativeElement\n            ? this.tooltipTriggerElement?.nativeElement\n            : this.elementRef.nativeElement;\n        this.initListeners();\n    }\n\n    ngOnDestroy() {\n        this.onDestroy$.next();\n        this.onDestroy$.complete();\n    }\n\n    initListeners() {\n        fromEvent(this.tooltipElement, 'mouseenter').pipe(takeUntil(this.onDestroy$)).subscribe(this.showTooltip.bind(this));\n\n        fromEvent(this.tooltipElement, 'mouseleave')\n            .pipe(\n                takeUntil(this.onDestroy$),\n                switchMap((event: MouseEvent) => {\n                    return this.haveToBeClosed(event);\n                })\n            )\n            .subscribe(this.hideTooltip.bind(this));\n    }\n\n    private showTooltip(): void {\n        const needToShow = this.calcTruncate();\n        if (!needToShow || this.visible) {\n            return;\n        }\n        if (this.directiveRef && !this.fusionTooltip) {\n            this.directiveRef.create();\n            this.tooltipComponentRef = this.directiveRef.tooltipComponentRef;\n        } else if (this.fusionTooltip) {\n            this.tooltipComponentRef = this.viewContainerRef.createComponent(TooltipContentV4Component);\n            this.tooltipComponentRef.instance.tooltipTextContent = this.fusionTooltip;\n            if (this.testId) {\n                this.tooltipComponentRef.instance.testId = this.testId;\n            }\n        } else {\n            return;\n        }\n\n        this.tooltipComponentRef.changeDetectorRef.detectChanges();\n        const rectTooltip = this.tooltipComponentRef.instance.elementRef.nativeElement.getBoundingClientRect();\n        this.setTooltipPosition(this.position, rectTooltip);\n        this.setTooltipConfiguration();\n        this.visible = true;\n    }\n\n    private hideTooltip(): void {\n        if (this.testId) return;\n        if (!this.visible) {\n            return;\n        }\n        if (this.directiveRef && !this.fusionTooltip) {\n            this.directiveRef.destroy();\n            this.tooltipComponentRef = null;\n        } else if (this.fusionTooltip) {\n            this.tooltipComponentRef.destroy();\n            this.tooltipComponentRef = null;\n        } else {\n            return;\n        }\n        this.visible = false;\n    }\n\n    private adjustTooltipPosition(position: TooltipPosition, tooltipWidth: number, tooltipHeight: number, hostRect: any): TooltipPosition {\n        if (position === TooltipPosition.TopFixed) {\n            return TooltipPosition.Top;\n        }\n\n        const isTopPosNegative = hostRect.top + this.elementRef.nativeElement.offsetHeight / 2 - tooltipHeight / 2 >= 0;\n        if (window.innerWidth - tooltipWidth - hostRect.left <= 0 && isTopPosNegative) {\n            position = TooltipPosition.Left;\n        } else if (hostRect.left - tooltipWidth <= 0 && isTopPosNegative) {\n            position = TooltipPosition.Right;\n        } else if (hostRect.top - tooltipHeight <= 0) {\n            position = hostRect.left - tooltipWidth <= 0 && isTopPosNegative ? TooltipPosition.Right : TooltipPosition.Bottom;\n        }\n        return position;\n    }\n\n    private setTooltipPosition(position: TooltipPosition, tooltipElement: any): void {\n        let shiftPosition: IShiftPosition;\n        const tooltipWidth = this.width || tooltipElement.width;\n        const tooltipHeight = this.height || tooltipElement.height;\n        const rect = this.elementRef.nativeElement.getBoundingClientRect();\n        position = this.adjustTooltipPosition(position, tooltipWidth, tooltipHeight, rect);\n\n        switch (position) {\n            case TooltipPosition.Left:\n                shiftPosition = {...this.setPositionLeftRight('left', tooltipWidth, tooltipHeight)};\n                break;\n            case TooltipPosition.Right:\n                shiftPosition = {...this.setPositionLeftRight('right', tooltipWidth, tooltipHeight)};\n                break;\n            case TooltipPosition.Bottom:\n                shiftPosition = {...this.setPositionBottomTop('bottom', tooltipWidth, tooltipHeight)};\n                break;\n            case TooltipPosition.BottomLeft:\n                shiftPosition = {...this.setPositionBottomTop('bottom', tooltipWidth, tooltipHeight, true)};\n                break;\n            case TooltipPosition.BottomRight:\n                shiftPosition = {...this.setPositionBottomTop('bottom', tooltipWidth, tooltipHeight, false)};\n                break;\n            case TooltipPosition.TopLeft:\n                shiftPosition = {...this.setPositionBottomTop('top', tooltipWidth, tooltipHeight, true)};\n                break;\n            case TooltipPosition.TopRight:\n                shiftPosition = {...this.setPositionBottomTop('top', tooltipWidth, tooltipHeight, false)};\n                break;\n\n            default:\n                shiftPosition = {...this.setPositionBottomTop('top', tooltipWidth, tooltipHeight)};\n                break;\n        }\n        const {tooltipLeft, pos} = this.adjustArrowPos(shiftPosition.left, rect.left, position, tooltipWidth);\n\n        this.tooltipPosition = {\n            position: pos,\n            left: tooltipLeft + this.positionOffset,\n            top: shiftPosition.top + rect.top\n        };\n    }\n\n    private setTooltipConfiguration(): void {\n        this.tooltipComponentRef.instance.tooltipStyleConfiguration = {\n            top: this.tooltipPosition.top.toString() + 'px',\n            left: this.tooltipPosition.left.toString() + 'px',\n            width: this.width?.toString() + 'px',\n            height: this.height?.toString() + 'px',\n            backgroundColor: this.backgroundColor\n        };\n        this.tooltipComponentRef.instance.tooltipPositionClass = this.tooltipPosition.position;\n        this.tooltipComponentRef.instance.suppressTooltipArrow(this.suppressPositionArrow);\n    }\n\n    private setPositionLeftRight(pos: 'left' | 'right', tooltipWidth: number, tooltipHeight: number): {top: number; left: number} {\n        const position = {\n            top: this.elementRef.nativeElement.offsetHeight / 2 - tooltipHeight / 2,\n            left: 0\n        };\n        if (pos === 'left') {\n            position.left = 0 - tooltipWidth - POSITION_SHIFTING;\n        } else {\n            position.left = this.elementRef.nativeElement.offsetWidth + POSITION_SHIFTING;\n        }\n        return position;\n    }\n\n    private setPositionBottomTop(\n        pos: 'bottom' | 'top',\n        tooltipWidth: number,\n        tooltipHeight: number,\n        start?: boolean\n    ): {top: number; left: number} {\n        const position = {\n            top: 0,\n            left: isNullOrUndefined(start)\n                ? this.elementRef.nativeElement.offsetWidth / 2 - tooltipWidth / 2\n                : start\n                ? 0\n                : this.elementRef.nativeElement.offsetWidth - tooltipWidth\n        };\n        if (pos === 'bottom') {\n            position.top = this.elementRef.nativeElement.offsetHeight + POSITION_SHIFTING;\n        } else {\n            position.top = 0 - tooltipHeight - POSITION_SHIFTING;\n        }\n        return position;\n    }\n\n    private calcTruncate(): boolean {\n        const nativeElement = this.elementRef.nativeElement;\n        return !(nativeElement.className.includes('truncate') && nativeElement.clientWidth >= nativeElement.scrollWidth);\n    }\n\n    private adjustArrowPos(\n        tooltipLeft: number,\n        rectLeft: number,\n        position: TooltipPosition,\n        tooltipWidth: number\n    ): {tooltipLeft: number; pos: TooltipPosition} {\n        let posLeft = tooltipLeft + rectLeft;\n        let newPosition: TooltipPosition = position;\n\n        if (posLeft < 0 && (position === TooltipPosition.Top || position === TooltipPosition.Bottom)) {\n            newPosition = position === TooltipPosition.Top ? TooltipPosition.TopLeft : TooltipPosition.BottomLeft;\n            posLeft = rectLeft + this.elementRef.nativeElement.offsetWidth / 2 - 20;\n        } else if (\n            window.innerWidth - Math.round(rectLeft + this.elementRef.nativeElement.offsetWidth) <= 0 &&\n            (position === TooltipPosition.Top || position === TooltipPosition.Bottom)\n        ) {\n            newPosition = position === TooltipPosition.Top ? TooltipPosition.TopRight : TooltipPosition.BottomRight;\n            posLeft = rectLeft + this.elementRef.nativeElement.offsetWidth / 2 - tooltipWidth + 20;\n        }\n\n        return {tooltipLeft: posLeft, pos: newPosition};\n    }\n\n    haveToBeClosed(event: MouseEvent): Observable<Event> {\n        const marginSize = 10;\n        let haveToBeClosed = true;\n        const tooltipEl = this.elementRef.nativeElement.querySelector('fusion-tooltip-content');\n        if (this.preventTooltipToClose && this.visible && !!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 {ChangeDetectionStrategy, Component, HostBinding, Injector, Input} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {tooltipConfiguration} from '@ironsource/fusion-ui/components/tooltip/common/base';\nimport {TooltipV4Directive} from './tooltip-v4.directive';\nimport {TooltipContentV4Directive} from './tooltip-content-v4.directive';\nimport {GenericPipe} from '@ironsource/fusion-ui/pipes/generic';\nimport {TooltipTestIdModifiers} from '@ironsource/fusion-ui/entities';\nimport {TestIdsService} from '@ironsource/fusion-ui/services/test-ids';\n\n@Component({\n    selector: 'fusion-tooltip',\n    standalone: true,\n    imports: [CommonModule, TooltipV4Directive, TooltipContentV4Directive, GenericPipe],\n    template: `\n        <div class=\"tooltip-container\" [attr.data-testid]=\"testId\" [fusionTooltip]=\"tooltipText\" [configuration]=\"tooltipConfig\">\n            <div #tooltipTriggerElement style=\"width: 100%; display: block;\">\n                <ng-content select=\".fusionTooltipTrigger\"></ng-content>\n            </div>\n            <div *fusionTooltipContent>\n                <ng-content select=\".fusionTooltipContent\"></ng-content>\n            </div>\n        </div>\n    `,\n    styles: [\n        `\n            .tooltip-container {\n                display: flex;\n                position: relative;\n                width: 100%;\n            }\n        `\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TooltipV4Component {\n    constructor(private injector: Injector) {}\n\n    /** @internal */\n    @Input() set fusionTooltipText(value: string) {\n        this.tooltipText = value;\n    }\n\n    /** @internal */\n    @Input() set tooltipConfiguration(value: tooltipConfiguration) {\n        this.tooltipConfig = {...value};\n    }\n\n    @Input() testId: string;\n\n    /** @internal */\n    tooltipConfig: tooltipConfiguration;\n    /** @internal */\n    tooltipText: string = '';\n\n    /** @internal */\n    testIdTooltipModifiers: typeof TooltipTestIdModifiers = TooltipTestIdModifiers;\n    /** @internal */\n    testIdsService: TestIdsService = this.injector.get(TestIdsService);\n\n    @HostBinding('attr.data-testid') get testAttribute(): string {\n        return this.testIdsService.getTestAttribute(this.testId, this.testIdTooltipModifiers.TRIGGER);\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}