{"version":3,"file":"ironsource-fusion-ui-components-tag-common-base.mjs","sources":["../../../projects/fusion-ui/components/tag/common/base/tag.base.component.ts","../../../projects/fusion-ui/components/tag/common/base/ironsource-fusion-ui-components-tag-common-base.ts"],"sourcesContent":["import {Directive, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, Renderer2} from '@angular/core';\nimport {BehaviorSubject, fromEvent, Subject} from 'rxjs';\nimport {TagComponentConfigurations} from '@ironsource/fusion-ui/components/tag/common/entities';\nimport {takeUntil} from 'rxjs/operators';\nimport {IconData} from '@ironsource/fusion-ui/components/icon/v1';\n\n@Directive()\nexport abstract class TagBaseComponent implements OnInit, OnDestroy {\n    /** @internal */\n    closeIconName$ = new BehaviorSubject<IconData>('');\n    /** @internal */\n    width: number;\n    /** @internal */\n    tooltipWidth: number;\n    /** @internal */\n    _selected: boolean;\n    /** @internal */\n    _disabled: boolean;\n    /** @internal */\n    _close: boolean;\n    /** @internal */\n    protected onDestroy$ = new Subject<void>();\n    @Input() set configuration(value: TagComponentConfigurations) {\n        if (!!value) {\n            this.id = value.id;\n            this.icon = value.icon;\n            this.flag = value.flag;\n            this.image = value.image;\n            this.title = value.title;\n            this.close = value.close;\n            this.disabled = value.disabled;\n            this.role = value.role;\n            this.selected = value.selected;\n            this.tooltipContent = value.tooltipContent ?? value.title;\n            this.tooltipWidth = value.tooltipWidth;\n\n            this._tag = value;\n        }\n    }\n    private _tag: TagComponentConfigurations;\n\n    /**\n     * Flag for suppress remove from DOM, just emit remove event to parent.\n     */\n    @Input() removeEventOnly: boolean;\n\n    // deprecated inputs\n    /** @internal */\n    @Input() id: number | string;\n    /** @internal */\n    @Input() icon: IconData;\n    /** @internal */\n    @Input() flag: string;\n    /** @internal */\n    @Input() image: string;\n    /** @internal */\n    @Input() title: string;\n    /** @internal */\n    @Input() tooltipContent: string;\n    // when using tags inside an isClickOutside directive,\n    // the click from the onremove will cause isClickOutside to trigger as an outside click\n    // due to the tag being already removed from the DOM tree when the click reaches isClickOutside\n    // in which case we want to set suppressClickOnRemove as true\n    /** @internal */\n    @Input() suppressClickOnRemove = false;\n    /** @internal */\n    @Input() set role(role: 'filter') {\n        this.changeHostClass('tag-filter', role === 'filter');\n    }\n    /** @internal */\n    @Input() set close(close: boolean) {\n        this._close = close;\n        this.changeHostClass('with-closed-icon', close);\n    }\n\n    get close(): boolean {\n        return this._close;\n    }\n    /** @internal */\n    @Input() set disabled(disabled: boolean) {\n        this._disabled = disabled;\n        this.changeHostClass('disabled', disabled);\n    }\n\n    get disabled(): boolean {\n        return this._disabled;\n    }\n    /** @internal */\n    @Input()\n    set selected(selected: boolean) {\n        this.changeHostClass('selected', selected);\n        this._selected = selected;\n    }\n\n    get selected(): boolean {\n        return this._selected;\n    }\n\n    // eslint-disable-next-line\n    @Output() onRemove = new EventEmitter<TagComponentConfigurations>();\n    /** @internal */\n    // eslint-disable-next-line\n    @Output() selectedChange = new EventEmitter<any>();\n\n    constructor(private element: ElementRef, private renderer: Renderer2) {}\n\n    ngOnInit() {\n        this.width = this.element.nativeElement.offsetWidth;\n        if (!this.close && !this.disabled) {\n            this.setClickListener();\n        }\n    }\n\n    ngOnDestroy() {\n        this.onDestroy$.next();\n        this.onDestroy$.complete();\n    }\n    /** @internal */\n    closeClicked($event) {\n        if (!this.removeEventOnly) {\n            this.renderer.removeChild(this.renderer.parentNode(this.element.nativeElement), this.element.nativeElement);\n        }\n        this.onRemove.emit(this._tag);\n        if (this.suppressClickOnRemove) {\n            $event.stopPropagation();\n        }\n    }\n    /** @internal */\n    setClickListener(): void {\n        this.onDestroy$.next();\n        fromEvent(this.element.nativeElement, 'click')\n            .pipe(takeUntil(this.onDestroy$))\n            .subscribe(_ => {\n                this.selected = !this.selected;\n                this.selectedChange.emit({\n                    id: this.id,\n                    selected: this.selected\n                });\n            });\n    }\n    /** @internal */\n    changeHostClass(className: string, add: boolean): void {\n        const classAction = add ? 'addClass' : 'removeClass';\n        this.renderer[classAction](this.element.nativeElement, className);\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}