{"version":3,"file":"eurosat-form.mjs","sources":["../../../projects/form/src/lib/components/form-button/form-button-actions.ts","../../../projects/form/src/lib/components/field-base/field-base.component.ts","../../../projects/form/src/lib/components/form-button/form-button.component.ts","../../../projects/form/src/lib/model/es-form.translates.ts","../../../projects/form/src/lib/components/form-help/form-help.token.ts","../../../projects/form/src/lib/components/form-help/form-help-dialog.component.ts","../../../projects/form/src/lib/components/form-help/form-help.component.ts","../../../projects/form/src/lib/model/es-form-action.interface.ts","../../../projects/form/src/lib/components/form-button-delete/form-button-delete.component.ts","../../../projects/form/src/lib/components/form-button-toggle/form-button-toggle.component.ts","../../../projects/form/src/lib/components/form-input/form-input.component.ts","../../../projects/form/src/lib/util/latin-map.ts","../../../projects/form/src/lib/components/form-select/form-select.component.ts","../../../projects/form/src/lib/components/form-autocomplete/form-autocomplete.component.ts","../../../projects/form/src/lib/components/form-hidden/form-hidden.component.ts","../../../projects/form/src/lib/components/form-checkbox/form-checkbox.component.ts","../../../projects/form/src/lib/components/form-slide-toggle/form-slide-toggle.component.ts","../../../projects/form/src/lib/components/form-textarea/form-textarea.component.ts","../../../projects/form/src/lib/components/form-colorpicker/form-colorpicker.component.ts","../../../projects/form/src/lib/components/form-select-image/form-select-image.component.ts","../../../projects/form/src/lib/components/form-draggable-list/form-draggable-list.component.ts","../../../projects/form/src/lib/components/form-upload/form-upload.constants.ts","../../../projects/form/src/lib/util/file-drop.directive.ts","../../../projects/form/src/lib/components/form-upload/form-upload.component.ts","../../../projects/form/src/lib/components/form-upload-image/croppie-wrapper/es-croppie-wrapper.component.ts","../../../projects/form/src/lib/components/form-upload-image/form-upload-image.component.ts","../../../projects/form/src/lib/components/form-progress-bar/form-progress-bar.component.ts","../../../projects/form/src/lib/components/form-html/form-html.component.ts","../../../projects/form/src/lib/components/form-button-add/form-button-add.component.ts","../../../projects/form/src/lib/model/es-ajax-select.params.ts","../../../projects/form/src/lib/es-form.service.ts","../../../projects/form/src/lib/components/form-select-ajax/form-select-ajax.component.ts","../../../projects/form/src/lib/components/form-slider/form-slider.component.ts","../../../projects/form/src/lib/components/form-captcha/form-captcha.component.ts","../../../projects/form/src/lib/components/form-wysiwyg-jodit/jodit-wrapper/events.ts","../../../projects/form/src/lib/components/form-wysiwyg-jodit/jodit-wrapper/jodit-angular.component.ts","../../../projects/form/src/lib/components/form-wysiwyg-jodit/form-wysiwyg-jodit.component.ts","../../../projects/form/src/lib/components/form-ajax-autocomplete/form-ajax-autocomplete.component.ts","../../../projects/form/src/lib/components/form-check-list/form-check-list.component.ts","../../../projects/form/src/lib/util/date-util.ts","../../../projects/form/src/lib/components/form-flatpickr/date-picker-mode.ts","../../../projects/form/src/lib/components/form-flatpickr/flatpickr-defaults.provider.ts","../../../projects/form/src/lib/components/form-flatpickr/form-flatpickr.service.ts","../../../projects/form/src/lib/components/form-flatpickr/form-flatpickr.component.ts","../../../projects/form/src/lib/components/form-range-flatpicker/form-range-flatpicker.component.ts","../../../projects/form/src/lib/components/form-wysiwyg-quill/form-wysiwyg-quill.component.ts","../../../projects/form/src/lib/components/dynamic-field/dynamic-field.directive.ts","../../../projects/form/src/lib/components/dynamic-field/dynamic-field.component.ts","../../../projects/form/src/lib/model/es-form-response-message.ts","../../../projects/form/src/lib/util/validators.ts","../../../projects/form/src/lib/container/es-form.component.ts","../../../projects/form/src/lib/container/es-form.component.html","../../../projects/form/src/lib/util/ngx-error/utils/toArray.ts","../../../projects/form/src/lib/util/ngx-error/es-errors.directive.ts","../../../projects/form/src/lib/util/ngx-error/es-error.directive.ts","../../../projects/form/src/lib/es-form.module.ts","../../../projects/form/src/public_api.ts","../../../projects/form/src/eurosat-form.ts"],"sourcesContent":["export class FormButtonActions {\n    static CLICK = 'click';\n}\n","import { FormGroup } from '@angular/forms';\nimport {EsFormField} from '../../model/es-form-field.interface';\nimport {EsFormFieldConfig} from '../../model/es-config.interface';\nimport {IEsFormComponent} from '../../container/es-form.interface';\nimport {IDynamicField} from '../dynamic-field/dynamic-field.interface';\nimport {ChangeDetectionStrategy, ChangeDetectorRef, DestroyRef, inject} from '@angular/core';\n\nexport abstract class EsFieldBase implements EsFormField {\n    configList: EsFormFieldConfig[];\n    config: EsFormFieldConfig;\n    group: FormGroup;\n    esForm: IEsFormComponent;\n    dynamicField?: IDynamicField;\n\n    protected readonly destroyRef = inject(DestroyRef);\n\n    protected constructor(protected cd: ChangeDetectorRef) {}\n\n    checkView(): void {\n        this.cd.markForCheck();\n    }\n\n    get activeErrorMessages(): string[] {\n        const ctrl = this.group?.get(this.config.name);\n        if (!ctrl || !ctrl.errors) { return []; }\n        return this.config.validation\n            .filter(v => ctrl.hasError(v.name))\n            .map(v => v.message);\n    }\n}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, TemplateRef, ViewChild} from '@angular/core';\nimport {Subject} from 'rxjs';\nimport {EsDialogConfig, EsDialogService} from '@eurosat/dialog';\nimport {FormButtonActions} from './form-button-actions';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {MatButton} from '@angular/material/button';\nimport {TranslatePipe} from '@ngx-translate/core';\n\n\n@Component({\n    selector: 'es-form-button',\n    styleUrls: ['form-button.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div    [style.display]=\"config.display ? 'inline-block' : 'none'\"\n                class=\"dynamic-field form-button\"\n                [formGroup]=\"group\">\n            <button mat-raised-button\n                    color=\"accent\"\n                    [disabled]=\"config.disabled\"\n                    [type]=\"config.type\"\n                    (click)=\"onClick()\"\n            >\n                {{ config.label }}\n            </button>\n        </div>\n        <ng-template #confirmDialog>\n            @if (config.confirmMessage) {\n                <div class=\"confirm-buttons\">\n                    <button type=\"button\"\n                            color=\"accent\"\n                            mat-raised-button\n                            (click)=\"onConfirmYes()\"> {{'an.common.ano' | translate}}\n                    </button>\n                    <button type=\"button\"\n                            color=\"accent\"\n                            mat-raised-button\n                            (click)=\"onConfirmNo()\">{{'an.common.ne' | translate}}\n                    </button>\n                </div>\n            }\n        </ng-template>\n    `,\n    standalone: true,\n    imports: [ReactiveFormsModule, MatButton, TranslatePipe]\n})\nexport class FormButtonComponent extends EsFieldBase {\n\n    buttonClick: Subject<void> = new Subject<void>(); // todo asi to nic nedela ??\n    @ViewChild('confirmDialog', {static: false}) confirmDialog: TemplateRef<any>;\n\n    constructor(\n        cd: ChangeDetectorRef,\n        private dialog: EsDialogService,\n    ) {\n        super(cd);\n    }\n\n    onClick() {\n        if (this.config.confirmMessage && this.confirmDialog && this.esForm) {\n            this.esForm.pauseSubmit = true;\n            const config: EsDialogConfig = {\n                minWidth: '300px',\n                data: {\n                    title: this.config.confirmMessage,\n                }\n            };\n            this.dialog.open(this.confirmDialog, config);\n        } else {\n            this.buttonClick.next();\n            const control = this.group.get(this.config.name);\n            if (control) {\n                control.setValue(FormButtonActions.CLICK);\n            }\n        }\n    }\n\n    onConfirmYes() {\n        this.group.controls[this.config.name].setValue(FormButtonActions.CLICK);\n        this.esForm.pauseSubmit = false;\n        this.esForm.handleSubmit(false);\n        this.dialog.close();\n    }\n\n    onConfirmNo() {\n        this.dialog.close();\n        this.esForm.pauseSubmit = false;\n    }\n}\n","\nexport class EsFormTranslates {\n\n    static SUCCESS_SAVE          = 'an.es-form.success.save';\n    static UPLOAD_FILE           = 'an.es-form.upload.file';\n    static CROP                  = 'an.es-form.crop';\n    static CANCEL                = 'an.es-form.cancel';\n    static DONE                  = 'an.es-form.done';\n    static SEARCH                = 'an.es-form.search';\n    static NO_OPTIONS_FOUND      = 'an.es-form.no.options.found';\n    static MINIMUM_CHARACTERS    = 'an.es-form.minimum.characters';\n    static UPLOADING             = 'an.es-form.uploading';\n    static REMOVE                = 'an.es-form.remove';\n    static UPLOAD_FILE_SEMICOLON = 'an.es-form.upload.filename.semicolon';\n    static SELECT_ALL            = 'an.es-form.select.all';\n    static CANCEL_SELECTION      = 'an.es-form.select.cancel.selection';\n    static HELP_ADD              = 'an.es-form.help.add';\n    static HELP_EDIT             = 'an.es-form.edit.help';\n    static ERROR_CHECK           = 'an.es-form.error.check';\n    static GENERAL_ERROR         = 'an.something.went.wrong';\n    static MULTIPLE_SELECT       = 'an.es-form.multiple.select';\n    static ADD                   = 'an.es-form.add';\n    static LOWER_THAN            = 'an.es-form.is.lower.than';\n    static GREATER_THAN          = 'an.es-form.is.greater.than';\n    static FILE_DESCRIPTION      = 'an.es-form.file.description';\n    static CONFIRM               = 'an.es-form.confirm';\n    static USED_COLORS           = 'an.es-form.used.colors';\n\n    defaults = {\n        [EsFormTranslates.SUCCESS_SAVE]: 'Successfully saved',\n        [EsFormTranslates.UPLOAD_FILE]: 'Upload file',\n        [EsFormTranslates.CROP]: 'Crop',\n        [EsFormTranslates.CANCEL]: 'Cancel',\n        [EsFormTranslates.DONE]: 'Done',\n        [EsFormTranslates.SEARCH]: 'Searching',\n        [EsFormTranslates.NO_OPTIONS_FOUND]: 'No options found',\n        [EsFormTranslates.MINIMUM_CHARACTERS]: 'Minimum number of characters',\n        [EsFormTranslates.UPLOADING]: 'Uploading',\n        [EsFormTranslates.REMOVE]: 'Remove',\n        [EsFormTranslates.UPLOAD_FILE_SEMICOLON]: 'The file name must not contain a character; (semicolon)',\n        [EsFormTranslates.SELECT_ALL]: 'Select all',\n        [EsFormTranslates.CANCEL_SELECTION]: 'Cancel selection',\n        [EsFormTranslates.HELP_ADD]: 'Enter help',\n        [EsFormTranslates.HELP_EDIT]: 'Edit help',\n        [EsFormTranslates.ERROR_CHECK]: 'Please check the form for errors',\n        [EsFormTranslates.GENERAL_ERROR]: 'Something went wrong',\n        [EsFormTranslates.MULTIPLE_SELECT]: 'Multiple',\n        [EsFormTranslates.ADD]: 'Add',\n        [EsFormTranslates.LOWER_THAN]: 'is lower than',\n        [EsFormTranslates.GREATER_THAN]: 'is greater than',\n        [EsFormTranslates.FILE_DESCRIPTION]: 'File description',\n        [EsFormTranslates.CONFIRM]: 'Confirm',\n        [EsFormTranslates.USED_COLORS]: 'Used colors',\n    };\n\n    static getDefaults() {\n        const self = new EsFormTranslates;\n        return self.defaults;\n    }\n}\n","import {EventEmitter, InjectionToken, Type} from '@angular/core';\n\n/** to, co form-help potrebuje od formulare, ktery otevre v dialogu (pridani / uprava napovedy) */\nexport interface EsFormHelpForm {\n    formUrl: string;\n    formSuccess: EventEmitter<unknown>;\n}\n\n/**\n * Komponenta formulare pro dialog napovedy. Poskytuje ji EsFormComponent (providers).\n *\n * Predava se tokenem, protoze primy import EsFormComponent do form-help by vytvoril cyklus\n * es-form -> dynamic-field -> form-checkbox -> form-help -> es-form, ktery partial compilation knihovny\n * neumi prelozit (NG3003) a ktery by blokoval i prechod na standalone komponenty.\n */\nexport const ES_FORM_HELP_FORM = new InjectionToken<Type<EsFormHelpForm>>('ES_FORM_HELP_FORM');\n","import {ChangeDetectionStrategy, Component, DestroyRef, inject, OnInit, Type, ViewChild, ViewContainerRef} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {MAT_DIALOG_DATA} from '@angular/material/dialog';\nimport {EsFormHelpForm} from './form-help.token';\n\nexport interface EsFormHelpDialogData {\n    title: string;\n    formType: Type<EsFormHelpForm>;\n    formUrl: string;\n    onSuccess: () => void;\n}\n\n/**\n * Obsah dialogu napovedy - formular (es-form) se vytvari dynamicky z typu predaneho v datech dialogu,\n * aby form-help neimportoval EsFormComponent (viz ES_FORM_HELP_FORM).\n */\n@Component({\n    selector: 'es-form-help-dialog',\n    standalone: true,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `<ng-container #formContainer></ng-container>`,\n})\nexport class FormHelpDialogComponent implements OnInit {\n\n    @ViewChild('formContainer', {read: ViewContainerRef, static: true}) container: ViewContainerRef;\n\n    private readonly data = inject<EsFormHelpDialogData>(MAT_DIALOG_DATA);\n    private readonly destroyRef = inject(DestroyRef);\n\n    ngOnInit(): void {\n        const form = this.container.createComponent(this.data.formType);\n        form.setInput('formUrl', this.data.formUrl);\n        form.instance.formSuccess\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe(() => this.data.onSuccess());\n    }\n}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Input} from '@angular/core';\nimport {MatDialogRef} from '@angular/material/dialog';\nimport {TranslateService} from '@ngx-translate/core';\nimport {IEsFormComponent} from '../../container/es-form.interface';\nimport {EsIcon, EsIconComponent} from '@eurosat/icon';\nimport {EsDialogConfig, EsDialogService} from '@eurosat/dialog';\nimport {EsFormTranslates} from '../../model/es-form.translates';\nimport {ES_FORM_HELP_FORM} from './form-help.token';\nimport {EsFormFieldConfig} from '../../model/es-config.interface';\nimport {EsFormHelpDialogData, FormHelpDialogComponent} from './form-help-dialog.component';\nimport {EsPopoverDirective} from '@eurosat/popover';\n\n\n@Component({\n    selector: 'es-form-help',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    // popover s textem napovedy je soucasti komponenty -> pole ji vkladaji jednim radkem:\n    // <es-form-help [help]=\"config.help\" [label]=\"config.label\" [fc]=\"esForm\"></es-form-help>\n    template: `\n        @if (help) {\n            <span class=\"form-help-popover\"\n                  esPopover\n                  [popover]=\"help.message\"\n                  [popoverTitle]=\"label\"\n                  [popoverDisabled]=\"!help.message\">\n                @if (help.id === 0) {\n                    <es-icon class=\"form-help-icon form-help-clickable\"\n                             (click)=\"onHelpClick()\"\n                             [icon]=\"esIcon.ES_HELP_ADD\">\n                    </es-icon>\n                } @else if (help.url) {\n                    <es-icon class=\"form-help-icon form-help-clickable\"\n                             (click)=\"onHelpClick()\"\n                             [icon]=\"esIcon.ES_HELP_EDIT\">\n                    </es-icon>\n                } @else {\n                    <es-icon class=\"form-help-icon\"\n                             [icon]=\"esIcon.HELP_OUTLINE\">\n                    </es-icon>\n                }\n            </span>\n        }\n    `,\n    styleUrls: ['form-help.component.scss'],\n    standalone: true,\n    imports: [EsPopoverDirective, EsIconComponent],\n})\n\nexport class FormHelpComponent {\n    /** napoveda ze serveru: id 0 = zadna (spravce ji muze pridat), url = jen pro spravce (pridat/upravit) */\n    @Input() help: EsFormFieldConfig['help'];\n    /** nadpis popoveru - label pole */\n    @Input() label: string;\n    @Input() fc: IEsFormComponent;\n    esIcon = EsIcon;\n    translates = EsFormTranslates;\n\n    /** formular pro pridani/upravu napovedy - z EsFormComponent tokenem, ne importem (viz ES_FORM_HELP_FORM) */\n    private readonly formType = inject(ES_FORM_HELP_FORM, {optional: true});\n    private dialogRef: MatDialogRef<unknown> | null = null;\n\n    constructor(\n       private dialog: EsDialogService,\n       private translate: TranslateService,\n       private cd: ChangeDetectorRef\n    ) { }\n\n    onHelpClick() {\n        if (this.help.url !== '' && this.formType) {\n            let title: string;\n            if (this.help.id === 0) {\n                title = this.translate.instant(this.translates.HELP_ADD);\n            } else {\n                title = this.translate.instant(this.translates.HELP_EDIT);\n            }\n            const data: EsFormHelpDialogData = {\n                title: title,\n                formType: this.formType,\n                formUrl: this.help.url,\n                onSuccess: () => this.closeHelpDialog(),\n            };\n            const config: EsDialogConfig = {\n                minWidth: '300px',\n                data: data,\n            };\n            this.dialogRef = this.dialog.open(FormHelpDialogComponent, config);\n        }\n    }\n\n    closeHelpDialog() {\n        // jen dialog napovedy - formular s napovedou muze sam byt v dialogu, ten nezavirat\n        this.dialogRef?.close();\n        this.dialogRef = null;\n        this.fc.reload(false, null);\n    }\n\n    updateView() {\n        this.cd.markForCheck();\n    }\n}\n","\nexport interface EsFormAction {\n    action: EsFormActionType;\n    items?: string[];\n    value?: any;\n}\n\nexport class EsFormActionType {\n    static RELOAD_FORM = 'reload-form';\n    static SHOW = 'show';\n    static HIDE = 'hide';\n    static COPY = 'copy';\n    static DELETE = 'delete';\n    static RELOAD_WIZARD = 'reload-wizard';\n    static RELOAD_PAGE = 'reload-page';\n    static HIDE_EXCEPT = 'hide-except';\n    static SHOW_EXCEPT = 'show-except';\n}\n\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit} from '@angular/core';\nimport {FormBuilder, FormGroup} from '@angular/forms';\nimport { EsFormFieldConfig } from '../../model/es-config.interface';\nimport {EsIcon, EsIconComponent} from '@eurosat/icon';\nimport {EsFormActionType} from '../../model/es-form-action.interface';\nimport {IEsFormComponent} from '../../container/es-form.interface';\nimport {MatIconButton} from '@angular/material/button';\n\n@Component({\n    selector: 'form-button-delete',\n    styleUrls: ['form-button-delete.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div class=\"dynamic-field form-button\">\n            <button mat-icon-button type=\"button\" (click)=\"onClick()\">\n                <es-icon [icon]=\"esIcon.DELETE\"></es-icon>\n            </button>\n        </div>\n    `,\n    standalone: true,\n    imports: [MatIconButton, EsIconComponent]\n})\n\n/*\n* Pokud se někam přidávat tak přidat class form-container viz input\n* */\n\nexport class FormButtonDeleteComponent implements OnInit {\n\n    @Input() config: EsFormFieldConfig;\n    @Input() configList: EsFormFieldConfig[];\n    @Input() group: FormGroup;\n    @Input() _fc: IEsFormComponent;\n\n    copyButton: EsFormFieldConfig;\n    min = 0;\n    max = 0;\n    rawItemsName: Array<any> = [];\n\n    esIcon = EsIcon;\n\n    constructor(\n        private fb: FormBuilder,\n        private cd: ChangeDetectorRef,\n    ) { }\n\n    ngOnInit() {\n        this._fc.dynamicForm.config.forEach(config => {\n            if (config.type === 'copy-button') {\n                for (const ac of config.actions) {\n                    for (const item of ac.items) {\n                        if (this.config.name.includes(item)) {\n                            this.rawItemsName.push(item);\n                            this.copyButton = config;\n                        }\n                    }\n                }\n            }\n        });\n\n        this.min = Number(this.copyButton.actions[0].value[0]);\n        this.max = Number(this.copyButton.actions[0].value[1]);\n\n        if (this.copyButton.value <= this.min) {\n            this._fc.setDisplay(this.copyButton.name, false);\n        }\n    }\n\n    onClick() {\n        for (const ac of this.config.actions) {\n            if (ac.action === EsFormActionType.DELETE) {\n\n                for (const item of ac.items) {\n                    if (Number(this.copyButton.value) === 1) {\n                        /**\n                         * posledni polozka - jde o originalni prvky z configu, ktere se nemazou\n                         * min = 0 => schovame je a vyprazdnime (stejne jako je add pri value === 0 zpet odkryva)\n                         * min > 0 => pod minimum se mazat nema, prvky zustavaji videt\n                         */\n                        const config = this._fc.getFieldConfig(item);\n                        if (config === undefined) {\n                            continue;\n                        }\n                        if (this.min > 0) {\n                            this._fc.setDisplay(config.name, true);\n                        } else {\n                            this._fc.setDisplay(config.name, false);\n                            const emptyValue = config.multiple ? [] : '';\n                            config.value = emptyValue;\n                            this._fc.form.controls[config.name]?.setValue(emptyValue);\n                        }\n                    } else   {\n                        let deleteFirst = false;\n                        let deleteItemIndex;\n                        const config = this._fc.dynamicForm.config.find((tConfig, index) => {\n                            deleteItemIndex = index;\n                            return tConfig.name === item;\n                        });\n                        this._fc.form.removeControl(config.name);\n                        this._fc.subComponents.forEach((component, index) => {\n                            if (component.config.name === config.name) {\n                                this._fc.subComponents.splice(index, 1);\n                            }\n                        });\n\n                        const indexToRemove = this._fc.dynamicForm.config.indexOf(config);\n                        this._fc.dynamicForm.config.splice(indexToRemove, 1);\n\n                        let cloneName = '';\n\n                        this.copyButton.actions[0].items.forEach(tItem => {\n                            if (tItem === config.name) {\n                                deleteFirst = true;\n                            }\n                        });\n                        if (deleteFirst) {\n                            cloneName = config.name;\n                        } else {\n                            cloneName = this.getSplitName(config.name);\n                        }\n\n                        let cnt = 0;\n                        let isFirstOccurrence = true;\n                        for (let j = 0; j < this._fc.dynamicForm.config.length; j++) {\n                            if (this.getSplitName(this._fc.dynamicForm.config[j].name).includes(cloneName)) {\n                                if (isFirstOccurrence && deleteFirst) {\n                                    for (const cAc of this._fc.dynamicForm.config[j].actions) {\n                                        for (let i = 0; i < cAc.items.length; i++) {\n                                            if (deleteFirst) {\n                                                cAc.items[i] = this.getSplitName(cAc.items[i])\n                                                    .slice(0, this.getSplitName(cAc.items[i]).length - 1);\n                                            }\n                                        }\n                                    }\n                                } else {\n                                    cnt++;\n                                    for (const cAc of this._fc.dynamicForm.config[j].actions) {\n                                        for (let i = 0; i < cAc.items.length; i++) {\n                                            const splitName = this.getSplitName(cAc.items[i]);\n                                            cAc.items[i]  = splitName + cnt.toString();\n                                        }\n                                    }\n                                }\n\n                                const value = this._fc.getValue(this._fc.dynamicForm.config[j].name);\n                                this._fc.form.removeControl(this._fc.dynamicForm.config[j].name);\n\n                                if (deleteFirst && isFirstOccurrence) {\n                                    this._fc.dynamicForm.config[j].name = config.name;\n                                } else if (deleteFirst && !isFirstOccurrence) {\n                                    this._fc.dynamicForm.config[j].name = cloneName + '_' + cnt.toString();\n                                } else {\n                                    this._fc.dynamicForm.config[j].name = cloneName + cnt.toString();\n                                }\n\n                                this._fc.form.addControl(\n                                    this._fc.dynamicForm.config[j].name,\n                                    this._fc.createControl(this._fc.dynamicForm.config[j]));\n                                this._fc.setValue(this._fc.dynamicForm.config[j].name, value);\n\n                                isFirstOccurrence = false;\n\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        this._fc.dynamicForm.config.forEach(config => {\n            if (config.actions) {\n                for (const action of config.actions) {\n                    if (action.action === EsFormActionType.SHOW || action.action === EsFormActionType.HIDE) {\n                        action.items.forEach( item => {\n                            const toRemove = this._fc.dynamicForm.config.find(function (tConfig) {\n                                return tConfig.name === item;\n                            });\n\n                            if (toRemove === undefined) {\n                                const index = action.items.indexOf(item);\n                                action.items.splice(index, 1);\n                            }\n                        });\n                    }\n                }\n            }\n        });\n\n        this._fc.createGroups();\n\n        this.copyButton.value--;\n        this._fc.form.controls[this.copyButton.name].setValue(this.copyButton.value);\n\n        if (this.max > this.copyButton.value) {\n            this._fc.setDisplay(this.copyButton.name, true);\n        }\n        this.setDeleteButtonsVisibility();\n\n        this._fc.copyBtnDel.next(this.copyButton);\n        this.cd.markForCheck();\n    }\n\n    setDeleteButtonsVisibility() {\n        for (const ac of this.copyButton.actions) {\n            if (ac.action === EsFormActionType.COPY) {\n                let itemIndexForDelete;\n                ac.items.forEach((item, index) => {\n                    if (itemIndexForDelete === undefined) {\n                        if (this._fc.getFieldConfig(item).type !== 'hidden' && this._fc.getFieldConfig(item).type !== 'group') {\n                            itemIndexForDelete = index;\n                        }\n                    }\n                });\n                this._fc.dynamicForm.config.forEach(conf => {\n                    if (conf.name.includes(ac.items[itemIndexForDelete]) && this.copyButton.value === this.min) {\n                        conf.dButton.display = false;\n                    }\n                });\n            }\n        }\n    }\n\n\n    getSplitName(name) {\n        let splitName = '';\n        const split = name.split('_');\n        for (let i = 0; i < split.length - 1; i++) {\n            splitName += split[i] + '_';\n        }\n        return splitName;\n    }\n\n    checkView() {\n        this.cd.markForCheck();\n    }\n}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit} from '@angular/core';\nimport {Subject} from 'rxjs';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {NgClass} from '@angular/common';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {MatButtonToggleGroup, MatButtonToggle} from '@angular/material/button-toggle';\nimport {EsIconComponent} from '@eurosat/icon';\nimport {FormHelpComponent} from '../form-help/form-help.component';\nimport {FormButtonDeleteComponent} from '../form-button-delete/form-button-delete.component';\n\n@Component({\n    selector: 'es-form-button-toggle',\n    styleUrls: ['form-button-toggle.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        @if (config.display) {\n            <div class=\"mat-custom-label button-toggle-label\">{{config.label}}</div>\n        }\n        <div [ngClass]=\"config.display ? 'display-true' : 'display-false'\"\n             class=\"dynamic-field form-button form-container\"\n             [formGroup]=\"group\">\n            <mat-button-toggle-group\n                    appearance=\"legacy\"\n                    [hideSingleSelectionIndicator]=\"true\"\n                    [required]=\"config.required\"\n                    (change)=\"onButtonToggle($event.value)\"\n                    [formControlName]=\"config.name\">\n                @for (option of config.options; track option.value) {\n                    <mat-button-toggle [value]=\"option.value\"\n                                       (click)=\"onClick(option.value)\"\n                                       [disabled]=\"option.disabled\">\n                        @if (option.name['data-icon-name']) {\n                            <es-icon class=\"select-image\"\n                                     [icon]=\"option.name['data-icon-name']\"\n                                     [title]=\"option.name['label']\"\n                            ></es-icon>\n                        }\n                        @if (!option.name['data-icon-name']) {\n                            <span>\n                                {{option.name['label']}}\n                            </span>\n                        }\n                    </mat-button-toggle>\n                }\n            </mat-button-toggle-group>\n            @if (config.help) {\n                <es-form-help [help]=\"config.help\" [label]=\"config.label\" [fc]=\"esForm\"></es-form-help>\n            }\n            @if (config.dButton?.display) {\n                <form-button-delete [config]=\"config\"\n                                    [configList]=\"configList\"\n                                    [group]=\"group\"\n                                    [_fc]=\"esForm\">\n            </form-button-delete>\n}\n        </div>\n    `,\n    standalone: true,\n    imports: [\n        NgClass,\n        ReactiveFormsModule,\n        MatButtonToggleGroup,\n        MatButtonToggle,\n        EsIconComponent,\n        FormHelpComponent,\n        FormButtonDeleteComponent,\n    ]\n})\nexport class FormButtonToggleComponent extends EsFieldBase implements OnInit, OnDestroy {\n    clickValue = new Subject<void>();\n    constructor(cd: ChangeDetectorRef) {\n        super(cd);\n    }\n\n\n    ngOnInit(): void {\n        this.onButtonToggle(this.group.controls[this.config.name].value);\n    }\n\n    onButtonToggle(valueSelected: any) {\n        this.dynamicField.applyActionOnValueChange(valueSelected);\n    }\n\n    onClick(e: any) {\n        this.clickValue.next(e);\n    }\n\n    ngOnDestroy(): void {\n        this.onButtonToggle(this.group.controls[this.config.name].value);\n    }\n}\n","import {AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, ViewChild} from '@angular/core';\nimport {MatInput} from '@angular/material/input';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {NgClass} from '@angular/common';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {EsIconComponent} from '@eurosat/icon';\nimport {MatFormField, MatLabel, MatError} from '@angular/material/form-field';\nimport {FormHelpComponent} from '../form-help/form-help.component';\nimport {FormButtonDeleteComponent} from '../form-button-delete/form-button-delete.component';\n\n@Component({\n    selector: 'es-form-input',\n    styleUrls: ['form-input.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div [ngClass]=\"config.display ? 'display-true' : 'display-false'\"\n             class=\"dynamic-field form-input form-container\"\n             [formGroup]=\"group\">\n            @if (config.attr['icon']) {\n                <es-icon [icon]=\"config.attr['icon']\"\n                         [color]=\"config.attr['icon-color']\"\n                         class=\"selected-image\">\n                </es-icon>\n            }\n            <mat-form-field appearance=\"fill\" floatLabel=\"auto\" class=\"w-100\" subscriptSizing=\"dynamic\">\n                <mat-label>{{config.label}}</mat-label>\n                <input #inputEl\n                        matInput\n                       [type]=\"config.type === 'number' ? 'text' : config.type\"\n                       [required]=\"config.required\"\n                       [formControlName]=\"config.name\"\n                       [id]=\"config.id ? config.id: null\"\n                       (keypress)=\"validateInput($event)\"\n                       (change)=\"onChange()\"\n\n                >\n                <mat-error>\n                    @for (msg of activeErrorMessages; track msg) {\n                        <span class=\"error-line\">{{ msg }}</span>\n                    }\n                </mat-error>\n            </mat-form-field>\n            @if (config.help) {\n                <es-form-help [help]=\"config.help\" [label]=\"config.label\" [fc]=\"esForm\"></es-form-help>\n            }\n            @if (config.dButton?.display) {\n                <form-button-delete [config]=\"config\"\n                                    [configList]=\"configList\"\n                                    [group]=\"group\"\n                                    [_fc]=\"esForm\">\n                </form-button-delete>\n            }\n        </div>\n    `,\n    standalone: true,\n    imports: [\n        NgClass,\n        ReactiveFormsModule,\n        EsIconComponent,\n        MatFormField,\n        MatLabel,\n        MatInput,\n        MatError,\n        FormHelpComponent,\n        FormButtonDeleteComponent,\n    ]\n})\nexport class FormInputComponent extends EsFieldBase implements AfterViewInit {\n\n    private specialKeys: Array<string> = ['Backspace', 'Tab', 'End', 'Home', '-', 'ArrowLeft', 'ArrowRight', 'Delete'];\n\n    @ViewChild(MatInput, { read: MatInput, static: false}) matInput: MatInput;\n    @ViewChild('inputEl', {static: false}) inputEl: ElementRef;\n\n    constructor(cd: ChangeDetectorRef) {\n        super(cd);\n    }\n\n    ngAfterViewInit(): void {\n        if (this.config.focused) {\n            setTimeout(() => {\n                this.matInput.focus();\n                this.config.focused = false;\n            }, 0);\n        }\n    }\n\n    validateInput(event: KeyboardEvent) {\n        // allow keys\n        if (this.specialKeys.indexOf(event.key) !== -1) {\n            return;\n        }\n        if (event.ctrlKey && (event.key === 'v' || event.key === 'c' || event.key === 'x')) {\n            return;\n        }\n        if (this.config.type === 'number') {\n            const regex: RegExp = new RegExp(/^[\\d\\.,]*$/);\n\n            if (!String(event.key).match(regex)) {\n                event.preventDefault();\n            }\n        }\n    }\n\n    onChange() {\n        if (this.config.type === 'number') {\n            const current: string = this.inputEl.nativeElement.value;\n            if (current.indexOf(',') !== -1) {\n                this.group.controls[this.config.name].setValue(current.replace(',', '.'));\n            }\n        }\n    }\n}\n","export const latinMap: any = {\n    Á: 'A',\n    Ă: 'A',\n    Ắ: 'A',\n    Ặ: 'A',\n    Ằ: 'A',\n    Ẳ: 'A',\n    Ẵ: 'A',\n    Ǎ: 'A',\n    Â: 'A',\n    Ấ: 'A',\n    Ậ: 'A',\n    Ầ: 'A',\n    Ẩ: 'A',\n    Ẫ: 'A',\n    Ä: 'A',\n    Ǟ: 'A',\n    Ȧ: 'A',\n    Ǡ: 'A',\n    Ạ: 'A',\n    Ȁ: 'A',\n    À: 'A',\n    Ả: 'A',\n    Ȃ: 'A',\n    Ā: 'A',\n    Ą: 'A',\n    Å: 'A',\n    Ǻ: 'A',\n    Ḁ: 'A',\n    Ⱥ: 'A',\n    Ã: 'A',\n    Ꜳ: 'AA',\n    Æ: 'AE',\n    Ǽ: 'AE',\n    Ǣ: 'AE',\n    Ꜵ: 'AO',\n    Ꜷ: 'AU',\n    Ꜹ: 'AV',\n    Ꜻ: 'AV',\n    Ꜽ: 'AY',\n    Ḃ: 'B',\n    Ḅ: 'B',\n    Ɓ: 'B',\n    Ḇ: 'B',\n    Ƀ: 'B',\n    Ƃ: 'B',\n    Ć: 'C',\n    Č: 'C',\n    Ç: 'C',\n    Ḉ: 'C',\n    Ĉ: 'C',\n    Ċ: 'C',\n    Ƈ: 'C',\n    Ȼ: 'C',\n    Ď: 'D',\n    Ḑ: 'D',\n    Ḓ: 'D',\n    Ḋ: 'D',\n    Ḍ: 'D',\n    Ɗ: 'D',\n    Ḏ: 'D',\n    ǲ: 'D',\n    ǅ: 'D',\n    Đ: 'D',\n    Ƌ: 'D',\n    Ǳ: 'DZ',\n    Ǆ: 'DZ',\n    É: 'E',\n    Ĕ: 'E',\n    Ě: 'E',\n    Ȩ: 'E',\n    Ḝ: 'E',\n    Ê: 'E',\n    Ế: 'E',\n    Ệ: 'E',\n    Ề: 'E',\n    Ể: 'E',\n    Ễ: 'E',\n    Ḙ: 'E',\n    Ë: 'E',\n    Ė: 'E',\n    Ẹ: 'E',\n    Ȅ: 'E',\n    È: 'E',\n    Ẻ: 'E',\n    Ȇ: 'E',\n    Ē: 'E',\n    Ḗ: 'E',\n    Ḕ: 'E',\n    Ę: 'E',\n    Ɇ: 'E',\n    Ẽ: 'E',\n    Ḛ: 'E',\n    Ꝫ: 'ET',\n    Ḟ: 'F',\n    Ƒ: 'F',\n    Ǵ: 'G',\n    Ğ: 'G',\n    Ǧ: 'G',\n    Ģ: 'G',\n    Ĝ: 'G',\n    Ġ: 'G',\n    Ɠ: 'G',\n    Ḡ: 'G',\n    Ǥ: 'G',\n    Ḫ: 'H',\n    Ȟ: 'H',\n    Ḩ: 'H',\n    Ĥ: 'H',\n    Ⱨ: 'H',\n    Ḧ: 'H',\n    Ḣ: 'H',\n    Ḥ: 'H',\n    Ħ: 'H',\n    Í: 'I',\n    Ĭ: 'I',\n    Ǐ: 'I',\n    Î: 'I',\n    Ï: 'I',\n    Ḯ: 'I',\n    İ: 'I',\n    Ị: 'I',\n    Ȉ: 'I',\n    Ì: 'I',\n    Ỉ: 'I',\n    Ȋ: 'I',\n    Ī: 'I',\n    Į: 'I',\n    Ɨ: 'I',\n    Ĩ: 'I',\n    Ḭ: 'I',\n    Ꝺ: 'D',\n    Ꝼ: 'F',\n    Ᵹ: 'G',\n    Ꞃ: 'R',\n    Ꞅ: 'S',\n    Ꞇ: 'T',\n    Ꝭ: 'IS',\n    Ĵ: 'J',\n    Ɉ: 'J',\n    Ḱ: 'K',\n    Ǩ: 'K',\n    Ķ: 'K',\n    Ⱪ: 'K',\n    Ꝃ: 'K',\n    Ḳ: 'K',\n    Ƙ: 'K',\n    Ḵ: 'K',\n    Ꝁ: 'K',\n    Ꝅ: 'K',\n    Ĺ: 'L',\n    Ƚ: 'L',\n    Ľ: 'L',\n    Ļ: 'L',\n    Ḽ: 'L',\n    Ḷ: 'L',\n    Ḹ: 'L',\n    Ⱡ: 'L',\n    Ꝉ: 'L',\n    Ḻ: 'L',\n    Ŀ: 'L',\n    Ɫ: 'L',\n    ǈ: 'L',\n    Ł: 'L',\n    Ǉ: 'LJ',\n    Ḿ: 'M',\n    Ṁ: 'M',\n    Ṃ: 'M',\n    Ɱ: 'M',\n    Ń: 'N',\n    Ň: 'N',\n    Ņ: 'N',\n    Ṋ: 'N',\n    Ṅ: 'N',\n    Ṇ: 'N',\n    Ǹ: 'N',\n    Ɲ: 'N',\n    Ṉ: 'N',\n    Ƞ: 'N',\n    ǋ: 'N',\n    Ñ: 'N',\n    Ǌ: 'NJ',\n    Ó: 'O',\n    Ŏ: 'O',\n    Ǒ: 'O',\n    Ô: 'O',\n    Ố: 'O',\n    Ộ: 'O',\n    Ồ: 'O',\n    Ổ: 'O',\n    Ỗ: 'O',\n    Ö: 'O',\n    Ȫ: 'O',\n    Ȯ: 'O',\n    Ȱ: 'O',\n    Ọ: 'O',\n    Ő: 'O',\n    Ȍ: 'O',\n    Ò: 'O',\n    Ỏ: 'O',\n    Ơ: 'O',\n    Ớ: 'O',\n    Ợ: 'O',\n    Ờ: 'O',\n    Ở: 'O',\n    Ỡ: 'O',\n    Ȏ: 'O',\n    Ꝋ: 'O',\n    Ꝍ: 'O',\n    Ō: 'O',\n    Ṓ: 'O',\n    Ṑ: 'O',\n    Ɵ: 'O',\n    Ǫ: 'O',\n    Ǭ: 'O',\n    Ø: 'O',\n    Ǿ: 'O',\n    Õ: 'O',\n    Ṍ: 'O',\n    Ṏ: 'O',\n    Ȭ: 'O',\n    Ƣ: 'OI',\n    Ꝏ: 'OO',\n    Ɛ: 'E',\n    Ɔ: 'O',\n    Ȣ: 'OU',\n    Ṕ: 'P',\n    Ṗ: 'P',\n    Ꝓ: 'P',\n    Ƥ: 'P',\n    Ꝕ: 'P',\n    Ᵽ: 'P',\n    Ꝑ: 'P',\n    Ꝙ: 'Q',\n    Ꝗ: 'Q',\n    Ŕ: 'R',\n    Ř: 'R',\n    Ŗ: 'R',\n    Ṙ: 'R',\n    Ṛ: 'R',\n    Ṝ: 'R',\n    Ȑ: 'R',\n    Ȓ: 'R',\n    Ṟ: 'R',\n    Ɍ: 'R',\n    Ɽ: 'R',\n    Ꜿ: 'C',\n    Ǝ: 'E',\n    Ś: 'S',\n    Ṥ: 'S',\n    Š: 'S',\n    Ṧ: 'S',\n    Ş: 'S',\n    Ŝ: 'S',\n    Ș: 'S',\n    Ṡ: 'S',\n    Ṣ: 'S',\n    Ṩ: 'S',\n    ẞ: 'SS',\n    Ť: 'T',\n    Ţ: 'T',\n    Ṱ: 'T',\n    Ț: 'T',\n    Ⱦ: 'T',\n    Ṫ: 'T',\n    Ṭ: 'T',\n    Ƭ: 'T',\n    Ṯ: 'T',\n    Ʈ: 'T',\n    Ŧ: 'T',\n    Ɐ: 'A',\n    Ꞁ: 'L',\n    Ɯ: 'M',\n    Ʌ: 'V',\n    Ꜩ: 'TZ',\n    Ú: 'U',\n    Ŭ: 'U',\n    Ǔ: 'U',\n    Û: 'U',\n    Ṷ: 'U',\n    Ü: 'U',\n    Ǘ: 'U',\n    Ǚ: 'U',\n    Ǜ: 'U',\n    Ǖ: 'U',\n    Ṳ: 'U',\n    Ụ: 'U',\n    Ű: 'U',\n    Ȕ: 'U',\n    Ù: 'U',\n    Ủ: 'U',\n    Ư: 'U',\n    Ứ: 'U',\n    Ự: 'U',\n    Ừ: 'U',\n    Ử: 'U',\n    Ữ: 'U',\n    Ȗ: 'U',\n    Ū: 'U',\n    Ṻ: 'U',\n    Ų: 'U',\n    Ů: 'U',\n    Ũ: 'U',\n    Ṹ: 'U',\n    Ṵ: 'U',\n    Ꝟ: 'V',\n    Ṿ: 'V',\n    Ʋ: 'V',\n    Ṽ: 'V',\n    Ꝡ: 'VY',\n    Ẃ: 'W',\n    Ŵ: 'W',\n    Ẅ: 'W',\n    Ẇ: 'W',\n    Ẉ: 'W',\n    Ẁ: 'W',\n    Ⱳ: 'W',\n    Ẍ: 'X',\n    Ẋ: 'X',\n    Ý: 'Y',\n    Ŷ: 'Y',\n    Ÿ: 'Y',\n    Ẏ: 'Y',\n    Ỵ: 'Y',\n    Ỳ: 'Y',\n    Ƴ: 'Y',\n    Ỷ: 'Y',\n    Ỿ: 'Y',\n    Ȳ: 'Y',\n    Ɏ: 'Y',\n    Ỹ: 'Y',\n    Ź: 'Z',\n    Ž: 'Z',\n    Ẑ: 'Z',\n    Ⱬ: 'Z',\n    Ż: 'Z',\n    Ẓ: 'Z',\n    Ȥ: 'Z',\n    Ẕ: 'Z',\n    Ƶ: 'Z',\n    Ĳ: 'IJ',\n    Œ: 'OE',\n    ᴀ: 'A',\n    ᴁ: 'AE',\n    ʙ: 'B',\n    ᴃ: 'B',\n    ᴄ: 'C',\n    ᴅ: 'D',\n    ᴇ: 'E',\n    ꜰ: 'F',\n    ɢ: 'G',\n    ʛ: 'G',\n    ʜ: 'H',\n    ɪ: 'I',\n    ʁ: 'R',\n    ᴊ: 'J',\n    ᴋ: 'K',\n    ʟ: 'L',\n    ᴌ: 'L',\n    ᴍ: 'M',\n    ɴ: 'N',\n    ᴏ: 'O',\n    ɶ: 'OE',\n    ᴐ: 'O',\n    ᴕ: 'OU',\n    ᴘ: 'P',\n    ʀ: 'R',\n    ᴎ: 'N',\n    ᴙ: 'R',\n    ꜱ: 'S',\n    ᴛ: 'T',\n    ⱻ: 'E',\n    ᴚ: 'R',\n    ᴜ: 'U',\n    ᴠ: 'V',\n    ᴡ: 'W',\n    ʏ: 'Y',\n    ᴢ: 'Z',\n    á: 'a',\n    ă: 'a',\n    ắ: 'a',\n    ặ: 'a',\n    ằ: 'a',\n    ẳ: 'a',\n    ẵ: 'a',\n    ǎ: 'a',\n    â: 'a',\n    ấ: 'a',\n    ậ: 'a',\n    ầ: 'a',\n    ẩ: 'a',\n    ẫ: 'a',\n    ä: 'a',\n    ǟ: 'a',\n    ȧ: 'a',\n    ǡ: 'a',\n    ạ: 'a',\n    ȁ: 'a',\n    à: 'a',\n    ả: 'a',\n    ȃ: 'a',\n    ā: 'a',\n    ą: 'a',\n    ᶏ: 'a',\n    ẚ: 'a',\n    å: 'a',\n    ǻ: 'a',\n    ḁ: 'a',\n    ⱥ: 'a',\n    ã: 'a',\n    ꜳ: 'aa',\n    æ: 'ae',\n    ǽ: 'ae',\n    ǣ: 'ae',\n    ꜵ: 'ao',\n    ꜷ: 'au',\n    ꜹ: 'av',\n    ꜻ: 'av',\n    ꜽ: 'ay',\n    ḃ: 'b',\n    ḅ: 'b',\n    ɓ: 'b',\n    ḇ: 'b',\n    ᵬ: 'b',\n    ᶀ: 'b',\n    ƀ: 'b',\n    ƃ: 'b',\n    ɵ: 'o',\n    ć: 'c',\n    č: 'c',\n    ç: 'c',\n    ḉ: 'c',\n    ĉ: 'c',\n    ɕ: 'c',\n    ċ: 'c',\n    ƈ: 'c',\n    ȼ: 'c',\n    ď: 'd',\n    ḑ: 'd',\n    ḓ: 'd',\n    ȡ: 'd',\n    ḋ: 'd',\n    ḍ: 'd',\n    ɗ: 'd',\n    ᶑ: 'd',\n    ḏ: 'd',\n    ᵭ: 'd',\n    ᶁ: 'd',\n    đ: 'd',\n    ɖ: 'd',\n    ƌ: 'd',\n    ı: 'i',\n    ȷ: 'j',\n    ɟ: 'j',\n    ʄ: 'j',\n    ǳ: 'dz',\n    ǆ: 'dz',\n    é: 'e',\n    ĕ: 'e',\n    ě: 'e',\n    ȩ: 'e',\n    ḝ: 'e',\n    ê: 'e',\n    ế: 'e',\n    ệ: 'e',\n    ề: 'e',\n    ể: 'e',\n    ễ: 'e',\n    ḙ: 'e',\n    ë: 'e',\n    ė: 'e',\n    ẹ: 'e',\n    ȅ: 'e',\n    è: 'e',\n    ẻ: 'e',\n    ȇ: 'e',\n    ē: 'e',\n    ḗ: 'e',\n    ḕ: 'e',\n    ⱸ: 'e',\n    ę: 'e',\n    ᶒ: 'e',\n    ɇ: 'e',\n    ẽ: 'e',\n    ḛ: 'e',\n    ꝫ: 'et',\n    ḟ: 'f',\n    ƒ: 'f',\n    ᵮ: 'f',\n    ᶂ: 'f',\n    ǵ: 'g',\n    ğ: 'g',\n    ǧ: 'g',\n    ģ: 'g',\n    ĝ: 'g',\n    ġ: 'g',\n    ɠ: 'g',\n    ḡ: 'g',\n    ᶃ: 'g',\n    ǥ: 'g',\n    ḫ: 'h',\n    ȟ: 'h',\n    ḩ: 'h',\n    ĥ: 'h',\n    ⱨ: 'h',\n    ḧ: 'h',\n    ḣ: 'h',\n    ḥ: 'h',\n    ɦ: 'h',\n    ẖ: 'h',\n    ħ: 'h',\n    ƕ: 'hv',\n    í: 'i',\n    ĭ: 'i',\n    ǐ: 'i',\n    î: 'i',\n    ï: 'i',\n    ḯ: 'i',\n    ị: 'i',\n    ȉ: 'i',\n    ì: 'i',\n    ỉ: 'i',\n    ȋ: 'i',\n    ī: 'i',\n    į: 'i',\n    ᶖ: 'i',\n    ɨ: 'i',\n    ĩ: 'i',\n    ḭ: 'i',\n    ꝺ: 'd',\n    ꝼ: 'f',\n    ᵹ: 'g',\n    ꞃ: 'r',\n    ꞅ: 's',\n    ꞇ: 't',\n    ꝭ: 'is',\n    ǰ: 'j',\n    ĵ: 'j',\n    ʝ: 'j',\n    ɉ: 'j',\n    ḱ: 'k',\n    ǩ: 'k',\n    ķ: 'k',\n    ⱪ: 'k',\n    ꝃ: 'k',\n    ḳ: 'k',\n    ƙ: 'k',\n    ḵ: 'k',\n    ᶄ: 'k',\n    ꝁ: 'k',\n    ꝅ: 'k',\n    ĺ: 'l',\n    ƚ: 'l',\n    ɬ: 'l',\n    ľ: 'l',\n    ļ: 'l',\n    ḽ: 'l',\n    ȴ: 'l',\n    ḷ: 'l',\n    ḹ: 'l',\n    ⱡ: 'l',\n    ꝉ: 'l',\n    ḻ: 'l',\n    ŀ: 'l',\n    ɫ: 'l',\n    ᶅ: 'l',\n    ɭ: 'l',\n    ł: 'l',\n    ǉ: 'lj',\n    ſ: 's',\n    ẜ: 's',\n    ẛ: 's',\n    ẝ: 's',\n    ḿ: 'm',\n    ṁ: 'm',\n    ṃ: 'm',\n    ɱ: 'm',\n    ᵯ: 'm',\n    ᶆ: 'm',\n    ń: 'n',\n    ň: 'n',\n    ņ: 'n',\n    ṋ: 'n',\n    ȵ: 'n',\n    ṅ: 'n',\n    ṇ: 'n',\n    ǹ: 'n',\n    ɲ: 'n',\n    ṉ: 'n',\n    ƞ: 'n',\n    ᵰ: 'n',\n    ᶇ: 'n',\n    ɳ: 'n',\n    ñ: 'n',\n    ǌ: 'nj',\n    ó: 'o',\n    ŏ: 'o',\n    ǒ: 'o',\n    ô: 'o',\n    ố: 'o',\n    ộ: 'o',\n    ồ: 'o',\n    ổ: 'o',\n    ỗ: 'o',\n    ö: 'o',\n    ȫ: 'o',\n    ȯ: 'o',\n    ȱ: 'o',\n    ọ: 'o',\n    ő: 'o',\n    ȍ: 'o',\n    ò: 'o',\n    ỏ: 'o',\n    ơ: 'o',\n    ớ: 'o',\n    ợ: 'o',\n    ờ: 'o',\n    ở: 'o',\n    ỡ: 'o',\n    ȏ: 'o',\n    ꝋ: 'o',\n    ꝍ: 'o',\n    ⱺ: 'o',\n    ō: 'o',\n    ṓ: 'o',\n    ṑ: 'o',\n    ǫ: 'o',\n    ǭ: 'o',\n    ø: 'o',\n    ǿ: 'o',\n    õ: 'o',\n    ṍ: 'o',\n    ṏ: 'o',\n    ȭ: 'o',\n    ƣ: 'oi',\n    ꝏ: 'oo',\n    ɛ: 'e',\n    ᶓ: 'e',\n    ɔ: 'o',\n    ᶗ: 'o',\n    ȣ: 'ou',\n    ṕ: 'p',\n    ṗ: 'p',\n    ꝓ: 'p',\n    ƥ: 'p',\n    ᵱ: 'p',\n    ᶈ: 'p',\n    ꝕ: 'p',\n    ᵽ: 'p',\n    ꝑ: 'p',\n    ꝙ: 'q',\n    ʠ: 'q',\n    ɋ: 'q',\n    ꝗ: 'q',\n    ŕ: 'r',\n    ř: 'r',\n    ŗ: 'r',\n    ṙ: 'r',\n    ṛ: 'r',\n    ṝ: 'r',\n    ȑ: 'r',\n    ɾ: 'r',\n    ᵳ: 'r',\n    ȓ: 'r',\n    ṟ: 'r',\n    ɼ: 'r',\n    ᵲ: 'r',\n    ᶉ: 'r',\n    ɍ: 'r',\n    ɽ: 'r',\n    ↄ: 'c',\n    ꜿ: 'c',\n    ɘ: 'e',\n    ɿ: 'r',\n    ś: 's',\n    ṥ: 's',\n    š: 's',\n    ṧ: 's',\n    ş: 's',\n    ŝ: 's',\n    ș: 's',\n    ṡ: 's',\n    ṣ: 's',\n    ṩ: 's',\n    ʂ: 's',\n    ᵴ: 's',\n    ᶊ: 's',\n    ȿ: 's',\n    ɡ: 'g',\n    ß: 'ss',\n    ᴑ: 'o',\n    ᴓ: 'o',\n    ᴝ: 'u',\n    ť: 't',\n    ţ: 't',\n    ṱ: 't',\n    ț: 't',\n    ȶ: 't',\n    ẗ: 't',\n    ⱦ: 't',\n    ṫ: 't',\n    ṭ: 't',\n    ƭ: 't',\n    ṯ: 't',\n    ᵵ: 't',\n    ƫ: 't',\n    ʈ: 't',\n    ŧ: 't',\n    ᵺ: 'th',\n    ɐ: 'a',\n    ᴂ: 'ae',\n    ǝ: 'e',\n    ᵷ: 'g',\n    ɥ: 'h',\n    ʮ: 'h',\n    ʯ: 'h',\n    ᴉ: 'i',\n    ʞ: 'k',\n    ꞁ: 'l',\n    ɯ: 'm',\n    ɰ: 'm',\n    ᴔ: 'oe',\n    ɹ: 'r',\n    ɻ: 'r',\n    ɺ: 'r',\n    ⱹ: 'r',\n    ʇ: 't',\n    ʌ: 'v',\n    ʍ: 'w',\n    ʎ: 'y',\n    ꜩ: 'tz',\n    ú: 'u',\n    ŭ: 'u',\n    ǔ: 'u',\n    û: 'u',\n    ṷ: 'u',\n    ü: 'u',\n    ǘ: 'u',\n    ǚ: 'u',\n    ǜ: 'u',\n    ǖ: 'u',\n    ṳ: 'u',\n    ụ: 'u',\n    ű: 'u',\n    ȕ: 'u',\n    ù: 'u',\n    ủ: 'u',\n    ư: 'u',\n    ứ: 'u',\n    ự: 'u',\n    ừ: 'u',\n    ử: 'u',\n    ữ: 'u',\n    ȗ: 'u',\n    ū: 'u',\n    ṻ: 'u',\n    ų: 'u',\n    ᶙ: 'u',\n    ů: 'u',\n    ũ: 'u',\n    ṹ: 'u',\n    ṵ: 'u',\n    ᵫ: 'ue',\n    ꝸ: 'um',\n    ⱴ: 'v',\n    ꝟ: 'v',\n    ṿ: 'v',\n    ʋ: 'v',\n    ᶌ: 'v',\n    ⱱ: 'v',\n    ṽ: 'v',\n    ꝡ: 'vy',\n    ẃ: 'w',\n    ŵ: 'w',\n    ẅ: 'w',\n    ẇ: 'w',\n    ẉ: 'w',\n    ẁ: 'w',\n    ⱳ: 'w',\n    ẘ: 'w',\n    ẍ: 'x',\n    ẋ: 'x',\n    ᶍ: 'x',\n    ý: 'y',\n    ŷ: 'y',\n    ÿ: 'y',\n    ẏ: 'y',\n    ỵ: 'y',\n    ỳ: 'y',\n    ƴ: 'y',\n    ỷ: 'y',\n    ỿ: 'y',\n    ȳ: 'y',\n    ẙ: 'y',\n    ɏ: 'y',\n    ỹ: 'y',\n    ź: 'z',\n    ž: 'z',\n    ẑ: 'z',\n    ʑ: 'z',\n    ⱬ: 'z',\n    ż: 'z',\n    ẓ: 'z',\n    ȥ: 'z',\n    ẕ: 'z',\n    ᵶ: 'z',\n    ᶎ: 'z',\n    ʐ: 'z',\n    ƶ: 'z',\n    ɀ: 'z',\n    ﬀ: 'ff',\n    ﬃ: 'ffi',\n    ﬄ: 'ffl',\n    ﬁ: 'fi',\n    ﬂ: 'fl',\n    ĳ: 'ij',\n    œ: 'oe',\n    ﬆ: 'st',\n    ₐ: 'a',\n    ₑ: 'e',\n    ᵢ: 'i',\n    ⱼ: 'j',\n    ₒ: 'o',\n    ᵣ: 'r',\n    ᵤ: 'u',\n    ᵥ: 'v',\n    ₓ: 'x',\n};\n","import {\n    ChangeDetectionStrategy, ChangeDetectorRef,\n    Component, OnInit, Pipe, PipeTransform, ViewChild\n} from '@angular/core';\nimport {MatSelect} from '@angular/material/select';\nimport {MatOption, MatOptionSelectionChange, MatOptgroup} from '@angular/material/core';\nimport {EsFormTranslates} from '../../model/es-form.translates';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {latinMap} from '../../util/latin-map';\nimport {EsFormFieldOption} from '../../model/es-field-option.interface';\nimport {BreakpointObserver, Breakpoints, BreakpointState} from '@angular/cdk/layout';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NgClass} from '@angular/common';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {MatFormField, MatLabel, MatError} from '@angular/material/form-field';\nimport {NgxMatSelectSearchModule} from 'ngx-mat-select-search';\nimport {MatButton} from '@angular/material/button';\nimport {MatSlideToggle} from '@angular/material/slide-toggle';\nimport {FormHelpComponent} from '../form-help/form-help.component';\nimport {FormButtonDeleteComponent} from '../form-button-delete/form-button-delete.component';\nimport {TranslatePipe} from '@ngx-translate/core';\n\n@Pipe({\n    name: 'dataPipe',\n    standalone: true\n})\nexport class DataTablePipe implements PipeTransform {\n    toLat(string: string) {\n        string = string.replace(/[^A-Za-z0-9]/g, (key: string) => {\n            return latinMap[key] || key;\n        });\n        return string.toLowerCase();\n    }\n\n    transform(options: EsFormFieldOption[], query: string, selected: MatOption | MatOption[]): any {\n        if (query) {\n            query = this.toLat(query);\n            const filtered = options.filter((value: EsFormFieldOption) => this.toLat(value.name.toString()).indexOf(query) > -1);\n            for (const opt of options) {\n                if (Array.isArray(selected)) {\n                    for (const matOpt of selected) {\n                        if (opt.value === matOpt.value && filtered.indexOf(opt) === -1) {\n                            filtered.push(opt);\n                        }\n                    }\n                } else if (selected) {\n                    if (opt.value === selected.value && filtered.indexOf(opt) === -1) {\n                        filtered.push(opt);\n                    }\n                }\n            }\n            return filtered;\n        }\n        return options;\n    }\n}\n\n@Component({\n    selector: 'es-form-select',\n    styleUrls: ['form-select.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div [ngClass]=\"config.display ? 'display-true' : 'display-false'\"\n             class=\"dynamic-field form-select form-container\"\n             [formGroup]=\"group\">\n            <mat-form-field>\n                <mat-label>{{config.label}}</mat-label>\n                <mat-select #matSelect\n                            [required]=\"config.required\"\n                            [multiple]=\"config.multiple\"\n                            [formControlName]=\"config.name\"\n                            [panelClass]=\"classes\"\n                            [class.is-default-simple]=\"isDefaultSimple\"\n                            disableOptionCentering\n                >\n                    <mat-option [style.display]=\"optionsLength > 5 ? 'flex' : 'none'\" >\n                        <ngx-mat-select-search [style.display]=\"optionsLength > 5 ? 'inline' : 'none'\"\n                                               #_search\n                                               [disableInitialFocus]=\"isMobile\"\n                                               placeholderLabel=\"{{translates.SEARCH | translate}}...\"\n                                               [noEntriesFoundLabel]=\"translates.NO_OPTIONS_FOUND | translate\">\n                        </ngx-mat-select-search>\n                    </mat-option>\n\n                    @if (config.optGroups) {\n                        @if ((!config.required && !config.multiple) || config.multiple) {\n                            <div disabled=\"disabled\" class=\"control-panel\">\n                                @if (isDefaultSimple === true) {\n                                    <button mat-raised-button\n                                            (click)=\"toggleMultiSelect()\">\n                                        <mat-slide-toggle [checked]=\"false\">\n                                            {{translates.MULTIPLE_SELECT | translate}}\n                                        </mat-slide-toggle>\n                                    </button>\n                                }\n                                @if (isDefaultSimple === false) {\n                                    <button mat-raised-button\n                                            (click)=\"toggleMultiSelect()\">\n                                        <mat-slide-toggle [checked]=\"true\">\n                                            {{translates.MULTIPLE_SELECT | translate}}\n                                        </mat-slide-toggle>\n                                    </button>\n                                }\n                            </div>\n                        }\n                        @if (config.multiple && !isDefaultSimple) {\n                            <div class=\"form-select-control-option mat-option mat-option-multiple ng-star-inserted\"\n                                 [ngClass]=\"{'mat-option-disabled': isDefaultSimple === true}\"\n                                 (click)=\"selectAll(matSelect)\">\n                            {{translates.SELECT_ALL | translate}}\n                            </div>\n                        }\n                        @if ((!config.required && !config.multiple) || config.multiple) {\n                            <div class=\"form-select-control-option mat-option mat-option-multiple ng-star-inserted\"\n                                 (click)=\"deselectAll(matSelect); closeIfSingle();\">\n                                {{translates.CANCEL_SELECTION | translate}}\n                            </div>\n                        }\n                        @for (group of config.optGroups; track group.label) {\n                            <mat-optgroup (click)=\"onOptGroupClicked(group)\"\n                                          [label]=\"group.label\"\n                                          [disabled]=\"group.disabled\">\n                                @for (option of group.options | dataPipe : _search.value : matSelect.selected; track option.value) {\n                                    <mat-option [value]=\"option.value\"\n                                                (click)=\"$event.preventDefault(); $event.stopPropagation();\"\n                                                (onSelectionChange)=\"onSelected(option.value, $event)\"\n                                                [disabled]=\"option.disabled\"\n                                                [class.is-default-simple]=\"isDefaultSimple\"\n                                    >\n                                        <span [innerHtml]=\"option.name\"></span>\n                                    </mat-option>\n                                }\n                            </mat-optgroup>\n                        }\n\n                    }\n                    @if (!config.optGroups) {\n\n                        @if ((!config.required && !config.multiple) || config.multiple) {\n                            <div disabled=\"disabled\" class=\"control-panel\">\n                                @if (isDefaultSimple === true) {\n                                    <button mat-raised-button\n                                            (click)=\"toggleMultiSelect()\">\n                                        <mat-slide-toggle [checked]=\"false\">\n                                            {{translates.MULTIPLE_SELECT | translate}}\n                                        </mat-slide-toggle>\n                                    </button>\n                                }\n                                @if (isDefaultSimple === false) {\n                                    <button mat-raised-button\n                                            (click)=\"toggleMultiSelect()\">\n                                        <mat-slide-toggle [checked]=\"true\">\n                                            {{translates.MULTIPLE_SELECT | translate}}\n                                        </mat-slide-toggle>\n                                    </button>\n                                }\n                            </div>\n                        }\n                        @if (config.multiple && !isDefaultSimple) {\n                            <div class=\"form-select-control-option mat-option mat-option-multiple ng-star-inserted\"\n                                 [ngClass]=\"{'mat-option-disabled': isDefaultSimple === true}\"\n                                 (click)=\"selectAll(matSelect)\">\n                            {{translates.SELECT_ALL | translate}}\n                        </div>\n                        }\n                        @if ((!config.required && !config.multiple) || config.multiple) {\n                            <div class=\"form-select-control-option mat-option mat-option-multiple ng-star-inserted\"\n                                 (click)=\"deselectAll(matSelect); closeIfSingle();\">\n                            {{translates.CANCEL_SELECTION | translate}}\n                            </div>\n                        }\n                        @for (option of config.options | dataPipe : _search.value : matSelect.selected; track option.value) {\n                            <mat-option (click)=\"$event.preventDefault(); $event.stopPropagation();\"\n                                        (onSelectionChange)=\"onSelected(option.value, $event)\"\n                                        [value]=\"option.value\"\n                                        [disabled]=\"option.disabled\"\n                                        [class.is-default-simple]=\"isDefaultSimple\"\n                            >\n                                <span [innerHtml]=\"option.name\"></span>\n                            </mat-option>\n                        }\n                    }\n                </mat-select>\n                <mat-error>\n                    @for (msg of activeErrorMessages; track msg) {\n                        <span class=\"error-line\">{{ msg }}</span>\n                    }\n                </mat-error>\n            </mat-form-field>\n            @if (config.help) {\n                <es-form-help [help]=\"config.help\" [label]=\"config.label\" [fc]=\"esForm\"></es-form-help>\n            }\n            @if (config.dButton?.display) {\n                <form-button-delete [config]=\"config\"\n                                    [configList]=\"configList\"\n                                    [group]=\"group\"\n                                    [_fc]=\"esForm\">\n                </form-button-delete>\n            }\n        </div>\n    `,\n    standalone: true,\n    imports: [\n        NgClass,\n        ReactiveFormsModule,\n        MatFormField,\n        MatLabel,\n        MatSelect,\n        MatOption,\n        NgxMatSelectSearchModule,\n        MatButton,\n        MatSlideToggle,\n        MatOptgroup,\n        MatError,\n        FormHelpComponent,\n        FormButtonDeleteComponent,\n        TranslatePipe,\n        DataTablePipe,\n    ],\n})\nexport class FormSelectComponent extends EsFieldBase implements OnInit {\n    classes: {[index: string]: boolean } = {};\n    translates = EsFormTranslates;\n    isMobile = false;\n    isDefaultSimple: boolean;\n\n    @ViewChild('matSelect', {static: false}) matSelect: MatSelect;\n\n    constructor(\n        private sanitizer: DomSanitizer,\n        cd: ChangeDetectorRef,\n        private breakpointObserver: BreakpointObserver\n    ) {\n        super(cd);\n        this.breakpointObserver\n            .observe([Breakpoints.XSmall, Breakpoints.Small])\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((state: BreakpointState) => {\n                this.isMobile = state.matches;\n                this.cd.markForCheck();\n            });\n    }\n\n    ngOnInit() {\n        if (this.config.multiple && this.config.optGroups) {\n            if (this.config.attr['html'] !== undefined) {\n                for (const group of this.config.optGroups) {\n                    for (const option of group.options) {\n                        option.name = this.sanitizer.bypassSecurityTrustHtml(option.name.toString());\n                    }\n                }\n            }\n            this.classes = {\n                pointer: true,\n            };\n        } else {\n            if (this.config.attr['html'] !== undefined) {\n                for (const option of this.config.options) {\n                    option.name = this.sanitizer.bypassSecurityTrustHtml(option.name.toString());\n                }\n            }\n        }\n        if (this.config.actions.length > 0) {\n            this.onSelected(this.config.value);\n        }\n        if (this.config.attr['default-simple']) {\n            this.isDefaultSimple = !(typeof this.config.value === 'object' && this.config.value.length > 1);\n        }\n        this.classes['mat-select-offset-top'] = true;\n    }\n\n    onOptGroupClicked(group: { label: string; disabled: boolean; options: EsFormFieldOption[] }) {\n        if (!this.config.multiple) {\n            return;\n        } else {\n            let selectedOpts = [];\n            if (this.group.get(this.config.name).value) {\n                selectedOpts = this.group.get(this.config.name).value;\n            }\n            let allSelected = true;\n            group.options.forEach(opt => {\n                let isThere = false;\n                selectedOpts.forEach(sOpt => {\n                    if (opt.value === sOpt) { isThere = true; }\n                });\n                if (!isThere) { allSelected = false; }\n            });\n\n\n            if (allSelected) {\n                group.options.forEach(opt => {\n                    selectedOpts.splice(selectedOpts.indexOf(opt.value), 1);\n                });\n            } else {\n                group.options.forEach(opt => {\n                    let isThere = false;\n                    selectedOpts.forEach(sOpt => {\n                        if (opt.value === sOpt) { isThere = true; }\n                    });\n                    if (!isThere) {\n                        selectedOpts.push(opt.value);\n                    }\n                });\n            }\n\n            this.group.get(this.config.name).setValue(selectedOpts);\n        }\n    }\n\n    onSelected(selValue, $event?) {\n        let isUserInput = false;\n        if ($event instanceof MatOptionSelectionChange) {\n            isUserInput = $event.isUserInput;\n        }\n        if (isUserInput) {\n            this.dynamicField.applyActionOnValueChange(selValue);\n        }\n    }\n\n    simpleSelected(value: any) {\n        this.group.controls[this.config.name].setValue([value]);\n        this.matSelect.writeValue([value]);\n        this.matSelect.close();\n    }\n\n    selectAll(select: MatSelect) {\n        const values = [];\n        if (this.config.optGroups) {\n            this.config.optGroups.forEach(group => {\n                group.options.forEach(opt => {\n                    values.push(opt.value);\n                });\n            });\n        } else {\n            this.config.options.forEach(opt => {\n                values.push(opt.value);\n            });\n        }\n        this.group.controls[this.config.name].setValue(values);\n        select.writeValue(values);\n    }\n\n    deselectAll(select: MatSelect) {\n        select.writeValue([]);\n        this.group.controls[this.config.name].setValue('');\n        const selValue = this.config.multiple ? [] : '';\n        this.onSelected(selValue);\n    }\n\n    toggleMultiSelect() {\n        this.isDefaultSimple = !this.isDefaultSimple;\n\n        // deselect pri z multi na simple\n        if (this.isDefaultSimple === true) {\n            this.matSelect.writeValue([]);\n            this.group.controls[this.config.name].setValue('');\n        }\n    }\n\n    closeIfSingle() {\n        if (!this.config.multiple || this.isDefaultSimple) {\n            this.matSelect.close();\n        }\n    }\n\n    get optionsLength(): number {\n        if (this.config?.optGroups?.length > 0) {\n            return this.config.optGroups.reduce((sum, group) => sum + (group.options?.length ?? 0), 0);\n        }\n        return this.config?.options?.length ?? 0;\n    }\n}\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component, DoCheck,\n    OnInit,\n    ViewChild\n} from '@angular/core';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\nimport {MatInput} from '@angular/material/input';\nimport {Observable} from 'rxjs';\nimport {map, startWith} from 'rxjs/operators';\nimport {EsFormFieldOption} from '../../model/es-field-option.interface';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {NgClass, AsyncPipe} from '@angular/common';\nimport {MatFormField, MatError} from '@angular/material/form-field';\nimport {MatAutocompleteTrigger, MatAutocomplete} from '@angular/material/autocomplete';\nimport {MatOption} from '@angular/material/core';\nimport {FormHelpComponent} from '../form-help/form-help.component';\nimport {FormButtonDeleteComponent} from '../form-button-delete/form-button-delete.component';\n\n@Component({\n    selector: 'es-form-autocomplete',\n    styleUrls: ['form-autocomplete.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div [ngClass]=\"config.display ? 'display-true' : 'display-false'\"\n             class=\"dynamic-field form-autocomplete form-container\"\n             [formGroup]=\"group\">\n            <mat-form-field>\n                <input matInput\n                       [id]=\"config.name\"\n                       [matAutocomplete]=\"auto\"\n                       [required]=\"config.required\"\n                       [formControlName]=\"config.name\"\n                       [placeholder]=\"config.label\"\n                       (keydown.enter)=\"onEnter($event)\">\n                <mat-autocomplete #auto=\"matAutocomplete\">\n                    @for (option of filteredOptions | async; track option.value) {\n                        <mat-option [value]=\"option.value\">\n                            {{ option.name }}\n                        </mat-option>\n                    }\n                </mat-autocomplete>\n                <mat-error>\n                    @for (msg of activeErrorMessages; track msg) {\n                        <span class=\"error-line\">{{ msg }}</span>\n                    }\n                </mat-error>\n            </mat-form-field>\n            @if (config.help) {\n                <es-form-help [help]=\"config.help\" [label]=\"config.label\" [fc]=\"esForm\"></es-form-help>\n            }\n            @if (config.dButton?.display) {\n                <form-button-delete [config]=\"config\"\n                                    [configList]=\"configList\"\n                                    [group]=\"group\"\n                                    [_fc]=\"esForm\">\n                </form-button-delete>\n            }\n        </div>\n    `,\n    standalone: true,\n    imports: [\n        NgClass,\n        ReactiveFormsModule,\n        MatFormField,\n        MatInput,\n        MatAutocompleteTrigger,\n        MatAutocomplete,\n        MatOption,\n        MatError,\n        FormHelpComponent,\n        FormButtonDeleteComponent,\n        AsyncPipe,\n    ]\n})\nexport class FormAutocompleteComponent extends EsFieldBase implements AfterViewInit, OnInit, DoCheck {\n    filteredOptions: Observable<EsFormFieldOption[]>;\n    private lastOptionsLength = 0;\n\n    @ViewChild(MatInput, { read: MatInput, static: false}) matInput: MatInput;\n    constructor(cd: ChangeDetectorRef) {\n        super(cd);\n    }\n\n    ngOnInit(): void {\n        const control = this.group.get(this.config.name) as FormControl;\n\n        this.filteredOptions = control.valueChanges.pipe(\n            startWith(''),\n            map(value => this._filter(value || ''))\n        );\n    }\n\n    ngDoCheck(): void {\n        const currentLength = this.config?.options?.length || 0;\n        if (currentLength !== this.lastOptionsLength) {\n            this.lastOptionsLength = currentLength;\n            this.rebindFilteredOptions();\n        }\n    }\n\n    private rebindFilteredOptions(): void {\n        const control = this.group.get(this.config.name) as FormControl;\n        if (!control) { return; }\n\n        this.filteredOptions = control.valueChanges.pipe(\n            startWith(control.value || ''),\n            map(value => this._filter(value || ''))\n        );\n\n        this.cd.markForCheck();\n    }\n\n    private _filter(value: string | EsFormFieldOption): EsFormFieldOption[] {\n        if (!this.config?.options || !Array.isArray(this.config.options)) {\n            return [];\n        }\n        let filterValue = '';\n        if (typeof value === 'object' && typeof value.name === 'string') {\n            filterValue = value.name;\n        } else if (typeof value === 'string') {\n            filterValue = value;\n        }\n        return this.config.options.filter(option => {\n            let optionName = '';\n            if (typeof option.name === 'string') {\n                optionName = option.name;\n            }\n            return optionName.toLowerCase().includes(filterValue.toLowerCase());\n        });\n    }\n\n    onEnter(event: Event) {\n        const input = (event.target as HTMLInputElement).value;\n        if (!input) { return; }\n\n        // Nastav hodnotu do FormControl\n        const control = this.group.get(this.config.name);\n        if (control) {\n            control.setValue(input);\n            this.config.value = input;\n            control.markAsDirty();\n        }\n\n        // Zavři autocomplete (pokud chceš)\n        event.preventDefault();\n        event.stopPropagation();\n    }\n\n    ngAfterViewInit(): void {\n        if (this.config.focused) {\n            setTimeout(() => {\n                this.matInput.focus();\n                this.config.focused = false;\n            }, 0);\n        }\n    }\n}\n","/*\n<mat-hint *ngIf=\"group.get(config.name).hasError('required') && group.get(config.name).touched\">Nesmí být prázdný</mat-hint>\n<mat-hint *ngIf=\"group.get(config.name).hasError('minlength') && group.get(config.name).touched\">Min délka</mat-hint>\n */\n\nimport {ChangeDetectionStrategy, ChangeDetectorRef, Component} from '@angular/core';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {ReactiveFormsModule} from '@angular/forms';\n\n@Component({\n    selector: 'es-form-hidden',\n    styleUrls: ['form-hidden.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div class=\"dynamic-field form-hidden\"\n                [formGroup]=\"group\">\n            <input [type]=\"'hidden'\"\n                   [formControlName]=\"config.name\"\n                   [id]=\"config.id ? config.id: null\">\n        </div>\n    `,\n    standalone: true,\n    imports: [ReactiveFormsModule]\n})\nexport class FormHiddenComponent extends EsFieldBase {\n\n    constructor(cd: ChangeDetectorRef) {\n        super(cd);\n    }\n}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component} from '@angular/core';\nimport {MatCheckboxChange, MatCheckbox} from '@angular/material/checkbox';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {NgClass} from '@angular/common';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {FormHelpComponent} from '../form-help/form-help.component';\nimport {FormButtonDeleteComponent} from '../form-button-delete/form-button-delete.component';\n\n@Component({\n    selector: 'es-form-checkbox',\n    styleUrls: ['form-checkbox.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div [ngClass]=\"config.display ? 'display-true' : 'display-false'\"\n             class=\"dynamic-field form-checkbox form-container\"\n             [formGroup]=\"group\">\n            <mat-checkbox\n                [formControlName]=\"config.name\" (change)=\"handleChange($event)\">\n                {{ config.label }}\n            </mat-checkbox>\n            @if (config.help) {\n                <es-form-help [help]=\"config.help\" [label]=\"config.label\" [fc]=\"esForm\"></es-form-help>\n            }\n            @if (config.dButton?.display) {\n                <form-button-delete [config]=\"config\"\n                                    [configList]=\"configList\"\n                                    [group]=\"group\"\n                                    [_fc]=\"esForm\">\n                </form-button-delete>\n}\n        </div>\n    `,\n    standalone: true,\n    imports: [NgClass, ReactiveFormsModule, MatCheckbox, FormHelpComponent, FormButtonDeleteComponent]\n})\nexport class FormCheckboxComponent extends EsFieldBase {\n\n    constructor(cd: ChangeDetectorRef) {\n        super(cd);\n    }\n\n    handleChange(e: MatCheckboxChange) {\n        this.dynamicField.applyActionOnValueChange(e.checked);\n    }\n}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit} from '@angular/core';\nimport {FormGroup, ReactiveFormsModule} from '@angular/forms';\nimport { EsFormField } from '../../model/es-form-field.interface';\nimport { EsFormFieldConfig } from '../../model/es-config.interface';\nimport {EsFormActionType} from '../../model/es-form-action.interface';\nimport {IEsFormComponent} from '../../container/es-form.interface';\nimport {IDynamicField} from '../dynamic-field/dynamic-field.interface';\nimport {MatSlideToggleChange, MatSlideToggle} from '@angular/material/slide-toggle';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {NgClass} from '@angular/common';\nimport {FormHelpComponent} from '../form-help/form-help.component';\nimport {FormButtonDeleteComponent} from '../form-button-delete/form-button-delete.component';\n\n@Component({\n    selector: 'es-form-slide-toggle',\n    styleUrls: ['form-slide-toggle.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div [ngClass]=\"config.display ? 'display-true' : 'display-false'\"\n             class=\"dynamic-field form-container\"\n             [formGroup]=\"group\">\n            <mat-slide-toggle\n                    [style.padding-top]=\"10\"\n                    [formControlName]=\"config.name\"\n                    [checked]=\"config.value\"\n                    (change)=\"onSlideToggle($event)\">\n                {{ config.label }}\n            </mat-slide-toggle>\n            @if (config.help) {\n                <es-form-help [help]=\"config.help\" [label]=\"config.label\" [fc]=\"esForm\"></es-form-help>\n            }\n            @if (config.dButton?.display) {\n                <form-button-delete [config]=\"config\"\n                                    [configList]=\"configList\"\n                                    [group]=\"group\"\n                                    [_fc]=\"esForm\">\n                </form-button-delete>\n            }\n        </div>\n    `,\n    standalone: true,\n    imports: [NgClass, ReactiveFormsModule, MatSlideToggle, FormHelpComponent, FormButtonDeleteComponent]\n})\nexport class FormSlideToggleComponent extends EsFieldBase implements OnInit, OnDestroy {\n\n    constructor(cd: ChangeDetectorRef) {\n        super(cd);\n    }\n\n    ngOnInit() {\n        if (typeof this.config.value === 'string') {\n            this.config.value = this.config.value === '1';\n            this.group.controls[this.config.name].setValue(this.config.value);\n        } else if (typeof this.config.value === 'number') {\n            this.config.value = this.config.value === 1;\n            this.group.controls[this.config.name].setValue(this.config.value);\n        }\n\n        if (this.config.display) {\n            this.doAction();\n        }\n\n    }\n\n    onSlideToggle(event: MatSlideToggleChange) {\n        this.config.value = event.checked;\n        this.doAction();\n    }\n\n    doAction() {\n        this.dynamicField.applyActionOnValueChange(this.config.value);\n    }\n\n    ngOnDestroy(): void {\n        this.doAction();\n    }\n}\n","import {AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit, ViewChild} from '@angular/core';\nimport {MatInput} from '@angular/material/input';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {NgClass} from '@angular/common';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {MatFormField, MatLabel, MatError} from '@angular/material/form-field';\nimport {CdkTextareaAutosize} from '@angular/cdk/text-field';\nimport {FormHelpComponent} from '../form-help/form-help.component';\nimport {FormButtonDeleteComponent} from '../form-button-delete/form-button-delete.component';\n\n@Component({\n    selector: 'es-form-textarea',\n    styleUrls: ['form-textarea.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div [ngClass]=\"config.display ? 'display-true' : 'display-false'\"\n             class=\"dynamic-field form-input form-container\"\n             [formGroup]=\"group\">\n            <mat-form-field class=\"mat-form-field\" appearance=\"fill\">\n                <mat-label>{{config.label}}</mat-label>\n                <textarea matInput\n                          cdkTextareaAutosize\n                          cdkAutosizeMinRows=\"1\"\n                          [type]=\"config.type\"\n                          [required]=\"config.required\"\n                          [formControlName]=\"config.name\">\n                </textarea>\n                <mat-error>\n                    @for (msg of activeErrorMessages; track msg) {\n                        <span class=\"error-line\">{{ msg }}</span>\n                    }\n                </mat-error>\n            </mat-form-field>\n            @if (config.help) {\n                <es-form-help [help]=\"config.help\" [label]=\"config.label\" [fc]=\"esForm\"></es-form-help>\n            }\n            @if (config.dButton?.display) {\n                <form-button-delete [config]=\"config\"\n                                    [configList]=\"configList\"\n                                    [group]=\"group\"\n                                    [_fc]=\"esForm\">\n                </form-button-delete>\n            }\n        </div>\n    `,\n    standalone: true,\n    imports: [\n        NgClass,\n        ReactiveFormsModule,\n        MatFormField,\n        MatLabel,\n        MatInput,\n        CdkTextareaAutosize,\n        MatError,\n        FormHelpComponent,\n        FormButtonDeleteComponent,\n    ]\n})\nexport class FormTextareaComponent extends EsFieldBase implements OnInit, AfterViewInit {\n    @ViewChild(MatInput, { read: MatInput, static: false }) matInput: MatInput;\n\n    rows = 1;\n\n    constructor(cd: ChangeDetectorRef) {\n        super(cd);\n    }\n\n    ngOnInit(): void {\n        if (this.config.attr['rows']) {\n            this.rows = parseInt(this.config.attr['rows'], 10);\n        }\n    }\n\n    ngAfterViewInit(): void {\n        if (this.config.focused) {\n            setTimeout(() => {\n                this.matInput.focus();\n                this.config.focused = false;\n            }, 0);\n        }\n    }\n}\n","import { Component, OnInit, Output, EventEmitter, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\nimport {Color, ColorPickerControl, ColorsTable, ChromePickerComponent} from '@iplab/ngx-color-picker';\nimport {TranslateService} from '@ngx-translate/core';\nimport {BreakpointObserver, Breakpoints, BreakpointState} from '@angular/cdk/layout';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NgClass} from '@angular/common';\nimport {MatFormField, MatLabel, MatSuffix, MatError} from '@angular/material/form-field';\nimport {MatInput} from '@angular/material/input';\nimport {MatIconButton} from '@angular/material/button';\nimport {MatIcon} from '@angular/material/icon';\nimport {FormHelpComponent} from '../form-help/form-help.component';\n\n@Component({\n    selector: 'es-form-colorpicker',\n    styleUrls: ['./form-colorpicker.component.scss'],\n    template: `\n        <!-- Ctverec s aktualni barvou -->\n        <div [ngClass]=\"config.display ? 'display-true' : 'display-false'\"\n             class=\"dynamic-field form-colorpicker form-container\"\n             [formGroup]=\"group\">\n            <div class=\"color-square\"\n                 [style.background]=\"currentColor\"\n                 (click)=\"togglePicker()\"></div>\n\n            <!-- MatFormField input -->\n            <mat-form-field>\n                <mat-label>{{ config.label }}</mat-label>\n                <input matInput #cpInput\n                       [formControl]=\"colorControlForm\"\n                       [required]=\"config.required\"/>\n                @if (currentColor) {\n                    <button mat-icon-button\n                            matSuffix\n                            aria-label=\"Clear\"\n                            (click)=\"clearColor($event)\"\n                    >\n                        <mat-icon>close</mat-icon>\n                    </button>\n                }\n            </mat-form-field>\n            @if (config.help) {\n                <es-form-help [help]=\"config.help\" [label]=\"config.label\" [fc]=\"esForm\"></es-form-help>\n            }\n            <mat-error>\n                @for (msg of activeErrorMessages; track msg) {\n                    <span class=\"error-line\">{{ msg }}</span>\n                }\n            </mat-error>\n\n\n            <!-- Picker -->\n            @if (isPickerVisible) {\n                <div class=\"picker\">\n                    <chrome-picker [control]=\"colorControl\"></chrome-picker>\n                    <div class=\"buttons\">\n                        <button mat-icon-button\n                                type=\"button\"\n                                class=\"discard\"\n                                aria-label=\"Cancel\"\n                                (click)=\"discardClick($event)\">\n                            <mat-icon>close</mat-icon>\n                        </button>\n                        <button mat-icon-button\n                                type=\"button\"\n                                class=\"apply\"\n                                aria-label=\"Apply\"\n                                (click)=\"applyClick($event)\">\n                            <mat-icon>check</mat-icon>\n                        </button>\n                    </div>\n                </div>\n            }\n\n            @if (isPickerVisible) {\n                <div class=\"overlay\" (click)=\"discardClick($event)\"></div>\n            }\n        </div>\n    `,\n    standalone: true,\n    imports: [\n        NgClass,\n        ReactiveFormsModule,\n        MatFormField,\n        MatLabel,\n        MatInput,\n        MatIconButton,\n        MatSuffix,\n        MatIcon,\n        FormHelpComponent,\n        MatError,\n        ChromePickerComponent,\n    ],\n})\nexport class FormColorpickerComponent extends EsFieldBase implements OnInit, OnDestroy {\n    @Output() colorChange = new EventEmitter<string>();\n    public colorControl = new ColorPickerControl();\n\n    public colorControlForm = new FormControl<string>('');\n    public isPickerVisible = false;\n    public currentColor = '#000000';\n    private initialColor = '#000000';\n    /** posledni hodnota z configu, ze ktere jsme barvu nacetli (aby sync neprepsal rozepsany input) */\n    private lastConfigValue: string = null;\n    isMobile = false;\n\n    constructor(\n        private translate: TranslateService,\n        cd: ChangeDetectorRef,\n        private breakpointObserver: BreakpointObserver,\n    ) {\n        super(cd);\n        this.breakpointObserver\n            .observe([Breakpoints.XSmall, Breakpoints.Small])\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((state: BreakpointState) => {\n                this.isMobile = state.matches;\n                this.cd.markForCheck();\n            });\n    }\n\n    ngOnInit(): void {\n        this.colorControl.hideAlphaChannel();\n        this.syncFromConfig();\n\n        this.colorControlForm.valueChanges.subscribe((val: string | null) => {\n            if (!val) {\n                this.applyColorChange('', false, '#000000', true);\n                return;\n            }\n\n            const isValid = /^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$/.test(val);\n            const formatted = this.ensureHash(val);\n            if (isValid) {\n                this.applyColorChange(formatted, true, formatted, true);\n            } else {\n                this.applyColorChange(formatted, false, '', true);\n            }\n        });\n    }\n\n    private ensureHash(value: string) {\n        return value.startsWith('#') ? value : `#${value}`;\n    }\n\n    /**\n     * checkView je volan i pri recyklaci komponenty (reload formulare ze serveru),\n     * kdy uz ngOnInit znovu neprobehne => barvu je potreba prenacist z noveho configu\n     */\n    checkView(): void {\n        this.syncFromConfig();\n        this.cd.markForCheck();\n    }\n\n    /**\n     * nacteni barvy z configu - prvni render i novy config prichozi ze serveru\n     */\n    private syncFromConfig(): void {\n        const raw = this.config?.value === null || this.config?.value === undefined ? '' : String(this.config.value);\n        const control = this.config?.name ? this.group?.controls[this.config.name] : null;\n        // po reloadu formulare je control novy => hodnotu do nej musime normalizovat znovu\n        if (raw === this.lastConfigValue && (!control || control.value === this.currentColor)) { return; }\n\n        const color = this.normalizeColor(raw);\n        this.applyColorChange(color, true, color.length > 0 ? color : '#000000', false);\n        this.initialColor = this.currentColor;\n    }\n\n    /**\n     * hodnota ze serveru muze prijit v jakemkoli CSS formatu (fff, #fff, ff8800, rgb(...), red, ...)\n     * prevedeme ji na #RRGGBB, aby ctverec, input i picker ukazovaly presne to, co prislo\n     * nerozpoznanou hodnotu zahodime - picker by ji jinak mlcky nahradil vychozi cervenou\n     */\n    private normalizeColor(value: string): string {\n        const raw = value.trim();\n        if (raw.length === 0) { return ''; }\n\n        const candidate = /^[0-9A-Fa-f]{3}([0-9A-Fa-f]{3}([0-9A-Fa-f]{2})?)?$/.test(raw) ? this.ensureHash(raw) : raw;\n        if (!this.isSupportedColor(candidate)) { return ''; }\n        if (/^#[0-9A-Fa-f]{6}$/.test(candidate)) { return candidate; }   // uz je hex, nechame i puvodni velikost pismen\n        return new Color(candidate).toHexString();\n    }\n\n    private isSupportedColor(value: string): boolean {\n        const color = value.replace(/ /g, '').toLowerCase();\n        if (/^#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(color)) { return true; }\n        if (/^(rgb|rgba|hsl|hsla|cmyk)\\([^()]+\\)$/.test(color)) { return true; }\n        const named = (ColorsTable as unknown as {[key: string]: any})[color];   // pojmenovane barvy - red, dodgerblue, ...\n        return typeof named === 'object' && named !== null;\n    }\n\n    togglePicker() {\n        this.isPickerVisible = !this.isPickerVisible;\n        if (this.isPickerVisible) {\n            this.initialColor = this.currentColor;\n        }\n    }\n\n    clearColor($event: Event) {\n        $event.preventDefault();\n        this.applyColorChange('', true, '#000000');\n    }\n\n    applyClick(event: MouseEvent) {\n        event.stopPropagation();\n        const color: Color = this.colorControl.value;\n        const colorString = color.toHexString();\n        this.applyColorChange(colorString);\n        this.isPickerVisible = false;\n    }\n\n    applyColorChange(color: string, setColorControl: Boolean = false, colorControlColor: string = '', emitColorChange: Boolean = true) {\n        this.currentColor = color;\n        this.colorControlForm.setValue(color, { emitEvent: false });\n        this.config.value = color;\n        this.lastConfigValue = color;\n        if (this.group && this.config?.name && this.group.controls[this.config.name]) {\n            this.group.controls[this.config.name].setValue(color);\n        }\n        if (setColorControl) { this.colorControl.setValueFrom(colorControlColor.length > 0 ? colorControlColor : color); }\n        if (emitColorChange) { this.colorChange.emit(color); }\n    }\n\n    discardClick(event: MouseEvent) {\n        event.stopPropagation();\n        this.currentColor = this.initialColor;\n        this.colorControl.setValueFrom(this.currentColor);\n        this.colorControlForm.setValue(this.currentColor, { emitEvent: false });\n        this.isPickerVisible = false;\n    }\n\n    ngOnDestroy() {\n        if (this.config?.name && this.group?.contains(this.config.name)) {\n            this.group.removeControl(this.config.name);\n        }\n    }\n}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit, Pipe, PipeTransform} from '@angular/core';\nimport {EsFormFieldOption} from '../../model/es-field-option.interface';\nimport {EsFormTranslates} from '../../model/es-form.translates';\nimport { BreakpointObserver, Breakpoints, BreakpointState } from '@angular/cdk/layout';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NgClass} from '@angular/common';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {EsIconComponent} from '@eurosat/icon';\nimport {MatFormField, MatError} from '@angular/material/form-field';\nimport {MatSelect, MatSelectTrigger} from '@angular/material/select';\nimport {MatOption, MatOptgroup} from '@angular/material/core';\nimport {NgxMatSelectSearchModule} from 'ngx-mat-select-search';\nimport {FormHelpComponent} from '../form-help/form-help.component';\nimport {FormButtonDeleteComponent} from '../form-button-delete/form-button-delete.component';\nimport {TranslatePipe} from '@ngx-translate/core';\n\n@Pipe({\n    name: 'dataLabelPipe',\n    standalone: true\n})\nexport class DataLabelTablePipe implements PipeTransform {\n    transform(array: any[], query: string): any {\n        if (query) {\n            query = query.toLowerCase();\n            return array.filter((value: any) =>\n            value.name['label'].toLowerCase().indexOf(query) > -1);\n        }\n        return array;\n    }\n}\n\n@Component({\n    selector: 'es-form-select',\n    styleUrls: ['form-select-image.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div [ngClass]=\"config.display ? 'display-true' : 'display-false'\"\n             class=\"dynamic-field form-select form-container\"\n             [formGroup]=\"group\">\n            @if (!imgIsIcon) {\n                <img (click)=\"matSelect.toggle()\"\n                     [style.display]=\"imgSrc !='' ? 'inline-block' : 'none'\"\n                     class=\"selected-image\"\n                     [src]=\"imgSrc\"\n                     alt=\"\">\n            }\n            @if (imgIsIcon) {\n                <es-icon (click)=\"matSelect.toggle()\"\n                         [style.display]=\"imgSrc !='' ? 'inline-block' : 'none'\" class=\"selected-image\"\n                         [icon]=\"imgSrc\"></es-icon>\n            }\n            <mat-form-field [class.image-selected]=\"imgSrc !=''\">\n                <mat-select #matSelect\n                            [required]=\"config.required\"\n                            [multiple]=\"config.multiple\"\n                            [formControlName]=\"config.name\"\n                            [placeholder]=\"config.label\"\n                            (valueChange)=\"onValueChange($event); onSelected($event)\">\n                    <mat-select-trigger>{{ triggerValue }}</mat-select-trigger>\n                    <mat-option>\n                        <ngx-mat-select-search [style.display]=\"optionsLength > 5 ? 'inline' : 'none'\"\n                                               #_search\n                                               [disableInitialFocus]=\"isMobile\"\n                                               placeholderLabel=\"{{translates.SEARCH | translate}}...\"\n                                               [noEntriesFoundLabel]=\"translates.NO_OPTIONS_FOUND | translate\"></ngx-mat-select-search>\n                    </mat-option>\n                    @if (config.optGroups) {\n\n                        @for (group of config.optGroups; track group.label) {\n                            <mat-optgroup\n                                [label]=\"group.label\"\n                                [disabled]=\"group.disabled\">\n                                @for (option of group.options | dataLabelPipe : _search.value; track option.value) {\n                                    <mat-option\n\n                                        [value]=\"option.value\"\n                                        [disabled]=\"option.disabled\">\n                                        <div class=\"select-option-content\">\n                                            @if (!option.name['is-mat-icon']) {\n                                                <img class=\"select-image\"\n                                                     [src]=\"option.name['data-icon-src']\"\n                                                     alt=\"\">\n                                            }\n                                            @if (option.name['is-mat-icon']) {\n                                                <es-icon class=\"select-image\"\n                                                         [icon]=\"option.name['data-icon-src']\"></es-icon>\n                                            }\n                                            {{ option.name.label }}\n                                        </div>\n                                    </mat-option>\n                                }\n                            </mat-optgroup>\n                        }\n\n                    }\n                    @if (!config.optGroups) {\n\n                        @for (option of config.options | dataLabelPipe : _search.value; track option.value) {\n                            <mat-option\n\n                                [value]=\"option.value\"\n                                [disabled]=\"option.disabled\">\n                                <div class=\"select-option-content\">\n                                    @if (!option.name['is-mat-icon']) {\n                                        <img class=\"select-image\"\n                                             [src]=\"option.name['data-icon-src']\"\n                                             alt=\"\">\n                                    }\n                                    @if (option.name['is-mat-icon']) {\n                                        <es-icon class=\"select-image\"\n                                                 [icon]=\"option.name['data-icon-src']\"></es-icon>\n                                    }\n                                    {{ option.name.label }}\n                                </div>\n                            </mat-option>\n                        }\n\n                    }\n                </mat-select>\n                <mat-error>\n                    @for (msg of activeErrorMessages; track msg) {\n                        <span class=\"error-line\">{{ msg }}</span>\n                    }\n                </mat-error>\n            </mat-form-field>\n            @if (config.help) {\n                <es-form-help [help]=\"config.help\" [label]=\"config.label\" [fc]=\"esForm\"></es-form-help>\n            }\n            @if (config.dButton?.display) {\n                <form-button-delete [config]=\"config\"\n                                    [configList]=\"configList\"\n                                    [group]=\"group\"\n                                    [_fc]=\"esForm\">\n                </form-button-delete>\n            }\n        </div>\n    `,\n    standalone: true,\n    imports: [\n        NgClass,\n        ReactiveFormsModule,\n        EsIconComponent,\n        MatFormField,\n        MatSelect,\n        MatSelectTrigger,\n        MatOption,\n        NgxMatSelectSearchModule,\n        MatOptgroup,\n        MatError,\n        FormHelpComponent,\n        FormButtonDeleteComponent,\n        TranslatePipe,\n        DataLabelTablePipe,\n    ]\n})\nexport class FormSelectImageComponent extends EsFieldBase implements OnInit {\n    // stejne jako normalni select, az na to ze {{option.name}} neni string ale object a ma property ['data-icon-src']\n\n    imgSrc = '';\n    imgIsIcon = false;\n    triggerValue: any = '';\n    translates = EsFormTranslates;\n    optionsLength = 0;\n    isMobile = false;\n\n    constructor(\n        cd: ChangeDetectorRef,\n        private breakpointObserver: BreakpointObserver\n    ) {\n        super(cd);\n        this.breakpointObserver\n            .observe([Breakpoints.XSmall, Breakpoints.Small])\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((state: BreakpointState) => {\n                this.isMobile = state.matches;\n                this.cd.markForCheck();\n            });\n    }\n\n    ngOnInit(): void {\n        this.init();\n\n        this.onValueChange(this.config.value);\n\n        if (this.config.actions.length > 0) {\n            this.onSelected(this.config.value);\n        }\n\n        this.countOptions();\n    }\n\n    countOptions() {\n        if (this.config.optGroups && this.config.optGroups.length > 0) {\n            for (const group of this.config.optGroups) {\n                for (const option of group.options) {\n                    this.optionsLength++;\n                }\n            }\n        } else {\n            for (const option of this.config.options) {\n                this.optionsLength++;\n            }\n        }\n    }\n\n    onValueChange(selectedValue) {\n        if (this.config.optGroups) {\n            for (const optGroup of this.config.optGroups) {\n                for (const option of optGroup.options) {\n                    if (selectedValue === option.value) {\n                        this.imgSrc    = option.name['data-icon-src'];\n                        this.imgIsIcon = option.name['is-mat-icon'];\n                        this.triggerValue = option.name['label'];\n                        break;\n                    }\n                }\n            }\n        } else {\n            for (const option of this.config.options) {\n                if (selectedValue === option.value) {\n                    this.imgSrc    = option.name['data-icon-src'];\n                    this.imgIsIcon = option.name['is-mat-icon'];\n                    this.triggerValue = option.name['label'];\n                    break;\n                }\n            }\n        }\n    }\n\n    onSelected(selValue) {\n        this.dynamicField.applyActionOnValueChange(selValue);\n    }\n\n    isMatIcon(option: EsFormFieldOption): boolean {\n        return !option.name['data-icon-src'].toString().includes('/');\n    }\n\n    init() {\n        if (this.config.optGroups) {\n            for (const optGroup of this.config.optGroups) {\n                for (const option of optGroup.options) {\n                    option.name['is-mat-icon'] = this.isMatIcon(option);\n                }\n            }\n        } else {\n            for (const option of this.config.options) {\n                option.name['is-mat-icon'] = this.isMatIcon(option);\n            }\n        }\n    }\n}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit} from '@angular/core';\nimport {CdkDragDrop, moveItemInArray, transferArrayItem, CdkDropListGroup, CdkDropList, CdkDrag, CdkDragHandle} from '@angular/cdk/drag-drop';\nimport {takeUntil} from 'rxjs/operators';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport {EsFormFieldOption} from '../../model/es-field-option.interface';\nimport {Subject} from 'rxjs';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NgClass} from '@angular/common';\nimport {MatList, MatListSubheaderCssMatStyler, MatListItem} from '@angular/material/list';\nimport {MatDivider} from '@angular/material/divider';\nimport {FormHelpComponent} from '../form-help/form-help.component';\nimport {FormButtonDeleteComponent} from '../form-button-delete/form-button-delete.component';\n\ninterface Labelled {\n    label: string;\n}\n\n@Component({\n    selector: 'es-form-draggable',\n    styleUrls: ['form-draggable-list.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div class=\"panel panel-success drag-container form-container\"\n             [ngClass]=\"config.display ? 'display-true' : 'display-false'\"cdkDropListGroup>\n            @if (config.optGroups && config.optGroups.length > 0) {\n\n                @for (group of config.optGroups; track group.label) {\n                    <mat-list class=\"list-container\">\n                        @if (group.label) {\n                            <div class=\"draggable-header\">\n                                <h3 mat-subheader>{{group.label}}</h3>\n                                <mat-divider></mat-divider>\n                            </div>\n                        }\n                        <div class=\"items-container\"\n                             cdkDropList\n                             [style.height]=\"group.label ? 'calc(100% - 48px)' : '100%'\"\n                             [cdkDropListData]=\"group.options\"\n                             (cdkDropListDropped)=\"drop($event)\"\n                        >\n                            @for (option of group.options; track option.value) {\n                                <mat-list-item class=\"cursor-grab item-box\"\n                                               cdkDrag\n                                >\n                                    <span class=\"option-title\">{{getOptionLabel(option)}}</span>\n                                    @if (isMobile) {\n                                        <div class=\"mobile-handle\" cdkDragHandle>\n                                            <svg width=\"16px\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n                                                <path d=\"M10 9h4V6h3l-5-5-5 5h3v3zm-1 1H6V7l-5 5 5 5v-3h3v-4zm14\n                                                 2l-5-5v3h-3v4h3v3l5-5zm-9 3h-4v3H7l5 5 5-5h-3v-3z\"></path>\n                                                <path d=\"M0 0h24v24H0z\" fill=\"none\"></path>\n                                            </svg>\n                                        </div>\n                                    }\n                                </mat-list-item>\n                            }\n                        </div>\n                    </mat-list>\n                }\n            }\n            @if (config.help) {\n                <es-form-help [help]=\"config.help\" [label]=\"config.label\" [fc]=\"esForm\"></es-form-help>\n            }\n            @if (config.dButton?.display) {\n                <form-button-delete [config]=\"config\"\n                                    [configList]=\"configList\"\n                                    [group]=\"group\"\n                                    [_fc]=\"esForm\">\n                </form-button-delete>\n            }\n        </div>\n    `,\n    standalone: true,\n    imports: [\n        CdkDropListGroup,\n        NgClass,\n        MatList,\n        MatListSubheaderCssMatStyler,\n        MatDivider,\n        CdkDropList,\n        MatListItem,\n        CdkDrag,\n        CdkDragHandle,\n        FormHelpComponent,\n        FormButtonDeleteComponent,\n    ],\n})\nexport class FormDraggableListComponent extends EsFieldBase implements OnInit {\n\n    isMobile = true;\n\n    constructor(\n        cd: ChangeDetectorRef,\n        private breakpointObserver: BreakpointObserver,\n    ) {\n        super(cd);\n        this.breakpointObserver\n            .observe([Breakpoints.XSmall, Breakpoints.Small])\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe(result => {\n                this.isMobile = result.matches;\n                this.cd.markForCheck();\n            });\n    }\n\n    ngOnInit() {\n        if (this.config.optGroups) {\n            this.config.optGroups.forEach(optGroup => {\n                optGroup.options.sort((a, b) =>\n                    a.name['ord'] > b.name['ord'] ? 1 : a.name['ord'] === b.name['ord'] ? 0 : -1\n                );\n            });\n        }\n    }\n\n    drop(event: CdkDragDrop<EsFormFieldOption[]>) {\n        if (event.previousContainer === event.container) {\n            moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n        } else {\n            transferArrayItem(event.previousContainer.data,\n                event.container.data,\n                event.previousIndex,\n                event.currentIndex);\n        }\n    }\n\n    isLabelled(obj: any): obj is Labelled {\n        return obj && typeof obj === 'object' && 'label' in obj && typeof obj.label === 'string';\n    }\n\n    getOptionLabel(option: EsFormFieldOption): string {\n        if (typeof option.name === 'string') {\n            return option.name;\n        } else if (this.isLabelled(option.name)) {\n            return option.name.label;\n        }\n        return '';\n    }\n}\n","export const ES_FORM_UPLOAD_DESCRIPTIONS_SUFFIX = '_descriptions';\n","import { Directive, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';\n\n@Directive({\n    selector: '[es-fileDnD]',\n    standalone: true\n})\nexport class EsFileDndDirective {\n    // Vizuální odezva z první direktivy\n    @HostBinding('class.drag-over') dragOver = false;\n\n    @Output() filesDrop = new EventEmitter<FileList>();\n\n    @HostListener('dragover', ['$event'])\n    onDragOver(evt: DragEvent) {\n        evt.preventDefault();\n        evt.stopPropagation();\n        this.dragOver = true; // Zapne vizuální zvýraznění\n    }\n\n    @HostListener('dragleave', ['$event'])\n    onDragLeave(evt: DragEvent) {\n        evt.preventDefault();\n        evt.stopPropagation();\n        this.dragOver = false; // Vypne zvýraznění, když uživatel myší ujede pryč\n    }\n\n    @HostListener('drop', ['$event'])\n    onDrop(evt: DragEvent) {\n        evt.preventDefault();\n        evt.stopPropagation();\n        this.dragOver = false;\n\n        // Bezpečné načtení souborů z druhé direktivy\n        const files = evt.dataTransfer?.files;\n        if (files && files.length > 0) {\n            this.filesDrop.emit(files);\n        }\n    }\n}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit} from '@angular/core';\nimport {FormControl, ValidationErrors, ReactiveFormsModule} from '@angular/forms';\nimport { HttpEventType, HttpResponse } from '@angular/common/http';\nimport {EsFormFieldFile} from '../../model/es-field-file.interface';\nimport {Subscription} from 'rxjs';\nimport {TranslateService, TranslatePipe} from '@ngx-translate/core';\nimport {HttpService} from '@eurosat/http';\nimport {EsIcon, EsIconComponent} from '@eurosat/icon';\nimport {EsFormTranslates} from '../../model/es-form.translates';\nimport {ES_FORM_UPLOAD_DESCRIPTIONS_SUFFIX} from './form-upload.constants';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NgClass} from '@angular/common';\nimport {EsFileDndDirective} from '../../util/file-drop.directive';\nimport {MatToolbar} from '@angular/material/toolbar';\nimport {MatButton} from '@angular/material/button';\nimport {MatProgressSpinner} from '@angular/material/progress-spinner';\nimport {MatFormField, MatLabel, MatError} from '@angular/material/form-field';\nimport {MatInput} from '@angular/material/input';\nimport {MatProgressBar} from '@angular/material/progress-bar';\nimport {FormHelpComponent} from '../form-help/form-help.component';\nimport {FormButtonDeleteComponent} from '../form-button-delete/form-button-delete.component';\n\n@Component({\n    selector: 'es-form-upload',\n    styleUrls: ['form-upload.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div\n                [ngClass]=\"config.display ? 'display-true' : 'display-false'\"\n                class=\"dynamic-field form-upload form-container\"\n                [formGroup]=\"group\">\n            <input [type]=\"'hidden'\"\n                   [formControlName]=\"config.name\">\n            <input type=\"hidden\"\n                   [formControlName]=\"config.name + getDescriptionSuffix()\">\n            <input #fileInput\n                   [style.display]=\"'none'\"\n                   (change)=\"handleFileInputFromEvent($event)\"\n                   [type]=\"'file'\"\n                   [name]=\"'files[]'\"\n                   [multiple]=\"multiple\"\n                   [accept]=\"acceptExt\"\n            >\n            <div class=\"mat-form-field dnd-container\" es-fileDnD (filesDrop)=\"onFilesDrop($event)\">\n                <mat-toolbar>\n                    <div>\n                        <button mat-raised-button\n                                color=\"accent\"\n                                (click)=\"fileInput.value=''; fileInput.click(); $event.preventDefault();\">\n                            {{config.label}}{{config.required? '*':''}}\n                        </button>\n                    </div>\n                    <div class=\"info-panel\">\n                        @if (uploading) {\n\n                            <div class=\"info-group\">\n                                <mat-spinner [diameter]=\"24\"></mat-spinner>\n                                {{translates.UPLOADING | translate}}\n                            </div>\n                            <div class=\"info-group\">\n                                <button mat-button color=\"accent\" (click)=\"onCancelUpload(); $event.preventDefault();\">\n                                    {{translates.CANCEL | translate}}\n                                </button>\n                            </div>\n                        }\n                        @if (uploadSuccess) {\n                            <div class=\"info-group\">\n                                <es-icon [icon]=\"esIcon.DONE\"></es-icon>\n                                {{translates.DONE | translate}}\n                            </div>\n                        }\n                    </div>\n                </mat-toolbar>\n                @for (ff of files; track ff.file.name; let i = $index) {\n                    <div class=\"file-item fx-layout-row fx-layout-align-space-between-center fx-layout-gap-10-px\">\n                        <span class=\"file-name fx-flex-15\">{{ff.file.name}}</span>\n                        <span class=\"fx-flex-5\">{{ff.server?.size}}</span>\n                        @if (config.attr['file-description'] && !this.config.attr['data-url']) {\n                            <mat-form-field class=\"fx-flex-70\">\n                                <input (change)=\"descriptionChanged(i, $event)\" matInput type=\"text\" name=\"fileDescriptions[]\" class=\"file-description-input\">\n                                <mat-label>{{translates.FILE_DESCRIPTION | translate}}</mat-label>\n                            </mat-form-field>\n                        }\n                        @if ((ff.server?.deleteUrl && ff.server?.deleteType === 'DELETE') || (!config.attr['data-url'] &&  this.files.length > 0)) {\n                            <button class=\"fx-flex-10\"\n                                    mat-button\n                                    color=\"accent\"\n                                    (click)=\"removeFile(ff); $event.preventDefault(); $event.stopPropagation();\"\n                            >\n                                {{translates.REMOVE| translate}}\n                            </button>\n                        }\n                    </div>\n                }\n                @if (config.attr['data-url']) {\n                    <mat-progress-bar [value]=\"percentDone\"></mat-progress-bar>\n                }\n                <mat-error>\n                    @for (msg of activeErrorMessages; track msg) {\n                        <span class=\"error-line\">{{ msg }}</span>\n                    }\n                </mat-error>\n            </div>\n            @if (config.help) {\n                <es-form-help [help]=\"config.help\" [label]=\"config.label\" [fc]=\"esForm\"></es-form-help>\n            }\n            @if (config.dButton?.display) {\n                <form-button-delete [config]=\"config\"\n                                    [configList]=\"configList\"\n                                    [group]=\"group\"\n                                    [_fc]=\"esForm\">\n                </form-button-delete>\n            }\n        </div>\n    `,\n    standalone: true,\n    imports: [\n        NgClass,\n        ReactiveFormsModule,\n        EsFileDndDirective,\n        MatToolbar,\n        MatButton,\n        MatProgressSpinner,\n        EsIconComponent,\n        MatFormField,\n        MatInput,\n        MatLabel,\n        MatProgressBar,\n        MatError,\n        FormHelpComponent,\n        FormButtonDeleteComponent,\n        TranslatePipe,\n    ]\n})\nexport class FormUploadComponent extends EsFieldBase implements OnInit {\n    public static DescriptionsSuffix = ES_FORM_UPLOAD_DESCRIPTIONS_SUFFIX;\n\n    files: EsFormFieldFile[]  = [];\n    percentDone: number;\n    uploading: boolean;\n    uploadSuccess: boolean;\n    multiple;\n    activeUpload: Subscription;\n    acceptExt: string;\n    validExtensions = []; // '*.*' ... '.csv, .jpg'; //'file_extension'; todo\n    validMaxSize = 0;\n    esIcon = EsIcon;\n    translates = EsFormTranslates;\n    descriptions = [];\n\n    // todo config.multiple\n\n    constructor(\n        private http: HttpService,\n        private translate: TranslateService,\n        cd: ChangeDetectorRef\n    ) {\n        super(cd);\n    }\n\n    ngOnInit(): void {\n        this.multiple = this.config.attr['multiple'] === true;\n        this.group.addControl(this.config.name + '_descriptions', new FormControl());\n        this.config.validation.push({\n            name: 'semicolon-error',\n            message: this.translate.instant(this.translates.UPLOAD_FILE_SEMICOLON),\n            rules: ['invalid'],\n        });\n\n        this.config.validation.forEach((validator) => {\n            if (validator.name === 'upload-size') {\n                this.validMaxSize = +validator.value;\n            }\n            if (validator.name === 'upload-extension') {\n                if (typeof validator.value === 'object') {\n                    for (const ext of <Array<any>>validator.value) {\n                        this.validExtensions.push(ext);\n                    }\n                    this.acceptExt = '.' + this.validExtensions.join(', .');\n                }\n            }\n        });\n\n        if (this.config.attr['files']) {\n            this.inputFileArray(this.config.attr['files']);\n        }\n    }\n\n    setSelfValue(value: any) {\n        this.group.controls[this.config.name].setValue(value);\n    }\n\n    handleFileInputFromEvent(event: Event): void {\n        const input = event.target as HTMLInputElement;\n        if (input?.files?.length) {\n            this.inputFileArray(Array.from(input.files));\n        }\n    }\n\n    handleFileInput(files: FileList) {\n        this.inputFileArray(Array.from(files));\n    }\n\n    onFilesDrop(files: FileList) {\n        this.handleFileInput(files);\n    }\n\n    inputFileArray(files: File[]) {\n        let hasError = false;\n        const errors: ValidationErrors = {\n            'semicolon-error': null,\n            'upload-size': null,\n            'upload-extension': null,\n        };\n\n        // AN side validace\n        for (let i = 0; i < files.length; i++) {\n\n            // Název souboru nesmí obsahovat znak ; (středník)\n            if (files[i].name.indexOf(';') > -1) {\n                errors['semicolon-error'] = true;\n                hasError = true;\n            }\n\n            if (files[i].size > this.validMaxSize) {\n                errors['upload-size'] = true;\n                hasError = true;\n            }\n\n            const fileExt = files[i].name.split('.').pop();\n            if (!(this.validExtensions.indexOf(fileExt) > -1) && this.validExtensions.length > 0) {\n                errors['upload-extension'] = true;\n                hasError = true;\n            }\n        }\n        this.group.controls[this.config.name].setErrors(hasError ? errors : null);\n\n        if (this.group.controls[this.config.name].valid) {\n            this.percentDone = 0;\n            this.uploadSuccess = false;\n            if (!this.multiple) {\n                this.files = [];    // pri multiple neresetovat\n                this.files.push({file: files[0]});\n            } else {\n                for (let i = 0; i < files.length; i++) {\n                    this.files.push({file: files[i]});\n                }\n            }\n            // extra http.post\n            if (this.config.attr['data-url']) {\n\n                // nasetovat formData\n                const formData: FormData = new FormData();\n                this.files.forEach(ff => {\n                    formData.append('files', ff.file, ff.file.name);\n                });\n\n                this.uploading = true;\n                this.cd.markForCheck();\n\n                this.activeUpload = this.http.postFiles(this.config.attr['data-url'], formData, {reportProgress: true, observe: 'events'})\n                    .pipe(takeUntilDestroyed(this.destroyRef)).subscribe(res => {\n                        if (res.type === HttpEventType.UploadProgress) {\n                            this.percentDone = Math.round(100 * res.loaded / res.total);\n                        } else if (res instanceof HttpResponse) {\n                            this.uploading = false;\n                            this.uploadSuccess = true;\n\n                            // set hidden input value\n                            // zatim jen pro jeden soubor => test (10).jpg;test.jpg\n                            // neni server response pro multiple\n                            const fileName = res.body['files'][0].name + ';' + this.files[0].file.name;\n                            this.setSelfValue(fileName);\n\n                            // update fieldFile from response\n                            this.files.forEach(ff => {\n                                ff.server = res.body['files'][0];   // todo mutliple\n                            });\n                            // this.files[0].server = res.body['files'][0];\n                        }\n                        this.cd.markForCheck();\n                    });\n            } else {\n                this.uploadSuccess = true;\n                this.group.controls[this.config.name].setValue(this.files);\n                this.cd.markForCheck();\n            }\n        }\n    }\n\n    removeFile(ff: EsFormFieldFile) {\n        if (ff.server && ff.server.deleteUrl) {\n            this.http.delete(ff.server.deleteUrl).subscribe(() => {\n                // asi k nicemu response?\n                // vymaz this.files\n                this.files.splice(this.files.findIndex((f) => f.file.name === ff.file.name), 1);\n\n                this.afterFileRemove();\n            });\n        } else {\n            this.files.splice(this.files.findIndex((f) => f.file.name === ff.file.name), 1);\n            this.afterFileRemove();\n        }\n    }\n\n    onCancelUpload() {\n        this.activeUpload.unsubscribe();\n        this.uploading = false;\n        this.uploadSuccess = true;  // mozna dodelat hlasku zruseno ?\n        // this.percentDone = 0;\n\n        // remove files ktere nemaji server response ?\n        this.files.slice().reverse().forEach((item, index, object) => {\n            if (!item.server) {\n                // forEach vymaz viz => https://stackoverflow.com/questions/24812930/how-to-remove-element-from-array-in-foreach-loop\n                this.files.splice(object.length - 1 - index, 1);\n            }\n        });\n\n        this.afterFileRemove();\n    }\n\n    afterFileRemove() {\n        // todo multiple, az jak bude namodelovana value\n        if (this.files.length === 0) {\n            this.setSelfValue('');\n            this.uploadSuccess = false;\n        }\n        this.cd.markForCheck();\n    }\n\n    descriptionChanged(index: number, $event: Event) {\n        this.descriptions[index] = $event.target['value'];\n        this.group.controls[this.config.name + FormUploadComponent.DescriptionsSuffix].setValue(this.descriptions);\n    }\n\n    getDescriptionSuffix() {\n        return FormUploadComponent.DescriptionsSuffix;\n    }\n}\n","import { Component, ElementRef, Input, ChangeDetectionStrategy, ViewChild, Output, EventEmitter, OnInit, OnDestroy } from '@angular/core';\nimport * as CroppieModule from 'croppie';\nimport { CroppieOptions, ResultOptions } from 'croppie';\n\n// správný import Croppie\nconst Croppie = (CroppieModule as any).default || CroppieModule;\n\nexport type Type = 'canvas' | 'base64' | 'html' | 'blob' | 'rawcanvas';\nexport type Size = 'viewport' | 'original';\n\nexport interface TempResultOptions extends ResultOptions {\n    type?: Type;\n    size?: Size;\n}\n// todo, neni responsivni, castecne vyresene pro zobrazeni, ale ne pro novy orez\n// casem predelat na http://fengyuanchen.github.io/cropper/\n// umi toho vic, jsou pro to angular wrappery a pouziva ho i sysdo !\n@Component({\n    selector: 'es-croppie-wrapper',\n    template: `<div #imageEdit></div>`,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    preserveWhitespaces: false,\n    standalone: true\n})\nexport class EsCroppieWrapperComponent implements OnInit, OnDestroy {\n    @ViewChild('imageEdit', { static: true }) imageEdit!: ElementRef;\n    @Input() croppieOptions!: CroppieOptions;\n    @Input() imageUrl!: string;\n    @Input() outputFormatOptions: TempResultOptions = { type: 'base64', size: 'viewport' };\n    @Output() result = new EventEmitter<string>(); // emitujeme jen string Base64\n\n    private _croppie: any;\n\n    ngOnInit(): void {\n        // inicializace Croppie\n        this._croppie = new Croppie(this.imageEdit.nativeElement, this.croppieOptions);\n\n        // bind URL obrázku\n        if (this.imageUrl) {\n            this._croppie.bind({ url: this.imageUrl });\n        }\n    }\n\n    /**\n     * Vrátí Base64 string aktuálního ořezu\n     */\n    newResult(): void {\n        if (!this._croppie) { return; }\n\n        this._croppie.result(this.outputFormatOptions).then((res: string) => {\n            this.result.emit(res);\n        });\n    }\n\n    /**\n     * Vrátí Blob pro upload\n     */\n    getBlob(): Promise<Blob> {\n        if (!this._croppie) { return Promise.reject('Croppie not initialized'); }\n\n        return this._croppie.result({ type: 'blob', size: 'viewport' }) as Promise<Blob>;\n    }\n\n    ngOnDestroy(): void {\n        if (this._croppie) {\n            this._croppie.destroy();\n            this._croppie = null;\n        }\n    }\n\n    /**\n     * Přebind obrázku (pokud chceš změnit URL dynamicky)\n     */\n    rebind(url: string): void {\n        if (!this._croppie) { return; }\n        this._croppie.bind({ url });\n    }\n}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnChanges, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {EsFormFieldFile} from '../../model/es-field-file.interface';\nimport {Subject, Subscription} from 'rxjs';\nimport {CroppieOptions} from 'croppie';\nimport {EsIcon, EsIconComponent} from '@eurosat/icon';\nimport {EsCroppieWrapperComponent} from './croppie-wrapper/es-croppie-wrapper.component';\nimport {EsFormTranslates} from '../../model/es-form.translates';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {NgClass} from '@angular/common';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {EsFileDndDirective} from '../../util/file-drop.directive';\nimport {MatIconButton} from '@angular/material/button';\nimport {MatError} from '@angular/material/form-field';\nimport {FormHelpComponent} from '../form-help/form-help.component';\nimport {FormButtonDeleteComponent} from '../form-button-delete/form-button-delete.component';\nimport {TranslatePipe} from '@ngx-translate/core';\n\n@Component({\n    selector: 'es-form-upload-image',\n    styleUrls: ['form-upload-image.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div [ngClass]=\"config.display ? 'display-true' : 'display-false'\"\n             class=\"dynamic-field form-upload-image form-container\"\n             [formGroup]=\"group\">\n            <input [type]=\"'hidden'\"\n                   [formControlName]=\"config.name\">\n            <input #fileInput\n                   [style.display]=\"'none'\"\n                   (change)=\"handleFileInputFromEvent($event)\"\n                   [type]=\"'file'\"\n                   [name]=\"'files[]'\"\n                   accept=\"image/gif, image/jpeg, image/png\">\n            <div es-fileDnD (filesDrop)=\"onFilesDrop($event)\" class=\"dnd-container\">\n                @if (!editMode) {\n                    <div #imageContainer\n                         class=\"imageContainer\"\n                         [style.width.px]=\"config.width\"\n                         [style.height.px]=\"config.height\"\n                         [style.max-width.%]=\"100\"\n                         [style.max-height.%]=\"100\"\n                    >\n                        <img [src]=\"imageToDisplay\" alt=\"\"/>\n                        <div class=\"buttons\"\n                             [class.empty]=\"!croppieImage\"\n                             (click)=\"!croppieImage? fileInputClick($event):false\">\n                            <div class=\"img-label\">{{ config.label }}</div>\n                            <div>\n                                <button title=\"{{translates.UPLOAD_FILE | translate}}\" mat-icon-button (click)=\"fileInputClick($event)\"\n                                        [disabled]=\"config.attr['disabled']\"\n                                >\n                                    <es-icon [icon]=\"esIcon.CLOUD_UPLOAD\"></es-icon>\n                                </button>\n                                @if (croppieImage) {\n                                    <button\n                                        title=\"{{translates.CROP | translate}}\"\n                                        mat-icon-button\n                                        [disabled]=\"config.attr['disabled']\"\n                                        (click)=\"onCroppieEdit($event);\">\n                                        <es-icon [icon]=\"esIcon.CROP\"></es-icon>\n                                    </button>\n                                }\n                                @if (croppieImage && !config.required) {\n                                    <button\n                                        title=\"{{translates.REMOVE | translate}}\"\n                                        mat-icon-button\n                                        [disabled]=\"config.attr['disabled']\"\n                                        (click)=\"onImageRemove($event);\">\n                                        <es-icon [icon]=\"esIcon.DELETE\"></es-icon>\n                                    </button>\n                                }\n                            </div>\n                        </div>\n                    </div>\n                }\n                @if (editMode && croppieImage) {\n                    <div>\n                        <es-croppie-wrapper #croppie\n                                            [croppieOptions]=\"croppieOptions\"\n                                            [imageUrl]=\"croppieImage\"\n                                            (result)=\"newImageResultFromCroppie($event)\">\n                        </es-croppie-wrapper>\n                        <div class=\"buttons\">\n                            <button title=\"{{translates.CANCEL | translate}}\" mat-icon-button (click)=\"cancelCroppieEdit($event);\"\n                                    [disabled]=\"config.attr['disabled']\">\n                                <es-icon [icon]=\"esIcon.CLOSE\"></es-icon>\n                            </button>\n                            <button title=\"{{translates.DONE | translate}}\" mat-icon-button (click)=\"saveImageFromCroppie($event);\"\n                                    [disabled]=\"config.attr['disabled']\">\n                                <es-icon [icon]=\"esIcon.DONE\"></es-icon>\n                            </button>\n                        </div>\n                    </div>\n                }\n                <mat-error>\n                    @for (msg of activeErrorMessages; track msg) {\n                        <span class=\"error-line\">{{ msg }}</span>\n                    }\n                </mat-error>\n            </div>\n            @if (config.help) {\n                <es-form-help [help]=\"config.help\" [label]=\"config.label\" [fc]=\"esForm\"></es-form-help>\n            }\n            @if (config.dButton?.display) {\n                <form-button-delete\n                    [config]=\"config\"\n                    [configList]=\"configList\"\n                    [group]=\"group\"\n                    [_fc]=\"esForm\">\n                </form-button-delete>\n            }\n        </div>\n    `,\n    standalone: true,\n    imports: [\n        NgClass,\n        ReactiveFormsModule,\n        EsFileDndDirective,\n        MatIconButton,\n        EsIconComponent,\n        EsCroppieWrapperComponent,\n        MatError,\n        FormHelpComponent,\n        FormButtonDeleteComponent,\n        TranslatePipe,\n    ]\n})\nexport class FormUploadImageComponent extends EsFieldBase implements OnInit, OnChanges {\n    @ViewChild('croppie', {static: false}) croppie: EsCroppieWrapperComponent;\n    @ViewChild('fileInput', {static: false}) fileInput: ElementRef;\n    @ViewChild('imageContainer', {static: false}) imageContainer: ElementRef;\n    imageUrl = '';\n    currentImage: string;\n    croppieImage: string;\n    editMode = false;\n    files: EsFormFieldFile[] = [];\n    percentDone: number;\n    uploading: boolean;\n    uploadSuccess: boolean;\n    activeUpload: Subscription;\n    esIcon = EsIcon;\n    translates = EsFormTranslates;\n\n    // todo required ?\n    // [required]=\"config.required\"\n\n    constructor(cd: ChangeDetectorRef) {\n        super(cd);\n    }\n\n    get imageToDisplay() {\n        if (this.currentImage) { return this.currentImage; }\n        if (this.imageUrl) { return this.imageUrl; }\n        return '';\n    }\n\n    get croppieOptions(): CroppieOptions {\n        const opts: CroppieOptions = {};\n        opts.viewport = {\n            width: this.config.width,\n            height: this.config.height,\n        };\n        opts.boundary = {\n            width: this.config.width + 50,\n            height: this.config.width + 50,\n        };\n        opts.enforceBoundary = true;\n        return opts;\n    }\n\n    ngOnInit() {\n        if (this.group.controls[this.config.name].value !== '') {\n            this.imageUrl = this.group.controls[this.config.name].value;\n            this.setSelfValue('');  // nebude se odesilat dokud se nezmeni\n        }\n\n        this.currentImage = this.imageUrl;\n        this.croppieImage = this.imageUrl;\n    }\n\n    ngOnChanges(changes: any) {\n        if (this.croppieImage) { return; }\n        if (!changes.imageUrl) { return; }\n        if (!changes.imageUrl.previousValue && changes.imageUrl.currentValue) {\n            this.croppieImage = changes.imageUrl.currentValue;\n        }\n    }\n\n    fileInputClick(e) {\n        e.preventDefault();\n        e.stopPropagation();\n        if (!this.config.attr['disabled']) {\n            this.fileInput.nativeElement.value = '';\n            this.fileInput.nativeElement.click();\n        }\n    }\n\n    newImageResultFromCroppie(img: string) {\n        this.croppieImage = img;\n    }\n\n    saveImageFromCroppie(e) {\n        e.stopPropagation();\n        e.preventDefault();\n        this.croppie.newResult();\n        this.currentImage = this.croppieImage;\n        this.editMode = false;\n        this.uploadImage();\n    }\n\n    cancelCroppieEdit(e) {\n        e.stopPropagation();\n        e.preventDefault();\n        this.croppieImage = this.currentImage;\n        this.editMode = false;\n    }\n\n    onCroppieEdit(e) {\n        e.stopPropagation();\n        e.preventDefault();\n        this.editMode = true;\n    }\n\n    uploadImage() {\n        this.croppie.getBlob().then(res => {\n            this.setSelfValue(res);\n        });\n    }\n\n    imageUpload(file: File) {\n        if (file.type !== 'image/jpeg' && file.type !== 'image/png' && file.type !== 'image/gif' && file.type !== 'image/jpg') { return; }\n        const fr = new FileReader();\n        fr.onloadend = () => {\n            this.croppieImage = fr.result.toString();\n            this.editMode = true;\n            this.cd.markForCheck();\n        };\n        fr.readAsDataURL(file);\n    }\n\n    setSelfValue(value: any) {\n        this.group.controls[this.config.name].setValue(value);\n        this.cd.markForCheck();\n    }\n\n    handleFileInputFromEvent(event: Event): void {\n        const input = event.target as HTMLInputElement;\n        if (input.files?.length) {\n            this.handleFileInput(input.files);\n        }\n    }\n\n    handleFileInput(files: FileList): void {\n        this.files = [];\n        this.files.push({file: files.item(0)});\n        this.imageUpload(files.item(0));\n    }\n\n    onFilesDrop(files: FileList) {\n        if (!this.config.attr['disabled']) {\n            this.handleFileInput(files);\n        }\n    }\n\n    onImageRemove(e) {\n        e.stopPropagation();\n        e.preventDefault();\n        this.imageUrl = undefined;\n        this.croppieImage = undefined;\n        this.currentImage = undefined;\n        this.group.controls[this.config.name].setValue(undefined);\n        this.config.value = undefined;\n        this.cd.markForCheck();\n    }\n}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit} from '@angular/core';\nimport {FormGroup, ReactiveFormsModule} from '@angular/forms';\nimport {EsFormField} from '../../model/es-form-field.interface';\nimport {EsFormFieldConfig} from '../../model/es-config.interface';\nimport {IEsFormComponent} from '../../container/es-form.interface';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {NgClass} from '@angular/common';\nimport {MatProgressBar} from '@angular/material/progress-bar';\nimport {MatError} from '@angular/material/form-field';\nimport {FormButtonDeleteComponent} from '../form-button-delete/form-button-delete.component';\n\n@Component({\n    selector: 'es-form-progress-bar',\n    styleUrls: ['form-progress-bar.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div [ngClass]=\"config.display ? 'display-true' : 'display-false'\"\n             class=\"dynamic-field form-container\"\n             [formGroup]=\"group\">\n            <div class=\"progress-container\">\n                <mat-progress-bar\n                        class=\"progress-bar\"\n                        [mode]=\"'determinate'\"\n                        [value]=\"config.value\">\n                </mat-progress-bar>\n                <div class=\"progress-value\">\n                    {{config.value}}%\n                </div>\n            </div>\n            <mat-error>\n                @for (msg of activeErrorMessages; track msg) {\n                    <span class=\"error-line\">{{ msg }}</span>\n                }\n            </mat-error>\n            @if (config.dButton?.display) {\n                <form-button-delete [config]=\"config\"\n                                    [configList]=\"configList\"\n                                    [group]=\"group\"\n                                    [_fc]=\"esForm\">\n                </form-button-delete>\n            }\n        </div>\n    `,\n    standalone: true,\n    imports: [NgClass, ReactiveFormsModule, MatProgressBar, MatError, FormButtonDeleteComponent]\n})\nexport class FormProgressBarComponent extends EsFieldBase implements OnInit {\n\n    color = 'accent'; // TODO: je to depracated\n\n    constructor(cd: ChangeDetectorRef) {\n        super(cd);\n    }\n\n    ngOnInit() {\n        if (this.config.value > 100) {\n            this.color = 'warn';\n        } else {\n            this.color = 'accent';\n        }\n    }\n}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit} from '@angular/core';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {NgClass} from '@angular/common';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {FormButtonDeleteComponent} from '../form-button-delete/form-button-delete.component';\n\n@Component({\n    selector: 'es-form-html',\n    styleUrls: ['form-html.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div class=\"dynamic-field form-html form-container\"\n             [ngClass]=\"config.display ? 'display-true' : 'display-false'\"\n             [formGroup]=\"group\">\n            <input [type]=\"'hidden'\"\n                   [formControlName]=\"config.name\">\n            <!--vsechny img pujdou otevrit v galerce-->\n            <div [innerHTML]=\"innerHtml\" gallerize></div>\n            @if (config.dButton?.display) {\n                <form-button-delete [config]=\"config\" [configList]=\"configList\"\n                                    [group]=\"group\"\n                                    [_fc]=\"esForm\">\n                </form-button-delete>\n            }\n        </div>\n    `,\n    standalone: true,\n    imports: [NgClass, ReactiveFormsModule, FormButtonDeleteComponent]\n})\nexport class FormHtmlComponent extends EsFieldBase implements OnInit {\n    innerHtml: SafeHtml;\n\n    constructor(\n        private sanitizer: DomSanitizer,\n        cd: ChangeDetectorRef\n    ) {\n        super(cd);\n    }\n\n    ngOnInit(): void {\n        // otestovat nastaveni na prikladech\n        this.innerHtml = this.sanitizer.bypassSecurityTrustHtml(this.config.value);\n    }\n\n}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit} from '@angular/core';\nimport {FormBuilder} from '@angular/forms';\nimport { EsFormFieldConfig } from '../../model/es-config.interface';\nimport {EsIcon, EsIconComponent} from '@eurosat/icon';\nimport {EsFormActionType} from '../../model/es-form-action.interface';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {NgClass} from '@angular/common';\nimport {MatButton} from '@angular/material/button';\nimport {MatError} from '@angular/material/form-field';\n\n@Component({\n    selector: 'es-form-button-add',\n    styleUrls: ['form-button-add.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div [ngClass]=\"config.display ? 'display-true' : 'display-false'\"\n             class=\"dynamic-field form-button\">\n            <button mat-button type=\"button\"\n                    (click)=\"onClick($event)\">\n                <es-icon [icon]=\"esIcon.ADD\"></es-icon>\n                {{config.label}}\n            </button>\n            <mat-error>\n                @for (msg of activeErrorMessages; track msg) {\n                    <span class=\"error-line\">{{ msg }}</span>\n                }\n            </mat-error>\n        </div>\n    `,\n    standalone: true,\n    imports: [NgClass, MatButton, EsIconComponent, MatError]\n})\nexport class FormButtonAddComponent extends EsFieldBase implements OnInit {\n    max = 0;\n    min = 0;\n    clonedItemsName: Array<string>;\n    esIcon = EsIcon;\n\n    constructor(\n        private fb: FormBuilder,\n        cd: ChangeDetectorRef,\n    ) {\n        super(cd);\n    }\n\n    ngOnInit() {\n        this.max = Number(this.config.actions[0].value[1]);\n        this.min = Number(this.config.actions[0].value[0]);\n        if (this.config.value >= this.max) {\n            this.config.display = false;\n        }\n\n        // console.group('FormButtonAdd ngOnInit');\n        // console.log('config:', this.config);\n        // console.log('actions:', this.config.actions);\n\n        // this.config.actions?.forEach((a, i) => {\n        //     console.log(`Action[${i}]`, {\n        //         action: a.action,\n        //         value: a.value,\n        //         valueType: typeof a.value\n        //     });\n        // });\n        // console.groupEnd();\n    }\n\n    addItem(value?: any, position?: number) {\n        this.clonedItemsName = [];\n        this.setDeleteButtonsVisibility();\n\n        let firstCopyItem: EsFormFieldConfig;\n        let rawItem: EsFormFieldConfig;\n        // let copyButtonIndex: number = this._fc.dynamicForm.config.indexOf(this.config);\n\n        let copyButtonIndex: number;\n        let copyButtonGroupIndex: number;\n        const cpBtnIndexForConfig = this.esForm.dynamicForm.config.indexOf(this.config);\n        this.esForm.tmpGroups.forEach((group, index) => {\n            if (group.controls.indexOf(this.config) !== -1) {\n                copyButtonGroupIndex = index;\n                copyButtonIndex = group.controls.indexOf(this.config);\n            }\n        });\n\n        for (const ac of this.config.actions) {\n            if (ac.action === EsFormActionType.COPY) {\n                ac.items.forEach((item, index) => {\n                    if (this.config.value === 0) {\n                        this.esForm.getFieldConfig(item).display = true;\n                        this.esForm.getFieldConfig(item).value = '';\n                        const field = this.esForm.getFieldConfig(item);\n                        this.esForm.setValue(item, field.multiple ? [] : '');\n                    } else {\n                        let configToCopy: EsFormFieldConfig;\n                        configToCopy = this.esForm.dynamicForm.config.find(config => {\n                            return config.name === item;\n                        });\n                        if (configToCopy) {\n                            if (rawItem === undefined && configToCopy.type !== 'hidden') {\n                                rawItem = configToCopy;\n                                rawItem.dButton = {\n                                    display: true,\n                                };\n\n                                // test zda ma delete akci na originalnim prvku\n                                let hasDelete = false;\n                                for (const rAc of rawItem.actions) {\n                                    if (rAc.action === EsFormActionType.DELETE) {\n                                        hasDelete = true;\n                                    }\n                                }\n                                // pokud nema tak setuji akci delete na originalnim prvku\n                                if (hasDelete === false && rawItem.type !== 'hidden') {\n                                    rawItem.actions.push({\n                                        action: EsFormActionType.DELETE,\n                                        items: ac.items,\n                                    });\n                                }\n                            }\n\n                            let clone: EsFormFieldConfig;\n                            let cloneName: string = configToCopy.name;\n                            const cnt = this.config.value;\n\n                            clone = this.cloneFieldConfig(configToCopy);\n\n                            // console.group('CLONE CREATED'); ////////////\n                            // console.log('Original:', configToCopy);\n                            // console.log('Clone:', clone);\n                            // console.log('Clone.actions:', clone.actions);\n                            // clone.actions?.forEach((a, i) => {\n                            //     console.log(`Action[${i}]`, {\n                            //         action: a.action,\n                            //         value: a.value,\n                            //         items: a.items\n                            //     });\n                            // });\n                            // console.groupEnd(); //////////////\n\n                            // prejmenovavam akce v nove vytvorenem prvku\n                            for (const cAc of clone.actions) {\n                                for (let i = 0; i < cAc.items.length; i++ ) {\n                                    cAc.items[i] = cAc.items[i] + '_' + cnt.toString();\n                                }\n                            }\n                            clone.actions.forEach(a => {\n                                // if (a.value === undefined) {\n                                //     console.warn('ACTION WITHOUT VALUE', a);\n                                // }\n                            });\n\n                            if (position) {\n                                cloneName += '_' + position.toString();\n\n                                // preindexovani prvku\n\n                                // prochazim odzadu abych si neprepisoval configy\n                                for (let j = this.esForm.dynamicForm.config.length - 1; j !== 0; j--) {\n                                    if (this.esForm.dynamicForm.config[j].name.includes(configToCopy.name)) {\n                                        this.esForm.dynamicForm.config[j].actions.forEach(tAction => {\n                                            if (tAction.action === EsFormActionType.DELETE && tAction.items.length === 0) {\n                                                clone.actions.forEach(cAction => {\n                                                    if (cAction.action === EsFormActionType.DELETE) {\n                                                        tAction.items = JSON.parse(JSON.stringify(cAction.items));\n                                                    }\n                                                });\n                                            }\n                                        });\n\n                                        const itemIndex = +this.esForm.dynamicForm.config[j].name\n                                            .split('_')[this.esForm.dynamicForm.config[j].name\n                                            .split('_').length - 1];\n                                        // chci prejmenovat jen ty s vetsim index nez je pozice pokud je pozice 0 tak prejmenovat vsechny\n                                        let newName;\n                                        if (itemIndex >= position || position === 0) {\n                                            // pokud davam na prvni pozici a predelavam original prvek tak itemIndex neni\n                                            if (position === 0 && this.esForm.dynamicForm.config[j].name === configToCopy.name) {\n                                                newName = configToCopy.name + '_' + '1';\n                                                // rename actions items\n                                                for (const action of this.esForm.dynamicForm.config[j].actions) {\n                                                    for (let it = 0; it < action.items.length; it++) {\n                                                        action.items[it] = action.items[it] + '_1';\n                                                    }\n                                                }\n                                            } else {\n                                                newName = configToCopy.name + '_' + (itemIndex + 1).toString();\n                                                // rename actions items\n                                                for (const action of this.esForm.dynamicForm.config[j].actions) {\n                                                    for (let it = 0; it < action.items.length; it++) {\n                                                        action.items[it] = action.items[it]\n                                                            .slice(0, action.items[it]\n                                                                .lastIndexOf('_')) + '_' +  (itemIndex + 1).toString();\n                                                    }\n                                                }\n                                            }\n\n                                            // vytvarim novy control pak mazu stary a menim name v configu\n                                        this.esForm.form.setControl(newName, this.esForm.form.get(this.esForm.dynamicForm.config[j].name));\n                                            this.esForm.form.removeControl(this.esForm.dynamicForm.config[j].name);\n                                            this.esForm.dynamicForm.config[j].name = newName;\n                                        }\n                                    }\n                                }\n\n                                this.setCloneAction(clone, position);\n                            } else {\n                                cloneName += '_' + cnt.toString();\n                                this.setCloneAction(clone, cnt);\n                            }\n\n                            clone.name = cloneName;\n                            this.clonedItemsName.push(clone.name);\n                            // pridavam novy prvek a setuju value\n                            this.esForm.form.addControl(clone.name, this.esForm.createControl(configToCopy)); // TODO\" tady\n                            this.setNewItemValue(value, clone);\n\n                            // indexy pro vlozeni noveho prvku do config listu\n                            let indexToAdd;\n                            let indexToAddForConfig;\n\n                            if (position && position <= this.config.value) {\n                                indexToAdd = (copyButtonIndex - (this.config.value * ac.items.length))\n                                    + (position * ac.items.length) + index;\n                                indexToAddForConfig =\n                                    (cpBtnIndexForConfig - (this.config.value * ac.items.length)) + (position * ac.items.length) + index;\n                            } else {\n                                indexToAdd = copyButtonIndex + index;\n                                indexToAddForConfig = cpBtnIndexForConfig + index;\n                            }\n\n                            // vkladam do poli na spravne indexy\n                            this.esForm.tmpGroups[copyButtonGroupIndex].controls.splice(indexToAdd, 0, clone);\n                            this.esForm.dynamicForm.config.splice(indexToAddForConfig, 0 , clone);\n\n                            // pokud kopiruji vic prvku tak setuju delete button jen na ten prvni a ten smaze i ostani zkopirovane\n                            if (firstCopyItem === undefined) {\n                                firstCopyItem = clone;\n                                // todo kontrolovat typ (jen ty ktery jdou focusnout)\n                                clone.focused = true;\n                                firstCopyItem.dButton = {\n                                    display: true,\n                                };\n                            }\n                        }\n                    }\n                });\n            }\n        }\n\n        this.esForm.createGroups();\n\n\n        this.config.value++;\n        this.esForm.form.controls[this.config.name].setValue(this.config.value);\n\n        if (this.config.value >= this.max) {\n            this.esForm.setDisplay(this.config.name, false);\n        }\n\n        return this.clonedItemsName;\n    }\n\n    cloneFieldConfig(config: EsFormFieldConfig): EsFormFieldConfig {\n        return {\n            ...config,\n            value: Array.isArray(config.value)\n                ? [...config.value]\n                : typeof config.value === 'object' && config.value !== null\n                    ? { ...config.value }\n                    : config.value,\n\n            actions: config.actions?.map(a => ({\n                ...a,\n                value: Array.isArray(a.value)\n                    ? [...a.value]\n                    : a.value,\n                items: a.items ? [...a.items] : undefined,\n            })),\n\n            options: config.options?.map(o => ({ ...o })),\n\n            optGroups: config.optGroups?.map(g => ({\n                ...g,\n                options: g.options.map(o => ({ ...o })),\n            })),\n\n            validation: config.validation?.map(v => ({ ...v })),\n\n            children: config.children?.map(this.cloneFieldConfig),\n        };\n    }\n\n\n    setCloneAction(clone, index) {\n        for (const action of clone.actions) {\n            for (let it = 0; it < action.items.length; it++) {\n                action.items[it] = action.items[it].slice(0, action.items[it].lastIndexOf('_')) + '_' + index.toString();\n            }\n        }\n    }\n\n    onClick(event) {\n        event.preventDefault();\n        event.stopPropagation();\n        this.addItem();\n        this.esForm.copyBtnAdd.next(this.config);\n        this.cd.markForCheck();\n    }\n\n    setNewItemValue(value, clone) {\n        if (value !== undefined) {\n            this.esForm.form.get(clone.name).setValue(value);\n            clone.value = value;\n        } else if (clone.type === 'slider-range') {\n            const defaultValue: string = clone.attr?.['defaultValue'] ?? '';\n            const min = clone.attr?.['min'] ?? 0;\n            const max = clone.attr?.['max'] ?? 100;\n            let val: number[];\n            const splitValue = defaultValue.split(',');\n            if (splitValue.length === 2) {\n                val = [parseFloat(splitValue[0]), parseFloat(splitValue[1])];\n            } else {\n                const diff = Math.floor((max - min) / 3);\n                val = [min + diff, max - diff];\n            }\n            this.esForm.form.get(clone.name).setValue(val);\n            clone.value = val;\n        } else {\n            const emptyValue = clone.multiple ? [] : '';\n            this.esForm.form.get(clone.name).setValue(emptyValue);\n            clone.value = emptyValue;\n        }\n    }\n\n    setDeleteButtonsVisibility() {\n        for (const ac of this.config.actions) {\n            if (ac.action === EsFormActionType.COPY) {\n                let itemIndexForDelete;\n                ac.items.forEach((item, index) => {\n                    if (itemIndexForDelete === undefined) {\n                        if (this.esForm.getFieldConfig(item).type !== 'hidden' && this.esForm.getFieldConfig(item).type !== 'group') {\n                            itemIndexForDelete = index;\n                        }\n                    }\n                });\n                this.esForm.dynamicForm.config.forEach(conf => {\n                    if (conf.name.includes(ac.items[itemIndexForDelete]) && this.config.value >= this.min && conf.dButton) {\n                        // po pridani je kopii vic nez min => delete button musi byt zase videt\n                        conf.dButton.display = true;\n                    }\n                });\n            }\n        }\n    }\n\n    getCloneCount(cloneName: string) {\n        let cnt = 0;\n        for (const config of this.esForm.dynamicForm.config) {\n            if (config.name.includes(cloneName)) {\n                cnt++;\n            }\n        }\n        return cnt;\n    }\n}\n","export class AjaxParams {\n    static SEARCH_VALUE = 'q';\n    static PAGE_LIMIT = 'page_limit';\n    static PAGE = 'page';\n    static FORM_ID = 'form_id';\n}","import {Injectable} from '@angular/core';\nimport {EsFormFieldConfig} from './model/es-config.interface';\nimport {EsFormFieldError} from './model/es-field-error.interface';\nimport {EsForm} from './model/es-form.interface';\nimport {EsFormFlags} from './model/es-flags.interface';\nimport {EsFormAction} from './model/es-form-action.interface';\nimport {EsFormFieldOption} from './model/es-field-option.interface';\nimport {Observable, Subject} from 'rxjs';\nimport {HttpService} from '@eurosat/http';\nimport {filter, map} from 'rxjs/operators';\nimport {IEsFormComponent} from './container/es-form.interface';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class EsFormService {\n    private createdFormInstance$ = new Subject<IEsFormComponent>();\n    private successFormInstance$ = new Subject<IEsFormComponent>();\n    private errorFormInstance$   = new Subject<IEsFormComponent>();\n    askForAjaxOptions = new Subject<FormData>();\n    getAjaxOptions = new Subject<void>();\n\n    constructor(private http: HttpService) { }\n\n    static fromJson(json: {}, url: string): EsForm {\n\n        const formConfig: EsFormFieldConfig[] = [];\n        let copyControl: EsFormFieldConfig = null;\n        let dateRangeControls: EsFormFieldConfig[] = null;\n        for (const controlArray of json['controls']) {\n            if (copyControl !== null) {\n                // jen otoci poradi control.type === 'copy-button' da nakonec\n                formConfig.push(copyControl);\n                copyControl = null;\n            }\n            if (dateRangeControls !== null && dateRangeControls.length === 3) {\n                const dateRangeControl = dateRangeControls[0];\n                dateRangeControl.children = [];\n                dateRangeControl.children.push(dateRangeControls[1]);\n                dateRangeControl.children.push(dateRangeControls[2]);\n                formConfig.push(dateRangeControl);\n                dateRangeControls = null;\n            }\n            for (const control of controlArray) {\n\n                const formField: EsFormFieldConfig = {\n                    type: control['type'],\n                    label: control['label'],\n                    name: control['name'],\n                    value: control['value'],\n                    display: control['display'],\n                    focused: false,\n                };\n\n                // Nahrazeni puvodniho date pickeru\n                if (formField.type === 'date-time-picker') {\n                    formField.type = 'flat-pickr';\n                }\n                // Nahrazeni puvodniho date pickeru\n                if (formField.type === 'date-range-angular') {\n                    formField.type = 'flat-pickr-range';\n                }\n\n                // fix string value pro select-button\n                if (formField.type === 'select-button') {\n                    if (formField.value === null) {\n                        formField.value = '';\n                    } else  {\n                        formField.value = formField.value.toString();\n                    }\n                }\n\n                if (formField.type === 'copy-button') {\n                    formField.value = parseInt(formField.value, 10);\n                }\n\n                // multiple\n                formField.multiple = formField.type === 'multi-select';\n\n                // options\n                if (typeof control['options'] !== 'undefined') {\n                    let options: EsFormFieldOption[] = [];\n                    let optGroups = [];\n\n                    if (control['attr'] && control['attr']['sortOpt']) {\n                        if (control['attr']['sortDir'] === 'ASC') {\n                            control['options'].sort((a, b) =>\n                                a['ord'] - b['ord']\n                            );\n                        } else {\n                            control['options'].sort((a, b) =>\n                                b['ord'] - a['ord']\n                            );\n                        }\n                    }\n\n                    if (control['attr']['select-image']) { // Server indikuje, zda se jedna o select image\n                        formField.type = 'select-image';\n                    }\n\n                    // Nove ze serveru chodi data, ktera primo odpovidaji strukture potrebne k fungovani selectu\n                    if (control['attr']['optionType'] && control['attr']['optionType'] === 'raw') {\n                        options = control['options'];\n                    } else if (control['attr']['optionType'] && control['attr']['optionType'] === 'rawOptGroup') {\n                        optGroups = control['options'];\n                    } else { // Puvodni zpusob transpormace dat\n                        for (const key in control['options']) {\n                            if (control['options'].hasOwnProperty(key)) {\n                                // name: string => classic options\n                                if (typeof control['options'][key] === 'string') {\n                                    options.push({value: key, name: control['options'][key]});\n                                }\n\n                                // name: object => optGroups || select-image ... todo refactor logika detekce typu options asi na serveru ?\n                                if (typeof control['options'][key] === 'object') {\n                                    if (formField.type === 'check-list') {\n                                        options.push(control['options'][key]);\n                                    } else if (formField.type === 'select-button') {\n                                        // normalni options + name[data-icon-name]\n                                        options.push({value: key, name: control['options'][key]});\n                                    } else {\n                                        // select-image\n                                        if (control['options'][key] && control['options'][key].hasOwnProperty('data-icon-src')) {\n                                            formField.type = 'select-image';\n                                            options.push({value: key, name: control['options'][key]});\n                                        } else if (control['options'][key] && control['options'][key].hasOwnProperty('ord')) {\n                                            options.push({\n                                                value: control['options'][key]['value'].toString(),\n                                                name: control['options'][key]['label']\n                                            });\n                                        } else { // optgroup\n                                            const grpOptions = [];\n                                            for (const optKey in control['options'][key]) {\n                                                if (control['options'][key].hasOwnProperty(optKey)) {\n                                                    grpOptions.push({value: optKey, name: control['options'][key][optKey]});\n                                                    // optGroups + select-image\n                                                    if (typeof control['options'][key][optKey] === 'object') {\n                                                        if (control['options'][key][optKey].hasOwnProperty('data-icon-src')) {\n                                                            formField.type = 'select-image';\n                                                        }\n                                                    }\n                                                }\n                                            }\n                                            // fix optGroups + value @number => toString()\n                                            if (typeof formField.value === 'number') {\n                                                formField.value = formField.value.toString();\n                                            }\n                                            optGroups.push({label: key, disabled: false, options: grpOptions});\n                                        }\n                                    }\n                                }\n                            }\n                        }\n                    }\n                    formField.options = options;\n                    if (optGroups.length > 0) {\n                        formField.optGroups = optGroups;\n                    }\n                }\n\n                // attr\n                if (typeof control['attr'] !== 'undefined') {\n                    formField.attr = control['attr'];\n\n                    // specials\n                    const attrs = [];\n                    for (const key in control['attr']) {\n                        if (control['attr'].hasOwnProperty(key)) {\n                            attrs.push({key: key, value: control['attr'][key]});\n                        }\n                    }\n                    attrs.forEach(attr => {\n                        if (attr.key === 'disabled' && attr.value === 'disabled') {\n                            formField.disabled = true;\n                        }\n\n                        // todo attr mask, decimal, integer\n                        if (attr.key === 'mask' && attr.value === 'decimal') {\n                            formField.type = 'number';\n                        }\n                        if (attr.key === 'mask' && attr.value === 'integer') {\n                            formField.type = 'number';\n                        }\n                        if (attr.key === 'mask' && attr.value === 'email') {\n                            formField.type = 'email';\n                        }\n\n                        if (attr.key === 'ajaxOptions') {\n                            formField.type = 'ajax-select';\n                        }\n\n                        if (attr.key === 'autocomplete') {\n                            formField.type = 'autocomplete';\n                        }\n                        if (attr.key === 'autofocus') {\n                            formField.focused = true;\n                        }\n                    });\n                }\n\n                // action\n                const actions = [];\n                if (typeof control['actions'] !== 'undefined') {\n                    for (const actionJson of control['actions']) {\n                        const option: EsFormAction = {action: '', value: [], items: []};\n\n                        for (const prop in actionJson) {\n                            if (actionJson.hasOwnProperty(prop)) {\n                                if (prop === 'action') {\n                                    option.action = actionJson[prop];\n                                }\n                                if (prop === 'value') {\n                                    option.value = actionJson[prop];\n                                }\n                                if (prop === 'items') {\n                                    option.items = actionJson[prop];\n                                }\n                            }\n                        }\n                        actions.push(option);\n                    }\n                    formField.actions = actions;\n                }\n\n                // help\n                const help = {id: 0, message: '', url: ''};\n                if (typeof control['help'] !== 'undefined' && control['help'].length > 0) {\n                    help.id = control['help'][0];\n                    help.message = control['help'][1];\n                    help.url = control['help'][2];\n                    formField.help = help;\n                }\n\n                // confirmMessage\n                if (typeof control['confirmMessage'] !== 'undefined' && control['confirmMessage'] !== '') {\n                    formField.confirmMessage = control['confirmMessage'];\n                }\n\n                // validation\n                const validations = [];\n                if (typeof control['validation'] !== 'undefined') {\n                    for (const validationJson of control['validation']) {\n                        const validation: EsFormFieldError = {name: '', message: '', value: '', rules: ['touched']};\n\n                        for (const prop in validationJson) {\n                            if (validationJson.hasOwnProperty(prop)) {\n                                if (prop === 'type') {\n                                    // \"type\":\"required\",\n                                    // \"type\":\"select-option\",\n                                    /**\n                                     * nerefaktorovat na Validators.required ...\n                                     * potrebujeme ty stringovy klice pro detekci a vyrobu error message na formularovem prvku\n                                     * Validators.minLength(4) => .hasError('minlength')\n                                     * <mat-hint *ngIf=\"group.get(config.name).hasError('required')\n                                     * && group.get(config.name).touched\">Nesmí být prázdný</mat-hint>\n                                     */\n                                    const nameJson = validationJson[prop];\n                                    let name = '';\n                                    const rules = [];\n                                    switch (nameJson) {\n                                        case 'required':\n                                            name = 'required';\n\n                                            // todo rozhodnout kdy nasetovat .required na prvku\n                                            formField.required = true;\n                                            break;\n\n                                        // todo dodelat dalsi type\n                                        case 'minlength......':\n                                            name = 'minlength';\n                                            // tady minlength zadat i value: '4' => Validators.minLength(4)\n                                            break;\n                                        case 'email':\n                                            name = 'email';\n                                            break;\n                                        case 'upload-extension':\n                                            name = 'upload-extension';\n                                            rules.push('invalid');\n                                            break;\n\n                                        case 'upload-size':\n                                            name = 'upload-size';\n                                            rules.push('invalid');\n                                            break;\n                                    }\n                                    validation.name = name;\n                                    if (name === '' && nameJson !== '') {\n                                        validation.name = nameJson;\n                                    }\n                                    if (rules.length > 0) {\n                                        validation.rules = rules;\n                                    }\n                                }\n                                if (prop === 'params') {\n                                    // \"params\":[\"\",true],\n                                    validation.value = validationJson[prop];\n                                }\n                                if (prop === 'message') {\n                                    // \"message\":\"Select input mus\\u00ed b\\u00fdt platn\\u00e1 volba v\\u00fdb\\u011bru\"\n                                    validation.message = validationJson[prop];\n\n                                    // name: string,       // required, minlength ...\n                                    // message: string,\n                                    // value?: string,     // for minlength etc ...\n                                    // rules: string[],\n\n                                }\n                            }\n                        }\n                        validations.push(validation);\n\n                    }\n                    formField.validation = validations;\n\n                }\n\n                // width (160 je server default)\n                if (typeof control['width'] !== 'undefined' && control['width'] !== 160) {\n                    formField.width = control['width'];\n                }\n\n                // height\n                if (typeof control['height'] !== 'undefined') {\n                    formField.height = control['height'];\n                }\n\n\n                if (control.type === 'copy-button') {\n                    copyControl = formField;\n                } else if (control.type === 'date-range-angular' || control.type === 'flat-pickr-range') {\n                    dateRangeControls = [];\n                    dateRangeControls.push(formField);\n                } else if (dateRangeControls !== null && dateRangeControls.length < 3) {\n                    dateRangeControls.push(formField);\n                } else {\n                    formConfig.push(formField);\n                }\n            }\n\n\n        }\n        // flags\n        const flags: EsFormFlags = {sent: json['flags'].sent, update: json['flags'].update};\n\n        // columns\n        const columns: number = json['columns'];\n\n        // form id\n        const id: number = json['id'];\n\n        // return EsForm\n        return {config: formConfig, flags: flags, url: url, columns: columns, id: id};\n\n\n    }\n\n    getDynamicForm(formUrl: string, params = null, postParams = null): Observable<EsForm>  {\n        return this.http.post(formUrl, postParams, {params})\n            .pipe(\n                map(json => {\n                    return EsFormService.fromJson(json, formUrl);\n                })\n            );\n    }\n\n    dynamicFormCreated(ci) {\n        this.createdFormInstance$.next(ci);\n    }\n\n    onDynamicFormCreate(formId: number): Observable<IEsFormComponent> {\n        return this.createdFormInstance$.asObservable()\n            .pipe(\n                filter(component => {\n                    return (component.dynamicForm.id === formId);\n                })\n            );\n\n    }\n\n    dynamicFormSuccess(ci) {\n        this.successFormInstance$.next(ci);\n    }\n\n    onDynamicFormSuccess(formId: number): Observable<IEsFormComponent> {\n        return this.successFormInstance$.asObservable()\n            .pipe(\n                filter(component => {\n                    return (component.dynamicForm.id === formId);\n                })\n            );\n    }\n\n    dynamicFormError(ci) {\n        this.errorFormInstance$.next(ci);\n    }\n\n    onDynamicFormError(formId: number): Observable<IEsFormComponent> {\n        return this.errorFormInstance$.asObservable()\n            .pipe(\n                filter(component => {\n                    return (component.dynamicForm.id === formId);\n                })\n            );\n    }\n\n    httpPost(url, formData, options) {\n        return this.http.post(url, formData, options);\n    }\n}\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy, ChangeDetectorRef,\n    Component, OnInit, ViewChild\n} from '@angular/core';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\nimport {TranslateService, TranslatePipe} from '@ngx-translate/core';\nimport {MatSelect} from '@angular/material/select';\nimport {EsFormFieldOption} from '../../model/es-field-option.interface';\nimport {HttpService} from '@eurosat/http';\nimport {debounceTime, distinctUntilChanged} from 'rxjs/operators';\nimport {EsFormTranslates} from '../../model/es-form.translates';\nimport {EsFormService} from '../../es-form.service';\nimport {AjaxParams} from '../../model/es-ajax-select.params';\nimport {BreakpointObserver, Breakpoints, BreakpointState} from '@angular/cdk/layout';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NgClass} from '@angular/common';\nimport {MatFormField, MatError} from '@angular/material/form-field';\nimport {MatOption, MatOptgroup} from '@angular/material/core';\nimport {NgxMatSelectSearchModule} from 'ngx-mat-select-search';\nimport {MatButton} from '@angular/material/button';\nimport {FormHelpComponent} from '../form-help/form-help.component';\nimport {FormButtonDeleteComponent} from '../form-button-delete/form-button-delete.component';\n\n@Component({\n    selector: 'es-form-select',\n    styleUrls: ['form-select-ajax.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div [ngClass]=\"config.display ? 'display-true' : 'display-false'\"\n             class=\"dynamic-field form-select form-container\"\n             [formGroup]=\"group\">\n            <mat-form-field>\n                <mat-select #matSelect\n                            [required]=\"config.required\"\n                            [multiple]=\"config.multiple\"\n                            [formControlName]=\"config.name\"\n                            [placeholder]=\"config.label\"\n                            [panelClass]=\"classes\">\n                    <mat-option>\n                        <ngx-mat-select-search #search\n                           [formControl]=\"_search\"\n                           [disableInitialFocus]=\"isMobile\"\n                           placeholderLabel=\"{{translates.SEARCH | translate}}...\"\n                           [noEntriesFoundLabel]=\"notFoundLabel\"></ngx-mat-select-search>\n                    </mat-option>\n\n                    @if (config.optGroups) {\n\n                        @if ((!config.required && !config.multiple) || config.multiple) {\n                            <mat-option disabled=\"disabled\" class=\"clear-option\">\n                                <button mat-button\n                                        (click)=\"deselectAll(matSelect); closeIfSingle();\">\n                                    {{translates.CANCEL_SELECTION | translate}}\n                                </button>\n                            </mat-option>\n                        }\n                        @for (group of config.optGroups; track group.label) {\n                            <mat-optgroup (click)=\"onOptGroupClicked(group)\"\n                                          [label]=\"group.label\"\n                                          [disabled]=\"group.disabled\">\n                            @for (option of group.options; track option.value) {\n                                <mat-option [value]=\"option.value\"\n                                            (click)=\"onOptionClicked($event)\"\n                                            [disabled]=\"option.disabled\">\n                                    {{option.name}}\n                                </mat-option>\n                            }\n                            </mat-optgroup>\n                        }\n                    }\n                    @if (!config.optGroups) {\n                        @if ((!config.required && !config.multiple) || config.multiple) {\n                            <mat-option disabled=\"disabled\" class=\"clear-option\">\n                                <button mat-button\n                                        (click)=\"deselectAll(matSelect); closeIfSingle();\">\n                                    {{translates.CANCEL_SELECTION | translate}}\n                                </button>\n                            </mat-option>\n                        }\n                        @for (option of config.options; track option.value) {\n                            <mat-option (click)=\"onSelected(option.value)\"\n                                        [value]=\"option.value\"\n                                        [disabled]=\"option.disabled\">\n                            {{option.name}}\n                            </mat-option>\n                        }\n                    }\n                </mat-select>\n                <mat-error>\n                    @for (msg of activeErrorMessages; track msg) {\n                        <span class=\"error-line\">{{ msg }}</span>\n                    }\n                </mat-error>\n            </mat-form-field>\n            @if (config.help) {\n                <es-form-help [help]=\"config.help\" [label]=\"config.label\" [fc]=\"esForm\"></es-form-help>\n            }\n            @if (config.dButton?.display) {\n                <form-button-delete [config]=\"config\"\n                                    [configList]=\"configList\"\n                                    [group]=\"group\"\n                                    [_fc]=\"esForm\">\n                </form-button-delete>\n            }\n        </div>\n\n    `,\n    standalone: true,\n    imports: [\n        NgClass,\n        ReactiveFormsModule,\n        MatFormField,\n        MatSelect,\n        MatOption,\n        NgxMatSelectSearchModule,\n        MatButton,\n        MatOptgroup,\n        MatError,\n        FormHelpComponent,\n        FormButtonDeleteComponent,\n        TranslatePipe,\n    ],\n})\nexport class FormSelectAjaxComponent extends EsFieldBase implements OnInit, AfterViewInit {\n    classes: {[index: string]: boolean } = {};\n    selectOpened = false;\n    canDownload = true;\n    selectedOptions: EsFormFieldOption[] = [];\n    defaultOptions: EsFormFieldOption[]  = [];\n    selectedOption: EsFormFieldOption = null;\n\n    _search: FormControl = new FormControl();\n    ajaxConfig: {\n        formId?: number,\n        url: string,\n        minSearchLength: number,\n        pageLimit: number,\n        page: number,\n    };\n    translates = EsFormTranslates;\n    notFoundLabel = '';\n    isMobile = false;\n\n    @ViewChild(MatSelect, {static: false}) matSelect: MatSelect;\n\n    constructor(\n        private http: HttpService,\n        private translate: TranslateService,\n        cd: ChangeDetectorRef,\n        private esFormService: EsFormService,\n        private breakpointObserver: BreakpointObserver\n    ) {\n        super(cd);\n        this.breakpointObserver\n            .observe([Breakpoints.XSmall, Breakpoints.Small])\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((state: BreakpointState) => {\n                this.isMobile = state.matches;\n                this.cd.markForCheck();\n            });\n    }\n\n    ngOnInit() {\n        this.notFoundLabel = this.translate.instant(this.translates.NO_OPTIONS_FOUND);\n        if (this.esForm.simpleForm) {\n            // musi se na mat-select prebit ta defaultni max-width: 280px;\n            // na parentovi pokud neni tak ani to menu s optionama se neda pretizit max-width\n            this.classes['menu-max-width-none'] = true;\n        }\n        if (this.config.multiple && this.config.optGroups) {\n            this.classes['pointer'] = true;\n        }\n        if (this.config.actions.length > 0) {\n            this.onSelected(this.config.value);\n        }\n\n        this.ajaxConfig = {\n            url: this.config.attr['ajaxOptions'][0],\n            minSearchLength: this.config.attr['ajaxOptions'][1],\n            pageLimit: this.config.attr['ajaxOptions'][2],\n            page: 1,\n            formId: this.config.attr['ajaxOptions'][3],\n        };\n\n        // pomocne pole, kde si drzime options i pri zmenach ajax options\n        // v initu naplnit z config.options\n        this.selectedOptions = [].concat(this.config.options);\n\n        // prvni nacteni q = '' server by mel poslat default ajax options\n        this.getOptionsAjax();\n\n        // zmeny hledaciho inputu\n        this._search.valueChanges\n            .pipe(debounceTime(300))\n            .pipe(distinctUntilChanged())\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe(() => {\n                this.onSearch();\n            });\n    }\n\n    ngAfterViewInit(): void {\n        // otevreny/zavreny overlay menu options\n        this.matSelect.openedChange.subscribe(opened => {\n            this.selectOpened = opened;\n            if (opened) {\n                this.onMatSelectOpened();\n            }\n            if (!opened) {\n                this.onMatSelectClosed();\n            }\n        });\n\n        // zmeny value => bkp selectedOptions\n        this.matSelect.valueChange.subscribe(values => {\n            this.selectedOptions = [];\n            if (this.config.multiple) {\n                values.forEach(val => {\n                    this.selectedOptsPush(val);\n                });\n            } else {\n                this.selectedOptsPush(values);\n            }\n        });\n    }\n\n    onMatSelectOpened() {\n        this.registerPanelScrollEvent();\n    }\n\n    onMatSelectClosed() {\n        this.ajaxConfig.page = 1;\n        this._search.setValue('');\n\n        // no options => get default options\n        if (this.config.options.length === 0) {\n            this.getOptionsAjax();\n        }\n\n        // po zavreni seradit selected options nahoru\n        // const bkpOpts = [...this.config.options];\n        const bkpOpts = [...this.defaultOptions];\n        this.config.options = [].concat(this.selectedOptions);\n        for (const bOpt of bkpOpts) {\n            let found = false;\n            for (const sOpt of this.selectedOptions) {\n                if (sOpt.value === bOpt.value) {\n                    found = true;\n                    break;\n                }\n            }\n            if (!found) {\n                this.config.options.push(bOpt);\n            }\n        }\n    }\n\n    selectedOptsPush(value) {\n        this.config.options.forEach(opt => {\n            if (opt.value === value) {\n                const sOpt: EsFormFieldOption = {name: '', value: ''};\n                sOpt['name']                = opt.name;\n                sOpt['value']               = opt.value;\n                if (opt.disabled) { sOpt['disabled'] = opt.disabled; }\n                if (opt.selected) { sOpt['selected'] = opt.selected; }\n                this.selectedOptions.push(sOpt);\n            }\n        });\n    }\n\n    registerPanelScrollEvent() {\n        const panel = this.matSelect.panel.nativeElement;\n        panel.addEventListener('scroll', event => this.loadOptionsOnScroll(event));\n    }\n\n    loadOptionsOnScroll(event) {\n        // tolerance 1px - pri zoomu / zlomkovych px se rozdil presne nerovna clientHeight\n        const target = event.target;\n        if (target.scrollHeight - target.scrollTop - target.clientHeight <= 1 && this.canDownload) {\n            this.ajaxConfig.page ++;\n            this.getOptionsAjax();\n        }\n    }\n\n    onOptGroupClicked(group: { label: string; disabled: boolean; options: EsFormFieldOption[] }) {\n        if (!this.config.multiple) {\n            return;\n        } else {\n            let selectedOpts = [];\n            if (this.group.get(this.config.name).value) {\n                selectedOpts = this.group.get(this.config.name).value;\n            }\n            let allSelected = true;\n            group.options.forEach(opt => {\n                let isThere = false;\n                selectedOpts.forEach(sOpt => {\n                    if (opt.value === sOpt) { isThere = true; }\n                });\n                if (!isThere) { allSelected = false; }\n            });\n\n\n            if (allSelected) {\n                group.options.forEach(opt => {\n                    selectedOpts.splice(selectedOpts.indexOf(opt.value), 1);\n                });\n            } else {\n                group.options.forEach(opt => {\n                    let isThere = false;\n                    selectedOpts.forEach(sOpt => {\n                        if (opt.value === sOpt) { isThere = true; }\n                    });\n                    if (!isThere) {\n                        selectedOpts.push(opt.value);\n                    }\n                });\n            }\n\n            this.group.get(this.config.name).setValue(selectedOpts);\n        }\n    }\n\n    onSelected(selValue) {\n        this.dynamicField.applyActionOnValueChange(selValue);\n    }\n\n    onOptionClicked($event) {\n        $event.stopPropagation();\n        $event.preventDefault();\n    }\n\n    onSearch() {\n        this.ajaxConfig.page = 1;\n        if (this.matSelect.panel) {\n            this.matSelect.panel.nativeElement.scrollTop = 0;\n        }\n\n        if (this._search.value.length >= this.ajaxConfig.minSearchLength) {\n            // test remove + bkp 1.st option\n            if (this.selectedOption === null) {\n                this.selectedOption = this.selectedOptions[0];\n                this.selectedOptions.splice(0, 1);\n            }\n\n            this.notFoundLabel = '';\n            this.getOptionsAjax();\n        } else if (this._search.value === '' && this.selectOpened) {\n            // restore 1.st option\n            if (this.selectedOption !== null && this.selectedOption !== undefined) {\n                this.selectedOptions.splice(0, 0, this.selectedOption);\n                this.selectedOption = null;\n            }\n\n            this.getOptionsAjax();\n        } else if (this.selectOpened) {\n            this.config.options = [];\n            this.notFoundLabel  = this.translate.instant(this.translates.MINIMUM_CHARACTERS) + ' (' + this.ajaxConfig.minSearchLength + ')';\n            this.canDownload = false;   // musi byt, zarazi scroll event getOptionsAjax()\n        }\n        // else if (this._search.value == '' && !this.selectOpened) {\n        //     // takto resetuje search.value pri zavreni panelu\n        //     // ale ja ho chci presto zachovat\n        //     this._search.setValue(this._searchValBkp);\n        //     // console.log('????????');\n        //     // console.log('this._searchValBkp',this._searchValBkp);\n        //     // console.log('this._search.value',this._search.value);\n        // }\n    }\n\n    getOptionsAjax() {\n\n        let q = '';\n        if (this._search.value) { q = this._search.value; }\n\n        // set formData\n        const formData: FormData = new FormData();\n        formData.append(AjaxParams.SEARCH_VALUE, q);\n        formData.append(AjaxParams.PAGE_LIMIT, this.ajaxConfig.pageLimit.toString());\n        formData.append(AjaxParams.PAGE, this.ajaxConfig.page.toString());\n        if (this.ajaxConfig.formId) {\n            formData.append(AjaxParams.FORM_ID, this.ajaxConfig.formId.toString());\n        }\n\n        this.canDownload = false;\n        if (this.ajaxConfig.url !== '') {\n            this.http.post(this.ajaxConfig.url, formData).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(res => {\n                this.afterOptionsDownloaded(res);\n            });\n        } else {\n            this.esFormService.askForAjaxOptions.next(formData);\n            this.esFormService.getAjaxOptions.subscribe(res => {\n               this.afterOptionsDownloaded(res);\n            });\n        }\n    }\n\n    afterOptionsDownloaded(res) {\n        if (typeof res === 'object') {\n            if (this.ajaxConfig.page === 1) {\n                // this.ajaxConfig.pageLimit = Math.ceil(res.length / 3 / 3); // ze servru chodi vzdycky trojnasobek options ??\n                this.config.options = [].concat(this.selectedOptions);\n            }\n            let someData = false;\n            for (const key in res) {\n                if (res.hasOwnProperty(key)) {\n                    someData = true;\n                    let found = false;\n                    this.config.options.forEach( opt => {\n                        if (opt.value === res[key]['id']) {\n                            found = true;\n                        }\n                    });\n\n                    if (!found) {\n                        this.config.options.push({name: res[key]['text'], value: res[key]['id']});\n                    }\n                }\n            }\n\n            // kontrola duplicitni options\n            // console.log(this.config.options);\n            // this.config.options.forEach((opt, optIndex)=> {\n            //     this.config.options.forEach((o, oIndex) => {\n            //        if (opt.value == o.value && optIndex != oIndex) {\n            //            console.log('opak', opt);\n            //        }\n            //     });\n            // });\n\n\n            if (!someData) {\n                this.notFoundLabel = this.translate.instant(this.translates.NO_OPTIONS_FOUND);\n            }\n\n            // stop downloading next options if last request empty\n            if (res.length > 0) {\n                this.canDownload = true;\n            }\n\n            // save defaultOptions\n            if (this.defaultOptions.length === 0 && this.config.options.length > 0) {\n                this.defaultOptions = [].concat(this.config.options);\n            }\n        }\n        this.cd.markForCheck();\n    }\n    deselectAll(select: MatSelect) {\n        select.writeValue([]);\n        this.group.controls[this.config.name].setValue('');\n        const selValue = this.config.multiple ? [] : '';\n        this.onSelected(selValue);\n    }\n\n    closeIfSingle() {\n        if (!this.config.multiple) {\n            this.matSelect.close();\n        }\n    }\n}\n","import {AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit, ViewChild} from '@angular/core';\nimport {NouiFormatter, NouisliderComponent} from 'ng2-nouislider';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {NgClass} from '@angular/common';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {MatError} from '@angular/material/form-field';\nimport {FormHelpComponent} from '../form-help/form-help.component';\nimport {FormButtonDeleteComponent} from '../form-button-delete/form-button-delete.component';\n\nexport class CustomFormatter implements NouiFormatter {\n    prefix: string;\n    suffix: string;\n    format: string;\n\n    constructor(suffix = null, prefix = null, format: string) {\n        this.prefix = prefix;\n        this.suffix = suffix;\n        this.format = format;\n    }\n\n    from(value: string): number {\n        return parseInt(value, null);\n    }\n\n    to(value: number): string {\n        let ret = Math.round(value).toString(); // todo option na kolik des. míst\n        if (this.format === 'time') {\n            const h = Math.floor(value / 60);\n            const m = Math.floor(value % 60);\n            ret = h.toString() + 'h ' + m.toString() + 'm';\n        } else if (this.format === 'normal') {\n            if (this.prefix) {\n                ret = this.prefix + ' ' + ret;\n            }\n            if (this.suffix) {\n                ret += ' ' + this.suffix;\n            }\n        }\n        return ret;\n    }\n}\n\n// TODO: zkontrolovat funkcionalitu\n@Component({\n    selector: 'form-slider',\n    styleUrls: ['form-slider.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        @if (config.display) {\n            <div class=\"mat-custom-label form-slider-label\">{{config.label}} {{sliderSuffix? sliderSuffix:null}}</div>\n        }\n        <div [ngClass]=\"config.display ? 'display-true' : 'display-false'\"\n             class=\"dynamic-field form-slider form-container\"\n             [formGroup]=\"group\">\n            <div class=\"mat-form-field\">\n                <nouislider #slider\n                            [config]=\"sliderConfig\"\n                            [formControlName]=\"config.name\"\n                ></nouislider>\n                <mat-error>\n                    @for (msg of activeErrorMessages; track msg) {\n                        <span class=\"error-line\">{{ msg }}</span>\n                    }\n                </mat-error>\n            </div>\n            @if (config.help) {\n                <es-form-help [help]=\"config.help\" [label]=\"config.label\" [fc]=\"esForm\"></es-form-help>\n            }\n            @if (config.dButton?.display) {\n                <form-button-delete [config]=\"config\"\n                                    [configList]=\"configList\"\n                                    [group]=\"group\"\n                                    [_fc]=\"esForm\">\n                </form-button-delete>\n            }\n        </div>\n    `,\n    standalone: true,\n    imports: [NgClass, ReactiveFormsModule, NouisliderComponent, MatError, FormHelpComponent, FormButtonDeleteComponent]\n})\nexport class FormSliderComponent extends EsFieldBase implements OnInit, AfterViewInit {\n    sliderConfig: any;\n    sliderSuffix: string;\n    sliderFormat: 'time' | 'normal' = 'normal';\n\n    // viz\n    // http://tb.github.io/ng2-nouislider/\n    // https://refreshless.com/nouislider/slider-options/\n\n    @ViewChild('slider', {static: false}) slider: NouisliderComponent;\n\n    constructor(cd: ChangeDetectorRef) {\n        super(cd);\n    }\n\n    ngOnInit() {\n        const attr = this.config.attr ?? {};\n        this.sliderFormat = attr['sliderRangeFormat'] ?? 'normal';\n\n        this.sliderConfig = {\n            behaviour: 'drag',\n            connect: this.config.type === 'slider-range',\n            step: this.config.attr['step'],\n            keyboard: true,\n            tooltips: this.getTooltips(),\n            range: {\n                min: this.config.attr['min'],\n                max: this.config.attr['max']\n            },\n            pips: {\n                mode: 'count',\n                density: this.config.attr['step'],\n                values: 11,\n                stepped: true,\n                format: {\n                    to: (value: number) => {\n                        const h = Math.floor(value / 60);\n                        return this.sliderFormat === 'time' ? h.toString() + 'h' : h.toString();\n                    },\n                    from: (value: string) => {// nepouzitelne, ztraci presnost na minuty, ale musi byt zadefinovana - nepouziva se\n                        const v = parseInt(value, 10);\n                        return this.sliderFormat === 'time' ? v * 60 : v;\n                    }\n                }\n            }\n        };\n    }\n\n    ngAfterViewInit(): void {\n        this.slider.disabled = this.config.disabled;\n    }\n\n    getTooltips() {\n        let tooltips; // todo: nouiformatter\n        const minSuffix = this.config.attr['minSuffix'] ? this.config.attr['minSuffix'] : '';\n        const maxSuffix = this.config.attr['maxSuffix'] ? this.config.attr['maxSuffix'] : '';\n        let suffix = this.config.attr['suffix'] ? this.config.attr['suffix'] : '';\n\n        // todo doresit lip pokud bude potreba\n        if (minSuffix && !suffix) {\n            suffix = minSuffix;\n        }\n        if (maxSuffix && !suffix) {\n            suffix = maxSuffix;\n        }\n\n        if (suffix || suffix === '') {\n            tooltips = [];\n            if (Array.isArray(this.config.value)) {\n                this.config.value.forEach(() => {\n                    tooltips.push(\n                        new CustomFormatter(suffix, null, this.sliderFormat)\n                    );\n                });\n            } else {\n                tooltips.push(\n                    new CustomFormatter(suffix, null, this.sliderFormat)\n                );\n            }\n            this.sliderSuffix = `(${suffix})`;\n        }\n\n        return tooltips;\n    }\n}\n","import {ChangeDetectorRef, Component, OnInit} from '@angular/core';\nimport {FormControl, Validators, ReactiveFormsModule} from '@angular/forms';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {NgClass} from '@angular/common';\nimport {NgxCaptchaModule} from 'ngx-captcha';\n\n@Component({\n    selector: 'es-form-captcha',\n    template: `\n        <div [style.display]=\"config.display ? 'inline-block' : 'initial'\"\n             [ngClass]=\"config.display ? 'display-true' : 'display-false'\"\n             class=\"dynamic-field form-captcha\"\n             [formGroup]=\"group\">\n            <ngx-recaptcha2\n                [siteKey]=\"siteKey\"\n                (success)=\"handleSuccess($event)\"\n                (expire)=\"handleExpire()\"\n                (load)=\"handleLoad()\">\n            </ngx-recaptcha2>\n\n            <input [formControlName]=\"config.name\"\n                   [id]=\"config.name\"\n                   type=\"hidden\"\n                   [placeholder]=\"'Opíšete kód'\" />\n        </div>\n    `,\n    standalone: true,\n    imports: [NgClass, ReactiveFormsModule, NgxCaptchaModule]\n})\nexport class FormCaptchaComponent extends EsFieldBase implements OnInit {\n\n    /**\n     * reCaptcha klic\n     * @see console.cloud.google.com - Fraud Defense\n     * tam se tvori klice pro aplikaci\n     * @author zapletal - pro dalsi informace kontaktuje pro prihlasovaci udaje\n     * @protected\n     */\n    protected siteKey: string;\n\n    constructor(cd: ChangeDetectorRef) {\n        super(cd);\n    }\n\n    checkView() {\n        this.cd.markForCheck();\n    }\n\n    ngOnInit() {\n        const siteKey: string = String(this.config.attr?.['siteKey']) ?? '';\n        if (siteKey.length > 0) {\n            this.siteKey = siteKey;\n        } else {\n            console.warn('Unknown captcha key');\n        }\n        if (!this.group.get(this.config.name)) {\n            this.group.addControl(this.config.name, new FormControl('', Validators.required));\n        }\n    }\n\n    handleSuccess(token: string) {\n        this.group.get(this.config.name)?.setValue(token);\n        this.group.get(this.config.name)?.markAsTouched();\n        this.cd.markForCheck();\n    }\n\n    handleExpire() {\n        this.group.get(this.config.name)?.setValue('');\n    }\n\n    handleLoad() {}\n}\n","import {Output, EventEmitter, Injectable} from '@angular/core';\n\nexport interface EventObj {\n    args: any[];\n    editor: any;\n}\n@Injectable()\nexport class Events {\n    @Output() change: EventEmitter<EventObj> = new EventEmitter();\n    @Output() beforeEnter: EventEmitter<EventObj> = new EventEmitter(false);\n    @Output() keydown: EventEmitter<EventObj> = new EventEmitter(false);\n    @Output() mousedown: EventEmitter<EventObj> = new EventEmitter(false);\n    @Output() click: EventEmitter<EventObj> = new EventEmitter(false);\n    @Output() focus: EventEmitter<EventObj> = new EventEmitter();\n    @Output() blur: EventEmitter<EventObj> = new EventEmitter();\n    @Output() paste: EventEmitter<EventObj> = new EventEmitter(false);\n    @Output() resize: EventEmitter<EventObj> = new EventEmitter();\n    @Output() beforeCommand: EventEmitter<EventObj> = new EventEmitter(false);\n    @Output() afterCommand: EventEmitter<EventObj> = new EventEmitter();\n    @Output() afterExec: EventEmitter<EventObj> = new EventEmitter();\n    @Output() afterPaste: EventEmitter<EventObj> = new EventEmitter();\n    @Output() changeSelection: EventEmitter<EventObj> = new EventEmitter();\n}\n\n\nexport const validEvents: (keyof Events)[] = [\n    'change',\n    'beforeEnter',\n    'keydown',\n    'mousedown',\n    'click',\n    'focus',\n    'blur',\n    'paste',\n    'resize',\n    'beforeCommand',\n    'afterCommand',\n    'afterExec',\n    'afterPaste',\n    'changeSelection',\n];\n","import {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    Input,\n    NgZone,\n    OnDestroy,\n    Provider,\n} from '@angular/core';\n\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {Events, validEvents} from './events';\n\ndeclare const Jodit: any;\n\nconst CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: Provider = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => JoditAngularComponent),\n    multi: true\n};\n\nconst defaultConfig = {\n    iframe: true,\n    style: {\n        fontFamily: 'Roboto, Helvetica Neue, sans-serif',\n        fontSize: '14px',\n        color: '#000000'\n    }\n};\n\n@Component({\n    selector: 'es-jodit-editor',\n    template: `<ng-template></ng-template>`,\n    styleUrls: ['./jodit-angular.component.scss'],\n    providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR],\n    standalone: true\n})\nexport class JoditAngularComponent extends Events implements AfterViewInit, OnDestroy, ControlValueAccessor {\n\n    @Input() config?: any;\n    @Input() tagName = 'textarea';\n    @Input() id: string | undefined;\n    @Input() defaultValue: string | undefined;\n    @Input() darkTheme: boolean;\n\n    element: HTMLElement;\n    editor: any;\n    style: any;\n\n    private onChangeCallback: (_: any) => {};\n    private onTouchedCallback: () => {};\n\n    constructor(private elementRef: ElementRef, private ngZone: NgZone) {\n        super();\n        this.elementRef = elementRef;\n        this.ngZone = ngZone;\n    }\n\n    createElement() {\n        const tagName = typeof this.tagName === 'string' ? this.tagName : 'textarea';\n        this.element = document.createElement(tagName);\n        if (this.element) {\n            this.element.id = this.id;\n            this.elementRef.nativeElement.appendChild(this.element);\n        }\n    }\n\n\n    get value(): string {\n        if (this.editor) {\n            return this.editor.getEditorValue();\n        } else {\n            return '';\n        }\n    }\n\n    set value(v: string) {\n        if (this.editor) {\n            this.editor.setEditorValue(v || '');\n        } else {\n            this.defaultValue = v;\n        }\n    }\n\n    ngAfterViewInit() {\n        if (!this.element) {\n            this.createElement();\n\n            // Create instance outside Angular scope\n            this.ngZone.runOutsideAngular(() => {\n                const defaultConfigVals = {...defaultConfig};\n                defaultConfigVals.style.color = this.getThemeFontColor();\n                this.editor = new Jodit(this.element, {...this.config, ...defaultConfig});\n            });\n        }\n\n        if (this.defaultValue) {\n            this.editor.value = this.defaultValue;\n        }\n\n        this.editor.events\n            .on('change', (value: string) => {\n                if (typeof this.onChangeCallback === 'function') {\n                    this.ngZone.run(() => this.onChangeCallback(value));\n                }\n            })\n            .on('blur', () => {\n                if (typeof this.onTouchedCallback === 'function') {\n                    this.ngZone.run(() => this.onTouchedCallback());\n                }\n            });\n\n\n        validEvents.forEach((eventName) => {\n            const eventEmitter: EventEmitter<any> = this[eventName];\n            if (eventEmitter.observers.length > 0) {\n                let eventNameInJodit = eventName.substring(2);\n                eventNameInJodit = eventNameInJodit.substr(0, 1).toLowerCase() + eventNameInJodit.substring(1);\n        this.editor.events.on(eventNameInJodit, this.ngZone.run(() => (...args: any[]) => eventEmitter.emit({args, editor: this.editor})));\n            }\n        });\n    }\n\n    ngOnDestroy() {\n        if (this.editor) {\n            this.editor.destruct();\n        }\n    }\n\n    writeValue(v: any): void {\n        this.value = v;\n    }\n\n    registerOnChange(fn: any): void {\n        this.onChangeCallback = fn;\n    }\n    registerOnTouched(fn: () => {}): void {\n        this.onTouchedCallback = fn;\n    }\n\n    setDisabledState(isDisabled: boolean): void {\n        this.editor.setReadOnly(isDisabled);\n    }\n\n    getThemeFontColor(): string {\n        return this.darkTheme ? '#ffffff' : '#000000';\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    OnInit,\n    ViewChild,\n} from '@angular/core';\nimport {JoditAngularComponent} from './jodit-wrapper/jodit-angular.component';\nimport {EventObj} from './jodit-wrapper/events';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {NgClass} from '@angular/common';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {MatError} from '@angular/material/form-field';\nimport {FormHelpComponent} from '../form-help/form-help.component';\nimport {FormButtonDeleteComponent} from '../form-button-delete/form-button-delete.component';\n\n@Component({\n    selector: 'es-form-jodit-wysiwyg',\n    styleUrls: ['form-wysiwyg-jodit.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div [ngClass]=\"config.display ? 'display-true' : 'display-false'\"\n             class=\"dynamic-field form-input form-container\"\n             [formGroup]=\"group\">\n            <div class=\"jodit-wrapper\"\n                 [style.width.px]=\"config.width\"\n                 [style.height.px]=\"config.height\"\n                 [style.max-width.%]=\"100\"\n                 [style.max-height.%]=\"100\"\n            >\n                @if (configReady) {\n                    <es-jodit-editor #joditCmp\n                                     [id]=\"config.name\"\n                                     [defaultValue]=\"config.value\"\n                                     [config]=\"joditConfig\"\n                                     [darkTheme]=\"darkTheme\"\n                                     (change)=\"onJoditChange($event)\"\n                    ></es-jodit-editor>\n                }\n                <mat-error>\n                    @for (msg of activeErrorMessages; track msg) {\n                        <span class=\"error-line\">{{ msg }}</span>\n                    }\n                </mat-error>\n            </div>\n            @if (config.help) {\n                <es-form-help [help]=\"config.help\" [label]=\"config.label\" [fc]=\"esForm\"></es-form-help>\n            }\n            @if (config.dButton?.display) {\n                <form-button-delete [config]=\"config\"\n                                    [configList]=\"configList\"\n                                    [group]=\"group\"\n                                    [_fc]=\"esForm\">\n                </form-button-delete>\n            }\n        </div>\n    `,\n    standalone: true,\n    imports: [\n        NgClass,\n        ReactiveFormsModule,\n        JoditAngularComponent,\n        MatError,\n        FormHelpComponent,\n        FormButtonDeleteComponent,\n    ]\n})\nexport class FormWysiwygJoditComponent extends EsFieldBase implements OnInit {\n\n    constructor(cd: ChangeDetectorRef) {\n        super(cd);\n    }\n\n    @ViewChild('joditCmp', {static: false}) joditCmp: JoditAngularComponent;\n\n    configReady = false;\n    darkTheme = false;\n    scopeStyleTags = true;\n    // todo file '|', 'image', 'file', 'video', 'table', 'link',\n    buttons = [\n        'source',\n        '|', 'bold', 'strikethrough', 'underline', 'italic',\n        '|', 'superscript', 'subscript',\n        '|', 'ul', 'ol',\n        '|', 'outdent', 'indent',\n        '|', 'font', 'fontsize', 'brush', 'paragraph',\n        '|', 'image', 'video', 'table', 'link',\n        '|', 'align', 'undo', 'redo',\n        '|', 'cut', 'hr', 'eraser', 'copyformat',\n        '|', 'symbol', 'fullsize', 'selectall', 'print'\n    ];\n\n    joditConfig = {\n        'language': 'en',\n        'buttons': this.buttons,\n        // 'height': 200,\n        'allowResizeX': false,\n        'allowResizeY': true,\n        'tabIndex': 0,\n        'toolbarSticky': false,\n        'theme': 'es',\n        'uploader': {\n            'insertImageAsBase64URI': true,\n            url: '',\n            defaultHandlerSuccess: this.defaultHandlerSuccess\n        },\n        // filebrowser: {\n        //     ajax: {\n        //         url: 'http://localhost:8181/index-test.php'\n        //     }\n        // }\n    };\n\n\n    ngOnInit(): void {\n        this.joditConfig['autofocus'] = this.config?.focused ?? false;\n\n        if (this.config?.attr?.['locale']) {\n            this.joditConfig.language = this.getSupportedLocale(this.config.attr['locale']);\n        }\n\n        if (this.config?.attr?.['data-maxfilesize']) {\n            // todo\n        }\n        if (this.config?.attr?.['data-mime']) {\n            // todo\n        }\n        if (this.config?.attr?.['clean-html'] !== undefined && !this.config?.attr?.['clean-html']) {\n            if (this.joditConfig['disablePlugins'] === undefined) {\n                this.joditConfig['disablePlugins'] = ['cleanHTML'];\n            } else {\n                this.joditConfig['disablePlugins'].push('cleanHTML');\n            }\n        }\n\n        this.joditConfig['uploader'].url = this.config?.attr?.['data-url'] ?? '';\n        this.joditConfig['uploader'].insertImageAsBase64URI = this.config?.attr?.['insertImageAsBase64URI'] ?? true;\n\n        this.joditConfig['theme'] = this.config?.attr?.['theme'] ?? 'es';\n        this.scopeStyleTags = this.config?.attr?.['scopeStyles'] ?? true;\n        this.darkTheme = this.config?.attr?.['darkTheme'] ?? false;\n\n        this.configReady = true;\n        this.cd.markForCheck();\n    }\n\n    getSupportedLocale(locale) {\n        let selected = 'en';\n        const supported = [\n            'ar',\n            'de',\n            'en',\n            'es',\n            'fr',\n            'hu',\n            'nl',\n            'pt_br',\n            'ru',\n            'zh_cn',\n            'cs_cz'\n        ];\n        supported.forEach(sloc => {\n            if (locale === sloc) {\n                selected = sloc;\n            }\n            if (locale === 'sk' || locale === 'cs') {\n                selected = 'cs_cz';\n            }\n            if (locale === 'zh') {\n                selected = 'zh_cn';\n            }\n            if (locale === 'pt-BR' || locale === 'pt') {\n                selected = 'pt_br';\n            }\n        });\n        return selected;\n    }\n\n    onJoditChange(e: any) {\n        this.config.value = (e as EventObj).args[0];\n        this.group.controls[this.config.name].setValue(this.config.value);\n        this.cd.markForCheck();\n    }\n\n    // extend/fix jodit/Uploader => elm.innerText = filename;\n    defaultHandlerSuccess(this, resp) {\n        if (resp.files && resp.files.length) {\n            resp.files.forEach((filename, index: number) => {\n                const [tagName, attr]: string[] =\n                    resp.isImages && resp.isImages[index]\n                        ? ['img', 'src']\n                        : ['a', 'href'];\n                const elm: HTMLElement = this.jodit.editorDocument.createElement(\n                    tagName\n                );\n\n                elm.setAttribute(attr, resp.baseurl + filename);\n\n                if (tagName === 'a') {\n                    elm.innerText = filename;\n                }\n\n                if (tagName === 'img') {\n                    this.jodit.selection.insertImage(elm as HTMLImageElement, null, null);\n                } else {\n                    this.jodit.selection.insertNode(elm);\n                }\n            });\n        }\n    }\n\n    removeStyleTags(content: string): string {\n        return content;\n    }\n\n    scopeStyles(content: string): string {\n        const styleMatch = new RegExp(/<\\s*style[^>]*?[^>]*?>\\s*((?:.|[\\n\\r])*?)\\s*<\\s*\\/\\s*style\\s*>\\s*/g);\n        const tagTrim = new RegExp(/<\\s*\\/?\\s*style[^>]*>/g);\n        const divWrapper = new RegExp(/<\\s*div\\s*data-style-wrap=[\"'](.*)[\"']\\s*>/);\n        if (styleMatch.test(content)) {\n            const styles = content.match(styleMatch);\n            const usedID = content.match(divWrapper)?.[1];\n            if (usedID) {\n                content = content.replace(divWrapper, '');\n                content = content.replace(/<\\s*\\/\\s*div\\s*><!--\\s*end\\s+style-wrap\\s+.*?\\s+-->/, '');\n                content = content.replace(/div\\[data-style-wrap=[\"'][a-zA-Z0-9]+[\"']]/g, '');\n            }\n            const wrapperId = usedID ? usedID : this.randomString(16);\n            let css = '';\n            for (const style of styles) {\n                css += style\n                    .replace(tagTrim, '')\n                    .replace(/\\s\\s+/g, ' ')\n                    .replace(/\\/\\*(?:.|[\\n\\r])*?\\*\\//g, '')\n                    .trim() + ' ';\n            }\n            css = css.replace(/([^{]+{[^}]*?})/g, (match, $1) => {\n                return this.prefixCssSelectors($1, `div[data-style-wrap=\"${wrapperId}\"]`) + '\\n';\n            });\n            const wrapHeader = `<div data-style-wrap=\"${wrapperId}\">`;\n            const wrapFooter = `</div><!-- end style-wrap ${wrapperId} -->`;\n            const styleless = content.replace(styleMatch, '').trim();\n            content = `${wrapHeader}\\n<style data-scope=\"${wrapperId}\">\\n${css}\\n</style>\\n${styleless}\\n${wrapFooter}`;\n        }\n        return content;\n    }\n\n    prefixCssSelectors(css: string, prefix: string): string {\n        prefix += ' ';\n\n        css = css.replace( /\\/\\*(?:(?!\\*\\/)[\\s\\S])*\\*\\/|[\\r\\n\\t]+/g, '' );\n        css = css.replace( /}(\\s*)@/g, '}@' );\n        css = css.replace( /}(\\s*)}/g, '}}' );\n\n        for (let i = 0; i < css.length - 2; i++) {\n            const char = css[i];\n            const nextChar = css[i + 1];\n            let isAt = false;\n            let isIn = false;\n            const classLen = prefix.length;\n\n            if (char === '@' && nextChar !== 'f') { isAt = true; }\n            if (!isAt && char === '{') { isIn = true; }\n            if (isIn && char === '}') { isIn = false; }\n\n            if ( !isIn && nextChar !== '@' && nextChar !== '}' && ( char === '}' || char === ',' ||\n                ((char === '{' || char === ';') && isAt))\n            ) {\n                css = css.slice(0, i + 1) + prefix + css.slice(i + 1);\n                i += classLen;\n                isAt = false;\n            }\n        }\n        if (css.indexOf(prefix) !== 0 && css.indexOf('@') !== 0) { css = prefix + css; }\n        return css;\n    }\n\n    randomString(length) {\n        const alphabet = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n        let result = '';\n        for (let i = length; i > 0; --i) {\n            result += alphabet[Math.round(Math.random() * (alphabet.length - 1))];\n        }\n        return result;\n    }\n}\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    OnInit,\n    ViewChild\n} from '@angular/core';\nimport {debounceTime, distinctUntilChanged, take} from 'rxjs/operators';\nimport {EsFormService} from '../../es-form.service';\nimport {TranslateService} from '@ngx-translate/core';\nimport {EsFormTranslates} from '../../model/es-form.translates';\nimport {AjaxParams} from '../../model/es-ajax-select.params';\nimport {MatInput} from '@angular/material/input';\nimport {MatAutocomplete, MatAutocompleteTrigger} from '@angular/material/autocomplete';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NgClass} from '@angular/common';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {MatFormField, MatError} from '@angular/material/form-field';\nimport {MatOption} from '@angular/material/core';\nimport {FormHelpComponent} from '../form-help/form-help.component';\nimport {FormButtonDeleteComponent} from '../form-button-delete/form-button-delete.component';\n\n\n@Component({\n    selector: 'form-ajax-autocomplete',\n    styleUrls: ['form-ajax-autocomplete.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div [ngClass]=\"config.display ? 'display-true' : 'display-false'\"\n             class=\"dynamic-field form-autocomplete form-container\"\n             [formGroup]=\"group\">\n            <mat-form-field>\n                <input matInput\n                       [id]=\"config.name\"\n                       [matAutocomplete]=\"auto\"\n                       [required]=\"config.required\"\n                       [formControlName]=\"config.name\"\n                       [placeholder]=\"config.label\">\n                <mat-error>\n                    @for (msg of activeErrorMessages; track msg) {\n                        <span class=\"error-line\">{{ msg }}</span>\n                    }\n                </mat-error>\n            </mat-form-field>\n            <mat-autocomplete #auto=\"matAutocomplete\"\n                              (opened)=\"onPanelOpened()\"\n                              (optionSelected)=\"onOptionSelected()\"\n            >\n                @for (option of config.options; track option.value) {\n                    <mat-option [value]=\"option.name\">\n                        {{ option.name }}\n                    </mat-option>\n                }\n                @if (notFoundLabel !== '' && searchValue !== '') {\n                    <mat-option>{{notFoundLabel}}</mat-option>\n                }\n            </mat-autocomplete>\n            @if (config.help) {\n                <es-form-help [help]=\"config.help\" [label]=\"config.label\" [fc]=\"esForm\"></es-form-help>\n            }\n            @if (config.dButton?.display) {\n                <form-button-delete [config]=\"config\"\n                                    [configList]=\"configList\"\n                                    [group]=\"group\"\n                                    [_fc]=\"esForm\">\n                </form-button-delete>\n            }\n        </div>\n    `,\n    standalone: true,\n    imports: [\n        NgClass,\n        ReactiveFormsModule,\n        MatFormField,\n        MatInput,\n        MatAutocompleteTrigger,\n        MatError,\n        MatAutocomplete,\n        MatOption,\n        FormHelpComponent,\n        FormButtonDeleteComponent,\n    ]\n})\nexport class FormAjaxAutocompleteComponent extends EsFieldBase implements OnInit, AfterViewInit {\n\n    constructor(\n        cd: ChangeDetectorRef,\n        private esFormService: EsFormService,\n        private translate: TranslateService,\n    ) {\n        super(cd);\n        this.destroyRef.onDestroy(() => this.scrollPanel?.removeEventListener('scroll', this.onPanelScroll));\n    }\n    translates = EsFormTranslates;\n    ajaxConfig: {\n        formId?: number,\n        minSearchLength: number,\n        pageLimit: number,\n        page: number,\n    };\n\n    notFoundLabel = '';\n    canDownload = true;\n    optionSelected = false;\n    searchValue = '';\n\n    private scrollPanel: HTMLElement | null = null;\n\n    @ViewChild(MatInput, { read: MatInput, static: false}) matInput: MatInput;\n    @ViewChild(MatAutocomplete, { read: MatAutocomplete, static: false}) matAutocomplete: MatAutocomplete;\n    private readonly onPanelScroll = (event: Event) => this.loadOptionsOnScroll(event);\n\n\n    ngOnInit() {\n        this.config.options = [];\n        this.notFoundLabel = this.translate.instant(this.translates.NO_OPTIONS_FOUND);\n        this.ajaxConfig = {\n            minSearchLength: this.config.attr['ajaxAutocompleteOptions'][0],\n            pageLimit: this.config.attr['ajaxAutocompleteOptions'][1],\n            page: 1,\n            formId: this.config.attr['ajaxAutocompleteOptions'][2],\n        };\n\n        this.group.controls[this.config.name].valueChanges\n            .pipe(\n                debounceTime(300),\n                distinctUntilChanged(),\n                takeUntilDestroyed(this.destroyRef)\n            )\n            .subscribe(value => {\n                this.searchValue = value ? value : '';\n                if (this.searchValue !== '') {\n                    this.onSearch();\n                } else {\n                    this.config.options = [];\n                    this.cd.markForCheck();\n                }\n            });\n    }\n\n    ngAfterViewInit(): void {\n        if (this.config.focused) {\n            setTimeout(() => {\n                this.matInput.focus();\n                this.config.focused = false;\n            }, 0);\n        }\n    }\n\n    onSearch() {\n        this.ajaxConfig.page = 1;\n        if (this.matAutocomplete.isOpen) {\n            this.matAutocomplete.panel.nativeElement.scrollTop = 0;\n        }\n        if (this.searchValue.length >= this.ajaxConfig.minSearchLength) {\n            this.notFoundLabel = '';\n            this.getOptionsAjax();\n        } else if (this.searchValue === '') {\n            this.config.options = [];\n        } else if (this.searchValue.length < this.ajaxConfig.minSearchLength) {\n            this.notFoundLabel  = this.translate.instant(this.translates.MINIMUM_CHARACTERS) + ' (' + this.ajaxConfig.minSearchLength + ')';\n            this.canDownload = false;\n            this.config.options = [];\n        }\n        this.cd.markForCheck();\n    }\n\n    onOptionSelected() {\n        this.optionSelected = true;\n    }\n\n    getOptionsAjax(search = true) {\n        let q = '';\n        if (this.searchValue) { q = this.searchValue; }\n\n        // set formData\n        const formData: FormData = new FormData();\n        formData.append(AjaxParams.SEARCH_VALUE, q);\n        formData.append(AjaxParams.PAGE_LIMIT, this.ajaxConfig.pageLimit.toString());\n        formData.append(AjaxParams.PAGE, this.ajaxConfig.page.toString());\n        if (this.ajaxConfig.formId) {\n            formData.append(AjaxParams.FORM_ID, this.ajaxConfig.formId.toString());\n        }\n\n        if (!this.optionSelected) {\n            this.canDownload = false;\n            this.esFormService.askForAjaxOptions.next(formData);\n            this.esFormService.getAjaxOptions.pipe(take(1)).subscribe(res => {\n                if (search) {\n                    this.config.options = [];\n                }\n                this.afterOptionsDownloaded(res);\n            });\n        }\n    }\n\n    onPanelOpened() {\n        this.optionSelected = false;\n        if (this.config.options.length > 0) {\n            this.registerPanelScrollEvent();\n        }\n    }\n\n    registerPanelScrollEvent() {\n        if (!this.matAutocomplete.isOpen) {\n            return;\n        }\n        // volano i po kazde dotazene strance => listener jen jednou na kazdy (pri otevreni novy) panel\n        const panel: HTMLElement = this.matAutocomplete.panel.nativeElement;\n        if (panel === this.scrollPanel) {\n            return;\n        }\n        this.scrollPanel?.removeEventListener('scroll', this.onPanelScroll);\n        panel.addEventListener('scroll', this.onPanelScroll);\n        this.scrollPanel = panel;\n    }\n\n    loadOptionsOnScroll(event: any) {\n        // tolerance 1px - pri zoomu / zlomkovych px se rozdil presne nerovna clientHeight\n        const target = event.target;\n        if (target.scrollHeight - target.scrollTop - target.clientHeight <= 1 && this.canDownload) {\n            this.ajaxConfig.page ++;\n            this.getOptionsAjax(false);\n        }\n    }\n\n    afterOptionsDownloaded(res: any) {\n        for (const key in res) {\n            if (res.hasOwnProperty(key)) {\n                let found = false;\n                this.config.options.forEach( opt => {\n                    if (opt.value === res[key]['id']) {\n                        found = true;\n                    }\n                });\n\n                if (!found) {\n                    this.config.options.push({name: res[key]['text'], value: res[key]['id']});\n                }\n            }\n        }\n\n        if (this.config.options.length === 0) {\n            this.notFoundLabel = this.translate.instant(this.translates.NO_OPTIONS_FOUND);\n        }\n\n        // stop downloading next options if last request empty\n        if (res.length > 0) {\n            this.canDownload = true;\n        }\n\n        if (this.config.options.length > 0) {\n            this.onPanelOpened();\n        }\n\n        this.cd.markForCheck();\n    }\n}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit} from '@angular/core';\nimport {EsIcon, EsIconComponent} from '@eurosat/icon';\nimport {EsFormTranslates} from '../../model/es-form.translates';\nimport {EsFormFieldOption} from '../../model/es-field-option.interface';\nimport {CdkDragDrop, moveItemInArray, CdkDropList, CdkDrag} from '@angular/cdk/drag-drop';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {NgClass} from '@angular/common';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {MatCheckbox} from '@angular/material/checkbox';\nimport {MatFormField, MatError} from '@angular/material/form-field';\nimport {MatInput} from '@angular/material/input';\nimport {MatIconButton, MatButton} from '@angular/material/button';\nimport {FormHelpComponent} from '../form-help/form-help.component';\nimport {TranslatePipe} from '@ngx-translate/core';\n\n@Component({\n    selector: 'es-form-check-list',\n    styleUrls: ['form-check-list.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div [ngClass]=\"config.display ? 'display-true' : 'display-false'\"\n             class=\"dynamic-field form-input form-container\"\n             [formGroup]=\"group\"\n        >\n            <div class=\"check-list-container\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n                <input [type]=\"'hidden'\"\n                       [formControlName]=\"config.name\"\n                       [required]=\"config.required\"\n                       [value]=\"config.value\">\n                <div class=\"check-list-label\">{{config.label}}</div>\n                @for (option of config.options; track option.value) {\n                    <div class=\"check-list-row\" cdkDrag>\n                        <mat-checkbox [disabled]=\"config.disabled\" [checked]=\"option.selected\"\n                                      (change)=\"option.selected = $event.checked\"></mat-checkbox>\n                        <mat-form-field class=\"check-list-row-input\">\n                            <input matInput\n                                   [value]=\"option.name\"\n                                   [disabled]=\"config.disabled\"\n                                   (keyup)=\"onValueChange($event, option)\"\n                            >\n                        </mat-form-field>\n                        <div>\n                            <button mat-icon-button type=\"button\" [disabled]=\"config.disabled\"\n                                    (click)=\"onDeleteButtonClick($event, option)\">\n                                <es-icon [icon]=\"esIcon.DELETE\"></es-icon>\n                            </button>\n                        </div>\n                    </div>\n                }\n                <mat-error>\n                    @for (msg of activeErrorMessages; track msg) {\n                        <span class=\"error-line\">{{ msg }}</span>\n                    }\n                </mat-error>\n                <div>\n                    <button mat-button type=\"button\"\n                            (click)=\"onAddButtonClick($event)\"\n                            [disabled]=\"config.disabled\">\n                        <es-icon [icon]=\"esIcon.ADD\"></es-icon>\n                        {{translates.ADD | translate}}\n                    </button>\n                </div>\n            </div>\n            @if (config.help) {\n                <es-form-help [help]=\"config.help\" [label]=\"config.label\" [fc]=\"esForm\"></es-form-help>\n            }\n        </div>\n    `,\n    standalone: true,\n    imports: [\n        NgClass,\n        ReactiveFormsModule,\n        CdkDropList,\n        CdkDrag,\n        MatCheckbox,\n        MatFormField,\n        MatInput,\n        MatIconButton,\n        EsIconComponent,\n        MatError,\n        MatButton,\n        FormHelpComponent,\n        TranslatePipe,\n    ]\n})\nexport class FormCheckListComponent extends EsFieldBase {\n    esIcon = EsIcon;\n    translates = EsFormTranslates;\n\n    constructor(cd: ChangeDetectorRef) {\n        super(cd);\n    }\n\n    onAddButtonClick($event) {\n        $event.stopPropagation();\n        this.config.options.push({value: undefined, name: '', selected: false});\n        this.checkEmpty();\n    }\n\n    onDeleteButtonClick($event, option: EsFormFieldOption) {\n        $event.stopPropagation();\n        this.config.options.splice(this.config.options.indexOf(option), 1);\n        this.checkEmpty();\n    }\n\n    onValueChange(event, option) {\n        option.name = event.target.value.toString();\n        if (this.config.required) {\n            this.checkEmpty();\n        }\n    }\n\n    // trochu hacek se skrytym inputem aby se vypisovala error hlaska\n\n    checkEmpty() {\n        let isEmpty = false;\n        for (const opt of this.config.options) {\n            if (opt.name === '') {\n                isEmpty = true;\n            }\n        }\n        this.config.value = isEmpty ? '' : '1';\n        this.group.get(this.config.name).setValue(isEmpty ? '' : '1');\n        this.group.get(this.config.name).markAsTouched();\n    }\n\n    drop(event: CdkDragDrop<string[]>) {\n        moveItemInArray(this.config.options, event.previousIndex, event.currentIndex);\n    }\n}\n","export class DateUtil {\n\n    static getTimestamp(date: Date): number {\n        return Math.floor((date.getTime() / 1000) - (60 * date.getTimezoneOffset()));\n    }\n\n    static dateFromTimestamp(timestamp: number|string, offset: number = 0) {\n\n        let timestampInt = null;\n        if (timestamp) {\n            timestampInt = parseInt(timestamp.toString(), 10);\n        }\n\n        const a = new Date((timestampInt + offset) * 1000);\n        return new Date((timestampInt + offset + (60 * a.getTimezoneOffset())) * 1000);\n    }\n}\n","export enum DatePickerMode {\n    MODE_TIME = 'LT',\n    MODE_TIME_SECOND = 'LTS',\n    MODE_DATE = 'l',\n    MODE_DATE_TIME = 'l LT',\n    MODE_DATE_TIME_SECOND = 'l LTS',\n    MODE_MONTH_YEAR = 'MMMM YYYY',\n    MODE_YEAR = 'YYYY',\n}\n","import {inject, Provider} from '@angular/core';\nimport {FlatpickrDefaults} from 'angularx-flatpickr';\n\n/**\n * FlatpickrDefaults pro direktivu mwlFlatpickr. Standalone komponenta nemuze importovat FlatpickrModule.forRoot(),\n * proto si defaults poskytuje sama - kdyz je aplikace nastavila (FlatpickrModule.forRoot({...})), pouziji se ty,\n * jinak vychozi.\n */\nexport const ES_FLATPICKR_DEFAULTS_PROVIDER: Provider = {\n    provide: FlatpickrDefaults,\n    useFactory: () => inject(FlatpickrDefaults, {skipSelf: true, optional: true}) ?? new FlatpickrDefaults(),\n};\n","import { Injectable } from '@angular/core';\nimport {CustomLocale} from 'flatpickr/dist/types/locale';\nimport {Czech} from 'flatpickr/dist/l10n/cs';\nimport {Russian} from 'flatpickr/dist/l10n/ru';\nimport {German} from 'flatpickr/dist/l10n/de';\nimport {Slovak} from 'flatpickr/dist/l10n/sk';\nimport {Spanish} from 'flatpickr/dist/l10n/es';\nimport {Portuguese} from 'flatpickr/dist/l10n/pt';\nimport {english} from 'flatpickr/dist/l10n/default';\nimport {DatePickerMode} from './date-picker-mode';\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class FormFlatpickrService {\n\n  constructor() { }\n\n    private static getLocalePrefix(locale: string): string {\n        locale = locale.replace('_', '-');\n        return locale.split('-')[0];\n    }\n\n    getLocale(localeStr: any) {\n        let customLocale: CustomLocale;\n        switch (FormFlatpickrService.getLocalePrefix(localeStr)) {\n            case'cs':\n                customLocale = Czech;\n                break;\n            case'ru':\n                customLocale = Russian;\n                break;\n            case'de':\n                customLocale = German;\n                break;\n            case'sk':\n                customLocale = Slovak;\n                break;\n            case'es':\n                customLocale = Spanish;\n                break;\n            case'pt':\n                customLocale = Portuguese;\n                break;\n            default:\n                customLocale = english;\n        }\n        return customLocale;\n    }\n\n    getDateFormat(locale: string, mode: string): string {\n        const dateFormatsDateTime: Array<any> = [\n            { name: 'US:', value: 'n/j/Y G:i K' },\n            { name: 'England:', value: 'd/m/Y G:i K' },\n            { name: 'Poland:', value: 'j.m.Y H:i' },\n            { name: 'Germany:', value: 'j.n.Y H:i' },\n            { name: 'France:', value: 'j/m/Y H:i' },\n            { name: 'ISO 8601', value: 'Y-m-d H:i' },\n        ];\n        const dateFormatsDateTimeSeconds: Array<any> = [\n            { name: 'US:', value: 'n/j/Y G:i:S K' },\n            { name: 'England:', value: 'd/m/Y G:i:S K' },\n            { name: 'Poland:', value: 'j.m.Y H:i:S' },\n            { name: 'Germany:', value: 'j.n.Y H:i:S' },\n            { name: 'France:', value: 'j/m/Y H:i:S' },\n            { name: 'ISO 8601', value: 'Y-m-d H:i:S' },\n        ];\n        const dateFormatsDate: Array<any> = [\n            { name: 'US:', value: 'n/j/Y' },\n            { name: 'England:', value: 'd/m/Y' },\n            { name: 'Poland:', value: 'j.m.Y' },\n            { name: 'Germany:', value: 'j.n.Y' },\n            { name: 'France:', value: 'j/m/Y' },\n            { name: 'ISO 8601', value: 'Y-m-d' }\n        ];\n        const dateFormatsTime: Array<any> = [\n            { name: 'US:', value: 'G:i K' },\n            { name: 'England:', value: 'G:i K' },\n            { name: 'Poland:', value: 'H:i' },\n            { name: 'Germany:', value: 'H:i' },\n            { name: 'France:', value: 'H:i' },\n            { name: 'ISO 8601', value: 'H:i' }\n        ];\n        const dateFormatsTimeSeconds: Array<any> = [\n            { name: 'US:', value: 'G:i:S K' },\n            { name: 'England:', value: 'G:i:S K' },\n            { name: 'Poland:', value: 'H:i:S' },\n            { name: 'Germany:', value: 'H:i:S' },\n            { name: 'France:', value: 'H:i:S' },\n            { name: 'ISO 8601', value: 'H:i:S' }\n        ];\n        const dateFormatsMonth: Array<any> = [\n            { name: 'US:', value: 'n/Y' },\n            { name: 'England:', value: 'm/Y' },\n            { name: 'Poland:', value: 'm.Y' },\n            { name: 'Germany:', value: 'n.Y' },\n            { name: 'France:', value: 'm/Y' },\n            { name: 'ISO 8601', value: 'Y-m' }\n        ];\n        const dateFormatsYear: Array<any> = [\n            { name: 'US:', value: 'Y' },\n            { name: 'England:', value: 'Y' },\n            { name: 'Poland:', value: 'Y' },\n            { name: 'Germany:', value: 'Y' },\n            { name: 'France:', value: 'Y' },\n            { name: 'ISO 8601', value: 'Y' }\n        ];\n\n        const dateFormats = [];\n        dateFormats[DatePickerMode.MODE_TIME] = dateFormatsTime;\n        dateFormats[DatePickerMode.MODE_TIME_SECOND] = dateFormatsTimeSeconds;\n        dateFormats[DatePickerMode.MODE_DATE] = dateFormatsDate;\n        dateFormats[DatePickerMode.MODE_DATE_TIME] = dateFormatsDateTime;\n        dateFormats[DatePickerMode.MODE_DATE_TIME_SECOND] = dateFormatsDateTimeSeconds;\n        dateFormats[DatePickerMode.MODE_MONTH_YEAR] = dateFormatsMonth;\n        dateFormats[DatePickerMode.MODE_YEAR] = dateFormatsYear;\n\n        const groupLocales: { [group: string]: Array<any>; } = {\n            'US:': ['en-us'],\n            'England:': ['en'],\n            'Poland:': ['pl'],\n            'Germany:': ['de', 'cs', 'sk'],\n            'France:': ['fr'],\n            'ISO 8601': ['all others ...', '']\n        };\n\n        let localeFormat = null;\n        const localePrefix = FormFlatpickrService.getLocalePrefix(locale);\n\n        for (const formats of dateFormats[mode]) {\n            for (const loc of groupLocales[formats.name]) {\n                if (loc === localePrefix) {\n                    localeFormat = formats.value;\n                }\n            }\n        }\n        return localeFormat ? localeFormat : dateFormats[mode]['ISO 8601'];\n    }\n}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit} from '@angular/core';\nimport {FormGroup, ReactiveFormsModule} from '@angular/forms';\nimport {EsFormField} from '../../model/es-form-field.interface';\nimport {EsFormFieldConfig} from '../../model/es-config.interface';\nimport {english} from 'flatpickr/dist/l10n/default';\nimport {DateUtil} from '../../util/date-util';\nimport {CustomLocale} from 'flatpickr/dist/types/locale';\nimport flatpickr from 'flatpickr';\nimport {FormFlatpickrService} from './form-flatpickr.service';\nimport {DatePickerMode} from './date-picker-mode';\nimport {IEsFormComponent} from '../../container/es-form.interface';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {NgClass} from '@angular/common';\nimport {MatIconButton} from '@angular/material/button';\nimport {MatIcon} from '@angular/material/icon';\nimport {MatFormField, MatError} from '@angular/material/form-field';\nimport {MatInput} from '@angular/material/input';\nimport {FlatpickrModule} from 'angularx-flatpickr';\nimport {ES_FLATPICKR_DEFAULTS_PROVIDER} from './flatpickr-defaults.provider';\nimport {EsIconComponent} from '@eurosat/icon';\nimport {FormHelpComponent} from '../form-help/form-help.component';\nimport {FormButtonDeleteComponent} from '../form-button-delete/form-button-delete.component';\n\n@Component({\n    selector: 'es-form-flatpickr',\n    styleUrls: ['form-flatpickr.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div [ngClass]=\"config.display ? 'display-true' : 'display-false'\"\n             class=\"dynamic-field form-datepicker form-container\"\n             [formGroup]=\"group\">\n            <button mat-icon-button class=\"date-trigger-button\" (click)=\"openPicker()\" type=\"button\">\n                <mat-icon>event</mat-icon>\n            </button>\n            <mat-form-field>\n                <input\n                    type=\"text\"\n                    mwlFlatpickr\n                    matInput\n                    [formControlName]=\"config.name\"\n                    [placeholder]=\"config.label\"\n                    [required]=\"config.required\"\n                    [enableTime]=\"enableTime\"\n                    [enableSeconds]=\"enableSeconds\"\n                    [locale]=\"locale\"\n                    [allowInput]=\"true\"\n                    [clickOpens]=\"clickOpens\"\n                    [noCalendar]=\"noCalendar\"\n                    [time24hr]=\"locale.time_24hr\"\n                    [dateFormat]=\"dateFormat\"\n                    [altInput]=\"true\"\n                    [altFormat]=\"dateFormat\"\n                    [minuteIncrement]=\"1\"\n                    [static]=\"isStatic\"\n                    [convertModelValue]=\"true\"\n                    [enable]=\"enable\"\n                    (flatpickrReady)=\"onReady($event)\"\n                    (flatpickrValueUpdate)=\"onValueUpdated($event)\"\n                    (flatpickrChange)=\"onChange($event);\"\n                    (flatpickrOpen)=\"onOpen($event)\"\n                    (flatpickrClose)=\"onClose($event)\"\n                >\n\n                <mat-error>\n                    @for (msg of activeErrorMessages; track msg) {\n                        <span class=\"error-line\">{{ msg }}</span>\n                    }\n                </mat-error>\n            </mat-form-field>\n            @if (!config.required &&\n                    (group.controls[config.name].value !== '' &&\n                     group.controls[config.name].value !== null &&\n                     group.controls[config.name].value !== undefined)) {\n                <button type=\"button\"\n                        mat-icon-button\n                        (click)=\"clearSelection()\"\n                >\n                    <es-icon [icon]=\"'close'\"></es-icon>\n                </button>\n            }\n            @if (config.help) {\n                <es-form-help [help]=\"config.help\" [label]=\"config.label\" [fc]=\"esForm\"></es-form-help>\n            }\n            @if (config.dButton?.display) {\n                <form-button-delete [config]=\"config\"\n                                    [configList]=\"configList\"\n                                    [group]=\"group\"\n                                    [_fc]=\"esForm\">\n                </form-button-delete>\n            }\n        </div>\n    `,\n    standalone: true,\n    providers: [ES_FLATPICKR_DEFAULTS_PROVIDER],\n    imports: [\n        NgClass,\n        ReactiveFormsModule,\n        MatIconButton,\n        MatIcon,\n        MatFormField,\n        MatInput,\n        FlatpickrModule,\n        MatError,\n        EsIconComponent,\n        FormHelpComponent,\n        FormButtonDeleteComponent,\n    ]\n})\n\nexport class FormFlatpickrComponent extends EsFieldBase implements EsFormField, OnInit {\n    flatPickr: flatpickr.Instance;\n    locale: CustomLocale = english;\n    isStatic = true;\n    isConfirm = false;\n    transToday = '';\n    transConfirm = '';\n    hasChanged = false;\n    enableTime = false;\n    enableSeconds = false;\n    clickOpens = false;\n    noCalendar = false;\n    isOpen = false;\n    dateFormat = '';\n    enable = [() => true];\n\n    _changeEvent = () => {};\n    _valueChangeEvent = () => {};\n    _openEvent = () => {};\n    _closeEvent = () => {};\n\n    constructor(private formFlatpickrService: FormFlatpickrService, cd: ChangeDetectorRef ) {\n        super(cd);\n    }\n\n\n    ngOnInit(): void {\n        const mode = this._getConfigValue('mode', DatePickerMode.MODE_DATE);\n        const localeStr = this._getConfigValue('locale', 'en');\n        const openOnFocus = this._getConfigValue('openOnFocus', false);\n        const selectedDateStr = this.config ? this.config.value : '';\n        this.isStatic = this._getConfigValue('static', true);\n        this.transToday = this._getConfigValue('transToday', '');\n        this.transConfirm = this._getConfigValue('transConfirm', 'OK');\n        this.isConfirm = this._getConfigValue('confirm', false);\n\n        this.setupCalendarAppearance(mode);\n        this.locale = this.formFlatpickrService.getLocale('cs');\n        this.dateFormat = this.formFlatpickrService.getDateFormat(localeStr, mode);\n        this.clickOpens = openOnFocus;\n        this.setSelectedDate(selectedDateStr);\n    }\n\n    _getConfigValue(attribute: string, defaultValue: any) {\n        return (this.config && typeof this.config.attr[attribute] !== undefined) ? this.config.attr[attribute] : defaultValue;\n    }\n\n    setupCalendarAppearance(mode: DatePickerMode) {\n        this.enableTime = [\n            DatePickerMode.MODE_TIME,\n            DatePickerMode.MODE_TIME_SECOND,\n            DatePickerMode.MODE_DATE_TIME,\n            DatePickerMode.MODE_DATE_TIME_SECOND,\n        ].indexOf(mode) >= 0;\n        this.noCalendar = [\n            DatePickerMode.MODE_TIME,\n            DatePickerMode.MODE_TIME_SECOND,\n        ].indexOf(mode) >= 0;\n        this.enableSeconds = [\n            DatePickerMode.MODE_TIME_SECOND,\n            DatePickerMode.MODE_DATE_TIME_SECOND,\n        ].indexOf(mode) >= 0;\n    }\n\n    private setSelectedDate(selectedDateStr: string) {\n        if (selectedDateStr !== '') {\n            const date = DateUtil.dateFromTimestamp(selectedDateStr);\n            if (!isNaN( date.getTime() ) ) {\n                this.group.controls[this.config.name].setValue(date);\n            }\n        }\n    }\n\n    onReady($event: any) { // :FlatpickOutputOptions\n        this.flatPickr = $event.instance;\n        this.hasChanged = false;\n        if (this.isConfirm) {\n            const fp = this.flatPickr;\n            const wrapper = fp._createElement<HTMLDivElement>('div', 'flatpickr-today-confirm-wrapper', '');\n\n            const todayButton = fp._createElement<HTMLDivElement>('div', 'flatpickr-today', this.transToday);\n            todayButton.innerHTML += '<i class=\"material-icons\">today</i>';\n            todayButton.addEventListener('click', function () {\n                fp.setDate(new Date(), true);\n            });\n            wrapper.appendChild(todayButton);\n\n            const confirmButton = fp._createElement<HTMLDivElement>('div', 'flatpickr-confirm visible', this.transConfirm);\n            confirmButton.tabIndex = -1;\n            confirmButton.innerHTML += '<i class=\"material-icons\">check</i>';\n            confirmButton.addEventListener('click', fp.close);\n            wrapper.appendChild(confirmButton);\n\n            fp.calendarContainer.appendChild(wrapper);\n        }\n\n    }\n\n    openPicker() {\n        const flatpickrComp = this;\n        // Potreba nastavit timeout jinak se hned kalendar zavre\n        setTimeout(() => {\n            flatpickrComp.flatPickr.open();\n        }, 0);\n    }\n\n    onValueUpdated(event: any) { // :FlatpickOutputOptions\n        this.hasChanged = true;\n        if (event.selectedDates.length > 0) {\n            this.group.controls[this.config.name].setValue(event.selectedDates[0]);\n        }\n        this._valueChangeEvent();\n    }\n\n    onChange(event: any) {// : FlatpickOutputOptions\n        this.hasChanged = true;\n        if (event.selectedDates.length > 0) {\n            this.group.controls[this.config.name].setValue(event.selectedDates[0]);\n        }\n        this._changeEvent();\n    }\n\n    onOpen(_event: any) {\n        this.isOpen = true;\n        this._openEvent();\n    }\n\n    onClose(_event: any) {\n        this.isOpen = false;\n        this._closeEvent();\n    }\n\n    clearSelection() {\n        this.group.controls[this.config.name].setValue('');\n    }\n}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit} from '@angular/core';\nimport {FormGroup, ValidationErrors, ReactiveFormsModule} from '@angular/forms';\nimport {DatePickerMode} from '../form-flatpickr/date-picker-mode';\nimport {DateUtil} from '../../util/date-util';\nimport {FormFlatpickrService} from '../form-flatpickr/form-flatpickr.service';\nimport flatpickr from 'flatpickr';\nimport {CustomLocale} from 'flatpickr/dist/types/locale';\nimport {english} from 'flatpickr/dist/l10n/default';\nimport {TranslateService} from '@ngx-translate/core';\nimport {EsFormTranslates} from '../../model/es-form.translates';\nimport {BreakpointObserver, Breakpoints, BreakpointState} from '@angular/cdk/layout';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NgClass} from '@angular/common';\nimport {MatIconButton} from '@angular/material/button';\nimport {MatIcon} from '@angular/material/icon';\nimport {MatFormField, MatError} from '@angular/material/form-field';\nimport {MatInput} from '@angular/material/input';\nimport {FlatpickrModule} from 'angularx-flatpickr';\nimport {ES_FLATPICKR_DEFAULTS_PROVIDER} from '../form-flatpickr/flatpickr-defaults.provider';\nimport {EsIconComponent} from '@eurosat/icon';\nimport {FormHelpComponent} from '../form-help/form-help.component';\nimport {FormButtonDeleteComponent} from '../form-button-delete/form-button-delete.component';\n\n@Component({\n    selector: 'es-form-range-flatpicker',\n    styleUrls: ['./form-range-flatpicker.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div [ngClass]=\"config.display ? 'display-true' : 'display-false'\"\n             class=\"dynamic-field form-datepicker form-container\"\n             [formGroup]=\"group\"\n        >\n            @if (dateRangeFormGroup) {\n                <div class=\"datepickers-container\"\n                     [style.align-items]=\"isMobile || config.width < 600 ? 'stretch' : 'center'\"\n                     [style.flex-flow]=\"isMobile || config.width < 600 ? 'column' : 'row'\"\n                     [formGroup]=\"dateRangeFormGroup\"\n                >\n                    <div class=\"datepicker-0\">\n                        <button mat-icon-button class=\"date-trigger-button\" (click)=\"openPicker(0)\" type=\"button\">\n                            <mat-icon>event</mat-icon>\n                        </button>\n                        <mat-form-field>\n                            <input\n                                type=\"text\"\n                                mwlFlatpickr\n                                matInput\n                                [formControlName]=\"config.children[0].name\"\n                                [placeholder]=\"config.children[0].label\"\n                                [required]=\"config.children[0].required\"\n                                [enableTime]=\"enableTime\"\n                                [locale]=\"locale\"\n                                [allowInput]=\"true\"\n                                [clickOpens]=\"clickOpens\"\n                                [noCalendar]=\"noCalendar\"\n                                [time24hr]=\"locale.time_24hr\"\n                                [dateFormat]=\"dateFormat\"\n                                [altInput]=\"true\"\n                                [altFormat]=\"dateFormat\"\n                                [minuteIncrement]=\"1\"\n                                [static]=\"isStatic\"\n                                [enable]=\"enable\"\n                                (flatpickrReady)=\"onChanged(0, $event)\"\n                                (flatpickrValueUpdate)=\"onValueUpdated(0, $event)\"\n                                (flatpickrChange)=\"onValueUpdated(0, $event)\"\n                            >\n                            <mat-error>\n                                @for (msg of activeErrorMessages; track msg) {\n                                    <span class=\"error-line\">{{ msg }}</span>\n                                }\n                            </mat-error>\n                        </mat-form-field>\n                        @if (!config.children[0].required &&\n                            (group.controls[config.name].value[0] !== '' &&\n                             group.controls[config.name].value[0] !== null &&\n                             group.controls[config.name].value[0] !== undefined)) {\n                            <button type=\"button\"\n                                    mat-icon-button\n                                    (click)=\"clearSelection(0)\"\n                            >\n                                <es-icon [icon]=\"'close'\"></es-icon></button>\n                        }\n                    </div>\n                    <div class=\"datepicker-1\">\n                        <button mat-icon-button class=\"date-trigger-button\" (click)=\"openPicker(1)\" type=\"button\">\n                            <mat-icon>event</mat-icon>\n                        </button>\n                        <mat-form-field>\n                            <input\n                                type=\"text\"\n                                mwlFlatpickr\n                                matInput\n                                [formControlName]=\"config.children[1].name\"\n                                [placeholder]=\"config.children[1].label\"\n                                [required]=\"config.children[1].required\"\n                                [enableTime]=\"enableTime\"\n                                [locale]=\"locale\"\n                                [allowInput]=\"true\"\n                                [clickOpens]=\"clickOpens\"\n                                [noCalendar]=\"noCalendar\"\n                                [time24hr]=\"locale.time_24hr\"\n                                [dateFormat]=\"dateFormat\"\n                                [altInput]=\"true\"\n                                [altFormat]=\"dateFormat\"\n                                [minuteIncrement]=\"1\"\n                                [static]=\"isStatic\"\n                                [enable]=\"enable\"\n                                (flatpickrReady)=\"onChanged(1, $event)\"\n                                (flatpickrValueUpdate)=\"onValueUpdated(1, $event)\"\n                                (flatpickrChange)=\"onValueUpdated(1, $event)\"\n                            >\n                            <mat-error>\n                                @for (msg of activeErrorMessages; track msg) {\n                                    <span class=\"error-line\">{{ msg }}</span>\n                                }\n                            </mat-error>\n                        </mat-form-field>\n                        @if (!config.children[1].required &&\n                            (group.controls[config.name].value[1] !== '' &&\n                             group.controls[config.name].value[1] !== null &&\n                             group.controls[config.name].value[1] !== undefined)) {\n                            <button type=\"button\"\n                                    mat-icon-button\n                                    (click)=\"clearSelection(1)\"\n                            >\n                                <es-icon [icon]=\"'close'\"></es-icon>\n                            </button>\n                        }\n                </div>\n            </div>\n            }\n            @if (config.help) {\n                <es-form-help [help]=\"config.help\" [label]=\"config.label\" [fc]=\"esForm\"></es-form-help>\n            }\n            @if (config.dButton?.display) {\n                <form-button-delete [config]=\"config\"\n                                    [configList]=\"configList\"\n                                    [group]=\"group\"\n                                    [_fc]=\"esForm\">\n                </form-button-delete>\n            }\n        </div>\n    `,\n    standalone: true,\n    providers: [ES_FLATPICKR_DEFAULTS_PROVIDER],\n    imports: [\n        NgClass,\n        ReactiveFormsModule,\n        MatIconButton,\n        MatIcon,\n        MatFormField,\n        MatInput,\n        FlatpickrModule,\n        MatError,\n        EsIconComponent,\n        FormHelpComponent,\n        FormButtonDeleteComponent,\n    ]\n})\nexport class FormRangeFlatpickerComponent extends EsFieldBase implements OnInit {\n    flatPickrFrom: flatpickr.Instance;\n    flatPickrTo: flatpickr.Instance;\n\n    locale: CustomLocale = english;\n\n    dateRangeFormGroup: FormGroup = new FormGroup({});\n    translates = EsFormTranslates;\n\n    isMobile = false;\n    isStatic = true;\n    enableTime = false;\n    clickOpens = false;\n    noCalendar = false;\n    dateFormat = '';\n    isFirstChange = true;\n    enable = [() => true];\n\n\n    constructor(\n        private formFlatpickrService: FormFlatpickrService,\n        cd: ChangeDetectorRef,\n        private translate: TranslateService,\n        private breakpointObserver: BreakpointObserver\n    ) {\n        super(cd);\n        this.breakpointObserver\n            .observe([Breakpoints.Small, Breakpoints.XSmall])\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe((state: BreakpointState) => {\n                this.isMobile = state.matches;\n                this.cd.markForCheck();\n            });\n    }\n\n    ngOnInit(): void {\n        this.config.children.forEach((childConfig, index) => {\n            let message = '';\n            if (index === 0) {\n                message = this.config.children[0].label +\n                    ' ' + this.translate.instant(this.translates.GREATER_THAN) + ' ' +\n                    this.config.children[1].label +\n                    '!';\n            } else {\n                message = this.config.children[1].label +\n                    ' ' + this.translate.instant(this.translates.LOWER_THAN) + ' ' +\n                    this.config.children[0].label +\n                    '!';\n            }\n            childConfig.validation.push({\n                name: 'from-higher-than-to',\n                message: message,\n                rules: [],\n            });\n\n            const childControl = this.esForm.createControl(childConfig);\n            this.dateRangeFormGroup.addControl(childConfig.name, childControl);\n        });\n        const mode = this.config && this.config.attr['mode'] ? this.config.attr['mode'] : DatePickerMode.MODE_DATE;\n        const localeStr = this.config && this.config.attr['locale'] ? this.config.attr['locale'] : 'en';\n        const openOnFocus = this.config && this.config.attr['openOnFocus'] ? (this.config.attr['openOnFocus'] === 'true') : false;\n        this.isStatic = this.config && this.config.attr['static'] ? this.config.attr['static'] : true;\n\n        this.setupCalendarAppearance(mode);\n        this.locale = this.formFlatpickrService.getLocale(localeStr);\n        this.dateFormat = this.formFlatpickrService.getDateFormat(localeStr, mode);\n        this.clickOpens = openOnFocus;\n        this.setSelectedDate();\n    }\n\n    setupCalendarAppearance(mode: DatePickerMode) {\n        this.enableTime = [DatePickerMode.MODE_TIME, DatePickerMode.MODE_DATE_TIME].indexOf(mode) >= 0;\n        this.noCalendar = [DatePickerMode.MODE_TIME].indexOf(mode) >= 0;\n    }\n\n    private setSelectedDate() {\n        const intFrom = this.config.children[0].value;\n        const intTo = this.config.children[1].value;\n        let dateFrom: any  = '';\n        let dateTo: any  = '';\n        if (!(intFrom === null || intFrom === undefined || intFrom === '')) {\n            dateFrom = DateUtil.dateFromTimestamp(intFrom);\n        }\n        if (!(intTo === null || intTo === undefined || intTo === '')) {\n            dateTo = DateUtil.dateFromTimestamp(intTo);\n        }\n        this.dateRangeFormGroup.get(this.config.children[0].name).setValue(dateFrom);\n        this.dateRangeFormGroup.get(this.config.children[1].name).setValue(dateTo);\n        this.updateValue();\n        setTimeout(() => {\n            this.checkView();\n        }, 0);\n    }\n\n    updateValue() {\n        // [1000000000, 1000000000]\n        this.group.get(this.config.name).setValue([\n            this.dateRangeFormGroup.get(this.config.children[0].name).value,\n            this.dateRangeFormGroup.get(this.config.children[1].name).value\n        ]);\n\n        // errors\n        const errors = this.getChildrenErrors();\n        this.group.get(this.config.name).setErrors(errors);\n    }\n\n    onChanged(index: number, $event: any) { // any -> FlatpickrOutputOptions\n        if (index === 0) {\n            this.flatPickrFrom = $event.instance;\n        } else {\n            this.flatPickrTo = $event.instance;\n        }\n    }\n\n    getChildrenErrors(): ValidationErrors {\n        let errors: ValidationErrors = null;\n        for (let index = 0; index <= 1; index++) {\n            if (this.dateRangeFormGroup.get(this.config.children[index].name).errors) {\n                for (const error of Object.keys(this.dateRangeFormGroup.get(this.config.children[index].name).errors)) {\n                    if (errors === null) {\n                        errors = {};\n                    }\n                    if (!errors.hasOwnProperty(error) ) {\n                        errors[error] = true;\n                    }\n                }\n            }\n        }\n        return errors;\n    }\n\n    openPicker(index: number) {\n        const flatpickrComp = this;\n        // Potreba nastavit timeout jinak se hned kalendar zavre\n        setTimeout(() => {\n            if (index === 0) {\n                flatpickrComp.flatPickrFrom.open();\n            } else {\n                flatpickrComp.flatPickrTo.open();\n            }\n        }, 0);\n    }\n\n    onValueUpdated(index: number, event: any) {// any -> FlatpickrOutputOptions\n        // timeout fix problem when you manually edit minutes in picker (by keyboard) and dont pres enter\n        // the problem is that value is not set in right order and is replaced by string representation\n        setTimeout(() => {\n            if (event.selectedDates.length > 0) {\n                this.dateRangeFormGroup.get(this.config.children[index].name).setValue(event.selectedDates[0]);\n                this.checkDates(index, event.selectedDates[0]);\n                this.updateValue();\n                this.checkView();\n            }\n        }, 0);\n    }\n\n    checkDates(index: number, newDate: Date) {\n        let fromDate = this.dateRangeFormGroup.get(this.config.children[0].name).value;\n        let toDate = this.dateRangeFormGroup.get(this.config.children[1].name).value;\n\n        // sync both dates if initital view === today\n        if (this.isFirstChange && this.config.attr['autorewind']) {\n            this.isFirstChange = false;\n            if (this.isNotUserDate(fromDate) && index === 1) {\n                this.dateRangeFormGroup.get(this.config.children[0].name).setValue(newDate);\n                fromDate = newDate;\n            }\n            if (this.isNotUserDate(toDate) && index === 0) {\n                this.dateRangeFormGroup.get(this.config.children[1].name).setValue(newDate);\n                toDate = newDate;\n            }\n        }\n\n        if (fromDate !== '' && toDate !== '') {\n            // set validation if from > to\n            if (fromDate > toDate) {\n                // set error on from\n                // Pozor od je větší než do\n                this.dateRangeFormGroup.get(this.config.children[index].name).setErrors({'from-higher-than-to': true});\n\n                this.dateRangeFormGroup.get(this.config.children[0].name).markAsTouched();\n                this.dateRangeFormGroup.get(this.config.children[1].name).markAsTouched();\n            } else {\n                // slozitej reset ...\n                this.dateRangeFormGroup.get(this.config.children[0].name).setErrors({'from-higher-than-to': false});\n                this.dateRangeFormGroup.get(this.config.children[1].name).setErrors({'from-higher-than-to': false});\n                this.dateRangeFormGroup.get(this.config.children[0].name).updateValueAndValidity();\n                this.dateRangeFormGroup.get(this.config.children[1].name).updateValueAndValidity();\n            }\n        }\n    }\n\n    isNotUserDate(date: Date | string): boolean {\n        if (date === '') {\n            return true;\n        }\n        const today = new Date();\n        let isToday = false;\n        if (date instanceof Date) {\n            if (date.getFullYear() === today.getFullYear()\n                && date.getMonth() === today.getMonth()\n                && date.getDay() === today.getDay()\n            ) {\n                isToday = true;\n            }\n        }\n        return isToday;\n    }\n\n\n    clearSelection(index: number) {\n        this.dateRangeFormGroup.get(this.config.children[index].name).setValue('');\n        this.updateValue();\n        this.checkView();\n    }\n\n    isFormRangeFlatpickerComponent() {}\n}\n","import {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    OnInit, ViewChild,\n} from '@angular/core';\nimport ImageUploader from 'quill-image-uploader';\nimport MagicUrl from 'quill-magic-url';\nimport BlotFormatter from 'quill-blot-formatter';\nimport {ImageDrop} from 'quill-image-drop-module';\nimport {ContentChange, CustomModule, QuillConfig, QuillEditorComponent, QuillModule} from 'ngx-quill';\nimport {EsFieldBase} from '../field-base/field-base.component';\nimport {NgClass} from '@angular/common';\nimport {ReactiveFormsModule, FormsModule} from '@angular/forms';\nimport {MatError} from '@angular/material/form-field';\nimport {FormHelpComponent} from '../form-help/form-help.component';\nimport {FormButtonDeleteComponent} from '../form-button-delete/form-button-delete.component';\n\n@Component({\n    selector: 'es-form-quill-wysiwyg',\n    styleUrls: ['form-wysiwyg-quill.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div [ngClass]=\"config.display ? 'display-true' : 'display-false'\"\n             class=\"dynamic-field form-input form-container\"\n             [formGroup]=\"group\">\n            <div #quillContainerCmp\n                 class=\"quill-container\"\n                 id=\"quill-container\"\n                 [style.width.px]=\"config.width\"\n                 [style.height.px]=\"config.height\"\n                 [style.max-width.%]=\"100\"\n                 [style.max-height.%]=\"100\"\n            >\n                @if (configReady) {\n                    <quill-editor\n                        #quillEditorCmp\n                        [(ngModel)]=\"value\"\n                        [ngModelOptions]=\"{standalone: true}\"\n                        [id]=\"config.name\"\n                        [attr.data-locale]=\"locale\"\n                        [attr.data-tooltips]=\"showTooltips\"\n                        [modules]=\"quillConfig.modules\"\n                        [theme]=\"quillConfig.theme\"\n                        [bounds]=\"quillConfig.bounds\"\n                        [customModules]=\"customModules\"\n                        (onContentChanged)=\"onQuillChange($event)\"\n                        (onEditorCreated)=\"initEditor($event)\"\n                    ></quill-editor>\n                }\n                <mat-error>\n                    @for (msg of activeErrorMessages; track msg) {\n                        <span class=\"error-line\">{{ msg }}</span>\n                    }\n                </mat-error>\n            </div>\n            @if (config.help) {\n                <es-form-help [help]=\"config.help\" [label]=\"config.label\" [fc]=\"esForm\"></es-form-help>\n            }\n            @if (config.dButton?.display) {\n                <form-button-delete [config]=\"config\"\n                                    [configList]=\"configList\"\n                                    [group]=\"group\"\n                                    [_fc]=\"esForm\">\n                </form-button-delete>\n            }\n        </div>\n    `,\n    standalone: true,\n    imports: [\n        NgClass,\n        ReactiveFormsModule,\n        QuillModule,\n        FormsModule,\n        MatError,\n        FormHelpComponent,\n        FormButtonDeleteComponent,\n    ]\n})\nexport class FormWysiwygQuillComponent extends EsFieldBase implements OnInit {\n\n    constructor(cd: ChangeDetectorRef) {\n        super(cd);\n    }\n\n    @ViewChild('quillEditorCmp', {static: false}) quillEditorCmp: QuillEditorComponent;\n\n    quillConfig: QuillConfig = {\n        theme: 'snow',\n        modules: {\n            toolbar: true,\n            magicUrl: true,\n            blotFormatter: true,\n            imageUploader: false,\n            imageDrop: true,\n        },\n        bounds: '#quill-container'\n    };\n\n    showTooltips = true;\n    autoToolbar = false;\n    tableModule: any;\n\n    customModules: CustomModule[] = [\n        { implementation: ImageUploader, path: 'modules/imageUploader' },\n        { implementation: BlotFormatter, path: 'modules/blotFormatter' },\n        { implementation: MagicUrl, path: 'modules/magicUrl' },\n        { implementation: ImageDrop, path: 'modules/imageDrop' },\n        /*{ implementation: QuillBetterTable, path: 'modules/better-table' }*/\n    ];\n\n    value = '';\n\n    locale = 'cs';\n    configReady = false;\n\n    ngOnInit(): void {\n        if (this.config && this.config.value) {\n            this.value = this.config.value;\n        }\n        if (this.config && this.config.attr && this.config.attr['locale']) {\n            this.locale = this.config.attr['locale'];\n        }\n        if (this.config && this.config.attr && this.config.attr['theme']) {\n            this.quillConfig['theme'] = this.config.attr['theme'];\n        }\n        if (this.config && this.config.attr && this.config.attr['showTooltips']) {\n            this.showTooltips = this.config.attr['showTooltips'];\n        }\n        if (this.config && this.config.attr && this.config.attr['autoToolbar']) {\n            this.autoToolbar = this.config.attr['autoToolbar'];\n        }\n        if (this.config && this.config.attr && this.config.attr['customModules']) {\n            this.customModules = {...this.customModules, ...this.config.attr['customModules']};\n        }\n        if (this.config && this.config.attr && this.config.attr['toolbarConfig']) {\n// tslint:disable-next-line:max-line-length\nthis.quillConfig.modules['toolbar'] = { container: this.config.attr['toolbarConfig'], handlers: {'table': this.insertDefaultTable.bind(this)} };\n        }\n        if (this.config && this.config.attr && this.config.attr['imageResize']) {\n            this.quillConfig.modules['blotFormatter'] = this.config.attr['allowImageResize'];\n        }\n        if (this.config && this.config.attr && this.config.attr['autoFormatURL']) {\n            this.quillConfig.modules['magicUrl'] = this.config.attr['autoFormatURL'];\n        }\n        if (this.config && this.config.attr && this.config.attr['imageDrop']) {\n            this.quillConfig.modules['imageDrop'] = this.config.attr['imageDrop'];\n        }\n        if (this.config && this.config.attr && this.config.attr['uploadImages'] && this.config.attr['dataURL']) {\n            const dataURL = this.config.attr['dataURL'];\n            this.quillConfig.modules['imageUploader'] = {\n                upload: (file) => {\n                    return new Promise((resolve, reject) => {\n                        this.uploadImage(file, dataURL).then(res => {\n                            if (!res.ok) {\n                                reject(new Error('QuillJS: Couldn\\'t upload image'));\n                            }\n                            res.json().then(data => {\n                                if (data['success'] && data['data'] && data['data']['baseurl'] && data['data']['files'] && data['data']['files'][0]) {\n                                    resolve(data['data']['baseurl'] + data['data']['files'][0]);\n                                } else {\n                                    reject(new Error('QuillJS: Invalid response when uploading image'));\n                                }\n                            });\n                        });\n                    });\n                }\n            };\n        }\n        this.configReady = true;\n        this.cd.markForCheck();\n    }\n\n    initEditor(editor: any) {\n        editor.clipboard.dangerouslyPasteHTML(this.config.value);\n        /*this.tableModule = editor.getModule('better-table');*/\n    }\n\n    insertDefaultTable() {\n        /*this.tableModule.insertTable(3, 3);*/\n    }\n\n    onQuillChange(e: ContentChange) {\n        this.config.value = e.html;\n        this.group.controls[this.config.name].setValue(this.config.value);\n    }\n\n    uploadImage(file: File, dataURL: string) {\n        const form = new FormData();\n        const mime: string[] = file.type.match(\n            /\\/([a-z0-9]+)/i\n        ) as string[];\n        const extension: string = mime[1]\n            ? mime[1].toLowerCase()\n            : '';\n        form.append(\n            'files[0]',\n            file,\n            file.name ||\n            Math.random()\n                .toString()\n                .replace('.', '') +\n            '.' +\n            extension\n        );\n        return fetch(dataURL, {method: 'POST', body: form});\n    }\n}\n","import {\n    ComponentRef, Directive, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, Type,\n    ViewContainerRef\n} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\nimport {EsFormField} from '../../model/es-form-field.interface';\nimport {EsFormFieldConfig} from '../../model/es-config.interface';\nimport {FormButtonComponent} from '../form-button/form-button.component';\nimport {FormButtonToggleComponent} from '../form-button-toggle/form-button-toggle.component';\nimport {FormInputComponent} from '../form-input/form-input.component';\nimport {FormSelectComponent} from '../form-select/form-select.component';\nimport {FormAutocompleteComponent} from '../form-autocomplete/form-autocomplete.component';\nimport {FormHiddenComponent} from '../form-hidden/form-hidden.component';\nimport {FormCheckboxComponent} from '../form-checkbox/form-checkbox.component';\nimport {FormSlideToggleComponent} from '../form-slide-toggle/form-slide-toggle.component';\nimport {FormTextareaComponent} from '../form-textarea/form-textarea.component';\nimport {FormColorpickerComponent} from '../form-colorpicker/form-colorpicker.component';\nimport {FormSelectImageComponent} from '../form-select-image/form-select-image.component';\nimport {FormDraggableListComponent} from '../form-draggable-list/form-draggable-list.component';\nimport {FormUploadComponent} from '../form-upload/form-upload.component';\nimport {FormUploadImageComponent} from '../form-upload-image/form-upload-image.component';\nimport {FormProgressBarComponent} from '../form-progress-bar/form-progress-bar.component';\nimport {FormHtmlComponent} from '../form-html/form-html.component';\nimport {FormButtonAddComponent} from '../form-button-add/form-button-add.component';\nimport {FormSelectAjaxComponent} from '../form-select-ajax/form-select-ajax.component';\nimport {FormSliderComponent} from '../form-slider/form-slider.component';\nimport {FormCaptchaComponent} from '../form-captcha/form-captcha.component';\nimport {FormWysiwygJoditComponent} from '../form-wysiwyg-jodit/form-wysiwyg-jodit.component';\nimport {FormAjaxAutocompleteComponent} from '../form-ajax-autocomplete/form-ajax-autocomplete.component';\nimport {FormCheckListComponent} from '../form-check-list/form-check-list.component';\nimport {FormFlatpickrComponent} from '../form-flatpickr/form-flatpickr.component';\nimport {FormRangeFlatpickerComponent} from '../form-range-flatpicker/form-range-flatpicker.component';\nimport {FormWysiwygQuillComponent} from '../form-wysiwyg-quill/form-wysiwyg-quill.component';\nimport {IEsFormComponent} from '../../container/es-form.interface';\nimport {EsFormActionType} from '../../model/es-form-action.interface';\nimport {IDynamicField} from './dynamic-field.interface';\n\nconst components: {[type: string]: Type<EsFormField>} = {\n    'autocomplete': FormAutocompleteComponent,\n    'select-button': FormButtonToggleComponent,\n    'button': FormButtonComponent,\n    'submit': FormButtonComponent,    // alias button\n    'input': FormInputComponent,\n    'number': FormInputComponent,   // alias pro input type=\"number\"\n    'text': FormInputComponent,     // alias pro input type=\"text\"\n    'password': FormInputComponent, // alias pro input type=\"password\" // todo bezpecnejsi prenos ??\n    'email': FormInputComponent, // alias pro input type=\"email\"\n    'text-area': FormTextareaComponent,\n    'hidden': FormHiddenComponent,\n    'select': FormSelectComponent,\n    'multi-select': FormSelectComponent,\n    'flat-pickr': FormFlatpickrComponent,\n    'checkbox': FormCheckboxComponent,\n    'slide-toggle': FormSlideToggleComponent,\n    'color': FormColorpickerComponent,\n    'select-image': FormSelectImageComponent,\n    'draggable-multi-select': FormDraggableListComponent,\n    'upload': FormUploadComponent,\n    'upload-image': FormUploadImageComponent,\n    'progress-bar': FormProgressBarComponent,\n    'html': FormHtmlComponent,\n    'copy-button': FormButtonAddComponent,\n    'ajax-select': FormSelectAjaxComponent,\n    'slider': FormSliderComponent,\n    'slider-range': FormSliderComponent,\n    'captcha': FormCaptchaComponent,\n    'wysiwyg': FormWysiwygJoditComponent,\n    'wysiwyg-quill': FormWysiwygQuillComponent,\n    'ajax-autocomplete': FormAjaxAutocompleteComponent,\n    'check-list': FormCheckListComponent,\n    'flat-pickr-range': FormRangeFlatpickerComponent,\n};\n\n@Directive({\n    selector: '[dynamicField]',\n    standalone: true\n})\n\nexport class DynamicFieldDirective implements EsFormField, OnChanges, OnInit, IDynamicField {\n\n    constructor(\n        private container: ViewContainerRef\n    ) {}\n\n    static ACTIONS_MAX_RECURSION_DEPTH = 10;\n    @Input() configList: EsFormFieldConfig[] = [];\n    @Input() config: EsFormFieldConfig;\n    @Input() group: FormGroup;\n    @Input() esForm: IEsFormComponent;\n\n    component: ComponentRef<EsFormField>;\n\n    @Output() dynamicFieldReady: EventEmitter<any> = new EventEmitter<any>();\n\n    ngOnChanges(_: SimpleChanges) {\n        if (this.component) {\n            this.component.instance.config = this.config;\n            this.component.instance.group = this.group;\n            this.component.instance.dynamicField = this;\n            this.component.instance.checkView?.();       // rovnou vynutit refresh view\n            this.dynamicFieldReady.emit(this.component);  // znovu nahlasit \"jsem tu\" i pri recyklaci\n        }\n    }\n\n    ngOnInit() {\n        if (!components[this.config.type]) {\n            const supportedTypes = Object.keys(components).join(', ');\n            throw new Error(\n                `Trying to use an unsupported type (${this.config.type}).\n                Supported types: ${supportedTypes}`\n            );\n        }\n        this.component = this.container.createComponent<EsFormField>(components[this.config.type]);\n        this.component.instance.configList = this.configList;\n        this.component.instance.config = this.config;\n        this.component.instance.group = this.group;\n        this.component.instance.esForm = this.esForm;\n        this.component.instance.dynamicField = this;\n        this.dynamicFieldReady.emit(this.component);\n    }\n\n    applyActionOnValueChange(\n        newValue: any,\n        configParam: EsFormFieldConfig = null,\n        configListParam: EsFormFieldConfig[] = null,\n        depth: number = 0,\n        forceHide: boolean = false,\n    ): void {\n        if (depth > DynamicFieldDirective.ACTIONS_MAX_RECURSION_DEPTH) {\n            return;\n        }\n\n        const selectedValues = Array.isArray(newValue) ? newValue : [newValue];\n        const configList = configListParam ?? this.configList;\n        const config = configParam ?? this.config;\n        const toVisit: EsFormFieldConfig[] = [];\n\n        for (const action of config.actions) {\n            for (const item of action.items) {\n                const option = configList.find((opt) => opt.name === item);\n                if (!option) {\n                    continue;\n                }\n                if (action.value === undefined) {\n                    continue;\n                }\n                const displayBefore = option.display;\n\n                if (forceHide) {\n                    // řídící prvek je schovaný → schovej i vše, co ovládá\n                    this.esForm.setDisplay(item, false);\n                } else {\n                    switch (action.action) {\n                        case EsFormActionType.SHOW:\n                        case EsFormActionType.HIDE: {\n                            const isMatch = selectedValues.some((val) =>\n                                this.matchesActionValue(action.value, val)\n                            );\n                            if (isMatch) {\n                                this.esForm.setDisplay(item, action.action === EsFormActionType.SHOW);\n                            } else if (newValue === '' || selectedValues.length === 0) {\n                                this.esForm.setDisplay(item, false);\n                            }\n                            break;\n                        }\n                        case EsFormActionType.SHOW_EXCEPT:\n                        case EsFormActionType.HIDE_EXCEPT: {\n                            const actionValues = Array.isArray(action.value) ? action.value : [action.value];\n                            const isMatch = actionValues.some((acVal) =>\n                                selectedValues.some((val) => this.looseEquals(acVal, val))\n                            );\n                            const shouldDisplay = action.action === EsFormActionType.SHOW_EXCEPT ? isMatch : !isMatch;\n                            this.esForm.setDisplay(item, shouldDisplay);\n                            break;\n                        }\n                    }\n                }\n\n                if (option.display !== displayBefore) {\n                    toVisit.push(option);\n                }\n            }\n        }\n\n        for (const item of toVisit) {\n            // pokud je prvek, do kterého scházíme, teď schovaný,\n            // vynutíme schování i všech jeho podřízených\n            this.applyActionOnValueChange(\n                this.esForm.getValue(item.name),\n                this.esForm.getFieldConfig(item.name),\n                configList,\n                depth + 1,\n                item.display === false,\n            );\n        }\n    }\n\n    private matchesActionValue(actionValue: any, newValue: any): boolean {\n        const values = Array.isArray(actionValue) ? actionValue : [actionValue];\n        return values.some((val) => this.looseEquals(val, newValue));\n    }\n\n    private looseEquals(a: any, b: any): boolean {\n        if (a === b) {\n            return true;\n        }\n        const normalize = (v: any): string => {\n            if (v === true || v === 'true' || v === '1' || v === 1) { return '1'; }\n            if (v === false || v === 'false' || v === '0' || v === 0) { return '0'; }\n            return v?.toString() ?? '';\n        };\n        return normalize(a) === normalize(b);\n    }\n\n    checkView() {}\n}\n","import {Component, ComponentRef, Input, OnChanges, SimpleChanges} from '@angular/core';\nimport {EsFormField} from '../../model/es-form-field.interface';\nimport {DynamicFieldDirective} from './dynamic-field.directive';\n\n\n@Component({\n    selector: 'es-df',\n    template: `\n        @for (field of fieldArr; track field.config.name) {\n            <ng-container dynamicField\n                          [configList]=\"field?.configList\"\n                          [config]=\"field?.config\"\n                          [group]=\"field?.group\"\n                          [esForm]=\"field?.esForm\"\n                          (dynamicFieldReady)=\"fieldReady($event)\"\n            ></ng-container>\n        }\n    `,\n    standalone: true,\n    imports: [DynamicFieldDirective],\n})\nexport class DynamicFieldComponent implements OnChanges {\n    @Input() field: EsFormField;\n    fieldArr: EsFormField[] = [];\n\n    fieldReady($event: ComponentRef<EsFormField>) {\n        this.field.esForm.fieldReady($event);\n    }\n\n    ngOnChanges(_changes: SimpleChanges): void {\n        // ta direktiva [dynamicField]\n        // musi byt v ngFor aby se spravne prerendroval field pri zmenach\n        if (this.field && this.field.config) {\n            this.fieldArr = [this.field];\n        }\n    }\n}\n","export enum EsFormResponseMessageType {\n    TYPE_OK = 0,\n    TYPE_ERROR = 1,\n}\n\nexport interface EsFormResponseMessage {\n    type: EsFormResponseMessageType;\n    message: string;\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport function lengthValidator(\n    min: number | null,\n    max: number | null,\n    enableEmpty: boolean,\n): ValidatorFn {\n    return (control: AbstractControl): ValidationErrors | null => {\n        const value = control.value;\n\n        // prázdná hodnota\n        if (value === null || value === undefined || value === '') {\n            return enableEmpty\n                ? null\n                : { length: { requiredMin: min, requiredMax: max, actualLength: 0 } };\n        }\n\n        const length = ('' + value).length;\n\n        const tooShort = min !== null && min !== undefined && length < min;\n        const tooLong = max !== null && max !== undefined && length > max;\n\n        if (tooShort || tooLong) {\n            return { length: { requiredMin: min, requiredMax: max, actualLength: length } };\n        }\n        return null;\n    };\n}\n","import {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ComponentRef,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Output,\n    SimpleChanges,\n    ViewEncapsulation\n} from '@angular/core';\nimport {FormBuilder, FormControl, FormGroup, ValidatorFn, Validators, ReactiveFormsModule} from '@angular/forms';\nimport {EsFormFieldConfig} from '../model/es-config.interface';\nimport {EsForm} from '../model/es-form.interface';\nimport {EsFormService} from '../es-form.service';\nimport { HttpParams } from '@angular/common/http';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Observable, Subject, Subscription} from 'rxjs';\nimport {filter, skip, take, takeUntil} from 'rxjs/operators';\nimport {EsFormField} from '../model/es-form-field.interface';\nimport {EsSnackBarService, EsSnackBarConfig, EsSnackBarPanelClass} from '@eurosat/snackbar';\nimport {DateUtil} from '../util/date-util';\nimport {EsFormTranslates} from '../model/es-form.translates';\nimport {EsResizedEvent, EsResizedEventDirective} from '@eurosat/resized-event';\nimport {FormButtonActions} from '../components/form-button/form-button-actions';\nimport {EsFormConfigGroup} from '../model/es-form-config-group.interface';\nimport { EsFormResponseMessage, EsFormResponseMessageType } from '../model/es-form-response-message';\nimport {EsFormActionType} from '../model/es-form-action.interface';\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {ES_FORM_UPLOAD_DESCRIPTIONS_SUFFIX} from '../components/form-upload/form-upload.constants';\nimport {IEsFormComponent} from './es-form.interface';\nimport {lengthValidator} from '../util/validators';\nimport {ES_FORM_HELP_FORM} from '../components/form-help/form-help.token';\nimport {MatProgressSpinner} from '@angular/material/progress-spinner';\nimport {DynamicFieldDirective} from '../components/dynamic-field/dynamic-field.directive';\n\n\ninterface DynamicFieldConfigList {\n    [key: string]: EsFormField;\n}\n\n@Component({\n    exportAs: 'esFormService',\n    selector: 'es-form',\n    styleUrls: ['./es-form.component.scss'],\n    templateUrl: './es-form.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    // form-help (checkbox) otevira v dialogu formular napovedy - typ dostane odsud, ne importem (cyklus)\n    providers: [{provide: ES_FORM_HELP_FORM, useFactory: () => EsFormComponent}],\n    standalone: true,\n    imports: [\n        MatProgressSpinner,\n        ReactiveFormsModule,\n        EsResizedEventDirective,\n        DynamicFieldDirective,\n    ],\n})\n\n/*\n {{ form.value | json }}\n {{ form.valid | json }}\n {{ form.get('datetimetest1').errors | json }}\n {{ cols }}\n {{ colGroups }}\n {{ form.get('kokos').errors | json }}\n */\n\nexport class EsFormComponent implements OnChanges, OnDestroy, IEsFormComponent {\n\n    @Input() name: string;\n    @Input() cols = 1;\n    @Input() formUrl: string;\n    @Input() dynamicForm: EsForm;  // todo tenhle input potom asi zrusit\n    @Input() maxWidth: number;\n    @Input() autofocus = true;\n    @Input() params: HttpParams = null;\n    @Input() postParams: FormData = null;\n    @Input() snackBarMessage: string;\n    @Input() formErrors: any;\n    @Input() postingData: boolean;\n    @Input() onSuccessReload = true;\n    @Output() submit: EventEmitter<any>                  = new EventEmitter<any>();\n    @Output() formSubmitEmit: EventEmitter<FormData>     = new EventEmitter<FormData>();\n    @Output() formCreated: EventEmitter<IEsFormComponent> = new EventEmitter<IEsFormComponent>();\n    @Output() formSuccess: EventEmitter<IEsFormComponent> = new EventEmitter<IEsFormComponent>();\n    @Output() formError: EventEmitter<IEsFormComponent>   = new EventEmitter<IEsFormComponent>();\n    @Output() reloadForm: EventEmitter<FormData>   = new EventEmitter<FormData>();\n    @Output() formUrlChange: EventEmitter<string> = new EventEmitter<string>();\n\n    copyBtnAdd: Subject<EsFormFieldConfig> = new Subject<EsFormFieldConfig>();\n    copyBtnDel: Subject<EsFormFieldConfig> = new Subject<EsFormFieldConfig>();\n\n    // ajax select na prepinani skupiny napr ???\n    @Input() simpleForm = false;\n    @Input() fontSize = 100;\n\n    form: FormGroup;\n    tmpGroups: EsFormConfigGroup[] = null;\n    tmpCols: {index: number}[] = null;\n    tmpColGroups: EsFormConfigGroup[][] = null;\n\n    isInitialized = false;\n    /** dButton se nastavuje jednou na kazdou generaci configu (novy config = reload ze serveru) */\n    private deleteButtonsApplied = false;\n    destroy$ = new Subject<void>();\n    response: any = {}; // todo otypovat tady i pro service\n    formWidth = 400;\n\n    subComponents: any[] = [];\n    pauseSubmit = false;\n    activeRequest: Subscription;\n    translates = new EsFormTranslates();\n    formButtons: EsFormFieldConfig[] = [];\n    firstRender = true;\n    isMobile = false;\n    emitOnSubmit = false;\n    _postParams: FormData;\n    fields: DynamicFieldConfigList = {};\n    reloading = false;\n\n    colGroups(col): EsFormConfigGroup[] {\n        return this.getGroups().filter(obj => {\n            if (this.getGroups().indexOf(obj) % (this.cols) === col) {\n                return true;\n            }\n        });\n    }\n\n    colsIndex() {\n        if (this.tmpCols === null) {\n            this.tmpCols = [];\n            for (let i = 0; i < this.cols; i++) {\n                this.tmpCols.push({index: i});\n            }\n        }\n    }\n\n    getGroups(): EsFormConfigGroup[] {\n        // make groups => <div class=\"form-group\">\n        if (this.tmpGroups === null) {\n            this.tmpGroups = [];\n            let activeGroupId = 0;\n            for (let i = 0; i < this.dynamicForm.config.length; i++) {\n\n                // fix: always start with group\n                if (i === 0 && this.dynamicForm.config[0].type !== 'group') {\n                    this.tmpGroups.push({label: '', controls: [], colspan: 1, rowspan: 1, name: 'groupId' + i});\n                    activeGroupId = this.tmpGroups.length - 1;\n                }\n\n                // make new group\n                if (this.dynamicForm.config[i].type === 'group') {\n                    this.tmpGroups.push(this.getGroupConfigFromFormConfig(this.dynamicForm.config[i]));\n                    activeGroupId = this.tmpGroups.length - 1;\n                }\n\n                // insert control in active group\n                if (this.dynamicForm.config[i].type !== 'group'\n                    && this.dynamicForm.config[i].type !== 'button'\n                    && this.dynamicForm.config[i].type !== 'submit') {\n                    const control = this.dynamicForm.config[i];\n                    this.tmpGroups[activeGroupId].controls.push(control);\n                }\n            }\n        }\n        return this.tmpGroups;\n    }\n\n    getGroupConfigFromFormConfig(config: EsFormFieldConfig): EsFormConfigGroup {\n        return {\n            label: config.label,\n            controls: [],\n            colspan: config.attr?.['colspan'],\n            rowspan: config.attr?.['rowspan'],\n            name: config.name\n        };\n    }\n\n    getButtons(): EsFormFieldConfig[] {\n        return this.dynamicForm.config ? this.dynamicForm.config.filter(\n            ({type}) => type === 'button' || type === 'submit'\n        ) : []; }\n\n\n    get controls(): EsFormFieldConfig[] { return this.dynamicForm.config ?\n        // && type !== 'submit', => FormButtonActions.CLICK !\n        this.dynamicForm.config.filter(({type}) => type !== 'button' && type !== 'group') : []; }\n    get controlsToRender(): EsFormFieldConfig[] { return this.dynamicForm.config ?\n        this.dynamicForm.config.filter(({type}) => type !== 'group') : []; }\n    get changes() { return this.form.valueChanges; }\n    get valid() { return this.form.valid; }\n    get value() { return this.form.value; }\n\n\n    constructor(\n        private fb: FormBuilder,\n        private formService: EsFormService,\n        private snackBar: EsSnackBarService,\n        private translate: TranslateService,\n        private cd: ChangeDetectorRef,\n        private breakpointObserver: BreakpointObserver,\n    ) {\n        this.breakpointObserver\n            .observe([Breakpoints.XSmall, Breakpoints.Small])\n            .pipe(takeUntil(this.destroy$))\n            .subscribe(result => {\n                this.isMobile = result.matches;\n                this.cd.markForCheck(); // Optional: force change detection if needed\n            });\n    }\n\n    onFormResized(e: EsResizedEvent) {\n        if (e.newWidth !== this.formWidth) {\n            this.formWidth = e.newWidth;\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['postParams'] && this.postParams !== undefined) {\n            this._postParams = this.postParams;\n        }\n\n        if (changes['formUrl'] && this.formUrl !== '' && this.formUrl) {\n            if (!(changes['postParams'] && this._postParams instanceof FormData)) {\n                // Při změně url by se měli vždy vyprázdit i post data! Jediná vyjímka je,\n                // když se post data předali společně se změné url changes['postParams']\n                this._postParams = new FormData();\n            }\n            if (this.form) {\n                // this.form.reset();    // EKJ-432 Angular aktivity - rozbijelo na knize zmenu url v aktivnim formulari\n                this.postingData = true; // pouzito i zde jako indikator nacitani noveho formu\n            }\n            setTimeout(() => {\n                this.reload();\n            });\n        }\n\n        if (changes['dynamicForm'] && this.dynamicForm !== undefined && this.dynamicForm !== null) {\n            if (!(this._postParams instanceof FormData)) {\n                this._postParams = new FormData();\n            }\n            this.emitOnSubmit = true;\n            this.setDynamicForm(this.dynamicForm);\n        } else if (changes['dynamicForm']) {\n            this.isInitialized = false;\n        }\n\n        if (changes['formErrors'] && this.formErrors !== undefined && this.dynamicForm !== null) {\n            this.onFormSubmitResponse(this.formErrors);\n        }\n    }\n\n    createGroups() {\n        this.tmpGroups = null;\n        this.tmpCols = null;\n        this.tmpColGroups = [];\n\n        this.getGroups();\n        // this.subComponents = [];\n        this.cd.markForCheck();\n    }\n\n    reload(showSpinner: boolean = false, params = null) {\n        this.reloading = true;\n\n        if (this.activeRequest) {\n            this.activeRequest.unsubscribe();\n        }\n\n        if (showSpinner) {\n            this.isInitialized = false;\n        }\n\n        if (params == null) {\n            params = this.params;\n        }\n\n        this.activeRequest = this.formService\n            .getDynamicForm(this.formUrl, params, this._postParams)\n            .subscribe(dynamicForm => {\n                setTimeout(() => {\n                    this.setDynamicForm(dynamicForm);\n                });\n            });\n    }\n\n    setDynamicForm(dynamicForm: EsForm) {\n        this.params = null;\n        this.dynamicForm = dynamicForm;\n        this.tmpCols = null;\n        this.tmpGroups = null;\n        this.subComponents = [];\n        this.firstRender = true;\n        if (this.autofocus) { this.initFocused(); }\n        this.form = this.createGroup();\n        this.cols = dynamicForm.columns;\n        this.createGroups();\n        this.formButtons = this.getButtons();\n        this.setVisibility();\n        // dButton musi byt na configu jiz pred prvnim renderem, jinak by po reloadu delete button zmizel\n        this.deleteButtonsApplied = false;\n        this.setDeleteButtons();\n        this.initDynamicFieldConfigList();\n        this.isInitialized = true;\n        this.postingData = false;\n        this.cd.markForCheck();\n    }\n\n\n    initFocused() {\n        if (!this.isMobile) {\n            const focusable: string[] = [\n                'ajax-autocomplete',\n                'wysiwyg',\n                'wysiwyg-quill',\n                'input',\n                'number',\n                'text',\n                'password',\n                'autocomplete',\n                'text-area'\n            ];\n            const focusedFields: EsFormFieldConfig[] = [];\n            // focused from config\n            for (const field of this.dynamicForm.config) {\n                if (field.focused\n                    && focusable.indexOf(field.type) > -1\n                    && field.display === true\n                ) {\n                    focusedFields.push(field);\n                }\n                // clear all focused\n                field.focused = false;\n            }\n            // 0? => focused on empty, visible inputs\n            if (focusedFields.length === 0) {\n                for (const field of this.dynamicForm.config) {\n                    if (focusable.indexOf(field.type) > -1\n                        && field.value === ''\n                        && field.display === true\n                    ) {\n                        focusedFields.push(field);\n                        break;\n                    }\n                }\n            }\n            // 0? => focused on non-empty, visible inputs\n            if (focusedFields.length === 0) {\n                for (const field of this.dynamicForm.config) {\n                    if (focusable.indexOf(field.type) > -1\n                        && field.display === true\n                    ) {\n                        focusedFields.push(field);\n                        break;\n                    }\n                }\n            }\n            // set focused\n            if (focusedFields.length > 0) {\n                focusedFields[0].focused = true;\n            }\n        }\n    }\n\n    createGroup() {\n        const group = this.fb.group({});\n        this.controls.forEach(control => group.addControl(control.name, this.createControl(control)));\n        return group;\n    }\n\n    createControl(config: EsFormFieldConfig): FormControl {\n        const { disabled, validation } = config;\n        let value = config.value;\n\n        if ((config.type === 'flat-pickr' || config.type === 'date-time-picker')\n            && value !== null && value !== undefined && value !== '') {\n            value = value instanceof Date ? value : DateUtil.dateFromTimestamp(value);\n        }\n\n        const validators: ValidatorFn[] = [];\n        if (validation) {\n            validation.forEach((error) => {\n                /**\n                 * nerefaktorovat na Validators.required ...\n                 * potrebujeme ty stringovy klice pro detekci a vyrobu error message na formularovem prvku\n                 * Validators.minLength(4) => .hasError('minlength')\n                 * <mat-hint *ngIf=\"group.get(config.name).hasError('required')\n                 * && group.get(config.name).touched\">Nesmí být prázdný</mat-hint>\n                 */\n\n                switch (error.name) {\n                    case 'required':\n                        validators.push(Validators.required);\n                        break;\n                    case 'email':\n                        validators.push(Validators.email);\n                        break;\n                    case 'minlength':\n                        validators.push(Validators.minLength(parseInt(error.value, null)));\n                        break;\n                    case 'maxlength':\n                        validators.push(Validators.maxLength(parseInt(error.value, null)));\n                        break;\n                    case 'length': {\n                        const [min, max, enableEmpty] = error.value;\n                        const toNum = (v: any): number | null =>\n                            v === null || v === undefined || v === '' ? null : parseInt(v, 10);\n                        validators.push(lengthValidator(toNum(min), toNum(max), !!enableEmpty));\n                        break;\n                    }\n                }\n            });\n        }\n        const control = this.fb.control({ disabled, value }, validators);\n        control.markAsTouched();\n        return control;\n    }\n\n    fieldReady(e: ComponentRef<EsFormField>) {\n        const name = e.instance.config?.name;\n        const idx = this.subComponents.findIndex(sc => sc.config?.name === name);\n\n        if (idx > -1) {\n            this.subComponents[idx] = e.instance; // update (recyklace po reloadu)\n        } else {\n            this.subComponents.push(e.instance);  // nova komponenta\n        }\n\n        if (this.subComponents.length === this.controlsToRender.length) {\n            if (this.firstRender) {\n                this.firstRender = false;\n                this.onFormCreated();\n                this.formService.dynamicFormCreated(this);\n                this.setActions();\n                this.copyButtonCheckView();\n                this.setDeleteButtons();\n            }\n        }\n    }\n\n    onFormCreated() {\n        this.formCreated.emit(this as IEsFormComponent);\n\n        // global event to fix iOS ... <body display='flex' => 'block' toggle\n        if (window) {\n            window.dispatchEvent(new Event('esFormCreated', { bubbles: true }));\n        }\n    }\n\n    initDynamicFieldConfigList() {\n        // zatim asi jen pro extend, pro snadny zapis <df> ve view\n        this.dynamicForm.config.forEach(config => {\n            this.fields[config.name] = {\n                config: config,\n                configList: this.dynamicForm.config,\n                group: this.form,\n                checkView(): any {\n                },\n                esForm: this\n            };\n        });\n    }\n\n    getSubComponent(name: string) {\n        let $return = null;\n        this.subComponents.forEach(sc => {\n            if (sc['config'].name === name) {\n                $return = sc;\n            }\n        });\n        return $return;\n    }\n\n    formSubmit(event?: Event) {\n        if (event) {\n            event.preventDefault();\n            event.stopPropagation();\n        }\n        if (!this.pauseSubmit) {\n            this.handleSubmit();\n        }\n    }\n\n    handleSubmit(showSnackBar: boolean = true) {\n\n        const params = new HttpParams();  // GET params, ted se nevyuzivaji\n\n        // aby se dalo provolávat z jinych komponent\n        const formData = this.getPostData();\n\n        // pokud je config nastaven z inputu tak submit musi byt output\n        if (this.emitOnSubmit) {\n            this.formSubmitEmit.emit(formData);\n            return;\n        }\n\n        /**\n         * zpracovani odpovedi ze serveru => defakto prijde novej formular + errors\n         */\n        this.postingData = true;\n        this.cd.markForCheck();\n        this.formService.httpPost(this.dynamicForm.url, formData, {params})\n            .pipe(takeUntil(this.destroy$))\n            .subscribe((response: any) => {\n                this.postingData = false;\n                this.cd.markForCheck();\n                /**\n                 * nasetovani chyby 'server-error' = true\n                 * plus zapis odpovidajici error message do pole dynamicForm.config.validation\n                 */\n                this.onFormSubmitResponse(response, showSnackBar);\n            });\n    }\n\n    onFormSubmitResponse(response, showSnackBar: boolean = true) {\n        if (response.errors) {\n            // tzn je to response formu !!\n            for (const error of response.errors) {\n                this.dynamicForm.config.forEach(config => {\n                    this.addServerErrorValidator(config, error[0], error[1]);\n                });\n                if (this.form.controls[error[0]]) {\n                    // set error\n                    this.form.controls[error[0]].setErrors({'server-error': true});\n                } else {\n                    // set error for children\n                    const parentName = this.findParentName(error[0]);\n                    if (parentName.length > 0 && parentName !== error[0]) {\n                        const sc = this.getSubComponent(parentName);\n\n                        // set errors on date-range-angular\n                        // TODO: asi udelat nejake lepe a vhodneji - odstraneno kvuli cycle importu range pickeru (nahrada za instanceof)\n                        if ('isFormRangeFlatpickerComponent' in sc) {\n                            sc.config.children.forEach(childConfig => {\n                                this.addServerErrorValidator(childConfig, error[0], error[1]);\n                            });\n                            sc.dateRangeFormGroup.controls[error[0]].setErrors({'server-error': true});\n                        }\n                    }\n                }\n            }\n            if (response.errors.length === 0) {\n                // setovani erroru na null.. (kvuli tomu kdyz je prvek s errorem schovan akci hidden\n                for (const prop in this.form.controls) {\n                    if (this.form.controls.hasOwnProperty(prop)) {\n                        this.form.controls[prop].setErrors(null);\n                    }\n                }\n\n                this.response = response;\n                if (!this.emitOnSubmit && response['kozakuvFormUrlString']) {\n                    this.formUrlChange.emit(response['kozakuvFormUrlString']);\n                }\n                this.formService.dynamicFormSuccess(this);\n                this.formSuccess.emit(this);\n                if (this.formUrl !== '' && this.onSuccessReload) {\n                    this._postParams = new FormData();\n                    this.reload();\n                }\n\n                if (showSnackBar) {\n                    const config = new EsSnackBarConfig();\n                    config.duration = 2000;\n                    config.panelClass = EsSnackBarPanelClass.SUCCESS;\n                    let snackBarMessage: string = this.translate.instant(EsFormTranslates.SUCCESS_SAVE); // uspesne ulozeno\n                    if (this.snackBarMessage) {\n                        snackBarMessage = this.snackBarMessage;\n                    }\n                    if (response.messages && response.messages > 0) {\n                        const snack = this.getSnack(response.messages);\n                        snackBarMessage = snack.message;\n                        config.panelClass = snack.panelClass;\n                    }\n                    this.snackBar.open(snackBarMessage, config);\n                    this.cd.detectChanges();\n                }\n\n                // odeslani form do parenta -> zavreni dialogu, nebo form.value v parent\n                this.submit.emit(this.value);\n            } else {\n                if (showSnackBar) {\n                    const config = new EsSnackBarConfig();\n                    config.duration = 2000;\n                    config.panelClass = EsSnackBarPanelClass.DANGER;\n                    let snackBarMessage: string = this.translate.instant(EsFormTranslates.ERROR_CHECK); // zkontrolujte chyby\n                    if (response.messages && response.messages > 0) {\n                        const snack = this.getSnack(response.messages);\n                        snackBarMessage = snack.message;\n                        config.panelClass = snack.panelClass;\n                    }\n                    this.snackBar.open(snackBarMessage, config);\n                    this.cd.detectChanges();\n                }\n                this.formService.dynamicFormError(this);\n                this.formError.emit(this);\n            }\n        } else {\n            // status code 200 ale neni to response formu !!!\n            const responseMessage = <EsFormResponseMessage>response;\n            const config = new EsSnackBarConfig();\n            config.duration = 2000;\n            if (responseMessage.type === EsFormResponseMessageType.TYPE_OK) {\n                config.panelClass = EsSnackBarPanelClass.SUCCESS;\n            } else {\n                config.panelClass = EsSnackBarPanelClass.WARNING;\n            }\n            if (responseMessage.message) {\n                this.snackBar.open(responseMessage.message, config);\n                this.cd.detectChanges();\n            } else {\n                this.snackBar.open(this.translate.instant(EsFormTranslates.GENERAL_ERROR), config);\n                this.cd.detectChanges();\n            }\n        }\n        this.checkView();\n    }\n\n    private findParentName(childName: string): string {\n        let name = null;\n        // date-range children\n        if (childName.includes('_from')) {\n            name = childName.replace('_from', '');\n        } else if (childName.includes('_to')) {\n            name = childName.replace('_to', '');\n        }\n        return name;\n    }\n\n    private addServerErrorValidator(config: EsFormFieldConfig, errorName: string, errorMessage: string) {\n        if (config.name === errorName) {\n            // pridava se do pole config.validation\n            // tech kontrol ma byt vice!, maji ruzne rules kdy se zobrazuji\n            // zobrazuje se posledni\n            let alreadyExists = false;\n            for (const validation of config.validation) {\n                if (validation.name === 'server-error') {\n                    validation.message = errorMessage;\n                    alreadyExists = true;\n                    break;\n                }\n            }\n            if (!alreadyExists) {\n                config.validation.push({\n                    name: 'server-error',\n                    message: errorMessage,\n                    rules: [],\n                });\n            }\n        }\n    }\n\n    getSnack(messages: EsFormResponseMessage[]): {message: string, panelClass: string} {\n        const snack = {message: '', panelClass: EsSnackBarPanelClass.SUCCESS};\n        if (messages[0].type !== EsFormResponseMessageType.TYPE_OK) {\n            snack.panelClass = EsSnackBarPanelClass.WARNING;\n        }\n        if (messages[0].message) {\n            snack.message = messages[0].message;\n        }\n        return snack;\n    }\n\n    getPostData(update: boolean = false, withoutType: string = ''): FormData {\n        const formData: FormData = new FormData();\n\n        for (const prop in this.form.controls) {\n            if (this.form.controls.hasOwnProperty(prop)) {\n                const value = this.getValue(prop);\n\n                // reformat value for specific types\n                for (const field of this.dynamicForm.config) {\n                    if (field.name === prop) {\n                        if (withoutType === '' ||  (withoutType !== '' && field.type !== withoutType)) {\n                            if (field.type === 'date-time-picker' || field.type === 'flat-pickr') {\n                                if (!(this.form.value[prop] === null\n                                    || this.form.value[prop] === undefined\n                                    || this.form.value[prop] === ''\n                                )) {\n                                    formData.set(prop, DateUtil.getTimestamp(this.form.value[prop]).toString());\n                                } else {\n                                    formData.set(prop, '');\n                                }\n                            } else if (field.type === 'date-range-angular' || field.type === 'flat-pickr-range') {\n                                const dateFrom = this.form.value[prop][0];\n                                const dateTo = this.form.value[prop][1];\n                                let intFrom = '';\n                                let intTo = '';\n                                if (!(dateFrom === null || dateFrom === undefined || dateFrom === '')) {\n                                    intFrom = DateUtil.getTimestamp(dateFrom).toString();\n                                }\n                                if (!(dateTo === null || dateTo === undefined || dateTo === '')) {\n                                    intTo = DateUtil.getTimestamp(dateTo).toString();\n                                }\n                                formData.append(prop + '_from', intFrom);\n                                formData.append(prop + '_to', intTo);\n                            } else if (field.type === 'submit') {\n                                if (this.form.get(prop).value === FormButtonActions.CLICK) {\n                                    // change value back to 1\n                                    this.form.get(prop).setValue(1);\n                                    formData.set(prop, this.getValue(prop));\n                                }\n                            } else if (field.type === 'checkbox') {\n                                if (this.getValue(prop) === true || this.getValue(prop) === 'on') {\n                                    formData.set(prop, 'on');\n                                }\n                            } else if (field.type === 'slide-toggle') {\n                                formData.set(prop, (+value).toString());\n                            } else if (field.type === 'draggable-multi-select') {\n                                const config = this.getFieldConfig(prop);\n                                if (config.optGroups && config.optGroups[0]) {\n                                    for (const val of config.optGroups[0].options) {\n                                        formData.append(prop + '[]', val.value.toString());\n                                    }\n                                } else if (config.options) {\n                                    for (const val of config.options) {\n                                        formData.append(prop + '[]', val.value.toString());\n                                    }\n                                }\n                            } else if (field.type === 'upload' && !field.attr['data-url']) {\n                                if (typeof this.getValue(prop) === 'object') {\n                                    this.getValue(prop).forEach(ff => {\n                                        formData.append(prop, ff.file, ff.file.name);\n                                    });\n                                    let descriptionValue = [];\n                                    if (this.getValue(prop + ES_FORM_UPLOAD_DESCRIPTIONS_SUFFIX) === null) {\n                                        descriptionValue.push('');\n                                    } else {\n                                        descriptionValue = this.getValue(prop + ES_FORM_UPLOAD_DESCRIPTIONS_SUFFIX);\n                                    }\n                                    descriptionValue.forEach((fd, i) => {\n                                        formData.append(prop + ES_FORM_UPLOAD_DESCRIPTIONS_SUFFIX + '_' + i, fd);\n                                    });\n                                }\n                            } else if (field.type === 'check-list') {\n                                formData.append(prop, JSON.stringify(field.options));\n                            } else {\n                                if ((this.getFieldConfig(prop).options && value && typeof value === 'object')\n                                    || this.getFieldConfig(prop).type === 'slider-range'\n                                ) {\n                                    // multiselect options\n                                    if (value.length > 0) {\n                                        value.forEach(val => {\n                                            formData.append(prop + '[]', val);\n                                        });\n                                    } else {\n                                        // tslint:disable-next-line:max-line-length\n                                        // formData.set(prop + '[]', value); // select je prazdny, neposilame nic, jinak se pak od serveru pri updatu vrati [\"undefined\"]\n                                    }\n                                } else {\n                                    // normal value\n                                    formData.set(prop, value);\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        // mazani prazdnych parametru v copy buttonu - pri 0 kopiich prvky realne neexistuji, neposilame je vubec\n        for (const field of this.dynamicForm.config) {\n            if (field.type === 'copy-button' && Number(field.value) === 0) {\n                for (const action of field.actions ?? []) {\n                    // jen kopirovane prvky, copy button muze mit i show/hide akce na uplne jine prvky\n                    if (action.action !== EsFormActionType.COPY) { continue; }\n                    for (const item of action.items ?? []) {\n                        this.deleteCopyItemFromPostData(formData, item);\n                    }\n                }\n            }\n        }\n\n        if (update) {\n            formData.set(this.dynamicForm.flags.update, '1');\n        } else {\n            formData.set(this.dynamicForm.flags.sent, '1');\n        }\n\n        return formData;\n    }\n\n    /**\n     * odstraneni prvku z post dat vcetne odvozenych klicu\n     * name        - prosta hodnota\n     * name[]      - multi-select, slider-range\n     * name_from   - flat-pickr-range\n     * name_to     - flat-pickr-range\n     * name_descriptions_0 ... - upload\n     */\n    private deleteCopyItemFromPostData(formData: FormData, name: string): void {\n        const escaped = name.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n        const suffix = ES_FORM_UPLOAD_DESCRIPTIONS_SUFFIX.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n        const keyPattern = new RegExp(`^${escaped}(\\\\[\\\\]|_from|_to|${suffix}_\\\\d+)?$`);\n\n        const keys: string[] = [];\n        formData.forEach((value, key) => keys.push(key));   // mazat behem iterace nelze\n        keys.filter(key => keyPattern.test(key)).forEach(key => formData.delete(key));\n    }\n\n    setDisabled(name: string, disable: boolean) {\n        if (this.form.controls[name]) {\n            const method = disable ? 'disable' : 'enable';\n            this.form.controls[name][method]();\n            return;\n        }\n\n        this.dynamicForm.config = this.dynamicForm.config.map((item) => {\n            if (item.name === name) {\n                item.disabled = disable;\n            }\n            return item;\n        });\n    }\n\n    setValue(controlName: string, value: any, options?: Object) {\n        if (!options) { options = {}; }\n        if (!options.hasOwnProperty('emitEvent')) {\n            options['emitEvent'] = true;\n        }\n        this.form.controls[controlName].setValue(value, options);\n        this.getSubComponent(controlName).checkView();\n    }\n\n    getValue(controlName: string) {\n        return this.form.controls[controlName].value;\n    }\n\n    getFieldConfig(controlName: string): EsFormFieldConfig {\n        return this.dynamicForm.config.filter(({name}) => name === controlName)[0];\n    }\n\n    getResponseValue(controlName: string) {\n        if (this.response) {\n            if (this.response.hasOwnProperty('controls')) {\n                let value = null;\n                this.response['controls'].forEach( (control) => {\n                    if (control[0]['name'] === controlName) {\n                        value = control[0]['value'];\n                    }\n                });\n                return value;\n            }\n        } else { return null; }\n    }\n\n    getSubmitButtonName() {\n        let name = null;\n        for (const button of this.formButtons) {\n            if (button.type === 'submit') {\n                name = button.name;\n                break;\n            }\n        }\n        return name;\n    }\n\n    setActions() {\n        for (const conf of this.dynamicForm.config) {\n            if (conf.actions && conf.actions.length > 0) {\n                // valueChange => checkView of all action.items\n                this.form.get(conf.name).valueChanges.pipe(\n                    takeUntil(this.destroy$)\n                ).subscribe(() => {\n                    conf.actions.forEach(action => {\n                        if (action.items !== undefined) {\n                            action.items.forEach(item => {\n                                const subCmp = this.getSubComponent(item);\n                                if (subCmp) {\n                                    subCmp.checkView();\n                                }\n                            });\n                        }\n                    });\n                });\n\n                conf.actions.forEach(ac => {\n                    if (ac.action === EsFormActionType.RELOAD_FORM) {\n                        let subCmp;\n                        // pokud je typu date-picker preskakuje se prvni zmena\n                        // prvni zmena se pouzije na preformatovani timestampu na date !!!!!!!!!!!!!!!!\n                        this.form.get(conf.name).valueChanges\n                            .pipe(\n                                skip(\n                                    ['date-time-picker', 'flat-pickr', 'date-range-angular', 'flat-pickr-range'].includes(conf.type) ? 1 : 0\n                                )\n                            ).pipe(\n                            takeUntil(this.destroy$)\n                        ).subscribe(() => {\n                            if (conf.type === 'multi-select') {\n                                if (subCmp === undefined) {\n                                    subCmp = this.getSubComponent(conf.name);\n                                    subCmp.matSelect.openedChange.pipe(take(1)).subscribe(opened => {\n                                        if (opened === false) {\n                                            // after panel closed\n                                            this.actionReloadForm();\n                                        }\n                                    });\n                                }\n                            } else {\n                                this.actionReloadForm();\n                            }\n                        });\n                    }\n                    if (ac.action === EsFormActionType.RELOAD_PAGE) {\n                        this.form.get(conf.name).valueChanges\n                            .pipe(\n                                takeUntil(this.destroy$)\n                            ).subscribe(() => {\n                            // nechat onSuccess ?\n                            this.formService.onDynamicFormSuccess(this.dynamicForm.id)\n                                .pipe(takeUntil(this.destroy$)).subscribe(() => {\n                                window.location.reload();\n                            });\n                            this.handleSubmit(false);\n                        });\n                    }\n\n                });\n            }\n        }\n    }\n\n    actionReloadForm() {\n        const formData: FormData = this.getPostData(true);\n\n        this._postParams = new FormData();\n        formData.forEach((value, key) => {\n            this._postParams.append(key, value);\n        });\n        if (this.postParams) {\n            this.postParams.forEach((value, key) => {\n                this._postParams.append(key, value);\n            });\n        }\n        if (this.emitOnSubmit) {\n            this.reloadForm.emit(this._postParams);\n        } else {\n            this.reload(false);\n        }\n    }\n\n    checkView() {\n        this.cd.markForCheck();\n        this.subComponents.forEach(sc => {\n            sc.checkView();\n        });\n    }\n\n    setDeleteButtons() {\n        // opakovane volani na stejny config by pridavalo duplicitni delete akce\n        if (this.deleteButtonsApplied) { return; }\n        this.deleteButtonsApplied = true;\n\n        this.dynamicForm.config.forEach( config => {\n            if (config.type === 'copy-button') {\n                for (const ac of config.actions) {\n                    if (ac.action === EsFormActionType.COPY) {\n                        let itemIndexForDelete;\n                        ac.items.forEach((item, index) => {\n                            if (itemIndexForDelete === undefined) {\n                                if (this.getFieldConfig(item).type !== 'hidden' && this.getFieldConfig(item).type !== 'group') {\n                                    itemIndexForDelete = index;\n                                }\n                            }\n                        });\n                        let dButtonIndex = 0;\n                        this.dynamicForm.config.forEach(conf => {\n                            if (conf.name.includes(ac.items[itemIndexForDelete])) {\n                                const display = config.value > config.actions[0].value[0];\n                                conf.dButton = {\n                                    id: dButtonIndex,\n                                    display: display,\n                                };\n\n                                if (conf.actions === undefined) {\n                                    conf.actions = [];\n                                }\n\n                                conf.actions.push({\n                                    action: EsFormActionType.DELETE,\n                                    items: []\n                                });\n\n                                for (const item of ac.items) {\n                                    for (const acArr of conf.actions) {\n                                        if (acArr.action === EsFormActionType.DELETE) {\n                                            this.dynamicForm.config.forEach(c => {\n                                                const split = [].concat(c.name.split('_'));\n                                                if ((c.name.includes(item) && parseInt(split[split.length - 1], 10) === dButtonIndex) ||\n                                                    (c.name === item && dButtonIndex === 0)) {\n                                                    acArr.items.push(c.name);\n                                                    const subCmp = this.getSubComponent(conf.name);\n                                                    if (subCmp) {\n                                                        subCmp.checkView();\n                                                    }\n                                                }\n                                            });\n                                        }\n                                    }\n                                }\n                                dButtonIndex++;\n                            }\n                        });\n                    }\n                }\n            }\n        });\n    }\n\n    copyButtonCheckView() {\n        this.copyBtnAdd.pipe( takeUntil(this.destroy$)\n        ).subscribe(() => {\n            for (const conf of this.dynamicForm.config) {\n                if (conf.actions) {\n                    // valueChange => checkView of all action.items\n                    this.form.get(conf.name).valueChanges.pipe(\n                        takeUntil(this.destroy$)\n                    ).subscribe(() => {\n                        conf.actions.forEach(action => {\n                            if (action.items !== undefined) {\n                                action.items.forEach(item => {\n                                    const subCmp = this.getSubComponent(item);\n                                    if (subCmp) {\n                                        subCmp.checkView();\n                                    }\n                                });\n                            }\n                        });\n                    });\n                }\n            }\n        });\n    }\n\n    setVisibility() {\n        this.dynamicForm.config.forEach( config => {\n            if (config.type === 'copy-button') {\n                for (const ac of config.actions) {\n                    if (ac.action === EsFormActionType.COPY) {\n                        if (config.value === 0) {\n                            ac.items.forEach(item => {\n                                this.getFieldConfig(item).display = false;\n                            });\n                        }\n                    }\n                }\n            }\n        });\n    }\n\n    onCopyBtnAddClick(controlName: string): Observable<EsFormFieldConfig> {\n        return this.copyBtnAdd.asObservable()\n            .pipe(\n                filter(config => {\n                    return (config.name === controlName);\n                })\n            );\n    }\n\n    onCopyBtnDelClick(controlName: string): Observable<EsFormFieldConfig> {\n        return this.copyBtnDel.asObservable()\n            .pipe(\n                filter(config => {\n                    return (config.name === controlName);\n                })\n            );\n    }\n\n    /**\n     * Ceka (max. ~650 ms), nez se prvek s danym id objevi v DOM.\n     * Pokud se neobjevi, resolvne null - drive Promise zustala navzdy viset.\n     */\n    getDOMElement(controlName: string): Promise<HTMLInputElement | null> {\n        const find = () => document.getElementById(controlName) as HTMLInputElement | null;\n\n        return new Promise((resolve) => {\n            setTimeout(() => {\n                if (find()) {\n                    return resolve(find());\n                }\n                let count = 0;\n                const interval = setInterval(() => {\n                    const el = find();\n                    if (el || count > 10) {\n                        clearInterval(interval);\n                        resolve(el);\n                    }\n                    count++;\n                }, 50);\n            }, 50);\n        });\n    }\n\n    ngOnDestroy(): void {\n        if (this.activeRequest) {\n            this.activeRequest.unsubscribe();\n        }\n        this.destroy$.next();\n        this.destroy$.complete();\n    }\n\n    setDisplay(name: string, display: boolean) {\n        const matchingConfigs = this.dynamicForm.config.filter(c => {\n            if (c.name === name) { return true; }\n            const { baseName } = this.splitFieldName(c.name);\n            return baseName === name;\n        });\n\n        if (matchingConfigs.length === 0) { return; }\n\n        matchingConfigs.forEach(config => {\n            config.display = display;\n\n            const subCmp = this.getSubComponent(config.name);\n\n            if (subCmp) {\n                subCmp.checkView();\n            }\n        });\n    }\n\n    private splitFieldName(name: string): { baseName: string, copyIndex: number | null } {\n        const match = name.match(/^(.+)_(\\d+)$/);\n        if (!match) {\n            return { baseName: name, copyIndex: null };\n        }\n        return { baseName: match[1], copyIndex: parseInt(match[2], 10) };\n    }\n}\n","@if (!isInitialized || (isInitialized && postingData)) {\n    <mat-spinner class=\"app-spinner\"></mat-spinner>\n}\n\n@if (isInitialized || (isInitialized && !postingData)) {\n    <form [style.max-width.px]=\"maxWidth\"\n          [style.opacity]=\"postingData ? 0.25 : 1\"\n          [style.pointer-events]=\"postingData ? 'none' : 'auto'\"\n          class=\"es-form {{name ? 'es-form-' + name : ''}}\"\n          [formGroup]=\"form\"\n          (submit)=\"formSubmit($event)\"\n          (resized)=\"onFormResized($event)\"\n    >\n        @if (!simpleForm) {\n            <div class=\"form-full\">\n                <div class=\"form-grid form-cols\" [style.grid-template-columns]=\"isMobile ? 'repeat(1, 1fr)' : 'repeat(' + cols + ', 1fr)'\">\n                    @for (group of getGroups(); track group.name) {\n                        <div class=\"form-group\"\n                             [style.grid-column]=\"isMobile ? 'span  1' : 'span ' + (group.colspan || 1)\"\n                             [style.grid-row]=\"isMobile ? 'span  1' : 'span ' + (group.rowspan || 1)\">\n\n                            <div class=\"group-name\">\n                                <span class=\"group-label\">{{group.label}}</span>\n                            </div>\n\n                            @for (field of group.controls; track field.name + '__' + field.multiple) {\n                                <ng-container dynamicField\n                                              [configList]=\"dynamicForm.config\"\n                                              [config]=\"field\"\n                                              [group]=\"form\"\n                                              [esForm]=\"this\"\n                                              (dynamicFieldReady)=\"fieldReady($event)\"\n                                >\n                                </ng-container>\n                            }\n                        </div>\n                    }\n                </div>\n                <div class=\"group-button\">\n                    @for (button of formButtons; track button.name) {\n                        <ng-container dynamicField\n                                      [config]=\"button\"\n                                      [group]=\"form\"\n                                      [esForm]=\"this\"\n                                      (dynamicFieldReady)=\"fieldReady($event)\"\n                        >\n                        </ng-container>\n                    }\n                </div>\n            </div>\n        }\n\n        @if (simpleForm) {\n            <div class=\"form-simple\" [style.font-size.%]=\"fontSize\">\n                <div class=\"form-group\">\n                    @for (field of tmpGroups[0].controls; track field.name + '__' + field.multiple) {\n                        <ng-container dynamicField\n                                      [configList]=\"tmpGroups[0].controls\"\n                                      [config]=\"field\"\n                                      [group]=\"form\"\n                                      [esForm]=\"this\"\n                                      (dynamicFieldReady)=\"fieldReady($event)\"\n                        >\n                        </ng-container>\n                    }\n                </div>\n            </div>\n        }\n    </form>\n}\n","import { ErrorOptions } from '../es-ngxerrors';\n\nexport const toArray = (value: ErrorOptions): string[] => Array.isArray(value) ? value : [value];\n","import { Directive, Input, OnChanges, OnDestroy, AfterViewInit } from '@angular/core';\nimport { FormGroupDirective, AbstractControl } from '@angular/forms';\nimport {BehaviorSubject, Subject} from 'rxjs';\nimport { ErrorDetails, ErrorOptions } from './es-ngxerrors';\nimport { toArray } from './utils/toArray';\nimport {takeUntil, takeWhile} from 'rxjs/operators';\n\n@Directive({\n    selector: '[esErrors]',\n    exportAs: 'esErrors',\n    standalone: true\n})\nexport class EsErrorsDirective implements OnChanges, OnDestroy, AfterViewInit {\n\n    @Input('esErrors')\n    esErrors: string;\n\n    subject = new BehaviorSubject<ErrorDetails>(null);\n\n    control: AbstractControl;\n\n    ready = false;\n    destroy$ = new Subject<void>();\n\n    constructor(\n        private form: FormGroupDirective\n    ) { }\n\n    get errors() {\n        if (!this.ready) { return; }\n        return this.control.errors;\n    }\n\n    get hasErrors() {\n        return !!this.errors;\n    }\n\n    hasError(name: string, conditions: ErrorOptions): boolean {\n        return this.checkPropState('invalid', name, conditions);\n    }\n\n    isValid(name: string, conditions: ErrorOptions): boolean {\n        return this.checkPropState('valid', name, conditions);\n    }\n\n    getError(name: string) {\n        if (!this.ready) { return; }\n        return this.control.getError(name);\n    }\n\n    private checkPropState(prop: string, name: string, conditions: ErrorOptions): boolean {\n        if (!this.ready) { return; }\n        const controlPropsState = (\n            !conditions || toArray(conditions).every((condition: string) => this.control[condition])\n        );\n        if (name.charAt(0) === '*') {\n            return this.control[prop] && controlPropsState;\n        }\n        return (\n            prop === 'valid' ? !this.control.hasError(name) : this.control.hasError(name) && controlPropsState\n        );\n    }\n\n    private checkStatus() {\n        const control = this.control;\n        const errors = control.errors;\n        this.ready = true;\n        if (!errors) { return; }\n        for (const errorName in errors) {\n            if (errors.hasOwnProperty(errorName)) {\n                this.subject.next({ control, errorName });\n            }\n        }\n    }\n\n    ngOnChanges() {\n        this.control = this.form?.control?.get(this.esErrors);\n\n        if (this.control) {\n            this.initControl();\n        }\n    }\n\n    private initControl() {\n        this.ready = true;\n\n        this.checkStatus();\n\n        this.control.statusChanges\n            .pipe(takeUntil(this.destroy$))\n            .subscribe(() => this.checkStatus());\n    }\n\n\n    ngAfterViewInit() {}\n\n    ngOnDestroy() {\n        this.subject.unsubscribe();\n        this.destroy$.next();\n        this.destroy$.complete();\n    }\n\n}\n","import {Directive, Input, OnInit, OnDestroy, DoCheck, HostBinding, forwardRef, inject} from '@angular/core';\nimport {combineLatest, Observable, Subject, Subscription} from 'rxjs';\nimport { EsErrorsDirective } from './es-errors.directive';\nimport {ErrorDetails, ErrorOptions} from './es-ngxerrors';\nimport { toArray } from './utils/toArray';\nimport {distinctUntilChanged, filter, map} from 'rxjs/operators';\n\n@Directive({\n    selector: '[esError]',\n    standalone: true\n})\nexport class EsErrorDirective implements OnInit, OnDestroy, DoCheck {\n\n    @Input() set esError(value: ErrorOptions) {\n        this.errorNames = toArray(value);\n    }\n\n    @Input() set when(value: ErrorOptions) {\n        this.rules = toArray(value);\n    }\n\n    @HostBinding('hidden')\n    hidden = true;\n\n    rules: string[] = [];\n\n    errorNames: string[] = [];\n\n    subscription: Subscription;\n\n    _states: Subject<string[]>;\n\n    states: Observable<string[]>;\n\n    private ngxErrors = inject(forwardRef(() => EsErrorsDirective));\n\n    constructor() {}\n\n\n    ngOnInit() {\n        this._states = new Subject<string[]>();\n        this.states = this._states.asObservable().pipe(distinctUntilChanged());\n\n        /* tslint:disable:no-bitwise */\n        const errors = this.ngxErrors.subject.pipe(\n            filter(Boolean),\n            filter((obj: ErrorDetails) => !!~this.errorNames.indexOf(obj.errorName))\n        );\n\n        const states = this.states.pipe(\n            map(state => this.rules.every(rule => !!~state.indexOf(rule)))\n        );\n        /* tslint:enable:no-bitwise */\n\n        // OPRAVENO: combineLatest se volá jako samostatná funkce, ne uvnitř podivného prototypu\n        this.subscription = combineLatest({\n            state: states,\n            error: errors\n        }).subscribe(({ state, error }) => { // Tady používáte destrukturalizaci objektu\n            const err = error as ErrorDetails;\n            this.hidden = !(state && err.control.hasError(err.errorName));\n        });\n    }\n\n    ngDoCheck() {\n        this._states.next(\n            this.rules.filter((rule) => (this.ngxErrors.control as any)[rule])\n        );\n    }\n\n    ngOnDestroy() {\n        this.subscription.unsubscribe();\n    }\n\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {MatAutocompleteModule} from '@angular/material/autocomplete';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatButtonToggleModule} from '@angular/material/button-toggle';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatListModule} from '@angular/material/list';\nimport {MatProgressBarModule} from '@angular/material/progress-bar';\nimport {MatProgressSpinnerModule} from '@angular/material/progress-spinner';\nimport {MatRadioModule} from '@angular/material/radio';\nimport {MatSlideToggleModule} from '@angular/material/slide-toggle';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {FlatpickrModule} from 'angularx-flatpickr';\nimport {EsResizedEventModule} from '@eurosat/resized-event';\nimport {DynamicFieldDirective} from './components/dynamic-field/dynamic-field.directive';\nimport {DynamicFieldComponent} from './components/dynamic-field/dynamic-field.component';\nimport {EsFormComponent} from './container/es-form.component';\nimport {FormButtonComponent} from './components/form-button/form-button.component';\nimport {FormButtonToggleComponent} from './components/form-button-toggle/form-button-toggle.component';\nimport {FormInputComponent} from './components/form-input/form-input.component';\nimport {DataTablePipe, FormSelectComponent} from './components/form-select/form-select.component';\nimport {FormAutocompleteComponent} from './components/form-autocomplete/form-autocomplete.component';\nimport {EsErrorDirective} from './util/ngx-error/es-error.directive';\nimport {EsErrorsDirective} from './util/ngx-error/es-errors.directive';\nimport {FormHiddenComponent} from './components/form-hidden/form-hidden.component';\nimport {FormCheckboxComponent} from './components/form-checkbox/form-checkbox.component';\nimport {FormSlideToggleComponent} from './components/form-slide-toggle/form-slide-toggle.component';\nimport {FormTextareaComponent} from './components/form-textarea/form-textarea.component';\nimport {FormColorpickerComponent} from './components/form-colorpicker/form-colorpicker.component';\nimport {DataLabelTablePipe, FormSelectImageComponent} from './components/form-select-image/form-select-image.component';\nimport {FormDraggableListComponent} from './components/form-draggable-list/form-draggable-list.component';\nimport {FormUploadComponent} from './components/form-upload/form-upload.component';\nimport {FormUploadImageComponent} from './components/form-upload-image/form-upload-image.component';\nimport {FormProgressBarComponent} from './components/form-progress-bar/form-progress-bar.component';\nimport {FormHtmlComponent} from './components/form-html/form-html.component';\nimport {FormButtonAddComponent} from './components/form-button-add/form-button-add.component';\nimport {FormButtonDeleteComponent} from './components/form-button-delete/form-button-delete.component';\nimport {FormSelectAjaxComponent} from './components/form-select-ajax/form-select-ajax.component';\nimport {FormHelpComponent} from './components/form-help/form-help.component';\nimport {FormCaptchaComponent} from './components/form-captcha/form-captcha.component';\nimport {FormSliderComponent} from './components/form-slider/form-slider.component';\nimport {EsCroppieWrapperComponent} from './components/form-upload-image/croppie-wrapper/es-croppie-wrapper.component';\nimport {FormWysiwygJoditComponent} from './components/form-wysiwyg-jodit/form-wysiwyg-jodit.component';\nimport {FormAjaxAutocompleteComponent} from './components/form-ajax-autocomplete/form-ajax-autocomplete.component';\nimport {FormCheckListComponent} from './components/form-check-list/form-check-list.component';\nimport {FormFlatpickrComponent} from './components/form-flatpickr/form-flatpickr.component';\nimport {FormRangeFlatpickerComponent} from './components/form-range-flatpicker/form-range-flatpicker.component';\nimport {FormWysiwygQuillComponent} from './components/form-wysiwyg-quill/form-wysiwyg-quill.component';\nimport {EsFileDndDirective} from './util/file-drop.directive';\n\nexport const ES_FORM_COMPONENTS = [\n    DynamicFieldDirective,\n    DynamicFieldComponent,\n    EsCroppieWrapperComponent,\n    FormButtonComponent,\n    FormButtonToggleComponent,\n    FormInputComponent,\n    FormSelectComponent,\n    FormAutocompleteComponent,\n    FormFlatpickrComponent,\n    FormHiddenComponent,\n    FormCheckboxComponent,\n    FormSlideToggleComponent,\n    FormTextareaComponent,\n    FormColorpickerComponent,\n    FormSelectImageComponent,\n    FormDraggableListComponent,\n    FormUploadComponent,\n    FormUploadImageComponent,\n    FormProgressBarComponent,\n    FormHtmlComponent,\n    FormButtonAddComponent,\n    FormButtonDeleteComponent,\n    FormSelectAjaxComponent,\n    FormHelpComponent,\n    FormCaptchaComponent,\n    FormSliderComponent,\n    FormWysiwygJoditComponent,\n    FormAjaxAutocompleteComponent,\n    FormCheckListComponent,\n    FormRangeFlatpickerComponent,\n    FormWysiwygQuillComponent,\n];\n\nexport const ES_FORM_ERRORS = [\n    EsErrorDirective,\n    EsErrorsDirective,\n];\n\nexport const ES_FORM_PIPES = [\n    DataTablePipe,\n    DataLabelTablePipe,\n];\n\nexport const ES_FORM_DIRECTIVES = [\n    EsFileDndDirective\n];\n\n/**\n * Vsechny komponenty, direktivy a pipy formulare jsou standalone - lze je importovat primo\n * (napr. imports: [EsFormComponent]). Modul zustava kvuli zpetne kompatibilite: re-exportuje je\n * spolu s moduly, na ktere spolehaji sablony komponent, ktere z formulare dedi (napr. dynamicField).\n */\n@NgModule({\n    imports: [\n        EsFormComponent,\n        ...ES_FORM_PIPES,\n        ...ES_FORM_ERRORS,\n        ...ES_FORM_COMPONENTS,\n        ...ES_FORM_DIRECTIVES,\n        CommonModule,\n        TranslateModule.forChild(),\n        ReactiveFormsModule,\n        MatButtonModule,\n        MatRadioModule,\n        MatButtonToggleModule,\n        MatInputModule,\n        MatAutocompleteModule,\n        MatCheckboxModule,\n        MatSlideToggleModule,\n        MatListModule,\n        MatProgressBarModule,\n        MatProgressSpinnerModule,\n        EsResizedEventModule,\n        FormsModule,\n        FlatpickrModule.forRoot(),  // FlatpickrDefaults pro aplikace, ktere na nich puvodne spolehaly pres tento modul\n    ],\n    exports: [\n        EsFormComponent,\n        ...ES_FORM_PIPES,\n        ...ES_FORM_ERRORS,\n        ...ES_FORM_COMPONENTS,\n        ...ES_FORM_DIRECTIVES,\n        CommonModule,\n        TranslateModule,\n        ReactiveFormsModule,\n        MatButtonModule,\n        MatRadioModule,\n        MatButtonToggleModule,\n        MatInputModule,\n        MatAutocompleteModule,\n        MatCheckboxModule,\n        MatSlideToggleModule,\n        MatListModule,\n        MatProgressBarModule,\n        MatProgressSpinnerModule,\n        EsResizedEventModule,\n        FormsModule,\n    ],\n})\nexport class EsFormModule {}\n","/*\n * Public API Surface of form\n */\n\nexport * from './lib/es-form.module';\nexport * from './lib/es-form.service';\nexport * from './lib/container/es-form.component';\nexport * from './lib/container/es-form.interface';\nexport * from './lib/model/es-config.interface';\nexport * from './lib/model/es-field-error.interface';\nexport * from './lib/model/es-field-file.interface';\nexport * from './lib/model/es-field-option.interface';\nexport * from './lib/model/es-flags.interface';\nexport * from './lib/model/es-form-action.interface';\nexport * from './lib/model/es-form.interface';\nexport * from './lib/model/es-form.translates';\nexport * from './lib/model/es-ajax-select.params';\nexport * from './lib/model/es-form-field.interface';\nexport * from './lib/model/es-form-response-message';\nexport * from './lib/components/form-autocomplete/form-autocomplete.component';\nexport * from './lib/components/form-button/form-button.component';\nexport * from './lib/components/form-button/form-button-actions';\nexport * from './lib/components/form-button-add/form-button-add.component';\nexport * from './lib/components/form-button-delete/form-button-delete.component';\nexport * from './lib/components/form-button-toggle/form-button-toggle.component';\nexport * from './lib/components/form-captcha/form-captcha.component';\nexport * from './lib/components/form-checkbox/form-checkbox.component';\nexport * from './lib/components/form-colorpicker/form-colorpicker.component';\nexport * from './lib/components/form-draggable-list/form-draggable-list.component';\nexport * from './lib/components/form-help/form-help.component';\nexport * from './lib/components/form-hidden/form-hidden.component';\nexport * from './lib/components/form-html/form-html.component';\nexport * from './lib/components/form-input/form-input.component';\nexport * from './lib/components/form-progress-bar/form-progress-bar.component';\nexport * from './lib/components/form-select/form-select.component';\nexport * from './lib/components/form-select-ajax/form-select-ajax.component';\nexport * from './lib/components/form-select-image/form-select-image.component';\nexport * from './lib/components/form-slide-toggle/form-slide-toggle.component';\nexport * from './lib/components/form-slider/form-slider.component';\nexport * from './lib/components/form-textarea/form-textarea.component';\nexport * from './lib/components/form-upload/form-upload.component';\nexport * from './lib/components/form-upload-image/form-upload-image.component';\nexport * from './lib/components/form-upload-image/croppie-wrapper/es-croppie-wrapper.component';\nexport * from './lib/components/form-flatpickr/date-picker-mode';\nexport * from './lib/components/form-flatpickr/form-flatpickr.service';\nexport * from './lib/components/dynamic-field/dynamic-field.component';\nexport * from './lib/components/dynamic-field/dynamic-field.directive';\nexport * from './lib/components/form-wysiwyg-jodit/form-wysiwyg-jodit.component';\nexport * from './lib/components/form-wysiwyg-quill/form-wysiwyg-quill.component';\nexport * from './lib/components/form-flatpickr/form-flatpickr.component';\nexport * from './lib/components/form-range-flatpicker/form-range-flatpicker.component';\nexport * from './lib/components/form-select/form-select.component';\nexport * from './lib/components/form-select-image/form-select-image.component';\nexport * from './lib/components/form-select/form-select.component';\nexport * from './lib/components/form-select-image/form-select-image.component';\nexport * from './lib/components/form-ajax-autocomplete/form-ajax-autocomplete.component';\nexport * from './lib/components/form-check-list/form-check-list.component';\nexport * from './lib/util/ngx-error/es-errors.directive';\nexport * from './lib/util/ngx-error/es-error.directive';\nexport * from './lib/util/file-drop.directive';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i1","i3","i3.EsFormService","i4","i5","i1.EsFormService","i1.FormFlatpickrService","i2.EsFormService"],"mappings":"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CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,KAAK;AACR,IAAA,CAAC,EAAE,KAAK;AACR,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,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"}