{"version":3,"file":"ironsource-fusion-ui-components-toggle-common-base.mjs","sources":["../../../projects/fusion-ui/components/toggle/common/base/toggle.base.component.ts","../../../projects/fusion-ui/components/toggle/common/base/ironsource-fusion-ui-components-toggle-common-base.ts"],"sourcesContent":["import {Directive, ElementRef, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {UniqueIdService} from '@ironsource/fusion-ui/services/unique-id';\nimport {ControlValueAccessor} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, of, Subject} from 'rxjs';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {delay, startWith, takeUntil} from 'rxjs/operators';\nimport {isNullOrUndefined, isString} from '@ironsource/fusion-ui/utils';\nimport {ToggleLabel} from '@ironsource/fusion-ui/components/toggle/common/entities';\n\n@Directive()\nexport abstract class ToggleBaseComponent implements OnInit, OnDestroy, ControlValueAccessor {\n    @Input()\n    set label(label: ToggleLabel) {\n        this._label = label;\n        this.setLabel(this._label);\n    }\n\n    get label(): ToggleLabel {\n        return this._label;\n    }\n\n    @Input() value: string;\n    @Input() name: string;\n\n    @Input() set isDisabled(value: boolean) {\n        this.isDisabledInput$.next(value);\n    }\n\n    @Input() loading: boolean;\n    @Input() model = false;\n    @Input() size: 'medium' | 'small' = 'medium';\n    @Input() customCheckedBackgroundColor: string;\n    @Output() modelChange = new EventEmitter();\n\n    @HostBinding('attr.style')\n    public get customBGColor(): any {\n        return !!this.customCheckedBackgroundColor\n            ? this.sanitizer.bypassSecurityTrustStyle(`--checked-bg-color: ${this.customCheckedBackgroundColor}`)\n            : this.elementRef.nativeElement.getAttribute('style');\n    }\n\n    id: string;\n    isChecked$ = new BehaviorSubject<boolean>(false);\n    isDisabled$ = new BehaviorSubject<boolean>(false);\n    isDisabledInput$ = new BehaviorSubject<boolean>(false);\n    isDisabledFormControl$ = new BehaviorSubject<boolean>(false);\n    currentLabel: string;\n    _label: ToggleLabel;\n    /**\n     * fix for issue https://github.com/ironSource/fusion-ui/issues/121\n     * we will add animated classes after initial hrml will be rendered.\n     * So, in this case will not animation on component render.\n     */\n    animated$ = of(true).pipe(delay(500), startWith(false));\n    private onDestroy$ = new Subject<void>();\n    constructor(private uniqueIdService: UniqueIdService, private sanitizer: DomSanitizer, private elementRef: ElementRef) {}\n\n    ngOnInit() {\n        this.id = 'is-toggle-' + this.uniqueIdService.getUniqueId();\n        this.value = this.value || '';\n        combineLatest([this.isDisabledFormControl$.asObservable(), this.isDisabledInput$.asObservable()])\n            .pipe(takeUntil(this.onDestroy$))\n            .subscribe(([isDisabledInput, isDisabledFormControl]: [boolean, boolean]) =>\n                this.isDisabled$.next(isDisabledInput || isDisabledFormControl)\n            );\n    }\n\n    ngOnDestroy() {\n        this.onDestroy$.next();\n        this.onDestroy$.complete();\n    }\n\n    onChange(event) {\n        this.model = event;\n        this.isChecked$.next(this.model);\n        this.propagateChange(event);\n        this.modelChange.emit(Boolean(event));\n        this.setLabel(this.label);\n    }\n\n    setLabel(label: ToggleLabel) {\n        if (isString(label)) {\n            this.currentLabel = label;\n        } else if (!!label && label.hasOwnProperty('on')) {\n            this.currentLabel = this.model ? label?.on : label?.off;\n        }\n    }\n\n    // Implement ControlValueAccessor methods\n    /**\n     * Method to call when value has changes.\n     */\n    propagateChange = (_: string) => {};\n\n    /**\n     * Method to call when the component is touched (when it was is clicked).\n     */\n    propagateTouched = () => {};\n\n    /**\n     * update value from model to the component\n     */\n    writeValue(value: any): void {\n        if (value === undefined || value === null) {\n            this.model = false;\n        } else {\n            this.model = value;\n        }\n        this.isChecked$.next(this.model);\n        this.setLabel(this.label);\n    }\n\n    /**\n     * Informs the outside world about changes.\n     * see method propagateChange call - this.propagateChange(this.model);\n     */\n    registerOnChange(fn: any): void {\n        this.propagateChange = fn;\n    }\n\n    /**\n     * Component was Touched\n     */\n    registerOnTouched(fn: any): void {\n        this.propagateTouched = fn;\n    }\n\n    /**\n     * on set form controll enabled / disabled\n     * also do UI Component enabled / disabled\n     */\n    setDisabledState?(isDisabled: boolean): void {\n        this.isDisabledFormControl$.next(isDisabled);\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}