{"version":3,"file":"ngx-dynamic-form-builder.mjs","sources":["../../../../libs/ngx-dynamic-form-builder/src/lib/constants/constants.ts","../../../../libs/ngx-dynamic-form-builder/src/lib/utils/get-global.util.ts","../../../../libs/ngx-dynamic-form-builder/src/lib/utils/global-dynamic-form-builder-options.ts","../../../../libs/ngx-dynamic-form-builder/src/lib/utils/utils.ts","../../../../libs/ngx-dynamic-form-builder/src/lib/lib.ts","../../../../libs/ngx-dynamic-form-builder/src/lib/types/types.ts","../../../../libs/ngx-dynamic-form-builder/src/lib/form-builder.ts","../../../../libs/ngx-dynamic-form-builder/src/lib/decorators/decorators.ts","../../../../libs/ngx-dynamic-form-builder/src/lib/decorators/expose-nested.decorator.ts","../../../../libs/ngx-dynamic-form-builder/src/ngx-dynamic-form-builder.ts"],"sourcesContent":["import { DynamicClassTransformOptions } from '../types/types';\n\nexport const DEFAULT_CLASS_TRANSFORM_OPTIONS: DynamicClassTransformOptions = {\n  strategy: 'excludeAll',\n};\n\nexport const __dynamicControlOptions__ = '__dynamicControlOptions__';\n","/**\n * This function returns the global object across Node and browsers.\n *\n * Note: `globalThis` is the standardized approach however it has been added to\n * Node.js in version 12. We need to include this snippet until Node 12 EOL.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getGlobal(): any {\n  if (typeof globalThis !== 'undefined') {\n    return globalThis;\n  }\n\n  if (typeof global !== 'undefined') {\n    return global;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore: Cannot find name 'window'.\n  if (typeof window !== 'undefined') {\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: Cannot find name 'window'.\n    return window;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore: Cannot find name 'self'.\n  if (typeof self !== 'undefined') {\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: Cannot find name 'self'.\n    return self;\n  }\n  throw Error('Can not work with the global object');\n}\n","import { BehaviorSubject } from 'rxjs';\nimport { DynamicFormBuilderOptions } from '../types/types';\nimport { getGlobal } from '../utils/get-global.util';\n\nconst globalDynamicFormBuilderOptions = 'globalDynamicFormBuilderOptions';\n\nexport function getGlobalDynamicFormBuilderOptionsSubject<T>(): BehaviorSubject<\n  DynamicFormBuilderOptions<T>\n> {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const global = getGlobal() as any;\n  if (!global[globalDynamicFormBuilderOptions]) {\n    global[globalDynamicFormBuilderOptions] = new BehaviorSubject({});\n  }\n  return global[globalDynamicFormBuilderOptions];\n}\n\nexport function getGlobalDynamicFormBuilderOptions<\n  T\n>(): DynamicFormBuilderOptions<T> {\n  return (getGlobalDynamicFormBuilderOptionsSubject().value ||\n    {}) as DynamicFormBuilderOptions<T>;\n}\n\nexport function setGlobalDynamicFormBuilderOptions<T>(\n  dynamicFormBuilderOptions: DynamicFormBuilderOptions<T>\n) {\n  getGlobalDynamicFormBuilderOptionsSubject().next(dynamicFormBuilderOptions);\n}\n","import { AbstractControl } from '@angular/forms';\nimport { ValidationError } from 'class-validator-multi-lang';\nimport cloneDeep from 'lodash.clonedeep';\nimport mergeWith from 'lodash.mergewith';\nimport lodashSet from 'lodash.set';\nimport { __dynamicControlOptions__ } from '../constants/constants';\nimport {\n  ClassValidatorErrors,\n  DynamicControlOptions,\n  DynamicFormGroup,\n  DynamicFormProperties,\n  IDynamicControlMetadata,\n  ShortValidationErrors,\n} from '../types/types';\n\nexport function setDynamicControlOptions(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  object: any,\n  options: DynamicControlOptions\n) {\n  object[__dynamicControlOptions__] = options;\n}\n\nexport function removeDynamicControlOptions(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  object: any\n) {\n  delete object[__dynamicControlOptions__];\n}\n\nexport function getDynamicControlOptions(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  object: any\n) {\n  return object[__dynamicControlOptions__];\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function recursiveRemoveDynamicControlOptions(object: any): any {\n  if (!object || isPrimitiveClass(object) || isPrimitiveType(object)) {\n    return object;\n  } else {\n    if (Array.isArray(object)) {\n      return object.map((item) => recursiveRemoveDynamicControlOptions(item));\n    }\n    if (\n      Object.getOwnPropertyDescriptor(object || {}, __dynamicControlOptions__)\n    ) {\n      delete object[__dynamicControlOptions__];\n    }\n    Object.keys(object).forEach((key) => {\n      if (\n        Object.getOwnPropertyDescriptor(\n          object[key] || {},\n          __dynamicControlOptions__\n        )\n      ) {\n        delete object[key][__dynamicControlOptions__];\n      }\n    });\n    return object;\n  }\n}\n\nexport function replaceLastPropertyToDynamicControlOptionsByDotPath(\n  controlPath: string,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  object: any,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  rootValue: any,\n  control: DynamicFormProperties | AbstractControl,\n  metadata: IDynamicControlMetadata\n) {\n  const newControlPath = [\n    ...controlPath\n      .split('.')\n      .filter((v, i) => i < controlPath.split('.').length - 1),\n    __dynamicControlOptions__,\n  ].join('.');\n\n  lodashSet(\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    object as any,\n    newControlPath,\n    {\n      rootValue,\n      controlPath,\n      control,\n      metadata,\n    }\n  );\n}\n\nexport function setCustomDataToRootFormGroup<T = unknown>(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  control: any,\n  key: string,\n  value: T\n) {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  (control.root as any)[key] = value;\n}\n\nexport function getCustomDataToRootFormGroup<T>(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  control: any,\n  key: string,\n  defaultValue: T\n) {\n  if (Object.getOwnPropertyDescriptor(control?.root || {}, key)) {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    return (control?.root as any)[key] as T;\n  }\n  return defaultValue;\n}\n\nexport function transformValidationErrorsToClassValidatorErrors(\n  errors: ValidationError[]\n): ClassValidatorErrors {\n  const customErrors: ClassValidatorErrors = {};\n\n  errors.forEach((error: ValidationError) => {\n    if (error && error.constraints !== undefined) {\n      Object.keys(error.constraints).forEach((key: string) => {\n        if (!customErrors[error.property]) {\n          customErrors[error.property] = {};\n        }\n        if (!customErrors[error.property].messages) {\n          customErrors[error.property].messages = [];\n        }\n        if (\n          error.constraints &&\n          customErrors[error.property].messages?.indexOf(\n            error.constraints[key]\n          ) === -1\n        ) {\n          customErrors[error.property].messages?.push(error.constraints[key]);\n        }\n      });\n    }\n\n    if (error.children !== undefined && error.children.length) {\n      if (!customErrors[error.property]) {\n        customErrors[error.property] = {};\n      }\n      if (!customErrors[error.property].children) {\n        customErrors[error.property].children = {};\n      }\n      customErrors[error.property].children =\n        transformValidationErrorsToClassValidatorErrors(error.children);\n    }\n  });\n\n  return customErrors;\n}\n\nexport function transformClassValidatorErrorsToShortValidationErrors(\n  errors: ClassValidatorErrors\n): ShortValidationErrors {\n  const customErrors: ShortValidationErrors = {};\n  Object.keys(errors).forEach((key) => {\n    if (errors[key]?.messages?.length) {\n      if (!customErrors[key]) {\n        customErrors[key] = {};\n      }\n      customErrors[key] = errors[key].messages;\n    }\n    if (Object.keys(errors[key]?.children || {}).length) {\n      if (!customErrors[key]) {\n        customErrors[key] = {};\n      }\n      customErrors[key] = {\n        ...transformClassValidatorErrorsToShortValidationErrors(\n          errors[key].children || {}\n        ),\n      };\n    }\n  });\n\n  return customErrors;\n}\n\nexport function mergeErrors<T>(externalErrors?: T, validationErrors?: T) {\n  const clonedExternalErrors = cloneDeep(externalErrors);\n  const clonedValidationErrors = cloneDeep(validationErrors);\n  return mergeWith(\n    clonedExternalErrors,\n    clonedValidationErrors,\n    (objValue, srcValue) => {\n      if (Array.isArray(objValue) && !Array.isArray(srcValue)) {\n        return [...objValue, ...Object.keys(srcValue || {})].filter(Boolean);\n      }\n      if (Array.isArray(srcValue) && !Array.isArray(objValue)) {\n        return [...Object.keys(objValue || {}), ...srcValue].filter(Boolean);\n      }\n\n      if (canMerge()) {\n        return objValue.concat(srcValue);\n      }\n\n      return undefined;\n\n      function canMerge() {\n        return (\n          Array.isArray(objValue) &&\n          Array.isArray(srcValue) &&\n          !objValue.find((objItem) => srcValue.includes(objItem))\n        );\n      }\n    }\n  );\n}\n\nexport function collectDynamicFormGroupErrors<T>(\n  control: DynamicFormGroup<T, T>\n) {\n  if (control.controls) {\n    return {\n      ...Object.keys(control.controls).reduce((all, key) => {\n        const childErrors = collectDynamicFormGroupErrors(\n          control.controls[key] as DynamicFormGroup\n        );\n        if (childErrors && Object.keys(childErrors).length > 0) {\n          all = {\n            ...all,\n            [key]: {\n              ...childErrors,\n            },\n          };\n        }\n        return all;\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      }, {} as any),\n    };\n  } else {\n    // todo: need check\n    const key = control?.classTransformMetadata?.propertyName;\n    const childErrors = control.errors;\n    if (\n      key &&\n      childErrors?.[key]?.messages &&\n      Array.isArray(childErrors[key]?.messages)\n    ) {\n      delete childErrors[key];\n    }\n    return childErrors;\n  }\n}\n\nexport function isPrimitiveClass(\n  classType: IDynamicControlMetadata['classType']\n) {\n  return (\n    classType &&\n    (classType === Number ||\n      classType === String ||\n      classType === Boolean ||\n      classType === Date)\n  );\n}\n\nexport function isPrimitiveType(object: unknown) {\n  return (\n    object &&\n    (typeof object === 'number' ||\n      typeof object === 'string' ||\n      typeof object === 'boolean')\n  );\n}\n","import {\n  AbstractControl,\n  FormArray,\n  FormBuilder,\n  FormControl,\n  FormGroup,\n  ValidationErrors,\n  ValidatorFn,\n} from '@angular/forms';\nimport {\n  ClassConstructor,\n  classToPlain,\n  plainToClass,\n} from 'class-transformer-global-storage';\nimport {\n  validate,\n  validateSync,\n  ValidationError,\n} from 'class-validator-multi-lang';\nimport cloneDeep from 'lodash.clonedeep';\nimport lodashGet from 'lodash.get';\nimport mergeWith from 'lodash.mergewith';\nimport lodashSet from 'lodash.set';\nimport { BehaviorSubject, from, Observable, of, ReplaySubject } from 'rxjs';\nimport { catchError, debounceTime, delay, map, tap } from 'rxjs/operators';\nimport { DEFAULT_CLASS_TRANSFORM_OPTIONS } from './constants/constants';\nimport {\n  ClassValidatorErrors,\n  DeepPartial,\n  DynamicClassTransformOptions,\n  DynamicFormArray,\n  DynamicFormBuilderOptions,\n  DynamicFormControl,\n  DynamicFormGroup,\n  DynamicFormProperties,\n  IDynamicControlMetadata,\n  ShortValidationErrors,\n} from './types/types';\nimport { getGlobal } from './utils/get-global.util';\nimport {\n  getGlobalDynamicFormBuilderOptions,\n  getGlobalDynamicFormBuilderOptionsSubject,\n} from './utils/global-dynamic-form-builder-options';\nimport {\n  collectDynamicFormGroupErrors,\n  isPrimitiveClass,\n  isPrimitiveType,\n  mergeErrors,\n  recursiveRemoveDynamicControlOptions,\n  replaceLastPropertyToDynamicControlOptionsByDotPath,\n  setDynamicControlOptions,\n  transformClassValidatorErrorsToShortValidationErrors,\n  transformValidationErrorsToClassValidatorErrors,\n} from './utils/utils';\n\nexport function createFormControls<T = Record<string, unknown>>({\n  classType,\n  formBuilder,\n  form,\n  rootFormGroup,\n  metadata,\n  defaultValue,\n  dynamicFormBuilderOptions,\n}: {\n  classType: ClassConstructor<T> | null;\n  formBuilder: FormBuilder;\n  form?: FormGroup;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  rootFormGroup?: DynamicFormGroup<any>;\n  metadata?: IDynamicControlMetadata;\n  defaultValue: DeepPartial<T>;\n  dynamicFormBuilderOptions?: DynamicFormBuilderOptions<T>;\n}): DynamicFormGroup<T> {\n  const isRoot = !rootFormGroup;\n\n  let dynamicForm = form as DynamicFormGroup<T>;\n\n  if (!dynamicForm) {\n    dynamicForm = formBuilder.group({}) as DynamicFormGroup<T>;\n  }\n\n  if (isRoot) {\n    rootFormGroup = dynamicForm;\n    setupDynamicFormBuilderOptions<T>({\n      dynamicForm,\n      dynamicFormBuilderOptions,\n    });\n  }\n\n  if (dynamicFormBuilderOptions || rootFormGroup?.dynamicFormBuilderOptions) {\n    setupClassTransformMetadata<T>({\n      classType,\n      dynamicForm,\n      defaultMetadata: metadata,\n      dynamicFormBuilderOptions:\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        dynamicFormBuilderOptions || rootFormGroup!.dynamicFormBuilderOptions,\n    });\n  }\n\n  createAllFormGroupChildrenControls<T>({\n    dynamicForm,\n    defaultValue,\n    formBuilder,\n    rootFormGroup,\n    dynamicFormBuilderOptions,\n  });\n\n  addDynamicMethodsToFormGroup<T>(dynamicForm);\n\n  if (isRoot) {\n    subscribeToRootFormGroupValueChanges<T>(dynamicForm);\n    subscribeToGlobalDynamicFormBuilderOptionsChange<T>(\n      formBuilder,\n      dynamicForm\n    );\n\n    return addDynamicMethodsToRootFormGroup<T>({\n      dynamicForm,\n      rootFormGroup,\n      formBuilder,\n    });\n  } else {\n    return dynamicForm;\n  }\n}\n\nexport function setValuesForControls<T = Record<string, unknown>>(\n  formBuilder: FormBuilder,\n  form: DynamicFormGroup<T>,\n  value: T\n) {\n  const metadata: IDynamicControlMetadata = form.classTransformMetadata;\n  if (!metadata) {\n    throw new Error(`classTransformMetadata not found in form group`);\n  }\n  if (\n    metadata.classType &&\n    !isPrimitiveClass(metadata.classType) &&\n    !(value instanceof metadata.classType)\n  ) {\n    // need for multi types\n    if (\n      metadata.withAncestors &&\n      metadata.parent?.classType &&\n      metadata.propertyName\n    ) {\n      const isArray =\n        metadata.parent.properties.find(\n          (prop) => prop.propertyName === metadata.propertyName\n        )?.isArray || false;\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      const parentClassType: any = metadata.parent.classType;\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      const parentObject: any = {\n        [metadata.propertyName]: isArray ? [value] : value,\n      };\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      const parentJson: any = plainToClass(\n        parentClassType,\n        parentObject,\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        (form.root as DynamicFormGroup<any>).dynamicFormBuilderOptions\n          .classTransformOptions\n      );\n      value = isArray\n        ? parentJson[metadata.propertyName][0]\n        : parentJson[metadata.propertyName];\n    } else {\n      value = plainToClass(\n        metadata.classType,\n        value,\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        (form.root as DynamicFormGroup<any>).dynamicFormBuilderOptions\n          .classTransformOptions\n      ) as T;\n    }\n  }\n  metadata.properties.forEach((metadataItem) => {\n    if (!metadataItem.ignore) {\n      if (metadataItem.propertyName) {\n        if (!metadataItem.ignore) {\n          if (!metadataItem.isArray) {\n            const control = form.controls[\n              metadataItem.propertyName\n            ] as FormControl;\n            if (\n              !metadataItem.classType ||\n              isPrimitiveClass(metadataItem.classType)\n            ) {\n              try {\n                control.patchValue(\n                  value !== undefined &&\n                    Object.getOwnPropertyDescriptor(\n                      value || {},\n                      metadataItem.propertyName\n                    )\n                    ? (value as never)[metadataItem.propertyName]\n                    : null,\n                  { emitEvent: false }\n                );\n              } catch (err) {\n                console.log({ err, metadataItem, form });\n              }\n            } else {\n              try {\n                setValuesForControls(\n                  formBuilder,\n                  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                  form.controls[metadataItem.propertyName] as any,\n                  value !== undefined\n                    ? (value as never)[metadataItem.propertyName]\n                    : {}\n                );\n              } catch (err) {\n                console.log({ err, metadataItem, form });\n                throw err;\n              }\n            }\n          } else {\n            const arrayControl = form.controls[\n              metadataItem.propertyName\n            ] as DynamicFormArray;\n\n            if (\n              arrayControl?.classTransformMetadata?.isArray &&\n              arrayControl?.controls.length > 0\n            ) {\n              let formArrayLength = arrayControl.controls.length;\n              while (formArrayLength !== 0) {\n                arrayControl.removeAt(0);\n                formArrayLength--;\n              }\n            }\n\n            if (\n              !metadataItem.classType ||\n              isPrimitiveClass(metadataItem.classType)\n            ) {\n              try {\n                (\n                  (Object.getOwnPropertyDescriptor(\n                    value || {},\n                    metadataItem.propertyName\n                  )\n                    ? (value as never)[metadataItem.propertyName]\n                    : null) || []\n                ).forEach((item: never) => {\n                  if (metadataItem.propertyName) {\n                    arrayControl.push(formBuilder.control(item));\n                  }\n                });\n              } catch (err) {\n                console.log({ err, metadataItem, form });\n              }\n            } else {\n              try {\n                (\n                  (Object.getOwnPropertyDescriptor(\n                    value || {},\n                    metadataItem.propertyName\n                  )\n                    ? (value as never)[metadataItem.propertyName]\n                    : null) || []\n                )\n                  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                  .forEach((item: any) => {\n                    // need for multi types\n                    const itemKeys = Object.keys(item);\n                    if (metadataItem.withAncestors) {\n                      metadataItem.properties.forEach((prop) => {\n                        if (\n                          prop.propertyName &&\n                          !itemKeys.includes(prop.propertyName)\n                        ) {\n                          item[prop.propertyName] = null;\n                        }\n                      });\n                    }\n                    if (metadataItem.propertyName) {\n                      const control = createFormControls({\n                        classType: metadataItem.classType,\n                        formBuilder,\n                        metadata: metadataItem,\n                        defaultValue: item,\n                        rootFormGroup: form.root as DynamicFormGroup<\n                          unknown,\n                          unknown\n                        >,\n                        dynamicFormBuilderOptions: (\n                          form.root as DynamicFormGroup<unknown, unknown>\n                        ).dynamicFormBuilderOptions,\n                      });\n                      arrayControl.push(control);\n                    }\n                  });\n              } catch (err) {\n                console.log({ err, metadataItem, form });\n              }\n            }\n          }\n        }\n      }\n    }\n  });\n}\n\nexport function setValidatorsToControls<T>(\n  formBuilder: FormBuilder,\n  form: DynamicFormGroup<T>,\n  rootFormGroup?: DynamicFormGroup<T>\n) {\n  if (!rootFormGroup) {\n    rootFormGroup = form.root as DynamicFormGroup<T>;\n  }\n\n  addCommonAsyncValidatorToRootForm(rootFormGroup);\n\n  const metadata: IDynamicControlMetadata = form.classTransformMetadata;\n  if (!metadata) {\n    throw new Error('classTransformMetadata not found in form group');\n  }\n\n  metadata.properties.forEach((metadataItem) => {\n    if (!metadataItem.ignore && metadataItem.propertyName) {\n      if (!metadataItem.isArray) {\n        if (\n          !metadataItem.classType ||\n          isPrimitiveClass(metadataItem.classType)\n        ) {\n          if (!rootFormGroup?.commonAsyncValidator) {\n            throw new Error('commonAsyncValidator not set');\n          }\n          try {\n            if (form.controls[metadataItem.propertyName]) {\n              (\n                form.controls[metadataItem.propertyName] as DynamicFormControl\n              ).classTransformMetadata = metadataItem;\n              if (\n                !form.controls[metadataItem.propertyName].hasAsyncValidator(\n                  rootFormGroup.commonAsyncValidator\n                )\n              ) {\n                form.controls[metadataItem.propertyName].setAsyncValidators(\n                  rootFormGroup.commonAsyncValidator\n                ); /*\n                form.controls[\n                  metadataItem.propertyName\n                ].updateValueAndValidity();*/\n              }\n\n              if (rootFormGroup.dynamicFormBuilderOptions.angularValidators) {\n                const { angularFormValidatorPath } = findControlPaths(\n                  form.controls[metadataItem.propertyName]\n                );\n                const angularValidators = lodashGet(\n                  rootFormGroup.dynamicFormBuilderOptions.angularValidators,\n                  angularFormValidatorPath\n                  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                );\n                if (angularValidators) {\n                  let asyncValidators = [];\n                  if (angularValidators.asyncValidators) {\n                    asyncValidators = angularValidators.asyncValidators;\n                    if (typeof asyncValidators === 'function') {\n                      asyncValidators = [asyncValidators];\n                    }\n                  }\n                  let validators =\n                    angularValidators?.validators || angularValidators;\n                  if (typeof validators === 'function') {\n                    validators = [validators];\n                  }\n                  form.controls[metadataItem.propertyName].setAsyncValidators([\n                    ...asyncValidators,\n                    ...validators\n                      .filter(Boolean)\n                      .map(\n                        (validator: ValidatorFn) =>\n                          (control: AbstractControl) =>\n                            Promise.resolve(validator(control))\n                      ),\n                    rootFormGroup.commonAsyncValidator,\n                  ]); /*\n                  form.controls[\n                    metadataItem.propertyName\n                  ].updateValueAndValidity();*/\n                }\n              }\n            }\n          } catch (err) {\n            console.log({ err, metadataItem, form });\n          }\n        } else {\n          try {\n            setValidatorsToControls(\n              formBuilder,\n              form.controls[metadataItem.propertyName] as DynamicFormGroup<T>,\n              rootFormGroup\n            );\n          } catch (err) {\n            console.log({ err, metadataItem, form });\n          }\n        }\n      } else {\n        if (\n          !metadataItem.classType ||\n          isPrimitiveClass(metadataItem.classType)\n        ) {\n          if (!rootFormGroup?.commonAsyncValidator) {\n            throw new Error('commonAsyncValidator not set');\n          }\n          try {\n            const controls = (\n              form.controls[metadataItem.propertyName] as DynamicFormArray\n            ).controls;\n            (!Array.isArray(controls) && metadataItem.isArray\n              ? []\n              : controls\n            ).forEach((control, propertyIndex) => {\n              (control as DynamicFormGroup).classTransformMetadata = {\n                ...metadataItem,\n                propertyIndex,\n                isArray: false,\n              };\n              if (!rootFormGroup) {\n                throw Error('rootFormGroup not set');\n              }\n              if (\n                !control.hasAsyncValidator(rootFormGroup.commonAsyncValidator)\n              ) {\n                control.setAsyncValidators(rootFormGroup.commonAsyncValidator);\n                /* control.updateValueAndValidity(); */\n              }\n            });\n            if (!rootFormGroup) {\n              throw Error('rootFormGroup not set');\n            }\n            if (\n              !(\n                form.controls[metadataItem.propertyName] as DynamicFormArray\n              ).hasAsyncValidator(rootFormGroup.commonAsyncValidator)\n            ) {\n              (\n                form.controls[metadataItem.propertyName] as DynamicFormArray\n              ).setAsyncValidators(rootFormGroup.commonAsyncValidator);\n              /* (\n                form.controls[metadataItem.propertyName] as DynamicFormArray\n              ).updateValueAndValidity(); */\n            }\n          } catch (err) {\n            console.log({ err, metadataItem, form });\n          }\n        } else {\n          try {\n            const controls = (\n              form.controls[metadataItem.propertyName] as DynamicFormArray\n            ).controls;\n            (!Array.isArray(controls) && metadataItem.isArray\n              ? []\n              : controls\n            ).forEach((control, propertyIndex) => {\n              (control as DynamicFormGroup).classTransformMetadata = {\n                ...metadataItem,\n                propertyIndex,\n                isArray: false,\n              };\n              const controlValue = control.value || {};\n              // needed for extend controls if it does not exists, but the value has property with that name\n              if (\n                metadataItem.classType &&\n                !isPrimitiveType(metadataItem.classType) &&\n                metadataItem.properties.length >\n                  Object.keys(controlValue).length\n              ) {\n                metadataItem.properties.forEach((prop) => {\n                  if (\n                    prop.propertyName &&\n                    !Object.getOwnPropertyDescriptor(\n                      controlValue,\n                      prop.propertyName\n                    )\n                  ) {\n                    if (prop.classType && !isPrimitiveType(prop.classType)) {\n                      controlValue[prop.propertyName] = {};\n                      if (\n                        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                        !(control as DynamicFormGroup<any, any>).controls[\n                          prop.propertyName\n                        ]\n                      ) {\n                        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                        (control as DynamicFormGroup<any, any>).addControl(\n                          prop.propertyName,\n                          formBuilder.group(controlValue[prop.propertyName])\n                        );\n                      }\n                    } else {\n                      if (prop.isArray) {\n                        controlValue[prop.propertyName] = [];\n                        if (\n                          // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                          !(control as DynamicFormGroup<any, any>).controls[\n                            prop.propertyName\n                          ]\n                        ) {\n                          // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                          (control as DynamicFormGroup<any, any>).addControl(\n                            prop.propertyName,\n                            formBuilder.array(controlValue[prop.propertyName])\n                          );\n                        }\n                      } else {\n                        controlValue[prop.propertyName] = null;\n                        if (\n                          // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                          !(control as DynamicFormGroup<any, any>).controls[\n                            prop.propertyName\n                          ]\n                        ) {\n                          // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                          (control as DynamicFormGroup<any, any>).addControl(\n                            prop.propertyName,\n                            formBuilder.control(controlValue[prop.propertyName])\n                          );\n                        }\n                      }\n                    }\n                  }\n                });\n                setValuesForControls(\n                  formBuilder,\n                  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                  control as DynamicFormGroup<any, any>,\n                  controlValue\n                );\n              }\n              setValidatorsToControls(\n                formBuilder,\n                control as DynamicFormGroup<T>,\n                rootFormGroup\n              );\n              if (!rootFormGroup) {\n                throw Error('rootFormGroup not set');\n              }\n              if (\n                !control.hasAsyncValidator(rootFormGroup.commonAsyncValidator)\n              ) {\n                control.setAsyncValidators(rootFormGroup.commonAsyncValidator);\n                /* control.updateValueAndValidity(); */\n              }\n            });\n            if (!rootFormGroup) {\n              throw Error('rootFormGroup not set');\n            }\n            if (\n              !(\n                form.controls[metadataItem.propertyName] as DynamicFormArray\n              ).hasAsyncValidator(rootFormGroup.commonAsyncValidator)\n            ) {\n              (\n                form.controls[metadataItem.propertyName] as DynamicFormArray\n              ).setAsyncValidators(rootFormGroup.commonAsyncValidator);\n              /* (\n                form.controls[metadataItem.propertyName] as DynamicFormArray\n              ).updateValueAndValidity(); */\n            }\n          } catch (err) {\n            console.log({ err, metadataItem, form });\n          }\n        }\n      }\n    }\n  });\n}\n\nexport function validateAllFormFields(form: FormGroup) {\n  let control: AbstractControl | null;\n  let formArrayControlsLength: number;\n  Object.keys(form.controls).forEach((field) => {\n    control = form.get(field);\n\n    // Control\n    if (control instanceof FormControl) {\n      control.markAsTouched({ onlySelf: true });\n    }\n    // Group: recursive\n    else if (control instanceof FormGroup) {\n      validateAllFormFields(control);\n    }\n    // Array\n    else if (control instanceof FormArray) {\n      formArrayControlsLength = (control as FormArray).controls.length;\n      for (let i = 0; i < formArrayControlsLength; i++) {\n        // Control in Array\n        if ((control as FormArray).controls[i] instanceof FormControl) {\n          ((control as FormArray).controls[i] as FormControl).markAsTouched({\n            onlySelf: true,\n          });\n        }\n        // Group in Array: recursive\n        if ((control as FormArray).controls[i] instanceof FormGroup) {\n          validateAllFormFields(\n            (control as FormArray).controls[i] as FormGroup\n          );\n        }\n      }\n    }\n  });\n}\n\nfunction getMetadata(\n  classType: ClassConstructor<unknown>,\n  classTransformOptions?: DynamicClassTransformOptions,\n  isRoot?: boolean\n): IDynamicControlMetadata {\n  const classTransformerMetadataStorage =\n    getGlobal()['classTransformerMetadataStorage'] || undefined;\n  if (!classTransformerMetadataStorage) {\n    throw new Error(\n      'classTransformerMetadataStorage not set in windows, please use the \"class-transformer-global-storage\" instead of \"class-transformer\"'\n    );\n  }\n  const classValidatorMetadataStorage =\n    getGlobal()['classValidatorMetadataStorage'] || undefined;\n  if (!classValidatorMetadataStorage) {\n    throw new Error('classValidatorMetadataStorage not set in windows');\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  let exposeProperties: any[] = [];\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  let excludeProperties: any[] = [];\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  let prevMultiTypes: any[] | null = [];\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  let multiTypes: any[] | null = null;\n\n  // need for create all link for multi types\n  if (isRoot) {\n    while (\n      !prevMultiTypes ||\n      !multiTypes ||\n      prevMultiTypes.length !== multiTypes.length\n    ) {\n      prevMultiTypes = multiTypes;\n      plainToClass(classType, {}, classTransformOptions);\n      multiTypes = Array.from(classTransformerMetadataStorage._typeMetadatas)\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        .map((meta: any) =>\n          Array.from(meta[1])\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            .filter((sub: any) => {\n              return sub[1].options.discriminator;\n            })\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            .map((sub: any) => {\n              return { ...sub[1], ...sub[1].options.discriminator };\n            })\n        )\n        .filter((arr) => arr.length > 0)\n        .map((arr) =>\n          arr.map((item) => ({\n            classType: item.target,\n            propertyName: item.propertyName,\n            types: item.subTypes,\n            property: item.property,\n          }))\n        )\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        .reduce((all: any, cur: any) => [...all, ...cur], []);\n      (multiTypes || []).forEach((multiType) =>\n        multiType.types.forEach((type: { name: string }) =>\n          plainToClass(\n            multiType.classType,\n            { [multiType.propertyName]: { [multiType.property]: type.name } },\n            classTransformOptions\n          )\n        )\n      );\n      exposeProperties =\n        classTransformerMetadataStorage.getExposedMetadatas(classType);\n    }\n\n    prevMultiTypes = [];\n    multiTypes = null;\n    // need for create all link for multi types\n    while (\n      !prevMultiTypes ||\n      !multiTypes ||\n      prevMultiTypes.length !== multiTypes.length\n    ) {\n      prevMultiTypes = multiTypes;\n      plainToClass(classType, {}, classTransformOptions);\n      multiTypes = Array.from(classTransformerMetadataStorage._excludeMetadatas)\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        .map((meta: any) =>\n          Array.from(meta[1])\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            .filter((sub: any) => {\n              return sub[1].options.discriminator;\n            })\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            .map((sub: any) => ({ ...sub[1], ...sub[1].options.discriminator }))\n        )\n        .filter((arr) => arr.length > 0)\n        .map((arr) =>\n          arr.map((item) => ({\n            classType: item.target,\n            propertyName: item.propertyName,\n            types: item.subTypes,\n            property: item.property,\n          }))\n        )\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        .reduce((all: any, cur: any) => [...all, ...cur], []);\n      (multiTypes || []).forEach((multiType) =>\n        multiType.types.forEach((type: { name: string }) =>\n          plainToClass(\n            multiType.classType,\n            { [multiType.propertyName]: { [multiType.property]: type.name } },\n            classTransformOptions\n          )\n        )\n      );\n      excludeProperties =\n        classTransformerMetadataStorage.getExcludedMetadatas(classType);\n    }\n  } else {\n    exposeProperties =\n      classTransformerMetadataStorage.getExposedMetadatas(classType);\n    excludeProperties =\n      classTransformerMetadataStorage.getExcludedMetadatas(classType);\n  }\n\n  // need for support ancestors multiple types of form group\n  const ancestorsProperties = [\n    Array.from(classTransformerMetadataStorage._ancestorsMap)\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      .filter((item: any) => item[1][0] === classType)\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      .map((item: any) =>\n        classTransformerMetadataStorage.getExposedMetadatas(item[0])\n      )\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      .reduce((all: any, cur: any) => [...all, ...cur], []),\n  ];\n\n  const properties = [\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    ...exposeProperties,\n    ...excludeProperties,\n    ...(ancestorsProperties.length > 0 ? ancestorsProperties[0] : []),\n  ].filter(\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    (existsLimit: any, existsIndex: any, items: any) => {\n      return (\n        (classTransformOptions?.excludeGroups\n          ? !classTransformOptions?.excludeGroups.find((excludeGroup) =>\n              existsLimit?.options?.groups?.includes(excludeGroup)\n            )\n          : true) &&\n        existsIndex ===\n          items.findIndex(\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            (it: any) => it.propertyName === existsLimit.propertyName\n          )\n      );\n    }\n  );\n\n  properties.forEach(\n    (\n      exposeMetadataItem: {\n        propertyName: string;\n        target: ClassConstructor<unknown>;\n      },\n      index: number\n    ) => {\n      const propertyMetadata = classTransformerMetadataStorage.findTypeMetadata(\n        exposeMetadataItem.target,\n        exposeMetadataItem.propertyName\n      );\n      if (propertyMetadata) {\n        properties[index] = {\n          ...getMetadata(\n            propertyMetadata.typeFunction(),\n            classTransformOptions,\n            false\n          ),\n          isArray: Array === propertyMetadata.reflectedType,\n          propertyName: exposeMetadataItem.propertyName,\n        };\n      } else {\n        properties[index] = {\n          classType: null,\n          properties: [],\n          isArray: false,\n          propertyName: exposeMetadataItem.propertyName,\n        };\n      }\n    }\n  );\n\n  const metadata = {\n    classType,\n    properties,\n    withAncestors:\n      (ancestorsProperties?.length > 0 ? ancestorsProperties[0] : []).length >\n      0,\n    isArray: false,\n    propertyName: null,\n  };\n\n  return metadata;\n}\n\nfunction setupClassTransformMetadata<T = Record<string, unknown>>({\n  defaultMetadata,\n  classType,\n  dynamicForm,\n  dynamicFormBuilderOptions,\n}: {\n  defaultMetadata: IDynamicControlMetadata | undefined;\n  classType: ClassConstructor<T> | null;\n  dynamicForm: DynamicFormGroup<T, T>;\n  dynamicFormBuilderOptions: DynamicFormBuilderOptions<T>;\n}) {\n  if (!defaultMetadata && classType) {\n    dynamicForm.classTransformMetadata = getMetadata(\n      classType,\n      dynamicFormBuilderOptions.classTransformOptions,\n      true\n    );\n  } else {\n    dynamicForm.classTransformMetadata =\n      defaultMetadata as IDynamicControlMetadata;\n  }\n  if (!dynamicForm.classTransformMetadata) {\n    throw new Error('metadata not set');\n  }\n}\n\nfunction setupDynamicFormBuilderOptions<T = Record<string, unknown>>({\n  dynamicForm,\n  dynamicFormBuilderOptions,\n}: {\n  dynamicForm: DynamicFormGroup<T, T>;\n  dynamicFormBuilderOptions: DynamicFormBuilderOptions<T> | undefined;\n}) {\n  if (!dynamicForm) {\n    throw new Error('dynamicForm not set');\n  }\n  if (!dynamicForm.dynamicFormBuilderOptions) {\n    dynamicForm.dynamicFormBuilderOptions = dynamicFormBuilderOptions || {};\n  }\n  dynamicForm.dynamicFormBuilderOptions.classValidatorOptions = {\n    ...(dynamicForm.dynamicFormBuilderOptions.classValidatorOptions || {}),\n  };\n  dynamicForm.dynamicFormBuilderOptions.classTransformOptions = {\n    ...DEFAULT_CLASS_TRANSFORM_OPTIONS,\n    ...(dynamicForm.dynamicFormBuilderOptions.classTransformOptions || {}),\n  };\n  dynamicForm.dynamicFormBuilderOptions.classTransformToPlainOptions = {\n    ...(dynamicForm.dynamicFormBuilderOptions.classTransformToPlainOptions ||\n      {}),\n  };\n}\n\nfunction createAllFormGroupChildrenControls<T = Record<string, unknown>>({\n  dynamicForm,\n  defaultValue,\n  formBuilder,\n  rootFormGroup,\n  dynamicFormBuilderOptions,\n}: {\n  dynamicForm: DynamicFormGroup<T, T>;\n  defaultValue: DeepPartial<T>;\n  formBuilder: FormBuilder;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  rootFormGroup: DynamicFormGroup<any, any> | undefined;\n  dynamicFormBuilderOptions: DynamicFormBuilderOptions<T> | undefined;\n}) {\n  dynamicForm.classTransformMetadata.properties.forEach(\n    (metadataItem, index) => {\n      dynamicForm.classTransformMetadata.properties[index].ignore = true;\n      if (metadataItem.propertyName) {\n        if (\n          Object.keys(defaultValue || {}).length === 0 ||\n          Object.getOwnPropertyDescriptor(\n            defaultValue || {},\n            metadataItem.propertyName\n          ) ||\n          metadataItem.isArray\n        ) {\n          if (!metadataItem.isArray) {\n            if (\n              !metadataItem.classType ||\n              isPrimitiveClass(metadataItem.classType)\n            ) {\n              addDynamicPrimitiveObjectAsFormGroup<T>({\n                defaultValue,\n                metadataItem,\n                formBuilder,\n                dynamicForm,\n                index,\n              });\n            } else {\n              addDynamicTypedObjectAsFormGroup<T>({\n                defaultValue,\n                metadataItem,\n                formBuilder,\n                rootFormGroup,\n                dynamicFormBuilderOptions,\n                dynamicForm,\n                index,\n              });\n            }\n          } else {\n            if (\n              !metadataItem.classType ||\n              isPrimitiveClass(metadataItem.classType)\n            ) {\n              addDynamicPrimitiveObjectAsFormArray<T>({\n                defaultValue,\n                metadataItem,\n                formBuilder,\n                dynamicForm,\n                index,\n              });\n            } else {\n              addDynamicTypedObjectAsFormArray<T>({\n                defaultValue,\n                metadataItem,\n                formBuilder,\n                rootFormGroup,\n                dynamicFormBuilderOptions,\n                dynamicForm,\n                index,\n              });\n            }\n          }\n        }\n      }\n    }\n  );\n}\n\nfunction addDynamicTypedObjectAsFormArray<T = Record<string, unknown>>({\n  defaultValue,\n  metadataItem,\n  formBuilder,\n  rootFormGroup,\n  dynamicFormBuilderOptions,\n  dynamicForm,\n  index,\n}: {\n  defaultValue: DeepPartial<T>;\n  metadataItem: IDynamicControlMetadata;\n  formBuilder: FormBuilder;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  rootFormGroup: DynamicFormGroup<any, any> | undefined;\n  dynamicFormBuilderOptions: DynamicFormBuilderOptions<T> | undefined;\n  dynamicForm: DynamicFormGroup<T, T>;\n  index: number;\n}) {\n  if (!metadataItem.propertyName) {\n    throw new Error('propertyName not set');\n  }\n  const defaultArray: never[] = (defaultValue as never)[\n    metadataItem.propertyName\n  ];\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const value: any[] =\n    defaultArray && defaultArray.length > 0 ? defaultArray : [];\n\n  const control = formBuilder.array([]) as unknown as DynamicFormArray;\n\n  value.forEach((item) => {\n    const form = formBuilder.group(item);\n    form.setParent(control);\n    control.push(\n      createFormControls({\n        classType: metadataItem.classType,\n        formBuilder,\n        form,\n        rootFormGroup,\n        metadata: metadataItem,\n        defaultValue: item,\n        dynamicFormBuilderOptions,\n      })\n    );\n  });\n  dynamicForm.addControl(metadataItem.propertyName, control);\n  control.classTransformMetadata = metadataItem;\n  control.classTransformMetadata.parent = dynamicForm.classTransformMetadata;\n  dynamicForm.classTransformMetadata.properties[index].ignore = false;\n}\n\nfunction addDynamicPrimitiveObjectAsFormArray<T = Record<string, unknown>>({\n  defaultValue,\n  metadataItem,\n  formBuilder,\n  dynamicForm,\n  index,\n}: {\n  defaultValue: DeepPartial<T>;\n  metadataItem: IDynamicControlMetadata;\n  formBuilder: FormBuilder;\n  dynamicForm: DynamicFormGroup<T, T>;\n  index: number;\n}) {\n  if (!metadataItem.propertyName) {\n    throw new Error('propertyName not set');\n  }\n  const defaultArray: never[] = (defaultValue as never)[\n    metadataItem.propertyName\n  ];\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const value: any[] =\n    defaultArray && defaultArray.length > 0 ? defaultArray : [];\n  const control = formBuilder.array(value) as unknown as DynamicFormArray;\n  // todo: incorrect work with addControl\n  dynamicForm.setControl(metadataItem.propertyName, control);\n  control.classTransformMetadata = metadataItem;\n  control.classTransformMetadata.parent = dynamicForm.classTransformMetadata;\n  dynamicForm.classTransformMetadata.properties[index].ignore = false;\n}\n\nfunction addDynamicTypedObjectAsFormGroup<T = Record<string, unknown>>({\n  defaultValue,\n  metadataItem,\n  formBuilder,\n  rootFormGroup,\n  dynamicFormBuilderOptions,\n  dynamicForm,\n  index,\n}: {\n  defaultValue: DeepPartial<T>;\n  metadataItem: IDynamicControlMetadata;\n  formBuilder: FormBuilder;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  rootFormGroup: DynamicFormGroup<any, any> | undefined;\n  dynamicFormBuilderOptions: DynamicFormBuilderOptions<T> | undefined;\n  dynamicForm: DynamicFormGroup<T, T>;\n  index: number;\n}) {\n  if (!metadataItem.propertyName) {\n    throw new Error('propertyName not set');\n  }\n  const value =\n    (defaultValue as never)[metadataItem.propertyName] ||\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    metadataItem.properties.reduce((all: any, cur) => {\n      if (cur.propertyName) {\n        if (cur.isArray) {\n          all[cur.propertyName] = [];\n        } else {\n          if (!cur.classType || isPrimitiveClass(cur.classType)) {\n            all[cur.propertyName] = null;\n          } else {\n            all[cur.propertyName] = {};\n          }\n        }\n      }\n      return all;\n    }, {});\n  const form = formBuilder.group({});\n  form.setParent(rootFormGroup as FormGroup);\n  const control = createFormControls({\n    classType: metadataItem.classType,\n    formBuilder,\n    form,\n    rootFormGroup,\n    metadata: metadataItem,\n    defaultValue: value,\n    dynamicFormBuilderOptions,\n  });\n  dynamicForm.addControl(metadataItem.propertyName, control);\n  control.classTransformMetadata = metadataItem;\n  control.classTransformMetadata.parent = dynamicForm.classTransformMetadata;\n  dynamicForm.classTransformMetadata.properties[index].ignore = false;\n}\n\nfunction addDynamicPrimitiveObjectAsFormGroup<T = Record<string, unknown>>({\n  defaultValue,\n  metadataItem,\n  formBuilder,\n  dynamicForm,\n  index,\n}: {\n  defaultValue: DeepPartial<T>;\n  metadataItem: IDynamicControlMetadata;\n  formBuilder: FormBuilder;\n  dynamicForm: DynamicFormGroup<T, T>;\n  index: number;\n}) {\n  if (!metadataItem.propertyName) {\n    throw new Error('propertyName not set');\n  }\n  const value = Object.getOwnPropertyDescriptor(\n    defaultValue,\n    metadataItem.propertyName\n  )\n    ? (defaultValue as never)[metadataItem.propertyName]\n    : undefined;\n  const control = formBuilder.control(value) as DynamicFormControl;\n  dynamicForm.addControl(metadataItem.propertyName, control);\n  control.classTransformMetadata = metadataItem;\n  control.classTransformMetadata.parent = dynamicForm.classTransformMetadata;\n  dynamicForm.classTransformMetadata.properties[index].ignore = false;\n}\n\nfunction addDynamicMethodsToRootFormGroup<T = Record<string, unknown>>({\n  dynamicForm,\n  rootFormGroup,\n  formBuilder,\n}: {\n  dynamicForm: DynamicFormGroup<T, T>;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  rootFormGroup: DynamicFormGroup<any, any> | undefined;\n  formBuilder: FormBuilder;\n}) {\n  dynamicForm.externalErrorsSubject = new BehaviorSubject<ClassValidatorErrors>(\n    {}\n  );\n\n  dynamicForm.patchDynamicFormBuilderOptions = (\n    dynamicFormBuilderOptions: DynamicFormBuilderOptions<T>\n  ) => {\n    if (!dynamicForm) {\n      throw new Error('rootFormGroup not set');\n    }\n    dynamicForm.dynamicFormBuilderOptions = {\n      ...dynamicForm.dynamicFormBuilderOptions,\n      ...dynamicFormBuilderOptions,\n    };\n    setValidatorsToControls(formBuilder, dynamicForm);\n    dynamicForm.patchValue(dynamicForm.value, { emitEvent: false });\n  };\n\n  dynamicForm.getObject = () => {\n    if (!dynamicForm.classTransformMetadata.classType) {\n      throw new Error('classType not set');\n    }\n    return plainToClass(\n      dynamicForm.classTransformMetadata.classType,\n      {\n        ...dynamicForm.value,\n      },\n      dynamicForm.dynamicFormBuilderOptions.classTransformOptions\n    ) as T;\n  };\n\n  dynamicForm.setObject = (object: T) => {\n    setValuesForControls(\n      formBuilder,\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      dynamicForm as any,\n      classToPlain(\n        object,\n        dynamicForm.dynamicFormBuilderOptions.classTransformToPlainOptions\n      )\n    );\n    setValidatorsToControls(formBuilder, dynamicForm, rootFormGroup);\n  };\n\n  dynamicForm.refresh = () => {\n    setValidatorsToControls(formBuilder, dynamicForm, rootFormGroup);\n    dynamicForm.patchValue(dynamicForm.value);\n  };\n\n  dynamicForm.getJSON = () => {\n    return recursiveRemoveDynamicControlOptions(cloneDeep(dynamicForm.value));\n  };\n\n  dynamicForm.setJSON = (\n    value: T,\n    options?: {\n      onlySelf?: boolean;\n      emitEvent?: boolean;\n    }\n  ) => {\n    setValuesForControls(formBuilder, dynamicForm, value);\n    setValidatorsToControls(formBuilder, dynamicForm, rootFormGroup);\n    dynamicForm.patchValue(dynamicForm.value, options);\n  };\n\n  dynamicForm.setExternalErrors = (externalErrors: ClassValidatorErrors) => {\n    dynamicForm.externalErrorsSubject.next(\n      recursiveRemoveDynamicControlOptions(cloneDeep(externalErrors))\n    );\n    dynamicForm.patchValue(dynamicForm.value, { emitEvent: false });\n  };\n\n  dynamicForm.getExternalErrors = () => {\n    return recursiveRemoveDynamicControlOptions(\n      cloneDeep(dynamicForm.externalErrorsSubject.value)\n    );\n  };\n\n  const dynamicFormProxy = new Proxy(dynamicForm, {\n    get(target: typeof dynamicForm, prop: keyof typeof dynamicForm) {\n      if (prop === 'object') {\n        return target.getObject();\n      }\n      if (prop === 'json') {\n        return target.getJSON();\n      }\n      if (prop === 'externalErrors') {\n        return target.getExternalErrors();\n      }\n      return target[prop];\n    },\n    set(\n      target: typeof dynamicForm,\n      prop: keyof typeof dynamicForm,\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      value: any\n    ) {\n      if (prop === 'object') {\n        target.setObject(value);\n        return true;\n      }\n      if (prop === 'json') {\n        target.setJSON(value);\n        return true;\n      }\n      if (prop === 'externalErrors') {\n        target.setExternalErrors(value);\n        return true;\n      }\n      Object.defineProperty(target, prop, {\n        value,\n        configurable: true,\n      });\n      return true;\n    },\n  });\n\n  dynamicFormProxy.patchValue(dynamicFormProxy.value, { emitEvent: false });\n  setValidatorsToControls(formBuilder, dynamicFormProxy, rootFormGroup);\n  return dynamicFormProxy;\n}\n\nfunction addDynamicMethodsToFormGroup<T = Record<string, unknown>>(\n  dynamicForm: DynamicFormGroup<T, T>\n) {\n  dynamicForm.getClassValidatorErrors = (\n    control: AbstractControl | null,\n    nullIfEmpty: boolean\n  ) => {\n    const dynamicControl = control as unknown as DynamicFormProperties;\n    if (!dynamicControl?.classValidatorErrorsSubject) {\n      return of(null);\n    }\n    return dynamicControl.classValidatorErrorsSubject.pipe(\n      map((errors) => {\n        if (\n          dynamicControl?.classTransformMetadata?.propertyName &&\n          Object.getOwnPropertyDescriptor(\n            errors,\n            dynamicControl?.classTransformMetadata?.propertyName\n          )\n        ) {\n          return errors[dynamicControl?.classTransformMetadata?.propertyName]\n            ?.messages?.length === 0 && nullIfEmpty\n            ? null\n            : errors[dynamicControl?.classTransformMetadata?.propertyName];\n        }\n        return null;\n      })\n    );\n  };\n}\n\nfunction addCommonAsyncValidatorToRootForm<T>(\n  rootFormGroup: DynamicFormGroup<T>\n) {\n  if (!rootFormGroup.commonAsyncValidator) {\n    rootFormGroup.commonAsyncValidatorSubject = new ReplaySubject<\n      null | string\n    >();\n    rootFormGroup.commonAsyncValidator = (\n      control: DynamicFormProperties | AbstractControl\n    ): Observable<ValidationErrors | null> => {\n      const metadata = (control as DynamicFormProperties)\n        ?.classTransformMetadata;\n\n      if (!metadata) {\n        throw new Error('classTransformMetadata not found in form group');\n      }\n\n      const rootValue = rootFormGroup ? rootFormGroup.value : null;\n      const { inputPath, errorsPath, controlPath } = findControlPaths(control);\n\n      const object = setDynamicControlValue<T>(\n        rootFormGroup,\n        rootValue,\n        controlPath,\n        control,\n        metadata\n      );\n\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      setDynamicControlOptions(object, {\n        rootValue,\n        controlPath,\n        control,\n        metadata,\n      });\n\n      const localClassValidatorOptions = cloneDeep(\n        rootFormGroup.dynamicFormBuilderOptions.classValidatorOptions\n      );\n      const globalClassValidatorOptions = cloneDeep(\n        getGlobalDynamicFormBuilderOptions().classValidatorOptions\n      );\n      const classValidatorOptions = mergeWith(\n        globalClassValidatorOptions,\n        localClassValidatorOptions\n      );\n      return (\n        rootFormGroup.commonAsyncValidatorFirstChanged\n          ? from(validate(object as never, classValidatorOptions))\n          : of(validateSync(object as never, classValidatorOptions))\n      ).pipe(\n        debounceTime(700),\n        map((rootClassValidatorErrors: ValidationError[]) => {\n          setRootFormGroupClassValidatorErrors<T>(\n            rootFormGroup,\n            rootClassValidatorErrors\n          );\n\n          const dynamicFormControl = setFormControlClassValidatorErrors<T>(\n            control,\n            rootFormGroup,\n            errorsPath,\n            inputPath\n          );\n\n          return Object.keys(dynamicFormControl.classValidatorErrors || {})\n            .length > 0\n            ? dynamicFormControl.classValidatorErrors\n            : null;\n        })\n      );\n    };\n  }\n}\n\nfunction setDynamicControlValue<T>(\n  rootFormGroup: DynamicFormGroup<T, T>,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  rootValue: any,\n  controlPath: string,\n  control: DynamicFormProperties<unknown> | AbstractControl,\n  metadata: IDynamicControlMetadata\n) {\n  if (!rootFormGroup) {\n    throw Error('rootFormGroup not set');\n  }\n  if (!rootFormGroup.classTransformMetadata.classType) {\n    throw Error('classType not set');\n  }\n\n  // need for resize arrays\n  lodashSet(rootValue, controlPath, control.value);\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const object: any = plainToClass(\n    rootFormGroup.classTransformMetadata.classType,\n    rootValue,\n    rootFormGroup.dynamicFormBuilderOptions.classTransformOptions\n  );\n\n  // set original values of inputs\n  if (\n    metadata.isArray &&\n    (!metadata.classType || isPrimitiveClass(metadata.classType))\n  ) {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    control.value.forEach((item: any, index: number) => {\n      lodashSet(object, `${controlPath}.${index}`, control.value[index]);\n    });\n  }\n\n  // need for correct work ValidateIfUpdater\n  if (metadata.parent?.classType && metadata.propertyIndex === undefined) {\n    replaceLastPropertyToDynamicControlOptionsByDotPath(\n      controlPath,\n      object,\n      rootValue,\n      control,\n      metadata\n    );\n  }\n  return object;\n}\n\nfunction findControlPaths(\n  control: DynamicFormProperties<unknown> | AbstractControl\n) {\n  const angularFormValidatorPath: string[] = [];\n  const inputPath: string[] = [];\n  const errorsPath: string[] = [];\n  let ctrl = control as DynamicFormProperties;\n  while (ctrl) {\n    const key =\n      ctrl.classTransformMetadata?.propertyIndex?.toString() ||\n      ctrl.classTransformMetadata?.propertyName ||\n      null;\n    const parent = ctrl.parent as DynamicFormProperties;\n    if (key !== null) {\n      inputPath.push(key);\n      errorsPath.push(key);\n      if (parent?.parent) {\n        errorsPath.push('children');\n      }\n      if (!parent?.classTransformMetadata?.isArray) {\n        angularFormValidatorPath.push(key);\n      }\n    }\n    ctrl = parent;\n  }\n  const controlPath = inputPath.reverse().join('.');\n  return {\n    inputPath,\n    errorsPath,\n    controlPath,\n    angularFormValidatorPath: angularFormValidatorPath.reverse().join('.'),\n  };\n}\n\nfunction setFormControlClassValidatorErrors<T>(\n  control: DynamicFormProperties<unknown> | AbstractControl,\n  rootFormGroup: DynamicFormGroup<T, T>,\n  errorsPath: string[],\n  inputPath: string[]\n) {\n  const dynamicFormControl = control as DynamicFormControl;\n\n  const propErrors = lodashGet(\n    rootFormGroup.classValidatorErrors,\n    errorsPath.reverse()\n  );\n  dynamicFormControl.classValidatorErrors =\n    Object.keys(propErrors || {}).length > 0\n      ? {\n          [inputPath.reverse()[0]]: propErrors || {},\n        }\n      : {};\n\n  if (!dynamicFormControl.classValidatorErrorsSubject) {\n    dynamicFormControl.classValidatorErrors = {};\n    dynamicFormControl.classValidatorErrorsSubject =\n      new BehaviorSubject<ClassValidatorErrors>({});\n  }\n  dynamicFormControl.classValidatorErrorsSubject.next(\n    dynamicFormControl.classValidatorErrors\n  );\n\n  if (!dynamicFormControl.customValidateErrors) {\n    dynamicFormControl.customValidateErrors =\n      new BehaviorSubject<ShortValidationErrors>({});\n  }\n  dynamicFormControl.customValidateErrors.next(\n    transformClassValidatorErrorsToShortValidationErrors(\n      dynamicFormControl.classValidatorErrors\n    )\n  );\n  return dynamicFormControl;\n}\n\nfunction setRootFormGroupClassValidatorErrors<T>(\n  rootFormGroup: DynamicFormGroup<T, T>,\n  rootClassValidatorErrors: ValidationError[]\n) {\n  if (!rootFormGroup) {\n    throw new Error('rootFormGroup not set');\n  }\n\n  rootFormGroup.classValidatorErrors =\n    mergeErrors(\n      rootFormGroup.externalErrorsSubject?.value || {},\n      transformValidationErrorsToClassValidatorErrors(\n        rootClassValidatorErrors\n      ) || {}\n    ) || {};\n\n  if (!rootFormGroup.classValidatorErrorsSubject) {\n    rootFormGroup.classValidatorErrors = {};\n    rootFormGroup.classValidatorErrorsSubject =\n      new BehaviorSubject<ClassValidatorErrors>({});\n  }\n  rootFormGroup.classValidatorErrorsSubject.next(\n    rootFormGroup.classValidatorErrors\n  );\n\n  if (!rootFormGroup.customValidateErrors) {\n    rootFormGroup.customValidateErrors =\n      new BehaviorSubject<ShortValidationErrors>({});\n  }\n  rootFormGroup.customValidateErrors.next(\n    mergeErrors(\n      collectDynamicFormGroupErrors(rootFormGroup),\n      transformClassValidatorErrorsToShortValidationErrors(\n        rootFormGroup.classValidatorErrors\n      )\n    )\n  );\n}\n\nfunction subscribeToRootFormGroupValueChanges<T>(\n  rootFormGroup: DynamicFormGroup<T, T>\n) {\n  if (!rootFormGroup.commonAsyncValidatorFirstChangedSubscription) {\n    rootFormGroup.commonAsyncValidatorFirstChangedSubscription =\n      rootFormGroup?.valueChanges\n        .pipe(\n          tap(() => {\n            if (!rootFormGroup) {\n              throw Error('rootFormGroup not set');\n            }\n            rootFormGroup.commonAsyncValidatorFirstChanged = true;\n          }),\n          delay(100),\n          tap(() => {\n            if (!rootFormGroup) {\n              throw Error('rootFormGroup not set');\n            }\n\n            rootFormGroup.customValidateErrors.next(\n              mergeErrors(\n                collectDynamicFormGroupErrors(rootFormGroup),\n                transformClassValidatorErrorsToShortValidationErrors(\n                  rootFormGroup.classValidatorErrors\n                )\n              )\n            );\n          }),\n          catchError((err) => {\n            console.log({ err, rootFormGroup });\n            return of(null);\n          })\n        )\n        .subscribe();\n  }\n}\n\nfunction subscribeToGlobalDynamicFormBuilderOptionsChange<T>(\n  formBuilder: FormBuilder,\n  rootFormGroup: DynamicFormGroup<T, T>\n) {\n  if (!rootFormGroup.globalDynamicFormBuilderOptionsChangedSubscription) {\n    rootFormGroup.globalDynamicFormBuilderOptionsChangedSubscription =\n      getGlobalDynamicFormBuilderOptionsSubject()\n        .pipe(\n          tap(() => {\n            setValidatorsToControls(formBuilder, rootFormGroup);\n            rootFormGroup.patchValue(rootFormGroup.value, { emitEvent: false });\n          }),\n          catchError((err) => {\n            console.log({ err, rootFormGroup });\n            return of(null);\n          })\n        )\n        .subscribe();\n  }\n}\n","import {\n  AbstractControl,\n  AbstractControlOptions,\n  FormArray,\n  FormControl,\n  FormGroup,\n  ValidationErrors,\n  ValidatorFn,\n} from '@angular/forms';\nimport {\n  ClassConstructor,\n  ClassTransformOptions,\n} from 'class-transformer-global-storage';\nimport { ValidatorOptions } from 'class-validator-multi-lang';\nimport { BehaviorSubject, Observable, ReplaySubject, Subscription } from 'rxjs';\n\nexport type DeepPartial<T> = {\n  [P in keyof T]?: DeepPartial<T[P]>;\n};\n\nexport interface IDynamicControlMetadata {\n  classType: ClassConstructor<unknown> | null;\n  propertyName: string | null;\n  propertyIndex?: number;\n  isArray: boolean;\n  properties: IDynamicControlMetadata[];\n  withAncestors?: boolean;\n  ignore?: boolean;\n  parent?: IDynamicControlMetadata;\n}\n\nexport type AngularControlValidators<T> =\n  | {\n      [P in keyof T]: AngularControlValidators<T[P]>;\n    }\n  | ValidatorFn\n  | ValidatorFn[]\n  | AbstractControlOptions\n  | undefined\n  | null;\n\nexport interface DynamicControlOptions {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  rootValue: any;\n  controlPath: string;\n  control: AbstractControl | DynamicFormProperties;\n  metadata: IDynamicControlMetadata;\n}\n\nexport type DynamicFormProperties<T = unknown> = {\n  classTransformMetadata: IDynamicControlMetadata;\n\n  externalErrors: ClassValidatorErrors;\n  classValidatorErrors: ClassValidatorErrors;\n\n  externalErrorsSubject: BehaviorSubject<ClassValidatorErrors>;\n  classValidatorErrorsSubject: BehaviorSubject<ClassValidatorErrors>;\n  customValidateErrors: BehaviorSubject<ShortValidationErrors>;\n\n  parent: AbstractControl['parent'] | DynamicFormProperties<T>;\n  value: AbstractControl['value'];\n};\n\nexport type DynamicFormArray = FormArray & DynamicFormProperties;\n\nexport type DynamicFormControl = FormControl & DynamicFormProperties;\n\nexport enum DynamicFormBuilderOptionsKeys {\n  classValidatorOptions = 'classValidatorOptions',\n  classTransformOptions = 'classTransformOptions',\n  classTransformToPlainOptions = 'classTransformToPlainOptions',\n  angularValidators = 'angularValidators',\n}\n\nexport type DynamicClassTransformOptions = ClassTransformOptions & {\n  excludeGroups?: string[];\n};\n\nexport interface DynamicFormBuilderOptions<T> {\n  [DynamicFormBuilderOptionsKeys.classValidatorOptions]?: ValidatorOptions;\n  [DynamicFormBuilderOptionsKeys.classTransformOptions]?: DynamicClassTransformOptions;\n  [DynamicFormBuilderOptionsKeys.classTransformToPlainOptions]?: ClassTransformOptions;\n  [DynamicFormBuilderOptionsKeys.angularValidators]?: AngularControlValidators<T>;\n}\n\nexport interface ClassValidatorErrors {\n  [key: string]: {\n    messages?: string[];\n    children?: ClassValidatorErrors;\n  };\n}\nexport interface ShortValidationErrors {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  [key: string]: string[] | ShortValidationErrors | any;\n}\n\nexport type DynamicFormGroup<T = never, TJSON = T> = FormGroup &\n  DynamicFormProperties<T> & {\n    globalDynamicFormBuilderOptionsChangedSubscription: Subscription;\n\n    dynamicFormBuilderOptions: DynamicFormBuilderOptions<T>;\n\n    commonAsyncValidatorSubject: ReplaySubject<null | string>;\n    commonAsyncValidatorFirstChanged: boolean;\n    commonAsyncValidatorFirstChangedSubscription: Subscription;\n    commonAsyncValidator: (\n      control: DynamicFormProperties | AbstractControl\n    ) => Observable<ValidationErrors | null>;\n\n    setExternalErrors(externalErrors: ClassValidatorErrors): void;\n    getExternalErrors(): ClassValidatorErrors;\n\n    getClassValidatorErrors: (\n      control: AbstractControl | null,\n      nullIfEmpty: boolean\n    ) => Observable<ClassValidatorErrors[''] | null>;\n\n    setDynamicValue(\n      value: DeepPartial<T>,\n      options?: {\n        onlySelf?: boolean;\n        emitEvent?: boolean;\n      }\n    ): void;\n\n    patchDynamicFormBuilderOptions(\n      dynamicFormBuilderOptions: DynamicFormBuilderOptions<T>\n    ): void;\n\n    refresh: () => void;\n\n    object: T;\n    json: TJSON;\n\n    getObject: () => T;\n    setObject: (object: T) => void;\n\n    getJSON: () => TJSON;\n    setJSON: (object: TJSON) => void;\n  };\n","import { AbstractControlOptions, FormBuilder } from '@angular/forms';\nimport { ClassConstructor } from 'class-transformer-global-storage';\nimport { createFormControls } from './lib';\nimport {\n  DynamicFormBuilderOptions,\n  DynamicFormBuilderOptionsKeys,\n  DynamicFormGroup,\n} from './types/types';\nexport class DynamicFormBuilder extends FormBuilder {\n  rootFormGroup<T = Record<string, unknown>>(\n    classType: ClassConstructor<T> | null,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    controlsConfig?: { [key: string]: any },\n    options?: (AbstractControlOptions & DynamicFormBuilderOptions<T>) | null\n  ): DynamicFormGroup<T>;\n  rootFormGroup<T = Record<string, unknown>>(\n    classType: ClassConstructor<T> | null,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    controlsConfig: { [key: string]: any },\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    options: { [key: string]: any }\n  ): DynamicFormGroup<T>;\n  rootFormGroup<T = Record<string, unknown>>(\n    classType: ClassConstructor<T> | null,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    controlsConfig?: any,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    options?: any\n  ): DynamicFormGroup<T> {\n    let defaultValue = controlsConfig || {};\n    let dynamicFormBuilderOptions = options;\n    if (\n      !options &&\n      Object.keys(controlsConfig || {}).find((controlName) =>\n        Object.keys(DynamicFormBuilderOptionsKeys).find(\n          (optionsKey) => optionsKey === controlName\n        )\n      )\n    ) {\n      dynamicFormBuilderOptions = controlsConfig;\n      defaultValue = {};\n    }\n    const form = createFormControls<T>({\n      classType,\n      form: super.group(\n        {},\n        dynamicFormBuilderOptions?.angularValidators ||\n          dynamicFormBuilderOptions\n      ),\n      formBuilder: this,\n      defaultValue,\n      dynamicFormBuilderOptions,\n    });\n    return form;\n  }\n\n  childFormGroup<T = Record<string, unknown>>(\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    rootFormGroup: DynamicFormGroup<any, any>,\n    classType: ClassConstructor<T> | null,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    controlsConfig?: { [key: string]: any }\n  ): DynamicFormGroup<T>;\n  childFormGroup<T = Record<string, unknown>>(\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    rootFormGroup: DynamicFormGroup<any, any>,\n    classType: ClassConstructor<T> | null,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    controlsConfig: { [key: string]: any }\n  ): DynamicFormGroup<T>;\n  childFormGroup<T = Record<string, unknown>>(\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    rootFormGroup: DynamicFormGroup<any, any>,\n    classType: ClassConstructor<T> | null,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    controlsConfig?: any\n  ): DynamicFormGroup<T> {\n    const defaultValue = controlsConfig || {};\n    const form = createFormControls<T>({\n      classType,\n      form: super.group({}),\n      formBuilder: this,\n      defaultValue,\n      rootFormGroup,\n    });\n    return form;\n  }\n}\n","import { AbstractControl } from '@angular/forms';\nimport {\n  Validate,\n  ValidationArguments,\n  ValidatorConstraint,\n  ValidatorConstraintInterface,\n} from 'class-validator-multi-lang';\nimport { DynamicControlOptions } from '../types/types';\nimport {\n  getCustomDataToRootFormGroup,\n  getDynamicControlOptions,\n  setCustomDataToRootFormGroup,\n} from '../utils/utils';\n\nexport function ValidateIfUpdater(\n  updaterFn: (\n    controlPath: string,\n    value: string,\n    rootFormGroup: AbstractControl,\n    dynamicControlOptions: DynamicControlOptions\n  ) => boolean\n) {\n  return Validate(dynamicValidateIfUpdater(updaterFn));\n}\n\nexport function dynamicValidateIfUpdater(\n  updaterFn: (\n    controlPath: string,\n    value: string,\n    rootFormGroup: AbstractControl,\n    dynamicControlOptions: DynamicControlOptions\n  ) => boolean\n) {\n  @ValidatorConstraint()\n  class ValidateIfUpdaterConstraint implements ValidatorConstraintInterface {\n    validate(value: string, validationArguments?: ValidationArguments) {\n      const dynamicFormBuilderOptions = getDynamicControlOptions(\n        validationArguments?.object\n      );\n      const rootFormGroup = dynamicFormBuilderOptions?.control\n        .root as AbstractControl;\n      if (rootFormGroup) {\n        const key = `${ValidateIfUpdater.name}_${dynamicFormBuilderOptions?.controlPath}`;\n        const prevValue = getCustomDataToRootFormGroup(\n          rootFormGroup,\n          key,\n          null\n        );\n        if (value !== prevValue) {\n          setTimeout(() => {\n            const appiled = updaterFn(\n              dynamicFormBuilderOptions?.controlPath,\n              value,\n              rootFormGroup,\n              dynamicFormBuilderOptions\n            );\n            if (appiled) {\n              setCustomDataToRootFormGroup(rootFormGroup, key, value);\n            }\n          }, 100);\n        }\n      }\n      return true;\n    }\n  }\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return ValidateIfUpdaterConstraint as any;\n}\n","import {\n  Expose,\n  ExposeOptions,\n  Transform,\n  TransformFnParams,\n} from 'class-transformer-global-storage';\n\n// for correct work expose with js object\n// https://github.com/typestack/class-transformer/issues/365\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function ExposeNested(options?: ExposeOptions & { default: any }) {\n  const exposeFn = Expose(options);\n  const transformFn = (propertyKey: string) =>\n    Transform((params: TransformFnParams) => {\n      return (\n        (params.obj && Object.getOwnPropertyDescriptor(params.obj, propertyKey)\n          ? params.obj[propertyKey]\n          : options?.default) || params.value\n      );\n    });\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return (target: any, propertyKey: string) => {\n    transformFn(propertyKey)(target, propertyKey);\n    exposeFn(target, propertyKey);\n  };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}