@webilix/ngx-form-m3 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"webilix-ngx-form-m3.mjs","sources":["../../../ngx-form-m3/src/lib/directives/auto-complete.directive.ts","../../../ngx-form-m3/src/lib/directives/auto-focus.directive.ts","../../../ngx-form-m3/src/lib/directives/auto-height.directive.ts","../../../ngx-form-m3/src/lib/directives/form-error.directive.ts","../../../ngx-form-m3/src/lib/pipes/input-error.pipe.ts","../../../ngx-form-m3/src/lib/pipes/multi-line.pipe.ts","../../../ngx-form-m3/src/lib/inputs/email/input-email.component.ts","../../../ngx-form-m3/src/lib/inputs/email/input-email.component.html","../../../ngx-form-m3/src/lib/inputs/input.interface.ts","../../../ngx-form-m3/src/lib/inputs/email/input-email.interface.ts","../../../ngx-form-m3/src/lib/inputs/mobile/input-mobile.component.ts","../../../ngx-form-m3/src/lib/inputs/mobile/input-mobile.component.html","../../../ngx-form-m3/src/lib/inputs/mobile/input-mobile.interface.ts","../../../ngx-form-m3/src/lib/inputs/name/input-name.component.ts","../../../ngx-form-m3/src/lib/inputs/name/input-name.component.html","../../../ngx-form-m3/src/lib/inputs/name/input-name.interface.ts","../../../ngx-form-m3/src/lib/inputs/password/input-password.component.ts","../../../ngx-form-m3/src/lib/inputs/password/input-password.component.html","../../../ngx-form-m3/src/lib/inputs/password/input-password.interface.ts","../../../ngx-form-m3/src/lib/inputs/select/input-select.component.ts","../../../ngx-form-m3/src/lib/inputs/select/input-select.component.html","../../../ngx-form-m3/src/lib/inputs/select/input-select.interface.ts","../../../ngx-form-m3/src/lib/inputs/text/input-text.component.ts","../../../ngx-form-m3/src/lib/inputs/text/input-text.component.html","../../../ngx-form-m3/src/lib/validators/length.validator.ts","../../../ngx-form-m3/src/lib/inputs/text/input-text.interface.ts","../../../ngx-form-m3/src/lib/inputs/textarea/input-textarea.component.ts","../../../ngx-form-m3/src/lib/inputs/textarea/input-textarea.component.html","../../../ngx-form-m3/src/lib/inputs/textarea/input-textarea.interface.ts","../../../ngx-form-m3/src/lib/inputs/input.component.ts","../../../ngx-form-m3/src/lib/inputs/input.component.html","../../../ngx-form-m3/src/lib/inputs/input.info.ts","../../../ngx-form-m3/src/lib/ngx-form.config.ts","../../../ngx-form-m3/src/lib/ngx-form.component.ts","../../../ngx-form-m3/src/lib/ngx-form.component.html","../../../ngx-form-m3/src/public-api.ts","../../../ngx-form-m3/src/webilix-ngx-form-m3.ts"],"sourcesContent":["import { Directive, HostBinding } from '@angular/core';\n\n@Directive({ selector: 'input[type=\"text\"]' })\nexport class AutoCompleteDirective {\n @HostBinding('attr.autocomplete') autocomplete = 'one-time-code';\n}\n","import { AfterViewInit, Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({ selector: '[AutoFocusDirective]' })\nexport class AutoFocusDirective implements AfterViewInit {\n @Input({ required: true }) public AutoFocusDirective!: boolean;\n\n constructor(private elementRef: ElementRef) {}\n\n ngAfterViewInit(): void {\n if (!this.AutoFocusDirective || !this.elementRef) return;\n\n const input: HTMLInputElement = this.elementRef.nativeElement as HTMLInputElement;\n if (!input) return;\n\n setTimeout(() => {\n if (input.focus) input.focus();\n if (input.select) input.select();\n }, 0);\n }\n}\n","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\n\n@Directive({ selector: '[AutoHeightDirective]' })\nexport class AutoHeightDirective {\n @Input({ required: true }) public AutoHeightDirective!: boolean;\n @Input({ required: true }) public minHeight!: number;\n @Input({ required: false }) public maxHeight: number = 0;\n\n private _focused: boolean = false;\n @HostListener('focus')\n private focus(): void {\n this._focused = true;\n }\n @HostListener('blur')\n private blur(): void {\n this._focused = false;\n }\n\n constructor(private elementRef: ElementRef, private renderer2: Renderer2) {}\n\n public ngAfterViewInit(): void {\n this.resize(true);\n }\n\n @HostListener('input')\n private resize(forced?: boolean): void {\n if (this.AutoHeightDirective !== true || (!forced && !this._focused)) return;\n\n const textarea = this.elementRef.nativeElement as HTMLTextAreaElement;\n const borderHeight = textarea.offsetHeight - textarea.clientHeight;\n this.setHeight('auto');\n\n let height: number = textarea.scrollHeight + borderHeight;\n if (this.minHeight && this.minHeight > height) height = this.minHeight;\n if (this.maxHeight && this.maxHeight < height) height = this.maxHeight;\n this.setHeight(`${height}px`);\n }\n\n private setHeight(value: string): void {\n this.renderer2.setStyle(this.elementRef.nativeElement, 'height', value);\n this.renderer2.setStyle(this.elementRef.nativeElement, 'overflow', 'auto');\n }\n}\n","import { Directive, ElementRef, HostListener, Optional } from '@angular/core';\nimport { FormGroupDirective } from '@angular/forms';\n\n@Directive({ selector: 'form.ngx-form' })\nexport class FormErrorDirective {\n @HostListener('submit') onSubmit(): void {\n if (this.formGroupDirective && this.formGroupDirective.control.invalid) {\n const invalidControl: HTMLElement = this.elementRef.nativeElement.querySelector('.ng-invalid');\n if (invalidControl) return this.scrollToElement(invalidControl);\n }\n\n const invalidControl: HTMLElement = this.elementRef.nativeElement.querySelector('.ngx-form-invalid');\n if (invalidControl) this.scrollToElement(invalidControl);\n }\n\n constructor(private elementRef: ElementRef, @Optional() private formGroupDirective: FormGroupDirective) {}\n\n private scrollToElement(element: HTMLElement): void {\n const labelOffset: number = 150;\n const top: number = element.getBoundingClientRect().top + window.scrollY - labelOffset;\n window.scroll({ top, left: 0, behavior: 'smooth' });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'InputErrorPipe' })\nexport class InputErrorPipe implements PipeTransform {\n transform(errors: ValidationErrors | null | undefined, type: string): string {\n if (errors === null || errors === undefined) return '';\n\n const keys: string[] = Object.keys(errors);\n if (keys.length === 0) return '';\n\n const error: string = keys[0];\n const value: any = errors[error];\n\n switch (error) {\n case 'required':\n return 'مقدار الزامی است.';\n\n case 'length':\n return `مقدار باید داری ${Helper.NUMBER.format(value)} کاراکتر باشد.`;\n\n case 'minlength':\n return `مقدار باید حداقل داری ${Helper.NUMBER.format(value.requiredLength)} کاراکتر باشد.`;\n\n case 'maxlength':\n return `مقدار می‌تواند حداکثر داری ${Helper.NUMBER.format(value.requiredLength)} کاراکتر باشد.`;\n\n case 'pattern':\n switch (type) {\n case 'EMAIL':\n return 'فرمت استاندارد ایمیل رعایت نشده است.';\n case 'PASSWORD':\n switch (true) {\n case value.requiredPattern.includes('[0-9]'):\n return 'مقدار باید شامل اعداد انگلیسی باشد.';\n case value.requiredPattern.includes('[a-z]'):\n return 'مقدار باید شامل حروف انگلیسی کوچک باشد.';\n case value.requiredPattern.includes('[A-Z]'):\n return 'مقدار باید شامل حروف انگلیسی بزرگ باشد.';\n }\n return 'کاراکترهای الزامی در کلمه عبور استفاده نشده‌اند.';\n }\n break;\n\n case 'mask':\n switch (type) {\n case 'MOBILE':\n return 'شماره موبایل دارای ۱۱ رقم است.';\n }\n break;\n }\n\n return 'مقدار وارد شده صحیح نیست.';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'MultiLinePipe' })\nexport class MultiLinePipe implements PipeTransform {\n constructor(private readonly sanitizer: DomSanitizer) {}\n\n transform(value: string, config?: { html?: boolean }): string | SafeHtml {\n if (!Helper.IS.string(value) || value === '') return '';\n\n return config?.html\n ? this.sanitizer.bypassSecurityTrustHtml(value.replace(/(?:\\r\\n|\\r|\\n)/g, '<br />'))\n : Helper.STRING.escapeHTML(value).replace(/(?:\\r\\n|\\r|\\n)/g, '<br />');\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\n\nimport { IInputConfig } from '../input.interface';\n\nimport { IInputEmail } from './input-email.interface';\n\n@Component({\n host: { selector: 'input-email' },\n imports: [\n NgClass,\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatInputModule,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-email.component.html',\n styleUrl: './input-email.component.scss',\n})\nexport class InputEmailComponent {\n public focused: boolean = false;\n\n constructor(\n @Inject('formControl') public readonly formControl: FormControl,\n @Inject('input') public readonly input: IInputEmail,\n @Inject('config') public readonly config: IInputConfig,\n ) {}\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'ایمیل' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (focused && input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- ICON -->\n\n @if (input.showIcon) {\n <span matTextSuffix class=\"suffix\" [style.opacity]=\"formControl.disabled ? '0.4' : 1\">\n <span [ngClass]=\"config.enClass\">&nbsp;</span>\n <mat-icon>alternate_email</mat-icon>\n </span>\n }\n\n <input\n matInput\n type=\"text\"\n inputmode=\"email\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n [ngClass]=\"config.enClass\"\n [dir]=\"'ltr'\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n (focus)=\"focused = true\"\n (blur)=\"focused = false\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n [ngClass]=\"config.descriptionClass\"\n [style.opacity]=\"formControl.disabled ? '0.4' : 1\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { INgxFormValues } from '../ngx-form.interface';\n\nexport interface IInput {\n readonly name: string;\n readonly title?: string;\n readonly value?: string;\n readonly hint?: string;\n readonly description?: string;\n readonly optional?: boolean;\n readonly english?: boolean;\n readonly autoFocus?: boolean;\n readonly appearance?: MatFormFieldAppearance;\n readonly disableOn?: (values: INgxFormValues) => boolean;\n readonly hideOn?: (values: INgxFormValues) => boolean;\n}\n\nexport abstract class InputMethods<I /** INPUT **/, V /** VALUE **/> {\n abstract control(input: I, validators: ValidatorFn[]): FormControl<V>;\n abstract value(value: any, input: I): V;\n}\n\nexport interface IInputConfig {\n readonly appearance: MatFormFieldAppearance;\n readonly autoFocus?: string;\n readonly enClass: string;\n readonly descriptionClass: string;\n}\n","import { ValidatorFn, FormControl, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputEmail extends Omit<IInput, 'english'> {\n readonly type: 'EMAIL';\n readonly showIcon?: boolean;\n}\n\nexport class InputEmailMethods extends InputMethods<IInputEmail, string | null> {\n override control(input: IInputEmail, validators: ValidatorFn[]): FormControl<string | null> {\n validators.push(Validators.pattern(Helper.RE.EMAIL.get()));\n\n const value: string | null =\n input.value === undefined ? null : Helper.RE.EMAIL.verify(input.value) ? input.value.toLowerCase() : null;\n\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputEmail): string | null {\n return typeof value === 'string' && Helper.RE.EMAIL.verify(value) ? value.toLowerCase() : null;\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\n\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\n\nimport { IInputConfig } from '../input.interface';\n\nimport { IInputMobile } from './input-mobile.interface';\n\n@Component({\n host: { selector: 'input-mobile' },\n imports: [\n NgClass,\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatInputModule,\n NgxMaskDirective,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n providers: [provideNgxMask()],\n templateUrl: './input-mobile.component.html',\n styleUrl: './input-mobile.component.scss',\n})\nexport class InputMobileComponent {\n public focused: boolean = false;\n public inputTransformFn = (value: any): string => Helper.STRING.changeNumbers(value.toString(), 'EN');\n\n constructor(\n @Inject('formControl') public readonly formControl: FormControl,\n @Inject('input') public readonly input: IInputMobile,\n @Inject('config') public readonly config: IInputConfig,\n ) {}\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'موبایل' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (focused && input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- ICON & SUFFIX -->\n <span matTextSuffix class=\"suffix\" [style.opacity]=\"formControl.disabled ? '0.4' : 1\">\n <span [ngClass]=\"config.enClass\">09</span>\n @if (input.showIcon) { <mat-icon>smartphone</mat-icon> }\n </span>\n\n <input\n matInput\n type=\"text\"\n inputmode=\"numeric\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n [ngClass]=\"config.enClass\"\n [dir]=\"'ltr'\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n [mask]=\"'00-000-0000'\"\n [inputTransformFn]=\"inputTransformFn\"\n (focus)=\"focused = true\"\n (blur)=\"focused = false\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n [ngClass]=\"config.descriptionClass\"\n [style.opacity]=\"formControl.disabled ? '0.4' : 1\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputMobile extends Omit<IInput, 'english'> {\n readonly type: 'MOBILE';\n readonly showIcon?: boolean;\n}\n\nexport class InputMobileMethods extends InputMethods<IInputMobile, string | null> {\n override control(input: IInputMobile, validators: ValidatorFn[]): FormControl<string | null> {\n const value: string | null =\n input.value === undefined ? null : Helper.RE.MOBILE.verify(input.value) ? input.value.substring(2) : null;\n\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputMobile): string | null {\n return typeof value === 'string' && Helper.RE.MOBILE.verify(`09${value}`) ? `09${value}` : null;\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\n\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe } from '../../pipes';\n\nimport { IInputConfig } from '../input.interface';\n\nimport { IInputName } from './input-name.interface';\n\n@Component({\n host: { selector: 'input-name' },\n imports: [ReactiveFormsModule, MatFormField, MatInputModule, AutoCompleteDirective, AutoFocusDirective, InputErrorPipe],\n templateUrl: './input-name.component.html',\n styleUrl: './input-name.component.scss',\n})\nexport class InputNameComponent implements OnInit {\n public firstFormControl!: FormControl;\n public lastFormControl!: FormControl;\n\n constructor(\n @Inject('formControl') public readonly formControl: FormControl,\n @Inject('input') public readonly input: IInputName,\n @Inject('config') public readonly config: IInputConfig,\n ) {}\n\n ngOnInit(): void {\n const value: { first: string; last: string } | null = this.formControl.value;\n const first: string | null = value?.first || null;\n const last: string | null = value?.last || null;\n\n this.firstFormControl = new FormControl<string | null>(first, this.input.optional ? [] : [Validators.required]);\n this.lastFormControl = new FormControl<string | null>(last, this.input.optional ? [] : [Validators.required]);\n\n this.formControl.statusChanges.subscribe({\n next: () => {\n if (this.formControl.disabled) {\n this.firstFormControl.disable();\n this.lastFormControl.disable();\n } else {\n this.firstFormControl.enable();\n this.lastFormControl.enable();\n }\n },\n });\n }\n\n setName(): void {\n const first: string = (this.firstFormControl.value || '').trim();\n const last: string = (this.lastFormControl.value || '').trim();\n\n const value: { first: string; last: string } | null = first !== '' && last !== '' ? { first, last } : null;\n this.formControl.setValue(value);\n }\n}\n","<!-- INPUT -->\n<input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n\n<div class=\"columns\">\n <!-- FIRST NAME -->\n <mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>نام {{ input.title || '' }}</mat-label>\n @if (firstFormControl.invalid) { <mat-error>{{ firstFormControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <input\n matInput\n type=\"text\"\n [name]=\"input.name + '-first'\"\n [formControl]=\"firstFormControl\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n (input)=\"setName()\"\n />\n </mat-form-field>\n <!-- LAST NAME -->\n <mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>نام خانوادگی {{ input.title || '' }}</mat-label>\n @if (lastFormControl.invalid) { <mat-error>{{ lastFormControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <input matInput type=\"text\" [name]=\"input.name + '-last'\" [formControl]=\"lastFormControl\" (input)=\"setName()\" />\n </mat-form-field>\n</div>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\ninterface IName {\n readonly first: string;\n readonly last: string;\n}\n\nexport interface IInputName extends Omit<IInput, 'value' | 'hint' | 'english' | 'description'> {\n readonly type: 'NAME';\n readonly value?: IName;\n}\n\nexport class InputNameMethods extends InputMethods<IInputName, IName | null> {\n override control(input: IInputName, validators: ValidatorFn[]): FormControl<IName | null> {\n const value: IName | null =\n input.value && Helper.IS.object(input.value) && !!input.value.first && !!input.value.last ? input.value : null;\n\n return new FormControl<IName | null>(value, validators);\n }\n\n override value(value: any, input: IInputName): IName | null {\n return Helper.IS.object(value) ? value : null;\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\n\nimport { IInputConfig } from '../input.interface';\n\nimport { IInputPassword } from './input-password.interface';\n\n@Component({\n host: { selector: 'input-password' },\n imports: [\n NgClass,\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatInputModule,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-password.component.html',\n styleUrl: './input-password.component.scss',\n})\nexport class InputPasswordComponent {\n public focused: boolean = false;\n public showPassword: boolean = false;\n\n constructor(\n @Inject('formControl') public readonly formControl: FormControl,\n @Inject('input') public readonly input: IInputPassword,\n @Inject('config') public readonly config: IInputConfig,\n ) {}\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'کلمه عبور' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (focused && input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- SHOW PASSWORD -->\n <span\n matTextSuffix\n class=\"suffix\"\n (click)=\"showPassword = !showPassword\"\n [style.opacity]=\"formControl.disabled ? '0.4' : 1\"\n >\n <span [ngClass]=\"config.enClass\">&nbsp;</span>\n <mat-icon>{{ showPassword ? 'visibility_off' : 'visibility' }}</mat-icon>\n </span>\n\n <input\n matInput\n [type]=\"showPassword ? 'text' : 'password'\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n [ngClass]=\"config.enClass\"\n [dir]=\"'ltr'\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n (focus)=\"focused = true\"\n (blur)=\"focused = false\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n [ngClass]=\"config.descriptionClass\"\n [style.opacity]=\"formControl.disabled ? '0.4' : 1\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputPassword extends Omit<IInput, 'english' | 'value'> {\n readonly type: 'PASSWORD';\n readonly verify?: {\n readonly minLength: number;\n readonly forceLowerCase?: boolean;\n readonly forceUpperCase?: boolean;\n readonly forceNumber?: boolean;\n };\n}\n\nexport class InputPasswordMethods extends InputMethods<IInputPassword, string | null> {\n override control(input: IInputPassword, validators: ValidatorFn[]): FormControl<string | null> {\n if (input.verify) {\n validators.push(Validators.minLength(input.verify.minLength));\n if (input.verify.forceLowerCase)\n validators.push(Validators.pattern(Helper.RE.PASSWORD.get(input.verify.minLength, true, false, false)));\n if (input.verify.forceUpperCase)\n validators.push(Validators.pattern(Helper.RE.PASSWORD.get(input.verify.minLength, false, true, false)));\n if (input.verify.forceNumber)\n validators.push(Validators.pattern(Helper.RE.PASSWORD.get(input.verify.minLength, false, false, true)));\n }\n\n return new FormControl<string | null>(null, validators);\n }\n\n override value(value: any, input: IInputPassword): string | null {\n return Helper.IS.string(value) && value !== '' ? value : null;\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { NgClass } from '@angular/common';\n\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\n\nimport { IInputConfig } from '../input.interface';\n\nimport { IInputSelect } from './input-select.interface';\n\n@Component({\n host: { selector: 'input-select' },\n imports: [\n NgClass,\n ReactiveFormsModule,\n MatFormField,\n MatInputModule,\n MatSelectModule,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-select.component.html',\n styleUrl: './input-select.component.scss',\n})\nexport class InputSelectComponent {\n public focused: boolean = false;\n\n constructor(\n @Inject('formControl') public readonly formControl: FormControl,\n @Inject('input') public readonly input: IInputSelect,\n @Inject('config') public readonly config: IInputConfig,\n ) {}\n\n getTitle(): string {\n return this.input.options.find((option) => option.id === this.formControl.value)?.title || '';\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (focused && input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <mat-select\n [formControl]=\"formControl\"\n [ngClass]=\"input.english ? config.enClass : ''\"\n [dir]=\"'rtl'\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n (focus)=\"focused = true\"\n (blur)=\"focused = false\"\n >\n <!-- OPTIONAL -->\n @if (!!input.optional) { <mat-option></mat-option> }\n\n <!-- TRIGGER -->\n <mat-select-trigger>\n <div [ngClass]=\"input.english ? ['english', config.enClass] : ''\">{{ getTitle() }}</div>\n </mat-select-trigger>\n\n <!-- OPTIONS -->\n @for (option of input.options; track $index) {\n <mat-option [value]=\"option.id\">\n <div [ngClass]=\"input.english ? ['english', config.enClass] : ''\">{{ option.title }}</div>\n </mat-option>\n }\n </mat-select>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n [ngClass]=\"config.descriptionClass\"\n [style.opacity]=\"formControl.disabled ? '0.4' : 1\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputSelect extends IInput {\n readonly type: 'SELECT';\n readonly title: string;\n readonly options: {\n readonly id: string;\n readonly title: string;\n }[];\n}\n\nexport class InputSelectMethods extends InputMethods<IInputSelect, string | null> {\n override control(input: IInputSelect, validators: ValidatorFn[]): FormControl<string | null> {\n const ids: string[] = input.options.map((option) => option.id);\n const value: string | null = input.value && ids.includes(input.value) ? input.value : null;\n\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputSelect): string | null {\n return value && input.options.find((option) => option.id === value) ? value : null;\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\n\nimport { IInputConfig } from '../input.interface';\n\nimport { IInputText } from './input-text.interface';\n\n@Component({\n host: { selector: 'input-text' },\n imports: [\n NgClass,\n ReactiveFormsModule,\n MatFormField,\n MatInputModule,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-text.component.html',\n styleUrl: './input-text.component.scss',\n})\nexport class InputTextComponent {\n public focused: boolean = false;\n\n constructor(\n @Inject('formControl') public readonly formControl: FormControl,\n @Inject('input') public readonly input: IInputText,\n @Inject('config') public readonly config: IInputConfig,\n ) {}\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (focused && input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <input\n matInput\n type=\"text\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n [ngClass]=\"input.english ? config.enClass : ''\"\n [maxLength]=\"input.maxLength || 524288\"\n [dir]=\"input.english ? 'ltr' : 'rtl'\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n (focus)=\"focused = true\"\n (blur)=\"focused = false\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n [ngClass]=\"config.descriptionClass\"\n [style.opacity]=\"formControl.disabled ? '0.4' : 1\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const LengthValidator = (length: number): ValidatorFn => {\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: string = formControl.value;\n if (Helper.IS.empty(value) || !Helper.IS.string(value)) return null;\n\n return value.length !== length ? { length } : null;\n };\n};\n","import { ValidatorFn, FormControl, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { LengthValidator } from '../../validators';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputText extends IInput {\n readonly type: 'TEXT';\n readonly title: string;\n readonly minLength?: number;\n readonly maxLength?: number;\n}\n\nexport class InputTextMethods extends InputMethods<IInputText, string | null> {\n override control(input: IInputText, validators: ValidatorFn[]): FormControl<string | null> {\n const minLength: number | null = input.minLength && input.minLength > 0 ? input.minLength : null;\n const maxLength: number | null = input.maxLength && input.maxLength > 0 ? input.maxLength : null;\n if (minLength && maxLength && minLength === maxLength) validators.push(LengthValidator(minLength));\n else {\n if (minLength && minLength > 0) validators.push(Validators.minLength(minLength));\n if (maxLength && maxLength > 0) validators.push(Validators.maxLength(maxLength));\n }\n\n return new FormControl<string | null>(input.value || null, validators);\n }\n\n override value(value: any, input: IInputText): string | null {\n return Helper.IS.string(value) && value !== '' ? value : null;\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { DecimalPipe, NgClass } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoFocusDirective, AutoHeightDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\n\nimport { IInputConfig } from '../input.interface';\n\nimport { IInputTextarea } from './input-textarea.interface';\n\n@Component({\n host: { selector: 'input-textarea' },\n imports: [\n DecimalPipe,\n NgClass,\n ReactiveFormsModule,\n MatFormField,\n MatInputModule,\n AutoFocusDirective,\n AutoHeightDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-textarea.component.html',\n styleUrl: './input-textarea.component.scss',\n})\nexport class InputTextareaComponent {\n public focused: boolean = false;\n\n constructor(\n @Inject('formControl') public readonly formControl: FormControl,\n @Inject('input') public readonly input: IInputTextarea,\n @Inject('config') public readonly config: IInputConfig,\n ) {}\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (focused && input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- COUNTER -->\n @if (focused && input.counter) {\n <mat-hint [align]=\"'end'\">\n {{ formControl.value?.length || 0 | number }}{{ input.maxLength ? ' از ' + (input.maxLength | number) : '' }}\n </mat-hint>\n }\n\n <textarea\n matInput\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n [ngClass]=\"input.english ? config.enClass : ''\"\n [dir]=\"input.english ? 'ltr' : 'rtl'\"\n [style.height]=\"input.height ? input.height.toString() + 'px' : '75px'\"\n [style.resize]=\"'none'\"\n [maxLength]=\"input.maxLength || 524288\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n [AutoHeightDirective]=\"!!input.autoHeight\"\n [minHeight]=\"input.height || 75\"\n [maxHeight]=\"input.maxHeight || 0\"\n (focus)=\"focused = true\"\n (blur)=\"focused = false\"\n ></textarea>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n [ngClass]=\"config.descriptionClass\"\n [style.opacity]=\"formControl.disabled ? '0.4' : 1\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputTextarea extends IInput {\n readonly type: 'TEXTAREA';\n readonly title: string;\n readonly height?: number;\n readonly autoHeight?: boolean;\n readonly maxHeight?: number;\n readonly maxLength?: number;\n readonly counter?: boolean;\n}\n\nexport class InputTextareaMethods extends InputMethods<IInputTextarea, string | null> {\n override control(input: IInputTextarea, validators: ValidatorFn[]): FormControl<string | null> {\n const maxLength: number | null = input.maxLength && input.maxLength > 0 ? input.maxLength : null;\n if (maxLength && maxLength > 0) validators.push(Validators.maxLength(maxLength));\n\n return new FormControl<string | null>(input.value || null, validators);\n }\n\n override value(value: any, input: IInputTextarea): string | null {\n return Helper.IS.string(value) && value !== '' ? value : null;\n }\n}\n","import { Component, Injector, Input, OnInit } from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { FormControl, FormGroup } from '@angular/forms';\n\nimport { NgxFormInputs } from '../ngx-form.interface';\n\nimport { IInputConfig, InputInfo } from '.';\n\n@Component({\n selector: 'form-input',\n imports: [NgComponentOutlet],\n templateUrl: './input.component.html',\n styleUrl: './input.component.scss',\n})\nexport class InputComponent implements OnInit {\n @Input({ required: true }) formGroup!: FormGroup;\n @Input({ required: true }) input!: NgxFormInputs;\n @Input({ required: true }) config!: IInputConfig;\n\n public inputInfo = InputInfo;\n public injector!: Injector;\n\n ngOnInit(): void {\n const formControl: FormControl = this.formGroup.get(this.input.name) as FormControl;\n\n this.injector = Injector.create({\n providers: [\n { provide: 'formControl', useValue: formControl },\n { provide: 'input', useValue: this.input },\n { provide: 'config', useValue: this.config },\n ],\n });\n }\n}\n","<ng-container *ngComponentOutlet=\"inputInfo[input.type].component; injector: injector\"></ng-container>\n","import { ComponentType } from '@angular/cdk/portal';\n\nimport { NgxFormInputs } from '../ngx-form.interface';\n\nimport { InputMethods } from './input.interface';\nimport {\n InputEmailComponent,\n InputEmailMethods,\n InputMobileComponent,\n InputMobileMethods,\n InputNameComponent,\n InputNameMethods,\n InputPasswordComponent,\n InputPasswordMethods,\n InputSelectComponent,\n InputSelectMethods,\n InputTextareaComponent,\n InputTextareaMethods,\n InputTextComponent,\n InputTextMethods,\n} from '.';\n\nexport const InputInfo: {\n [key in NgxFormInputs['type']]: {\n readonly title: string;\n readonly methods: InputMethods<any, any>;\n readonly component: ComponentType<any>;\n };\n} = {\n EMAIL: { title: 'ایمیل', methods: new InputEmailMethods(), component: InputEmailComponent },\n MOBILE: { title: 'موبایل', methods: new InputMobileMethods(), component: InputMobileComponent },\n NAME: { title: 'نام و نام خانوادگی', methods: new InputNameMethods(), component: InputNameComponent },\n PASSWORD: { title: 'کلمه عبور', methods: new InputPasswordMethods(), component: InputPasswordComponent },\n SELECT: { title: 'لیست کشویی', methods: new InputSelectMethods(), component: InputSelectComponent },\n TEXT: { title: 'متن یک خطی', methods: new InputTextMethods(), component: InputTextComponent },\n TEXTAREA: { title: 'متن چند خطی', methods: new InputTextareaMethods(), component: InputTextareaComponent },\n};\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders, Provider } from '@angular/core';\n\nexport interface INgxFormConfig {\n readonly mobileWidth: number;\n readonly submitTimeout: number;\n readonly headerClass: string;\n readonly enClass: string;\n readonly descriptionClass: string;\n}\n\nexport const NGX_FORM_CONFIG = new InjectionToken<Partial<INgxFormConfig>>('NGX-FORM-CONFIG');\n\nexport const provideNgxFormConfig = (config: Partial<INgxFormConfig>): EnvironmentProviders => {\n const providers: Provider[] = [{ provide: NGX_FORM_CONFIG, useValue: config }];\n\n return makeEnvironmentProviders(providers);\n};\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { FormGroup, NgForm, ReactiveFormsModule, ValidatorFn, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\n\nimport { MatButton } from '@angular/material/button';\n\nimport { FormErrorDirective } from './directives';\nimport { IInputConfig, InputComponent, InputInfo } from './inputs';\n\nimport { INgxFormConfig, NGX_FORM_CONFIG } from './ngx-form.config';\nimport { INgxForm, INgxFormInit, INgxFormValues, NgxFormInputs } from './ngx-form.interface';\n\ninterface IRow {\n header: string;\n inputs: NgxFormInputs[];\n flex: number[];\n}\n\ninterface IColumn {\n header: string;\n rows: IRow[];\n}\n\ninterface ISection {\n header: string;\n columns: IColumn[];\n flex: number[];\n}\n\n@Component({\n selector: 'ngx-form',\n imports: [NgClass, ReactiveFormsModule, MatButton, InputComponent, FormErrorDirective],\n templateUrl: './ngx-form.component.html',\n styleUrl: './ngx-form.component.scss',\n})\nexport class NgxFormComponent implements OnInit, OnChanges, AfterViewInit {\n @ViewChild('formObject') ngForm?: NgForm;\n\n @HostListener('window:resize', ['$event'])\n onResize = (event: any): void => this.setSize();\n\n @Input({ required: true }) ngxForm!: INgxForm;\n @Output() onInit: EventEmitter<INgxFormInit> = new EventEmitter<INgxFormInit>();\n @Output() onSubmit: EventEmitter<INgxFormValues> = new EventEmitter<INgxFormValues>();\n @Output() onChange: EventEmitter<INgxFormValues> = new EventEmitter<INgxFormValues>();\n\n protected formGroup!: FormGroup;\n\n protected sections: ISection[] = [];\n protected hiddenInputs: string[] = [];\n protected lastValues: INgxFormValues = {};\n protected lastSubmit?: Date;\n\n protected isMobile: boolean = false;\n protected headerClass!: string;\n protected inputConfig!: IInputConfig;\n\n constructor(\n private readonly router: Router,\n @Optional() @Inject(NGX_FORM_CONFIG) private readonly config?: Partial<INgxFormConfig>,\n ) {}\n\n ngOnInit(): void {\n this.headerClass = this.config?.headerClass || 'ngx-form-header';\n this.inputConfig = {\n appearance: this.ngxForm.appearance || 'fill',\n enClass: this.config?.enClass || 'ngx-form-en',\n descriptionClass: this.config?.descriptionClass || 'ngx-form-description',\n };\n\n this.formGroup = new FormGroup({});\n const inputs: NgxFormInputs[] = this.getInputs();\n\n // SET FORM GROUP INPUTS\n inputs.forEach((input: NgxFormInputs) => this.setInput(input));\n\n // CHECK AUTO FOCUS\n let autoFocus: string | undefined = undefined;\n inputs.forEach((input: NgxFormInputs) => {\n if (!('autoFocus' in input) || !input.autoFocus || autoFocus) return;\n if (!input.disableOn && !input.hideOn) autoFocus = input.name;\n });\n this.inputConfig = { ...this.inputConfig, autoFocus };\n\n // REGISTER VALUE CHANGE\n this.formGroup.valueChanges.subscribe({\n next: () => {\n const changedInputs: string[] = [];\n [...Object.keys(this.lastValues), ...Object.keys(this.formGroup.value)]\n .filter((key: string, index: number, arr: string[]) => arr.indexOf(key) === index)\n .forEach((key: string) => {\n if (this.formGroup.value[key] !== this.lastValues[key]) changedInputs.push(key);\n });\n if (changedInputs.length === 0) return;\n this.lastValues = { ...this.formGroup.value };\n\n this.checkInputs();\n\n if (this.ngxForm.updateValues) {\n const values: INgxFormValues = this.getValues();\n const changes: { [key: string]: any } = this.ngxForm.updateValues(values);\n\n Object.keys(changes)\n .filter((key: string) => !changedInputs.includes(key))\n .forEach((key: string) => {\n const input = this.getInputs().find((i) => i.name === key);\n if (!input) return;\n\n const formInput = this.formGroup.get(key);\n if (!formInput) return;\n\n const value = InputInfo[input.type].methods.value(changes[key], input);\n formInput.setValue(value);\n });\n this.lastValues = { ...this.formGroup.value };\n }\n\n this.onChange.next(this.getValues());\n },\n });\n\n this.checkInputs();\n this.setSize();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.sections = [];\n this.ngxForm.inputs.forEach((inputs) => {\n // SECTION\n if ('columns' in inputs) {\n this.sections.push({\n header: inputs.header || '',\n columns: inputs.columns.map((column) => {\n return {\n header: column.header || '',\n rows: column.rows.map((row) =>\n 'inputs' in row\n ? {\n header: row.header || '',\n inputs: row.inputs,\n flex: row.inputs.map((_, i) => row.flex?.[i] || 1),\n }\n : 'input' in row\n ? { header: row.header, inputs: [row.input], flex: [1] }\n : { header: '', inputs: [row], flex: [1] },\n ),\n flex: [],\n };\n }),\n flex: inputs.columns.map((_, c) => inputs.flex?.[c] || 1),\n });\n return;\n }\n\n // INPUTS\n if ('inputs' in inputs) {\n this.sections.push({\n header: inputs.header || '',\n columns: [\n {\n header: '',\n rows: [\n {\n header: '',\n inputs: inputs.inputs,\n flex: inputs.inputs.map((_, i) => inputs.flex?.[i] || 1),\n },\n ],\n },\n ],\n flex: [1],\n });\n return;\n }\n\n // HEADER\n if ('input' in inputs) {\n this.sections.push({\n header: inputs.header || '',\n columns: [{ header: '', rows: [{ header: '', inputs: [inputs.input], flex: [1] }] }],\n flex: [1],\n });\n return;\n }\n\n // INPUT\n this.sections.push({\n header: '',\n columns: [{ header: '', rows: [{ header: '', inputs: [inputs], flex: [1] }] }],\n flex: [1],\n });\n });\n }\n\n ngAfterViewInit(): void {\n this.onInit.next({ formGroup: this.formGroup, ngForm: this.ngForm });\n }\n\n getInputs(): NgxFormInputs[] {\n const list: NgxFormInputs[] = [];\n\n this.ngxForm.inputs.forEach((inputs) => {\n // SECTION\n if ('columns' in inputs) {\n inputs.columns.forEach((column) => {\n column.rows.forEach((row) => {\n if ('inputs' in row) list.push(...row.inputs);\n else list.push('input' in row ? row.input : row);\n });\n });\n return;\n }\n\n // INPUTS\n if ('inputs' in inputs) list.push(...inputs.inputs);\n else list.push('input' in inputs ? inputs.input : inputs);\n });\n\n return list;\n }\n\n getValues(): INgxFormValues {\n const inputs: NgxFormInputs[] = this.getInputs();\n const values: INgxFormValues = {};\n\n const getValue = (input: NgxFormInputs): any => {\n if (this.hiddenInputs.includes(input.name)) return null;\n\n const formInput = this.formGroup.get(input.name);\n if (!formInput || formInput.disabled || formInput.errors !== null) return null;\n\n const value: any = InputInfo[input.type].methods.value(formInput.value, input);\n return value;\n };\n\n inputs.forEach((input: NgxFormInputs) => {\n values[input.name] = getValue(input);\n });\n\n return values;\n }\n\n setInput(input: NgxFormInputs): void {\n const name: string = input.name;\n const validators: ValidatorFn[] = input.optional ? [] : [Validators.required];\n\n this.formGroup.setControl(name, InputInfo[input.type].methods.control(input, validators));\n }\n\n checkInputs(): void {\n const inputs: NgxFormInputs[] = this.getInputs();\n const values: INgxFormValues = this.getValues();\n\n // CHECK DISABLED INPUTS\n inputs.forEach((input: NgxFormInputs) => {\n if (!('disableOn' in input) || !input.disableOn) return;\n\n const formInput = this.formGroup.get(input.name);\n if (!formInput) return;\n\n const disabled: boolean = input.disableOn(values);\n disabled ? formInput.disable() : formInput.enable();\n });\n\n // CHECK HIDDEN INPUTS\n this.hiddenInputs = [];\n inputs.forEach((input: NgxFormInputs) => {\n if (!('hideOn' in input) || !input.hideOn) return;\n\n const formInput = this.formGroup.get(input.name);\n if (!formInput) return;\n\n const hidden: boolean = input.hideOn(values);\n hidden ? formInput.disable() : formInput.enable();\n if (hidden) this.hiddenInputs.push(input.name);\n });\n }\n\n checkSubmit(): void {\n this.formGroup.markAllAsTouched();\n if (this.formGroup.invalid) return;\n\n const submitTimeout = this.config?.submitTimeout;\n if (!!submitTimeout && this.lastSubmit) {\n const timeout: number = submitTimeout * 1000;\n const duration: number = new Date().getTime() - this.lastSubmit.getTime();\n if (duration < timeout) return;\n }\n\n this.onSubmit.next(this.getValues());\n this.lastSubmit = new Date();\n }\n\n setSize(): void {\n const mobileWidth: number = this.config?.mobileWidth || 600;\n this.isMobile = this.ngxForm.mobileView || window.innerWidth <= mobileWidth;\n }\n\n showSection(section: ISection): boolean {\n for (let c = 0; c < section.columns.length; c++) {\n if (this.showColumn(section.columns[c])) return true;\n }\n\n return false;\n }\n\n showColumn(column: IColumn): boolean {\n for (let r = 0; r < column.rows.length; r++) {\n if (this.showRow(column.rows[r])) return true;\n }\n\n return false;\n }\n\n showRow(row: IRow): boolean {\n for (let i = 0; i < row.inputs.length; i++) {\n if (this.showInput(row.inputs[i])) return true;\n }\n\n return false;\n }\n\n showInput(input: NgxFormInputs): boolean {\n return !this.hiddenInputs.includes(input.name);\n }\n\n onClick(action: string[] | (() => void)): void {\n if (typeof action === 'function') action();\n else this.router.navigate(action);\n }\n}\n","<form [formGroup]=\"formGroup\" (ngSubmit)=\"checkSubmit()\" dir=\"rtl\" class=\"ngx-form\" #formObject=\"ngForm\">\n <div class=\"sections\">\n @for (section of sections; track $index) {\n <!-- CHECK SECTION VIEW -->\n @if (showSection(section)) {\n <!-- SECTION HEADER -->\n @if (section.header) {\n <div [ngClass]=\"[headerClass, 'section-header']\">{{ section.header }}</div>\n }\n\n <div class=\"section\" [class.section-mobile]=\"isMobile\">\n <!-- SECTIONS -->\n @for (column of section.columns; track $index) {\n <!-- CHECK COLUMN VIEW -->\n @if (showColumn(column)) {\n <div class=\"column\" [style.flex]=\"section.flex[$index]\">\n <!-- COLUMN HEADER -->\n @if (column.header) {\n <div [ngClass]=\"[headerClass, 'column-header']\">{{ column.header }}</div>\n }\n\n <!-- ROWS -->\n @for (row of column.rows; track $index) {\n <!-- CHECK Row VIEW -->\n @if (showRow(row)) {\n <!-- ROW HEADER -->\n @if (row.header) {\n <div [ngClass]=\"[headerClass, 'row-header']\">{{ row.header }}</div>\n }\n\n <div class=\"inputs\">\n <!-- INPUTS -->\n @for (input of row.inputs; track $index) {\n <!-- CHECK Row VIEW -->\n @if (showInput(input)) {\n <div class=\"input\" [style.flex]=\"row.flex[$index]\">\n <form-input [formGroup]=\"formGroup\" [input]=\"input\" [config]=\"inputConfig\"></form-input>\n </div>\n } }\n </div>\n } }\n </div>\n } }\n </div>\n } }\n </div>\n\n <div class=\"buttons\" [class.buttons-mobile]=\"isMobile\">\n <!-- EXTRA BUTTONS -->\n @for (item of (ngxForm.buttons || []); track $index) {\n <button type=\"button\" mat-stroked-button (click)=\"onClick(item.action)\">{{ item.title }}</button>\n }\n <!-- SUBMIT BUTTON -->\n <button type=\"submit\" mat-flat-button>{{ ngxForm.submit }}</button>\n </div>\n</form>\n","/*\n * Public API Surface of ngx-form-m3\n */\n\nexport * from './lib/ngx-form.component';\nexport * from './lib/ngx-form.config';\nexport * from './lib/ngx-form.interface';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i4","i2"],"mappings":"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"}
1
+ {"version":3,"file":"webilix-ngx-form-m3.mjs","sources":["../../../ngx-form-m3/src/lib/directives/auto-complete.directive.ts","../../../ngx-form-m3/src/lib/directives/auto-focus.directive.ts","../../../ngx-form-m3/src/lib/directives/auto-height.directive.ts","../../../ngx-form-m3/src/lib/directives/form-error.directive.ts","../../../ngx-form-m3/src/lib/pipes/input-error.pipe.ts","../../../ngx-form-m3/src/lib/pipes/multi-line.pipe.ts","../../../ngx-form-m3/src/lib/inputs/input.interface.ts","../../../ngx-form-m3/src/lib/inputs/color/input-color.component.ts","../../../ngx-form-m3/src/lib/inputs/color/input-color.component.html","../../../ngx-form-m3/src/lib/inputs/color/input-color.interface.ts","../../../ngx-form-m3/src/lib/inputs/email/input-email.component.ts","../../../ngx-form-m3/src/lib/inputs/email/input-email.component.html","../../../ngx-form-m3/src/lib/inputs/email/input-email.interface.ts","../../../ngx-form-m3/src/lib/inputs/mobile/input-mobile.component.ts","../../../ngx-form-m3/src/lib/inputs/mobile/input-mobile.component.html","../../../ngx-form-m3/src/lib/inputs/mobile/input-mobile.interface.ts","../../../ngx-form-m3/src/lib/inputs/name/input-name.component.ts","../../../ngx-form-m3/src/lib/inputs/name/input-name.component.html","../../../ngx-form-m3/src/lib/inputs/name/input-name.interface.ts","../../../ngx-form-m3/src/lib/inputs/password/input-password.component.ts","../../../ngx-form-m3/src/lib/inputs/password/input-password.component.html","../../../ngx-form-m3/src/lib/inputs/password/input-password.interface.ts","../../../ngx-form-m3/src/lib/inputs/select/input-select.component.ts","../../../ngx-form-m3/src/lib/inputs/select/input-select.component.html","../../../ngx-form-m3/src/lib/inputs/select/input-select.interface.ts","../../../ngx-form-m3/src/lib/inputs/text/input-text.component.ts","../../../ngx-form-m3/src/lib/inputs/text/input-text.component.html","../../../ngx-form-m3/src/lib/validators/length.validator.ts","../../../ngx-form-m3/src/lib/inputs/text/input-text.interface.ts","../../../ngx-form-m3/src/lib/inputs/textarea/input-textarea.component.ts","../../../ngx-form-m3/src/lib/inputs/textarea/input-textarea.component.html","../../../ngx-form-m3/src/lib/inputs/textarea/input-textarea.interface.ts","../../../ngx-form-m3/src/lib/inputs/input.component.ts","../../../ngx-form-m3/src/lib/inputs/input.component.html","../../../ngx-form-m3/src/lib/inputs/input.info.ts","../../../ngx-form-m3/src/lib/ngx-form.config.ts","../../../ngx-form-m3/src/lib/ngx-form.component.ts","../../../ngx-form-m3/src/lib/ngx-form.component.html","../../../ngx-form-m3/src/public-api.ts","../../../ngx-form-m3/src/webilix-ngx-form-m3.ts"],"sourcesContent":["import { Directive, HostBinding } from '@angular/core';\n\n@Directive({ selector: 'input[type=\"text\"]' })\nexport class AutoCompleteDirective {\n @HostBinding('attr.autocomplete') autocomplete = 'one-time-code';\n}\n","import { AfterViewInit, Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({ selector: '[AutoFocusDirective]' })\nexport class AutoFocusDirective implements AfterViewInit {\n @Input({ required: true }) public AutoFocusDirective!: boolean;\n\n constructor(private elementRef: ElementRef) {}\n\n ngAfterViewInit(): void {\n if (!this.AutoFocusDirective || !this.elementRef) return;\n\n const input: HTMLInputElement = this.elementRef.nativeElement as HTMLInputElement;\n if (!input) return;\n\n setTimeout(() => {\n if (input.focus) input.focus();\n if (input.select) input.select();\n }, 0);\n }\n}\n","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\n\n@Directive({ selector: '[AutoHeightDirective]' })\nexport class AutoHeightDirective {\n @Input({ required: true }) public AutoHeightDirective!: boolean;\n @Input({ required: true }) public minHeight!: number;\n @Input({ required: false }) public maxHeight: number = 0;\n\n private _focused: boolean = false;\n @HostListener('focus')\n private focus(): void {\n this._focused = true;\n }\n @HostListener('blur')\n private blur(): void {\n this._focused = false;\n }\n\n constructor(private elementRef: ElementRef, private renderer2: Renderer2) {}\n\n public ngAfterViewInit(): void {\n this.resize(true);\n }\n\n @HostListener('input')\n private resize(forced?: boolean): void {\n if (this.AutoHeightDirective !== true || (!forced && !this._focused)) return;\n\n const textarea = this.elementRef.nativeElement as HTMLTextAreaElement;\n const borderHeight = textarea.offsetHeight - textarea.clientHeight;\n this.setHeight('auto');\n\n let height: number = textarea.scrollHeight + borderHeight;\n if (this.minHeight && this.minHeight > height) height = this.minHeight;\n if (this.maxHeight && this.maxHeight < height) height = this.maxHeight;\n this.setHeight(`${height}px`);\n }\n\n private setHeight(value: string): void {\n this.renderer2.setStyle(this.elementRef.nativeElement, 'height', value);\n this.renderer2.setStyle(this.elementRef.nativeElement, 'overflow', 'auto');\n }\n}\n","import { Directive, ElementRef, HostListener, Optional } from '@angular/core';\nimport { FormGroupDirective } from '@angular/forms';\n\n@Directive({ selector: 'form.ngx-form' })\nexport class FormErrorDirective {\n @HostListener('submit') onSubmit(): void {\n if (this.formGroupDirective && this.formGroupDirective.control.invalid) {\n const invalidControl: HTMLElement = this.elementRef.nativeElement.querySelector('.ng-invalid');\n if (invalidControl) return this.scrollToElement(invalidControl);\n }\n\n const invalidControl: HTMLElement = this.elementRef.nativeElement.querySelector('.ngx-form-invalid');\n if (invalidControl) this.scrollToElement(invalidControl);\n }\n\n constructor(private elementRef: ElementRef, @Optional() private formGroupDirective: FormGroupDirective) {}\n\n private scrollToElement(element: HTMLElement): void {\n const labelOffset: number = 150;\n const top: number = element.getBoundingClientRect().top + window.scrollY - labelOffset;\n window.scroll({ top, left: 0, behavior: 'smooth' });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'InputErrorPipe' })\nexport class InputErrorPipe implements PipeTransform {\n transform(errors: ValidationErrors | null | undefined, type: string): string {\n if (errors === null || errors === undefined) return '';\n\n const keys: string[] = Object.keys(errors);\n if (keys.length === 0) return '';\n\n const error: string = keys[0];\n const value: any = errors[error];\n\n switch (error) {\n case 'required':\n return 'مقدار الزامی است.';\n\n case 'length':\n return `مقدار باید داری ${Helper.NUMBER.format(value)} کاراکتر باشد.`;\n\n case 'minlength':\n return `مقدار باید حداقل داری ${Helper.NUMBER.format(value.requiredLength)} کاراکتر باشد.`;\n\n case 'maxlength':\n return `مقدار می‌تواند حداکثر داری ${Helper.NUMBER.format(value.requiredLength)} کاراکتر باشد.`;\n\n case 'pattern':\n switch (type) {\n case 'EMAIL':\n return 'فرمت استاندارد ایمیل رعایت نشده است.';\n case 'PASSWORD':\n switch (true) {\n case value.requiredPattern.includes('[0-9]'):\n return 'مقدار باید شامل اعداد انگلیسی باشد.';\n case value.requiredPattern.includes('[a-z]'):\n return 'مقدار باید شامل حروف انگلیسی کوچک باشد.';\n case value.requiredPattern.includes('[A-Z]'):\n return 'مقدار باید شامل حروف انگلیسی بزرگ باشد.';\n }\n return 'کاراکترهای الزامی در کلمه عبور استفاده نشده‌اند.';\n }\n break;\n\n case 'mask':\n switch (type) {\n case 'MOBILE':\n return 'شماره موبایل دارای ۱۱ رقم است.';\n }\n break;\n }\n\n return 'مقدار وارد شده صحیح نیست.';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'MultiLinePipe' })\nexport class MultiLinePipe implements PipeTransform {\n constructor(private readonly sanitizer: DomSanitizer) {}\n\n transform(value: string, config?: { html?: boolean }): string | SafeHtml {\n if (!Helper.IS.string(value) || value === '') return '';\n\n return config?.html\n ? this.sanitizer.bypassSecurityTrustHtml(value.replace(/(?:\\r\\n|\\r|\\n)/g, '<br />'))\n : Helper.STRING.escapeHTML(value).replace(/(?:\\r\\n|\\r|\\n)/g, '<br />');\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { INgxFormValues } from '../ngx-form.interface';\n\nexport interface IInput {\n readonly name: string;\n readonly title?: string;\n readonly value?: string;\n readonly hint?: string;\n readonly description?: string;\n readonly optional?: boolean;\n readonly english?: boolean;\n readonly autoFocus?: boolean;\n readonly appearance?: MatFormFieldAppearance;\n readonly disableOn?: (values: INgxFormValues) => boolean;\n readonly hideOn?: (values: INgxFormValues) => boolean;\n}\n\nexport abstract class InputMethods<I /** INPUT **/, V /** VALUE **/> {\n abstract control(input: I, validators: ValidatorFn[]): FormControl<V>;\n abstract value(value: any, input: I): V;\n}\n\nexport interface IInputConfig {\n readonly appearance: MatFormFieldAppearance;\n readonly autoFocus?: string;\n readonly enClass: string;\n readonly descriptionClass: string;\n}\n\nexport const INPUT_CONTROL: InjectionToken<FormControl> = new InjectionToken('NGX-FORM-INPUT-CONTROL');\nexport const INPUT_TYPE: InjectionToken<any> = new InjectionToken('NGX-FORM-INPUT-TYPE');\nexport const INPUT_CONFIG: InjectionToken<IInputConfig> = new InjectionToken('NGX-FORM-INPUT-CONFIG');\n","import { Component, inject } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputColor } from './input-color.interface';\n\n@Component({\n host: { selector: 'input-color' },\n imports: [NgClass, ReactiveFormsModule, MatFormField, MatIcon, MatInputModule, InputErrorPipe, MultiLinePipe],\n templateUrl: './input-color.component.html',\n styleUrl: './input-color.component.scss',\n})\nexport class InputColorComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputColor = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\" [floatLabel]=\"formControl.value ? 'always' : 'auto'\">\n <mat-label>{{ input.title || 'رنگ' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- SUFFIX -->\n <span matTextSuffix class=\"suffix\" [style.opacity]=\"formControl.disabled ? '0.4' : 1\">\n <span>&nbsp;</span>\n <mat-icon\n (click)=\"formControl.value ? formControl.setValue(null) : colorInput.click(); formControl.markAsTouched()\"\n [style.opacity]=\"formControl.value ? 1 : 0\"\n >\n close\n </mat-icon>\n </span>\n\n <!-- INPUT -->\n <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n\n <content>\n <section>\n <input type=\"color\" (input)=\"formControl.setValue(colorInput.value)\" [value]=\"formControl.value\" #colorInput />\n <div\n class=\"color\"\n [style.opacity]=\"formControl.disabled ? '0.4' : 1\"\n [style.cursor]=\"formControl.disabled ? 'default' : 'pointer'\"\n [style.background-color]=\"formControl.value || 'transparent'\"\n (click)=\"formControl.disabled ? null : colorInput.click(); formControl.markAsTouched()\"\n >\n &nbsp;\n </div>\n </section>\n\n <div\n class=\"value\"\n [ngClass]=\"config.enClass\"\n [dir]=\"'ltr'\"\n (click)=\"formControl.disabled ? null : colorInput.click(); formControl.markAsTouched()\"\n >\n {{ formControl.value || '&nbsp;' }}\n </div>\n </content>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n [ngClass]=\"config.descriptionClass\"\n [style.opacity]=\"formControl.disabled ? '0.4' : 1\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputColor extends Omit<IInput, 'english' | 'autoFocus'> {\n readonly type: 'COLOR';\n}\n\nexport class InputColorMethods extends InputMethods<IInputColor, string | null> {\n override control(input: IInputColor, validators: ValidatorFn[]): FormControl<string | null> {\n const value: string | null =\n input.value !== undefined && Helper.IS.STRING.color(input.value) ? Helper.COLOR.toHEX(input.value) : null;\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputColor): string | null {\n return Helper.IS.STRING.color(value) ? String(Helper.COLOR.toHEX(value)).toUpperCase() : null;\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputEmail } from './input-email.interface';\n\n@Component({\n host: { selector: 'input-email' },\n imports: [\n NgClass,\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatInputModule,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-email.component.html',\n styleUrl: './input-email.component.scss',\n})\nexport class InputEmailComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputEmail = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'ایمیل' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- ICON -->\n @if (input.showIcon) {\n <span matTextSuffix class=\"suffix\" [style.opacity]=\"formControl.disabled ? '0.4' : 1\">\n <span [ngClass]=\"config.enClass\">&nbsp;</span>\n <mat-icon>alternate_email</mat-icon>\n </span>\n }\n\n <input\n matInput\n type=\"text\"\n inputmode=\"email\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n [ngClass]=\"config.enClass\"\n [dir]=\"'ltr'\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n [ngClass]=\"config.descriptionClass\"\n [style.opacity]=\"formControl.disabled ? '0.4' : 1\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputEmail extends Omit<IInput, 'english'> {\n readonly type: 'EMAIL';\n readonly showIcon?: boolean;\n}\n\nexport class InputEmailMethods extends InputMethods<IInputEmail, string | null> {\n override control(input: IInputEmail, validators: ValidatorFn[]): FormControl<string | null> {\n validators.push(Validators.pattern(Helper.RE.EMAIL.get()));\n\n const value: string | null =\n input.value === undefined ? null : Helper.RE.EMAIL.verify(input.value) ? input.value.toLowerCase() : null;\n\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputEmail): string | null {\n return typeof value === 'string' && Helper.RE.EMAIL.verify(value) ? value.toLowerCase() : null;\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\n\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputMobile } from './input-mobile.interface';\n\n@Component({\n host: { selector: 'input-mobile' },\n imports: [\n NgClass,\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatInputModule,\n NgxMaskDirective,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n providers: [provideNgxMask()],\n templateUrl: './input-mobile.component.html',\n styleUrl: './input-mobile.component.scss',\n})\nexport class InputMobileComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputMobile = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n public inputTransformFn = (value: any): string => Helper.STRING.changeNumbers(value.toString(), 'EN');\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'موبایل' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- ICON & SUFFIX -->\n <span matTextSuffix class=\"suffix\" [style.opacity]=\"formControl.disabled ? '0.4' : 1\">\n <span [ngClass]=\"config.enClass\">09</span>\n @if (input.showIcon) { <mat-icon>smartphone</mat-icon> }\n </span>\n\n <input\n matInput\n type=\"text\"\n inputmode=\"numeric\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n [ngClass]=\"config.enClass\"\n [dir]=\"'ltr'\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n [mask]=\"'00-000-0000'\"\n [inputTransformFn]=\"inputTransformFn\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n [ngClass]=\"config.descriptionClass\"\n [style.opacity]=\"formControl.disabled ? '0.4' : 1\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputMobile extends Omit<IInput, 'english'> {\n readonly type: 'MOBILE';\n readonly showIcon?: boolean;\n}\n\nexport class InputMobileMethods extends InputMethods<IInputMobile, string | null> {\n override control(input: IInputMobile, validators: ValidatorFn[]): FormControl<string | null> {\n const value: string | null =\n input.value === undefined ? null : Helper.RE.MOBILE.verify(input.value) ? input.value.substring(2) : null;\n\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputMobile): string | null {\n return typeof value === 'string' && Helper.RE.MOBILE.verify(`09${value}`) ? `09${value}` : null;\n }\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\n\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe } from '../../pipes';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputName } from './input-name.interface';\n\n@Component({\n host: { selector: 'input-name' },\n imports: [ReactiveFormsModule, MatFormField, MatInputModule, AutoCompleteDirective, AutoFocusDirective, InputErrorPipe],\n templateUrl: './input-name.component.html',\n styleUrl: './input-name.component.scss',\n})\nexport class InputNameComponent implements OnInit {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputName = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n public firstFormControl!: FormControl;\n public lastFormControl!: FormControl;\n\n ngOnInit(): void {\n const value: { first: string; last: string } | null = this.formControl.value;\n const first: string | null = value?.first || null;\n const last: string | null = value?.last || null;\n\n this.firstFormControl = new FormControl<string | null>(first, this.input.optional ? [] : [Validators.required]);\n this.lastFormControl = new FormControl<string | null>(last, this.input.optional ? [] : [Validators.required]);\n\n this.formControl.statusChanges.subscribe({\n next: () => {\n if (this.formControl.disabled) {\n this.firstFormControl.disable();\n this.lastFormControl.disable();\n } else {\n this.firstFormControl.enable();\n this.lastFormControl.enable();\n }\n },\n });\n }\n\n setName(): void {\n const first: string = (this.firstFormControl.value || '').trim();\n const last: string = (this.lastFormControl.value || '').trim();\n\n const value: { first: string; last: string } | null = first !== '' && last !== '' ? { first, last } : null;\n this.formControl.setValue(value);\n }\n}\n","<!-- INPUT -->\n<input type=\"text\" [name]=\"input.name\" [formControl]=\"formControl\" [style.display]=\"'none !important'\" />\n\n<div class=\"columns\">\n <!-- FIRST NAME -->\n <mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>نام {{ input.title || '' }}</mat-label>\n @if (firstFormControl.invalid) { <mat-error>{{ firstFormControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <input\n matInput\n type=\"text\"\n [name]=\"input.name + '-first'\"\n [formControl]=\"firstFormControl\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n (input)=\"setName()\"\n />\n </mat-form-field>\n <!-- LAST NAME -->\n <mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>نام خانوادگی {{ input.title || '' }}</mat-label>\n @if (lastFormControl.invalid) { <mat-error>{{ lastFormControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <input matInput type=\"text\" [name]=\"input.name + '-last'\" [formControl]=\"lastFormControl\" (input)=\"setName()\" />\n </mat-form-field>\n</div>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\ninterface IName {\n readonly first: string;\n readonly last: string;\n}\n\nexport interface IInputName extends Omit<IInput, 'value' | 'hint' | 'english' | 'description'> {\n readonly type: 'NAME';\n readonly value?: IName;\n}\n\nexport class InputNameMethods extends InputMethods<IInputName, IName | null> {\n override control(input: IInputName, validators: ValidatorFn[]): FormControl<IName | null> {\n const value: IName | null =\n input.value && Helper.IS.object(input.value) && !!input.value.first && !!input.value.last ? input.value : null;\n\n return new FormControl<IName | null>(value, validators);\n }\n\n override value(value: any, input: IInputName): IName | null {\n return Helper.IS.object(value) ? value : null;\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputPassword } from './input-password.interface';\n\n@Component({\n host: { selector: 'input-password' },\n imports: [\n NgClass,\n ReactiveFormsModule,\n MatFormField,\n MatIcon,\n MatInputModule,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-password.component.html',\n styleUrl: './input-password.component.scss',\n})\nexport class InputPasswordComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputPassword = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n public showPassword: boolean = false;\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title || 'کلمه عبور' }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- SHOW PASSWORD -->\n <span\n matTextSuffix\n class=\"suffix\"\n (click)=\"showPassword = !showPassword\"\n [style.opacity]=\"formControl.disabled ? '0.4' : 1\"\n >\n <span [ngClass]=\"config.enClass\">&nbsp;</span>\n <mat-icon>{{ showPassword ? 'visibility_off' : 'visibility' }}</mat-icon>\n </span>\n\n <input\n matInput\n [type]=\"showPassword ? 'text' : 'password'\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n [ngClass]=\"config.enClass\"\n [dir]=\"'ltr'\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n [ngClass]=\"config.descriptionClass\"\n [style.opacity]=\"formControl.disabled ? '0.4' : 1\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputPassword extends Omit<IInput, 'english' | 'value'> {\n readonly type: 'PASSWORD';\n readonly verify?: {\n readonly minLength: number;\n readonly forceLowerCase?: boolean;\n readonly forceUpperCase?: boolean;\n readonly forceNumber?: boolean;\n };\n}\n\nexport class InputPasswordMethods extends InputMethods<IInputPassword, string | null> {\n override control(input: IInputPassword, validators: ValidatorFn[]): FormControl<string | null> {\n if (input.verify) {\n validators.push(Validators.minLength(input.verify.minLength));\n if (input.verify.forceLowerCase)\n validators.push(Validators.pattern(Helper.RE.PASSWORD.get(input.verify.minLength, true, false, false)));\n if (input.verify.forceUpperCase)\n validators.push(Validators.pattern(Helper.RE.PASSWORD.get(input.verify.minLength, false, true, false)));\n if (input.verify.forceNumber)\n validators.push(Validators.pattern(Helper.RE.PASSWORD.get(input.verify.minLength, false, false, true)));\n }\n\n return new FormControl<string | null>(null, validators);\n }\n\n override value(value: any, input: IInputPassword): string | null {\n return Helper.IS.string(value) && value !== '' ? value : null;\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { NgClass } from '@angular/common';\n\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputSelect } from './input-select.interface';\n\n@Component({\n host: { selector: 'input-select' },\n imports: [\n NgClass,\n ReactiveFormsModule,\n MatFormField,\n MatInputModule,\n MatSelectModule,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-select.component.html',\n styleUrl: './input-select.component.scss',\n})\nexport class InputSelectComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputSelect = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n getTitle(): string {\n return this.input.options.find((option) => option.id === this.formControl.value)?.title || '';\n }\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <mat-select\n [formControl]=\"formControl\"\n [ngClass]=\"input.english ? config.enClass : ''\"\n [dir]=\"'rtl'\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n >\n <!-- OPTIONAL -->\n @if (!!input.optional) { <mat-option></mat-option> }\n\n <!-- TRIGGER -->\n <mat-select-trigger>\n <div [ngClass]=\"input.english ? ['english', config.enClass] : ''\">{{ getTitle() }}</div>\n </mat-select-trigger>\n\n <!-- OPTIONS -->\n @for (option of input.options; track $index) {\n <mat-option [value]=\"option.id\">\n <div [ngClass]=\"input.english ? ['english', config.enClass] : ''\">{{ option.title }}</div>\n </mat-option>\n }\n </mat-select>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n [ngClass]=\"config.descriptionClass\"\n [style.opacity]=\"formControl.disabled ? '0.4' : 1\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputSelect extends IInput {\n readonly type: 'SELECT';\n readonly title: string;\n readonly options: {\n readonly id: string;\n readonly title: string;\n }[];\n}\n\nexport class InputSelectMethods extends InputMethods<IInputSelect, string | null> {\n override control(input: IInputSelect, validators: ValidatorFn[]): FormControl<string | null> {\n const ids: string[] = input.options.map((option) => option.id);\n const value: string | null = input.value && ids.includes(input.value) ? input.value : null;\n\n return new FormControl<string | null>(value, validators);\n }\n\n override value(value: any, input: IInputSelect): string | null {\n return value && input.options.find((option) => option.id === value) ? value : null;\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoCompleteDirective, AutoFocusDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputText } from './input-text.interface';\n\n@Component({\n host: { selector: 'input-text' },\n imports: [\n NgClass,\n ReactiveFormsModule,\n MatFormField,\n MatInputModule,\n AutoCompleteDirective,\n AutoFocusDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-text.component.html',\n styleUrl: './input-text.component.scss',\n})\nexport class InputTextComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputText = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <input\n matInput\n type=\"text\"\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n [ngClass]=\"input.english ? config.enClass : ''\"\n [maxLength]=\"input.maxLength || 524288\"\n [dir]=\"input.english ? 'ltr' : 'rtl'\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n />\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n [ngClass]=\"config.descriptionClass\"\n [style.opacity]=\"formControl.disabled ? '0.4' : 1\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const LengthValidator = (length: number): ValidatorFn => {\n return (formControl: AbstractControl): ValidationErrors | null => {\n const value: string = formControl.value;\n if (Helper.IS.empty(value) || !Helper.IS.string(value)) return null;\n\n return value.length !== length ? { length } : null;\n };\n};\n","import { ValidatorFn, FormControl, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { LengthValidator } from '../../validators';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputText extends IInput {\n readonly type: 'TEXT';\n readonly title: string;\n readonly minLength?: number;\n readonly maxLength?: number;\n}\n\nexport class InputTextMethods extends InputMethods<IInputText, string | null> {\n override control(input: IInputText, validators: ValidatorFn[]): FormControl<string | null> {\n const minLength: number | null = input.minLength && input.minLength > 0 ? input.minLength : null;\n const maxLength: number | null = input.maxLength && input.maxLength > 0 ? input.maxLength : null;\n if (minLength && maxLength && minLength === maxLength) validators.push(LengthValidator(minLength));\n else {\n if (minLength && minLength > 0) validators.push(Validators.minLength(minLength));\n if (maxLength && maxLength > 0) validators.push(Validators.maxLength(maxLength));\n }\n\n return new FormControl<string | null>(input.value || null, validators);\n }\n\n override value(value: any, input: IInputText): string | null {\n return Helper.IS.string(value) && value !== '' ? value : null;\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { DecimalPipe, NgClass } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { AutoFocusDirective, AutoHeightDirective } from '../../directives';\nimport { InputErrorPipe, MultiLinePipe } from '../../pipes';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE } from '../input.interface';\n\nimport { IInputTextarea } from './input-textarea.interface';\n\n@Component({\n host: { selector: 'input-textarea' },\n imports: [\n DecimalPipe,\n NgClass,\n ReactiveFormsModule,\n MatFormField,\n MatInputModule,\n AutoFocusDirective,\n AutoHeightDirective,\n InputErrorPipe,\n MultiLinePipe,\n ],\n templateUrl: './input-textarea.component.html',\n styleUrl: './input-textarea.component.scss',\n})\nexport class InputTextareaComponent {\n public formControl: FormControl = inject(INPUT_CONTROL);\n public input: IInputTextarea = inject(INPUT_TYPE);\n public config: IInputConfig = inject(INPUT_CONFIG);\n\n public focused: boolean = false;\n}\n","<mat-form-field [appearance]=\"input.appearance || config.appearance\">\n <mat-label>{{ input.title }}</mat-label>\n @if (formControl.invalid) { <mat-error>{{ formControl.errors | InputErrorPipe : input.type }}</mat-error> }\n\n <!-- HINT -->\n @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n <!-- COUNTER -->\n @if (focused && input.counter) {\n <mat-hint [align]=\"'end'\">\n {{ formControl.value?.length || 0 | number }}{{ input.maxLength ? ' از ' + (input.maxLength | number) : '' }}\n </mat-hint>\n }\n\n <textarea\n matInput\n [name]=\"input.name\"\n [formControl]=\"formControl\"\n [ngClass]=\"input.english ? config.enClass : ''\"\n [dir]=\"input.english ? 'ltr' : 'rtl'\"\n [style.height]=\"input.height ? input.height.toString() + 'px' : '75px'\"\n [style.resize]=\"'none'\"\n [maxLength]=\"input.maxLength || 524288\"\n [AutoFocusDirective]=\"config.autoFocus === input.name\"\n [AutoHeightDirective]=\"!!input.autoHeight\"\n [minHeight]=\"input.height || 75\"\n [maxHeight]=\"input.maxHeight || 0\"\n (focus)=\"focused = true\"\n (blur)=\"focused = false\"\n ></textarea>\n\n <!-- DESCRIPTION -->\n @if (input.description) {\n <div\n [ngClass]=\"config.descriptionClass\"\n [style.opacity]=\"formControl.disabled ? '0.4' : 1\"\n [innerHTML]=\"input.description | MultiLinePipe\"\n ></div>\n }\n</mat-form-field>\n","import { ValidatorFn, FormControl, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { InputMethods, IInput } from '../input.interface';\n\nexport interface IInputTextarea extends IInput {\n readonly type: 'TEXTAREA';\n readonly title: string;\n readonly height?: number;\n readonly autoHeight?: boolean;\n readonly maxHeight?: number;\n readonly maxLength?: number;\n readonly counter?: boolean;\n}\n\nexport class InputTextareaMethods extends InputMethods<IInputTextarea, string | null> {\n override control(input: IInputTextarea, validators: ValidatorFn[]): FormControl<string | null> {\n const maxLength: number | null = input.maxLength && input.maxLength > 0 ? input.maxLength : null;\n if (maxLength && maxLength > 0) validators.push(Validators.maxLength(maxLength));\n\n return new FormControl<string | null>(input.value || null, validators);\n }\n\n override value(value: any, input: IInputTextarea): string | null {\n return Helper.IS.string(value) && value !== '' ? value : null;\n }\n}\n","import { Component, Injector, Input, OnInit } from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { FormControl, FormGroup } from '@angular/forms';\n\nimport { NgxFormInputs } from '../ngx-form.interface';\n\nimport { IInputConfig, INPUT_CONFIG, INPUT_CONTROL, INPUT_TYPE, InputInfo } from '.';\n\n@Component({\n selector: 'form-input',\n imports: [NgComponentOutlet],\n templateUrl: './input.component.html',\n styleUrl: './input.component.scss',\n})\nexport class InputComponent implements OnInit {\n @Input({ required: true }) formGroup!: FormGroup;\n @Input({ required: true }) input!: NgxFormInputs;\n @Input({ required: true }) config!: IInputConfig;\n\n public inputInfo = InputInfo;\n public injector!: Injector;\n\n ngOnInit(): void {\n const formControl: FormControl = this.formGroup.get(this.input.name) as FormControl;\n\n this.injector = Injector.create({\n providers: [\n { provide: INPUT_CONTROL, useValue: formControl },\n { provide: INPUT_TYPE, useValue: this.input },\n { provide: INPUT_CONFIG, useValue: this.config },\n ],\n });\n }\n}\n","<ng-container *ngComponentOutlet=\"inputInfo[input.type].component; injector: injector\"></ng-container>\n","import { ComponentType } from '@angular/cdk/portal';\n\nimport { NgxFormInputs } from '../ngx-form.interface';\n\nimport { InputMethods } from './input.interface';\nimport {\n InputColorComponent,\n InputColorMethods,\n InputEmailComponent,\n InputEmailMethods,\n InputMobileComponent,\n InputMobileMethods,\n InputNameComponent,\n InputNameMethods,\n InputPasswordComponent,\n InputPasswordMethods,\n InputSelectComponent,\n InputSelectMethods,\n InputTextareaComponent,\n InputTextareaMethods,\n InputTextComponent,\n InputTextMethods,\n} from '.';\n\nexport const InputInfo: {\n [key in NgxFormInputs['type']]: {\n readonly title: string;\n readonly methods: InputMethods<any, any>;\n readonly component: ComponentType<any>;\n };\n} = {\n COLOR: { title: 'رنگ', methods: new InputColorMethods(), component: InputColorComponent },\n EMAIL: { title: 'ایمیل', methods: new InputEmailMethods(), component: InputEmailComponent },\n MOBILE: { title: 'موبایل', methods: new InputMobileMethods(), component: InputMobileComponent },\n NAME: { title: 'نام و نام خانوادگی', methods: new InputNameMethods(), component: InputNameComponent },\n PASSWORD: { title: 'کلمه عبور', methods: new InputPasswordMethods(), component: InputPasswordComponent },\n SELECT: { title: 'لیست کشویی', methods: new InputSelectMethods(), component: InputSelectComponent },\n TEXT: { title: 'متن یک خطی', methods: new InputTextMethods(), component: InputTextComponent },\n TEXTAREA: { title: 'متن چند خطی', methods: new InputTextareaMethods(), component: InputTextareaComponent },\n};\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders, Provider } from '@angular/core';\n\nexport interface INgxFormConfig {\n readonly mobileWidth: number;\n readonly submitTimeout: number;\n readonly headerClass: string;\n readonly enClass: string;\n readonly descriptionClass: string;\n}\n\nexport const NGX_FORM_CONFIG = new InjectionToken<Partial<INgxFormConfig>>('NGX-FORM-CONFIG');\n\nexport const provideNgxFormConfig = (config: Partial<INgxFormConfig>): EnvironmentProviders => {\n const providers: Provider[] = [{ provide: NGX_FORM_CONFIG, useValue: config }];\n\n return makeEnvironmentProviders(providers);\n};\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { FormGroup, NgForm, ReactiveFormsModule, ValidatorFn, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\n\nimport { MatButton } from '@angular/material/button';\n\nimport { FormErrorDirective } from './directives';\nimport { IInputConfig, InputComponent, InputInfo } from './inputs';\n\nimport { INgxFormConfig, NGX_FORM_CONFIG } from './ngx-form.config';\nimport { INgxForm, INgxFormInit, INgxFormValues, NgxFormInputs } from './ngx-form.interface';\n\ninterface IRow {\n header: string;\n inputs: NgxFormInputs[];\n flex: number[];\n}\n\ninterface IColumn {\n header: string;\n rows: IRow[];\n}\n\ninterface ISection {\n header: string;\n columns: IColumn[];\n flex: number[];\n}\n\n@Component({\n selector: 'ngx-form',\n imports: [NgClass, ReactiveFormsModule, MatButton, InputComponent, FormErrorDirective],\n templateUrl: './ngx-form.component.html',\n styleUrl: './ngx-form.component.scss',\n})\nexport class NgxFormComponent implements OnInit, OnChanges, AfterViewInit {\n @ViewChild('formObject') ngForm?: NgForm;\n\n @HostListener('window:resize', ['$event'])\n onResize = (event: any): void => this.setSize();\n\n @Input({ required: true }) ngxForm!: INgxForm;\n @Output() onInit: EventEmitter<INgxFormInit> = new EventEmitter<INgxFormInit>();\n @Output() onSubmit: EventEmitter<INgxFormValues> = new EventEmitter<INgxFormValues>();\n @Output() onChange: EventEmitter<INgxFormValues> = new EventEmitter<INgxFormValues>();\n\n protected formGroup!: FormGroup;\n\n protected sections: ISection[] = [];\n protected hiddenInputs: string[] = [];\n protected lastValues: INgxFormValues = {};\n protected lastSubmit?: Date;\n\n protected isMobile: boolean = false;\n protected headerClass!: string;\n protected inputConfig!: IInputConfig;\n\n constructor(\n private readonly router: Router,\n @Optional() @Inject(NGX_FORM_CONFIG) private readonly config?: Partial<INgxFormConfig>,\n ) {}\n\n ngOnInit(): void {\n this.headerClass = this.config?.headerClass || 'ngx-form-header';\n this.inputConfig = {\n appearance: this.ngxForm.appearance || 'fill',\n enClass: this.config?.enClass || 'ngx-form-en',\n descriptionClass: this.config?.descriptionClass || 'ngx-form-description',\n };\n\n this.formGroup = new FormGroup({});\n const inputs: NgxFormInputs[] = this.getInputs();\n\n // SET FORM GROUP INPUTS\n inputs.forEach((input: NgxFormInputs) => this.setInput(input));\n\n // CHECK AUTO FOCUS\n let autoFocus: string | undefined = undefined;\n inputs.forEach((input: NgxFormInputs) => {\n if (!('autoFocus' in input) || !input.autoFocus || autoFocus) return;\n if (!input.disableOn && !input.hideOn) autoFocus = input.name;\n });\n this.inputConfig = { ...this.inputConfig, autoFocus };\n\n // REGISTER VALUE CHANGE\n this.formGroup.valueChanges.subscribe({\n next: () => {\n const changedInputs: string[] = [];\n [...Object.keys(this.lastValues), ...Object.keys(this.formGroup.value)]\n .filter((key: string, index: number, arr: string[]) => arr.indexOf(key) === index)\n .forEach((key: string) => {\n if (this.formGroup.value[key] !== this.lastValues[key]) changedInputs.push(key);\n });\n if (changedInputs.length === 0) return;\n this.lastValues = { ...this.formGroup.value };\n\n this.checkInputs();\n\n if (this.ngxForm.updateValues) {\n const values: INgxFormValues = this.getValues();\n const changes: { [key: string]: any } = this.ngxForm.updateValues(values);\n\n Object.keys(changes)\n .filter((key: string) => !changedInputs.includes(key))\n .forEach((key: string) => {\n const input = this.getInputs().find((i) => i.name === key);\n if (!input) return;\n\n const formInput = this.formGroup.get(key);\n if (!formInput) return;\n\n const value = InputInfo[input.type].methods.value(changes[key], input);\n formInput.setValue(value);\n });\n this.lastValues = { ...this.formGroup.value };\n }\n\n this.onChange.next(this.getValues());\n },\n });\n\n this.checkInputs();\n this.setSize();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.sections = [];\n this.ngxForm.inputs.forEach((inputs) => {\n // SECTION\n if ('columns' in inputs) {\n this.sections.push({\n header: inputs.header || '',\n columns: inputs.columns.map((column) => {\n return {\n header: column.header || '',\n rows: column.rows.map((row) =>\n 'inputs' in row\n ? {\n header: row.header || '',\n inputs: row.inputs,\n flex: row.inputs.map((_, i) => row.flex?.[i] || 1),\n }\n : 'input' in row\n ? { header: row.header, inputs: [row.input], flex: [1] }\n : { header: '', inputs: [row], flex: [1] },\n ),\n flex: [],\n };\n }),\n flex: inputs.columns.map((_, c) => inputs.flex?.[c] || 1),\n });\n return;\n }\n\n // INPUTS\n if ('inputs' in inputs) {\n this.sections.push({\n header: inputs.header || '',\n columns: [\n {\n header: '',\n rows: [\n {\n header: '',\n inputs: inputs.inputs,\n flex: inputs.inputs.map((_, i) => inputs.flex?.[i] || 1),\n },\n ],\n },\n ],\n flex: [1],\n });\n return;\n }\n\n // HEADER\n if ('input' in inputs) {\n this.sections.push({\n header: inputs.header || '',\n columns: [{ header: '', rows: [{ header: '', inputs: [inputs.input], flex: [1] }] }],\n flex: [1],\n });\n return;\n }\n\n // INPUT\n this.sections.push({\n header: '',\n columns: [{ header: '', rows: [{ header: '', inputs: [inputs], flex: [1] }] }],\n flex: [1],\n });\n });\n }\n\n ngAfterViewInit(): void {\n this.onInit.next({ formGroup: this.formGroup, ngForm: this.ngForm });\n }\n\n getInputs(): NgxFormInputs[] {\n const list: NgxFormInputs[] = [];\n\n this.ngxForm.inputs.forEach((inputs) => {\n // SECTION\n if ('columns' in inputs) {\n inputs.columns.forEach((column) => {\n column.rows.forEach((row) => {\n if ('inputs' in row) list.push(...row.inputs);\n else list.push('input' in row ? row.input : row);\n });\n });\n return;\n }\n\n // INPUTS\n if ('inputs' in inputs) list.push(...inputs.inputs);\n else list.push('input' in inputs ? inputs.input : inputs);\n });\n\n return list;\n }\n\n getValues(): INgxFormValues {\n const inputs: NgxFormInputs[] = this.getInputs();\n const values: INgxFormValues = {};\n\n const getValue = (input: NgxFormInputs): any => {\n if (this.hiddenInputs.includes(input.name)) return null;\n\n const formInput = this.formGroup.get(input.name);\n if (!formInput || formInput.disabled || formInput.errors !== null) return null;\n\n const value: any = InputInfo[input.type].methods.value(formInput.value, input);\n return value;\n };\n\n inputs.forEach((input: NgxFormInputs) => {\n values[input.name] = getValue(input);\n });\n\n return values;\n }\n\n setInput(input: NgxFormInputs): void {\n const name: string = input.name;\n const validators: ValidatorFn[] = input.optional ? [] : [Validators.required];\n\n this.formGroup.setControl(name, InputInfo[input.type].methods.control(input, validators));\n }\n\n checkInputs(): void {\n const inputs: NgxFormInputs[] = this.getInputs();\n const values: INgxFormValues = this.getValues();\n\n // CHECK DISABLED INPUTS\n inputs.forEach((input: NgxFormInputs) => {\n if (!('disableOn' in input) || !input.disableOn) return;\n\n const formInput = this.formGroup.get(input.name);\n if (!formInput) return;\n\n const disabled: boolean = input.disableOn(values);\n disabled ? formInput.disable() : formInput.enable();\n });\n\n // CHECK HIDDEN INPUTS\n this.hiddenInputs = [];\n inputs.forEach((input: NgxFormInputs) => {\n if (!('hideOn' in input) || !input.hideOn) return;\n\n const formInput = this.formGroup.get(input.name);\n if (!formInput) return;\n\n const hidden: boolean = input.hideOn(values);\n hidden ? formInput.disable() : formInput.enable();\n if (hidden) this.hiddenInputs.push(input.name);\n });\n }\n\n checkSubmit(): void {\n this.formGroup.markAllAsTouched();\n if (this.formGroup.invalid) return;\n\n const submitTimeout = this.config?.submitTimeout;\n if (!!submitTimeout && this.lastSubmit) {\n const timeout: number = submitTimeout * 1000;\n const duration: number = new Date().getTime() - this.lastSubmit.getTime();\n if (duration < timeout) return;\n }\n\n this.onSubmit.next(this.getValues());\n this.lastSubmit = new Date();\n }\n\n setSize(): void {\n const mobileWidth: number = this.config?.mobileWidth || 600;\n this.isMobile = this.ngxForm.mobileView || window.innerWidth <= mobileWidth;\n }\n\n showSection(section: ISection): boolean {\n for (let c = 0; c < section.columns.length; c++) {\n if (this.showColumn(section.columns[c])) return true;\n }\n\n return false;\n }\n\n showColumn(column: IColumn): boolean {\n for (let r = 0; r < column.rows.length; r++) {\n if (this.showRow(column.rows[r])) return true;\n }\n\n return false;\n }\n\n showRow(row: IRow): boolean {\n for (let i = 0; i < row.inputs.length; i++) {\n if (this.showInput(row.inputs[i])) return true;\n }\n\n return false;\n }\n\n showInput(input: NgxFormInputs): boolean {\n return !this.hiddenInputs.includes(input.name);\n }\n\n onClick(action: string[] | (() => void)): void {\n if (typeof action === 'function') action();\n else this.router.navigate(action);\n }\n}\n","<form [formGroup]=\"formGroup\" (ngSubmit)=\"checkSubmit()\" dir=\"rtl\" class=\"ngx-form\" #formObject=\"ngForm\">\n <div class=\"sections\">\n @for (section of sections; track $index) {\n <!-- CHECK SECTION VIEW -->\n @if (showSection(section)) {\n <!-- SECTION HEADER -->\n @if (section.header) {\n <div [ngClass]=\"[headerClass, 'section-header']\">{{ section.header }}</div>\n }\n\n <div class=\"section\" [class.section-mobile]=\"isMobile\">\n <!-- SECTIONS -->\n @for (column of section.columns; track $index) {\n <!-- CHECK COLUMN VIEW -->\n @if (showColumn(column)) {\n <div class=\"column\" [style.flex]=\"section.flex[$index]\">\n <!-- COLUMN HEADER -->\n @if (column.header) {\n <div [ngClass]=\"[headerClass, 'column-header']\">{{ column.header }}</div>\n }\n\n <!-- ROWS -->\n @for (row of column.rows; track $index) {\n <!-- CHECK Row VIEW -->\n @if (showRow(row)) {\n <!-- ROW HEADER -->\n @if (row.header) {\n <div [ngClass]=\"[headerClass, 'row-header']\">{{ row.header }}</div>\n }\n\n <div class=\"inputs\">\n <!-- INPUTS -->\n @for (input of row.inputs; track $index) {\n <!-- CHECK Row VIEW -->\n @if (showInput(input)) {\n <div class=\"input\" [style.flex]=\"row.flex[$index]\">\n <form-input [formGroup]=\"formGroup\" [input]=\"input\" [config]=\"inputConfig\"></form-input>\n </div>\n } }\n </div>\n } }\n </div>\n } }\n </div>\n } }\n </div>\n\n <div class=\"buttons\" [class.buttons-mobile]=\"isMobile\">\n <!-- EXTRA BUTTONS -->\n @for (item of (ngxForm.buttons || []); track $index) {\n <button type=\"button\" mat-stroked-button (click)=\"onClick(item.action)\">{{ item.title }}</button>\n }\n <!-- SUBMIT BUTTON -->\n <button type=\"submit\" mat-flat-button>{{ ngxForm.submit }}</button>\n </div>\n</form>\n","/*\n * Public API Surface of ngx-form-m3\n */\n\nexport * from './lib/ngx-form.component';\nexport * from './lib/ngx-form.config';\nexport * from './lib/ngx-form.interface';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i4","i2"],"mappings":";;;;;;;;;;;;;;;;;;;;MAGa,qBAAqB,CAAA;IACI,YAAY,GAAG,eAAe;uGADvD,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,SAAS;mBAAC,EAAE,QAAQ,EAAE,oBAAoB,EAAE;8BAEP,YAAY,EAAA,CAAA;sBAA7C,WAAW;uBAAC,mBAAmB;;;MCDvB,kBAAkB,CAAA;AAGP,IAAA,UAAA;AAFc,IAAA,kBAAkB;AAEpD,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU;;IAE9B,eAAe,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE;AAElD,QAAA,MAAM,KAAK,GAAqB,IAAI,CAAC,UAAU,CAAC,aAAiC;AACjF,QAAA,IAAI,CAAC,KAAK;YAAE;QAEZ,UAAU,CAAC,MAAK;YACZ,IAAI,KAAK,CAAC,KAAK;gBAAE,KAAK,CAAC,KAAK,EAAE;YAC9B,IAAI,KAAK,CAAC,MAAM;gBAAE,KAAK,CAAC,MAAM,EAAE;SACnC,EAAE,CAAC,CAAC;;uGAdA,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,SAAS;mBAAC,EAAE,QAAQ,EAAE,sBAAsB,EAAE;+EAET,kBAAkB,EAAA,CAAA;sBAAnD,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;MCDhB,mBAAmB,CAAA;AAeR,IAAA,UAAA;AAAgC,IAAA,SAAA;AAdlB,IAAA,mBAAmB;AACnB,IAAA,SAAS;IACR,SAAS,GAAW,CAAC;IAEhD,QAAQ,GAAY,KAAK;IAEzB,KAAK,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;;IAGhB,IAAI,GAAA;AACR,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;IAGzB,WAAoB,CAAA,UAAsB,EAAU,SAAoB,EAAA;QAApD,IAAU,CAAA,UAAA,GAAV,UAAU;QAAsB,IAAS,CAAA,SAAA,GAAT,SAAS;;IAEtD,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;;AAIb,IAAA,MAAM,CAAC,MAAgB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE;AAEtE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAoC;QACrE,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY;AAClE,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAEtB,QAAA,IAAI,MAAM,GAAW,QAAQ,CAAC,YAAY,GAAG,YAAY;QACzD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,GAAG,MAAM;AAAE,YAAA,MAAM,GAAG,IAAI,CAAC,SAAS;QACtE,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,GAAG,MAAM;AAAE,YAAA,MAAM,GAAG,IAAI,CAAC,SAAS;AACtE,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM,CAAA,EAAA,CAAI,CAAC;;AAGzB,IAAA,SAAS,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,CAAC;AACvE,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC;;uGArCrE,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,SAAS;mBAAC,EAAE,QAAQ,EAAE,uBAAuB,EAAE;uGAEV,mBAAmB,EAAA,CAAA;sBAApD,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACS,SAAS,EAAA,CAAA;sBAA1C,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACU,SAAS,EAAA,CAAA;sBAA3C,KAAK;uBAAC,EAAE,QAAQ,EAAE,KAAK,EAAE;gBAIlB,KAAK,EAAA,CAAA;sBADZ,YAAY;uBAAC,OAAO;gBAKb,IAAI,EAAA,CAAA;sBADX,YAAY;uBAAC,MAAM;gBAYZ,MAAM,EAAA,CAAA;sBADb,YAAY;uBAAC,OAAO;;;MCpBZ,kBAAkB,CAAA;AAWP,IAAA,UAAA;AAA4C,IAAA,kBAAA;IAVxC,QAAQ,GAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE;AACpE,YAAA,MAAM,cAAc,GAAgB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC;AAC9F,YAAA,IAAI,cAAc;AAAE,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC;;AAGnE,QAAA,MAAM,cAAc,GAAgB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC;AACpG,QAAA,IAAI,cAAc;AAAE,YAAA,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC;;IAG5D,WAAoB,CAAA,UAAsB,EAAsB,kBAAsC,EAAA;QAAlF,IAAU,CAAA,UAAA,GAAV,UAAU;QAAkC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;;AAE1E,IAAA,eAAe,CAAC,OAAoB,EAAA;QACxC,MAAM,WAAW,GAAW,GAAG;AAC/B,QAAA,MAAM,GAAG,GAAW,OAAO,CAAC,qBAAqB,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO,GAAG,WAAW;AACtF,QAAA,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;;uGAhB9C,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,SAAS;mBAAC,EAAE,QAAQ,EAAE,eAAe,EAAE;;0BAYS;yCAVrB,QAAQ,EAAA,CAAA;sBAA/B,YAAY;uBAAC,QAAQ;;;MCCb,cAAc,CAAA;IACvB,SAAS,CAAC,MAA2C,EAAE,IAAY,EAAA;AAC/D,QAAA,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;AAAE,YAAA,OAAO,EAAE;QAEtD,MAAM,IAAI,GAAa,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1C,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE;AAEhC,QAAA,MAAM,KAAK,GAAW,IAAI,CAAC,CAAC,CAAC;AAC7B,QAAA,MAAM,KAAK,GAAQ,MAAM,CAAC,KAAK,CAAC;QAEhC,QAAQ,KAAK;AACT,YAAA,KAAK,UAAU;AACX,gBAAA,OAAO,mBAAmB;AAE9B,YAAA,KAAK,QAAQ;gBACT,OAAO,CAAA,gBAAA,EAAmB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,cAAA,CAAgB;AAEzE,YAAA,KAAK,WAAW;AACZ,gBAAA,OAAO,CAAyB,sBAAA,EAAA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA,cAAA,CAAgB;AAE9F,YAAA,KAAK,WAAW;AACZ,gBAAA,OAAO,CAA8B,2BAAA,EAAA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA,cAAA,CAAgB;AAEnG,YAAA,KAAK,SAAS;gBACV,QAAQ,IAAI;AACR,oBAAA,KAAK,OAAO;AACR,wBAAA,OAAO,sCAAsC;AACjD,oBAAA,KAAK,UAAU;wBACX,QAAQ,IAAI;AACR,4BAAA,KAAK,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC;AACxC,gCAAA,OAAO,qCAAqC;AAChD,4BAAA,KAAK,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC;AACxC,gCAAA,OAAO,yCAAyC;AACpD,4BAAA,KAAK,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC;AACxC,gCAAA,OAAO,yCAAyC;;AAExD,wBAAA,OAAO,kDAAkD;;gBAEjE;AAEJ,YAAA,KAAK,MAAM;gBACP,QAAQ,IAAI;AACR,oBAAA,KAAK,QAAQ;AACT,wBAAA,OAAO,gCAAgC;;gBAE/C;;AAGR,QAAA,OAAO,2BAA2B;;uGAhD7B,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,IAAI;mBAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE;;;MCCnB,aAAa,CAAA;AACO,IAAA,SAAA;AAA7B,IAAA,WAAA,CAA6B,SAAuB,EAAA;QAAvB,IAAS,CAAA,SAAA,GAAT,SAAS;;IAEtC,SAAS,CAAC,KAAa,EAAE,MAA2B,EAAA;AAChD,QAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;AAAE,YAAA,OAAO,EAAE;QAEvD,OAAO,MAAM,EAAE;AACX,cAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC;AACnF,cAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC;;uGARrE,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,IAAI;mBAAC,EAAE,IAAI,EAAE,eAAe,EAAE;;;MCgBT,YAAY,CAAA;AAGjC;AASM,MAAM,aAAa,GAAgC,IAAI,cAAc,CAAC,wBAAwB,CAAC;AAC/F,MAAM,UAAU,GAAwB,IAAI,cAAc,CAAC,qBAAqB,CAAC;AACjF,MAAM,YAAY,GAAiC,IAAI,cAAc,CAAC,uBAAuB,CAAC;;MCfxF,mBAAmB,CAAA;AACrB,IAAA,WAAW,GAAgB,MAAM,CAAC,aAAa,CAAC;AAChD,IAAA,KAAK,GAAgB,MAAM,CAAC,UAAU,CAAC;AACvC,IAAA,MAAM,GAAiB,MAAM,CAAC,YAAY,CAAC;uGAHzC,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,ECpBhC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,aAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,woEAsDA,EDtCc,MAAA,EAAA,CAAA,oYAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,mFAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAE,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,cAAc,kDAAE,aAAa,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA;;2FAInG,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACA,YAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAE,QAAQ,EAAE,aAAa,EAAE,EACxB,OAAA,EAAA,CAAC,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,woEAAA,EAAA,MAAA,EAAA,CAAA,oYAAA,CAAA,EAAA;;;AEN3G,MAAO,iBAAkB,SAAQ,YAAwC,CAAA;IAClE,OAAO,CAAC,KAAkB,EAAE,UAAyB,EAAA;AAC1D,QAAA,MAAM,KAAK,GACP,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI;AAC7G,QAAA,OAAO,IAAI,WAAW,CAAgB,KAAK,EAAE,UAAU,CAAC;;IAGnD,KAAK,CAAC,KAAU,EAAE,KAAkB,EAAA;AACzC,QAAA,OAAO,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI;;AAEpG;;MCWY,mBAAmB,CAAA;AACrB,IAAA,WAAW,GAAgB,MAAM,CAAC,aAAa,CAAC;AAChD,IAAA,KAAK,GAAgB,MAAM,CAAC,UAAU,CAAC;AACvC,IAAA,MAAM,GAAiB,MAAM,CAAC,YAAY,CAAC;uGAHzC,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,6HC/BhC,uqCAmCA,EAAA,MAAA,EAAA,CAAA,qEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjBQ,OAAO,EACP,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,0kBACnB,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,OAAO,EACP,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,62BACd,qBAAqB,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,kBAAkB,EAClB,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,cAAc,kDACd,aAAa,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA;;2FAKR,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAhB/B,SAAS;AACA,YAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAE,QAAQ,EAAE,aAAa,EAAE,EACxB,OAAA,EAAA;wBACL,OAAO;wBACP,mBAAmB;wBACnB,YAAY;wBACZ,OAAO;wBACP,cAAc;wBACd,qBAAqB;wBACrB,kBAAkB;wBAClB,cAAc;wBACd,aAAa;AAChB,qBAAA,EAAA,QAAA,EAAA,uqCAAA,EAAA,MAAA,EAAA,CAAA,qEAAA,CAAA,EAAA;;;AEhBC,MAAO,iBAAkB,SAAQ,YAAwC,CAAA;IAClE,OAAO,CAAC,KAAkB,EAAE,UAAyB,EAAA;AAC1D,QAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;AAE1D,QAAA,MAAM,KAAK,GACP,KAAK,CAAC,KAAK,KAAK,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,IAAI;AAE7G,QAAA,OAAO,IAAI,WAAW,CAAgB,KAAK,EAAE,UAAU,CAAC;;IAGnD,KAAK,CAAC,KAAU,EAAE,KAAkB,EAAA;QACzC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,IAAI;;AAErG;;MCYY,oBAAoB,CAAA;AACtB,IAAA,WAAW,GAAgB,MAAM,CAAC,aAAa,CAAC;AAChD,IAAA,KAAK,GAAiB,MAAM,CAAC,UAAU,CAAC;AACxC,IAAA,MAAM,GAAiB,MAAM,CAAC,YAAY,CAAC;AAE3C,IAAA,gBAAgB,GAAG,CAAC,KAAU,KAAa,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC;uGAL5F,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,cAAA,EAAA,EAAA,EAAA,SAAA,EAJlB,CAAC,cAAc,EAAE,CAAC,EChCjC,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,wvCAmCA,EDdQ,MAAA,EAAA,CAAA,qEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,EACP,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,YAAY,4LACZ,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACP,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,gBAAgB,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,qBAAqB,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAClB,cAAc,EAAA,IAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACd,aAAa,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA;;2FAMR,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAlBhC,SAAS;AACA,YAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAE,QAAQ,EAAE,cAAc,EAAE,EACzB,OAAA,EAAA;wBACL,OAAO;wBACP,mBAAmB;wBACnB,YAAY;wBACZ,OAAO;wBACP,cAAc;wBACd,gBAAgB;wBAChB,qBAAqB;wBACrB,kBAAkB;wBAClB,cAAc;wBACd,aAAa;qBAChB,EACU,SAAA,EAAA,CAAC,cAAc,EAAE,CAAC,EAAA,QAAA,EAAA,wvCAAA,EAAA,MAAA,EAAA,CAAA,qEAAA,CAAA,EAAA;;;AErB3B,MAAO,kBAAmB,SAAQ,YAAyC,CAAA;IACpE,OAAO,CAAC,KAAmB,EAAE,UAAyB,EAAA;AAC3D,QAAA,MAAM,KAAK,GACP,KAAK,CAAC,KAAK,KAAK,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;AAE7G,QAAA,OAAO,IAAI,WAAW,CAAgB,KAAK,EAAE,UAAU,CAAC;;IAGnD,KAAK,CAAC,KAAU,EAAE,KAAmB,EAAA;QAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAK,EAAA,EAAA,KAAK,CAAE,CAAA,CAAC,GAAG,CAAA,EAAA,EAAK,KAAK,CAAA,CAAE,GAAG,IAAI;;AAEtG;;MCHY,kBAAkB,CAAA;AACpB,IAAA,WAAW,GAAgB,MAAM,CAAC,aAAa,CAAC;AAChD,IAAA,KAAK,GAAe,MAAM,CAAC,UAAU,CAAC;AACtC,IAAA,MAAM,GAAiB,MAAM,CAAC,YAAY,CAAC;AAE3C,IAAA,gBAAgB;AAChB,IAAA,eAAe;IAEtB,QAAQ,GAAA;AACJ,QAAA,MAAM,KAAK,GAA2C,IAAI,CAAC,WAAW,CAAC,KAAK;AAC5E,QAAA,MAAM,KAAK,GAAkB,KAAK,EAAE,KAAK,IAAI,IAAI;AACjD,QAAA,MAAM,IAAI,GAAkB,KAAK,EAAE,IAAI,IAAI,IAAI;QAE/C,IAAI,CAAC,gBAAgB,GAAG,IAAI,WAAW,CAAgB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC/G,IAAI,CAAC,eAAe,GAAG,IAAI,WAAW,CAAgB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAE7G,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC;YACrC,IAAI,EAAE,MAAK;AACP,gBAAA,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AAC3B,oBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;AAC/B,oBAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;;qBAC3B;AACH,oBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;AAC9B,oBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;;aAEpC;AACJ,SAAA,CAAC;;IAGN,OAAO,GAAA;AACH,QAAA,MAAM,KAAK,GAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE;AAChE,QAAA,MAAM,IAAI,GAAW,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE;QAE9D,MAAM,KAAK,GAA2C,KAAK,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;AAC1G,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;;uGAlC3B,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,ECnB/B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,8vCA0BA,EDXc,MAAA,EAAA,CAAA,yEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,YAAY,EAAE,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,EAAE,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,4FAAE,cAAc,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA;;2FAI7G,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACA,YAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAA,OAAA,EACvB,CAAC,mBAAmB,EAAE,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,cAAc,CAAC,EAAA,QAAA,EAAA,8vCAAA,EAAA,MAAA,EAAA,CAAA,yEAAA,CAAA,EAAA;;;AECrH,MAAO,gBAAiB,SAAQ,YAAsC,CAAA;IAC/D,OAAO,CAAC,KAAiB,EAAE,UAAyB,EAAA;AACzD,QAAA,MAAM,KAAK,GACP,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI;AAElH,QAAA,OAAO,IAAI,WAAW,CAAe,KAAK,EAAE,UAAU,CAAC;;IAGlD,KAAK,CAAC,KAAU,EAAE,KAAiB,EAAA;AACxC,QAAA,OAAO,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI;;AAEpD;;MCGY,sBAAsB,CAAA;AACxB,IAAA,WAAW,GAAgB,MAAM,CAAC,aAAa,CAAC;AAChD,IAAA,KAAK,GAAmB,MAAM,CAAC,UAAU,CAAC;AAC1C,IAAA,MAAM,GAAiB,MAAM,CAAC,YAAY,CAAC;IAE3C,YAAY,GAAY,KAAK;uGAL3B,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,gIC9BnC,2xCAqCA,EAAA,MAAA,EAAA,CAAA,oFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDnBQ,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACP,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,YAAY,EACZ,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,0IACP,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,kBAAkB,EAClB,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,cAAc,kDACd,aAAa,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA;;2FAKR,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAflC,SAAS;AACA,YAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAC3B,OAAA,EAAA;wBACL,OAAO;wBACP,mBAAmB;wBACnB,YAAY;wBACZ,OAAO;wBACP,cAAc;wBACd,kBAAkB;wBAClB,cAAc;wBACd,aAAa;AAChB,qBAAA,EAAA,QAAA,EAAA,2xCAAA,EAAA,MAAA,EAAA,CAAA,oFAAA,CAAA,EAAA;;;AEVC,MAAO,oBAAqB,SAAQ,YAA2C,CAAA;IACxE,OAAO,CAAC,KAAqB,EAAE,UAAyB,EAAA;AAC7D,QAAA,IAAI,KAAK,CAAC,MAAM,EAAE;AACd,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC7D,YAAA,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc;AAC3B,gBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3G,YAAA,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc;AAC3B,gBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3G,YAAA,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW;AACxB,gBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;;AAG/G,QAAA,OAAO,IAAI,WAAW,CAAgB,IAAI,EAAE,UAAU,CAAC;;IAGlD,KAAK,CAAC,KAAU,EAAE,KAAqB,EAAA;QAC5C,OAAO,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,GAAG,KAAK,GAAG,IAAI;;AAEpE;;MCJY,oBAAoB,CAAA;AACtB,IAAA,WAAW,GAAgB,MAAM,CAAC,aAAa,CAAC;AAChD,IAAA,KAAK,GAAiB,MAAM,CAAC,UAAU,CAAC;AACxC,IAAA,MAAM,GAAiB,MAAM,CAAC,YAAY,CAAC;IAElD,QAAQ,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE;;uGANxF,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,8HC9BjC,m2CAsCA,EAAA,MAAA,EAAA,CAAA,gDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDpBQ,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACP,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,YAAY,EACZ,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,wYACd,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,kBAAkB,EAClB,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,cAAc,kDACd,aAAa,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA;;2FAKR,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAfhC,SAAS;AACA,YAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAE,QAAQ,EAAE,cAAc,EAAE,EACzB,OAAA,EAAA;wBACL,OAAO;wBACP,mBAAmB;wBACnB,YAAY;wBACZ,cAAc;wBACd,eAAe;wBACf,kBAAkB;wBAClB,cAAc;wBACd,aAAa;AAChB,qBAAA,EAAA,QAAA,EAAA,m2CAAA,EAAA,MAAA,EAAA,CAAA,gDAAA,CAAA,EAAA;;;AEbC,MAAO,kBAAmB,SAAQ,YAAyC,CAAA;IACpE,OAAO,CAAC,KAAmB,EAAE,UAAyB,EAAA;AAC3D,QAAA,MAAM,GAAG,GAAa,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC;QAC9D,MAAM,KAAK,GAAkB,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI;AAE1F,QAAA,OAAO,IAAI,WAAW,CAAgB,KAAK,EAAE,UAAU,CAAC;;IAGnD,KAAK,CAAC,KAAU,EAAE,KAAmB,EAAA;QAC1C,OAAO,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI;;AAEzF;;MCKY,kBAAkB,CAAA;AACpB,IAAA,WAAW,GAAgB,MAAM,CAAC,aAAa,CAAC;AAChD,IAAA,KAAK,GAAe,MAAM,CAAC,UAAU,CAAC;AACtC,IAAA,MAAM,GAAiB,MAAM,CAAC,YAAY,CAAC;uGAHzC,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,4HC7B/B,y7BA2BA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDVQ,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACP,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,YAAY,EACZ,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,4uBACd,qBAAqB,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,kBAAkB,EAClB,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,cAAc,kDACd,aAAa,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA;;2FAKR,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAf9B,SAAS;AACA,YAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAE,QAAQ,EAAE,YAAY,EAAE,EACvB,OAAA,EAAA;wBACL,OAAO;wBACP,mBAAmB;wBACnB,YAAY;wBACZ,cAAc;wBACd,qBAAqB;wBACrB,kBAAkB;wBAClB,cAAc;wBACd,aAAa;AAChB,qBAAA,EAAA,QAAA,EAAA,y7BAAA,EAAA;;;AErBE,MAAM,eAAe,GAAG,CAAC,MAAc,KAAiB;IAC3D,OAAO,CAAC,WAA4B,KAA6B;AAC7D,QAAA,MAAM,KAAK,GAAW,WAAW,CAAC,KAAK;AACvC,QAAA,IAAI,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI;AAEnE,QAAA,OAAO,KAAK,CAAC,MAAM,KAAK,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI;AACtD,KAAC;AACL,CAAC;;ACIK,MAAO,gBAAiB,SAAQ,YAAuC,CAAA;IAChE,OAAO,CAAC,KAAiB,EAAE,UAAyB,EAAA;QACzD,MAAM,SAAS,GAAkB,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI;QAChG,MAAM,SAAS,GAAkB,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI;AAChG,QAAA,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,KAAK,SAAS;YAAE,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;aAC7F;AACD,YAAA,IAAI,SAAS,IAAI,SAAS,GAAG,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAChF,YAAA,IAAI,SAAS,IAAI,SAAS,GAAG,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;;QAGpF,OAAO,IAAI,WAAW,CAAgB,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,UAAU,CAAC;;IAGjE,KAAK,CAAC,KAAU,EAAE,KAAiB,EAAA;QACxC,OAAO,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,GAAG,KAAK,GAAG,IAAI;;AAEpE;;MCDY,sBAAsB,CAAA;AACxB,IAAA,WAAW,GAAgB,MAAM,CAAC,aAAa,CAAC;AAChD,IAAA,KAAK,GAAmB,MAAM,CAAC,UAAU,CAAC;AAC1C,IAAA,MAAM,GAAiB,MAAM,CAAC,YAAY,CAAC;IAE3C,OAAO,GAAY,KAAK;uGALtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,gIC9BnC,s/CAwCA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDvBQ,WAAW,EACX,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,mFACP,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,YAAY,EACZ,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,4uBACd,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,mBAAmB,EACnB,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,cAAc,kDACd,aAAa,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA;;2FAKR,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAhBlC,SAAS;AACA,YAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAC3B,OAAA,EAAA;wBACL,WAAW;wBACX,OAAO;wBACP,mBAAmB;wBACnB,YAAY;wBACZ,cAAc;wBACd,kBAAkB;wBAClB,mBAAmB;wBACnB,cAAc;wBACd,aAAa;AAChB,qBAAA,EAAA,QAAA,EAAA,s/CAAA,EAAA;;;AEVC,MAAO,oBAAqB,SAAQ,YAA2C,CAAA;IACxE,OAAO,CAAC,KAAqB,EAAE,UAAyB,EAAA;QAC7D,MAAM,SAAS,GAAkB,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI;AAChG,QAAA,IAAI,SAAS,IAAI,SAAS,GAAG,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAEhF,OAAO,IAAI,WAAW,CAAgB,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,UAAU,CAAC;;IAGjE,KAAK,CAAC,KAAU,EAAE,KAAqB,EAAA;QAC5C,OAAO,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,GAAG,KAAK,GAAG,IAAI;;AAEpE;;MCbY,cAAc,CAAA;AACI,IAAA,SAAS;AACT,IAAA,KAAK;AACL,IAAA,MAAM;IAE1B,SAAS,GAAG,SAAS;AACrB,IAAA,QAAQ;IAEf,QAAQ,GAAA;AACJ,QAAA,MAAM,WAAW,GAAgB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAgB;AAEnF,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC5B,YAAA,SAAS,EAAE;AACP,gBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE;gBACjD,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE;gBAC7C,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE;AACnD,aAAA;AACJ,SAAA,CAAC;;uGAjBG,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd3B,4GACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDSc,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,kCAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIlB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;+BACI,YAAY,EAAA,OAAA,EACb,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,4GAAA,EAAA;8BAKD,SAAS,EAAA,CAAA;sBAAnC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACE,KAAK,EAAA,CAAA;sBAA/B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACE,MAAM,EAAA,CAAA;sBAAhC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;AEOtB,MAAM,SAAS,GAMlB;AACA,IAAA,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,iBAAiB,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE;AACzF,IAAA,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,iBAAiB,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE;AAC3F,IAAA,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,kBAAkB,EAAE,EAAE,SAAS,EAAE,oBAAoB,EAAE;AAC/F,IAAA,IAAI,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,gBAAgB,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE;AACrG,IAAA,QAAQ,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,oBAAoB,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE;AACxG,IAAA,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,kBAAkB,EAAE,EAAE,SAAS,EAAE,oBAAoB,EAAE;AACnG,IAAA,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,gBAAgB,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE;AAC7F,IAAA,QAAQ,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,oBAAoB,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE;CAC7G;;MC7BY,eAAe,GAAG,IAAI,cAAc,CAA0B,iBAAiB;AAE/E,MAAA,oBAAoB,GAAG,CAAC,MAA+B,KAA0B;AAC1F,IAAA,MAAM,SAAS,GAAe,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAE9E,IAAA,OAAO,wBAAwB,CAAC,SAAS,CAAC;AAC9C;;MCiCa,gBAAgB,CAAA;AAuBJ,IAAA,MAAA;AACqC,IAAA,MAAA;AAvBjC,IAAA,MAAM;IAG/B,QAAQ,GAAG,CAAC,KAAU,KAAW,IAAI,CAAC,OAAO,EAAE;AAEpB,IAAA,OAAO;AACxB,IAAA,MAAM,GAA+B,IAAI,YAAY,EAAgB;AACrE,IAAA,QAAQ,GAAiC,IAAI,YAAY,EAAkB;AAC3E,IAAA,QAAQ,GAAiC,IAAI,YAAY,EAAkB;AAE3E,IAAA,SAAS;IAET,QAAQ,GAAe,EAAE;IACzB,YAAY,GAAa,EAAE;IAC3B,UAAU,GAAmB,EAAE;AAC/B,IAAA,UAAU;IAEV,QAAQ,GAAY,KAAK;AACzB,IAAA,WAAW;AACX,IAAA,WAAW;IAErB,WACqB,CAAA,MAAc,EACuB,MAAgC,EAAA;QADrE,IAAM,CAAA,MAAA,GAAN,MAAM;QAC+B,IAAM,CAAA,MAAA,GAAN,MAAM;;IAGhE,QAAQ,GAAA;QACJ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,IAAI,iBAAiB;QAChE,IAAI,CAAC,WAAW,GAAG;AACf,YAAA,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,MAAM;AAC7C,YAAA,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,aAAa;AAC9C,YAAA,gBAAgB,EAAE,IAAI,CAAC,MAAM,EAAE,gBAAgB,IAAI,sBAAsB;SAC5E;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC;AAClC,QAAA,MAAM,MAAM,GAAoB,IAAI,CAAC,SAAS,EAAE;;AAGhD,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAoB,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;;QAG9D,IAAI,SAAS,GAAuB,SAAS;AAC7C,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAoB,KAAI;AACpC,YAAA,IAAI,EAAE,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,SAAS;gBAAE;YAC9D,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM;AAAE,gBAAA,SAAS,GAAG,KAAK,CAAC,IAAI;AACjE,SAAC,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE;;AAGrD,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC;YAClC,IAAI,EAAE,MAAK;gBACP,MAAM,aAAa,GAAa,EAAE;gBAClC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACjE,qBAAA,MAAM,CAAC,CAAC,GAAW,EAAE,KAAa,EAAE,GAAa,KAAK,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK;AAChF,qBAAA,OAAO,CAAC,CAAC,GAAW,KAAI;AACrB,oBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;AAAE,wBAAA,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;AACnF,iBAAC,CAAC;AACN,gBAAA,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;oBAAE;gBAChC,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;gBAE7C,IAAI,CAAC,WAAW,EAAE;AAElB,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AAC3B,oBAAA,MAAM,MAAM,GAAmB,IAAI,CAAC,SAAS,EAAE;oBAC/C,MAAM,OAAO,GAA2B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC;AAEzE,oBAAA,MAAM,CAAC,IAAI,CAAC,OAAO;AACd,yBAAA,MAAM,CAAC,CAAC,GAAW,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC;AACpD,yBAAA,OAAO,CAAC,CAAC,GAAW,KAAI;wBACrB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC;AAC1D,wBAAA,IAAI,CAAC,KAAK;4BAAE;wBAEZ,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;AACzC,wBAAA,IAAI,CAAC,SAAS;4BAAE;wBAEhB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;AACtE,wBAAA,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC7B,qBAAC,CAAC;oBACN,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;;gBAGjD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;aACvC;AACJ,SAAA,CAAC;QAEF,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,OAAO,EAAE;;AAGlB,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;QAClB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;;AAEnC,YAAA,IAAI,SAAS,IAAI,MAAM,EAAE;AACrB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACf,oBAAA,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;oBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;wBACnC,OAAO;AACH,4BAAA,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;AAC3B,4BAAA,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KACtB,QAAQ,IAAI;AACR,kCAAE;AACI,oCAAA,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE;oCACxB,MAAM,EAAE,GAAG,CAAC,MAAM;oCAClB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AACrD;kCACD,OAAO,IAAI;sCACX,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtD,sCAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CACjD;AACD,4BAAA,IAAI,EAAE,EAAE;yBACX;AACL,qBAAC,CAAC;oBACF,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5D,iBAAA,CAAC;gBACF;;;AAIJ,YAAA,IAAI,QAAQ,IAAI,MAAM,EAAE;AACpB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACf,oBAAA,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;AAC3B,oBAAA,OAAO,EAAE;AACL,wBAAA;AACI,4BAAA,MAAM,EAAE,EAAE;AACV,4BAAA,IAAI,EAAE;AACF,gCAAA;AACI,oCAAA,MAAM,EAAE,EAAE;oCACV,MAAM,EAAE,MAAM,CAAC,MAAM;oCACrB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3D,iCAAA;AACJ,6BAAA;AACJ,yBAAA;AACJ,qBAAA;oBACD,IAAI,EAAE,CAAC,CAAC,CAAC;AACZ,iBAAA,CAAC;gBACF;;;AAIJ,YAAA,IAAI,OAAO,IAAI,MAAM,EAAE;AACnB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACf,oBAAA,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;AAC3B,oBAAA,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;oBACpF,IAAI,EAAE,CAAC,CAAC,CAAC;AACZ,iBAAA,CAAC;gBACF;;;AAIJ,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACf,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC9E,IAAI,EAAE,CAAC,CAAC,CAAC;AACZ,aAAA,CAAC;AACN,SAAC,CAAC;;IAGN,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;;IAGxE,SAAS,GAAA;QACL,MAAM,IAAI,GAAoB,EAAE;QAEhC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;;AAEnC,YAAA,IAAI,SAAS,IAAI,MAAM,EAAE;gBACrB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;oBAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;wBACxB,IAAI,QAAQ,IAAI,GAAG;4BAAE,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;;AACxC,4BAAA,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC;AACpD,qBAAC,CAAC;AACN,iBAAC,CAAC;gBACF;;;YAIJ,IAAI,QAAQ,IAAI,MAAM;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;;AAC9C,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC;AAC7D,SAAC,CAAC;AAEF,QAAA,OAAO,IAAI;;IAGf,SAAS,GAAA;AACL,QAAA,MAAM,MAAM,GAAoB,IAAI,CAAC,SAAS,EAAE;QAChD,MAAM,MAAM,GAAmB,EAAE;AAEjC,QAAA,MAAM,QAAQ,GAAG,CAAC,KAAoB,KAAS;YAC3C,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;AAAE,gBAAA,OAAO,IAAI;AAEvD,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAChD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,IAAI;AAAE,gBAAA,OAAO,IAAI;AAE9E,YAAA,MAAM,KAAK,GAAQ,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;AAC9E,YAAA,OAAO,KAAK;AAChB,SAAC;AAED,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAoB,KAAI;YACpC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AACxC,SAAC,CAAC;AAEF,QAAA,OAAO,MAAM;;AAGjB,IAAA,QAAQ,CAAC,KAAoB,EAAA;AACzB,QAAA,MAAM,IAAI,GAAW,KAAK,CAAC,IAAI;AAC/B,QAAA,MAAM,UAAU,GAAkB,KAAK,CAAC,QAAQ,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC;QAE7E,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;;IAG7F,WAAW,GAAA;AACP,QAAA,MAAM,MAAM,GAAoB,IAAI,CAAC,SAAS,EAAE;AAChD,QAAA,MAAM,MAAM,GAAmB,IAAI,CAAC,SAAS,EAAE;;AAG/C,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAoB,KAAI;YACpC,IAAI,EAAE,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS;gBAAE;AAEjD,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AAChD,YAAA,IAAI,CAAC,SAAS;gBAAE;YAEhB,MAAM,QAAQ,GAAY,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AACjD,YAAA,QAAQ,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE;AACvD,SAAC,CAAC;;AAGF,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAoB,KAAI;YACpC,IAAI,EAAE,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE;AAE3C,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AAChD,YAAA,IAAI,CAAC,SAAS;gBAAE;YAEhB,MAAM,MAAM,GAAY,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;AAC5C,YAAA,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE;AACjD,YAAA,IAAI,MAAM;gBAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAClD,SAAC,CAAC;;IAGN,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE;AACjC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO;YAAE;AAE5B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa;QAChD,IAAI,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,EAAE;AACpC,YAAA,MAAM,OAAO,GAAW,aAAa,GAAG,IAAI;AAC5C,YAAA,MAAM,QAAQ,GAAW,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;YACzE,IAAI,QAAQ,GAAG,OAAO;gBAAE;;QAG5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE;;IAGhC,OAAO,GAAA;QACH,MAAM,WAAW,GAAW,IAAI,CAAC,MAAM,EAAE,WAAW,IAAI,GAAG;AAC3D,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,IAAI,WAAW;;AAG/E,IAAA,WAAW,CAAC,OAAiB,EAAA;AACzB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAAE,gBAAA,OAAO,IAAI;;AAGxD,QAAA,OAAO,KAAK;;AAGhB,IAAA,UAAU,CAAC,MAAe,EAAA;AACtB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAAE,gBAAA,OAAO,IAAI;;AAGjD,QAAA,OAAO,KAAK;;AAGhB,IAAA,OAAO,CAAC,GAAS,EAAA;AACb,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAAE,gBAAA,OAAO,IAAI;;AAGlD,QAAA,OAAO,KAAK;;AAGhB,IAAA,SAAS,CAAC,KAAoB,EAAA;QAC1B,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;;AAGlD,IAAA,OAAO,CAAC,MAA+B,EAAA;QACnC,IAAI,OAAO,MAAM,KAAK,UAAU;AAAE,YAAA,MAAM,EAAE;;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;;AArS5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,0CAwBD,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAxB9B,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjD7B,kxEAwDA,EAAA,MAAA,EAAA,CAAA,ujBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDXc,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA;;2FAI5E,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;+BACI,UAAU,EAAA,OAAA,EACX,CAAC,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,cAAc,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,kxEAAA,EAAA,MAAA,EAAA,CAAA,ujBAAA,CAAA,EAAA;;0BA4BjF;;0BAAY,MAAM;2BAAC,eAAe;yCAvBd,MAAM,EAAA,CAAA;sBAA9B,SAAS;uBAAC,YAAY;gBAGvB,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;gBAGd,OAAO,EAAA,CAAA;sBAAjC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACf,MAAM,EAAA,CAAA;sBAAf;gBACS,QAAQ,EAAA,CAAA;sBAAjB;gBACS,QAAQ,EAAA,CAAA;sBAAjB;;;AE1DL;;AAEG;;ACFH;;AAEG;;;;"}
@@ -0,0 +1,11 @@
1
+ import { FormControl } from '@angular/forms';
2
+ import { IInputConfig } from '../input.interface';
3
+ import { IInputColor } from './input-color.interface';
4
+ import * as i0 from "@angular/core";
5
+ export declare class InputColorComponent {
6
+ formControl: FormControl;
7
+ input: IInputColor;
8
+ config: IInputConfig;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputColorComponent, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputColorComponent, "ng-component", never, {}, {}, never, never, true, never>;
11
+ }
@@ -0,0 +1,9 @@
1
+ import { ValidatorFn, FormControl } from '@angular/forms';
2
+ import { InputMethods, IInput } from '../input.interface';
3
+ export interface IInputColor extends Omit<IInput, 'english' | 'autoFocus'> {
4
+ readonly type: 'COLOR';
5
+ }
6
+ export declare class InputColorMethods extends InputMethods<IInputColor, string | null> {
7
+ control(input: IInputColor, validators: ValidatorFn[]): FormControl<string | null>;
8
+ value(value: any, input: IInputColor): string | null;
9
+ }
@@ -3,11 +3,9 @@ import { IInputConfig } from '../input.interface';
3
3
  import { IInputEmail } from './input-email.interface';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class InputEmailComponent {
6
- readonly formControl: FormControl;
7
- readonly input: IInputEmail;
8
- readonly config: IInputConfig;
9
- focused: boolean;
10
- constructor(formControl: FormControl, input: IInputEmail, config: IInputConfig);
6
+ formControl: FormControl;
7
+ input: IInputEmail;
8
+ config: IInputConfig;
11
9
  static ɵfac: i0.ɵɵFactoryDeclaration<InputEmailComponent, never>;
12
10
  static ɵcmp: i0.ɵɵComponentDeclaration<InputEmailComponent, "ng-component", never, {}, {}, never, never, true, never>;
13
11
  }
@@ -1,3 +1,5 @@
1
+ export * from './color/input-color.component';
2
+ export * from './color/input-color.interface';
1
3
  export * from './email/input-email.component';
2
4
  export * from './email/input-email.interface';
3
5
  export * from './mobile/input-mobile.component';
@@ -23,6 +23,11 @@ export declare class InputComponent implements OnInit {
23
23
  readonly methods: import("./input.interface").InputMethods<any, any>;
24
24
  readonly component: import("@angular/cdk/portal").ComponentType<any>;
25
25
  };
26
+ COLOR: {
27
+ readonly title: string;
28
+ readonly methods: import("./input.interface").InputMethods<any, any>;
29
+ readonly component: import("@angular/cdk/portal").ComponentType<any>;
30
+ };
26
31
  NAME: {
27
32
  readonly title: string;
28
33
  readonly methods: import("./input.interface").InputMethods<any, any>;
@@ -1,3 +1,4 @@
1
+ import { InjectionToken } from '@angular/core';
1
2
  import { FormControl, ValidatorFn } from '@angular/forms';
2
3
  import { MatFormFieldAppearance } from '@angular/material/form-field';
3
4
  import { INgxFormValues } from '../ngx-form.interface';
@@ -24,3 +25,6 @@ export interface IInputConfig {
24
25
  readonly enClass: string;
25
26
  readonly descriptionClass: string;
26
27
  }
28
+ export declare const INPUT_CONTROL: InjectionToken<FormControl>;
29
+ export declare const INPUT_TYPE: InjectionToken<any>;
30
+ export declare const INPUT_CONFIG: InjectionToken<IInputConfig>;