{"version":3,"file":"mosaic-design-infosec-components-core-components-common.mjs","sources":["../../../libs/core-components/common/src/lib/control-values-accessor/control-values-accessor.ts","../../../libs/core-components/common/src/lib/destroyable/destroyable.ts","../../../libs/core-components/common/src/lib/validatable-by-parent-control/validatable-by-parent-control.ts","../../../libs/core-components/common/mosaic-design-infosec-components-core-components-common.ts"],"sourcesContent":["import { Directive, OnInit, Injector } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor as AngularControlValueAccessor, NgControl } from '@angular/forms';\n\nimport { OnChange, OnTouch } from '@mosaic-design/infosec-components/types';\n\n@Directive()\nexport abstract class ControlValueAccessor<ParentValue, ControlValue = ParentValue>\n    implements AngularControlValueAccessor, OnInit\n{\n    protected parentControl: AbstractControl | undefined;\n\n    protected constructor(protected injector: Injector) {}\n\n    ngOnInit(): void {\n        const parent = this.injector.get<NgControl>(NgControl, undefined, {\n            optional: true\n        });\n\n        this.parentControl = parent?.control ?? undefined;\n    }\n\n    onChange: OnChange<ControlValue> = () => {\n        // empty\n    };\n\n    onTouch: OnTouch = () => {\n        // empty\n    };\n\n    abstract writeValue(value: ParentValue): void;\n\n    registerOnChange(fn: OnChange<ControlValue>): void {\n        this.onChange = fn;\n    }\n\n    registerOnTouched(fn: OnTouch): void {\n        this.onTouch = fn;\n    }\n\n    setDisabledState(isDisabled: boolean): void {\n        // empty\n    }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/**\n * Базовый класс для объектов, которым нужно уничтожать, например, подписки, но у этих объектов нет providers\n * для использования DestroyService.\n */\n@Injectable()\nexport abstract class Destroyable implements OnDestroy {\n    protected destroyed$ = new Subject<void>();\n\n    ngOnDestroy(): void {\n        this.destroyed$.next();\n        this.destroyed$.complete();\n    }\n}\n","import { Directive, Injector, ChangeDetectorRef, OnInit } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { distinctUntilChanged, takeUntil } from 'rxjs';\n\nimport { DestroyService } from '@mosaic-design/infosec-components/services';\nimport { isNonNullable } from '@mosaic-design/infosec-components/utils';\n\nimport { ControlValueAccessor } from '../control-values-accessor/control-values-accessor';\n\n@Directive()\nexport abstract class ValidatableByParentControl<ParentValue, ControlValue = ParentValue>\n    extends ControlValueAccessor<ParentValue, ControlValue>\n    implements OnInit\n{\n    #isParentWatchInitialized = false;\n\n    protected validatableControl: AbstractControl | undefined;\n\n    protected constructor(\n        injector: Injector,\n        protected changeDetectorRef: ChangeDetectorRef,\n        protected destroyed$: DestroyService\n    ) {\n        super(injector);\n    }\n\n    override ngOnInit(): void {\n        super.ngOnInit();\n\n        this.initParentWatch();\n    }\n\n    protected setValidatableControl(control: AbstractControl): void {\n        this.validatableControl = control;\n\n        this.initParentWatch();\n    }\n\n    private initParentWatch(): void {\n        if (this.#isParentWatchInitialized) {\n            return;\n        }\n\n        const parentControl = this.parentControl;\n        const validatableControl = this.validatableControl;\n\n        if (isNonNullable(parentControl) && isNonNullable(validatableControl)) {\n            if (parentControl.statusChanges) {\n                parentControl.statusChanges.pipe(distinctUntilChanged(), takeUntil(this.destroyed$)).subscribe(() => {\n                    validatableControl.setErrors(parentControl.errors);\n                    this.changeDetectorRef.markForCheck();\n                });\n            }\n\n            validatableControl.setValidators(() => parentControl.errors);\n\n            this.#isParentWatchInitialized = true;\n        }\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}