{"version":3,"file":"ironsource-fusion-ui-components-popup-common-base.mjs","sources":["../../../projects/fusion-ui/components/popup/common/base/popup.base.component.ts","../../../projects/fusion-ui/components/popup/common/base/ironsource-fusion-ui-components-popup-common-base.ts"],"sourcesContent":["import {AfterViewInit, Directive, ElementRef, EventEmitter, Input, OnInit, Output, Renderer2, ViewChild} from '@angular/core';\nimport {\n    PopupEntity,\n    PopupLocation,\n    PopupPositionOffset,\n    DEFAULT_POPUP_OFFSET\n} from '@ironsource/fusion-ui/components/popup/common/entities';\nimport {PopupService} from '@ironsource/fusion-ui/components/popup/common/services';\nimport {isNullOrUndefined} from '@ironsource/fusion-ui/utils';\n\n@Directive()\nexport abstract class PopupBaseComponent implements OnInit, AfterViewInit {\n    @ViewChild('dynamicContent') dynamicContent: ElementRef;\n    @ViewChild('popupContainer', {static: true}) popupContainer: ElementRef;\n    @Input() set popupData(value: PopupEntity) {\n        this._popupData = value;\n        this.resetPopup();\n    }\n    @Output() clickedOutside = new EventEmitter<HTMLElement>();\n\n    private isOnInit = true;\n    private _popupData: PopupEntity;\n\n    get popupData(): PopupEntity {\n        return this._popupData || {};\n    }\n\n    get isOpened(): boolean {\n        return (\n            this.dynamicContent ||\n            (this.popupContainer &&\n                (this.popupContainer.nativeElement.innerText ||\n                    (this.popupContainer.nativeElement.style.width && this.popupContainer.nativeElement.style.height)))\n        );\n    }\n\n    get isHostElement(): boolean {\n        return this.popupData.location === PopupLocation.ElementRelated && !isNullOrUndefined(this.popupData.hostElement);\n    }\n\n    get isNativeElement(): boolean {\n        return isNullOrUndefined(this.popupData.hostElement.nativeElement);\n    }\n\n    get elementHostOffset(): PopupPositionOffset {\n        return this.popupData.hostElementPositionOffset ? this.popupData.hostElementPositionOffset : DEFAULT_POPUP_OFFSET;\n    }\n\n    onResize() {\n        if (this.isOpened) {\n            this._setPosition();\n        }\n    }\n\n    constructor(private renderer: Renderer2, private popupService: PopupService) {}\n\n    ngOnInit() {\n        if (!isNullOrUndefined(this.popupData.hostElement) && isNullOrUndefined(this.popupData.location)) {\n            this.popupData.location = PopupLocation.ElementRelated;\n        }\n        this.popupContainer.nativeElement.style.setProperty(\n            '--background-color',\n            !!this._popupData && !!this.popupData.backgroundColor ? this.popupData.backgroundColor : 'transparent'\n        );\n    }\n\n    ngAfterViewInit() {\n        this._setPosition();\n    }\n\n    _setPosition() {\n        let topPosition;\n        let leftPosition;\n        if (this.isHostElement) {\n            const hostEl: HTMLElement = !this.isNativeElement ? this.popupData.hostElement.nativeElement : this.popupData.hostElement;\n            const popupEl: HTMLElement = this.popupContainer.nativeElement;\n            const offsetPosition: PopupPositionOffset = this.elementHostOffset;\n            const hostElClientRect = hostEl.getBoundingClientRect();\n            const popupElClientRect = popupEl.getBoundingClientRect();\n\n            topPosition = hostElClientRect.bottom + offsetPosition.top;\n            leftPosition = hostElClientRect.left + (hostElClientRect.width - popupElClientRect.width) / 2 + offsetPosition.left;\n        }\n        if (this.popupData.newInstance) {\n            topPosition = this.elementHostOffset.top;\n            leftPosition = this.elementHostOffset.left;\n        }\n        if (!isNullOrUndefined(topPosition) && !isNullOrUndefined(leftPosition)) {\n            this.renderer.setStyle(this.popupContainer.nativeElement, 'top', topPosition + 'px');\n            this.renderer.setStyle(this.popupContainer.nativeElement, 'left', leftPosition + 'px');\n        }\n    }\n\n    private resetPopup(): void {\n        if (this.isHostElement) {\n            this._setPosition();\n        } else if (this.popupContainer && this.popupContainer.nativeElement) {\n            this.renderer.removeStyle(this.popupContainer.nativeElement, 'top');\n            this.renderer.removeStyle(this.popupContainer.nativeElement, 'left');\n        }\n    }\n\n    /**\n     * in first detect changes function been invoked so we set it to work only from second and above\n     */\n    onClickOutside(targetElement: HTMLElement): void {\n        const isSuppressed =\n            !isNullOrUndefined(this.popupData.suppressCloseElementSelector) &&\n            (!!targetElement.getAttribute(this.popupData.suppressCloseElementSelector) ||\n                !!targetElement.closest(this.popupData.suppressCloseElementSelector));\n\n        if (!this.isOnInit && this.isOpened && !isSuppressed) {\n            this.popupService.closePopUp();\n            if (!this.popupData.component || this.popupData.newInstance) {\n                this.clickedOutside.emit(targetElement);\n            }\n        }\n        this.isOnInit = false;\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}