{"version":3,"file":"ironsource-fusion-ui-components-toast-common-base.mjs","sources":["../../../projects/fusion-ui/components/toast/common/base/toast.base.component.ts","../../../projects/fusion-ui/components/toast/common/base/ironsource-fusion-ui-components-toast-common-base.ts"],"sourcesContent":["import {AfterViewInit, Directive, EventEmitter, Input, OnInit, Output, Renderer2, ViewChild} from '@angular/core';\nimport {ToastEntity, ToastLocation, ToastType} from '@ironsource/fusion-ui/components/toast/common/entities';\nimport {DynamicComponentConfiguration} from '@ironsource/fusion-ui/components/dynamic-components/common/entities';\nimport {LogService} from '@ironsource/fusion-ui/services/log';\nimport {fromEvent} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {IconData} from '@ironsource/fusion-ui/components/icon/v1';\n\n@Directive()\nexport abstract class ToastBaseComponent implements OnInit, AfterViewInit {\n    @Input() set configuration(value: ToastEntity) {\n        this.text = value.text || '';\n        this.type = value.type || null;\n        this.iconName = !this.type && value.icon ? value.icon : this.setIconByType(this.type);\n        this.image = !this.type && value.image ? `url(${value.image})` : null;\n        this.hasIconHolder = !this.type && !this.image && !this.iconName;\n        this.hasIcon = !!this.type || !!this.iconName;\n        this.duration = !!value.duration ? value.duration * 1000 : null;\n        this.location = value.location;\n        this.locationClass = !this.shownByService ? this.location : '';\n        this.custom = this.getCustomConfiguration(value);\n    }\n\n    @Output() toastClosed = new EventEmitter();\n\n    /** @internal */\n    type: ToastType;\n    /** @internal */\n    text: string;\n    /** @internal */\n    iconName: IconData;\n    /** @internal */\n    icon: string;\n    /** @internal */\n    image: string;\n    /** @internal */\n    duration: number;\n    /** @internal */\n    location: ToastLocation;\n    /** @internal */\n    locationClass: string;\n    /** @internal */\n    custom: DynamicComponentConfiguration;\n    /** @internal */\n    shownByService = false; // util set from service\n    /** @internal */\n    hasIconHolder = true;\n    /** @internal */\n    hasIcon = true;\n    /** @internal */\n    @ViewChild('toast') toastView;\n\n    constructor(private logService: LogService, private renderer: Renderer2) {}\n\n    /** @internal */\n    onCloseClicked() {\n        this.closeToast();\n    }\n\n    ngOnInit() {\n        if (this.duration) {\n            setTimeout(this.closeToast.bind(this), this.duration);\n        }\n    }\n\n    ngAfterViewInit() {\n        this.renderer.addClass(this.toastView.nativeElement, this.getShownTransition());\n    }\n\n    private closeToast() {\n        this.setCloseTransition();\n        fromEvent(this.toastView.nativeElement, 'animationend')\n            .pipe(take(1))\n            .subscribe(data => {\n                this.toastClosed.emit();\n            });\n    }\n\n    private setIconByType(type: ToastType): IconData {\n        let iconName;\n        switch (type) {\n            case 'success':\n                iconName = {iconName: 'check', iconVersion: 'v2'};\n                break;\n            case 'alert':\n                iconName = {iconName: 'bullhorn', iconVersion: 'v2'};\n                break;\n            case 'error':\n            case 'warning':\n                iconName = {iconName: 'warning-note', iconVersion: 'v2'};\n                break;\n        }\n        return iconName || '';\n    }\n\n    private getCustomConfiguration(toastConfig: ToastEntity): DynamicComponentConfiguration {\n        const isCustom = toastConfig?.custom?.component || toastConfig?.custom?.element || toastConfig?.custom?.htmlSnippet;\n        if (isCustom) {\n            if (!!toastConfig.text || !!toastConfig.type || !!toastConfig.icon || !!toastConfig.image) {\n                this.logService.error(\n                    new Error(`Can't use predefined and custom toast content same time. Custom content will be ignored.`)\n                );\n            }\n            return toastConfig.custom;\n        }\n        return null;\n    }\n\n    private setCloseTransition() {\n        let onCloseClass = 'fu-fadeout'; // default and center;\n        if (this.location) {\n            if (this.location.endsWith('-right')) {\n                onCloseClass = 'fu-slide-out-right';\n            } else if (this.location.endsWith('-left')) {\n                onCloseClass = 'fu-slide-out-left';\n            }\n        }\n        if (onCloseClass !== 'fu-fadeout' && this.shownByService) {\n            // in case toast opened from service and has slide animation\n            this.renderer.setStyle(this.toastView.nativeElement, 'position', 'relative');\n        }\n        // set on close class with animation\n        this.renderer.addClass(this.toastView.nativeElement, onCloseClass);\n    }\n\n    private getShownTransition(): string {\n        return this.getShownTransitionByLocation(this.location);\n    }\n\n    private getShownTransitionByLocation(location?: ToastLocation): string {\n        if (!!location && location.startsWith('top-')) {\n            return 'fu-top-fadein';\n        } else if (!!location && location.startsWith('bottom-')) {\n            return 'fu-bottom-fadein';\n        } else {\n            return 'fu-fadein';\n        }\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}