{"version":3,"file":"ironsource-fusion-ui-components-dynamic-components-common-base.mjs","sources":["../../../projects/fusion-ui/components/dynamic-components/common/base/dynamic-components.base.component.ts","../../../projects/fusion-ui/components/dynamic-components/common/base/ironsource-fusion-ui-components-dynamic-components-common-base.ts"],"sourcesContent":["import {\n    Component,\n    ComponentRef,\n    Input,\n    ViewChild,\n    ViewContainerRef,\n    Type,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Renderer2,\n    ElementRef,\n    TemplateRef,\n    Directive\n} from '@angular/core';\nimport {DynamicComponentConfiguration} from '@ironsource/fusion-ui/components/dynamic-components/common/entities';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\n\n@Directive()\nexport abstract class DynamicComponentsBaseComponent implements OnChanges, OnInit, OnDestroy {\n    @ViewChild('dynamicContent', {read: ViewContainerRef, static: true}) dynamicData: ViewContainerRef;\n    @ViewChild('elementContent', {read: ElementRef}) set elementContent(value: ElementRef) {\n        this.elementContainer = value;\n        this.renderNativeElement();\n    }\n\n    // deprecated\n    @Input() component: Type<Component>;\n    @Input() componentData: any = {};\n    @Input() set element(node: Node) {\n        this.nativeElement = node;\n        this.renderNativeElement();\n    }\n    // --- instead deprecated params\n\n    @Input() set configuration(data: DynamicComponentConfiguration) {\n        if (data?.component?.type) {\n            this.component = data.component.type;\n            this.componentData = data.component.data;\n            this.updateComponent(true);\n        } else if (data?.templateRef) {\n            this.templateRef = data.templateRef;\n        } else if (data?.element) {\n            this.nativeElement = data.element;\n            this.renderNativeElement();\n        } else if (data?.htmlSnippet) {\n            this.htmlSnippet = this.sanitizer.bypassSecurityTrustHtml(data.htmlSnippet);\n        }\n    }\n\n    htmlSnippet: SafeHtml;\n    templateRef: TemplateRef<any>;\n\n    private cmpRef: ComponentRef<Component>;\n    private isViewInitialized = false;\n    private nativeElement: Node;\n    private elementContainer: ElementRef;\n\n    constructor(private renderer: Renderer2, private sanitizer: DomSanitizer) {}\n\n    updateComponent(isComponentChanged?: boolean) {\n        if (!this.isViewInitialized) {\n            return;\n        }\n\n        if (!this.cmpRef || isComponentChanged) {\n            if (isComponentChanged) {\n                this.cmpRef.destroy();\n            }\n\n            this.cmpRef = this.dynamicData.createComponent(this.component);\n        }\n\n        this.onComponentChanges();\n    }\n\n    ngOnChanges(changes) {\n        const isComponentChanged =\n            (changes.component && changes.component.previousValue !== changes.component.currentValue && !changes.component.firstChange) ||\n            (changes.componentData &&\n                changes.componentData.previousValue !== changes.componentData.currentValue &&\n                !changes.componentData.firstChange);\n        this.updateComponent(isComponentChanged);\n    }\n\n    ngOnInit() {\n        if (this.component) {\n            this.isViewInitialized = true;\n            this.updateComponent();\n        }\n    }\n\n    onComponentChanges() {\n        if (this.componentData) {\n            Object.keys(this.componentData).forEach(key => {\n                this.cmpRef.instance[key] = this.componentData[key];\n                // region fix for dynamic component with formControl\n                if (key === 'formControl' && typeof this.cmpRef?.instance['registerOnChange'] === 'function') {\n                    this.cmpRef.instance['registerOnChange']((val: any) => {\n                        this.componentData.formControl.setValue(val);\n                    });\n                    if (typeof this.cmpRef?.instance['writeValue'] === 'function') {\n                        this.cmpRef.instance['writeValue'](this.componentData.formControl.value);\n                    }\n                }\n                // endregion\n            });\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.cmpRef) {\n            this.cmpRef.destroy();\n        }\n        this.clearContent();\n    }\n\n    private renderNativeElement(): void {\n        this.clearContent();\n        if (this.nativeElement && this.elementContainer && this.elementContainer.nativeElement) {\n            const parent = this.elementContainer.nativeElement;\n            this.renderer.appendChild(parent, this.nativeElement);\n        }\n    }\n\n    private clearContent(): void {\n        const nativeElem = this.elementContainer ? this.elementContainer.nativeElement : null;\n        while (nativeElem && nativeElem.firstChild) {\n            this.renderer.removeChild(nativeElem, nativeElem.firstChild);\n        }\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}