{"version":3,"file":"webilix-ngx-form.mjs","sources":["../../../ngx-form/src/lib/ngx-form/classes/ngx-form.ts","../../../ngx-form/src/lib/ngx-form/inputs/comment.ts","../../../ngx-form/src/lib/ngx-form/inputs/auto-complete.ts","../../../ngx-form/src/lib/ngx-form/validators/ngx-bank-card.validator.ts","../../../ngx-form/src/lib/ngx-form/validators/ngx-duplicate.validator.ts","../../../ngx-form/src/lib/ngx-form/validators/ngx-length.validator.ts","../../../ngx-form/src/lib/ngx-form/validators/ngx-max-count.validator.ts","../../../ngx-form/src/lib/ngx-form/validators/ngx-max-date.validator.ts","../../../ngx-form/src/lib/ngx-form/validators/ngx-max-unit.validator.ts","../../../ngx-form/src/lib/ngx-form/validators/ngx-max.validator.ts","../../../ngx-form/src/lib/ngx-form/validators/ngx-min-count.validator.ts","../../../ngx-form/src/lib/ngx-form/validators/ngx-min-date.validator.ts","../../../ngx-form/src/lib/ngx-form/validators/ngx-min-unit.validator.ts","../../../ngx-form/src/lib/ngx-form/validators/ngx-min.validator.ts","../../../ngx-form/src/lib/ngx-form/validators/ngx-multiply-of.validator.ts","../../../ngx-form/src/lib/ngx-form/validators/ngx-national-code.validator.ts","../../../ngx-form/src/lib/ngx-form/validators/ngx-pattern.validator.ts","../../../ngx-form/src/lib/ngx-form/validators/ngx-period.validator.ts","../../../ngx-form/src/lib/ngx-form/validators/ngx-plate-validator.ts","../../../ngx-form/src/lib/ngx-form/validators/ngx-range.validator.ts","../../../ngx-form/src/lib/ngx-form/inputs/bank-card.ts","../../../ngx-form/src/lib/ngx-form/inputs/checkbox.ts","../../../ngx-form/src/lib/ngx-form/inputs/color.ts","../../../ngx-form/src/lib/ngx-form/inputs/coordinates.ts","../../../ngx-form/src/lib/ngx-form/inputs/date.ts","../../../ngx-form/src/lib/ngx-form/inputs/domain.ts","../../../ngx-form/src/lib/ngx-form/inputs/email.ts","../../../ngx-form/src/lib/ngx-form/inputs/file.ts","../../../ngx-form/src/lib/ngx-form/inputs/group.ts","../../../ngx-form/src/lib/ngx-form/inputs/icon.ts","../../../ngx-form/src/lib/ngx-form/inputs/ip.ts","../../../ngx-form/src/lib/ngx-form/inputs/list.ts","../../../ngx-form/src/lib/ngx-form/inputs/mask.ts","../../../ngx-form/src/lib/ngx-form/inputs/mobile.ts","../../../ngx-form/src/lib/ngx-form/inputs/multi-file.ts","../../../ngx-form/src/lib/ngx-form/inputs/multi-select.ts","../../../ngx-form/src/lib/ngx-form/inputs/name.ts","../../../ngx-form/src/lib/ngx-form/inputs/national-code.ts","../../../ngx-form/src/lib/ngx-form/inputs/number.ts","../../../ngx-form/src/lib/ngx-form/inputs/numeric.ts","../../../ngx-form/src/lib/ngx-form/inputs/option-list.ts","../../../ngx-form/src/lib/ngx-form/inputs/password.ts","../../../ngx-form/src/lib/ngx-form/inputs/period.ts","../../../ngx-form/src/lib/ngx-form/inputs/plate.ts","../../../ngx-form/src/lib/ngx-form/inputs/price.ts","../../../ngx-form/src/lib/ngx-form/inputs/range.ts","../../../ngx-form/src/lib/ngx-form/inputs/select.ts","../../../ngx-form/src/lib/ngx-form/inputs/tag.ts","../../../ngx-form/src/lib/ngx-form/inputs/text.ts","../../../ngx-form/src/lib/ngx-form/inputs/textarea.ts","../../../ngx-form/src/lib/ngx-form/inputs/time.ts","../../../ngx-form/src/lib/ngx-form/inputs/url.ts","../../../ngx-form/src/lib/ngx-form/inputs/username.ts","../../../ngx-form/src/lib/ngx-form/inputs/unit/area.ts","../../../ngx-form/src/lib/ngx-form/inputs/unit/length.ts","../../../ngx-form/src/lib/ngx-form/inputs/unit/volume.ts","../../../ngx-form/src/lib/ngx-form/inputs/unit/weight.ts","../../../ngx-form/src/lib/ngx-form/interfaces/ngx-info.ts","../../../ngx-form/src/lib/ngx-form/ngx-form.service.ts","../../../ngx-form/src/lib/ngx-directive/ngx-error.directive.ts","../../../ngx-form/src/lib/ngx-directive/ngx-autocomplete.directive.ts","../../../ngx-form/src/lib/ngx-pipe/ngx-multi-line.pipe.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-description/ngx-description.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-description/ngx-description.component.html","../../../ngx-form/src/lib/ngx-pipe/ngx-error.pipe.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/auto-complete/ngx-input-auto-complete.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/auto-complete/ngx-input-auto-complete.component.html","../../../ngx-form/src/lib/ngx-directive/ngx-autofocus.directive.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/bank-card/ngx-input-bank-card.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/bank-card/ngx-input-bank-card.component.html","../../../ngx-form/src/lib/ngx-form/components/ngx-input/checkbox/ngx-input-checkbox.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/checkbox/ngx-input-checkbox.component.html","../../../ngx-form/src/lib/ngx-form/components/ngx-input/color/ngx-input-color.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/color/ngx-input-color.component.html","../../../ngx-form/src/lib/ngx-coordinates/ngx-coordinates.component.ts","../../../ngx-form/src/lib/ngx-coordinates/ngx-coordinates.component.html","../../../ngx-form/src/lib/ngx-coordinates/ngx-coordinates.service.ts","../../../ngx-form/src/lib/ngx-coordinates/ngx-coordinates.module.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/coordinates/ngx-input-coordinates.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/coordinates/ngx-input-coordinates.component.html","../../../ngx-form/src/lib/ngx-date/ngx-date.component.ts","../../../ngx-form/src/lib/ngx-date/ngx-date.component.html","../../../ngx-form/src/lib/ngx-date/ngx-date.service.ts","../../../ngx-form/src/lib/ngx-date/ngx-date.module.ts","../../../ngx-form/src/lib/ngx-pipe/ngx-date.pipe.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/date/ngx-input-date.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/date/ngx-input-date.component.html","../../../ngx-form/src/lib/ngx-pipe/ngx-file-size.pipe.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/file/ngx-input-file.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/file/ngx-input-file.component.html","../../../ngx-form/src/lib/ngx-form/components/ngx-input/group/ngx-input-group.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/group/ngx-input-group.component.html","../../../ngx-form/src/lib/ngx-form/components/ngx-input/icon/ngx-input-icon.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/icon/ngx-input-icon.component.html","../../../ngx-form/src/lib/ngx-form/components/ngx-list-option-input/ngx-list-option-input.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-list-option-input/ngx-list-option-input.component.html","../../../ngx-form/src/lib/ngx-pipe/ngx-bank-card.pipe.ts","../../../ngx-form/src/lib/ngx-pipe/ngx-mobile.pipe.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-list-option-item/ngx-list-option-item.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-list-option-item/ngx-list-option-item.component.html","../../../ngx-form/src/lib/ngx-form/components/ngx-input/list/ngx-input-list.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/list/ngx-input-list.component.html","../../../ngx-form/src/lib/ngx-form/components/ngx-input/multi-file/ngx-input-multi-file.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/multi-file/ngx-input-multi-file.component.html","../../../ngx-form/src/lib/ngx-form/components/ngx-input/multi-select/ngx-input-multi-select.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/multi-select/ngx-input-multi-select.component.html","../../../ngx-form/src/lib/ngx-form/components/ngx-input/name/ngx-input-name.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/name/ngx-input-name.component.html","../../../ngx-form/src/lib/ngx-form/components/ngx-input/number/ngx-input-number.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/number/ngx-input-number.component.html","../../../ngx-form/src/lib/ngx-form/components/ngx-input/option-list/ngx-input-option-list.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/option-list/ngx-input-option-list.component.html","../../../ngx-form/src/lib/ngx-form/components/ngx-input/password/ngx-input-password.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/password/ngx-input-password.component.html","../../../ngx-form/src/lib/ngx-form/components/ngx-input/period/ngx-input-period.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/period/ngx-input-period.component.html","../../../ngx-form/src/lib/ngx-form/components/ngx-input/plate/ngx-input-plate.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/plate/ngx-input-plate.component.html","../../../ngx-form/src/lib/ngx-form/components/ngx-input/range/ngx-input-range.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/range/ngx-input-range.component.html","../../../ngx-form/src/lib/ngx-form/components/ngx-input/select/ngx-input-select.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/select/ngx-input-select.component.html","../../../ngx-form/src/lib/ngx-form/components/ngx-input/tag/ngx-input-tag.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/tag/ngx-input-tag.component.html","../../../ngx-form/src/lib/ngx-form/components/ngx-input/text/ngx-input-text.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/text/ngx-input-text.component.html","../../../ngx-form/src/lib/ngx-directive/ngx-autoheight.directive.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/textarea/ngx-input-textarea.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/textarea/ngx-input-textarea.component.html","../../../ngx-form/src/lib/ngx-form/components/ngx-input/time/ngx-input-time.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/time/ngx-input-time.component.html","../../../ngx-form/src/lib/ngx-form/components/ngx-input/unit/ngx-input-unit.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/unit/ngx-input-unit.component.html","../../../ngx-form/src/lib/ngx-form/components/ngx-input/ngx-input.component.ts","../../../ngx-form/src/lib/ngx-form/components/ngx-input/ngx-input.component.html","../../../ngx-form/src/lib/ngx-form/ngx-form.component.ts","../../../ngx-form/src/lib/ngx-form/ngx-form.component.html","../../../ngx-form/src/lib/ngx-form/responsive/ngx-form-responsive.component.ts","../../../ngx-form/src/lib/ngx-form/responsive/ngx-form-responsive.component.html","../../../ngx-form/src/lib/ngx-directive/ngx-directive.module.ts","../../../ngx-form/src/lib/ngx-pipe/ngx-pipe.module.ts","../../../ngx-form/src/lib/ngx-form/ngx-form.module.ts","../../../ngx-form/src/lib/ngx-report/interfaces/ngx-operator.ts","../../../ngx-form/src/lib/ngx-report/interfaces/ngx-value.ts","../../../ngx-form/src/lib/ngx-report/ngx-report.service.ts","../../../ngx-form/src/lib/ngx-report/components/ngx-value/data/ngx-value-data.component.ts","../../../ngx-form/src/lib/ngx-report/components/ngx-value/data/ngx-value-data.component.html","../../../ngx-form/src/lib/ngx-report/components/ngx-value/date/ngx-value-date.component.ts","../../../ngx-form/src/lib/ngx-report/components/ngx-value/date/ngx-value-date.component.html","../../../ngx-form/src/lib/ngx-report/components/ngx-value/mobile/ngx-value-mobile.component.ts","../../../ngx-form/src/lib/ngx-report/components/ngx-value/mobile/ngx-value-mobile.component.html","../../../ngx-form/src/lib/ngx-report/components/ngx-value/number/ngx-value-number.component.ts","../../../ngx-form/src/lib/ngx-report/components/ngx-value/number/ngx-value-number.component.html","../../../ngx-form/src/lib/ngx-report/components/ngx-value/option/ngx-value-option.component.ts","../../../ngx-form/src/lib/ngx-report/components/ngx-value/option/ngx-value-option.component.html","../../../ngx-form/src/lib/ngx-report/components/ngx-value/text/ngx-value-text.component.ts","../../../ngx-form/src/lib/ngx-report/components/ngx-value/text/ngx-value-text.component.html","../../../ngx-form/src/lib/ngx-report/components/ngx-report-condition/ngx-report-condition.component.ts","../../../ngx-form/src/lib/ngx-report/components/ngx-report-condition/ngx-report-condition.component.html","../../../ngx-form/src/lib/ngx-report/components/ngx-report-group/ngx-report-group.component.ts","../../../ngx-form/src/lib/ngx-report/components/ngx-report-group/ngx-report-group.component.html","../../../ngx-form/src/lib/ngx-report/ngx-report.component.ts","../../../ngx-form/src/lib/ngx-report/ngx-report.component.html","../../../ngx-form/src/lib/ngx-report/ngx-report.module.ts","../../../ngx-form/src/public-api.ts","../../../ngx-form/src/webilix-ngx-form.ts"],"sourcesContent":["import { FormControl, ValidatorFn } from '@angular/forms';\n\nexport abstract class NgxFormMethods<I /** INPUT **/, V /** VALUE **/> {\n    abstract control(input: I, validators: ValidatorFn[]): FormControl<V>;\n    abstract value(value: any, input?: I): V;\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\nimport { INgxFormValues } from '../ngx-form.interface';\n\nexport interface INgxFormInputComment\n    extends Omit<INgxFormInput, 'name' | 'id' | 'optional' | 'autoFocus' | 'keyboard' | 'disableOn' | 'hideOn'> {\n    type: 'COMMENT';\n\n    /**\n     * Input caption copyright text\n     * @type { string }\n     * @override title\n     */\n    title: string;\n\n    /**\n     * Input value\n     * @type { string }\n     * @override value\n     *\n     * **NOTE:** Comment values will be omitted in form input values\n     */\n    value: string;\n\n    /**\n     * Input value update callback on form value changes\n     * @type { function(INgxFormValues): string | null }\n     * @param { INgxFormValues } values key => value object of form inputs\n     * @returns string | null\n     * @optional\n     */\n    onChange?: (values: INgxFormValues) => string | null;\n}\n\nexport class NgxFormInputCommentMethods extends NgxFormMethods<INgxFormInputComment, string | null> {\n    control(input: INgxFormInputComment, validators: ValidatorFn[]): FormControl<string | null> {\n        return new FormControl<string | null>('', validators);\n    }\n\n    value(value: any): string | null {\n        return null;\n    }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\n\n/**\n * AUTO-COMPLETE input interface\n */\nexport interface INgxFormInputAutoComplete extends Omit<INgxFormInput, 'id' | 'autoFocus' | 'keyboard'> {\n    type: 'AUTO-COMPLETE';\n\n    /**\n     * Input caption copyright text\n     * @type { string }\n     * @override title\n     */\n    title: string;\n\n    /**\n     * Input options\n     * @type { Array<string> }\n     */\n    options: string[];\n}\n\nexport class NgxFormInputAutoCompleteMethods extends NgxFormMethods<INgxFormInputAutoComplete, string | null> {\n    control(input: INgxFormInputAutoComplete, validators: ValidatorFn[]): FormControl<string | null> {\n        input.options = input.options.sort((o1: string, o2: string) => o1.localeCompare(o2));\n        return new FormControl<string | null>(input.value || null, validators);\n    }\n\n    value(value: any): string | null {\n        return Helper.IS.string(value) && value !== '' ? value : null;\n    }\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const NgxBankCardValidator = (): ValidatorFn => {\n    return (formControl: AbstractControl): ValidationErrors | null => {\n        const value: string = formControl.value;\n        if (Helper.IS.empty(value) || !Helper.IS.string(value) || value.length !== 16) return null;\n\n        return !Helper.IS.STRING.bankCard(value) ? { 'bank-card': true } : null;\n    };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport const NgxDuplicateValidator = <T>(callback: (value: T) => string): ValidatorFn => {\n    return (formControl: AbstractControl): ValidationErrors | null => {\n        const values: T[] = Array.isArray(formControl.value) ? formControl.value : [];\n        const check: string[] = values.map((value: T) => callback(value));\n        const unique: string[] = check.filter((v: string, i: number, a: string[]) => a.indexOf(v) === i);\n\n        return check.length !== unique.length ? { duplicate: true } : null;\n    };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const NgxLengthValidator = (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 { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport const NgxMaxCountValidator = <T>(count: number): ValidatorFn => {\n    return (formControl: AbstractControl): ValidationErrors | null => {\n        const values: T[] = Array.isArray(formControl.value) ? formControl.value : [];\n        return values.length <= count ? null : { 'max-count': count };\n    };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { JalaliDateTime } from '@webilix/jalali-date-time';\nimport { Helper } from '@webilix/helper-library';\n\nexport const NgxMaxDateValidator = (maximum: Date, hour?: boolean): ValidatorFn => {\n    return (formControl: AbstractControl): ValidationErrors | null => {\n        const value: Date = formControl.value;\n        if (Helper.IS.empty(value)) return null;\n\n        const jalali = JalaliDateTime();\n        const seconds = (maximum.getHours() * 60 + maximum.getMinutes()) * 60 + 59;\n        maximum = !hour\n            ? jalali.periodDay(1, maximum).to\n            : new Date(jalali.periodDay(1, maximum).from.getTime() + seconds * 1000);\n\n        const values: Date[] = Array.isArray(value) ? value : [value];\n        for (let v = 0; v < values.length; v++)\n            if (Helper.IS.date(values[v]) && values[v].getTime() > maximum.getTime())\n                return { 'max-date': jalali.toFullText(maximum, { format: hour ? 'W، d N Y H:I' : 'W، d N Y' }) };\n\n        return null;\n    };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const NgxMaxUnitValidator = <T>(maximum: number): ValidatorFn => {\n    return (formControl: AbstractControl): ValidationErrors | null => {\n        const value: { unit: string; value: number } = formControl.value;\n        if (Helper.IS.empty(value)) return null;\n\n        return value.value <= maximum ? null : { maximum };\n    };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const NgxMaxValidator = <T>(maximum: number): ValidatorFn => {\n    return (formControl: AbstractControl): ValidationErrors | null => {\n        const value: number = Helper.IS.string(formControl.value)\n            ? +formControl.value.replace(/,/g, '')\n            : formControl.value;\n        if (Helper.IS.empty(value) || !Helper.IS.number(value)) return null;\n\n        return value <= maximum ? null : { maximum };\n    };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport const NgxMinCountValidator = <T>(count: number): ValidatorFn => {\n    return (formControl: AbstractControl): ValidationErrors | null => {\n        const values: T[] = Array.isArray(formControl.value) ? formControl.value : [];\n        return values.length === 0 ? { required: true } : values.length >= count ? null : { 'min-count': count };\n    };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { JalaliDateTime } from '@webilix/jalali-date-time';\nimport { Helper } from '@webilix/helper-library';\n\nexport const NgxMinDateValidator = (minimum: Date, hour?: boolean): ValidatorFn => {\n    return (formControl: AbstractControl): ValidationErrors | null => {\n        const value: Date = formControl.value;\n        if (Helper.IS.empty(value)) return null;\n\n        const jalali = JalaliDateTime();\n        const seconds = (minimum.getHours() * 60 + minimum.getMinutes()) * 60;\n        minimum = !hour\n            ? jalali.periodDay(1, minimum).from\n            : new Date(jalali.periodDay(1, minimum).from.getTime() + seconds * 1000);\n\n        const values: Date[] = Array.isArray(value) ? value : [value];\n        for (let v = 0; v < values.length; v++)\n            if (Helper.IS.date(values[v]) && values[v].getTime() < minimum.getTime())\n                return { 'min-date': jalali.toFullText(minimum, { format: hour ? 'W، d N Y H:I' : 'W، d N Y' }) };\n\n        return null;\n    };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const NgxMinUnitValidator = <T>(minimum: number): ValidatorFn => {\n    return (formControl: AbstractControl): ValidationErrors | null => {\n        const value: { unit: string; value: number } = formControl.value;\n        if (Helper.IS.empty(value)) return null;\n\n        return value.value >= minimum ? null : { minimum };\n    };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const NgxMinValidator = <T>(minimum: number): ValidatorFn => {\n    return (formControl: AbstractControl): ValidationErrors | null => {\n        const value: number = Helper.IS.string(formControl.value)\n            ? +formControl.value.replace(/,/g, '')\n            : formControl.value;\n        if (Helper.IS.empty(value) || !Helper.IS.number(value)) return null;\n\n        return value >= minimum ? null : { minimum };\n    };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const NgxMultiplyOfValidator = <T>(multiplyOf: number): ValidatorFn => {\n    return (formControl: AbstractControl): ValidationErrors | null => {\n        const value: number = Helper.IS.string(formControl.value)\n            ? +formControl.value.replace(/,/g, '')\n            : formControl.value;\n        if (Helper.IS.empty(value) || !Helper.IS.number(value)) return null;\n\n        return value % multiplyOf === 0 ? null : { multiplyOf };\n    };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const NgxNationalCodeValidator = (): ValidatorFn => {\n    return (formControl: AbstractControl): ValidationErrors | null => {\n        const value: string = formControl.value;\n        if (Helper.IS.empty(value) || !Helper.IS.string(value) || value.length !== 10) return null;\n\n        return !Helper.IS.STRING.nationalCode(value) ? { 'national-code': true } : null;\n    };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const NgxPatternValidator = (pattern: RegExp, error: string | null): 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 pattern.test(value) ? null : { pattern: { pattern, error } };\n    };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { JalaliDateTime } from '@webilix/jalali-date-time';\nimport { Helper } from '@webilix/helper-library';\n\nexport const NgxPeriodValidator = (required: boolean, equal: boolean): ValidatorFn => {\n    return (formControl: AbstractControl): ValidationErrors | null => {\n        const values: Date[] = Array.isArray(formControl.value) ? formControl.value : [null, null];\n\n        const minimum: Date | null = Helper.IS.date(values[0]) ? values[0] : null;\n        const maximum: Date | null = Helper.IS.date(values[1]) ? values[1] : null;\n        if (required && (minimum === null || maximum === null)) return { required: true };\n\n        if (minimum === null || maximum === null) return null;\n\n        const jalali = JalaliDateTime();\n        return (equal && jalali.toDate(minimum) > jalali.toDate(maximum)) ||\n            (!equal && jalali.toDate(minimum) >= jalali.toDate(maximum))\n            ? { period: { equal } }\n            : null;\n    };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const NgxPlateValidator = (required: boolean): ValidatorFn => {\n    return (formControl: AbstractControl): ValidationErrors | null => {\n        const value: string[] = Array.isArray(formControl.value) ? formControl.value : [null, null, null, null];\n        const left: string | null = Helper.IS.STRING.numeric(value[0]) && value[0].length == 2 ? value[0] : null;\n        const letter: string | null =\n            Helper.IS.string(value[1]) && Helper.PLATE.letters.includes(value[1]) ? value[1] : null;\n        const right: string | null = Helper.IS.STRING.numeric(value[2]) && value[2].length == 3 ? value[2] : null;\n        const iran: string | null = Helper.IS.STRING.numeric(value[3]) && value[3].length == 2 ? value[3] : null;\n        const values: string[] = [left, letter, right, iran].filter((value) => value !== null) as string[];\n\n        if (required && values.length === 0) return { required: true };\n        return values.length !== 0 && values.length < 4 ? { plate: true } : null;\n    };\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nexport const NgxRangeValidator = (required: boolean, equal: boolean, min?: number, max?: number): ValidatorFn => {\n    return (formControl: AbstractControl): ValidationErrors | null => {\n        const values: number[] = Array.isArray(formControl.value) ? formControl.value : [null, null];\n\n        const minimum: number | null = Helper.IS.number(values[0]) ? values[0] : null;\n        const maximum: number | null = Helper.IS.number(values[1]) ? values[1] : null;\n        if (required && (minimum === null || maximum === null)) return { required: true };\n\n        if (\n            min !== undefined &&\n            Helper.IS.number(min) &&\n            ((minimum !== null && minimum < min) || (maximum !== null && maximum < min))\n        )\n            return { min: { min } };\n\n        if (\n            max !== undefined &&\n            Helper.IS.number(max) &&\n            ((minimum !== null && minimum > max) || (maximum !== null && maximum > max))\n        )\n            return { max: { max } };\n\n        if (minimum !== null && maximum !== null && ((equal && minimum > maximum) || (!equal && minimum >= maximum)))\n            return { range: { equal } };\n\n        return null;\n    };\n};\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\nimport { NgxBankCardValidator } from '../validators';\n\nexport interface INgxFormInputBankCard extends Omit<INgxFormInput, 'english'> {\n    type: 'BANK-CARD';\n\n    /**\n     * Show bank title\n     * @type { boolean }\n     */\n    showBank?: boolean;\n}\n\nexport class NgxFormInputBankCardMethods extends NgxFormMethods<INgxFormInputBankCard, string | null> {\n    control(input: INgxFormInputBankCard, validators: ValidatorFn[]): FormControl<string | null> {\n        input.title = input.title || 'شماره کارت بانکی';\n        validators.push(NgxBankCardValidator());\n\n        const value: string | null =\n            input.value === undefined ? null : Helper.IS.STRING.bankCard(input.value) ? input.value : null;\n        return new FormControl<string | null>(value, validators);\n    }\n\n    value(value: any): string | null {\n        return Helper.IS.STRING.bankCard(value) ? value : null;\n    }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\n\nexport interface INgxFormInputCheckbox\n    extends Omit<INgxFormInput, 'id' | 'title' | 'value' | 'optional' | 'autoFocus' | 'floatLabel' | 'keyboard'> {\n    type: 'CHECKBOX';\n\n    /**\n     * Checkbox copyright message\n     * @type { string }\n     */\n    message: string;\n\n    /**\n     * Input value\n     * @type { boolean }\n     * @optional\n     */\n    value?: boolean;\n\n    /**\n     * Input view method\n     * @type { string }\n     * @enum 'CHECKBOX', 'SLIDER'\n     * @optional CHECKBOX\n     */\n    view?: 'CHECKBOX' | 'SLIDER';\n}\n\nexport class NgxFormInputCheckboxMethods extends NgxFormMethods<INgxFormInputCheckbox, boolean | null> {\n    control(input: INgxFormInputCheckbox, validators: ValidatorFn[]): FormControl<boolean | null> {\n        return new FormControl<boolean | null>(!!input.value, validators);\n    }\n\n    value(value: any): boolean | null {\n        return !!value;\n    }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\n\nexport interface INgxFormInputColor\n    extends Omit<INgxFormInput, 'id' | 'english' | 'autoFocus' | 'floatLabel' | 'keyboard'> {\n    type: 'COLOR';\n\n    /**\n     * Default colors list\n     * @type { Array<string> }\n     * @description In case of **undefined** or **empty list**, default HTML color input will be shown\n     * @optional\n     */\n    colors?: string[];\n}\n\nexport class NgxFormInputColorMethods extends NgxFormMethods<INgxFormInputColor, string | null> {\n    control(input: INgxFormInputColor, validators: ValidatorFn[]): FormControl<string | null> {\n        input.title = input.title || 'رنگ';\n\n        const value: string | null =\n            input.value !== undefined && input.value !== ''\n                ? input.colors && input.colors.length !== 0\n                    ? input.colors.find((color) => color === input.value)\n                        ? input.value\n                        : null\n                    : input.value\n                : null;\n        return new FormControl<string | null>(value, validators);\n    }\n\n    value(value: any, input: INgxFormInputColor): string | null {\n        return Helper.IS.string(value) && value !== ''\n            ? input.colors && input.colors.length !== 0\n                ? input.colors.find((color) => color === value)\n                    ? value\n                    : null\n                : value\n            : null;\n    }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormCoordinates, INgxFormInput } from '../interfaces';\n\nexport interface INgxFormInputCoordinates\n    extends Omit<INgxFormInput, 'id' | 'english' | 'value' | 'autoFocus' | 'keyboard'> {\n    type: 'COORDINATES';\n\n    /**\n     * Input value\n     * @type { INgxFormCoordinates }\n     * @override value\n     * @optional\n     */\n    value?: INgxFormCoordinates;\n\n    /**\n     * Map's default center, if value is not specified\n     * @type { INgxFormCoordinates }\n     * @optional\n     */\n    center?: INgxFormCoordinates;\n\n    /**\n     * Map's default zoom\n     * @type { Number }\n     * @optional 15\n     */\n    zoom?: number;\n}\n\nexport class NgxFormInputCoordinatesMethods extends NgxFormMethods<\n    INgxFormInputCoordinates,\n    INgxFormCoordinates | null\n> {\n    control(input: INgxFormInputCoordinates, validators: ValidatorFn[]): FormControl<INgxFormCoordinates | null> {\n        input.title = input.title || 'موقعیت جغرافیایی';\n\n        let value: INgxFormCoordinates | null =\n            input.value === undefined\n                ? null\n                : input.value !== null &&\n                  Helper.IS.object(input.value) &&\n                  Helper.IS.number(input.value.latitude) &&\n                  Helper.IS.number(input.value.longitude)\n                ? input.value\n                : null;\n        return new FormControl<INgxFormCoordinates | null>(value, validators);\n    }\n\n    value(value: any): INgxFormCoordinates | null {\n        return value !== null &&\n            Helper.IS.object(value) &&\n            Helper.IS.number(value.latitude) &&\n            Helper.IS.number(value.longitude)\n            ? value\n            : null;\n    }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\nimport { NgxMaxDateValidator, NgxMinDateValidator } from '../validators';\n\nexport interface INgxFormInputDate extends Omit<INgxFormInput, 'id' | 'english' | 'value' | 'autoFocus' | 'keyboard'> {\n    type: 'DATE';\n\n    /**\n     * Input value\n     * @type { Date }\n     * @override value\n     * @optional\n     */\n    value?: Date;\n\n    /**\n     * Show/Select hour and minute\n     * @type { boolean }\n     * @override value\n     * @optional\n     */\n    hour?: boolean;\n\n    /**\n     * Minimum acceptable value\n     * @type { Date }\n     * @optional\n     */\n    minDate?: Date;\n\n    /**\n     * Maximum acceptable value\n     * @type { Date }\n     * @optional\n     */\n    maxDate?: Date;\n}\n\nexport class NgxFormInputDateMethods extends NgxFormMethods<INgxFormInputDate, Date | null> {\n    control(input: INgxFormInputDate, validators: ValidatorFn[]): FormControl<Date | null> {\n        input.title = input.title || 'تاریخ';\n        if (input.minDate) validators.push(NgxMinDateValidator(input.minDate, !!input.hour));\n        if (input.maxDate) validators.push(NgxMaxDateValidator(input.maxDate, !!input.hour));\n\n        const minDate: number | null = input.minDate ? input.minDate.getTime() : null;\n        const maxDate: number | null = input.maxDate ? input.maxDate.getTime() : null;\n        let value: Date | null = input.value === undefined ? null : Helper.IS.date(input.value) ? input.value : null;\n        if (value && minDate && value.getTime() < minDate) value = new Date(minDate + 1000);\n        if (value && maxDate && value.getTime() > maxDate) value = new Date(maxDate - 1000);\n\n        return new FormControl<Date | null>(value, validators);\n    }\n\n    value(value: any): Date | null {\n        return Helper.IS.date(value) ? value : null;\n    }\n}\n","import { FormControl, ValidatorFn, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\n\nexport interface INgxFormInputDomain extends Omit<INgxFormInput, 'english'> {\n    type: 'DOMAIN';\n}\n\nexport class NgxFormInputDomainMethods extends NgxFormMethods<INgxFormInputDomain, string | null> {\n    control(input: INgxFormInputDomain, validators: ValidatorFn[]): FormControl<string | null> {\n        input.title = input.title || 'دامنه سایت';\n        validators.push(Validators.pattern(Helper.RE.DOMAIN.get()));\n\n        const value: string | null =\n            input.value === undefined ? null : Helper.RE.DOMAIN.verify(input.value) ? input.value : null;\n        return new FormControl<string | null>(value, validators);\n    }\n\n    value(value: any): string | null {\n        return Helper.RE.DOMAIN.verify(value) ? value : null;\n    }\n}\n","import { FormControl, ValidatorFn, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\n\nexport interface INgxFormInputEmail extends Omit<INgxFormInput, 'english'> {\n    type: 'EMAIL';\n}\n\nexport class NgxFormInputEmailMethods extends NgxFormMethods<INgxFormInputEmail, string | null> {\n    control(input: INgxFormInputEmail, validators: ValidatorFn[]): FormControl<string | null> {\n        input.title = input.title || 'ایمیل';\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 : null;\n        return new FormControl<string | null>(value, validators);\n    }\n\n    value(value: any): string | null {\n        return Helper.RE.EMAIL.verify(value) ? value : null;\n    }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\n\nexport interface INgxFormInputFile extends Omit<INgxFormInput, 'id' | 'english' | 'value' | 'autoFocus' | 'keyboard'> {\n    type: 'FILE';\n\n    /**\n     * Acceptable file mime types\n     * @type { Array<string> }\n     * @optional\n     */\n    mimes?: string[];\n}\n\nexport class NgxFormInputFileMethods extends NgxFormMethods<INgxFormInputFile, File | null> {\n    control(input: INgxFormInputFile, validators: ValidatorFn[]): FormControl<File | null> {\n        input.title = input.title || 'فایل';\n        return new FormControl<File | null>(null, validators);\n    }\n\n    value(value: any): File | null {\n        return value || null;\n    }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormGroup, INgxFormInput } from '../interfaces';\nimport { NgxMaxCountValidator, NgxMinCountValidator } from '../validators';\n\nexport interface INgxFormInputGroup\n    extends Omit<INgxFormInput, 'id' | 'value' | 'optional' | 'autoFocus' | 'keyboard'> {\n    type: 'GROUP';\n\n    /**\n     * Input caption copyright text\n     * @type { string }\n     * @override title\n     */\n    title: string;\n\n    /**\n     * Input value\n     * @type { Array<string> }\n     * @override value\n     * @optional\n     */\n    value?: string[];\n\n    /**\n     * Input group list\n     * @type { Array<INgxFormOption> }\n     */\n    groups: INgxFormGroup[];\n\n    /**\n     * Minimum number of required selected groups\n     * @type { number }\n     * @optional\n     */\n    minCount?: number;\n\n    /**\n     * Maximum number of acceptable selected groups\n     * @type { number }\n     * @optional\n     */\n    maxCount?: number;\n\n    /**\n     * Input group grid columns\n     * @type { number }\n     * @optional\n     */\n    columns?: number;\n}\n\nexport class NgxFormInputGroupMethods extends NgxFormMethods<INgxFormInputGroup, string[] | null> {\n    control(input: INgxFormInputGroup, validators: ValidatorFn[]): FormControl<string[] | null> {\n        const groups: string[] = input.groups.map((group) => group.id);\n        const value: string[] = (input.value || []).filter((value: string) => groups.includes(value));\n        if (input.minCount) validators.push(NgxMinCountValidator<string>(input.minCount));\n        if (input.maxCount) validators.push(NgxMaxCountValidator<string>(input.maxCount));\n\n        return new FormControl<string[] | null>(value, validators);\n    }\n\n    value(value: any, input: INgxFormInputGroup): string[] | null {\n        const groups: string[] = input.groups.map((group) => group.id);\n        return Array.isArray(value) ? value.filter((v: string) => groups.includes(v)) : [];\n    }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\n\nexport interface INgxFormInputIcon\n    extends Omit<INgxFormInput, 'id' | 'english' | 'autoFocus' | 'floatLabel' | 'keyboard'> {\n    type: 'ICON';\n\n    /**\n     * List of acceptable icons\n     * @type { Array<string> }\n     */\n    icons: string[];\n}\n\nexport class NgxFormInputIconMethods extends NgxFormMethods<INgxFormInputIcon, string | null> {\n    control(input: INgxFormInputIcon, validators: ValidatorFn[]): FormControl<string | null> {\n        input.title = input.title || 'آیکون';\n\n        input.icons = input.icons\n            .filter((icon: string) => Helper.IS.string(icon) && icon.length > 1)\n            .filter((icon: string, i: number, a: string[]) => a.indexOf(icon) === i);\n        const value: string | null = input.icons.includes(input.value || '') ? input.value || '' : null;\n        return new FormControl<string | null>(value, validators);\n    }\n\n    value(value: any, input: INgxFormInputIcon): string | null {\n        return Helper.IS.string(value) && input.icons.includes(value) ? value : null;\n    }\n}\n","import { FormControl, ValidatorFn, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\n\nexport interface INgxFormInputIp extends Omit<INgxFormInput, 'english'> {\n    type: 'IP';\n}\n\nexport class NgxFormInputIpMethods extends NgxFormMethods<INgxFormInputIp, string | null> {\n    control(input: INgxFormInputIp, validators: ValidatorFn[]): FormControl<string | null> {\n        input.title = input.title || 'آدرس آی‌پی';\n        validators.push(Validators.pattern(Helper.RE.IP4.get()));\n\n        const value: string | null =\n            input.value === undefined ? null : Helper.RE.IP4.verify(input.value) ? input.value : null;\n        return new FormControl<string | null>(value, validators);\n    }\n\n    value(value: any): string | null {\n        return Helper.RE.IP4.verify(value) ? value : null;\n    }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\nimport { NgxDuplicateValidator, NgxMaxCountValidator, NgxMinCountValidator } from '../validators';\n\nexport interface INgxFormInputList extends Omit<INgxFormInput, 'id' | 'optional' | 'value' | 'autoFocus' | 'keyboard'> {\n    type: 'LIST';\n\n    /**\n     * Input caption copyright text\n     * @type { string }\n     * @override title\n     */\n    title: string;\n\n    /**\n     * Input value\n     * @type { Array<string> }\n     * @override value\n     * @optional\n     */\n    value?: string[];\n\n    /**\n     * Acceptable list items format\n     * @type { string }\n     * @enum 'BANK-CARD', 'DOMAIN', 'EMAIL', 'IP', 'MOBILE', 'NATIONAL-CODE', 'NUMERIC', 'URL'\n     * @optional\n     */\n    format?: 'BANK-CARD' | 'DOMAIN' | 'EMAIL' | 'IP' | 'MOBILE' | 'NATIONAL-CODE' | 'NUMERIC' | 'URL';\n\n    /**\n     * Activate list sort functionality\n     * @type { boolean }\n     * @optional false\n     */\n    sort?: boolean;\n\n    /**\n     * Accept duplicate values on list\n     * @type { boolean }\n     * @optional false\n     */\n    duplicate?: boolean;\n\n    /**\n     * Minimum number of required values in list\n     * @type { number }\n     * @optional\n     */\n    minCount?: number;\n\n    /**\n     * Maximum number of acceptable values in list\n     * @type { number }\n     * @optional\n     */\n    maxCount?: number;\n}\n\nexport class NgxFormInputListMethods extends NgxFormMethods<INgxFormInputList, string[] | null> {\n    control(input: INgxFormInputList, validators: ValidatorFn[]): FormControl<string[] | null> {\n        if (!input.duplicate) validators.push(NgxDuplicateValidator<string>((value: string) => value));\n        if (input.minCount) validators.push(NgxMinCountValidator<string>(input.minCount));\n        if (input.maxCount) validators.push(NgxMaxCountValidator<string>(input.maxCount));\n\n        const value: string[] = (Array.isArray(input.value) ? input.value : []).filter(\n            (value: string) => Helper.IS.string(value) && value.length > 0,\n        );\n        return new FormControl<string[] | null>(value, validators);\n    }\n\n    value(value: any): string[] | null {\n        return Array.isArray(value) ? value : [];\n    }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\n\nexport interface INgxFormInputMask extends Omit<INgxFormInput, 'english'> {\n    type: 'MASK';\n\n    /**\n     * Input caption copyright text\n     * @type { string }\n     * @override title\n     */\n    title: string;\n\n    /**\n     * Mask value\n     * @type { string }\n     */\n    mask: string;\n\n    /**\n     * Icon text\n     * @type { string }\n     * @optional\n     */\n    icon?: string;\n}\n\nexport class NgxFormInputMaskMethods extends NgxFormMethods<INgxFormInputMask, string | null> {\n    control(input: INgxFormInputMask, validators: ValidatorFn[]): FormControl<string | null> {\n        return new FormControl<string | null>(input.value || null, validators);\n    }\n\n    value(value: any): string | null {\n        return Helper.IS.string(value) ? value : null;\n    }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\n\nexport interface INgxFormInputMobile extends Omit<INgxFormInput, 'english'> {\n    type: 'MOBILE';\n}\n\nexport class NgxFormInputMobileMethods extends NgxFormMethods<INgxFormInputMobile, string | null> {\n    control(input: INgxFormInputMobile, validators: ValidatorFn[]): FormControl<string | null> {\n        input.title = input.title || 'موبایل';\n\n        const value: string | null =\n            typeof input.value === 'string'\n                ? Helper.RE.MOBILE.verify(input.value)\n                    ? input.value.substring(2)\n                    : null\n                : null;\n        return new FormControl<string | null>(value, validators);\n    }\n\n    value(value: any): string | null {\n        return Helper.RE.MOBILE.verify(`09${value}`) ? `09${value}` : null;\n    }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\nimport { NgxDuplicateValidator, NgxMaxCountValidator, NgxMinCountValidator } from '../validators';\n\nexport interface INgxFormInputMultiFile\n    extends Omit<INgxFormInput, 'id' | 'english' | 'value' | 'optional' | 'autoFocus' | 'floatLabel' | 'keyboard'> {\n    type: 'MULTI-FILE';\n\n    /**\n     * Acceptable file mime types\n     * @type { Array<string> }\n     * @optional\n     */\n    mimes?: string[];\n\n    /**\n     * Minimum number of required selected files\n     * @type { number }\n     * @optional\n     */\n    minCount?: number;\n\n    /**\n     * Maximum number of acceptable selected files\n     * @type { number }\n     * @optional\n     */\n    maxCount?: number;\n}\n\nexport class NgxFormInputMultiFileMethods extends NgxFormMethods<INgxFormInputMultiFile, File[] | null> {\n    control(input: INgxFormInputMultiFile, validators: ValidatorFn[]): FormControl<File[] | null> {\n        input.title = input.title || 'فایل‌ها';\n        validators.push(\n            NgxDuplicateValidator<File>((value: File) => `value.name::${value.size}::${value.lastModified}`),\n        );\n\n        if (input.minCount) validators.push(NgxMinCountValidator<File>(input.minCount));\n        if (input.maxCount) validators.push(NgxMaxCountValidator<File>(input.maxCount));\n\n        return new FormControl<File[] | null>([], validators);\n    }\n\n    value(value: any): File[] | null {\n        return Array.isArray(value) ? value : [];\n    }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput, INgxFormOption, INgxFormOptionGroup } from '../interfaces';\nimport { NgxMaxCountValidator, NgxMinCountValidator } from '../validators';\n\nexport interface INgxFormInputMultiSelect\n    extends Omit<INgxFormInput, 'id' | 'value' | 'optional' | 'autoFocus' | 'keyboard'> {\n    type: 'MULTI-SELECT';\n\n    /**\n     * Input caption copyright text\n     * @type { string }\n     * @override title\n     */\n    title: string;\n\n    /**\n     * Input value\n     * @type { Array<string> }\n     * @override value\n     * @optional\n     */\n    value?: string[];\n\n    /**\n     * Input options list\n     * @type { Array<INgxFormOption> }\n     */\n    options: INgxFormOption[];\n\n    /**\n     * Input option groups list\n     * @type { Array<INgxFormOptionGroup> }\n     * @optional\n     */\n    groups?: INgxFormOptionGroup[];\n\n    /**\n     * Titla of groups menu\n     * @type { string }\n     * @optional\n     */\n    groupTitle?: string;\n\n    /**\n     * Minimum number of required selected options\n     * @type { number }\n     * @optional\n     */\n    minCount?: number;\n\n    /**\n     * Maximum number of acceptable selected options\n     * @type { number }\n     * @optional\n     */\n    maxCount?: number;\n\n    /**\n     * Input view method\n     * @type { string }\n     * @enum 'CHECKBOX', 'SELECT', 'TAG'\n     * @optional CHECKBOX\n     */\n    view?: 'CHECKBOX' | 'SELECT' | 'TAG';\n\n    /**\n     * Show select all/none buttons\n     * @type { boolean }\n     * @optional\n     * @description This option works on CHECKBOX view only\n     */\n    selectButtons?: boolean;\n}\n\nexport class NgxFormInputMultiSelectMethods extends NgxFormMethods<INgxFormInputMultiSelect, string[] | null> {\n    control(input: INgxFormInputMultiSelect, validators: ValidatorFn[]): FormControl<string[] | null> {\n        const options: string[] = input.options.map((option) => option.id);\n        const value: string[] = (input.value || []).filter((value: string) => options.includes(value));\n        if (input.minCount) validators.push(NgxMinCountValidator<string>(input.minCount));\n        if (input.maxCount) validators.push(NgxMaxCountValidator<string>(input.maxCount));\n\n        const groups = input.groups && Helper.IS.array(input.groups) ? input.groups : [];\n        input.groups = groups\n            .map((group) => ({ ...group, ids: group.ids.filter((id: string) => options.includes(id)) }))\n            .filter((group) => group.ids.length !== 0);\n\n        return new FormControl<string[] | null>(value, validators);\n    }\n\n    value(value: any, input: INgxFormInputMultiSelect): string[] | null {\n        const options: string[] = input.options.map((option) => option.id);\n        return Array.isArray(value) ? value.filter((v: string) => options.includes(v)) : [];\n    }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput, INgxFormName } from '../interfaces';\n\nexport interface INgxFormInputName extends Omit<INgxFormInput, 'id' | 'value' | 'english' | 'floatLabel' | 'keyboard'> {\n    type: 'NAME';\n\n    /**\n     * Input Value\n     * @type { INgxFormName }\n     * @override value\n     * @optional\n     */\n    value?: INgxFormName;\n}\n\nexport class NgxFormInputNameMethods extends NgxFormMethods<INgxFormInputName, INgxFormName | null> {\n    control(input: INgxFormInputName, validators: ValidatorFn[]): FormControl<INgxFormName | null> {\n        const value: INgxFormName | null =\n            Helper.IS.object(input.value) && input.value && input.value.first && input.value.last ? input.value : null;\n        return new FormControl<INgxFormName | null>(value, validators);\n    }\n\n    value(value: any): INgxFormName | null {\n        return Helper.IS.object(value) ? value : null;\n    }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\nimport { NgxNationalCodeValidator } from '../validators';\n\nexport interface INgxFormInputNationalCode extends Omit<INgxFormInput, 'english'> {\n    type: 'NATIONAL-CODE';\n}\n\nexport class NgxFormInputNationalCodeMethods extends NgxFormMethods<INgxFormInputNationalCode, string | null> {\n    control(input: INgxFormInputNationalCode, validators: ValidatorFn[]): FormControl<string | null> {\n        input.title = input.title || 'کد ملی';\n        validators.push(NgxNationalCodeValidator());\n\n        const value: string | null =\n            input.value === undefined ? null : Helper.IS.STRING.nationalCode(input.value) ? input.value : null;\n        return new FormControl<string | null>(value, validators);\n    }\n\n    value(value: any): string | null {\n        return Helper.IS.STRING.nationalCode(value) ? value : null;\n    }\n}\n","import { FormControl, ValidatorFn, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\nimport { NgxMaxValidator, NgxMinValidator, NgxMultiplyOfValidator } from '../validators';\n\nexport interface INgxFormInputNumber extends Omit<INgxFormInput, 'english' | 'value'> {\n    type: 'NUMBER';\n\n    /**\n     * Input caption copyright text\n     * @type { string }\n     * @override title\n     */\n    title: string;\n\n    /**\n     * Input value\n     * @type { number }\n     * @override value\n     * @optional\n     */\n    value?: number;\n\n    /**\n     * Suffix copyright text\n     * @type { string }\n     * @optional\n     */\n    suffix?: string;\n\n    /**\n     * Minimum acceptable value\n     * @type { number }\n     * @optional\n     */\n    minimum?: number;\n\n    /**\n     * Maximum acceptable value\n     * @type { number }\n     * @optional\n     */\n    maximum?: number;\n\n    /**\n     * Constraint value to be multiple of a number\n     * @type { number }\n     * @optional\n     */\n    multiplyOf?: number;\n\n    /**\n     * Accept negative values\n     * @type { boolean }\n     * @optional false\n     */\n    negative?: boolean;\n\n    /**\n     * Accept decimal values\n     * @type { boolean | number }\n     * @optional false\n     */\n    decimal?: boolean | number;\n\n    /**\n     * Hint text (shown on focus)\n     * @type { string }\n     * @optional\n     */\n    text?: 'LETTER' | 'HOUR' | 'MINUTE' | 'SECOND';\n\n    /**\n     * Hide default icon\n     * @type { boolean }\n     * @optional false\n     */\n    hideIcon?: boolean;\n}\n\nexport class NgxFormInputNumberMethods extends NgxFormMethods<INgxFormInputNumber, number | null> {\n    control(input: INgxFormInputNumber, validators: ValidatorFn[]): FormControl<number | null> {\n        if (input.minimum) validators.push(NgxMinValidator(input.minimum));\n        if (input.maximum) validators.push(NgxMaxValidator(input.maximum));\n        if (input.multiplyOf) validators.push(NgxMultiplyOfValidator(input.multiplyOf));\n\n        const value: number | null =\n            input.value === undefined ? null : Helper.IS.number(input.value) ? input.value : null;\n        return new FormControl<number | null>(value, validators);\n    }\n\n    value(value: any): number | null {\n        if (Helper.IS.empty(value)) return null;\n\n        value = Helper.IS.string(value) ? +value.replace(/,/g, '') : value;\n        return Helper.IS.number(value) ? value : null;\n    }\n}\n","import { FormControl, ValidatorFn, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\nimport { NgxLengthValidator } from '../validators';\n\nexport interface INgxFormInputNumeric extends Omit<INgxFormInput, 'english'> {\n    type: 'NUMERIC';\n\n    /**\n     * Input caption copyright text\n     * @type { string }\n     * @override title\n     */\n    title: string;\n\n    /**\n     * Minimum acceptable value length\n     * @type { number }\n     * @optional\n     *\n     * **NOTE:** To restrict length to specific value, use same value for **minimum** and **maximum** length\n     */\n    minLength?: number;\n\n    /**\n     * Maximum acceptable value length\n     * @type { number }\n     * @optional\n     *\n     * **NOTE:** To restrict length to specific value, use same value for **minimum** and **maximum** length\n     */\n    maxLength?: number;\n}\n\nexport class NgxFormInputNumericMethods extends NgxFormMethods<INgxFormInputNumeric, string | null> {\n    control(input: INgxFormInputNumeric, validators: ValidatorFn[]): FormControl<string | null> {\n        validators.push(Validators.pattern(/^[0-9]*$/));\n\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(NgxLengthValidator(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        const value: string | null =\n            input.value === undefined ? null : Helper.RE.NUMERIC.verify(input.value) ? input.value : null;\n        return new FormControl<string | null>(input.value || null, validators);\n    }\n\n    value(value: any): string | null {\n        return Helper.RE.NUMERIC.verify(value) ? value : null;\n    }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput, INgxFormOption } from '../interfaces';\nimport { NgxDuplicateValidator, NgxMaxCountValidator, NgxMinCountValidator } from '../validators';\n\nexport interface INgxFormInputOptionList\n    extends Omit<INgxFormInput, 'id' | 'optional' | 'value' | 'autoFocus' | 'keyboard'> {\n    type: 'OPTION-LIST';\n\n    /**\n     * Input caption copyright text\n     * @type { string }\n     * @override title\n     */\n    title: string;\n\n    /**\n     * Input value\n     * @type { Array<INgxFormOption> }\n     * @override value\n     * @optional\n     */\n    value?: INgxFormOption[];\n\n    /**\n     * Acceptable list items value format\n     * @type { string }\n     * @enum 'BANK-CARD', 'DOMAIN', 'EMAIL', 'IP', 'MOBILE', 'NATIONAL-CODE', 'NUMERIC', 'URL'\n     * @optional\n     */\n    format?: 'BANK-CARD' | 'DOMAIN' | 'EMAIL' | 'IP' | 'MOBILE' | 'NATIONAL-CODE' | 'NUMERIC' | 'URL';\n\n    /**\n     * Activate list sort functionality\n     * @type { boolean }\n     * @optional false\n     */\n    sort?: boolean;\n\n    /**\n     * Accept duplicate values on list\n     * @type { boolean }\n     * @optional false\n     */\n    duplicate?: boolean;\n\n    /**\n     * Minimum number of required values in list\n     * @type { number }\n     * @optional\n     */\n    minCount?: number;\n\n    /**\n     * Maximum number of acceptable values in list\n     * @type { number }\n     * @optional\n     */\n    maxCount?: number;\n}\n\nexport class NgxFormInputOptionListMethods extends NgxFormMethods<INgxFormInputOptionList, INgxFormOption[] | null> {\n    control(input: INgxFormInputOptionList, validators: ValidatorFn[]): FormControl<INgxFormOption[] | null> {\n        if (!input.duplicate)\n            validators.push(NgxDuplicateValidator<INgxFormOption>((value: INgxFormOption) => value.title));\n        if (input.minCount) validators.push(NgxMinCountValidator<INgxFormOption>(input.minCount));\n        if (input.maxCount) validators.push(NgxMaxCountValidator<INgxFormOption>(input.maxCount));\n\n        const value: INgxFormOption[] = (Array.isArray(input.value) ? input.value : [])\n            .filter((value: INgxFormOption) => {\n                if (!Helper.IS.object(value)) return null;\n                if (!Helper.IS.string(value['id']) || value['id'].length === 0) return null;\n                if (!Helper.IS.string(value['title']) || value['title'].length === 0) return null;\n                return value;\n            })\n            .filter((value: INgxFormOption) => value !== null);\n        return new FormControl<INgxFormOption[] | null>(value, validators);\n    }\n\n    value(value: any): INgxFormOption[] | null {\n        return Array.isArray(value) ? value : [];\n    }\n}\n","import { FormControl, ValidatorFn, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\n\nexport interface INgxFormInputPassword extends Omit<INgxFormInput, 'english' | 'value'> {\n    type: 'PASSWORD';\n\n    /**\n     * Minimum value length\n     * @type { number }\n     * @optional 8\n     */\n    minLength?: number;\n\n    /**\n     * Force to use at least one **English lower case** letter in value\n     * @type { boolean }\n     * @optional true\n     */\n    forceLowerCase?: boolean;\n\n    /**\n     * Force to use at least one **English upper case** letter in value\n     * @type { boolean }\n     * @optional true\n     */\n    forceUpperCase?: boolean;\n\n    /**\n     * Force to use at least one **English number** letter in value\n     * @type { boolean }\n     * @optional true\n     */\n    forceNumber?: boolean;\n\n    /**\n     * Deactive all password validation checks\n     * @type { boolean }\n     * @optional false\n     */\n    unverified?: boolean;\n}\n\nexport class NgxFormInputPasswordMethods extends NgxFormMethods<INgxFormInputPassword, string | null> {\n    control(input: INgxFormInputPassword, validators: ValidatorFn[]): FormControl<string | null> {\n        input.title = input.title || 'کلمه عبور';\n        if (!input.unverified) {\n            input.minLength = input.minLength === undefined ? 8 : input.minLength > 0 ? input.minLength : 8;\n\n            validators.push(Validators.minLength(input.minLength));\n            if (input.forceLowerCase !== false)\n                validators.push(Validators.pattern(Helper.RE.PASSWORD.get(input.minLength, true, false, false)));\n            if (input.forceUpperCase !== false)\n                validators.push(Validators.pattern(Helper.RE.PASSWORD.get(input.minLength, false, true, false)));\n            if (input.forceNumber !== false)\n                validators.push(Validators.pattern(Helper.RE.PASSWORD.get(input.minLength, false, false, true)));\n        }\n\n        return new FormControl<string | null>(null, validators);\n    }\n\n    value(value: any): string | null {\n        return Helper.IS.string(value) && value !== '' ? value : null;\n    }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\nimport { NgxMaxDateValidator, NgxMinDateValidator, NgxPeriodValidator } from '../validators';\n\nexport interface INgxFormInputPeriod\n    extends Omit<INgxFormInput, 'id' | 'english' | 'value' | 'autoFocus' | 'floatLabel' | 'keyboard'> {\n    type: 'PERIOD';\n\n    /**\n     * Input value\n     * @type { [Date, Date] }\n     * @override value\n     * @optional\n     */\n    value?: [Date, Date];\n\n    /**\n     * Accept same values as **minimum** and **maximum**\n     * @type { boolean }\n     * @optional false\n     */\n    equal?: boolean;\n\n    /**\n     * Minimum acceptable value\n     * @type { Date }\n     * @optional\n     */\n    minDate?: Date;\n\n    /**\n     * Maximum acceptable value\n     * @type { Date }\n     * @optional\n     */\n    maxDate?: Date;\n}\n\nexport class NgxFormInputPeriodMethods extends NgxFormMethods<INgxFormInputPeriod, (Date | null)[] | null> {\n    control(input: INgxFormInputPeriod, validators: ValidatorFn[]): FormControl<(Date | null)[] | null> {\n        input.title = input.title || 'محدوده زمانی';\n        if (input.minDate) validators.push(NgxMinDateValidator(input.minDate));\n        if (input.maxDate) validators.push(NgxMaxDateValidator(input.maxDate));\n        validators.push(NgxPeriodValidator(!input.optional, !!input.equal));\n\n        const value: (Date | null)[] = Array.isArray(input.value)\n            ? [\n                  Helper.IS.date(input.value[0]) ? input.value[0] : null,\n                  Helper.IS.date(input.value[1]) ? input.value[1] : null,\n              ]\n            : [null, null];\n        return new FormControl<(Date | null)[] | null>(value, validators);\n    }\n\n    value(value: any): (Date | null)[] | null {\n        return Array.isArray(value)\n            ? [Helper.IS.date(value[0]) ? value[0] : null, Helper.IS.date(value[1]) ? value[1] : null]\n            : [null, null];\n    }\n}\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\nimport { NgxPlateValidator } from '../validators';\nimport { INgxFormValues } from '../ngx-form.interface';\n\nexport interface INgxFormInputPlate\n    extends Omit<INgxFormInput, 'id' | 'english' | 'value' | 'floatLabel' | 'keyboard'> {\n    type: 'PLATE';\n\n    /**\n     * Input value\n     * @type { [string, string, string, string] }\n     * @override value\n     * @optional\n     */\n    value?: [string, string, string, string];\n\n    /**\n     * Default plate letter\n     * @type { string }\n     * @optional\n     */\n    letter?: string;\n\n    /**\n     * Callback method after completing input value\n     * @type { function(value): void }\n     * @param { [string, string, string, string] } value input value\n     * @optional\n     */\n    onComplete?: (value: [string, string, string, string]) => void;\n}\n\nexport class NgxFormInputPlateMethods extends NgxFormMethods<INgxFormInputPlate, (string | null)[] | null> {\n    control = (input: INgxFormInputPlate, validators: ValidatorFn[]): FormControl<(string | null)[] | null> => {\n        input.title = input.title || 'شماره پلاک';\n        if (input.letter && !Helper.PLATE.letters.includes(input.letter)) input.letter = undefined;\n        validators.push(NgxPlateValidator(!input.optional));\n\n        const value: (string | null)[] = Helper.PLATE.getPlate(input.value || []);\n        return new FormControl<(string | null)[] | null>(value, validators);\n    };\n\n    value = (value: any): (string | null)[] | null => {\n        const plate: (string | null)[] = Array.isArray(value)\n            ? [0, 1, 2, 3].map((i) => (Helper.IS.string(value?.[i]) ? value?.[i] || null : null))\n            : [null, null, null, null];\n        return plate.includes(null) ? null : plate;\n    };\n}\n","import { FormControl, ValidatorFn, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\nimport { NgxMaxValidator, NgxMinValidator, NgxMultiplyOfValidator } from '../validators';\n\nexport interface INgxFormInputPrice extends Omit<INgxFormInput, 'english' | 'value'> {\n    type: 'PRICE';\n\n    /**\n     * Input caption copyright text\n     * @type { string }\n     * @override title\n     */\n    title: string;\n\n    /**\n     * Input value\n     * @type { number }\n     * @override value\n     * @optional\n     */\n    value?: number;\n\n    /**\n     * Minimum acceptable value\n     * @type { number }\n     * @optional\n     */\n    minimum?: number;\n\n    /**\n     * Maximum acceptable value\n     * @type { number }\n     * @optional\n     */\n    maximum?: number;\n\n    /**\n     * Constraint value to be multiple of a number\n     * @type { number }\n     * @optional\n     */\n    multiplyOf?: number;\n\n    /**\n     * Input currency\n     * @type { string }\n     * @optional 'ریال'\n     */\n    currency?: string;\n\n    /**\n     * Show text value\n     * @type { boolean }\n     * @optional false\n     */\n    showText?: boolean;\n}\n\nexport class NgxFormInputPriceMethods extends NgxFormMethods<INgxFormInputPrice, number | null> {\n    control(input: INgxFormInputPrice, validators: ValidatorFn[]): FormControl<number | null> {\n        input.currency = input.currency || 'ریال';\n        if (input.minimum) validators.push(NgxMinValidator(input.minimum));\n        if (input.maximum) validators.push(NgxMaxValidator(input.maximum));\n        if (input.multiplyOf) validators.push(NgxMultiplyOfValidator(input.multiplyOf));\n\n        const value: number | null =\n            input.value === undefined\n                ? null\n                : Helper.IS.number(input.value) && input.value >= 0 && input.value % 1 === 0\n                ? input.value\n                : null;\n        return new FormControl<number | null>(value, validators);\n    }\n\n    value(value: any): number | null {\n        if (Helper.IS.empty(value)) return null;\n\n        value = Helper.IS.string(value) ? +value.replace(/,/g, '') : value;\n        return Helper.IS.number(value) ? value : null;\n    }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\nimport { NgxRangeValidator } from '../validators';\n\nexport interface INgxFormInputRange\n    extends Omit<INgxFormInput, 'id' | 'english' | 'value' | 'floatLabel' | 'keyboard'> {\n    type: 'RANGE';\n\n    /**\n     * Input caption copyright text\n     * @type { string }\n     * @override title\n     */\n    title: string;\n\n    /**\n     * Input value\n     * @type { [number, number] }\n     * @override value\n     * @optional\n     */\n    value?: [number, number];\n\n    /**\n     * Accept same values as **minimum** and **maximum**\n     * @type { boolean }\n     * @optional false\n     */\n    equal?: boolean;\n\n    /**\n     * Minimum acceptable value\n     * @type { number }\n     * @optional\n     */\n    minimum?: number;\n\n    /**\n     * Maximum acceptable value\n     * @type { number }\n     * @optional\n     */\n    maximum?: number;\n\n    /**\n     * Accept negative values\n     * @type { boolean }\n     * @optional false\n     */\n    negative?: boolean;\n\n    /**\n     * Accept decimal values\n     * @type { boolean }\n     * @optional false\n     */\n    decimal?: boolean;\n}\n\nexport class NgxFormInputRangeMethods extends NgxFormMethods<INgxFormInputRange, (number | null)[] | null> {\n    control(input: INgxFormInputRange, validators: ValidatorFn[]): FormControl<(number | null)[] | null> {\n        validators.push(NgxRangeValidator(!input.optional, !!input.equal, input.minimum, input.maximum));\n\n        const value: (number | null)[] = Array.isArray(input.value)\n            ? [\n                  Helper.IS.number(input.value[0]) ? input.value[0] : null,\n                  Helper.IS.number(input.value[1]) ? input.value[1] : null,\n              ]\n            : [null, null];\n        return new FormControl<(number | null)[] | null>(value, validators);\n    }\n\n    value(value: any): (number | null)[] | null {\n        return Array.isArray(value)\n            ? [Helper.IS.number(value[0]) ? value[0] : null, Helper.IS.number(value[1]) ? value[1] : null]\n            : [null, null];\n    }\n}\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput, INgxFormOption, INgxFormOptionGroup } from '../interfaces';\nimport { Helper } from '@webilix/helper-library';\n\nexport interface INgxFormInputSelect extends Omit<INgxFormInput, 'id' | 'autoFocus' | 'keyboard'> {\n    type: 'SELECT';\n\n    /**\n     * Input caption copyright text\n     * @type { string }\n     * @override title\n     */\n    title: string;\n\n    /**\n     * Input options list\n     * @type { Array<INgxFormOption> }\n     */\n    options: INgxFormOption[];\n\n    /**\n     * Input option groups list\n     * @type { Array<INgxFormOptionGroup> }\n     * @optional\n     */\n    groups?: INgxFormOptionGroup[];\n\n    /**\n     * Titla of groups menu\n     * @type { string }\n     * @optional\n     */\n    groupTitle?: string;\n}\n\nexport class NgxFormInputSelectMethods extends NgxFormMethods<INgxFormInputSelect, string | null> {\n    control(input: INgxFormInputSelect, validators: ValidatorFn[]): FormControl<string | null> {\n        const options: string[] = input.options.map((option) => option.id);\n        let value: string | null = input.value && options.includes(input.value) ? input.value : null;\n\n        // Select default value if there is only one option and value is required\n        if (input.options.length === 1 && !input.optional) value = input.options[0].id;\n\n        const groups = input.groups && Helper.IS.array(input.groups) ? input.groups : [];\n        input.groups = groups\n            .map((group) => ({ ...group, ids: group.ids.filter((id: string) => options.includes(id)) }))\n            .filter((group) => group.ids.length !== 0);\n\n        return new FormControl<string | null>(value, validators);\n    }\n\n    value(value: any, input: INgxFormInputSelect): string | null {\n        return value && input.options.find((o) => o.id === value) ? value : null;\n    }\n}\n","import { ValidatorFn, FormControl } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\nimport { NgxMaxCountValidator, NgxMinCountValidator } from '../validators';\n\nexport interface INgxFormInputTag\n    extends Omit<INgxFormInput, 'id' | 'english' | 'value' | 'optional' | 'autoFocus' | 'keyboard'> {\n    type: 'TAG';\n\n    /**\n     * Input value\n     * @type { Array<string> }\n     * @override value\n     * @optional\n     */\n    value?: string[];\n\n    /**\n     * Default tags list\n     * @type { Array<string> }\n     */\n    tags: string[];\n\n    /**\n     * Minimum number of required entered tags\n     * @type { number }\n     * @optional\n     */\n    minCount?: number;\n\n    /**\n     * Maximum number of required entered tags\n     * @type { number }\n     * @optional\n     */\n    maxCount?: number;\n}\n\nexport class NgxFormInputTagMethods extends NgxFormMethods<INgxFormInputTag, string[] | null> {\n    control(input: INgxFormInputTag, validators: ValidatorFn[]): FormControl<string[] | null> {\n        input.title = input.title || 'تگ';\n        if (input.minCount) validators.push(NgxMinCountValidator<string>(input.minCount));\n        if (input.maxCount) validators.push(NgxMaxCountValidator<string>(input.maxCount));\n\n        const value: string[] = (Array.isArray(input.value) ? input.value : []).filter(\n            (value: string) => Helper.IS.string(value) && value.length > 0,\n        );\n        return new FormControl<string[] | null>(value, validators);\n    }\n\n    value(value: any): string[] | null {\n        return Array.isArray(value) ? value : [];\n    }\n}\n","import { FormControl, ValidatorFn, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\nimport { NgxLengthValidator, NgxPatternValidator } from '../validators';\n\nexport interface INgxFormInputText extends INgxFormInput {\n    type: 'TEXT';\n\n    /**\n     * Input caption copyright text\n     * @type { string }\n     * @override title\n     */\n    title: string;\n\n    /**\n     * Suffix copyright text\n     * @type { string }\n     * @optional\n     */\n    suffix?: string;\n\n    /**\n     * Minimum acceptable value length\n     * @type { number }\n     * @optional\n     *\n     * **NOTE:** To restrict length to specific value, use same value for **minimum** and **maximum** length\n     */\n    minLength?: number;\n\n    /**\n     * Maximum acceptable value length\n     * @type { number }\n     * @optional\n     *\n     * **NOTE:** To restrict length to specific value, use same value for **minimum** and **maximum** length\n     */\n    maxLength?: number;\n\n    /**\n     * Input value pattern check\n     * @type { Object }\n     * @optional\n     *\n     * @property regex { RegExp } regular expression pattern\n     * @property error { String } custom error message\n     */\n    pattern?: {\n        regex: RegExp;\n        error?: string;\n    };\n\n    /**\n     * Show value length counter\n     * @type { boolean }\n     * @optional false\n     */\n    counter?: boolean;\n}\n\nexport class NgxFormInputTextMethods extends NgxFormMethods<INgxFormInputText, string | null> {\n    control(input: INgxFormInputText, 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(NgxLengthValidator(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        if (input.pattern) validators.push(NgxPatternValidator(input.pattern.regex, input.pattern.error || null));\n\n        return new FormControl<string | null>(input.value || null, validators);\n    }\n\n    value(value: any): string | null {\n        return Helper.IS.string(value) && value !== '' ? value : null;\n    }\n}\n","import { ValidatorFn, FormControl, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\n\nexport interface INgxFormInputTextarea extends INgxFormInput {\n    type: 'TEXTAREA';\n\n    /**\n     * Input caption copyright text\n     * @type { string }\n     * @override title\n     */\n    title: string;\n\n    /**\n     * Textarea input minimum hight\n     * @type { number }\n     * @optional 75\n     */\n    height?: number;\n\n    /**\n     * Activate textarea auto-height functionality\n     * @type { boolean }\n     * @optional false\n     */\n    autoHeight?: boolean;\n\n    /**\n     * Maximum height if auto-height is actived\n     * @type { number }\n     * @optional\n     */\n    maxHeight?: number;\n\n    /**\n     * Textarea input maximum hight\n     * @type { number }\n     */\n    maxLength?: number;\n\n    /**\n     * Show value length counter\n     * @type { boolean }\n     * @optional false\n     */\n    counter?: boolean;\n}\n\nexport class NgxFormInputTextareaMethods extends NgxFormMethods<INgxFormInputTextarea, string | null> {\n    control(input: INgxFormInputTextarea, validators: ValidatorFn[]): FormControl<string | null> {\n        if (input.maxLength && input.maxLength > 0) validators.push(Validators.maxLength(input.maxLength));\n\n        return new FormControl<string | null>(input.value || null, validators);\n    }\n\n    value(value: any): string | null {\n        return Helper.IS.string(value) && value !== '' ? value : null;\n    }\n}\n","import { FormControl, ValidatorFn, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\n\nexport interface INgxFormInputTime\n    extends Omit<INgxFormInput, 'id' | 'english' | 'autoFocus' | 'floatLabel' | 'keyboard'> {\n    type: 'TIME';\n\n    /**\n     * Active second option\n     * @type { boolean }\n     * @optional false\n     */\n    second?: boolean;\n}\n\nexport class NgxFormInputTimeMethods extends NgxFormMethods<INgxFormInputTime, string | null> {\n    control(input: INgxFormInputTime, validators: ValidatorFn[]): FormControl<string | null> {\n        input.title = input.title || 'ساعت';\n        validators.push(Validators.pattern(Helper.RE.TIME.get()));\n\n        const value: string | null =\n            input.value === undefined ? null : Helper.RE.TIME.verify(input.value) ? input.value : null;\n        return new FormControl<string | null>(value, validators);\n    }\n\n    value(value: any): string | null {\n        return Helper.RE.TIME.verify(value) ? value : null;\n    }\n}\n","import { FormControl, ValidatorFn, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\n\nexport interface INgxFormInputUrl extends Omit<INgxFormInput, 'english'> {\n    type: 'URL';\n}\n\nexport class NgxFormInputUrlMethods extends NgxFormMethods<INgxFormInputUrl, string | null> {\n    control(input: INgxFormInputUrl, validators: ValidatorFn[]): FormControl<string | null> {\n        input.title = input.title || 'آدرس سایت';\n        validators.push(Validators.pattern(Helper.RE.URL.get(true)));\n\n        const value: string | null =\n            input.value === undefined ? null : Helper.RE.URL.verify(input.value, true) ? input.value : null;\n        return new FormControl<string | null>(value, validators);\n    }\n\n    value(value: any): string | null {\n        return Helper.RE.URL.verify(value, true) ? value : null;\n    }\n}\n","import { FormControl, ValidatorFn, Validators } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../classes';\nimport { INgxFormInput } from '../interfaces';\n\nexport interface INgxFormInputUsername extends Omit<INgxFormInput, 'english'> {\n    type: 'USERNAME';\n\n    /**\n     * Minimum value length\n     * @type { number }\n     * @optional 3\n     */\n    minLength?: number;\n\n    /**\n     * Accept dash **(-)** letter in value\n     * @type { boolean }\n     * @optional true\n     */\n    useDash?: boolean;\n\n    /**\n     * Accept dot **(.)** letter in value\n     * @type { boolean }\n     * @optional true\n     */\n    useDot?: boolean;\n\n    /**\n     * Value must starts with **lower case english** letter\n     * @type { boolean }\n     * @optional true\n     */\n    startWithChar?: boolean;\n\n    /**\n     * Value must ends with **lower case english** letter\n     * @type { boolean }\n     * @optional true\n     */\n    endWithChar?: boolean;\n\n    /**\n     * Deactive all username validation checks\n     * @type { boolean }\n     * @optional false\n     */\n    unverified?: boolean;\n}\n\nexport class NgxFormInputUsernameMethods extends NgxFormMethods<INgxFormInputUsername, string | null> {\n    control(input: INgxFormInputUsername, validators: ValidatorFn[]): FormControl<string | null> {\n        input.title = input.title || 'نام کاربری';\n        if (!input.unverified) {\n            input.minLength = input.minLength === undefined ? 3 : input.minLength > 0 ? input.minLength : 3;\n\n            validators.push(Validators.minLength(input.minLength));\n            if (input.startWithChar !== false) validators.push(Validators.pattern(/^[a-z]{1}/));\n            if (input.endWithChar !== false) validators.push(Validators.pattern(/[a-z]{1}$/));\n            validators.push(\n                Validators.pattern(\n                    Helper.RE.USERNAME.get(\n                        input.minLength,\n                        input.useDash !== false,\n                        input.useDot !== false,\n                        false,\n                        false,\n                    ),\n                ),\n            );\n        }\n\n        return new FormControl<string | null>(input.value || null, validators);\n    }\n\n    value(value: any): string | null {\n        return Helper.IS.string(value) && value !== '' ? value : null;\n    }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { Helper, UnitArea } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../../classes';\nimport { INgxFormInput, INgxFormUnitArea } from '../../interfaces';\nimport { NgxMaxUnitValidator, NgxMinUnitValidator } from '../../validators';\n\nexport interface INgxFormInputUnitArea extends Omit<INgxFormInput, 'english' | 'value'> {\n    type: 'UNIT-AREA';\n\n    /**\n     * Input value\n     * @type { INgxFormUnitArea }\n     * @override value\n     * @optional\n     */\n    value?: INgxFormUnitArea;\n\n    /**\n     * Default unit type if value is not specified\n     * @type { UnitArea }\n     * @optional MT\n     */\n    unit?: UnitArea;\n\n    /**\n     * Minimum acceptable value\n     * @type { number }\n     * @optional\n     */\n    minimum?: number;\n\n    /**\n     * Maximum acceptable value\n     * @type { number }\n     * @optional\n     */\n    maximum?: number;\n\n    /**\n     * Accept decimal values\n     * @type { boolean | number }\n     * @optional false\n     */\n    decimal?: boolean | number;\n}\n\nexport class NgxFormInputUnitAreaMethods extends NgxFormMethods<INgxFormInputUnitArea, INgxFormUnitArea | null> {\n    control(input: INgxFormInputUnitArea, validators: ValidatorFn[]): FormControl<INgxFormUnitArea | null> {\n        input.title = input.title || 'مساحت';\n\n        if (input.minimum) validators.push(NgxMinUnitValidator(input.minimum));\n        if (input.maximum) validators.push(NgxMaxUnitValidator(input.maximum));\n\n        const value: INgxFormUnitArea | null =\n            input.value === undefined\n                ? null\n                : input.value !== null &&\n                  Helper.IS.object(input.value) &&\n                  Helper.UNIT.AREA.list.includes(input.value.unit) &&\n                  Helper.IS.number(input.value.value)\n                ? input.value\n                : null;\n        return new FormControl<INgxFormUnitArea | null>(value, validators);\n    }\n\n    value(value: any): INgxFormUnitArea | null {\n        if (Helper.IS.empty(value)) return null;\n\n        return value !== null &&\n            Helper.IS.object(value) &&\n            Helper.UNIT.AREA.list.includes(value.unit) &&\n            Helper.IS.number(value.value)\n            ? value\n            : null;\n    }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { Helper, UnitLength } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../../classes';\nimport { INgxFormInput, INgxFormUnitLength } from '../../interfaces';\nimport { NgxMaxUnitValidator, NgxMinUnitValidator } from '../../validators';\n\nexport interface INgxFormInputUnitLength extends Omit<INgxFormInput, 'english' | 'value'> {\n    type: 'UNIT-LENGTH';\n\n    /**\n     * Input value\n     * @type { INgxFormUnitLength }\n     * @override value\n     * @optional\n     */\n    value?: INgxFormUnitLength;\n\n    /**\n     * Default unit type if value is not specified\n     * @type { UnitLength }\n     * @optional MT\n     */\n    unit?: UnitLength;\n\n    /**\n     * Minimum acceptable value\n     * @type { number }\n     * @optional\n     */\n    minimum?: number;\n\n    /**\n     * Maximum acceptable value\n     * @type { number }\n     * @optional\n     */\n    maximum?: number;\n\n    /**\n     * Accept decimal values\n     * @type { boolean | number }\n     * @optional false\n     */\n    decimal?: boolean | number;\n}\n\nexport class NgxFormInputUnitLengthMethods extends NgxFormMethods<INgxFormInputUnitLength, INgxFormUnitLength | null> {\n    control(input: INgxFormInputUnitLength, validators: ValidatorFn[]): FormControl<INgxFormUnitLength | null> {\n        input.title = input.title || 'طول';\n\n        if (input.minimum) validators.push(NgxMinUnitValidator(input.minimum));\n        if (input.maximum) validators.push(NgxMaxUnitValidator(input.maximum));\n\n        const value: INgxFormUnitLength | null =\n            input.value === undefined\n                ? null\n                : input.value !== null &&\n                  Helper.IS.object(input.value) &&\n                  Helper.UNIT.LENGTH.list.includes(input.value.unit) &&\n                  Helper.IS.number(input.value.value)\n                ? input.value\n                : null;\n        return new FormControl<INgxFormUnitLength | null>(value, validators);\n    }\n\n    value(value: any): INgxFormUnitLength | null {\n        if (Helper.IS.empty(value)) return null;\n\n        return value !== null &&\n            Helper.IS.object(value) &&\n            Helper.UNIT.LENGTH.list.includes(value.unit) &&\n            Helper.IS.number(value.value)\n            ? value\n            : null;\n    }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { Helper, UnitVolume } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../../classes';\nimport { INgxFormInput, INgxFormUnitVolume } from '../../interfaces';\nimport { NgxMaxUnitValidator, NgxMinUnitValidator } from '../../validators';\n\nexport interface INgxFormInputUnitVolume extends Omit<INgxFormInput, 'english' | 'value'> {\n    type: 'UNIT-VOLUME';\n\n    /**\n     * Input value\n     * @type { INgxFormUnitVolume }\n     * @override value\n     * @optional\n     */\n    value?: INgxFormUnitVolume;\n\n    /**\n     * Default unit type if value is not specified\n     * @type { UnitVolume }\n     * @optional LT\n     */\n    unit?: UnitVolume;\n\n    /**\n     * Minimum acceptable value\n     * @type { number }\n     * @optional\n     */\n    minimum?: number;\n\n    /**\n     * Maximum acceptable value\n     * @type { number }\n     * @optional\n     */\n    maximum?: number;\n\n    /**\n     * Accept decimal values\n     * @type { boolean | number }\n     * @optional false\n     */\n    decimal?: boolean | number;\n}\n\nexport class NgxFormInputUnitVolumeMethods extends NgxFormMethods<INgxFormInputUnitVolume, INgxFormUnitVolume | null> {\n    control(input: INgxFormInputUnitVolume, validators: ValidatorFn[]): FormControl<INgxFormUnitVolume | null> {\n        input.title = input.title || 'حجم';\n\n        if (input.minimum) validators.push(NgxMinUnitValidator(input.minimum));\n        if (input.maximum) validators.push(NgxMaxUnitValidator(input.maximum));\n\n        const value: INgxFormUnitVolume | null =\n            input.value === undefined\n                ? null\n                : input.value !== null &&\n                  Helper.IS.object(input.value) &&\n                  Helper.UNIT.VOLUME.list.includes(input.value.unit) &&\n                  Helper.IS.number(input.value.value)\n                ? input.value\n                : null;\n        return new FormControl<INgxFormUnitVolume | null>(value, validators);\n    }\n\n    value(value: any): INgxFormUnitVolume | null {\n        if (Helper.IS.empty(value)) return null;\n\n        return value !== null &&\n            Helper.IS.object(value) &&\n            Helper.UNIT.VOLUME.list.includes(value.unit) &&\n            Helper.IS.number(value.value)\n            ? value\n            : null;\n    }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\n\nimport { Helper, UnitWeight } from '@webilix/helper-library';\n\nimport { NgxFormMethods } from '../../classes';\nimport { INgxFormInput, INgxFormUnitWeight } from '../../interfaces';\nimport { NgxMaxUnitValidator, NgxMinUnitValidator } from '../../validators';\n\nexport interface INgxFormInputUnitWeight extends Omit<INgxFormInput, 'english' | 'value'> {\n    type: 'UNIT-WEIGHT';\n\n    /**\n     * Input value\n     * @type { INgxFormUnitWeight }\n     * @override value\n     * @optional\n     */\n    value?: INgxFormUnitWeight;\n\n    /**\n     * Default unit type if value is not specified\n     * @type { UnitWeight }\n     * @optional KG\n     */\n    unit?: UnitWeight;\n\n    /**\n     * Minimum acceptable value\n     * @type { number }\n     * @optional\n     */\n    minimum?: number;\n\n    /**\n     * Maximum acceptable value\n     * @type { number }\n     * @optional\n     */\n    maximum?: number;\n\n    /**\n     * Accept decimal values\n     * @type { boolean | number }\n     * @optional false\n     */\n    decimal?: boolean | number;\n}\n\nexport class NgxFormInputUnitWeightMethods extends NgxFormMethods<INgxFormInputUnitWeight, INgxFormUnitWeight | null> {\n    control(input: INgxFormInputUnitWeight, validators: ValidatorFn[]): FormControl<INgxFormUnitWeight | null> {\n        input.title = input.title || 'وزن';\n\n        if (input.minimum) validators.push(NgxMinUnitValidator(input.minimum));\n        if (input.maximum) validators.push(NgxMaxUnitValidator(input.maximum));\n\n        const value: INgxFormUnitWeight | null =\n            input.value === undefined\n                ? null\n                : input.value !== null &&\n                  Helper.IS.object(input.value) &&\n                  Helper.UNIT.WEIGHT.list.includes(input.value.unit) &&\n                  Helper.IS.number(input.value.value)\n                ? input.value\n                : null;\n        return new FormControl<INgxFormUnitWeight | null>(value, validators);\n    }\n\n    value(value: any): INgxFormUnitWeight | null {\n        if (Helper.IS.empty(value)) return null;\n\n        return value !== null &&\n            Helper.IS.object(value) &&\n            Helper.UNIT.WEIGHT.list.includes(value.unit) &&\n            Helper.IS.number(value.value)\n            ? value\n            : null;\n    }\n}\n","import { NgxFormMethods } from '../classes';\nimport {\n    NgxFormInputAutoCompleteMethods,\n    NgxFormInputBankCardMethods,\n    NgxFormInputCheckboxMethods,\n    NgxFormInputColorMethods,\n    NgxFormInputCommentMethods,\n    NgxFormInputCoordinatesMethods,\n    NgxFormInputDateMethods,\n    NgxFormInputDomainMethods,\n    NgxFormInputEmailMethods,\n    NgxFormInputFileMethods,\n    NgxFormInputGroupMethods,\n    NgxFormInputIconMethods,\n    NgxFormInputIpMethods,\n    NgxFormInputListMethods,\n    NgxFormInputMaskMethods,\n    NgxFormInputMobileMethods,\n    NgxFormInputMultiFileMethods,\n    NgxFormInputMultiSelectMethods,\n    NgxFormInputNameMethods,\n    NgxFormInputNationalCodeMethods,\n    NgxFormInputNumberMethods,\n    NgxFormInputNumericMethods,\n    NgxFormInputOptionListMethods,\n    NgxFormInputPasswordMethods,\n    NgxFormInputPeriodMethods,\n    NgxFormInputPlateMethods,\n    NgxFormInputPriceMethods,\n    NgxFormInputRangeMethods,\n    NgxFormInputSelectMethods,\n    NgxFormInputTagMethods,\n    NgxFormInputTextareaMethods,\n    NgxFormInputTextMethods,\n    NgxFormInputTimeMethods,\n    NgxFormInputUnitAreaMethods,\n    NgxFormInputUnitLengthMethods,\n    NgxFormInputUnitVolumeMethods,\n    NgxFormInputUnitWeightMethods,\n    NgxFormInputUrlMethods,\n    NgxFormInputUsernameMethods,\n} from '../inputs';\nimport { NgxFormInputs } from '../ngx-form.type';\n\ninterface INgxFieldInputInfo {\n    title: string;\n    methods: NgxFormMethods<any, any>;\n}\n\nexport const NgxFieldInputInfo: { [key in NgxFormInputs['type']]: INgxFieldInputInfo } = {\n    // VIEWS\n    COMMENT: { title: 'توضیحات', methods: new NgxFormInputCommentMethods() },\n    // INPUTS\n    'AUTO-COMPLETE': { title: 'لیست تکمیلی', methods: new NgxFormInputAutoCompleteMethods() },\n    'BANK-CARD': { title: 'شماره کارت بانکی', methods: new NgxFormInputBankCardMethods() },\n    CHECKBOX: { title: 'یک انتخابی', methods: new NgxFormInputCheckboxMethods() },\n    COLOR: { title: 'رنگ', methods: new NgxFormInputColorMethods() },\n    COORDINATES: { title: 'موقعیت جغرافیایی', methods: new NgxFormInputCoordinatesMethods() },\n    DATE: { title: 'تاریخ', methods: new NgxFormInputDateMethods() },\n    DOMAIN: { title: 'دامنه سایت', methods: new NgxFormInputDomainMethods() },\n    EMAIL: { title: 'ایمیل', methods: new NgxFormInputEmailMethods() },\n    FILE: { title: 'فایل', methods: new NgxFormInputFileMethods() },\n    GROUP: { title: 'گروه', methods: new NgxFormInputGroupMethods() },\n    IP: { title: 'آدرس آی‌پی', methods: new NgxFormInputIpMethods() },\n    ICON: { title: 'آیکون', methods: new NgxFormInputIconMethods() },\n    LIST: { title: 'لیست مقادیر', methods: new NgxFormInputListMethods() },\n    MASK: { title: 'فرمت عددی', methods: new NgxFormInputMaskMethods() },\n    MOBILE: { title: 'موبایل', methods: new NgxFormInputMobileMethods() },\n    'MULTI-FILE': { title: 'فایل‌ها', methods: new NgxFormInputMultiFileMethods() },\n    'MULTI-SELECT': { title: 'چند انتخابی', methods: new NgxFormInputMultiSelectMethods() },\n    NAME: { title: 'نام و نام خانوادگی', methods: new NgxFormInputNameMethods() },\n    'NATIONAL-CODE': { title: 'کد ملی', methods: new NgxFormInputNationalCodeMethods() },\n    NUMBER: { title: 'مقدار عددی', methods: new NgxFormInputNumberMethods() },\n    NUMERIC: { title: 'عبارت عددی', methods: new NgxFormInputNumericMethods() },\n    'OPTION-LIST': { title: 'لیست گزینه‌ها', methods: new NgxFormInputOptionListMethods() },\n    PASSWORD: { title: 'کلمه عبور', methods: new NgxFormInputPasswordMethods() },\n    PERIOD: { title: 'محدوده زمانی', methods: new NgxFormInputPeriodMethods() },\n    PLATE: { title: 'شماره پلاک', methods: new NgxFormInputPlateMethods() },\n    PRICE: { title: 'قیمت', methods: new NgxFormInputPriceMethods() },\n    RANGE: { title: 'محدوده عددی', methods: new NgxFormInputRangeMethods() },\n    SELECT: { title: 'لیست کشویی', methods: new NgxFormInputSelectMethods() },\n    TAG: { title: 'تگ', methods: new NgxFormInputTagMethods() },\n    TEXT: { title: 'متن یک خطی', methods: new NgxFormInputTextMethods() },\n    TEXTAREA: { title: 'متن چند خطی', methods: new NgxFormInputTextareaMethods() },\n    TIME: { title: 'ساعت', methods: new NgxFormInputTimeMethods() },\n    URL: { title: 'آدرس سایت', methods: new NgxFormInputUrlMethods() },\n    USERNAME: { title: 'نام کاربری', methods: new NgxFormInputUsernameMethods() },\n    // UNIT\n    'UNIT-AREA': { title: 'مساحت', methods: new NgxFormInputUnitAreaMethods() },\n    'UNIT-LENGTH': { title: 'طول', methods: new NgxFormInputUnitLengthMethods() },\n    'UNIT-VOLUME': { title: 'حجم', methods: new NgxFormInputUnitVolumeMethods() },\n    'UNIT-WEIGHT': { title: 'وزن', methods: new NgxFormInputUnitWeightMethods() },\n};\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { FormGroup, ValidatorFn, Validators } from '@angular/forms';\nimport { NgxMaskService } from 'ngx-mask';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { INgxFormValues } from './ngx-form.interface';\nimport { NgxFormInputs } from './ngx-form.type';\nimport { NgxFieldInputInfo } from './interfaces';\n\n@Injectable()\nexport class NgxFormService {\n    constructor(private readonly ngxMaskService: NgxMaskService) {}\n\n    setInput(formGroup: FormGroup, input: NgxFormInputs): void {\n        const validators: ValidatorFn[] =\n            input.type === 'COMMENT' ||\n            input.type === 'CHECKBOX' ||\n            input.type === 'GROUP' ||\n            input.type === 'LIST' ||\n            input.type === 'MULTI-FILE' ||\n            input.type === 'MULTI-SELECT' ||\n            input.type === 'OPTION-LIST' ||\n            input.type === 'TAG' ||\n            input.optional\n                ? []\n                : [Validators.required];\n\n        const name: string = input.type === 'COMMENT' ? '' : input.name;\n        formGroup.setControl(name, NgxFieldInputInfo[input.type].methods.control(input, validators));\n    }\n\n    checkAvailability(formGroup: FormGroup, inputs: NgxFormInputs[], values: INgxFormValues): void {\n        inputs.forEach((input: NgxFormInputs) => {\n            if (input.type === 'COMMENT' || !input.disableOn) return;\n\n            const disabled: boolean = input.disableOn(values);\n            disabled ? formGroup.get(input.name)?.disable() : formGroup.get(input.name)?.enable();\n        });\n    }\n\n    checkVisibility(formGroup: FormGroup, inputs: NgxFormInputs[], values: INgxFormValues): string[] {\n        const hiddenInputs: string[] = [];\n        inputs.forEach((input: NgxFormInputs) => {\n            if (input.type === 'COMMENT' || !input.hideOn) return;\n\n            const hidden: boolean = input.hideOn(values);\n            hidden ? formGroup.get(input.name)?.disable() : formGroup.get(input.name)?.enable();\n            if (hidden) hiddenInputs.push(input.name);\n        });\n\n        return hiddenInputs;\n    }\n\n    checkButtons(inputs: NgxFormInputs[], values: INgxFormValues): string[] {\n        const disabledButtons: string[] = [];\n        inputs.forEach((input: NgxFormInputs) => {\n            if (input.type === 'COMMENT' || !input.button || !input.button.disableOn) return;\n\n            const disabled: boolean = input.button.disableOn(values);\n            if (disabled) disabledButtons.push(input.name);\n        });\n\n        return disabledButtons;\n    }\n\n    private getValue(formGroup: FormGroup, input: NgxFormInputs, hiddenInputs: string[]): any {\n        if (input.type === 'COMMENT') return null;\n        if (!formGroup || !formGroup.get(input.name)) return null;\n        if (formGroup.get(input.name)?.disabled) return null;\n        if (hiddenInputs.includes(input.name)) return null;\n\n        const inputValue: any = formGroup.get(input.name)?.value;\n        const returnValue: any = NgxFieldInputInfo[input.type].methods.value(inputValue, input);\n        switch (input.type) {\n            case 'MASK':\n                return this.ngxMaskService.applyMask(returnValue, input.mask);\n\n            default:\n                return returnValue;\n        }\n    }\n\n    getValues(formGroup: FormGroup, inputs: NgxFormInputs[], hiddenInputs: string[]): INgxFormValues {\n        const values: INgxFormValues = {};\n\n        inputs.forEach((input: NgxFormInputs) => {\n            if (input.type === 'COMMENT') return;\n            values[input.name] =\n                formGroup.get(input.name)?.errors === null ? this.getValue(formGroup, input, hiddenInputs) : null;\n        });\n\n        // COMMENT input onChange\n        inputs.forEach((input: NgxFormInputs) => {\n            if (input.type === 'COMMENT' && input.onChange) input.value = input.onChange(values) || '';\n        });\n\n        return values;\n    }\n\n    checkValues(\n        formGroup: FormGroup,\n        inputs: NgxFormInputs[],\n        hiddenInputs: string[],\n        ngxSubmit: EventEmitter<INgxFormValues>,\n        submit: { timeout: number; last?: Date },\n    ): Date | undefined {\n        formGroup.markAllAsTouched();\n        if (formGroup.invalid) return submit.last;\n\n        if (Helper.IS.number(submit.timeout) && submit.timeout > 0 && submit.last) {\n            const timeout: number = submit.timeout * 1000;\n            const duration: number = new Date().getTime() - submit.last.getTime();\n            if (duration < timeout) return submit.last;\n        }\n\n        const values: INgxFormValues = this.getValues(formGroup, inputs, hiddenInputs);\n        ngxSubmit.emit(values);\n\n        return new Date();\n    }\n}\n","import { Directive, ElementRef, HostListener, Optional } from '@angular/core';\nimport { FormGroupDirective } from '@angular/forms';\n\n@Directive({ selector: 'form.ngxForm' })\nexport class NgxErrorDirective {\n    constructor(private elementRef: ElementRef, @Optional() private formGroupDirective: FormGroupDirective) {}\n\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    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 { Directive, HostBinding } from '@angular/core';\n\n@Directive({ selector: 'input[type=\"text\"]' })\nexport class NgxAutocompleteDirective {\n    @HostBinding('attr.autocomplete') autocomplete = 'one-time-code';\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: 'ngxMultiLine' })\nexport class NgxMultiLinePipe 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, Input } from '@angular/core';\n\n@Component({\n    selector: 'ngx-description',\n    templateUrl: './ngx-description.component.html',\n    styleUrls: ['./ngx-description.component.scss'],\n})\nexport class NgxDescriptionComponent {\n    @Input({ required: true }) description!: string;\n    @Input({ required: true }) disabled: boolean = false;\n}\n","<div [class.ngx-form-disabled]=\"disabled\" [innerHTML]=\"description | ngxMultiLine\"></div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxError' })\nexport class NgxErrorPipe 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 'minimum':\n                return `مقدار نمی‌تواند کوچکتر از ${Helper.NUMBER.format(value)} باشد.`;\n\n            case 'maximum':\n                return `مقدار نمی‌تواند بزرگتر از ${Helper.NUMBER.format(value)} باشد.`;\n\n            case 'multiplyOf':\n                return `مقدار باید مضربی از ${Helper.NUMBER.format(value)} باشد.`;\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 'min-count':\n                return `انتخاب حداقل ${Helper.NUMBER.format(value)} گزینه الزامی است.`;\n\n            case 'max-count':\n                return `امکان انتخاب بیشتر از ${Helper.NUMBER.format(value)} گزینه وجود ندارد.`;\n\n            case 'min-date':\n                return `تاریخ باید برابر یا بعد از ${value} انتخاب شده باشد.`;\n\n            case 'max-date':\n                return `تاریخ باید برابر یا قبل از ${value} انتخاب شده باشد.`;\n\n            case 'bank-card':\n                return `شماره کارت بانکی صحیح مشخص نشده است.`;\n\n            case 'national-code':\n                return `کد ملی صحیح مشخص نشده است.`;\n\n            case 'duplicate':\n                return 'امکان انتخاب مقادیر تکراری وجود ندارد.';\n\n            case 'period':\n                return `تاریخ شروع باید ${value.equal ? 'قبل یا برابر با' : 'قبل از'} تاریخ پایان باشد.`;\n\n            case 'plate':\n                return `شماره پلاک به صورت کامل مشخص نشده است.`;\n\n            case 'range':\n                return `حداقل مقدار باید ${value.equal ? 'کوچکتر یا برابر با' : 'کوچکتر از'} حداکثر مقدار باشد.`;\n\n            case 'pattern':\n                switch (type) {\n                    case 'EMAIL':\n                        return 'فرمت استاندارد ایمیل رعایت نشده است.';\n                    case 'IP':\n                        return 'فرمت استاندارد آدرس آی‌پی رعایت نشده است.';\n                    case 'NUMERIC':\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                    case 'TEXT':\n                        return value.error || 'مقدار وارد شده صحیح نیست.';\n                    case 'URL':\n                        return 'فرمت استاندارد آدرس سایت رعایت نشده است.';\n                    case 'USERNAME':\n                        switch (value.requiredPattern) {\n                            case '/[a-z]{1}$/':\n                                return 'نام کاربری باید با حروف انگلیسی کوچک تمام شود.';\n                            case '/^[a-z]{1}/':\n                                return 'نام کاربری باید با حروف انگلیسی کوچک شروع شود.';\n                            default:\n                                const pattern: string = value.requiredPattern.replace('a-z0-9', '');\n                                const chars: string[] = ['حروف انگلیسی کوچک', 'اعداد انگلیسی'];\n                                if (pattern.includes('-')) chars.push('منها (-)');\n                                if (pattern.includes('.')) chars.push('نقطه (.)');\n                                return `کاراکترهای مجاز: ${chars.join('، ')}`;\n                        }\n                }\n                break;\n\n            case 'mask':\n                switch (type) {\n                    case 'BANK-CARD':\n                        return 'شماره کارت بانکی دارای ۱۶ رقم است.';\n                    case 'MOBILE':\n                        return 'شماره موبایل دارای ۱۱ رقم است.';\n                    case 'NATIONAL-CODE':\n                        return 'کدملی دارای ۱۰ رقم است.';\n                }\n                break;\n        }\n\n        switch (type) {\n            case 'DOMAIN':\n                return 'فرمت استاندارد دامنه سایت رعایت نشده است.';\n            default:\n                return 'مقدار وارد شده صحیح نیست.';\n        }\n    }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';\nimport { map, Observable, startWith } from 'rxjs';\n\nimport { INgxFormInputAutoComplete } from '../../../inputs';\n\n@Component({\n    selector: 'ngx-input-auto-complete',\n    templateUrl: './ngx-input-auto-complete.component.html',\n    styleUrls: ['./ngx-input-auto-complete.component.scss'],\n})\nexport class NgxInputAutoCompleteComponent implements OnInit {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!: INgxFormInputAutoComplete;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n    @Input({ required: true }) floatLabel!: FloatLabelType;\n\n    public filtered: Observable<string[]> = new Observable<string[]>();\n\n    ngOnInit(): void {\n        this.filtered = this.control.valueChanges.pipe(\n            startWith(''),\n            map((value) => this.filter(value || '')),\n        );\n    }\n\n    private filter(value: string): string[] {\n        value = value.toLowerCase();\n        return this.input.options.filter((option) => option.toLowerCase().includes(value));\n    }\n}\n","<mat-form-field [appearance]=\"appearance\" [floatLabel]=\"input.floatLabel || floatLabel\">\n    <!-- LABEL -->\n    <mat-label>{{ input.title }}</mat-label>\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\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]=\"control\"\n        [ngClass]=\"{ 'input-en': !!input.english }\"\n        [matAutocomplete]=\"ngxAutoComplete\"\n    />\n    <mat-autocomplete #ngxAutoComplete=\"matAutocomplete\" class=\"ngx-select-panel\">\n        <!-- OPTIONS -->\n        @for (option of filtered | async; track $index) {\n        <mat-option [value]=\"option\" [ngClass]=\"{ 'ngx-form-en': !!input.english }\">{{ option }}</mat-option>\n        }\n    </mat-autocomplete>\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { AfterViewInit, Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({ selector: '[ngxAutoFocus]' })\nexport class NgxAutoFocusDirective implements AfterViewInit {\n    @Input({ required: true }) public ngxAutoFocus!: boolean;\n\n    constructor(private elementRef: ElementRef) {}\n\n    ngAfterViewInit(): void {\n        if (!this.ngxAutoFocus || !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 { Component, Input, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { Helper, IBank } from '@webilix/helper-library';\n\nimport { INgxFormInputBankCard } from '../../../inputs';\n\n@Component({\n    selector: 'ngx-input-bank-card',\n    templateUrl: './ngx-input-bank-card.component.html',\n    styleUrls: ['./ngx-input-bank-card.component.scss'],\n})\nexport class NgxInputBankCardComponent implements OnInit {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!: INgxFormInputBankCard;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n    @Input({ required: true }) floatLabel!: FloatLabelType;\n\n    public bank: string = '';\n\n    public inputTransformFn = (value: any): string => Helper.STRING.changeNumbers(value.toString(), 'EN');\n\n    ngOnInit(): void {\n        this.setBank(this.input.value || '');\n    }\n\n    setBank(card: string): void {\n        card = card.replace(/-/g, '').substring(0, 6);\n\n        const bank: IBank | null = Helper.BANK.findCard(card);\n        this.bank = bank?.title || '';\n    }\n}\n","<mat-form-field [appearance]=\"appearance\" [floatLabel]=\"input.floatLabel || floatLabel\">\n    <!-- LABEL -->\n    <mat-label>{{ input.title }}</mat-label>\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n    <div class=\"content\">\n        @if (input.showBank) {\n        <div class=\"bank\">{{ bank || '&nbsp;' }}</div>\n        }\n        <input\n            matInput\n            type=\"text\"\n            [name]=\"input.name\"\n            [id]=\"input.id || ''\"\n            [formControl]=\"control\"\n            [inputMode]=\"'numeric'\"\n            class=\"input-en\"\n            mask=\"0000-0000-0000-0000\"\n            [inputTransformFn]=\"inputTransformFn\"\n            (input)=\"setBank(bankCardInput.value)\"\n            [ngxAutoFocus]=\"!!input.autoFocus\"\n            #bankCardInput\n            (keypress)=\"input.keyboard && input.keyboard.press !== undefined ? input.keyboard.press($event) : null\"\n            (keydown)=\"input.keyboard && input.keyboard.down !== undefined ? input.keyboard.down($event) : null\"\n            (keyup)=\"input.keyboard && input.keyboard.up !== undefined ? input.keyboard.up($event) : null\"\n        />\n        <mat-icon\n            [ngClass]=\"{ 'ngx-form-icon': true, 'ngx-form-disabled': control.disabled }\"\n            [fontIcon]=\"'credit_card'\"\n        ></mat-icon>\n    </div>\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { Component, Input } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { INgxFormInputCheckbox } from '../../../inputs';\n\n@Component({\n    selector: 'ngx-input-checkbox',\n    templateUrl: './ngx-input-checkbox.component.html',\n    styleUrls: ['./ngx-input-checkbox.component.scss'],\n})\nexport class NgxInputCheckboxComponent {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!: INgxFormInputCheckbox;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n}\n","<mat-form-field [appearance]=\"appearance\">\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n    <!-- INPUT -->\n    <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"control\" class=\"input-hidden\" />\n\n    @if (input.view === 'SLIDER') {\n\n    <mat-slide-toggle\n        color=\"primary\"\n        [ngClass]=\"{ 'ngx-form-en': !!input.english, 'ngx-form-disabled': !!control.disabled }\"\n        [checked]=\"!!control.value\"\n        (change)=\"control.setValue($event.checked)\"\n        [disabled]=\"control.disabled\"\n    >\n        {{ input.message }}\n    </mat-slide-toggle>\n    } @else {\n    <mat-checkbox\n        color=\"primary\"\n        [ngClass]=\"{ 'ngx-form-en': !!input.english, 'ngx-form-disabled': !!control.disabled }\"\n        [checked]=\"!!control.value\"\n        (change)=\"control.setValue($event.checked)\"\n    >\n        {{ input.message }}\n    </mat-checkbox>\n    }\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { Component, Input } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { INgxFormInputColor } from '../../../inputs';\n\n@Component({\n    selector: 'ngx-input-color',\n    templateUrl: './ngx-input-color.component.html',\n    styleUrls: ['./ngx-input-color.component.scss'],\n})\nexport class NgxInputColorComponent {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!: INgxFormInputColor;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n}\n","<mat-form-field [appearance]=\"appearance\" [floatLabel]=\"'always'\">\n    <!-- LABEL -->\n    <mat-label>{{ input.title }}</mat-label>\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n    <div class=\"content\">\n        @if (!input.colors || input.colors.length === 0) {\n        <!-- INPUT VIEW -->\n        <div class=\"input\">\n            <div [ngClass]=\"{ value: true, 'ngx-form-en': true, 'ngx-form-disabled': control.disabled }\">\n                {{ (control.value | uppercase) || '&nbsp;' }}\n            </div>\n            <div\n                [ngStyle]=\"{\n                    'background-color': control.value || 'transparent',\n                    'border-color': control.value || 'var(--ngxFormBorderColor)'\n                }\"\n                [ngClass]=\"{ select: true, 'ngx-form-disabled': control.disabled }\"\n                (click)=\"colorInput.click()\"\n            >\n                &nbsp;\n            </div>\n            <input matInput type=\"color\" [name]=\"input.name\" [formControl]=\"control\" #colorInput />\n\n            <button\n                mat-button\n                (click)=\"control.markAsTouched(); control.value ? control.setValue(null) : colorInput.click()\"\n                type=\"button\"\n                [disabled]=\"control.disabled\"\n                [ngClass]=\"{ 'ngx-form-button': true, 'ngx-form-disabled': control.disabled }\"\n            >\n                <mat-icon\n                    [ngClass]=\"{ 'ngx-form-icon': true, 'ngx-form-disabled': control.disabled }\"\n                    [fontIcon]=\"control.value === null ? 'palette' : 'cancel'\"\n                ></mat-icon>\n            </button>\n        </div>\n        } @else {\n        <!--  LIST VIEW -->\n        <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"control\" class=\"input-hidden\" />\n\n        <div class=\"colors\">\n            <!-- COLOR -->\n            @for (color of input.colors; track $index) {\n            <div\n                [ngClass]=\"{ color: true, current: color === control.value, 'ngx-form-disabled': control.disabled }\"\n                [ngStyle]=\"{ 'background-color': color }\"\n                (click)=\"control.setValue(control.value === color ? null : color)\"\n            >\n                @if (color === control.value) {\n                <mat-icon [fontIcon]=\"'check'\" class=\"ngx-form-icon\" color=\"primary\"></mat-icon>\n                }\n            </div>\n            }\n        </div>\n        }\n    </div>\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { Feature, Map, View } from 'ol';\nimport { Coordinate } from 'ol/coordinate';\nimport { Point } from 'ol/geom';\nimport BaseLayer from 'ol/layer/Base';\nimport TileLayer from 'ol/layer/Tile';\nimport VectorLayer from 'ol/layer/Vector';\nimport OSM from 'ol/source/OSM';\nimport VectorSource from 'ol/source/Vector';\nimport interactionDoubleClickZoom from 'ol/interaction/DoubleClickZoom';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { INgxCoordinates, INgxCoordinatesConfig } from './ngx-coordinates.interface';\n\n@Component({\n    host: { selector: 'ngx-coordinates' },\n    templateUrl: './ngx-coordinates.component.html',\n    styleUrls: ['./ngx-coordinates.component.scss'],\n})\nexport class NgxCoordinatesComponent implements OnInit {\n    public map!: Map;\n    public title?: string = this.data.config.title;\n    public coordinates?: INgxCoordinates = this.data.config.value;\n\n    public error?: 'LATITUDE' | 'LONGITUDE';\n\n    public inputTransformFn = (value: any): string => Helper.STRING.changeNumbers(value.toString(), 'EN');\n\n    constructor(\n        @Inject('NGX_FORM_PRIMARY_COLOR') private readonly primaryColor: string,\n        @Inject(MAT_DIALOG_DATA)\n        private readonly data: { config: INgxCoordinatesConfig },\n        private readonly matDialogRef: MatDialogRef<NgxCoordinatesComponent>,\n    ) {}\n\n    ngOnInit(): void {\n        const latitude: number = this.coordinates?.latitude || this.data.config.center?.latitude || 35.6997382;\n        const longitude: number = this.coordinates?.longitude || this.data.config.center?.longitude || 51.3380603;\n\n        const coordinate: Coordinate = [longitude, latitude];\n        this.map = new Map({\n            view: new View({ center: coordinate, zoom: this.data.config.zoom || 15, projection: 'EPSG:4326' }),\n            layers: [new TileLayer({ source: new OSM() })],\n            target: 'ngx-form-map',\n        });\n\n        // Remove DoubleClick / Zoom action\n        this.map\n            .getInteractions()\n            .getArray()\n            .forEach((interaction) => {\n                if (interaction instanceof interactionDoubleClickZoom) this.map.removeInteraction(interaction);\n            });\n\n        this.addCoordinateLayer();\n    }\n\n    addCoordinateLayer(): void {\n        // Reset map\n        this.map\n            .getLayers()\n            .getArray()\n            .forEach((layer: BaseLayer) => {\n                if (layer instanceof VectorLayer) this.map.removeLayer(layer);\n            });\n\n        if (!this.coordinates) return;\n        const coordinate: Coordinate = [this.coordinates.longitude, this.coordinates.latitude];\n        const layer = new VectorLayer({\n            source: new VectorSource({ features: [new Feature(new Point(coordinate))] }),\n            style: {\n                'circle-fill-color': this.primaryColor,\n                'circle-radius': 8,\n                'circle-stroke-color': '#FFF',\n                'circle-stroke-width': 1,\n            },\n        });\n        this.map.addLayer(layer);\n    }\n\n    checkInputs(latitude: string, longitude: string): void {\n        this.error = undefined;\n\n        latitude = latitude.toString().trim();\n        if (latitude === '' || isNaN(+latitude) || +latitude < -180 || +latitude > 180) {\n            this.error = 'LATITUDE';\n            return;\n        }\n\n        longitude = longitude.toString().trim();\n        if (longitude === '' || isNaN(+longitude) || +longitude < -180 || +longitude > 180) {\n            this.error = 'LONGITUDE';\n            return;\n        }\n\n        if (this.coordinates && this.coordinates.latitude === +latitude && this.coordinates.longitude === +longitude)\n            return;\n\n        const center: Coordinate = [+longitude, +latitude];\n        this.map.getView().animate({ center, duration: 1000 });\n\n        this.coordinates = { latitude: +latitude, longitude: +longitude };\n        this.addCoordinateLayer();\n    }\n\n    setCoordinates(event: MouseEvent): void {\n        event.preventDefault();\n\n        this.error = undefined;\n        const coordinate: Coordinate = this.map.getEventCoordinate(event).map((c: number) => +c.toFixed(7));\n        this.coordinates = { latitude: coordinate[1], longitude: coordinate[0] };\n        this.addCoordinateLayer();\n    }\n\n    selectCoordinates(): void {\n        if (!this.coordinates || this.error) return;\n        this.matDialogRef.close(this.coordinates);\n    }\n}\n","<header>{{ title || 'موقعیت جغرافیایی' }}</header>\n\n<div\n    id=\"ngx-form-map\"\n    class=\"ngx-form-map\"\n    (dblclick)=\"setCoordinates($event)\"\n    (contextmenu)=\"setCoordinates($event)\"\n></div>\n\n<footer>\n    <content>\n        <div class=\"buttons\">\n            <button mat-button type=\"button\" mat-dialog-close>\n                <mat-icon class=\"ngx-form-icon\" [fontIcon]=\"'cancel'\"></mat-icon>\n            </button>\n            @if (coordinates && !error) {\n            <button mat-button type=\"button\" (click)=\"selectCoordinates()\">\n                <mat-icon class=\"ngx-form-icon\" [fontIcon]=\"'task_alt'\"></mat-icon>\n            </button>\n            }\n        </div>\n        <div class=\"coordinates\">\n            <div class=\"coordinate\">\n                <div class=\"title\">LATITUDE:</div>\n                <input\n                    type=\"text\"\n                    [ngModel]=\"coordinates?.latitude?.toString() || ''\"\n                    maxlength=\"15\"\n                    inputmode=\"numeric\"\n                    class=\"input-en\"\n                    [class.error]=\"error === 'LATITUDE'\"\n                    mask=\"separator.12\"\n                    thousandSeparator=\"\"\n                    decimalMarker=\".\"\n                    [allowNegativeNumbers]=\"true\"\n                    [inputTransformFn]=\"inputTransformFn\"\n                    (keyup.enter)=\"checkInputs(latitudeInput.value, longitudeInput.value)\"\n                    (blur)=\"checkInputs(latitudeInput.value, longitudeInput.value)\"\n                    #latitudeInput\n                />\n            </div>\n            <div class=\"coordinate\">\n                <div class=\"title\">LONGITUDE:</div>\n                <input\n                    type=\"text\"\n                    [ngModel]=\"coordinates?.longitude?.toString() || ''\"\n                    maxlength=\"15\"\n                    inputmode=\"numeric\"\n                    class=\"input-en\"\n                    [class.error]=\"error === 'LONGITUDE'\"\n                    mask=\"separator.12\"\n                    thousandSeparator=\"\"\n                    decimalMarker=\".\"\n                    [allowNegativeNumbers]=\"true\"\n                    [inputTransformFn]=\"inputTransformFn\"\n                    (keyup.enter)=\"checkInputs(latitudeInput.value, longitudeInput.value)\"\n                    (blur)=\"checkInputs(latitudeInput.value, longitudeInput.value)\"\n                    #longitudeInput\n                />\n            </div>\n        </div>\n    </content>\n</footer>\n","import { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { NgxCoordinatesComponent } from './ngx-coordinates.component';\nimport { INgxCoordinates, INgxCoordinatesConfig } from './ngx-coordinates.interface';\n\n@Injectable()\nexport class NgxCoordinatesService {\n    constructor(private readonly dialog: MatDialog) {}\n\n    getCoordinates(config: INgxCoordinatesConfig): Promise<INgxCoordinates> {\n        return new Promise<INgxCoordinates>((resolve, reject) => {\n            this.dialog\n                .open(NgxCoordinatesComponent, {\n                    autoFocus: false,\n                    width: '100vw',\n                    maxWidth: '100vw',\n                    height: '100vh',\n                    maxHeight: '100vh',\n                    direction: 'rtl',\n                    data: { config },\n                })\n                .afterClosed()\n                .subscribe((coordinates?: INgxCoordinates) => (coordinates ? resolve(coordinates) : reject));\n        });\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgxMaskDirective } from 'ngx-mask';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { NgxCoordinatesComponent } from './ngx-coordinates.component';\nimport { NgxCoordinatesService } from './ngx-coordinates.service';\n\n@NgModule({\n    declarations: [NgxCoordinatesComponent],\n    imports: [CommonModule, FormsModule, NgxMaskDirective, MatButtonModule, MatDialogModule, MatIconModule],\n    providers: [NgxCoordinatesService],\n})\nexport class NgxCoordinatesModule {}\n","import { Component, Input } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { INgxCoordinates, INgxCoordinatesConfig, NgxCoordinatesService } from '../../../../ngx-coordinates';\n\nimport { INgxFormInputCoordinates } from '../../../inputs';\n\n@Component({\n    selector: 'ngx-input-coordinates',\n    templateUrl: './ngx-input-coordinates.component.html',\n    styleUrls: ['./ngx-input-coordinates.component.scss'],\n})\nexport class NgxInputCoordinatesComponent {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!: INgxFormInputCoordinates;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n    @Input({ required: true }) floatLabel!: FloatLabelType;\n\n    constructor(private readonly ngxCoordinatesService: NgxCoordinatesService) {}\n\n    setCoordinates(): void {\n        if (this.control.disabled) return;\n\n        const config: INgxCoordinatesConfig = {\n            title: this.input.title,\n            value: this.control.value,\n            center: this.input.center,\n            zoom: this.input.zoom,\n        };\n        this.ngxCoordinatesService.getCoordinates(config).then((coordinates: INgxCoordinates) => {\n            this.control.setValue(coordinates);\n            this.control.markAsTouched();\n        });\n    }\n}\n","<mat-form-field [appearance]=\"appearance\" [floatLabel]=\"input.floatLabel || floatLabel\">\n    <!-- LABEL -->\n    <mat-label>{{ input.title }}</mat-label>\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n    <!-- INPUT -->\n    <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"control\" class=\"input-hidden\" />\n\n    <div class=\"content\">\n        <div [ngClass]=\"{ coordinates: true, 'ngx-form-disabled': control.disabled }\" (click)=\"setCoordinates()\">\n            @if (control.value) {\n            <div class=\"ngx-form-en\">LONG: {{ control.value.longitude }}</div>\n            <div class=\"ngx-form-en\">LAT: {{ control.value.latitude }}</div>\n            }\n        </div>\n        <button\n            mat-button\n            (click)=\"control.markAsTouched(); control.value === null ? setCoordinates() : control.setValue(null)\"\n            type=\"button\"\n            [disabled]=\"control.disabled\"\n            [ngClass]=\"{ 'ngx-form-button': true, 'ngx-form-disabled': control.disabled }\"\n        >\n            <mat-icon\n                [ngClass]=\"{ 'ngx-form-icon': true, 'ngx-form-disabled': control.disabled }\"\n                [fontIcon]=\"control.value === null ? 'location_on' : 'cancel'\"\n            ></mat-icon>\n        </button>\n    </div>\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { JalaliDateTime, JalaliDateTimeCalendar } from '@webilix/jalali-date-time';\nimport { Helper } from '@webilix/helper-library';\n\nimport { INgxDate } from './ngx-date.interface';\n\n@Component({\n    host: { selector: 'ngx-date' },\n    templateUrl: './ngx-date.component.html',\n    styleUrls: ['./ngx-date.component.scss'],\n})\nexport class NgxDateComponent implements OnInit {\n    public config: INgxDate = this.data.config;\n\n    private jalali = JalaliDateTime();\n\n    public today: string = '';\n    public minDate: string = '';\n    public maxDate: string = '';\n\n    public current: string = '';\n    public month: string = '';\n    public calendar: JalaliDateTimeCalendar = this.jalali.calendar();\n\n    public showMonth: boolean = false;\n    public seasons: string[][] = [\n        ['فروردین', 'اردیبهشت', 'خرداد'],\n        ['تیر', 'مرداد', 'شهریور'],\n        ['مهر', 'آبان', 'آذر'],\n        ['دی', 'بهمن', 'اسفند'],\n    ];\n\n    constructor(\n        @Inject(MAT_DIALOG_DATA) private readonly data: { config: INgxDate },\n        private readonly dialogRef: MatDialogRef<NgxDateComponent>,\n    ) {}\n\n    ngOnInit(): void {\n        this.today = this.jalali.toString(new Date(), { format: 'Y-M-D' });\n        this.minDate = this.config.minDate\n            ? this.jalali.toString(this.config.minDate, { format: 'Y-M-D' })\n            : '0000-00-00';\n        this.maxDate = this.config.maxDate\n            ? this.jalali.toString(this.config.maxDate, { format: 'Y-M-D' })\n            : '9999-99-99';\n\n        const value: Date | null =\n            this.config.value === undefined ? null : Helper.IS.date(this.config.value) ? this.config.value : null;\n        this.current = value ? this.jalali.toString(value, { format: 'Y-M-D' }) : '';\n\n        const date: Date = value || this.config.minDate || this.config.maxDate || new Date();\n        this.month = this.jalali.toString(date, { format: 'Y-M' });\n        this.calendar = this.jalali.calendar(this.month);\n    }\n\n    changeMonth(change: number): void {\n        let [year, month] = this.month.split('-').map((v: string) => +v);\n        switch (change) {\n            case 12:\n            case -12:\n                year += change === 12 ? 1 : -1;\n                break;\n\n            case 1:\n            case -1:\n                month += change;\n                if (month === 13) {\n                    year++;\n                    month = 1;\n                }\n                if (month === 0) {\n                    year--;\n                    month = 12;\n                }\n\n                break;\n\n            case 0:\n                [year, month] = this.jalali\n                    .toString(new Date(), { format: 'Y-M' })\n                    .split('-')\n                    .map((v: string) => +v);\n                break;\n        }\n\n        this.month = year.toString() + '-' + month.toString().padStart(2, '0');\n        this.calendar = this.jalali.calendar(this.month);\n    }\n\n    changeCalendar(year: number, month: number): void {\n        this.month = year.toString() + '-' + month.toString().padStart(2, '0');\n        this.calendar = this.jalali.calendar(this.month);\n        this.showMonth = false;\n    }\n\n    setDate(value: string | null): void {\n        if (value === null) return;\n\n        const gregorian: string = this.jalali.gregorian(value).date;\n        const date: Date = new Date(gregorian + 'T00:00:00.000');\n        this.dialogRef.close(date);\n    }\n}\n","@if (showMonth) {\n<div class=\"background\" (click)=\"showMonth = false\"></div>\n}\n\n<section class=\"header\">\n    <div class=\"title\">{{ config.title || 'تاریخ' }}</div>\n    <mat-icon [fontIcon]=\"'close'\" mat-dialog-close></mat-icon>\n</section>\n\n<section class=\"icons\">\n    <div [ngClass]=\"{ month: true, 'month-open': showMonth }\" (click)=\"showMonth = !showMonth\">\n        {{ calendar.title }}\n        <mat-icon [fontIcon]=\"showMonth ? 'expand_less' : 'expand_more'\"></mat-icon>\n    </div>\n\n    <div class=\"seperator\"></div>\n    <mat-icon [fontIcon]=\"'keyboard_double_arrow_right'\" (click)=\"changeMonth(-12)\"></mat-icon>\n    <mat-icon [fontIcon]=\"'chevron_right'\" (click)=\"changeMonth(-1)\"></mat-icon>\n    <mat-icon [fontIcon]=\"'radio_button_checked'\" (click)=\"changeMonth(0)\"></mat-icon>\n    <mat-icon [fontIcon]=\"'chevron_left'\" (click)=\"changeMonth(1)\"></mat-icon>\n    <mat-icon [fontIcon]=\"'keyboard_double_arrow_left'\" (click)=\"changeMonth(12)\"></mat-icon>\n</section>\n\n<section class=\"names\">\n    <!-- NAMES -->\n    @for (day of ['ش', 'ی', 'د', 'س', 'چ', 'پ', 'ج']; track $index) {\n    <div class=\"name\">{{ day }}</div>\n    }\n\n    <!-- MONTH -->\n    @if (showMonth) {\n    <div class=\"month\">\n        <div class=\"header\">\n            <mat-icon\n                [fontIcon]=\"'keyboard_double_arrow_right'\"\n                (click)=\"years.value = (+years.value - 10).toString()\"\n            ></mat-icon>\n            <mat-icon [fontIcon]=\"'chevron_right'\" (click)=\"years.value = (+years.value - 1).toString()\"></mat-icon>\n            <input type=\"text\" [value]=\"month.substring(0, 4)\" readonly #years />\n            <mat-icon [fontIcon]=\"'chevron_left'\" (click)=\"years.value = (+years.value + 1).toString()\"></mat-icon>\n            <mat-icon\n                [fontIcon]=\"'keyboard_double_arrow_left'\"\n                (click)=\"years.value = (+years.value + 10).toString()\"\n            ></mat-icon>\n        </div>\n\n        <!-- SEASON -->\n        @for (season of seasons; track s; let s = $index) {\n        <div class=\"season\">\n            <!-- MONTH -->\n            @for (month of season; track m; let m = $index ) {\n            <div class=\"month-name\" (click)=\"changeCalendar(+years.value, s * 3 + m + 1)\">\n                {{ month }}\n            </div>\n            }\n        </div>\n        }\n    </div>\n    }\n</section>\n\n<!-- WEEK -->\n@for (week of calendar.weeks; track $index) {\n<section class=\"days\">\n    <!-- DAY -->\n    @for (day of week; track $index) {\n    <div\n        [ngClass]=\"{\n            day: true,\n            today: day.date === today,\n            current: day.date === current,\n            disable: day.month !== month || day.date > maxDate || day.date < minDate\n        }\"\n        (click)=\"setDate(day.month !== month || day.date > maxDate || day.date < minDate ? null : day.date)\"\n    >\n        {{ day.day }}\n    </div>\n    }\n</section>\n}\n","import { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxDateComponent } from './ngx-date.component';\nimport { INgxDate } from './ngx-date.interface';\n\n@Injectable()\nexport class NgxDateService {\n    constructor(private readonly dialog: MatDialog) {}\n\n    getDate(config: INgxDate): Promise<Date> {\n        return new Promise<Date>((resolve, reject) => {\n            this.dialog\n                .open(NgxDateComponent, {\n                    autoFocus: false,\n                    width: 'calc(100vw - 4rem)',\n                    maxWidth: '350px',\n                    maxHeight: '90vh',\n                    direction: 'rtl',\n                    disableClose: true,\n                    data: { config },\n                })\n                .afterClosed()\n                .subscribe((date: Date) => {\n                    if (Helper.IS.date(date)) resolve(date);\n                    else reject();\n                });\n        });\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { NgxDateComponent } from './ngx-date.component';\nimport { NgxDateService } from './ngx-date.service';\n\n@NgModule({\n    declarations: [NgxDateComponent],\n    imports: [CommonModule, MatDialogModule, MatIconModule],\n    providers: [NgxDateService],\n})\nexport class NgxDateModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { JalaliDateTime } from '@webilix/jalali-date-time';\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxDate' })\nexport class NgxDatePipe implements PipeTransform {\n    transform(value: string | Date | null, format?: string): string {\n        if (value === null) return '';\n\n        const jalali = JalaliDateTime({ fullTextFormat: format || 'W، d N Y' });\n        const date: Date = typeof value === 'string' ? new Date(value) : value;\n        if (!Helper.IS.date(date)) return '';\n\n        return jalali.toFullText(date, { format: format || 'W، d N Y' });\n    }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { JalaliDateTime } from '@webilix/jalali-date-time';\n\nimport { INgxDate, NgxDateService } from '../../../../ngx-date';\n\nimport { INgxFormInputDate } from '../../../inputs';\n\n@Component({\n    selector: 'ngx-input-date',\n    templateUrl: './ngx-input-date.component.html',\n    styleUrls: ['./ngx-input-date.component.scss'],\n})\nexport class NgxInputDateComponent implements OnInit {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!: INgxFormInputDate;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n    @Input({ required: true }) floatLabel!: FloatLabelType;\n\n    public hours: string[] = [...Array(24).keys()].map((index: number) => index.toString().padStart(2, '0'));\n    public hour: string = '';\n    public minutes: string[] = [...Array(60).keys()].map((index: number) => index.toString().padStart(2, '0'));\n    public minute: string = '';\n\n    private jalali = JalaliDateTime();\n    private default: { value: Date; day: string } = { value: new Date(), day: '' };\n\n    constructor(private readonly ngxDateService: NgxDateService) {}\n\n    ngOnInit(): void {\n        this.hour = this.jalali.toString(this.control.value || new Date(), { format: 'H' });\n        this.minute = this.jalali.toString(this.control.value || new Date(), { format: 'I' });\n        if (this.control.value) {\n            this.default.value = this.control.value;\n            this.default.day = this.jalali.toString(this.control.value, { format: 'Y-M-D' });\n        }\n    }\n\n    setDate(): void {\n        if (this.control.disabled) return;\n\n        const config: INgxDate = {\n            title: this.input.title,\n            value: this.control.value,\n            minDate: this.input.minDate,\n            maxDate: this.input.maxDate,\n        };\n        this.ngxDateService.getDate(config).then(\n            (date: Date) => this.setValue(date),\n            () => {},\n        );\n    }\n\n    setValue(date: Date): void {\n        if (this.control.disabled) return;\n\n        const day: string = this.jalali.toString(date, { format: 'Y-M-D' });\n        if (day === this.default.day) date = this.default.value;\n\n        if (this.input.hour) {\n            date = this.jalali.periodDay(1, date).from;\n            date = new Date(date.getTime() + (+this.hour * 60 + +this.minute) * 60 * 1000);\n        }\n\n        this.control.setValue(date);\n        this.control.markAsTouched();\n    }\n}\n","<mat-form-field [appearance]=\"appearance\" [floatLabel]=\"input.floatLabel || floatLabel\">\n    <!-- LABEL -->\n    <mat-label>{{ input.title }}</mat-label>\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n    <!-- INPUT -->\n    <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"control\" class=\"input-hidden\" />\n\n    <div class=\"content\">\n        <div class=\"ngx-form-date\">\n            <div [ngClass]=\"{ 'ngx-form-overflow': true, 'ngx-form-disabled': control.disabled }\" (click)=\"setDate()\">\n                {{ control.value ? (control.value | ngxDate) : '&nbsp;' }}\n            </div>\n            @if (input.hour && control.value) {\n            <div class=\"ngx-form-date-time\">\n                <mat-select\n                    [(ngModel)]=\"hour\"\n                    panelClass=\"ngx-date-time-panel\"\n                    class=\"select-en\"\n                    [disabled]=\"control.disabled\"\n                    (selectionChange)=\"setValue(control.value)\"\n                >\n                    <!-- HOURS -->\n                    @for (h of hours; track $index) { <mat-option class=\"ngx-form-en\" [value]=\"h\">{{ h }}</mat-option> }\n                </mat-select>\n                <div [ngClass]=\"{ colon: true, 'ngx-form-disabled': control.disabled }\">:</div>\n                <mat-select\n                    [(ngModel)]=\"minute\"\n                    panelClass=\"ngx-date-time-panel\"\n                    class=\"select-en\"\n                    [disabled]=\"control.disabled\"\n                    (selectionChange)=\"setValue(control.value)\"\n                >\n                    <!-- MINUTES -->\n                    @for (m of minutes; track $index) {\n                    <mat-option class=\"ngx-form-en\" [value]=\"m\">{{ m }}</mat-option>\n                    }\n                </mat-select>\n            </div>\n            }\n        </div>\n        <button\n            mat-button\n            (click)=\"control.markAsTouched(); control.value === null ? setDate() : control.setValue(null)\"\n            type=\"button\"\n            [disabled]=\"control.disabled\"\n            [ngClass]=\"{ 'ngx-form-button': true, 'ngx-form-disabled': control.disabled }\"\n        >\n            <mat-icon\n                [ngClass]=\"{ 'ngx-form-icon': true, 'ngx-form-disabled': control.disabled }\"\n                [fontIcon]=\"control.value === null ? 'today' : 'cancel'\"\n            ></mat-icon>\n        </button>\n    </div>\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxFileSize' })\nexport class NgxFileSizePipe implements PipeTransform {\n    transform(value: number): string {\n        if (!Helper.IS.number(value)) return '';\n\n        return Helper.NUMBER.toFileSize(value);\n    }\n}\n","import { Component, Input } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { INgxFormInputFile } from '../../../inputs';\n\n@Component({\n    selector: 'ngx-input-file',\n    templateUrl: './ngx-input-file.component.html',\n    styleUrls: ['./ngx-input-file.component.scss'],\n})\nexport class NgxInputFileComponent {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!: INgxFormInputFile;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n    @Input({ required: true }) floatLabel!: FloatLabelType;\n\n    public file: File | null = null;\n\n    setFile(event: Event | null): void {\n        if (this.control.disabled) return;\n\n        const files: FileList | null = event === null ? null : (event.target as HTMLInputElement).files;\n        this.file = files && files.length !== 0 ? files.item(0) : null;\n        this.control.setValue(this.file);\n        this.control.markAsTouched();\n    }\n}\n","<mat-form-field [appearance]=\"appearance\" [floatLabel]=\"input.floatLabel || floatLabel\">\n    <!-- LABEL -->\n    <mat-label>{{ input.title }}</mat-label>\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n    <!-- INPUT -->\n    <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"control\" class=\"input-hidden\" />\n    <!-- FILE INPUT -->\n    <input\n        type=\"file\"\n        class=\"input-hidden\"\n        [accept]=\"(input.mimes || ['*']).join(',')\"\n        (change)=\"setFile($event); fileUpload.value = ''\"\n        #fileUpload\n    />\n\n    <div class=\"content\">\n        <div class=\"file\" (click)=\"fileUpload.value = ''; fileUpload.click()\">\n            <div class=\"name ngx-form-en\">{{ file ? file.name : '&nbsp;' }}</div>\n            <div class=\"size\">{{ file ? (file.size | ngxFileSize) : '' }}</div>\n        </div>\n        <button\n            mat-button\n            (click)=\"control.value === null ? fileUpload.click() : setFile(null)\"\n            type=\"button\"\n            [disabled]=\"control.disabled\"\n            [ngClass]=\"{ 'ngx-form-button': true, 'ngx-form-disabled': control.disabled }\"\n        >\n            <mat-icon\n                [ngClass]=\"{ 'ngx-form-icon': true, 'ngx-form-disabled': control.disabled }\"\n                [fontIcon]=\"control.value === null ? 'insert_drive_file' : 'cancel'\"\n            ></mat-icon>\n        </button>\n    </div>\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { INgxFormInputGroup } from '../../../inputs';\n\n@Component({\n    selector: 'ngx-input-group',\n    templateUrl: './ngx-input-group.component.html',\n    styleUrl: './ngx-input-group.component.scss',\n})\nexport class NgxInputGroupComponent implements OnInit {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!: INgxFormInputGroup;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n\n    public columns: string = '';\n    public values: string[] = [];\n\n    ngOnInit(): void {\n        const columns: number = Math.min(this.input.groups.length, this.input.columns || this.input.groups.length);\n        this.columns = [...Array(columns < 1 ? this.input.groups.length : columns)].fill('1fr').join(' ');\n\n        if (this.control.disabled) return;\n        this.values = Array.isArray(this.control.value) ? this.control.value : [this.control.value];\n    }\n\n    setValue(value: string): void {\n        if (this.control.disabled) return;\n        this.control.markAllAsTouched();\n\n        const checked: boolean = this.values.includes(value);\n        this.values = Array.isArray(this.control.value) ? this.control.value : [this.control.value];\n        if (checked) this.values = this.values.filter((v: string) => v !== value);\n        else if (!this.values.includes(value)) this.values.push(value);\n\n        const ids: string[] = this.input.groups.map((g) => g.id);\n        this.values = this.values.filter((v: string) => ids.includes(v));\n\n        this.control.setValue(this.values);\n    }\n}\n","<mat-form-field [appearance]=\"appearance\" [floatLabel]=\"'always'\">\n    <!-- LABEL -->\n    <mat-label>{{ input.title }}</mat-label>\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n    <!-- INPUT -->\n    <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"control\" class=\"input-hidden\" />\n\n    <div\n        [ngStyle]=\"{ 'grid-template-columns': columns }\"\n        [ngClass]=\"{ groups: true, 'ngx-form-disabled': control.disabled }\"\n    >\n        @for (group of input.groups; track $index) {\n        <div class=\"group\" [class.selected]=\"values.includes(group.id)\" (click)=\"setValue(group.id)\">\n            <mat-icon\n                class=\"ngx-form-icon\"\n                [fontIcon]=\"values.includes(group.id) ? 'task_alt' : group.icon || 'radio_button_unchecked'\"\n            ></mat-icon>\n            <div class=\"title\">{{ group.title }}</div>\n        </div>\n        }\n    </div>\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { Component, Input } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { INgxFormInputIcon } from '../../../inputs';\n\n@Component({\n    selector: 'ngx-input-icon',\n    templateUrl: './ngx-input-icon.component.html',\n    styleUrls: ['./ngx-input-icon.component.scss'],\n})\nexport class NgxInputIconComponent {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!: INgxFormInputIcon;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n\n    setValue(icon: string): void {\n        if (this.control.disabled) return;\n\n        this.control.setValue(this.control.value === icon ? null : icon);\n        this.control.markAsTouched();\n    }\n}\n","<mat-form-field [appearance]=\"appearance\" [floatLabel]=\"'always'\">\n    <!-- LABEL -->\n    <mat-label>{{ input.title }}</mat-label>\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n    <!-- INPUT -->\n    <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"control\" class=\"input-hidden\" />\n\n    <div [ngClass]=\"{ icons: true, 'ngx-form-disabled': control.disabled }\">\n        <!-- ICONS -->\n        @for (icon of input.icons; track $index) {\n        <mat-icon\n            [fontIcon]=\"icon\"\n            [ngClass]=\"{ 'ngx-form-icon': true, selected: control.value === icon }\"\n            (click)=\"setValue(icon)\"\n        ></mat-icon>\n        }\n        <div class=\"space\"></div>\n    </div>\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Component({\n    selector: 'ngx-list-option-input',\n    templateUrl: './ngx-list-option-input.component.html',\n    styleUrls: ['./ngx-list-option-input.component.scss'],\n})\nexport class NgxListOptionInputComponent implements OnInit {\n    @Input({ required: true }) format?:\n        | 'BANK-CARD'\n        | 'DOMAIN'\n        | 'EMAIL'\n        | 'IP'\n        | 'MOBILE'\n        | 'NATIONAL-CODE'\n        | 'NUMERIC'\n        | 'URL';\n    @Input({ required: true }) english!: boolean;\n    @Input({ required: true }) disabled!: boolean;\n    @Output() add: EventEmitter<string> = new EventEmitter<string>();\n\n    public mask: string = '';\n    public suffix: string = '';\n    public isValid: boolean = true;\n\n    public inputTransformFn = (value: any): string =>\n        this.format === 'BANK-CARD' ||\n        this.format === 'IP' ||\n        this.format === 'MOBILE' ||\n        this.format === 'NATIONAL-CODE' ||\n        this.format === 'NUMERIC'\n            ? Helper.STRING.changeNumbers(value.toString(), 'EN')\n            : value.toString();\n\n    ngOnInit(): void {\n        switch (this.format) {\n            case 'BANK-CARD':\n                this.mask = '0000-0000-0000-0000';\n                break;\n            case 'MOBILE':\n                this.suffix = '09';\n                this.mask = '00-000-0000';\n                break;\n            case 'NATIONAL-CODE':\n                this.mask = '0000000000';\n                break;\n            case 'NUMERIC':\n                this.mask = '9{100}';\n                break;\n        }\n    }\n\n    checkValid(value: string): string {\n        this.isValid = true;\n        value = value.trim();\n        if (value === '' || !this.format) return value;\n\n        switch (this.format) {\n            case 'BANK-CARD':\n                value = value.replace(/-/gi, '');\n                this.isValid = Helper.IS.STRING.bankCard(value);\n                break;\n\n            case 'DOMAIN':\n                this.isValid = Helper.IS.STRING.domain(value);\n                break;\n\n            case 'EMAIL':\n                this.isValid = Helper.IS.STRING.email(value);\n                break;\n\n            case 'IP':\n                this.isValid = Helper.IS.STRING.ip4(value);\n                break;\n\n            case 'MOBILE':\n                value = '09' + value.replace(/-/gi, '');\n                this.isValid = Helper.IS.STRING.mobile(value);\n                break;\n\n            case 'NATIONAL-CODE':\n                this.isValid = Helper.IS.STRING.nationalCode(value);\n                break;\n\n            case 'NUMERIC':\n                this.isValid = Helper.IS.STRING.numeric(value);\n                break;\n\n            case 'URL':\n                this.isValid = Helper.IS.STRING.url(value);\n                break;\n        }\n\n        return value;\n    }\n\n    checkValue(input: HTMLInputElement): void {\n        if (this.disabled || input.value.trim() === '') return;\n\n        const value: string = this.checkValid(input.value.trim());\n        if (!this.isValid) return;\n\n        this.add.emit(value);\n        input.value = '';\n    }\n}\n","<content [ngClass]=\"{ warn: !isValid }\">\n    <input\n        matInput\n        type=\"text\"\n        [ngClass]=\"{ en: !!english || !!format, 'ngx-form-disabled': !!disabled }\"\n        [disabled]=\"!!disabled\"\n        (input)=\"checkValid(input.value)\"\n        (keydown.enter)=\"$event.preventDefault(); checkValue(input)\"\n        [mask]=\"mask\"\n        [inputTransformFn]=\"inputTransformFn\"\n        #input\n    />\n\n    <!-- SUFFIX -->\n    @if (suffix) {\n    <div class=\"suffix ngx-form-en\">{{ suffix }}</div>\n    }\n\n    <mat-icon\n        [ngClass]=\"{ 'ngx-form-icon': true, 'ngx-form-disabled': !!disabled }\"\n        (click)=\"checkValue(input)\"\n        [fontIcon]=\"'add'\"\n    ></mat-icon>\n</content>\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxBankCard' })\nexport class NgxBankCardPipe implements PipeTransform {\n    transform(value: string): string {\n        if (!Helper.IS.string(value) || !Helper.IS.STRING.bankCard(value)) return '';\n\n        return Helper.STRING.getBankCardView(value);\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxMobile' })\nexport class NgxMobilePipe implements PipeTransform {\n    transform(value: string): string {\n        if (!Helper.IS.string(value) || !Helper.IS.STRING.mobile(value)) return '';\n\n        return Helper.STRING.getMobileView(value);\n    }\n}\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Component({\n    selector: 'ngx-list-option-item',\n    templateUrl: './ngx-list-option-item.component.html',\n    styleUrls: ['./ngx-list-option-item.component.scss'],\n})\nexport class NgxListOptionItemComponent implements OnInit, OnChanges {\n    @Input({ required: true }) index!: number;\n    @Input({ required: true }) item!: string;\n    @Input({ required: true }) format?:\n        | 'BANK-CARD'\n        | 'DOMAIN'\n        | 'EMAIL'\n        | 'IP'\n        | 'MOBILE'\n        | 'NATIONAL-CODE'\n        | 'NUMERIC'\n        | 'URL';\n    @Input({ required: true }) english!: boolean;\n    @Input({ required: true }) disabled!: boolean;\n\n    @Output() update: EventEmitter<string> = new EventEmitter<string>();\n    @Output() delete: EventEmitter<void> = new EventEmitter<void>();\n\n    public status: 'VIEW' | 'UPDATE' | 'DELETE' = 'VIEW';\n\n    public mask: string = '';\n    public suffix: string = '';\n    public isValid: boolean = true;\n\n    public inputTransformFn = (value: any): string =>\n        this.format === 'BANK-CARD' ||\n        this.format === 'IP' ||\n        this.format === 'MOBILE' ||\n        this.format === 'NATIONAL-CODE' ||\n        this.format === 'NUMERIC'\n            ? Helper.STRING.changeNumbers(value.toString(), 'EN')\n            : value.toString();\n\n    ngOnInit(): void {\n        switch (this.format) {\n            case 'BANK-CARD':\n                this.mask = '0000-0000-0000-0000';\n                break;\n            case 'MOBILE':\n                this.suffix = '09';\n                this.mask = '00-000-0000';\n                break;\n            case 'NATIONAL-CODE':\n                this.mask = '0000000000';\n                break;\n            case 'NUMERIC':\n                this.mask = '9{100}';\n                break;\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this.status = this.status === 'DELETE' ? 'VIEW' : this.status;\n    }\n\n    checkValid(value: string): string {\n        this.isValid = true;\n        value = value.trim();\n        if (value === '' || !this.format) return value;\n\n        switch (this.format) {\n            case 'BANK-CARD':\n                value = value.replace(/-/gi, '');\n                this.isValid = Helper.IS.STRING.bankCard(value);\n                break;\n\n            case 'DOMAIN':\n                this.isValid = Helper.IS.STRING.domain(value);\n                break;\n\n            case 'EMAIL':\n                this.isValid = Helper.IS.STRING.email(value);\n                break;\n\n            case 'IP':\n                this.isValid = Helper.IS.STRING.ip4(value);\n                break;\n\n            case 'MOBILE':\n                value = '09' + value.replace(/-/gi, '');\n                this.isValid = Helper.IS.STRING.mobile(value);\n                break;\n\n            case 'NATIONAL-CODE':\n                this.isValid = Helper.IS.STRING.nationalCode(value);\n                break;\n\n            case 'NUMERIC':\n                this.isValid = Helper.IS.STRING.numeric(value);\n                break;\n\n            case 'URL':\n                this.isValid = Helper.IS.STRING.url(value);\n                break;\n        }\n\n        return value;\n    }\n\n    checkValue(input: HTMLInputElement): void {\n        if (this.disabled || input.value.trim() === '') return;\n\n        const value: string = this.checkValid(input.value.trim());\n        if (!this.isValid) return;\n\n        this.update.emit(value);\n        this.status = 'VIEW';\n    }\n}\n","@if (index !== undefined && item !== undefined) {\n<content [ngClass]=\"{ warn: !isValid }\">\n    <!-- VIEW -->\n    @if (status === 'VIEW') {\n    <div [ngClass]=\"{ item: true, 'ngx-form-en': !!english || !!format, 'ngx-form-disabled': !!disabled }\">\n        {{ format === 'BANK-CARD' ? (item | ngxBankCard) : format === 'MOBILE' ? (item | ngxMobile) : item }}\n    </div>\n    <mat-icon\n        [fontIcon]=\"'edit'\"\n        [ngClass]=\"{ 'ngx-form-disabled': !!disabled }\"\n        (click)=\"status = 'UPDATE'\"\n    ></mat-icon>\n    <mat-icon\n        [fontIcon]=\"'delete'\"\n        [ngClass]=\"{ warn: true, 'ngx-form-disabled': !!disabled }\"\n        (click)=\"status = 'DELETE'\"\n    ></mat-icon>\n    }\n\n    <!-- UPDATE -->\n    @if (status === 'UPDATE') {\n    <input\n        matInput\n        type=\"text\"\n        [ngModel]=\"format === 'MOBILE' ? item.substring(2) : item\"\n        [ngClass]=\"{ en: !!english || !!format, 'ngx-form-disabled': !!disabled }\"\n        [ngStyle]=\"{ 'padding-left': suffix ? '0px' : '0.5rem' }\"\n        [disabled]=\"!!disabled\"\n        (input)=\"checkValid(input.value)\"\n        (keydown.enter)=\"$event.preventDefault(); checkValue(input)\"\n        [mask]=\"mask\"\n        [inputTransformFn]=\"inputTransformFn\"\n        autofocus\n        #input\n    />\n\n    <!-- SUFFIX -->\n    @if (suffix) {\n    <div class=\"suffix ngx-form-en\">{{ suffix }}</div>\n    }\n\n    <mat-icon\n        [fontIcon]=\"'check'\"\n        [ngClass]=\"{ warn: true, 'ngx-form-icon': true, 'ngx-form-disabled': !!disabled }\"\n        (click)=\"checkValue(input)\"\n    ></mat-icon>\n    <mat-icon\n        [fontIcon]=\"'close'\"\n        [ngClass]=\"{ 'ngx-form-icon': true, 'ngx-form-disabled': !!disabled }\"\n        (click)=\"status = 'VIEW'\"\n    ></mat-icon>\n    }\n\n    <!-- DELETE -->\n    @if (status === 'DELETE') {\n    <ng-container>\n        <div [ngClass]=\"{ item: true, 'ngx-form-disabled': !!disabled }\">\n            <div class=\"delete\">می‌خواهید این گزینه را حذف کنید؟</div>\n        </div>\n        <mat-icon\n            [fontIcon]=\"'check'\"\n            [ngClass]=\"{ warn: true, 'ngx-form-icon': true, 'ngx-form-disabled': !!disabled }\"\n            (click)=\"delete.emit()\"\n        ></mat-icon>\n        <mat-icon\n            [fontIcon]=\"'close'\"\n            [ngClass]=\"{ 'ngx-form-icon': true, 'ngx-form-disabled': !!disabled }\"\n            (click)=\"status = 'VIEW'\"\n        ></mat-icon>\n    </ng-container>\n    }\n</content>\n}\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { INgxFormInputList } from '../../../inputs';\n\n@Component({\n    selector: 'ngx-input-list',\n    templateUrl: './ngx-input-list.component.html',\n    styleUrls: ['./ngx-input-list.component.scss'],\n})\nexport class NgxInputListComponent implements OnInit {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!: INgxFormInputList;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n    @Input({ required: true }) floatLabel!: FloatLabelType;\n\n    public values: string[] = [];\n\n    ngOnInit(): void {\n        this.control.valueChanges.subscribe({\n            next: () => this.setValues(),\n        });\n        this.setValues();\n    }\n\n    setValues(): void {\n        this.values = Array.isArray(this.control.value) ? this.control.value : [];\n    }\n\n    drop(event: CdkDragDrop<string>): void {\n        if (event.previousIndex === event.currentIndex) return;\n\n        moveItemInArray(this.values, event.previousIndex, event.currentIndex);\n        this.control.setValue([...this.values]);\n        this.control.markAsTouched();\n    }\n\n    addItem(item: string): void {\n        this.values.push(item);\n        this.control.setValue([...this.values]);\n        this.control.markAsTouched();\n    }\n\n    updateItem(index: number, item: string): void {\n        if (!this.values[index]) return;\n\n        this.values[index] = item;\n        this.control.setValue([...this.values]);\n        this.control.markAsTouched();\n    }\n\n    deleteItem(index: number): void {\n        if (!this.values[index]) return;\n\n        this.values.splice(index, 1);\n        this.control.setValue([...this.values]);\n        this.control.markAsTouched();\n    }\n}\n","<mat-form-field [appearance]=\"appearance\" [floatLabel]=\"input.floatLabel || floatLabel\">\n    <!-- LABEL -->\n    <mat-label>{{ input.title + (input.minCount ? ' *' : '') }}</mat-label>\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n    <!-- INPUT -->\n    <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"control\" class=\"input-hidden\" />\n\n    <div class=\"values\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n        <!-- VALUES -->\n        @for (value of values; track $index) {\n        <ngx-list-option-item\n            class=\"value\"\n            [index]=\"$index\"\n            [item]=\"value\"\n            [format]=\"input.format\"\n            [english]=\"!!input.english\"\n            [disabled]=\"!!control.disabled\"\n            (update)=\"updateItem($index, $event)\"\n            (delete)=\"deleteItem($index)\"\n            cdkDrag\n            cdkDragLockAxis=\"y\"\n            cdkDragBoundary=\".values\"\n            [cdkDragDisabled]=\"!input.sort\"\n        ></ngx-list-option-item>\n        }\n    </div>\n    <ngx-list-option-input\n        [format]=\"input.format\"\n        [english]=\"!!input.english\"\n        [disabled]=\"!!control.disabled\"\n        (add)=\"addItem($event)\"\n    ></ngx-list-option-input>\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { INgxFormInputMultiFile } from '../../../inputs';\n\n@Component({\n    selector: 'ngx-input-multi-file',\n    templateUrl: './ngx-input-multi-file.component.html',\n    styleUrls: ['./ngx-input-multi-file.component.scss'],\n})\nexport class NgxInputMultiFileComponent implements OnInit {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!: INgxFormInputMultiFile;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n\n    public files: File[] = [];\n\n    ngOnInit(): void {\n        this.files = Array.isArray(this.control.value) ? this.control.value : [];\n    }\n\n    setFile(event: Event): void {\n        if (this.control.disabled) return;\n\n        const files: FileList | null = event === null ? null : (event.target as HTMLInputElement).files;\n        const file: File | null = files && files.length !== 0 ? files.item(0) : null;\n        if (file === null) return;\n\n        this.files.push(file);\n        this.control.setValue([...this.files]);\n        this.control.markAsTouched();\n    }\n\n    deleteFile(index: number): void {\n        if (this.control.disabled || !this.files[index]) return;\n\n        this.files.splice(index, 1);\n        this.control.setValue([...this.files]);\n        this.control.markAsTouched();\n    }\n}\n","<mat-form-field [appearance]=\"appearance\">\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n    <!-- INPUT -->\n    <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"control\" class=\"input-hidden\" />\n    <!-- FILE INPUT -->\n    <input\n        type=\"file\"\n        class=\"input-hidden\"\n        [accept]=\"(input.mimes || ['*']).join(',')\"\n        (change)=\"setFile($event); fileUpload.value = ''\"\n        #fileUpload\n    />\n\n    <div [ngClass]=\"{ header: true, 'ngx-form-disabled': control.disabled }\">\n        <div class=\"label\">{{ input.title + (input.minCount ? ' *' : '') }}</div>\n        <mat-icon [fontIcon]=\"'note_add'\" (click)=\"fileUpload.click()\"></mat-icon>\n    </div>\n\n    @if (files.length !== 0) {\n    <div [ngClass]=\"{ files: true, 'ngx-form-disabled': control.disabled }\">\n        <!-- FILES -->\n        @for (file of files; track $index) {\n        <div class=\"file\">\n            <mat-icon [fontIcon]=\"'close'\" class=\"delete\" (click)=\"deleteFile($index)\"></mat-icon>\n            <div class=\"name ngx-form-en\">{{ file.name }}</div>\n            <div class=\"size\">{{ file.size | ngxFileSize }}</div>\n        </div>\n        }\n    </div>\n    }\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { AfterViewChecked, AfterViewInit, Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';\nimport { MatSelect } from '@angular/material/select';\n\nimport { INgxFormInputMultiSelect } from '../../../inputs';\nimport { INgxFormOption, INgxFormOptionGroup } from '../../../interfaces';\n\n@Component({\n    selector: 'ngx-input-multi-select',\n    templateUrl: './ngx-input-multi-select.component.html',\n    styleUrls: ['./ngx-input-multi-select.component.scss'],\n})\nexport class NgxInputMultiSelectComponent implements OnInit, AfterViewInit {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!: INgxFormInputMultiSelect;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n    @Input({ required: true }) floatLabel!: FloatLabelType;\n\n    @ViewChild('multiSelectInput') multiSelectInput?: MatSelect;\n\n    public options: INgxFormOption[] = [];\n    public groups: INgxFormOptionGroup[] = [];\n    public groupIndex: number | null = null;\n    public values: string[] = [];\n\n    public multiSelectInputClose: boolean = false;\n\n    ngOnInit(): void {\n        this.options = this.input.options;\n        this.groups = this.input.groups || [];\n\n        if (this.control.disabled) return;\n        this.values = Array.isArray(this.control.value) ? this.control.value : [this.control.value];\n    }\n\n    ngAfterViewInit(): void {\n        if (!this.multiSelectInput || (!this.input.selectButtons && this.groups.length === 0)) return;\n\n        this.multiSelectInput.openedChange.subscribe({\n            next: (open: boolean) => {\n                if (!open || !this.multiSelectInputClose) return;\n\n                this.multiSelectInput?.close();\n                this.multiSelectInputClose = false;\n            },\n        });\n    }\n\n    checkPanel(): void {\n        if (!this.multiSelectInput) return;\n\n        this.multiSelectInputClose = true;\n    }\n\n    selectGroup(index?: number): void {\n        this.groupIndex = index === undefined ? null : index;\n        if (index === undefined || !this.groups[index]) this.options = this.input.options;\n        else this.options = this.input.options.filter((option) => this.groups[index].ids.includes(option.id));\n\n        this.values = [];\n        this.control.setValue([]);\n        this.control.markAsUntouched();\n    }\n\n    selectAll(): void {\n        if (this.control.disabled) return;\n\n        this.values = this.options.map((option) => option.id);\n        this.control.setValue(this.values);\n        this.control.markAllAsTouched();\n    }\n\n    selectNone(): void {\n        if (this.control.disabled) return;\n\n        this.values = [];\n        this.control.setValue(this.values);\n        this.control.markAllAsTouched();\n    }\n\n    setValue(value: string): void {\n        if (this.control.disabled) return;\n        this.control.markAllAsTouched();\n\n        const checked: boolean = this.values.includes(value);\n        this.values = Array.isArray(this.control.value) ? this.control.value : [this.control.value];\n        if (checked) this.values = this.values.filter((v: string) => v !== value);\n        else if (!this.values.includes(value)) this.values.push(value);\n\n        const ids: string[] = this.options.map((o) => o.id);\n        this.values = this.values.filter((v: string) => ids.includes(v));\n\n        this.control.setValue(this.values);\n    }\n\n    getValues(): string {\n        if (this.control.disabled) return '';\n\n        this.values = Array.isArray(this.control.value) ? this.control.value : [this.control.value];\n        const ids: string[] = this.options.map((o) => o.id);\n        this.values = this.values.filter((v: string) => ids.includes(v));\n\n        if (this.values.length > 3) return `${this.values.length} ${this.input.english ? 'Items' : 'گزینه'}`;\n\n        return this.options\n            .filter((option) => this.values.includes(option.id))\n            .map((option) => option.title)\n            .join('، ');\n    }\n}\n","<mat-form-field\n    [appearance]=\"appearance\"\n    [floatLabel]=\"input.view === 'SELECT' ? input.floatLabel || floatLabel : 'always'\"\n>\n    <!-- LABEL  -->\n    @if (groups.length === 0 && !input.selectButtons) {\n    <mat-label>{{ input.title + (input.minCount ? ' *' : '') }}</mat-label>\n    }\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n    <!-- INPUT -->\n    @if (input.view !== 'SELECT') {\n    <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"control\" class=\"input-hidden\" />\n    }\n\n    <!-- HEADER -->\n    @if (groups.length !== 0 || input.selectButtons) {\n    <div class=\"header\">\n        <div class=\"label\">{{ input.title + (input.minCount ? ' *' : '') }}</div>\n\n        <!-- GROUPS MENU -->\n        @if (groups.length !== 0) {\n        <div\n            [ngClass]=\"{ group: true, 'ngx-form-disabled': control.disabled }\"\n            [matMenuTriggerFor]=\"control.disabled ? null : groupMenu\"\n            (click)=\"checkPanel()\"\n        >\n            <div class=\"group-title\">{{ input.groupTitle || 'گروه' }}</div>\n            <button mat-button type=\"button\" color=\"primary\" [disabled]=\"control.disabled\">\n                <mat-icon [fontIcon]=\"'arrow_drop_down'\" class=\"ngx-form-icon\"></mat-icon>\n            </button>\n            <mat-menu #groupMenu=\"matMenu\" class=\"ngx-form-option-menu-panel\">\n                <button mat-menu-item (click)=\"selectGroup()\">\n                    <div class=\"label\">همه موارد</div>\n                    <mat-icon [fontIcon]=\"'check'\" [ngClass]=\"{ hidden: groupIndex !== null }\"></mat-icon>\n                </button>\n                <div class=\"ngx-form-option-menu-seperator\"></div>\n                <!-- GROUPS -->\n                @for (group of groups; track $index) {\n                <button mat-menu-item (click)=\"selectGroup($index)\">\n                    <div class=\"label\">{{ group.title }}</div>\n                    <mat-icon [fontIcon]=\"'check'\" [ngClass]=\"{ hidden: groupIndex !== $index }\"></mat-icon>\n                </button>\n                }\n            </mat-menu>\n        </div>\n        }\n\n        <!-- SELECT BUTTONS -->\n        @if (input.selectButtons) {\n        <div [ngClass]=\"{ 'select-button': true, 'select-button-disabled': control.disabled }\">\n            <button\n                mat-button\n                type=\"button\"\n                color=\"primary\"\n                [disabled]=\"control.disabled\"\n                (click)=\"selectAll(); checkPanel()\"\n            >\n                <mat-icon [fontIcon]=\"'check_box'\" class=\"ngx-form-icon\"></mat-icon>\n                همه\n            </button>\n            <button\n                mat-button\n                type=\"button\"\n                color=\"primary\"\n                [disabled]=\"control.disabled\"\n                (click)=\"selectNone(); checkPanel()\"\n            >\n                <mat-icon [fontIcon]=\"'check_box_outline_blank'\" class=\"ngx-form-icon\"></mat-icon>\n                هیچ\n            </button>\n        </div>\n        }\n    </div>\n    }\n\n    <!-- VIEWS -->\n    @switch (input.view) {\n    <!-- TAG VIEW -->\n    @case ('TAG') {\n    <div [ngClass]=\"{ options: true, 'options-tag': true, 'options-tag-en': !!input.english }\">\n        <!-- OPTIONS -->\n        @for (option of options; track $index) {\n        <div\n            [ngClass]=\"{\n                option: true,\n                'option-selected': values.includes(option.id),\n                'ngx-form-disabled': control.disabled\n            }\"\n            (click)=\"setValue(option.id)\"\n        >\n            {{ option.title }}\n        </div>\n        }\n    </div>\n    }\n\n    <!-- SELECT VIEW -->\n    @case ('SELECT') {\n    <mat-select\n        [formControl]=\"control\"\n        [multiple]=\"true\"\n        [ngClass]=\"{ 'select-en': !!input.english }\"\n        [panelClass]=\"multiSelectInputClose ? 'ngx-select-panel-hidden' : 'ngx-select-panel'\"\n        #multiSelectInput\n    >\n        <mat-select-trigger>{{ getValues() }}</mat-select-trigger>\n        <!-- OPTIONS -->\n        @for (option of options; track $index) {\n        <mat-option [value]=\"option.id\" [ngClass]=\"{ 'ngx-form-en': !!input.english }\">\n            {{ option.title }}\n        </mat-option>\n        }\n    </mat-select>\n    }\n\n    <!-- CHECKBOX VIEW -->\n    @default {\n    <div class=\"options options-checkbox\">\n        <!-- OPTIONS -->\n        @for (option of options; track $index) {\n        <div\n            [ngClass]=\"{ option: true, 'option-en': !!input.english, 'ngx-form-disabled': control.disabled }\"\n            (click)=\"setValue(option.id)\"\n        >\n            <mat-icon\n                [fontIcon]=\"values.includes(option.id) ? 'check_box' : 'check_box_outline_blank'\"\n                class=\"ngx-form-icon\"\n            ></mat-icon>\n            <div class=\"title\">{{ option.title }}</div>\n        </div>\n        }\n    </div>\n    } }\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { INgxFormInputName } from '../../../inputs';\n\n@Component({\n    selector: 'ngx-input-name',\n    templateUrl: './ngx-input-name.component.html',\n    styleUrls: ['./ngx-input-name.component.scss'],\n})\nexport class NgxInputNameComponent implements OnInit {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!: INgxFormInputName;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n\n    public first: string = '';\n    public last: string = '';\n\n    ngOnInit(): void {\n        this.setValues();\n    }\n\n    setValues(): void {\n        const value: { first: string; last: string } | null = this.control.value;\n        this.first = value?.first || '';\n        this.last = value?.last || '';\n    }\n\n    setName(first: string, last: string): void {\n        first = (first || '').trim();\n        last = (last || '').trim();\n\n        this.control.markAsTouched();\n        const value: { first: string; last: string } | null = first !== '' && last !== '' ? { first, last } : null;\n        this.control.setValue(value);\n    }\n}\n","<mat-form-field [appearance]=\"appearance\">\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n    <!-- INPUT -->\n    <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"control\" class=\"input-hidden\" />\n\n    <div class=\"title columns\">\n        <div>نام@if (input.title) { {{ ' ' + input.title }} }{{ !input.optional ? '*' : '' }}</div>\n        <div>نام خانوادگی@if (input.title) { {{ ' ' + input.title }} }{{ !input.optional ? '*' : '' }}</div>\n    </div>\n    <div class=\"input columns\">\n        <input\n            matInput\n            type=\"text\"\n            [name]=\"input.name + '-first'\"\n            [ngModel]=\"first\"\n            [ngClass]=\"{ empty: first === '' && !control.disabled, 'ngx-form-disabled': control.disabled }\"\n            [disabled]=\"control.disabled\"\n            (input)=\"setName(firstName.value, lastName.value)\"\n            [ngxAutoFocus]=\"!!input.autoFocus\"\n            #firstName\n        />\n        <input\n            matInput\n            type=\"text\"\n            [name]=\"input.name + '-last'\"\n            [ngModel]=\"last\"\n            [ngClass]=\"{ empty: last === '' && !control.disabled, 'ngx-form-disabled': control.disabled }\"\n            [disabled]=\"control.disabled\"\n            (input)=\"setName(firstName.value, lastName.value)\"\n            #lastName\n        />\n    </div>\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { INgxFormInputNumber, INgxFormInputPrice } from '../../../inputs';\n\n@Component({\n    selector: 'ngx-input-number',\n    templateUrl: './ngx-input-number.component.html',\n    styleUrls: ['./ngx-input-number.component.scss'],\n})\nexport class NgxInputNumberComponent implements OnInit {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!: INgxFormInputNumber | INgxFormInputPrice;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n    @Input({ required: true }) floatLabel!: FloatLabelType;\n\n    @Input({ required: false }) icon?: string;\n    @Input({ required: false }) suffix?: string;\n    @Input({ required: false }) negative?: boolean;\n    @Input({ required: false }) decimal?: boolean | number;\n    @Input({ required: false }) text?: 'LETTER' | 'HOUR' | 'MINUTE' | 'SECOND';\n    @Input({ required: false }) hideIcon?: boolean;\n\n    public hint?: string = this.input?.hint;\n    public hintLTR?: string;\n    public hintView: 'INPUT' | 'TEXT' = 'INPUT';\n    public isFocused: boolean = false;\n    public maxLength: number = 15;\n\n    public inputTransformFn = (value: any): string => Helper.STRING.changeNumbers(value.toString(), 'EN');\n\n    ngOnInit(): void {\n        if (!this.decimal && !this.negative && this.input.maximum)\n            this.maxLength = Helper.NUMBER.format(this.input.maximum, 'EN').length;\n\n        this.updateHint();\n    }\n\n    setValue(input: string): void {\n        const value: number | null = input.length === 0 ? null : +input.replace(/,/gi, '');\n        this.control.setValue(Helper.IS.number(value) ? value : null);\n        this.control.markAllAsTouched();\n    }\n\n    updateHint(): void {\n        this.hintLTR = undefined;\n        if (this.hintView === 'INPUT' || !this.text) this.hint = this.input.hint;\n        else {\n            const value: number = +(this.control?.value?.toString() || '0').replace(/,/g, '');\n            if (isNaN(value) || value <= 0 || value % 1 !== 0) {\n                this.hint = this.input.hint;\n                return;\n            }\n\n            switch (this.text) {\n                case 'LETTER':\n                    this.hint = Helper.NUMBER.getTitle(value);\n                    break;\n                default:\n                    let seconds: number = value * (this.text === 'HOUR' ? 3600 : this.text === 'MINUTE' ? 60 : 1);\n\n                    const days: number = Math.floor(seconds / (24 * 3600));\n                    seconds -= days * 24 * 3600;\n\n                    const hours: string = Math.floor(seconds / 3600)\n                        .toString()\n                        .padStart(2, '0');\n                    seconds -= +hours * 3600;\n\n                    const minutes: string = Math.floor(seconds / 60)\n                        .toString()\n                        .padStart(2, '0');\n                    seconds -= +minutes * 60;\n\n                    this.hintLTR =\n                        (days ? `(${Helper.NUMBER.format(days)}) ` : '') +\n                        `${hours}:${minutes}:${seconds.toString().padStart(2, '0')}`;\n                    break;\n            }\n        }\n    }\n}\n","<mat-form-field [appearance]=\"appearance\" [floatLabel]=\"isFocused ? 'always' : input.floatLabel || floatLabel\">\n    <!-- LABEL -->\n    <mat-label>{{ input.title }}</mat-label>\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- HINT -->\n    @if (hint) { <mat-hint>{{ hint }}</mat-hint> }\n    <!-- INPUT -->\n    <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"control\" class=\"input-hidden\" />\n    <!-- LTR HINT -->\n    @if (hintLTR) { <mat-hint class=\"ngx-form-hint-ltr\" [align]=\"'end'\" [dir]=\"'ltr'\">{{ hintLTR }}</mat-hint> }\n\n    <div class=\"content\">\n        <input\n            matInput\n            type=\"text\"\n            [name]=\"input.name\"\n            [id]=\"input.id || ''\"\n            [ngModel]=\"control.value?.toString() || ''\"\n            inputmode=\"numeric\"\n            class=\"input-en\"\n            [mask]=\"\n                decimal === true\n                    ? 'separator.3'\n                    : !!decimal && decimal > 0\n                    ? 'separator.' + decimal.toString()\n                    : 'separator.0'\n            \"\n            thousandSeparator=\",\"\n            decimalMarker=\".\"\n            [allowNegativeNumbers]=\"!!negative\"\n            [inputTransformFn]=\"inputTransformFn\"\n            [maxlength]=\"maxLength\"\n            (focus)=\"hintView = 'TEXT'; isFocused = true; updateHint()\"\n            (blur)=\"hintView = 'INPUT'; isFocused = false; updateHint()\"\n            (input)=\"setValue(numberInput.value); updateHint()\"\n            [ngxAutoFocus]=\"!!input.autoFocus\"\n            [disabled]=\"control.disabled\"\n            #numberInput\n            (keypress)=\"input.keyboard && input.keyboard.press !== undefined ? input.keyboard.press($event) : null\"\n            (keydown)=\"input.keyboard && input.keyboard.down !== undefined ? input.keyboard.down($event) : null\"\n            (keyup)=\"input.keyboard && input.keyboard.up !== undefined ? input.keyboard.up($event) : null\"\n        />\n\n        <!-- SUFFIX -->\n        @if (suffix) {\n        <div [ngClass]=\"{ 'suffix-text': true, 'suffix-disabled': control.disabled }\">{{ suffix }}</div>\n        }\n\n        <!-- ICON -->\n        @if (icon && !hideIcon) {\n        <mat-icon\n            [ngClass]=\"{ 'ngx-form-icon': true, 'ngx-form-disabled': control.disabled }\"\n            [fontIcon]=\"icon\"\n        ></mat-icon>\n        }\n    </div>\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { INgxFormInputOptionList } from '../../../inputs';\nimport { INgxFormOption } from '../../../interfaces';\n\n@Component({\n    selector: 'ngx-input-option-list',\n    templateUrl: './ngx-input-option-list.component.html',\n    styleUrls: ['./ngx-input-option-list.component.scss'],\n})\nexport class NgxInputOptionListComponent implements OnInit {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!: INgxFormInputOptionList;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n    @Input({ required: true }) floatLabel!: FloatLabelType;\n\n    public values: INgxFormOption[] = [];\n\n    ngOnInit(): void {\n        this.control.valueChanges.subscribe({\n            next: () => this.setValues(),\n        });\n        this.setValues();\n    }\n\n    setValues(): void {\n        this.values = Array.isArray(this.control.value) ? this.control.value : [];\n    }\n\n    getValues(values: INgxFormOption[]): { id: string | null; title: string }[] {\n        return values.map((value: INgxFormOption) => ({ id: value.id || null, title: value.title }));\n    }\n\n    drop(event: CdkDragDrop<string>): void {\n        if (event.previousIndex === event.currentIndex) return;\n\n        moveItemInArray(this.values, event.previousIndex, event.currentIndex);\n        this.control.setValue(this.getValues(this.values));\n        this.control.markAsTouched();\n    }\n\n    addItem(item: string): void {\n        this.values.push({ id: '', title: item });\n        this.control.setValue(this.getValues(this.values));\n        this.control.markAsTouched();\n    }\n\n    updateItem(index: number, item: string): void {\n        if (!this.values[index]) return;\n\n        this.values[index].title = item;\n        this.control.setValue(this.getValues(this.values));\n        this.control.markAsTouched();\n    }\n\n    deleteItem(index: number): void {\n        if (!this.values[index]) return;\n\n        this.values.splice(index, 1);\n        this.control.setValue(this.getValues(this.values));\n        this.control.markAsTouched();\n    }\n}\n","<mat-form-field [appearance]=\"appearance\" [floatLabel]=\"input.floatLabel || floatLabel\">\n    <!-- LABEL  -->\n    <mat-label>{{ input.title + (input.minCount ? ' *' : '') }}</mat-label>\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n    <!-- INPUT  -->\n    <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"control\" class=\"input-hidden\" />\n\n    <div class=\"values\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n        <!-- VALUES -->\n        @for (value of values; track $index) {\n        <ngx-list-option-item\n            class=\"value\"\n            [index]=\"$index\"\n            [item]=\"value.title\"\n            [format]=\"input.format\"\n            [english]=\"!!input.english\"\n            [disabled]=\"!!control.disabled\"\n            (update)=\"updateItem($index, $event)\"\n            (delete)=\"deleteItem($index)\"\n            cdkDrag\n            cdkDragLockAxis=\"y\"\n            cdkDragBoundary=\".values\"\n            [cdkDragDisabled]=\"!input.sort\"\n        ></ngx-list-option-item>\n        }\n    </div>\n    <ngx-list-option-input\n        [format]=\"input.format\"\n        [english]=\"!!input.english\"\n        [disabled]=\"!!control.disabled\"\n        (add)=\"addItem($event)\"\n    ></ngx-list-option-input>\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { Component, Input } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { INgxFormInputPassword } from '../../../inputs';\n\n@Component({\n    selector: 'ngx-input-password',\n    templateUrl: './ngx-input-password.component.html',\n    styleUrls: ['./ngx-input-password.component.scss'],\n})\nexport class NgxInputPasswordComponent {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!: INgxFormInputPassword;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n    @Input({ required: true }) floatLabel!: FloatLabelType;\n\n    public passwordShow: boolean = false;\n}\n","<mat-form-field [appearance]=\"appearance\" [floatLabel]=\"input.floatLabel || floatLabel\">\n    <!-- LABEL -->\n    <mat-label>{{ input.title }}</mat-label>\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n    <div class=\"content\">\n        <input\n            matInput\n            [type]=\"passwordShow ? 'text' : 'password'\"\n            [name]=\"input.name\"\n            [id]=\"input.id || ''\"\n            [formControl]=\"control\"\n            class=\"input-en\"\n            [ngxAutoFocus]=\"!!input.autoFocus\"\n            (keypress)=\"input.keyboard && input.keyboard.press !== undefined ? input.keyboard.press($event) : null\"\n            (keydown)=\"input.keyboard && input.keyboard.down !== undefined ? input.keyboard.down($event) : null\"\n            (keyup)=\"input.keyboard && input.keyboard.up !== undefined ? input.keyboard.up($event) : null\"\n        />\n        <button\n            mat-button\n            (click)=\"passwordShow = !passwordShow\"\n            type=\"button\"\n            [disabled]=\"control.disabled\"\n            [ngClass]=\"{ 'ngx-form-button': true, 'ngx-form-disabled': control.disabled }\"\n        >\n            <mat-icon\n                [ngClass]=\"{ 'ngx-form-icon': true, 'ngx-form-disabled': control.disabled }\"\n                [fontIcon]=\"passwordShow ? 'visibility_off' : 'visibility'\"\n            ></mat-icon>\n        </button>\n    </div>\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { INgxDate, NgxDateService } from '../../../../ngx-date';\n\nimport { INgxFormInputPeriod } from '../../../inputs';\n\n@Component({\n    selector: 'ngx-input-period',\n    templateUrl: './ngx-input-period.component.html',\n    styleUrls: ['./ngx-input-period.component.scss'],\n})\nexport class NgxInputPeriodComponent implements OnInit {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!: INgxFormInputPeriod;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n\n    public dates: (Date | null)[] = [];\n\n    constructor(private readonly ngxDateService: NgxDateService) {}\n\n    ngOnInit(): void {\n        this.control.valueChanges.subscribe({\n            next: () => this.setValues(),\n        });\n        this.setValues();\n    }\n\n    setValues(): void {\n        this.dates = Array.isArray(this.control.value) ? this.control.value : [null, null];\n    }\n\n    setDate(index: number): void {\n        if (index !== 0 && index !== 1) return;\n\n        const config: INgxDate = {\n            title: this.input.title,\n            value: this.control.value,\n            minDate: this.input.minDate,\n            maxDate: this.input.maxDate,\n        };\n        this.ngxDateService.getDate(config).then(\n            (date: Date) => {\n                this.dates[index] = date;\n                this.control?.setValue([...this.dates]);\n                this.control?.markAsTouched();\n            },\n            () => {},\n        );\n    }\n\n    resetDate(index: number): void {\n        if (index !== 0 && index !== 1) return;\n\n        this.dates[index] = null;\n        this.control.setValue([...this.dates]);\n        this.control.markAsTouched();\n    }\n}\n","<mat-form-field [appearance]=\"appearance\" [floatLabel]=\"'always'\">\n    <!-- LABEL -->\n    <mat-label>{{ input.title }}</mat-label>\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n    <!-- INPUT -->\n    <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"control\" class=\"input-hidden\" />\n\n    <div class=\"dates\">\n        <!-- ITEMS -->\n        @for (title of ['از', 'تا']; track $index) {\n        <!-- SEPERATOR -->\n        @if ($index === 1) {\n        <div class=\"seperator\"></div>\n        }\n        <div class=\"item\">\n            <div [ngClass]=\"{ title: true, 'ngx-form-disabled': control.disabled }\">{{ title }}:</div>\n            <div [ngClass]=\"{ date: true, 'ngx-form-disabled': control.disabled }\" (click)=\"setDate($index)\">\n                {{ dates[$index] ? (dates[$index] || '' | ngxDate : 'd N Y') : '&nbsp;' }}\n            </div>\n            <button\n                mat-button\n                matSuffix\n                (click)=\"control.markAsTouched(); dates[$index] === null ? setDate($index) : resetDate($index)\"\n                type=\"button\"\n                [disabled]=\"control.disabled\"\n                [ngClass]=\"{ 'ngx-form-button': true, 'ngx-form-disabled': control.disabled }\"\n            >\n                <mat-icon class=\"ngx-form-icon\" [fontIcon]=\"dates[$index] === null ? 'today' : 'cancel'\"></mat-icon>\n            </button>\n        </div>\n        }\n    </div>\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { Component, Input } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { INgxFormInputPlate } from '../../../inputs';\n\n@Component({\n    selector: 'ngx-input-plate',\n    templateUrl: './ngx-input-plate.component.html',\n    styleUrls: ['./ngx-input-plate.component.scss'],\n})\nexport class NgxInputPlateComponent {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!: INgxFormInputPlate;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n\n    public letters: string[] = Helper.PLATE.letters;\n\n    public inputTransformFn = (value: any): string => Helper.STRING.changeNumbers(value.toString(), 'EN');\n\n    setPlate(left: string, letter: string, right: string, iran: string): void {\n        this.control.setValue([left, letter, right, iran]);\n        this.control.markAllAsTouched();\n    }\n\n    checkBackspace(event: KeyboardEvent, input: HTMLInputElement, previous: HTMLInputElement): void {\n        if (event.key !== 'Backspace') return;\n\n        const length: number = (input.value || '').length;\n        if (length === 0) previous.focus();\n    }\n\n    onComplete(event: KeyboardEvent): void {\n        if (event.code.substring(0, 5) !== 'Digit' && event.code.substring(0, 6) !== 'Numpad') return;\n\n        const input: HTMLInputElement = event.target as HTMLInputElement;\n        if (!input || input.selectionStart !== 2 || input.selectionEnd !== 2) return;\n\n        if (!this.input.onComplete || !!this.control.errors) return;\n        this.input.onComplete(this.control.value);\n    }\n}\n","<mat-form-field [appearance]=\"appearance\" [floatLabel]=\"'always'\">\n    <!-- LABEL -->\n    <mat-label>{{ input.title }}</mat-label>\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n    <!-- INPUT -->\n    <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"control\" class=\"input-hidden\" />\n\n    <div class=\"plate\">\n        <input\n            matInput\n            type=\"text\"\n            [name]=\"input.name + '-left'\"\n            [ngModel]=\"control.value?.[0] || null\"\n            inputmode=\"numeric\"\n            [ngClass]=\"{ 'input-en': true, 'ngx-form-disabled': control.disabled }\"\n            [mask]=\"'00'\"\n            [inputTransformFn]=\"inputTransformFn\"\n            [disabled]=\"control.disabled\"\n            (blur)=\"setPlate(plateLeft.value, plateLetter.value, plateRight.value, plateIran.value)\"\n            (keyup)=\"setPlate(plateLeft.value, plateLetter.value, plateRight.value, plateIran.value)\"\n            (input)=\"\n                (plateLeft.value || '').length === 2 ? (input.letter ? plateRight.focus() : plateLetter.focus()) : null\n            \"\n            [ngxAutoFocus]=\"!!input.autoFocus\"\n            #plateLeft\n        />\n        <mat-select\n            panelClass=\"ngx-plate-panel\"\n            [ngModel]=\"control.value?.[1] || input.letter || null\"\n            [ngClass]=\"{ 'ngx-form-disabled': control.disabled }\"\n            [disabled]=\"control.disabled\"\n            (valueChange)=\"setPlate(plateLeft.value, plateLetter.value, plateRight.value, plateIran.value)\"\n            #plateLetter\n        >\n            <mat-option [value]=\"null\"></mat-option>\n            <!-- LETTERS -->\n            @for (letter of letters; track $index) {\n            <mat-option [value]=\"letter\">{{ letter === 'ا' ? 'الف' : letter }}</mat-option>\n            }\n        </mat-select>\n        <input\n            matInput\n            type=\"text\"\n            [name]=\"input.name + '-right'\"\n            [ngModel]=\"control.value?.[2] || null\"\n            inputmode=\"numeric\"\n            [ngClass]=\"{ 'input-en': true, 'ngx-form-disabled': control.disabled }\"\n            [mask]=\"'000'\"\n            [inputTransformFn]=\"inputTransformFn\"\n            [disabled]=\"control.disabled\"\n            (blur)=\"setPlate(plateLeft.value, plateLetter.value, plateRight.value, plateIran.value)\"\n            (keyup)=\"\n                setPlate(plateLeft.value, plateLetter.value, plateRight.value, plateIran.value);\n                checkBackspace($event, plateRight, plateLeft)\n            \"\n            (input)=\"(plateRight.value || '').length === 3 ? plateIran.focus() : null\"\n            #plateRight\n        />\n        <input\n            matInput\n            type=\"text\"\n            [name]=\"input.name + '-iran'\"\n            [ngModel]=\"control.value?.[3] || null\"\n            inputmode=\"numeric\"\n            [ngClass]=\"{ 'input-en': true, 'ngx-form-disabled': control.disabled }\"\n            [mask]=\"'00'\"\n            [inputTransformFn]=\"inputTransformFn\"\n            [disabled]=\"control.disabled\"\n            (blur)=\"setPlate(plateLeft.value, plateLetter.value, plateRight.value, plateIran.value)\"\n            (keyup)=\"\n                setPlate(plateLeft.value, plateLetter.value, plateRight.value, plateIran.value);\n                onComplete($event);\n                checkBackspace($event, plateIran, plateRight)\n            \"\n            #plateIran\n        />\n        <div [ngClass]=\"{ iran: true, 'ngx-form-disabled': control.disabled }\">ایران</div>\n    </div>\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { Component, Input } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { INgxFormInputRange } from '../../../inputs';\n\n@Component({\n    selector: 'ngx-input-range',\n    templateUrl: './ngx-input-range.component.html',\n    styleUrls: ['./ngx-input-range.component.scss'],\n})\nexport class NgxInputRangeComponent {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!: INgxFormInputRange;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n\n    public inputTransformFn = (value: any): string => Helper.STRING.changeNumbers(value.toString(), 'EN');\n\n    setRange(min: string, max: string): void {\n        const minimum: number | null = min.length === 0 ? null : +min.replace(/,/gi, '');\n        const maximum: number | null = max.length === 0 ? null : +max.replace(/,/gi, '');\n\n        this.control.setValue([Helper.IS.number(minimum) ? minimum : null, Helper.IS.number(maximum) ? maximum : null]);\n        this.control.markAllAsTouched();\n    }\n}\n","<mat-form-field [appearance]=\"appearance\" [floatLabel]=\"'always'\">\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n    <!-- INPUT -->\n    <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"control\" class=\"input-hidden\" />\n\n    <div class=\"title columns\">\n        <div>حداقل {{ input.title }} {{ !input.optional ? '*' : '' }}</div>\n        <div>حداکثر {{ input.title }} {{ !input.optional ? '*' : '' }}</div>\n    </div>\n    <div class=\"columns\">\n        <input\n            matInput\n            type=\"text\"\n            [name]=\"input.name + '-min'\"\n            [ngModel]=\"control.value?.[0] || null\"\n            inputmode=\"numeric\"\n            [ngClass]=\"{ 'input-en': true, 'ngx-form-disabled': control.disabled }\"\n            [mask]=\"input.decimal ? 'separator.3' : 'separator.0'\"\n            thousandSeparator=\",\"\n            decimalMarker=\".\"\n            [allowNegativeNumbers]=\"!!input.negative\"\n            [inputTransformFn]=\"inputTransformFn\"\n            maxlength=\"15\"\n            [disabled]=\"control.disabled\"\n            (blur)=\"setRange(rangeMinimum.value, rangeMaximum.value)\"\n            (keyup)=\"setRange(rangeMinimum.value, rangeMaximum.value)\"\n            [ngxAutoFocus]=\"!!input.autoFocus\"\n            #rangeMinimum\n        />\n        <input\n            matInput\n            type=\"text\"\n            [name]=\"input.name + '-max'\"\n            [ngModel]=\"control.value?.[1] || null\"\n            inputmode=\"numeric\"\n            [ngClass]=\"{ 'input-en': true, 'ngx-form-disabled': control.disabled }\"\n            [mask]=\"input.decimal ? 'separator.3' : 'separator.0'\"\n            thousandSeparator=\",\"\n            decimalMarker=\".\"\n            [allowNegativeNumbers]=\"!!input.negative\"\n            [inputTransformFn]=\"inputTransformFn\"\n            maxlength=\"15\"\n            [disabled]=\"control.disabled\"\n            (blur)=\"setRange(rangeMinimum.value, rangeMaximum.value)\"\n            (keyup)=\"setRange(rangeMinimum.value, rangeMaximum.value)\"\n            #rangeMaximum\n        />\n    </div>\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { AfterViewInit, Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { INgxFormInputSelect } from '../../../inputs';\nimport { INgxFormOption, INgxFormOptionGroup } from '../../../interfaces';\nimport { MatSelect } from '@angular/material/select';\n\n@Component({\n    selector: 'ngx-input-select',\n    templateUrl: './ngx-input-select.component.html',\n    styleUrls: ['./ngx-input-select.component.scss'],\n})\nexport class NgxInputSelectComponent implements OnInit, AfterViewInit {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!: INgxFormInputSelect;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n    @Input({ required: true }) floatLabel!: FloatLabelType;\n\n    @ViewChild('multiSelectInput') multiSelectInput?: MatSelect;\n\n    public options: INgxFormOption[] = [];\n    public groups: INgxFormOptionGroup[] = [];\n    public groupIndex: number | null = null;\n\n    public multiSelectInputClose: boolean = false;\n    public query: string = '';\n\n    ngOnInit(): void {\n        this.options = this.input.options;\n        this.groups = this.input.groups || [];\n    }\n\n    ngAfterViewInit(): void {\n        if (!this.multiSelectInput || this.groups.length === 0) return;\n\n        this.multiSelectInput.openedChange.subscribe({\n            next: (open: boolean) => {\n                if (!open || !this.multiSelectInputClose) return;\n\n                this.multiSelectInput?.close();\n                this.multiSelectInputClose = false;\n            },\n        });\n    }\n\n    checkPanel(): void {\n        if (!this.multiSelectInput) return;\n\n        this.multiSelectInputClose = true;\n    }\n\n    selectGroup(index?: number): void {\n        this.groupIndex = index === undefined ? null : index;\n        if (index === undefined || !this.groups[index]) this.options = this.input.options;\n        else this.options = this.input.options.filter((option) => this.groups[index].ids.includes(option.id));\n\n        const options: string[] = this.options.map((option) => option.id);\n        this.control.setValue(options.includes(this.control.value) ? this.control.value : null);\n        this.control.markAsUntouched();\n    }\n}\n","<mat-form-field [appearance]=\"appearance\" [floatLabel]=\"input.floatLabel || floatLabel\">\n    <!-- LABEL -->\n    @if (groups.length === 0) { <mat-label>{{ input.title }}</mat-label> }\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n    <!-- HEADER -->\n    @if (groups.length !== 0) {\n    <div class=\"header\">\n        <div class=\"label\">{{ input.title + (!input.optional ? ' *' : '') }}</div>\n        <div\n            [ngClass]=\"{ group: true, 'ngx-form-disabled': control.disabled }\"\n            [matMenuTriggerFor]=\"control.disabled ? null : groupMenu\"\n            (click)=\"checkPanel()\"\n        >\n            <div class=\"group-title\">{{ input.groupTitle || 'گروه' }}</div>\n            <button mat-button type=\"button\" color=\"primary\" [disabled]=\"control.disabled\">\n                <mat-icon [fontIcon]=\"'arrow_drop_down'\" class=\"ngx-form-icon\"></mat-icon>\n            </button>\n            <mat-menu #groupMenu=\"matMenu\" class=\"ngx-form-option-menu-panel\">\n                <button mat-menu-item (click)=\"selectGroup()\">\n                    <div class=\"label\">همه موارد</div>\n                    <mat-icon [fontIcon]=\"'check'\" [ngClass]=\"{ hidden: groupIndex !== null }\"></mat-icon>\n                </button>\n                <div class=\"ngx-form-option-menu-seperator\"></div>\n                <!-- GROUPS -->\n                @for (group of groups; track $index) {\n                <button mat-menu-item (click)=\"selectGroup($index)\">\n                    <div class=\"label\">{{ group.title }}</div>\n                    <mat-icon [fontIcon]=\"'check'\" [ngClass]=\"{ hidden: groupIndex !== $index }\"></mat-icon>\n                </button>\n                }\n            </mat-menu>\n        </div>\n    </div>\n    }\n\n    <mat-select\n        [formControl]=\"control\"\n        [ngClass]=\"{ 'select-en': !!input.english }\"\n        [panelClass]=\"multiSelectInputClose ? 'ngx-select-panel-hidden' : 'ngx-select-panel'\"\n        (openedChange)=\"query = ''; searchInput.value = ''; searchInput.focus()\"\n        #multiSelectInput\n    >\n        <input\n            type=\"text\"\n            [ngClass]=\"{ 'ngx-select-search': true, 'ngx-form-en': !!input.english }\"\n            [ngStyle]=\"{ display: options.length > 10 ? 'block' : 'none' }\"\n            (input)=\"query = searchInput.value || ''\"\n            placeholder=\"جستجو\"\n            #searchInput\n        />\n\n        <!-- OPTIONAL -->\n        @if (!!input.optional) { <mat-option [value]=\"null\"></mat-option> }\n\n        <!-- OPTIONS -->\n        @for (option of options; track $index) {\n        <!-- OPTION -->\n        @if (option.title.toLowerCase().indexOf(query.toLowerCase()) !== -1) {\n        <mat-option [value]=\"option.id\" [ngClass]=\"{ 'ngx-form-en': !!input.english }\">\n            {{ option.title }}\n        </mat-option>\n        } }\n    </mat-select>\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { FormControl } from '@angular/forms';\nimport { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { INgxFormInputTag } from '../../../inputs';\n\n@Component({\n    selector: 'ngx-input-tag',\n    templateUrl: './ngx-input-tag.component.html',\n    styleUrls: ['./ngx-input-tag.component.scss'],\n})\nexport class NgxInputTagComponent implements OnInit {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!: INgxFormInputTag;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n    @Input({ required: true }) floatLabel!: FloatLabelType;\n\n    public tags: string[] = [];\n\n    ngOnInit(): void {\n        this.input.tags = this.input.tags.sort((t1: string, t2: string) => t1.localeCompare(t2));\n        this.control.valueChanges.subscribe({\n            next: () => this.setValues(),\n        });\n        this.setValues();\n    }\n\n    setValues(): void {\n        this.tags = Array.isArray(this.control.value) ? this.control.value : [];\n    }\n\n    filter(value: string): string[] {\n        if (this.input.tags.length === 0) return [];\n\n        value = value.toLowerCase();\n        return this.input.tags\n            .filter((tag) => !this.tags.includes(tag))\n            .filter((tag) => tag.toLowerCase().includes(value));\n    }\n\n    addTag(event: any, input: HTMLInputElement): void {\n        const tag: string = (event.value || '').trim();\n        if (this.control.disabled || tag === '' || this.tags.includes(tag)) return;\n\n        this.tags.push(tag);\n        this.control.setValue([...this.tags]);\n        this.control.markAsTouched();\n\n        input.value = '';\n    }\n\n    selectTag(event: any, input: HTMLInputElement): void {\n        const tag: string = (event as MatAutocompleteSelectedEvent).option.viewValue.trim();\n        if (this.control.disabled || tag === '' || this.tags.includes(tag)) return;\n\n        this.tags.push(tag);\n        this.control.setValue([...this.tags]);\n        this.control.markAsTouched();\n\n        input.value = '';\n    }\n\n    deleteTag(index: number): void {\n        if (!this.tags[index]) return;\n\n        this.tags.splice(index, 1);\n        this.control.setValue([...this.tags]);\n        this.control.markAsTouched();\n    }\n}\n","<mat-form-field [appearance]=\"appearance\" [floatLabel]=\"input.floatLabel || floatLabel\">\n    <!-- LABEL -->\n    <mat-label>{{ input.title + (input.minCount ? ' *' : '') }}</mat-label>\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n    <!-- INPUT -->\n    <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"control\" class=\"input-hidden\" />\n\n    <mat-chip-grid #tagChipList>\n        <div class=\"tags\">\n            <!-- VALUES -->\n            @for (tag of tags; track $index) {\n            <div [ngClass]=\"{ tag: true, 'ngx-form-disabled': control.disabled }\" (click)=\"deleteTag($index)\">\n                <div class=\"value\">{{ tag }}</div>\n                <mat-icon class=\"ngx-form-icon\" [fontIcon]=\"'close'\"></mat-icon>\n            </div>\n            }\n\n            <input\n                placeholder=\"تگ ...\"\n                [name]=\"input.name\"\n                [matAutocomplete]=\"ngxAutoComplete\"\n                [matChipInputFor]=\"tagChipList\"\n                [matChipInputSeparatorKeyCodes]=\"[13, 190]\"\n                (matChipInputTokenEnd)=\"addTag($event, tagInput)\"\n                [disabled]=\"control.disabled\"\n                #tagInput\n            />\n        </div>\n    </mat-chip-grid>\n    <mat-autocomplete #ngxAutoComplete=\"matAutocomplete\" (optionSelected)=\"selectTag($event, tagInput)\">\n        <!-- TAGS -->\n        @for (tag of filter(tagInput.value); track $index) { <mat-option [value]=\"tag\">{{ tag }}</mat-option> }\n    </mat-autocomplete>\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport {\n    INgxFormInputDomain,\n    INgxFormInputEmail,\n    INgxFormInputIp,\n    INgxFormInputMask,\n    INgxFormInputMobile,\n    INgxFormInputNationalCode,\n    INgxFormInputNumeric,\n    INgxFormInputText,\n    INgxFormInputUrl,\n    INgxFormInputUsername,\n} from '../../../inputs';\n\n@Component({\n    selector: 'ngx-input-text',\n    templateUrl: './ngx-input-text.component.html',\n    styleUrls: ['./ngx-input-text.component.scss'],\n})\nexport class NgxInputTextComponent implements OnInit {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!:\n        | INgxFormInputDomain\n        | INgxFormInputEmail\n        | INgxFormInputIp\n        | INgxFormInputMask\n        | INgxFormInputMobile\n        | INgxFormInputNationalCode\n        | INgxFormInputNumeric\n        | INgxFormInputText\n        | INgxFormInputUrl\n        | INgxFormInputUsername;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n    @Input({ required: true }) floatLabel!: FloatLabelType;\n\n    @Input({ required: false }) icon?: string;\n    @Input({ required: false }) en: boolean = false;\n    @Input({ required: false }) numeric?: boolean;\n    @Input({ required: false }) mask?: string;\n    @Input({ required: false }) suffix?: string | { en: string };\n    @Input({ required: false }) maxLength?: number;\n    @Input({ required: false }) counter?: boolean;\n\n    public suffixText?: string;\n    public suffixLang?: 'EN' | 'FA';\n\n    public inputTransformFn = (value: any): string =>\n        this.input.type === 'IP' ||\n        this.input.type === 'MOBILE' ||\n        this.input.type === 'NATIONAL-CODE' ||\n        this.input.type === 'NUMERIC'\n            ? Helper.STRING.changeNumbers(value.toString(), 'EN')\n            : value.toString();\n\n    ngOnInit(): void {\n        if (!this.suffix) return;\n\n        this.suffixText = typeof this.suffix === 'string' ? this.suffix : this.suffix.en;\n        this.suffixLang = typeof this.suffix === 'string' ? 'FA' : 'EN';\n    }\n}\n","<mat-form-field [appearance]=\"appearance\" [floatLabel]=\"input.floatLabel || floatLabel\">\n    <!-- LABEL -->\n    <mat-label>{{ input.title }}</mat-label>\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n    <!-- COUNTER -->\n    @if (counter) {\n    <mat-hint [align]=\"'end'\">\n        {{ control.value?.length || 0 | number }}{{ maxLength ? ' از ' + (maxLength | number) : '' }}\n    </mat-hint>\n    }\n\n    <div class=\"content\">\n        <input\n            matInput\n            type=\"text\"\n            [name]=\"input.name\"\n            [id]=\"input.id || ''\"\n            [formControl]=\"control\"\n            [inputMode]=\"numeric ? 'numeric' : 'text'\"\n            [maxLength]=\"maxLength || 524288\"\n            [ngClass]=\"{ 'input-en': en }\"\n            [mask]=\"mask || ''\"\n            [inputTransformFn]=\"inputTransformFn\"\n            [ngxAutoFocus]=\"!!input.autoFocus\"\n            (keypress)=\"input.keyboard && input.keyboard.press !== undefined ? input.keyboard.press($event) : null\"\n            (keydown)=\"input.keyboard && input.keyboard.down !== undefined ? input.keyboard.down($event) : null\"\n            (keyup)=\"input.keyboard && input.keyboard.up !== undefined ? input.keyboard.up($event) : null\"\n        />\n\n        <!-- SUFFIX -->\n        @if (suffixText) {\n        <div [ngClass]=\"{ 'suffix-text': true, 'suffix-en': suffixLang === 'EN', 'suffix-disabled': control.disabled }\">\n            {{ suffixText }}\n        </div>\n        }\n\n        <!-- ICON -->\n        @if (icon) {\n        <mat-icon\n            [fontIcon]=\"icon\"\n            [ngClass]=\"{ 'ngx-form-icon': true, 'ngx-form-disabled': control.disabled }\"\n        ></mat-icon>\n        }\n    </div>\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\n\n@Directive({ selector: '[ngxAutoHeight]' })\nexport class NgxAutoHeightDirective {\n    @Input({ required: true }) public ngxAutoHeight!: boolean;\n    @Input({ required: true }) public minHeight!: number;\n\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.ngxAutoHeight !== 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 { Component, Input } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { INgxFormInputTextarea } from '../../../inputs';\n\n@Component({\n    selector: 'ngx-input-textarea',\n    templateUrl: './ngx-input-textarea.component.html',\n    styleUrls: ['./ngx-input-textarea.component.scss'],\n})\nexport class NgxInputTextareaComponent {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!: INgxFormInputTextarea;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n    @Input({ required: true }) floatLabel!: FloatLabelType;\n}\n","<mat-form-field [appearance]=\"appearance\" [floatLabel]=\"input.floatLabel || floatLabel\">\n    <!-- LABEL -->\n    <mat-label>{{ input.title }}</mat-label>\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n    <!-- COUNTER -->\n    @if (input.counter) {\n    <mat-hint [align]=\"'end'\">\n        {{ control.value?.length || 0 | number }}{{ input.maxLength ? ' از ' + (input.maxLength | number) : '' }}\n    </mat-hint>\n    }\n\n    <textarea\n        matInput\n        [name]=\"input.name\"\n        [id]=\"input.id || ''\"\n        [formControl]=\"control\"\n        [ngxAutoHeight]=\"!!input.autoHeight\"\n        [minHeight]=\"input.height || 75\"\n        [maxHeight]=\"input.maxHeight || 0\"\n        [ngClass]=\"{ 'input-en': !!input.english }\"\n        [ngStyle]=\"{ height: (input.height ? input.height.toString() : '75') + 'px', resize: 'none' }\"\n        [ngxAutoFocus]=\"!!input.autoFocus\"\n        (keypress)=\"input.keyboard && input.keyboard.press !== undefined ? input.keyboard.press($event) : null\"\n        (keydown)=\"input.keyboard && input.keyboard.down !== undefined ? input.keyboard.down($event) : null\"\n        (keyup)=\"input.keyboard && input.keyboard.up !== undefined ? input.keyboard.up($event) : null\"\n    ></textarea>\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { INgxFormInputTime } from '../../../inputs';\n\n@Component({\n    selector: 'ngx-input-time',\n    templateUrl: './ngx-input-time.component.html',\n    styleUrls: ['./ngx-input-time.component.scss'],\n})\nexport class NgxInputTimeComponent implements OnInit {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!: INgxFormInputTime;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n\n    public hour: string | null = null;\n    public minute: string = '00';\n    public second: string = '00';\n\n    ngOnInit(): void {\n        if (!this.control.value) return;\n\n        const [hour, minute, second] = this.control.value.split(':');\n        this.hour = hour;\n        this.minute = minute;\n        this.second = second;\n    }\n\n    setTime(hour: string | null, minute: string, second: string): void {\n        this.hour = hour;\n        this.minute = minute;\n        this.second = second;\n\n        this.control.setValue(hour === null ? null : `${hour}:${minute}:${this.input.second ? second : '00'}`);\n        this.control.markAllAsTouched();\n    }\n}\n","<mat-form-field [appearance]=\"appearance\" [floatLabel]=\"'always'\">\n    <!-- LABEL -->\n    <mat-label>{{ input.title }}</mat-label>\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n    <!-- INPUT -->\n    <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"control\" class=\"input-hidden\" />\n\n    <div class=\"time\">\n        <mat-icon\n            [ngClass]=\"{ 'ngx-form-icon': true, 'ngx-form-disabled': control.disabled }\"\n            [fontIcon]=\"'alarm'\"\n        ></mat-icon>\n        <div class=\"seperator\"></div>\n\n        <mat-select\n            panelClass=\"ngx-time-panel\"\n            [ngModel]=\"hour\"\n            [ngClass]=\"{ 'select-en': true, 'ngx-form-disabled': control.disabled }\"\n            [disabled]=\"control.disabled\"\n            (valueChange)=\"setTime(timeHour.value, timeMinute.value, timeSecond.value)\"\n            #timeHour\n        >\n            <mat-option [value]=\"null\"></mat-option>\n            <!-- HOURS -->\n            @for (item of [].constructor(24); track $index) {\n            <mat-option [value]=\"$index.toString().padStart(2, '0')\" class=\"ngx-form-en\">\n                {{ $index.toString().padStart(2, '0') }}\n            </mat-option>\n            }\n        </mat-select>\n        <div class=\"colon\">:</div>\n        <mat-select\n            panelClass=\"ngx-time-panel\"\n            [ngModel]=\"minute\"\n            [ngClass]=\"{ 'select-en': true, 'ngx-form-disabled': control.disabled || hour === null }\"\n            [disabled]=\"control.disabled || hour === null\"\n            (valueChange)=\"setTime(timeHour.value, timeMinute.value, timeSecond.value)\"\n            #timeMinute\n        >\n            <!-- MINUTES -->\n            @for (item of [].constructor(60); track $index) {\n            <mat-option [value]=\"$index.toString().padStart(2, '0')\" class=\"ngx-form-en\">\n                {{ $index.toString().padStart(2, '0') }}\n            </mat-option>\n            }\n        </mat-select>\n        <div class=\"colon\">:</div>\n        <mat-select\n            panelClass=\"ngx-time-panel\"\n            [ngModel]=\"second\"\n            [ngClass]=\"{ 'select-en': true, 'ngx-form-disabled': control.disabled || hour === null || !input.second }\"\n            [disabled]=\"control.disabled || hour === null || !input.second\"\n            (valueChange)=\"setTime(timeHour.value, timeMinute.value, timeSecond.value)\"\n            #timeSecond\n        >\n            <!-- SECONDS -->\n            @for (item of [].constructor(60); track $index) {\n            <mat-option [value]=\"$index.toString().padStart(2, '0')\" class=\"ngx-form-en\">\n                {{ $index.toString().padStart(2, '0') }}\n            </mat-option>\n            }\n        </mat-select>\n    </div>\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport {\n    INgxFormInputUnitArea,\n    INgxFormInputUnitLength,\n    INgxFormInputUnitVolume,\n    INgxFormInputUnitWeight,\n} from '../../../inputs';\n\n@Component({\n    selector: 'ngx-input-unit',\n    templateUrl: './ngx-input-unit.component.html',\n    styleUrl: './ngx-input-unit.component.scss',\n})\nexport class NgxInputUnitComponent implements OnInit {\n    @Input({ required: true }) control!: FormControl;\n    @Input({ required: true }) input!:\n        | INgxFormInputUnitArea\n        | INgxFormInputUnitLength\n        | INgxFormInputUnitVolume\n        | INgxFormInputUnitWeight;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n    @Input({ required: true }) floatLabel!: FloatLabelType;\n\n    @Input({ required: true }) options!: { id: string; title: string }[];\n    @Input({ required: false }) negative: boolean = false;\n\n    public unit: string = '';\n    public title: string = '';\n\n    public inputTransformFn = (value: any): string => Helper.STRING.changeNumbers(value.toString(), 'EN');\n\n    ngOnInit(): void {\n        const value: { unit: string; value: number } | null = this.control.value;\n        let index: number = this.options.findIndex((o) => o.id === value?.unit);\n        if (index === -1) index = this.options.findIndex((o) => o.id === this.input.unit);\n\n        this.unit = this.options[index === -1 ? 0 : index].id;\n        this.title = this.options[index === -1 ? 0 : index].title;\n    }\n\n    setUnit(unit: string, input: string): void {\n        const index: number = this.options.findIndex((o) => o.id === unit);\n        if (index === -1) return;\n\n        this.unit = this.options[index].id;\n        this.title = this.options[index].title;\n        this.setValue(input);\n    }\n\n    setValue(input: string): void {\n        const value: number | null = input.length === 0 ? null : +input.replace(/,/gi, '');\n\n        this.control.setValue(Helper.IS.number(value) ? { unit: this.unit, value } : null);\n        this.control.markAllAsTouched();\n    }\n\n    updateHint(): void {}\n}\n","<mat-form-field [appearance]=\"appearance\" [floatLabel]=\"input.floatLabel || floatLabel\">\n    <!-- LABEL -->\n    <mat-label>{{ input.title }}</mat-label>\n    <!-- ERROR  -->\n    @if (control.invalid) { <mat-error>{{ control.errors | ngxError : input.type }}</mat-error> }\n    <!-- INPUT -->\n    <input matInput type=\"text\" [name]=\"input.name\" [formControl]=\"control\" class=\"input-hidden\" />\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n    <div class=\"content\">\n        <input\n            matInput\n            type=\"text\"\n            [name]=\"input.name\"\n            [id]=\"input.id || ''\"\n            [ngModel]=\"control.value?.value?.toString() || ''\"\n            inputmode=\"numeric\"\n            class=\"input-en\"\n            [mask]=\"\n                input.decimal === true\n                    ? 'separator.3'\n                    : !!input.decimal && input.decimal > 0\n                    ? 'separator.' + input.decimal.toString()\n                    : 'separator.0'\n            \"\n            thousandSeparator=\",\"\n            decimalMarker=\".\"\n            [allowNegativeNumbers]=\"!!negative\"\n            [inputTransformFn]=\"inputTransformFn\"\n            [maxlength]=\"15\"\n            (input)=\"setValue(unitInput.value); updateHint()\"\n            [ngxAutoFocus]=\"!!input.autoFocus\"\n            [disabled]=\"control.disabled\"\n            #unitInput\n            (keypress)=\"input.keyboard && input.keyboard.press !== undefined ? input.keyboard.press($event) : null\"\n            (keydown)=\"input.keyboard && input.keyboard.down !== undefined ? input.keyboard.down($event) : null\"\n            (keyup)=\"input.keyboard && input.keyboard.up !== undefined ? input.keyboard.up($event) : null\"\n        />\n\n        <div\n            [ngClass]=\"{ unit: true, 'ngx-form-disabled': control.disabled }\"\n            [matMenuTriggerFor]=\"control.disabled ? null : unitMenu\"\n        >\n            <div [ngClass]=\"{ 'suffix-text': true, 'suffix-disabled': control.disabled }\">{{ title }}</div>\n            <button mat-button type=\"button\" color=\"primary\" [disabled]=\"control.disabled\">\n                <mat-icon [fontIcon]=\"'arrow_drop_down'\" class=\"ngx-form-icon\"></mat-icon>\n            </button>\n            <mat-menu #unitMenu=\"matMenu\" class=\"ngx-form-option-menu-panel\" [xPosition]=\"'before'\">\n                @for (option of options; track $index) {\n                <button mat-menu-item (click)=\"setUnit(option.id, unitInput.value)\">\n                    <div class=\"label\">{{ option.title }}</div>\n                    <mat-icon [fontIcon]=\"'check'\" [ngClass]=\"{ hidden: unit !== option.id }\"></mat-icon>\n                </button>\n                }\n            </mat-menu>\n        </div>\n    </div>\n\n    <!-- DESCRIPTION -->\n    @if (input.description) {\n    <ngx-description [description]=\"input.description\" [disabled]=\"control.disabled\"></ngx-description>\n    }\n</mat-form-field>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFormInputs } from '../../ngx-form.type';\n\n@Component({\n    selector: 'ngx-input',\n    templateUrl: './ngx-input.component.html',\n    styleUrls: ['./ngx-input.component.scss'],\n})\nexport class NgxInputComponent implements OnInit {\n    @Input({ required: true }) group!: FormGroup;\n    @Input({ required: true }) input!: NgxFormInputs;\n    @Input({ required: true }) appearance!: MatFormFieldAppearance;\n    @Input({ required: true }) floatLabel!: FloatLabelType;\n\n    public control?: FormControl;\n\n    public unit = Helper.UNIT;\n\n    ngOnInit(): void {\n        if (this.input.type === 'COMMENT') return;\n        this.control = this.group.get(this.input.name) as FormControl;\n    }\n}\n","@if (input && (input.type === 'COMMENT' || control)) {\n\n<!-- COMMENT -->\n@if (input.type === 'COMMENT') {\n<mat-form-field [appearance]=\"appearance\" [floatLabel]=\"input.floatLabel || floatLabel\">\n    <!-- LABEL -->\n    <mat-label>{{ input.title }}</mat-label>\n    <!-- HINT -->\n    @if (input.hint) { <mat-hint>{{ input.hint }}</mat-hint> }\n\n    <input matInput type=\"text\" [ngModel]=\"input.value\" [ngClass]=\"{ 'input-en': input.english }\" [readonly]=\"true\" />\n\n    <!-- DESCRIPTION -->\n    @if (input.description) { <ngx-description [description]=\"input.description\" [disabled]=\"false\"></ngx-description> }\n</mat-form-field>\n}\n\n<!-- CONTROLS -->\n@if (control) {\n\n<!-- CONTROL -->\n@switch (input.type) {\n\n<!-- AUTO COMPLETE -->\n@case ('AUTO-COMPLETE') {\n<ngx-input-auto-complete\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n></ngx-input-auto-complete>\n}\n\n<!-- BANK CARD -->\n@case ('BANK-CARD') {\n<ngx-input-bank-card\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n></ngx-input-bank-card>\n}\n\n<!-- CHECKBOX -->\n@case ('CHECKBOX') {\n<ngx-input-checkbox [control]=\"control\" [input]=\"input\" [appearance]=\"appearance\"></ngx-input-checkbox>\n}\n\n<!-- COLOR -->\n@case ('COLOR') {\n<ngx-input-color [control]=\"control\" [input]=\"input\" [appearance]=\"appearance\"></ngx-input-color>\n}\n\n<!-- COORDINATES -->\n@case ('COORDINATES') {\n<ngx-input-coordinates\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n></ngx-input-coordinates>\n}\n\n<!-- DATE -->\n@case ('DATE') {\n<ngx-input-date\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n></ngx-input-date>\n}\n\n<!-- DOMAIN -->\n@case ('DOMAIN') {\n<ngx-input-text\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n    [icon]=\"'http'\"\n    [en]=\"true\"\n></ngx-input-text>\n}\n\n<!-- EMAIL -->\n@case ('EMAIL') {\n<ngx-input-text\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n    [icon]=\"'alternate_email'\"\n    [en]=\"true\"\n></ngx-input-text>\n}\n\n<!-- FILE -->\n@case ('FILE') {\n<ngx-input-file\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n></ngx-input-file>\n}\n\n<!-- GROUP -->\n@case ('GROUP') {\n<ngx-input-group [control]=\"control\" [input]=\"input\" [appearance]=\"appearance\"></ngx-input-group>\n}\n\n<!-- IP -->\n@case ('IP') {\n<ngx-input-text\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n    [icon]=\"'language'\"\n    [en]=\"true\"\n></ngx-input-text>\n}\n\n<!-- ICON -->\n@case ('ICON') {\n<ngx-input-icon [control]=\"control\" [input]=\"input\" [appearance]=\"appearance\"></ngx-input-icon>\n}\n\n<!-- LIST -->\n@case ('LIST') {\n<ngx-input-list\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n></ngx-input-list>\n}\n\n<!-- MASK -->\n@case ('MASK') {\n<ngx-input-text\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n    [icon]=\"input.icon || 'password'\"\n    [en]=\"true\"\n    [numeric]=\"true\"\n    [mask]=\"input.mask\"\n></ngx-input-text>\n}\n\n<!-- MOBILE -->\n@case ('MOBILE') {\n<ngx-input-text\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n    [icon]=\"'smartphone'\"\n    [en]=\"true\"\n    [numeric]=\"true\"\n    [mask]=\"'00-000-0000'\"\n    [suffix]=\"{ en: '09' }\"\n></ngx-input-text>\n}\n\n<!-- MULTI-FILE -->\n@case ('MULTI-FILE') {\n<ngx-input-multi-file [control]=\"control\" [input]=\"input\" [appearance]=\"appearance\"></ngx-input-multi-file>\n}\n\n<!-- MULTI-SELECT -->\n@case ('MULTI-SELECT') {\n<ngx-input-multi-select\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n></ngx-input-multi-select>\n}\n\n<!-- NAME -->\n@case ('NAME') {\n<ngx-input-name [control]=\"control\" [input]=\"input\" [appearance]=\"appearance\"></ngx-input-name>\n}\n\n<!-- NATIONAL CODE -->\n@case ('NATIONAL-CODE') {\n<ngx-input-text\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n    [icon]=\"'badge'\"\n    [en]=\"true\"\n    [numeric]=\"true\"\n    [mask]=\"'0000000000'\"\n></ngx-input-text>\n}\n\n<!-- NUMBER -->\n@case ('NUMBER') {\n<ngx-input-number\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n    [suffix]=\"input.suffix\"\n    [icon]=\"'numbers'\"\n    [negative]=\"input.negative\"\n    [decimal]=\"input.decimal\"\n    [text]=\"input.text\"\n    [hideIcon]=\"input.hideIcon\"\n></ngx-input-number>\n}\n\n<!-- NUMERIC -->\n@case ('NUMERIC') {\n<ngx-input-text\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n    [icon]=\"'tag'\"\n    [en]=\"true\"\n    [numeric]=\"true\"\n    [mask]=\"'9*'\"\n    [maxLength]=\"input.maxLength\"\n></ngx-input-text>\n}\n\n<!-- OPTION LIST -->\n@case ( 'OPTION-LIST') {\n<ngx-input-option-list\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n></ngx-input-option-list>\n}\n\n<!-- PASSWORD -->\n@case ('PASSWORD') {\n<ngx-input-password\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n></ngx-input-password>\n}\n\n<!-- PERIOD -->\n@case ('PERIOD') {\n<ngx-input-period [control]=\"control\" [input]=\"input\" [appearance]=\"appearance\"></ngx-input-period>\n}\n\n<!-- PLATE -->\n@case ('PLATE') {\n<ngx-input-plate [control]=\"control\" [input]=\"input\" [appearance]=\"appearance\"></ngx-input-plate>\n}\n\n<!-- PRICE -->\n@case ('PRICE') {\n<ngx-input-number\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n    [suffix]=\"input.currency\"\n    [negative]=\"false\"\n    [decimal]=\"false\"\n    [text]=\"input.showText ? 'LETTER' : undefined\"\n></ngx-input-number>\n}\n\n<!-- RANGE -->\n@case ('RANGE') {\n<ngx-input-range [control]=\"control\" [input]=\"input\" [appearance]=\"appearance\"></ngx-input-range>\n}\n\n<!-- SELECT -->\n@case ('SELECT') {\n<ngx-input-select\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n></ngx-input-select>\n}\n\n<!-- TAG -->\n@case ('TAG') {\n<ngx-input-tag [control]=\"control\" [input]=\"input\" [appearance]=\"appearance\" [floatLabel]=\"floatLabel\"></ngx-input-tag>\n}\n\n<!-- TEXT -->\n@case ('TEXT') {\n<ngx-input-text\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n    [en]=\"!!input.english\"\n    [suffix]=\"input.suffix\"\n    [maxLength]=\"input.maxLength\"\n    [counter]=\"input.counter\"\n></ngx-input-text>\n}\n\n<!-- TEXTAREA -->\n@case ('TEXTAREA') {\n<ngx-input-textarea\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n></ngx-input-textarea>\n}\n\n<!-- TIME -->\n@case ('TIME') {\n<ngx-input-time [control]=\"control\" [input]=\"input\" [appearance]=\"appearance\"></ngx-input-time>\n}\n\n<!-- URL -->\n@case ('URL') {\n<ngx-input-text\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n    [icon]=\"'link'\"\n    [en]=\"true\"\n></ngx-input-text>\n}\n\n<!-- USERNAME -->\n@case ('USERNAME') {\n<ngx-input-text\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n    [icon]=\"'person'\"\n    [en]=\"true\"\n></ngx-input-text>\n}\n\n<!-- UNIT-AREA -->\n@case ('UNIT-AREA') {\n<ngx-input-unit\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n    [options]=\"unit.AREA.options\"\n></ngx-input-unit>\n}\n\n<!-- UNIT-LENGTH -->\n@case ('UNIT-LENGTH') {\n<ngx-input-unit\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n    [options]=\"unit.LENGTH.options\"\n></ngx-input-unit>\n}\n\n<!-- UNIT-VOLUME -->\n@case ('UNIT-VOLUME') {\n<ngx-input-unit\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n    [options]=\"unit.VOLUME.options\"\n></ngx-input-unit>\n}\n\n<!-- UNIT-WEIGHT -->\n@case ('UNIT-WEIGHT') {\n<ngx-input-unit\n    [control]=\"control\"\n    [input]=\"input\"\n    [appearance]=\"appearance\"\n    [floatLabel]=\"floatLabel\"\n    [options]=\"unit.WEIGHT.options\"\n></ngx-input-unit>\n}} } }\n","import {\n    Component,\n    EventEmitter,\n    Inject,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    SimpleChanges,\n    ViewChild,\n} from '@angular/core';\nimport { FormGroup, NgForm, ValidatorFn, Validators } from '@angular/forms';\nimport { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxFieldInputInfo } from './interfaces';\n\nimport { INgxForm, INgxFormValues, NgxFormRow } from './ngx-form.interface';\nimport { NgxFormService } from './ngx-form.service';\nimport { NgxFormInputs } from './ngx-form.type';\n\n@Component({\n    selector: 'ngx-form',\n    templateUrl: './ngx-form.component.html',\n    styleUrls: ['./ngx-form.scss', './ngx-form.component.scss'],\n})\nexport class NgxFormComponent implements OnInit, OnChanges {\n    @ViewChild('formObject') ngForm?: NgForm;\n\n    @Input({ required: true }) ngxForm!: INgxForm;\n    @Output() protected ngxSubmit: EventEmitter<INgxFormValues> = new EventEmitter<INgxFormValues>();\n    @Output() protected ngxChange: EventEmitter<INgxFormValues> = new EventEmitter<INgxFormValues>();\n\n    public formGroup: FormGroup = new FormGroup({});\n    protected appearance: MatFormFieldAppearance = this.ngxAppearance;\n    protected floatLabel: FloatLabelType = 'auto';\n    protected rows: (string | { input: NgxFormInputs; flex: number }[])[] = [];\n    protected inputValues: INgxFormValues = {};\n    protected hiddenInputs: string[] = [];\n    protected disabledButtons: string[] = [];\n    protected lastSubmit?: Date;\n\n    protected isString = (value: any): boolean => typeof value === 'string';\n\n    constructor(\n        @Inject('NGX_FORM_APPEARANCE') public readonly ngxAppearance: MatFormFieldAppearance,\n        @Inject('NGX_FORM_SUBMITTIMEOUT') public readonly submitTimeout: number | null,\n        private readonly ngxFormService: NgxFormService,\n    ) {}\n\n    ngOnInit(): void {\n        this.formGroup = new FormGroup({});\n        this.getInputs().forEach((input: NgxFormInputs) => this.setInput(input));\n\n        // Check autoFocus\n        let autoFocus: boolean = false;\n        this.getInputs().forEach((input: NgxFormInputs) => {\n            if (!('autoFocus' in input) || !input.autoFocus) return;\n\n            if (autoFocus || input.disableOn || input.hideOn) input.autoFocus = false;\n            else autoFocus = true;\n        });\n\n        // Default floatLabel\n        this.floatLabel = this.ngxForm.floatLabel || 'auto';\n\n        this.formGroup.valueChanges.subscribe({\n            next: () => {\n                let check: boolean = false;\n                [...Object.keys(this.inputValues), ...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.inputValues[key]) check = true;\n                    });\n                if (!check) return;\n\n                this.inputValues = { ...this.formGroup.value };\n\n                const inputs: NgxFormInputs[] = this.getInputs();\n                const values: INgxFormValues = this.getValues();\n                this.ngxFormService.checkAvailability(this.formGroup, inputs, values);\n                this.hiddenInputs = this.ngxFormService.checkVisibility(this.formGroup, inputs, values);\n                this.disabledButtons = this.ngxFormService.checkButtons(inputs, values);\n\n                this.ngxChange.emit(values);\n            },\n        });\n\n        const inputs: NgxFormInputs[] = this.getInputs();\n        const values: INgxFormValues = this.getValues();\n        this.ngxFormService.checkAvailability(this.formGroup, inputs, values);\n        this.hiddenInputs = this.ngxFormService.checkVisibility(this.formGroup, inputs, values);\n        this.disabledButtons = this.ngxFormService.checkButtons(inputs, values);\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this.rows = [];\n        this.ngxForm.inputs.forEach((row: string | NgxFormRow) =>\n            this.rows.push(\n                typeof row === 'string'\n                    ? row\n                    : Array.isArray(row)\n                    ? row.map((r) => ('input' in r && 'flex' in r ? r : { input: r, flex: 1 }))\n                    : 'inputs' in row && 'flex' in row\n                    ? row.inputs.map((input, index: number) => ({\n                          input,\n                          flex: Helper.IS.number(row.flex[index]) && row.flex[index] > 0 ? row.flex[index] : 1,\n                      }))\n                    : [{ input: row, flex: 1 }],\n            ),\n        );\n    }\n\n    private setInput(input: NgxFormInputs): void {\n        const validators: ValidatorFn[] =\n            input.type === 'COMMENT' ||\n            input.type === 'CHECKBOX' ||\n            input.type === 'GROUP' ||\n            input.type === 'LIST' ||\n            input.type === 'MULTI-FILE' ||\n            input.type === 'MULTI-SELECT' ||\n            input.type === 'OPTION-LIST' ||\n            input.type === 'TAG' ||\n            input.optional\n                ? []\n                : [Validators.required];\n\n        const name: string = input.type === 'COMMENT' ? '' : input.name;\n        this.formGroup.setControl(name, NgxFieldInputInfo[input.type].methods.control(input, validators));\n    }\n\n    private getInputs(): NgxFormInputs[] {\n        const inputs: NgxFormInputs[] = [];\n        this.ngxForm.inputs.forEach((row: string | NgxFormRow) => {\n            if (typeof row === 'string') return;\n            inputs.push(\n                ...(Array.isArray(row)\n                    ? row.map((r) => ('input' in r && 'flex' in r ? r.input : r))\n                    : 'inputs' in row && 'flex' in row\n                    ? row.inputs\n                    : [row]),\n            );\n        });\n\n        return inputs;\n    }\n\n    protected getValues = (): INgxFormValues =>\n        this.ngxFormService.getValues(this.formGroup, this.getInputs(), this.hiddenInputs);\n\n    protected checkValues = (): void => {\n        const timeout: number = this.submitTimeout && this.submitTimeout > 0 ? this.submitTimeout : 0;\n        this.lastSubmit = this.ngxFormService.checkValues(\n            this.formGroup,\n            this.getInputs(),\n            this.hiddenInputs,\n            this.ngxSubmit,\n            { timeout, last: this.lastSubmit },\n        );\n    };\n}\n","<form class=\"ngxForm\" [formGroup]=\"formGroup\" (ngSubmit)=\"checkValues()\" dir=\"rtl\" #formObject=\"ngForm\">\n    @for (row of rows; track $index) {\n    <!-- ROWS -->\n    @if (isString(row)) {\n    <!-- STRING (SECTION) -->\n    <div class=\"ngx-form-section\">{{ row }}</div>\n    } @else {\n    <!-- INPUTS -->\n    <div class=\"columns\">\n        <!-- INPUTS -->\n        @for (input of row; track $index) {\n        <!-- INPUT -->\n        @if ($any(input).input.type === 'COMMENT' || !hiddenInputs.includes($any(input).input.name)) {\n        <div class=\"ngx-form-field-input\" [ngStyle]=\"{ flex: $any(input).flex }\">\n            <ngx-input\n                [group]=\"formGroup\"\n                [input]=\"$any(input).input\"\n                [appearance]=\"ngxForm.appearance || appearance\"\n                [floatLabel]=\"floatLabel\"\n            ></ngx-input>\n\n            <!-- BUTTON -->\n            @if ($any(input).input.button) {\n            <button\n                mat-stroked-button\n                type=\"button\"\n                [color]=\"$any(input).input.button.color || 'primary'\"\n                (click)=\"$any(input).input.button.click(getValues())\"\n                [ngClass]=\"{ disabled: disabledButtons.includes($any(input).input.name) }\"\n                [disabled]=\"disabledButtons.includes($any(input).input.name)\"\n            >\n                <mat-icon [fontIcon]=\"$any(input).input.button.icon\"></mat-icon>\n            </button>\n            }\n        </div>\n        } }\n    </div>\n    } }\n\n    <ng-content></ng-content>\n\n    <div class=\"buttons\">\n        <button mat-flat-button type=\"submit\" color=\"primary\">{{ ngxForm.submit }}</button>\n        <!-- EXTRA BUTTONS -->\n        @for (button of ngxForm.buttons; track $index) {\n        <button mat-stroked-button type=\"button\" color=\"primary\" (click)=\"button.action(getValues())\">\n            {{ button.title }}\n        </button>\n        }\n    </div>\n</form>\n","import {\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    HostBinding,\n    HostListener,\n    Inject,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    SimpleChanges,\n    ViewChild,\n} from '@angular/core';\nimport { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-field';\nimport { FormGroup, NgForm } from '@angular/forms';\n\nimport { INgxFormValues, INgxResponsiveForm, INgxResponsiveFormSection } from '../ngx-form.interface';\nimport { NgxFormService } from '../ngx-form.service';\nimport { NgxFormInputs } from '../ngx-form.type';\n\ninterface ISection {\n    title?: string;\n    description?: string;\n    columns: { title?: string; description?: string; inputs: NgxFormInputs[]; flex: number }[];\n}\n\n@Component({\n    selector: 'ngx-form-responsive',\n    templateUrl: './ngx-form-responsive.component.html',\n    styleUrls: ['../ngx-form.scss', './ngx-form-responsive.component.scss'],\n})\nexport class NgxFormResponsiveComponent implements OnInit, OnChanges {\n    @HostListener('window:resize', ['$event'])\n    onResize(event: any) {\n        this.setSize();\n    }\n\n    @HostBinding('style.--column-gap') styleColumnGap: string = '2rem';\n\n    @ViewChild('formObject') ngForm?: NgForm;\n\n    @Input({ required: true }) ngxForm!: INgxResponsiveForm;\n    @Output() protected ngxSubmit: EventEmitter<INgxFormValues> = new EventEmitter<INgxFormValues>();\n    @Output() protected ngxChange: EventEmitter<INgxFormValues> = new EventEmitter<INgxFormValues>();\n    @Output() protected viewChange: EventEmitter<'DESKTOP' | 'MOBILE'> = new EventEmitter<'DESKTOP' | 'MOBILE'>();\n\n    public formGroup: FormGroup = new FormGroup({});\n    protected appearance: MatFormFieldAppearance = this.ngxAppearance;\n    protected floatLabel: FloatLabelType = 'auto';\n    protected sections: ISection[] = [];\n    protected inputValues: INgxFormValues = {};\n    protected hiddenInputs: string[] = [];\n    protected disabledButtons: string[] = [];\n    protected lastSubmit?: Date;\n\n    protected initialized: boolean = false;\n    protected size: { width: number; height: number; isMobile: boolean } = { width: 0, height: 0, isMobile: false };\n\n    constructor(\n        @Inject('NGX_FORM_APPEARANCE') public readonly ngxAppearance: MatFormFieldAppearance,\n        @Inject('NGX_FORM_SUBMITTIMEOUT') public readonly submitTimeout: number | null,\n        @Inject('NGX_FORM_MOBILEWIDTH') public readonly mobileWidth: number,\n        @Inject('NGX_FORM_COLUMNGAP') public readonly columnGap: string,\n        private readonly changeDetectorRef: ChangeDetectorRef,\n        private readonly ngxFormService: NgxFormService,\n    ) {}\n\n    ngOnInit(): void {\n        this.formGroup = new FormGroup({});\n        this.getInputs().forEach((input: NgxFormInputs) => this.ngxFormService.setInput(this.formGroup, input));\n\n        // Check autoFocus\n        let autoFocus: boolean = false;\n        this.getInputs().forEach((input: NgxFormInputs) => {\n            if (!('autoFocus' in input) || !input.autoFocus) return;\n\n            if (autoFocus || input.disableOn || input.hideOn) input.autoFocus = false;\n            else autoFocus = true;\n        });\n\n        // Default floatLabel\n        this.floatLabel = this.ngxForm.floatLabel || 'auto';\n\n        this.formGroup.valueChanges.subscribe({\n            next: () => {\n                let check: boolean = false;\n                [...Object.keys(this.inputValues), ...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.inputValues[key]) check = true;\n                    });\n                if (!check) return;\n\n                this.inputValues = { ...this.formGroup.value };\n\n                const inputs: NgxFormInputs[] = this.getInputs();\n                const values: INgxFormValues = this.getValues();\n                this.ngxFormService.checkAvailability(this.formGroup, inputs, values);\n                this.hiddenInputs = this.ngxFormService.checkVisibility(this.formGroup, inputs, values);\n                this.disabledButtons = this.ngxFormService.checkButtons(inputs, values);\n\n                this.ngxChange.emit(values);\n            },\n        });\n\n        const inputs: NgxFormInputs[] = this.getInputs();\n        const values: INgxFormValues = this.getValues();\n        this.ngxFormService.checkAvailability(this.formGroup, inputs, values);\n        this.hiddenInputs = this.ngxFormService.checkVisibility(this.formGroup, inputs, values);\n        this.disabledButtons = this.ngxFormService.checkButtons(inputs, values);\n\n        setTimeout(() => {\n            this.setSize();\n            this.initialized = true;\n        }, 0);\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this.styleColumnGap = this.ngxForm.columnGap || this.columnGap || '2rem';\n\n        this.sections = [];\n        this.ngxForm.sections.forEach((section: INgxResponsiveFormSection) => {\n            if (section.columns.length === 0) return;\n\n            this.sections.push({ title: section.title, description: section.description, columns: [] });\n            if ('inputs' in section.columns[0])\n                section.columns.forEach((column) => {\n                    if ('inputs' in column)\n                        this.sections[this.sections.length - 1].columns.push({\n                            title: column.title,\n                            description: column.description,\n                            inputs: column.inputs,\n                            flex: column.flex || 1,\n                        });\n                });\n            else\n                this.sections[this.sections.length - 1].columns.push({\n                    inputs: section.columns as NgxFormInputs[],\n                    flex: 1,\n                });\n        });\n    }\n\n    private setSize(): void {\n        const omitEmit: boolean = this.size.width === 0 && this.size.height === 0;\n        const isMobile: boolean = this.size.isMobile;\n\n        const mobileWidth: number = this.ngxForm.mobileWidth || this.mobileWidth || 600;\n        this.size = {\n            width: window.innerWidth,\n            height: window.innerHeight,\n            isMobile: window.innerWidth <= mobileWidth,\n        };\n\n        if (!omitEmit || isMobile !== this.size.isMobile) {\n            this.viewChange.emit(this.size.isMobile ? 'MOBILE' : 'DESKTOP');\n            this.changeDetectorRef.detectChanges();\n        }\n    }\n\n    protected showSection(section: { title?: string; columns: { inputs: NgxFormInputs[]; flex: number }[] }): boolean {\n        for (let c = 0; c < section.columns.length; c++) {\n            for (let i = 0; i < section.columns[c].inputs.length; i++) {\n                const input = section.columns[c].inputs[i];\n\n                if (input.type === 'COMMENT') return true;\n                if (!this.hiddenInputs.includes(input.name)) return true;\n            }\n        }\n\n        return false;\n    }\n\n    protected showColumn(inputs: NgxFormInputs[]): boolean {\n        for (let i = 0; i < inputs.length; i++) {\n            const input = inputs[i];\n\n            if (input.type === 'COMMENT') return true;\n            if (!this.hiddenInputs.includes(input.name)) return true;\n        }\n\n        return false;\n    }\n\n    private getInputs(): NgxFormInputs[] {\n        const inputs: NgxFormInputs[] = [];\n        this.ngxForm.sections.forEach((section: INgxResponsiveFormSection) => {\n            if (section.columns.length === 0) return;\n\n            section.columns.forEach((column) => {\n                if ('inputs' in column) inputs.push(...column.inputs);\n                else inputs.push(column);\n            });\n        });\n\n        return inputs;\n    }\n\n    protected getValues = (): INgxFormValues =>\n        this.ngxFormService.getValues(this.formGroup, this.getInputs(), this.hiddenInputs);\n\n    protected checkValues = (): void => {\n        const timeout: number = this.submitTimeout && this.submitTimeout > 0 ? this.submitTimeout : 0;\n        this.lastSubmit = this.ngxFormService.checkValues(\n            this.formGroup,\n            this.getInputs(),\n            this.hiddenInputs,\n            this.ngxSubmit,\n            { timeout, last: this.lastSubmit },\n        );\n    };\n}\n","@if (initialized) {\n<form class=\"ngxForm\" [formGroup]=\"formGroup\" (ngSubmit)=\"checkValues()\" dir=\"rtl\" #formObject=\"ngForm\">\n    @for (section of sections; track $index) {\n    <!-- SHOW SECTION -->\n    @if (showSection(section)) {\n    <div class=\"ngx-form-responsive\">\n        <!-- HEADER -->\n        @if (section.title || section.description) {\n        <div class=\"ngx-form-responsive-header\">\n            <!-- TITLE -->\n            @if (section.title ) {\n            <div class=\"ngx-form-responsive-title\">{{ section.title }}</div>\n            }\n            <!-- SEPERATOR -->\n            @if (section.title && section.description) {\n            <div class=\"ngx-form-responsive-seperator\"></div>\n            }\n            <!-- DESCRIPTION -->\n            @if (section.description ) {\n            <div class=\"ngx-form-responsive-description\">{{ section.description }}</div>\n            }\n        </div>\n        }\n\n        <!-- COLUMNS -->\n        <div class=\"ngx-form-responsive-columns\" [class.ngx-form-responsive-mobile]=\"size.isMobile\">\n            @for (column of section.columns; track $index) {\n\n            <!-- SHOW COLUMN -->\n            @if (showColumn(column.inputs)) {\n            <div class=\"ngx-form-responsive-column\" [ngStyle]=\"{ flex: column.flex }\">\n                <!-- HEADER -->\n                @if (column.title || column.description) {\n                <div class=\"ngx-form-responsive-header\" style=\"margin-bottom: 0\">\n                    <!-- TITLE -->\n                    @if (column.title ) {\n                    <div class=\"ngx-form-responsive-title\">{{ column.title }}</div>\n                    }\n                    <!-- SEPERATOR -->\n                    @if (column.title && column.description) {\n                    <div class=\"ngx-form-responsive-seperator\"></div>\n                    }\n                    <!-- DESCRIPTION -->\n                    @if (column.description ) {\n                    <div class=\"ngx-form-responsive-description\">{{ column.description }}</div>\n                    }\n                </div>\n                }\n\n                <!-- INPUTS -->\n                @for (input of column.inputs; track $index) {\n\n                <!-- INPUT -->\n                @if ($any(input).type === 'COMMENT' || !hiddenInputs.includes($any(input).name)) {\n                <div class=\"ngx-form-responsive-input\">\n                    <ngx-input\n                        [group]=\"formGroup\"\n                        [input]=\"$any(input)\"\n                        [appearance]=\"ngxForm.appearance || appearance\"\n                        [floatLabel]=\"floatLabel\"\n                    ></ngx-input>\n\n                    <!-- BUTTON -->\n                    @if ($any(input).button) {\n                    <button\n                        mat-stroked-button\n                        type=\"button\"\n                        [color]=\"$any(input).button.color || 'primary'\"\n                        (click)=\"$any(input).button.click(getValues())\"\n                        [ngClass]=\"{ disabled: disabledButtons.includes($any(input).name) }\"\n                        [disabled]=\"disabledButtons.includes($any(input).name)\"\n                    >\n                        <mat-icon [fontIcon]=\"$any(input).button.icon\"></mat-icon>\n                    </button>\n                    }\n                </div>\n                } }\n            </div>\n            } }\n        </div>\n    </div>\n    } }\n\n    <ng-content></ng-content>\n\n    <div class=\"buttons\" [class.buttons-mobile]=\"size.isMobile\">\n        <button mat-flat-button type=\"submit\" color=\"primary\">{{ ngxForm.submit }}</button>\n        <!-- EXTRA BUTTONS -->\n        @for (button of ngxForm.buttons; track $index) {\n        <button mat-stroked-button type=\"button\" color=\"primary\" (click)=\"button.action(getValues())\">\n            {{ button.title }}\n        </button>\n        }\n    </div>\n</form>\n}\n","import { NgModule } from '@angular/core';\n\nimport { NgxAutocompleteDirective } from './ngx-autocomplete.directive';\nimport { NgxAutoFocusDirective } from './ngx-autofocus.directive';\nimport { NgxAutoHeightDirective } from './ngx-autoheight.directive';\nimport { NgxErrorDirective } from './ngx-error.directive';\n\n@NgModule({\n    declarations: [NgxAutocompleteDirective, NgxAutoFocusDirective, NgxAutoHeightDirective, NgxErrorDirective],\n    exports: [NgxAutocompleteDirective, NgxAutoFocusDirective, NgxAutoHeightDirective, NgxErrorDirective],\n})\nexport class NgxDirectiveModule {}\n","import { NgModule } from '@angular/core';\n\nimport { NgxBankCardPipe } from './ngx-bank-card.pipe';\nimport { NgxDatePipe } from './ngx-date.pipe';\nimport { NgxErrorPipe } from './ngx-error.pipe';\nimport { NgxFileSizePipe } from './ngx-file-size.pipe';\nimport { NgxMobilePipe } from './ngx-mobile.pipe';\nimport { NgxMultiLinePipe } from './ngx-multi-line.pipe';\n\n@NgModule({\n    declarations: [NgxBankCardPipe, NgxDatePipe, NgxErrorPipe, NgxFileSizePipe, NgxMobilePipe, NgxMultiLinePipe],\n    exports: [NgxBankCardPipe, NgxDatePipe, NgxErrorPipe, NgxFileSizePipe, NgxMobilePipe, NgxMultiLinePipe],\n})\nexport class NgxPipeModule {}\n","import { CommonModule, DecimalPipe } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\n\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\n\nimport { NgxCoordinatesModule } from '../ngx-coordinates';\nimport { NgxDateModule } from '../ngx-date';\nimport { NgxDirectiveModule } from '../ngx-directive';\nimport { NgxPipeModule } from '../ngx-pipe';\n\nimport {\n    NgxDescriptionComponent,\n    NgxInputAutoCompleteComponent,\n    NgxInputBankCardComponent,\n    NgxInputCheckboxComponent,\n    NgxInputColorComponent,\n    NgxInputComponent,\n    NgxInputCoordinatesComponent,\n    NgxInputDateComponent,\n    NgxInputFileComponent,\n    NgxInputGroupComponent,\n    NgxInputIconComponent,\n    NgxInputListComponent,\n    NgxInputMultiFileComponent,\n    NgxInputMultiSelectComponent,\n    NgxInputNameComponent,\n    NgxInputNumberComponent,\n    NgxInputOptionListComponent,\n    NgxInputPasswordComponent,\n    NgxInputPeriodComponent,\n    NgxInputPlateComponent,\n    NgxInputRangeComponent,\n    NgxInputSelectComponent,\n    NgxInputTagComponent,\n    NgxInputTextareaComponent,\n    NgxInputTextComponent,\n    NgxInputTimeComponent,\n    NgxInputUnitComponent,\n    NgxListOptionInputComponent,\n    NgxListOptionItemComponent,\n} from './components';\nimport { INgxFormConfig, INgxFormStyle } from './interfaces';\n\nimport { NgxFormComponent } from './ngx-form.component';\nimport { NgxFormResponsiveComponent } from './responsive/ngx-form-responsive.component';\nimport { NgxFormService } from './ngx-form.service';\n\n@NgModule({\n    declarations: [\n        NgxFormComponent,\n        NgxFormResponsiveComponent,\n\n        NgxDescriptionComponent,\n        NgxListOptionInputComponent,\n        NgxListOptionItemComponent,\n\n        NgxInputComponent,\n        NgxInputAutoCompleteComponent,\n        NgxInputBankCardComponent,\n        NgxInputCheckboxComponent,\n        NgxInputColorComponent,\n        NgxInputCoordinatesComponent,\n        NgxInputDateComponent,\n        NgxInputFileComponent,\n        NgxInputGroupComponent,\n        NgxInputIconComponent,\n        NgxInputListComponent,\n        NgxInputMultiFileComponent,\n        NgxInputMultiSelectComponent,\n        NgxInputNameComponent,\n        NgxInputNumberComponent,\n        NgxInputOptionListComponent,\n        NgxInputPasswordComponent,\n        NgxInputPeriodComponent,\n        NgxInputPlateComponent,\n        NgxInputRangeComponent,\n        NgxInputSelectComponent,\n        NgxInputTagComponent,\n        NgxInputTextComponent,\n        NgxInputTextareaComponent,\n        NgxInputTimeComponent,\n        NgxInputUnitComponent,\n    ],\n    imports: [\n        CommonModule,\n        FormsModule,\n        ReactiveFormsModule,\n        DragDropModule,\n        NgxMaskDirective,\n\n        MatFormFieldModule,\n        MatInputModule,\n        MatIconModule,\n        MatButtonModule,\n        MatAutocompleteModule,\n        MatSelectModule,\n        MatCheckboxModule,\n        MatChipsModule,\n        MatMenuModule,\n        MatSlideToggleModule,\n\n        NgxCoordinatesModule,\n        NgxDateModule,\n        NgxDirectiveModule,\n        NgxPipeModule,\n    ],\n    providers: [DecimalPipe, provideNgxMask({}), NgxFormService],\n    exports: [NgxFormComponent, NgxFormResponsiveComponent],\n})\nexport class NgxFormModule {\n    static forRoot(): ModuleWithProviders<NgxFormModule>;\n    static forRoot(config: Partial<INgxFormConfig>): ModuleWithProviders<NgxFormModule>;\n    static forRoot(style: Partial<INgxFormStyle>): ModuleWithProviders<NgxFormModule>;\n    static forRoot(config: Partial<INgxFormConfig>, style: Partial<INgxFormStyle>): ModuleWithProviders<NgxFormModule>;\n    static forRoot(arg1?: any, arg2?: any): ModuleWithProviders<NgxFormModule> {\n        const config: Partial<INgxFormConfig> = arg1 && 'appearance' in arg1 ? arg1 : {};\n\n        const style: Partial<INgxFormStyle> =\n            arg1 && !('appearance' in arg1) ? arg1 : arg2 && !('appearance' in arg2) ? arg2 : {};\n\n        const root: string =\n            ':root {' +\n            `--ngxFormFaFont:${style.faFont || 'Yekan'};` +\n            `--ngxFormEnFont:${style.enFont || \"Roboto, 'Helvetica Neue', sans-serif\"};` +\n            `--ngxFormIconFont:${style.iconFont || 'Material Icons Outlined'};` +\n            `--ngxFormIconSize:${style.iconSize || '16px'};` +\n            `--ngxFormPrimaryColor:${style.primaryColor || 'rgb(29, 91, 116)'};` +\n            `--ngxFormWarnColor:${style.warnColor || 'rgb(255, 49, 27)'};` +\n            `--ngxFormBorderColor:${style.borderColor || 'rgb(187, 206, 213)'};` +\n            `--ngxFormBackgroundColor:${style.backgroundColor || 'rgb(232, 239, 241)'};` +\n            `--ngxFormLabelColor:${style.labelColor || 'rgba(0, 0, 0, 0.6)'};` +\n            '' +\n            `--ngxDateIconFont:${style.iconFont || 'Material Icons Outlined'};` +\n            `--ngxDateIconSize:${style.iconSize || '16px'};` +\n            `--ngxDatePrimaryColor:${style.primaryColor || 'rgb(29, 91, 116)'};` +\n            `--ngxDateBorderColor:${style.borderColor || 'rgb(187, 206, 213)'};` +\n            `--ngxDateBackgroundColor:${style.backgroundColor || 'rgb(232, 239, 241)'};` +\n            '}';\n        const html: HTMLStyleElement = document.createElement('style');\n        html.innerHTML = root;\n        document.getElementsByTagName('head')[0].appendChild(html);\n\n        return {\n            ngModule: NgxFormModule,\n            providers: [\n                { provide: 'NGX_FORM_APPEARANCE', useValue: config?.appearance || 'fill' },\n                { provide: 'NGX_FORM_SUBMITTIMEOUT', useValue: config?.submitTimeout || null },\n                { provide: 'NGX_FORM_MOBILEWIDTH', useValue: config?.mobileWidth || 600 },\n                { provide: 'NGX_FORM_COLUMNGAP', useValue: config?.columnGap || '2rem' },\n                { provide: 'NGX_FORM_PRIMARY_COLOR', useValue: style.primaryColor || 'rgb(29, 91, 116)' },\n            ],\n        };\n    }\n}\n","import { NgxReportInputs, NgxReportOperators } from '../ngx-report.type';\n\nexport interface INgxReportOperator {\n    title: string;\n    types: 'ALL' | NgxReportInputs['type'][];\n    value: boolean;\n}\n\nexport const NgxReportOperatorsInfo: { [key in NgxReportOperators]: INgxReportOperator } = {\n    EMPTY: { title: 'بدون مقدار', types: 'ALL', value: false },\n    VALUE: { title: 'داری مقدار', types: 'ALL', value: false },\n    TRUE: { title: 'انتخاب شده', types: ['CHECKBOX'], value: false },\n    FALSE: { title: 'انتخاب نشده', types: ['CHECKBOX'], value: false },\n    EQ: {\n        title: 'برابر با',\n        types: ['BANK-CARD', 'DATE', 'DOMAIN', 'EMAIL', 'IP', 'MOBILE', 'NATIONAL-CODE', 'NUMBER', 'TEXT'],\n        value: true,\n    },\n    NE: {\n        title: 'مخالف با',\n        types: ['BANK-CARD', 'DATE', 'DOMAIN', 'EMAIL', 'IP', 'MOBILE', 'NATIONAL-CODE', 'NUMBER', 'TEXT'],\n        value: true,\n    },\n    GT: { title: 'بزرگ‌تر از', types: ['DATE', 'NUMBER'], value: true },\n    GE: { title: 'بزرگ‌تر مساوی با', types: ['DATE', 'NUMBER'], value: true },\n    LT: { title: 'کوچک‌تر از', types: ['DATE', 'NUMBER'], value: true },\n    LE: { title: 'کوچک‌تر مساوی با', types: ['DATE', 'NUMBER'], value: true },\n    BETWEEN: { title: 'در محدوده', types: ['DATE', 'NUMBER'], value: true },\n    BWITH: { title: 'شروع با', types: ['TEXT', 'TEXTAREA'], value: true },\n    EWITH: { title: 'پایان با', types: ['TEXT', 'TEXTAREA'], value: true },\n    CONTAINS: { title: 'شامل', types: ['TEXT', 'TEXTAREA'], value: true },\n    IN: { title: 'یکی از مقادیر', types: ['MULTI-SELECT', 'SELECT'], value: true },\n    NIN: { title: 'هیچکدام از مقادیر', types: ['MULTI-SELECT', 'SELECT'], value: true },\n    DOMAIN: { title: 'از دامنه', types: ['EMAIL', 'URL'], value: true },\n};\n\nexport const NgxReportOperatorsList: NgxReportOperators[] = Object.keys(NgxReportOperatorsInfo) as NgxReportOperators[];\n","import { NgxReportInputs, NgxReportOperators } from '../ngx-report.type';\n\nexport type NgxReportValueTypes =\n    | 'BANK-CARD'\n    | 'DATE'\n    | 'DOMAIN'\n    | 'EMAIL'\n    | 'IP'\n    | 'MOBILE'\n    | 'NATIONAL-CODE'\n    | 'NUMBER'\n    | 'OPTION'\n    | 'TEXT';\n\nexport interface INgxReportValue {\n    default: NgxReportValueTypes | null;\n    extra?: Partial<{ [key in NgxReportOperators]: NgxReportValueTypes }>;\n}\n\nexport const NgxReportValuesInfo: { [key in NgxReportInputs['type']]: INgxReportValue } = {\n    'BANK-CARD': { default: 'BANK-CARD' },\n    CHECKBOX: { default: null },\n    DATE: { default: 'DATE' },\n    DOMAIN: { default: 'DOMAIN' },\n    EMAIL: { default: 'EMAIL', extra: { DOMAIN: 'DOMAIN' } },\n    IP: { default: 'IP' },\n    MOBILE: { default: 'MOBILE' },\n    'MULTI-SELECT': { default: 'OPTION' },\n    'NATIONAL-CODE': { default: 'NATIONAL-CODE' },\n    NUMBER: { default: 'NUMBER' },\n    SELECT: { default: 'OPTION' },\n    TEXT: { default: 'TEXT' },\n    TEXTAREA: { default: 'TEXT' },\n    URL: { default: null, extra: { DOMAIN: 'DOMAIN' } },\n};\n","import { Injectable } from '@angular/core';\n\nimport { NgxReportOperatorsInfo } from './interfaces';\n\nimport { INgxReport, INgxReportCondition } from './ngx-report.interface';\nimport { NgxReportInputs } from './ngx-report.type';\n\n@Injectable()\nexport class NgxReportService {\n    isGroup(condition: INgxReport | INgxReportCondition): boolean {\n        return Object.keys(condition).includes('join');\n    }\n\n    private groupHasError(report: INgxReport): boolean {\n        return report.conditions.length === 0;\n    }\n\n    private conditionHasError(inputs: NgxReportInputs[], condition: INgxReportCondition): boolean {\n        if (condition.input === null || condition.operator === null) return true;\n\n        const input = inputs.find((i: NgxReportInputs) => i.name === condition.input);\n        if (!input) return true;\n\n        if (NgxReportOperatorsInfo[condition.operator].types === 'ALL') return false;\n\n        if (!NgxReportOperatorsInfo[condition.operator].types.includes(input.type)) return true;\n        if (NgxReportOperatorsInfo[condition.operator].value && condition.value === null) return true;\n\n        return false;\n    }\n\n    hasError(inputs: NgxReportInputs[], report: INgxReport): boolean {\n        if (this.groupHasError(report)) return true;\n\n        for (let c = 0; c < report.conditions.length; c++) {\n            const condition = report.conditions[c];\n            if (this.isGroup(condition) && this.hasError(inputs, condition as INgxReport)) return true;\n            if (!this.isGroup(condition) && this.conditionHasError(inputs, condition as INgxReportCondition))\n                return true;\n        }\n\n        return false;\n    }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxReportInputs, NgxReportOperators } from '../../../ngx-report.type';\n\n@Component({\n    selector: 'ngx-value-data',\n    templateUrl: './ngx-value-data.component.html',\n    styleUrls: ['./ngx-value-data.component.scss'],\n})\nexport class NgxValueDataComponent implements OnInit {\n    @Input({ required: true }) input!: NgxReportInputs;\n    @Input({ required: true }) operator!: NgxReportOperators | null;\n    @Input({ required: true }) value!: string | null;\n    @Output() changed: EventEmitter<string | null> = new EventEmitter<string | null>();\n\n    @Input({ required: false }) icon: string = '';\n    @Input({ required: false }) mask?: string;\n\n    public inputTransformFn = (value: any): string =>\n        this.input.type === 'BANK-CARD' || this.input.type === 'IP' || this.input.type === 'NATIONAL-CODE'\n            ? Helper.STRING.changeNumbers(value.toString(), 'EN')\n            : value.toString();\n\n    get error(): boolean {\n        if (!this.input) return false;\n\n        switch (this.input.type) {\n            case 'BANK-CARD':\n                return !Helper.IS.STRING.bankCard(this.inputValue || '');\n\n            case 'DOMAIN':\n                return !Helper.RE.DOMAIN.verify(this.inputValue || '');\n\n            case 'EMAIL':\n                return !Helper.RE.EMAIL.verify(this.inputValue || '');\n\n            case 'IP':\n                return !Helper.RE.IP4.verify(this.inputValue || '');\n\n            case 'NATIONAL-CODE':\n                return !Helper.IS.STRING.nationalCode(this.inputValue || '');\n\n            default:\n                return false;\n        }\n    }\n\n    public inputValue: string | null = null;\n\n    ngOnInit(): void {\n        this.inputValue = this.value;\n    }\n}\n","<input\n    type=\"text\"\n    [inputMode]=\"!!mask ? 'numeric' : 'text'\"\n    [(ngModel)]=\"inputValue\"\n    [ngClass]=\"{ en: true, error: error, 'ngx-form-invalid': error }\"\n    [mask]=\"mask || ''\"\n    [inputTransformFn]=\"inputTransformFn\"\n    (change)=\"changed.emit(error ? null : inputValue)\"\n/>\n<mat-icon [fontIcon]=\"icon\"></mat-icon>\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChange, SimpleChanges } from '@angular/core';\n\nimport { NgxDateService } from '../../../../ngx-date';\n\nimport { INgxReportInputDate } from '../../../inputs';\nimport { NgxReportInputs, NgxReportOperators } from '../../../ngx-report.type';\n\n@Component({\n    selector: 'ngx-value-date',\n    templateUrl: './ngx-value-date.component.html',\n    styleUrls: ['./ngx-value-date.component.scss'],\n})\nexport class NgxValueDateComponent implements OnChanges {\n    @Input({ required: true }) input!: NgxReportInputs;\n    @Input({ required: true }) operator!: NgxReportOperators | null;\n    @Input({ required: true }) value!: Date | [Date, Date] | null;\n    @Output() changed: EventEmitter<Date | [Date, Date] | null> = new EventEmitter<Date | [Date, Date] | null>();\n\n    public dates: [Date | null, Date | null] = [null, null];\n\n    constructor(private readonly ngxDateService: NgxDateService) {}\n\n    ngOnChanges(changes: SimpleChanges): void {\n        const change: SimpleChange = changes['operator'];\n        if (change && (change.firstChange || change.previousValue === 'BETWEEN' || change.currentValue === 'BETWEEN'))\n            this.dates =\n                this.value === null ? [null, null] : Array.isArray(this.value) ? this.value : [this.value, null];\n    }\n\n    setDate(index: number): void {\n        if (!this.input) return;\n\n        const input: INgxReportInputDate = this.input as INgxReportInputDate;\n        this.ngxDateService.getDate({ title: input.title, minDate: input.minDate, maxDate: input.maxDate }).then(\n            (date: Date) => {\n                this.dates[index] = date;\n                this.setChanged();\n            },\n            () => {},\n        );\n    }\n\n    setChanged(): void {\n        const value: Date | [Date, Date] | null =\n            this.operator === 'BETWEEN'\n                ? this.dates[0] === null || this.dates[1] === null\n                    ? null\n                    : [this.dates[0], this.dates[1]]\n                : this.dates[0];\n        this.changed.emit(value);\n    }\n}\n","@for (index of operator === 'BETWEEN' ? [0, 1] : [0]; track $index) {\n<div class=\"date\">\n    <div\n        [ngClass]=\"{ error: dates[index] === null, 'ngx-form-invalid': dates[index] === null }\"\n        (click)=\"setDate(index)\"\n    >\n        {{ dates[index] | ngxDate : 'd N Y' }}\n    </div>\n    <mat-icon [fontIcon]=\"'calendar_month'\" (click)=\"setDate(index)\"></mat-icon>\n</div>\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxReportInputs, NgxReportOperators } from '../../../ngx-report.type';\n\n@Component({\n    selector: 'ngx-value-mobile',\n    templateUrl: './ngx-value-mobile.component.html',\n    styleUrls: ['./ngx-value-mobile.component.scss'],\n})\nexport class NgxValueMobileComponent implements OnInit {\n    @Input({ required: true }) input!: NgxReportInputs;\n    @Input({ required: true }) operator!: NgxReportOperators | null;\n    @Input({ required: true }) value!: string | null;\n    @Output() changed: EventEmitter<string | null> = new EventEmitter<string | null>();\n\n    public mobile: string | null = null;\n\n    get error(): boolean {\n        return !Helper.RE.MOBILE.verify('09' + (this.mobile || ''));\n    }\n\n    public inputTransformFn = (value: any): string => Helper.STRING.changeNumbers(value.toString(), 'EN');\n\n    ngOnInit(): void {\n        this.mobile = this.value?.substring(2) || null;\n    }\n}\n","<input\n    type=\"text\"\n    inputmode=\"numeric\"\n    [(ngModel)]=\"mobile\"\n    [ngClass]=\"{ en: true, error: error, 'ngx-form-invalid': error }\"\n    mask=\"00-000-0000\"\n    [inputTransformFn]=\"inputTransformFn\"\n    (change)=\"changed.emit(error ? null : '09' + mobile)\"\n/>\n<div class=\"prefix\">09</div>\n<mat-icon [fontIcon]=\"'phone_iphone'\"></mat-icon>\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChange, SimpleChanges } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { INgxReportInputNumber } from '../../../inputs';\nimport { NgxReportInputs, NgxReportOperators } from '../../../ngx-report.type';\n\n@Component({\n    selector: 'ngx-value-number',\n    templateUrl: './ngx-value-number.component.html',\n    styleUrls: ['./ngx-value-number.component.scss'],\n})\nexport class NgxValueNumberComponent implements OnChanges {\n    @Input({ required: true }) input!: NgxReportInputs;\n    @Input({ required: true }) operator!: NgxReportOperators | null;\n    @Input({ required: true }) value!: number | [number, number] | null;\n    @Output() changed: EventEmitter<number | [number, number] | null> = new EventEmitter<\n        number | [number, number] | null\n    >();\n\n    public numbers: [number | null, number | null] = [null, null];\n    public decimal?: boolean;\n    public negative?: boolean;\n\n    public inputTransformFn = (value: any): string => Helper.STRING.changeNumbers(value.toString(), 'EN');\n\n    ngOnChanges(changes: SimpleChanges): void {\n        const change: SimpleChange = changes['operator'];\n        if (change && (change.firstChange || change.previousValue === 'BETWEEN' || change.currentValue === 'BETWEEN'))\n            this.numbers =\n                this.value === null ? [null, null] : Array.isArray(this.value) ? this.value : [this.value, null];\n\n        if (this.input) {\n            const input: INgxReportInputNumber = this.input as INgxReportInputNumber;\n            this.decimal = input.decimal;\n            this.negative = input.negative;\n        }\n    }\n\n    setNumber(index: number, event: Event): void {\n        const element: HTMLInputElement = event.target as HTMLInputElement;\n        const value: string = element.value.toString().trim().replace(/,/gi, '');\n\n        if (value === '' || value === '-' || value === '.') this.numbers[index] = null;\n        else this.numbers[index] = isNaN(+value) ? null : +value;\n        this.setChanged();\n    }\n\n    setChanged(): void {\n        const value: number | [number, number] | null =\n            this.operator === 'BETWEEN'\n                ? this.numbers[0] === null || this.numbers[1] === null\n                    ? null\n                    : [this.numbers[0], this.numbers[1]]\n                : this.numbers[0];\n        this.changed.emit(value);\n    }\n}\n","@for (index of operator === 'BETWEEN' ? [0, 1] : [0]; track $index) {\n<input\n    type=\"text\"\n    inputmode=\"numeric\"\n    [(ngModel)]=\"numbers[index]\"\n    [ngClass]=\"{ en: true, error: numbers[index] === null, 'ngx-form-invalid': numbers[index] === null }\"\n    [mask]=\"decimal ? 'separator.3' : 'separator.0'\"\n    thousandSeparator=\",\"\n    decimalMarker=\".\"\n    [allowNegativeNumbers]=\"!!negative\"\n    [inputTransformFn]=\"inputTransformFn\"\n    maxlength=\"15\"\n    (change)=\"setNumber(index, $event)\"\n/>\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport { INgxReportInputSelect } from '../../../inputs';\nimport { INgxReportOption } from '../../../interfaces';\nimport { NgxReportInputs, NgxReportOperators } from '../../../ngx-report.type';\n\n@Component({\n    selector: 'ngx-value-option',\n    templateUrl: './ngx-value-option.component.html',\n    styleUrls: ['./ngx-value-option.component.scss'],\n})\nexport class NgxValueOptionComponent implements OnInit {\n    @Input({ required: true }) input!: NgxReportInputs;\n    @Input({ required: true }) operator!: NgxReportOperators | null;\n    @Input({ required: true }) value!: string[] | null;\n    @Output() changed: EventEmitter<string[] | null> = new EventEmitter<string[] | null>();\n\n    public options: INgxReportOption[] = [];\n    public en: boolean = false;\n    public ids: string[] = [];\n\n    ngOnInit(): void {\n        if (!this.input) return;\n\n        const input: INgxReportInputSelect = this.input as INgxReportInputSelect;\n        this.options = input.options;\n        this.en = !!input.english;\n\n        const ids: string[] = this.options.map((option: INgxReportOption) => option.id);\n        const values: string[] = this.value && Array.isArray(this.value) ? this.value : [];\n        this.ids = values.filter((value: string) => ids.includes(value));\n    }\n\n    setChanged(id: string): void {\n        if (!this.ids.includes(id)) this.ids.push(id);\n        else this.ids = this.ids.filter((i: string) => i !== id);\n        this.changed.emit(this.ids.length === 0 ? null : this.ids);\n    }\n}\n","<div [ngClass]=\"{ values: true, error: ids.length === 0, 'ngx-form-invalid': ids.length === 0 }\">\n    <!-- OPTIONS -->\n    @for (option of options; track $index) {\n    <div [ngClass]=\"{ value: true, en: !!en }\" (click)=\"setChanged(option.id)\">\n        <mat-icon [fontIcon]=\"ids.includes(option.id) ? 'check_box' : 'check_box_outline_blank'\"></mat-icon>\n        <div class=\"title\">{{ option.title }}</div>\n    </div>\n    }\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { INgxReportInputText } from '../../../inputs';\nimport { NgxReportInputs, NgxReportOperators } from '../../../ngx-report.type';\n\n@Component({\n    selector: 'ngx-value-text',\n    templateUrl: './ngx-value-text.component.html',\n    styleUrls: ['./ngx-value-text.component.scss'],\n})\nexport class NgxValueTextComponent {\n    @Input({ required: true }) input!: NgxReportInputs;\n    @Input({ required: true }) operator!: NgxReportOperators | null;\n    @Input({ required: true }) value!: string | null;\n    @Output() changed: EventEmitter<string | null> = new EventEmitter<string | null>();\n\n    get en(): boolean {\n        return !!(this.input && !!(this.input as INgxReportInputText).english);\n    }\n}\n","<input\n    type=\"text\"\n    [(ngModel)]=\"value\"\n    [ngClass]=\"{ en: en, error: value === null, 'ngx-form-invalid': value === null }\"\n    (change)=\"changed.emit(value)\"\n/>\n","import { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport {\n    INgxReportOperator,\n    NgxReportOperatorsInfo,\n    NgxReportOperatorsList,\n    NgxReportValuesInfo,\n    NgxReportValueTypes,\n} from '../../interfaces';\n\nimport { INgxReportCondition } from '../../ngx-report.interface';\nimport { NgxReportInputs, NgxReportOperators } from '../../ngx-report.type';\n\n@Component({\n    selector: 'ngx-report-condition',\n    templateUrl: './ngx-report-condition.component.html',\n    styleUrls: ['./ngx-report-condition.component.scss'],\n})\nexport class NgxReportConditionComponent implements OnInit {\n    @Input({ required: true }) inputs!: NgxReportInputs[];\n    @Input({ required: true }) condition!: INgxReportCondition;\n    @Output() changed: EventEmitter<void> = new EventEmitter<void>();\n    @Output() deleted: EventEmitter<void> = new EventEmitter<void>();\n\n    public operatorsInfo = NgxReportOperatorsInfo;\n    public operators: NgxReportOperators[] = [];\n    public input?: NgxReportInputs;\n\n    get valueShow(): boolean {\n        if (!this.condition.input || !this.condition.operator) return false;\n        return NgxReportOperatorsInfo[this.condition.operator].value;\n    }\n\n    get valueType(): NgxReportValueTypes | null {\n        if (!this.condition.operator || !this.input) return null;\n\n        return (\n            NgxReportValuesInfo[this.input.type].extra?.[this.condition.operator] ||\n            NgxReportValuesInfo[this.input.type].default\n        );\n    }\n\n    constructor(private readonly changeDetectorRef: ChangeDetectorRef) {}\n\n    ngOnInit(): void {\n        if (this.condition?.input) {\n            this.input = this.inputs.find((i: NgxReportInputs) => i.name === this.condition?.input);\n            if (!this.input) {\n                this.condition.input = null;\n                this.condition.operator = null;\n                this.condition.value = null;\n                this.changed.emit();\n            }\n        }\n\n        this.updateOperators();\n    }\n\n    setInput(name: string): void {\n        if (!this.inputs.find((i: NgxReportInputs) => i.name === name)) return;\n\n        this.condition.input = name;\n        this.condition.operator = null;\n        this.condition.value = null;\n        this.changed.emit();\n\n        this.updateOperators();\n    }\n\n    updateOperators(): void {\n        this.operators = [];\n\n        this.input = this.inputs.find((i: NgxReportInputs) => i.name === this.condition?.input);\n        if (!this.input) return;\n\n        NgxReportOperatorsList.forEach((operator: NgxReportOperators) => {\n            const info: INgxReportOperator = NgxReportOperatorsInfo[operator];\n            if (info.types === 'ALL' || (this.input && info.types.includes(this.input.type)))\n                this.operators.push(operator);\n        });\n\n        if (this.condition && this.condition.operator && !this.operators.includes(this.condition.operator)) {\n            this.condition.operator = null;\n            this.condition.value = null;\n            this.changed.emit();\n        }\n    }\n\n    setOperator(operator: NgxReportOperators): void {\n        if (!this.operators.includes(operator)) return;\n\n        this.condition.operator = operator;\n        this.condition.value = null;\n        this.changed.emit();\n    }\n\n    setValue(value: any): void {\n        this.condition.value = value;\n        this.changed.emit();\n        this.changeDetectorRef.detectChanges();\n    }\n}\n","@if (inputs.length !== 0) {\n<content>\n    <div class=\"condition\">\n        <div class=\"data\">\n            <div\n                [ngClass]=\"{ input: true, error: !input, 'ngx-form-invalid': !input }\"\n                [matMenuTriggerFor]=\"inputsMenu\"\n            >\n                <div class=\"title\">{{ input?.title || '&nbsp;' }}</div>\n                <mat-icon [fontIcon]=\"'keyboard_double_arrow_down'\"></mat-icon>\n                <mat-menu #inputsMenu=\"matMenu\" class=\"ngx-report-menu\">\n                    <!-- INPUTS -->\n                    @for (i of inputs; track $index) {\n                    <button mat-menu-item type=\"button\" (click)=\"setInput(i.name)\">\n                        <div class=\"title\">{{ i.title }}</div>\n                    </button>\n                    }\n                </mat-menu>\n            </div>\n\n            <!-- EMPTY OPERATOR -->\n            @if (!input) {\n            <div class=\"operator\"></div>\n            }\n\n            <!-- OPERATOR -->\n            @if (input) {\n            <div\n                [ngClass]=\"{\n                    operator: true,\n                    error: input && !condition.operator,\n                    'ngx-form-invalid': input && !condition.operator\n                }\"\n                [matMenuTriggerFor]=\"operatorsMenu\"\n            >\n                <div class=\"title\">\n                    {{ condition.operator ? operatorsInfo[condition.operator].title : '&nbsp;' }}\n                </div>\n                <mat-icon [fontIcon]=\"'keyboard_double_arrow_down'\"></mat-icon>\n                <mat-menu #operatorsMenu=\"matMenu\" class=\"ngx-report-menu\">\n                    <!-- OPERATORS -->\n                    @for (o of operators; track $index) {\n                    <button mat-menu-item type=\"button\" (click)=\"setOperator(o)\">\n                        <div class=\"title\">{{ operatorsInfo[o].title }}</div>\n                    </button>\n                    }\n                </mat-menu>\n            </div>\n            }\n        </div>\n\n        <!-- VALUE -->\n        @if (input && valueShow) {\n        <div class=\"value\">\n            <!-- TYPES -->\n            @switch (valueType) {\n            <!-- BANK-CARD -->\n            @case ('BANK-CARD') {\n            <ngx-value-data\n                [input]=\"input\"\n                [operator]=\"condition.operator\"\n                [value]=\"condition.value\"\n                (changed)=\"setValue($event)\"\n                [icon]=\"'payment'\"\n                [mask]=\"'0000-0000-0000-0000'\"\n            ></ngx-value-data>\n            }\n\n            <!-- DATE -->\n            @case ('DATE') {\n            <ngx-value-date\n                [input]=\"input\"\n                [operator]=\"condition.operator\"\n                [value]=\"condition.value\"\n                (changed)=\"setValue($event)\"\n            ></ngx-value-date>\n            }\n\n            <!-- DOMAIN -->\n            @case ('DOMAIN') {\n            <ngx-value-data\n                [input]=\"input\"\n                [operator]=\"condition.operator\"\n                [value]=\"condition.value\"\n                (changed)=\"setValue($event)\"\n                [icon]=\"'language'\"\n            ></ngx-value-data>\n            }\n\n            <!-- EMAIL -->\n            @case ('EMAIL') {\n            <ngx-value-data\n                [input]=\"input\"\n                [operator]=\"condition.operator\"\n                [value]=\"condition.value\"\n                (changed)=\"setValue($event)\"\n                [icon]=\"'alternate_email'\"\n            ></ngx-value-data>\n            }\n\n            <!-- IP -->\n            @case ('IP') {\n            <ngx-value-data\n                [input]=\"input\"\n                [operator]=\"condition.operator\"\n                [value]=\"condition.value\"\n                (changed)=\"setValue($event)\"\n                [icon]=\"'location_on'\"\n            ></ngx-value-data>\n            }\n\n            <!-- MOBILE -->\n            @case ('MOBILE') {\n            <ngx-value-mobile\n                [input]=\"input\"\n                [operator]=\"condition.operator\"\n                [value]=\"condition.value\"\n                (changed)=\"setValue($event)\"\n            ></ngx-value-mobile>\n            }\n\n            <!-- NATIONAL-CODE -->\n            @case ('NATIONAL-CODE') {\n            <ngx-value-data\n                [input]=\"input\"\n                [operator]=\"condition.operator\"\n                [value]=\"condition.value\"\n                (changed)=\"setValue($event)\"\n                [icon]=\"'badge'\"\n                [mask]=\"'0000000000'\"\n            ></ngx-value-data>\n            }\n\n            <!-- NUMBER -->\n            @case ('NUMBER') {\n            <ngx-value-number\n                [input]=\"input\"\n                [operator]=\"condition.operator\"\n                [value]=\"condition.value\"\n                (changed)=\"setValue($event)\"\n            ></ngx-value-number>\n            }\n\n            <!-- OPTION -->\n            @case ('OPTION') {\n            <ngx-value-option\n                [input]=\"input\"\n                [operator]=\"condition.operator\"\n                [value]=\"condition.value\"\n                (changed)=\"setValue($event)\"\n            ></ngx-value-option>\n            }\n\n            <!-- TEXT -->\n            @case ('TEXT') {\n            <ngx-value-text\n                [input]=\"input\"\n                [operator]=\"condition.operator\"\n                [value]=\"condition.value\"\n                (changed)=\"setValue($event)\"\n            ></ngx-value-text>\n            } }\n        </div>\n        }\n    </div>\n\n    <button mat-button type=\"button\" (click)=\"deleted.emit()\">\n        <mat-icon [fontIcon]=\"'delete'\" class=\"warn\"></mat-icon>\n    </button>\n</content>\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { INgxReport, INgxReportCondition } from '../../ngx-report.interface';\nimport { NgxReportService } from '../../ngx-report.service';\nimport { NgxReportInputs } from '../../ngx-report.type';\n\n@Component({\n    selector: 'ngx-report-group',\n    templateUrl: './ngx-report-group.component.html',\n    styleUrls: ['./ngx-report-group.component.scss'],\n})\nexport class NgxReportGroupComponent {\n    @Input({ required: true }) inputs!: NgxReportInputs[];\n    @Input({ required: true }) report!: INgxReport;\n    @Input({ required: false }) level: number = 0;\n    @Output() changed: EventEmitter<void> = new EventEmitter<void>();\n    @Output() deleted: EventEmitter<void> = new EventEmitter<void>();\n\n    public isGroup = this.ngxReportService.isGroup;\n\n    constructor(private readonly ngxReportService: NgxReportService) {}\n\n    getReport(item: INgxReport | INgxReportCondition): INgxReport {\n        return item as INgxReport;\n    }\n\n    getCondition(item: INgxReport | INgxReportCondition): INgxReportCondition {\n        return item as INgxReportCondition;\n    }\n\n    setJoin(value: 'AND' | 'OR'): void {\n        this.report.join = value;\n        this.changed.emit();\n    }\n\n    addGroup(): void {\n        this.report.conditions.push({ join: 'AND', conditions: [] });\n        this.changed.emit();\n    }\n\n    addCondition(): void {\n        this.report.conditions.push({ input: null, operator: null, value: null });\n        this.changed.emit();\n    }\n\n    deleteCondition(index: number): void {\n        this.report.conditions = this.report.conditions.filter((_, i: number) => i !== index);\n        this.changed.emit();\n    }\n}\n","@if (inputs.length !== 0) {\n<content [ngStyle]=\"{ borderLeftWidth: level === 0 ? 1 : 0 }\">\n    <header>\n        <div class=\"join\">\n            <div [ngClass]=\"{ selected: report.join === 'AND' }\" (click)=\"setJoin('AND')\">و</div>\n            <div [ngClass]=\"{ selected: report.join === 'OR' }\" (click)=\"setJoin('OR')\">یا</div>\n        </div>\n\n        <div class=\"buttons\">\n            <button mat-button type=\"button\" (click)=\"addCondition()\">\n                <mat-icon [fontIcon]=\"'add'\"></mat-icon>\n            </button>\n            <button mat-button type=\"button\" (click)=\"addGroup()\">\n                <mat-icon [fontIcon]=\"'account_tree'\"></mat-icon>\n            </button>\n\n            <!-- DELETE -->\n            @if (level !== 0) {\n            <button mat-button type=\"button\" (click)=\"deleted.emit()\">\n                <mat-icon [fontIcon]=\"'delete'\" class=\"warn\"></mat-icon>\n            </button>\n            }\n        </div>\n    </header>\n\n    @if (report.conditions.length === 0) {\n    <!-- EMPTY CONDITIONS -->\n    <div class=\"empty ngx-form-invalid\">شرایطی ثبت نشده است.</div>\n    } @else {\n    <div class=\"conditions\">\n        <!-- CONDITIONS -->\n        @for (condition of report.conditions; track $index) {\n        <div [ngClass]=\"{ condition: true, after: $index < report.conditions.length - 1 }\">\n            @if (isGroup(condition)) {\n            <!-- GROUP -->\n            <ngx-report-group\n                [inputs]=\"inputs\"\n                [report]=\"getReport(condition)\"\n                [level]=\"level + 1\"\n                (changed)=\"changed.emit()\"\n                (deleted)=\"deleteCondition($index)\"\n            ></ngx-report-group>\n            } @else {\n            <!-- CONDITION -->\n            <ngx-report-condition\n                [inputs]=\"inputs\"\n                [condition]=\"getCondition(condition)\"\n                (changed)=\"changed.emit()\"\n                (deleted)=\"deleteCondition($index)\"\n            ></ngx-report-condition>\n            }\n        </div>\n        }\n    </div>\n    }\n</content>\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport { INgxReport } from './ngx-report.interface';\nimport { NgxReportService } from './ngx-report.service';\nimport { NgxReportInputs } from './ngx-report.type';\n\n@Component({\n    selector: 'ngx-report',\n    templateUrl: './ngx-report.component.html',\n    styleUrls: ['./ngx-report.component.scss'],\n})\nexport class NgxReportComponent implements OnInit {\n    @Input({ required: true }) ngxInputs: NgxReportInputs[] = [];\n    @Input({ required: true }) ngxReport: INgxReport | null = null;\n    @Output() ngxReportChange: EventEmitter<INgxReport | null> = new EventEmitter<INgxReport | null>();\n    @Output() changed: EventEmitter<INgxReport> = new EventEmitter<INgxReport>();\n\n    public report: INgxReport = { join: 'AND', conditions: [] };\n    private firstCheck: boolean = true;\n\n    constructor(private readonly ngxReportService: NgxReportService) {}\n\n    ngOnInit(): void {\n        this.report =\n            !this.ngxReport || !this.ngxReport.join || !Array.isArray(this.ngxReport.conditions)\n                ? { join: 'AND', conditions: [] }\n                : this.ngxReport;\n\n        this.setReport();\n    }\n\n    clone(report: INgxReport): INgxReport {\n        return {\n            join: report.join,\n            conditions: report.conditions.map((condition) => {\n                return this.ngxReportService.isGroup(condition)\n                    ? this.clone(condition as INgxReport)\n                    : { ...condition };\n            }),\n        };\n    }\n\n    setReport(): void {\n        this.ngxReport = this.ngxReportService.hasError(this.ngxInputs, this.report) ? null : this.clone(this.report);\n        this.ngxReportChange.emit(this.ngxReport);\n        if (!this.firstCheck && this.ngxReport !== null) this.changed.emit(this.ngxReport);\n\n        this.firstCheck = false;\n    }\n}\n","<ngx-report-group [inputs]=\"ngxInputs\" [report]=\"report\" (changed)=\"setReport()\"></ngx-report-group>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\n\nimport { NgxDirectiveModule } from '../ngx-directive';\nimport { NgxDateModule } from '../ngx-date';\nimport { NgxPipeModule } from '../ngx-pipe';\n\nimport {\n    NgxReportConditionComponent,\n    NgxReportGroupComponent,\n    NgxValueDataComponent,\n    NgxValueDateComponent,\n    NgxValueMobileComponent,\n    NgxValueNumberComponent,\n    NgxValueOptionComponent,\n    NgxValueTextComponent,\n} from './components';\nimport { INgxReportStyle } from './interfaces';\n\nimport { NgxReportComponent } from './ngx-report.component';\nimport { NgxReportService } from './ngx-report.service';\n\n@NgModule({\n    declarations: [\n        NgxReportComponent,\n        NgxReportGroupComponent,\n        NgxReportConditionComponent,\n\n        NgxValueDataComponent,\n        NgxValueDateComponent,\n        NgxValueMobileComponent,\n        NgxValueNumberComponent,\n        NgxValueOptionComponent,\n        NgxValueTextComponent,\n    ],\n    imports: [\n        CommonModule,\n        FormsModule,\n        NgxMaskDirective,\n\n        MatButtonModule,\n        MatIconModule,\n        MatMenuModule,\n\n        NgxDirectiveModule,\n        NgxDateModule,\n        NgxPipeModule,\n    ],\n    providers: [NgxReportService, provideNgxMask()],\n    exports: [NgxReportComponent],\n})\nexport class NgxReportModule {\n    static forRoot(): ModuleWithProviders<NgxReportModule>;\n    static forRoot(style: Partial<INgxReportStyle>): ModuleWithProviders<NgxReportModule>;\n    static forRoot(style?: Partial<INgxReportStyle>): ModuleWithProviders<NgxReportModule> {\n        const root: string =\n            ':root {' +\n            `--ngxReportFaFont:${style?.faFont || 'Yekan'};` +\n            `--ngxReportEnFont:${style?.enFont || \"Roboto, 'Helvetica Neue', sans-serif\"};` +\n            `--ngxReportFontSize:${style?.faSize || '12px'};` +\n            `--ngxReportIconFont:${style?.iconFont || 'Material Icons Outlined'};` +\n            `--ngxReportIconSize:${style?.iconSize || '16px'};` +\n            `--ngxReportPrimaryColor:${style?.primaryColor || 'rgb(29, 91, 116)'};` +\n            `--ngxReportWarnColor:${style?.warnColor || 'rgb(255, 49, 27)'};` +\n            `--ngxReportBorderColor:${style?.borderColor || 'rgb(187, 206, 213)'};` +\n            `--ngxReportBackgroundColor:${style?.backgroundColor || 'rgb(232, 239, 241)'};` +\n            '' +\n            `--ngxDateIconFont:${style?.iconFont || 'Material Icons Outlined'};` +\n            `--ngxDateIconSize:${style?.iconSize || '16px'};` +\n            `--ngxDatePrimaryColor:${style?.primaryColor || 'rgb(29, 91, 116)'};` +\n            `--ngxDateBorderColor:${style?.borderColor || 'rgb(187, 206, 213)'};` +\n            `--ngxDateBackgroundColor:${style?.backgroundColor || 'rgb(232, 239, 241)'};` +\n            '}';\n\n        const html: HTMLStyleElement = document.createElement('style');\n        html.innerHTML = root;\n        document.getElementsByTagName('head')[0].appendChild(html);\n\n        return { ngModule: NgxReportModule };\n    }\n}\n","/*\n * Public API Surface of ngx-form\n */\n\nexport * from './lib/ngx-form/ngx-form.component';\nexport * from './lib/ngx-form/responsive/ngx-form-responsive.component';\n\nexport * from './lib/ngx-form/ngx-form.interface';\nexport * from './lib/ngx-form/ngx-form.module';\nexport * from './lib/ngx-form/ngx-form.type';\n\nexport * from './lib/ngx-report/ngx-report.component';\nexport * from './lib/ngx-report/ngx-report.interface';\nexport * from './lib/ngx-report/ngx-report.module';\nexport * from './lib/ngx-report/ngx-report.type';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.NgxMultiLinePipe","i3","i7.NgxAutocompleteDirective","i8.NgxDescriptionComponent","i9.NgxErrorPipe","i4","i5","i6","i8.NgxAutoFocusDirective","i9.NgxDescriptionComponent","i10.NgxErrorPipe","i1.NgxCoordinatesService","i2","i7","i8.NgxAutocompleteDirective","i1.NgxDateService","i8","i9","i10.NgxAutocompleteDirective","i11.NgxDescriptionComponent","i12.NgxDatePipe","i13.NgxErrorPipe","i10.NgxFileSizePipe","i6.NgxAutocompleteDirective","i7.NgxDescriptionComponent","i8.NgxErrorPipe","i5.NgxAutocompleteDirective","i7.NgxBankCardPipe","i8.NgxMobilePipe","i6.NgxDescriptionComponent","i7.NgxListOptionInputComponent","i8.NgxListOptionItemComponent","i9.NgxFileSizePipe","i12.NgxErrorPipe","i6.NgxAutoFocusDirective","i9.NgxAutoFocusDirective","i10.NgxDescriptionComponent","i11.NgxErrorPipe","i7.NgxAutoFocusDirective","i10.NgxDatePipe","i9.NgxAutocompleteDirective","i5.NgxAutoFocusDirective","i6.NgxAutoHeightDirective","i10.NgxAutoFocusDirective","i7.NgxInputAutoCompleteComponent","i8.NgxInputBankCardComponent","i9.NgxInputCheckboxComponent","i10.NgxInputColorComponent","i11.NgxInputCoordinatesComponent","i12.NgxInputDateComponent","i13.NgxInputFileComponent","i14.NgxInputGroupComponent","i15.NgxInputIconComponent","i16.NgxInputListComponent","i17.NgxInputMultiFileComponent","i18.NgxInputMultiSelectComponent","i19.NgxInputNameComponent","i20.NgxInputNumberComponent","i21.NgxInputOptionListComponent","i22.NgxInputPasswordComponent","i23.NgxInputPeriodComponent","i24.NgxInputPlateComponent","i25.NgxInputRangeComponent","i26.NgxInputSelectComponent","i27.NgxInputTagComponent","i28.NgxInputTextComponent","i29.NgxInputTextareaComponent","i30.NgxInputTimeComponent","i31.NgxInputUnitComponent","i1.NgxFormService","i7.NgxErrorDirective","i8.NgxInputComponent","i4.NgxDatePipe","i4.NgxAutocompleteDirective","i3.NgxAutocompleteDirective","i5.NgxValueDataComponent","i6.NgxValueDateComponent","i7.NgxValueMobileComponent","i8.NgxValueNumberComponent","i9.NgxValueOptionComponent","i10.NgxValueTextComponent","i1.NgxReportService","i5.NgxReportConditionComponent","i2.NgxReportGroupComponent"],"mappings":"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"}