{"version":3,"file":"rxap-form-system.mjs","sources":["../../../../../packages/angular/form-system/src/lib/validators/is-equal-to.ts","../../../../../packages/angular/form-system/src/lib/decorators/metadata-keys.ts","../../../../../packages/angular/form-system/src/lib/decorators/use-data-source.ts","../../../../../packages/angular/form-system/src/lib/mixins/extract-control.mixin.ts","../../../../../packages/angular/form-system/src/lib/error.ts","../../../../../packages/angular/form-system/src/lib/mixins/extract-data-sources.mixin.ts","../../../../../packages/angular/form-system/src/lib/mixins/extract-form-definition.mixin.ts","../../../../../packages/angular/form-system/src/lib/mixins/extract-options-data-source.mixin.ts","../../../../../packages/angular/form-system/src/lib/validators/is-selectable-value.directive.ts","../../../../../packages/angular/form-system/src/lib/mixins/adapters.ts","../../../../../packages/angular/form-system/src/lib/mixins/apply-use-function.adapters.ts","../../../../../packages/angular/form-system/src/lib/mixins/apply-use-method.adapters.ts","../../../../../packages/angular/form-system/src/lib/mixins/extract-control-from-parent.mixin.ts","../../../../../packages/angular/form-system/src/lib/mixins/extract-functions.mixin.ts","../../../../../packages/angular/form-system/src/lib/mixins/extract-function.mixin.ts","../../../../../packages/angular/form-system/src/lib/mixins/extract-is-value-function.mixin.ts","../../../../../packages/angular/form-system/src/lib/mixins/extract-methods.mixin.ts","../../../../../packages/angular/form-system/src/lib/mixins/extract-method.mixin.ts","../../../../../packages/angular/form-system/src/lib/mixins/extract-options-method.mixin.ts","../../../../../packages/angular/form-system/src/lib/mixins/extract-resolve-method.mixin.ts","../../../../../packages/angular/form-system/src/lib/mixins/extract-to-display-function.mixin.ts","../../../../../packages/angular/form-system/src/lib/directives/array/for-form-array-items.directive.ts","../../../../../packages/angular/form-system/src/lib/directives/array/form-array-add-item-button.directive.ts","../../../../../packages/angular/form-system/src/lib/directives/array/form-array-item-button.ts","../../../../../packages/angular/form-system/src/lib/directives/array/form-array-item-remove-button.directive.ts","../../../../../packages/angular/form-system/src/lib/directives/array/form-array-item-restore-button.directive.ts","../../../../../packages/angular/form-system/src/lib/directives/array/form-array-removable.directive.ts","../../../../../packages/angular/form-system/src/lib/directives/options-from-method.directive.ts","../../../../../packages/angular/form-system/src/lib/directives/autocomplete-options-from-method.directive.ts","../../../../../packages/angular/form-system/src/lib/directives/control-hide-show.directive.ts","../../../../../packages/angular/form-system/src/lib/directives/input-select-options.directive.ts","../../../../../packages/angular/form-system/src/lib/directives/form-directives.module.ts","../../../../../packages/angular/form-system/src/lib/directives/options-from-remote-method.directive.ts","../../../../../packages/angular/form-system/src/lib/directives/test-ng-control.ts","../../../../../packages/angular/form-system/src/lib/decorators/use-component.ts","../../../../../packages/angular/form-system/src/lib/decorators/use-form-component.ts","../../../../../packages/angular/form-system/src/lib/control-data-source.ts","../../../../../packages/angular/form-system/src/lib/form-context-from-activated-route.factory.ts","../../../../../packages/angular/form-system/src/lib/form-system-control.directive.ts","../../../../../packages/angular/form-system/src/lib/submit-context-form-adapter.factory.ts","../../../../../packages/angular/form-system/src/index.ts","../../../../../packages/angular/form-system/src/rxap-form-system.ts"],"sourcesContent":["import {\n  Directive,\n  forwardRef,\n  Input,\n} from '@angular/core';\nimport {\n  AbstractControl,\n  NG_VALIDATORS,\n  ValidationErrors,\n  Validator,\n} from '@angular/forms';\nimport { Required } from '@rxap/utilities';\n\n@Directive({\n  selector: '[rxapIsEqualTo]',\n  providers: [\n    {\n      provide: NG_VALIDATORS,\n      multi: true,\n      useExisting: forwardRef(() => IsEqualToDirective),\n    },\n  ],\n  standalone: true,\n})\nexport class IsEqualToDirective implements Validator {\n\n  @Input({\n    required: true,\n    alias: 'rxapIsEqualTo',\n  })\n  public set equalTo(value: any) {\n    this._equalTo = value;\n    if (this._onChange) {\n      this._onChange();\n    }\n  }\n\n  private _onChange!: () => void;\n\n\n  private _equalTo!: any;\n\n  public validate(control: AbstractControl): ValidationErrors | null {\n    if (this._equalTo === null || this._equalTo === control.value) {\n      return null;\n    }\n    return {\n      isEqualTo: {\n        value: this._equalTo,\n        actualValue: control.value,\n      },\n    };\n  }\n\n  /**\n   * @description\n   * Registers a callback function to call when the validator inputs change.\n   *\n   * @param fn The callback function\n   */\n  public registerOnValidatorChange(fn: () => void): void {\n    this._onChange = fn;\n  }\n\n}\n\n\n","export enum FormSystemMetadataKeys {\n  COMPONENTS = 'rxap/form-system/components',\n  DATA_SOURCES = 'rxap/form-system/data-sources',\n  COMPONENTS_PROPERTIES = 'rxap/form-system/components-properties',\n  FORM_COMPONENT = 'rxap/window-form-system/form-component',\n}\n","import { BaseDataSource } from '@rxap/data-source';\nimport { FormSystemMetadataKeys } from './metadata-keys';\nimport { IdOrInstanceOrToken } from '@rxap/definition';\nimport { setMetadataMapMap } from '@rxap/reflect-metadata';\n\nexport interface UseDataSourceSettings<Source = any, Target = Source> {\n  transformer?: (source: Source) => Target;\n}\n\nexport interface UseDataSourceValue<Source = any, Target = Source> {\n  dataSource: IdOrInstanceOrToken<BaseDataSource>,\n  settings?: UseDataSourceSettings<Source, Target>,\n\n  /**\n   * The last value of the data source\n   */\n  lastValue?: Target,\n}\n\nexport function UseDataSource<Data>(\n  dataSource: IdOrInstanceOrToken<BaseDataSource<Data>>,\n  name: string,\n  settings?: UseDataSourceSettings,\n) {\n  return function (target: any, propertyKey: string) {\n    const value: UseDataSourceValue<Data> = {\n      dataSource,\n      settings,\n    };\n    setMetadataMapMap(propertyKey, name, value, FormSystemMetadataKeys.DATA_SOURCES, target);\n  };\n}\n","import {\n  AbstractControlDirective,\n  NgControl,\n} from '@angular/forms';\nimport { MatFormField } from '@angular/material/form-field';\nimport { RxapFormControl } from '@rxap/forms';\n\nexport class ExtractControlMixin {\n\n  protected ngControl!: NgControl | AbstractControlDirective | null;\n\n  protected matFormField?: MatFormField | null;\n\n  protected control?: RxapFormControl;\n\n  protected extractControl(ngControl: NgControl | AbstractControlDirective | null = this.ngControl ??\n  this.matFormField?._control?.ngControl ??\n  null): RxapFormControl {\n\n    if (!ngControl) {\n      throw new Error('The ngControl is not defined!');\n    }\n\n    this.ngControl = ngControl;\n\n    const control = this.ngControl.control;\n\n    if (!(control instanceof RxapFormControl)) {\n      throw new Error('Control is not a RxapFormControl!');\n    }\n\n    return this.control = control;\n  }\n\n}\n","import { RxapError } from '@rxap/utilities';\n\nexport class RxapFormSystemError extends RxapError {\n\n  constructor(message: string, code: string, className?: string) {\n    super('@rxap/form-system', message, code, className);\n  }\n\n}\n","import { FormDefinition } from '@rxap/forms';\nimport { RxapFormSystemError } from '../error';\nimport { FormSystemMetadataKeys } from '../decorators/metadata-keys';\nimport { UseDataSourceValue } from '../decorators/use-data-source';\nimport { getMetadata } from '@rxap/reflect-metadata';\n\nexport class ExtractDataSourcesMixin {\n\n  protected extractDataSources(formDefinition: FormDefinition, controlId: string): Map<string, UseDataSourceValue> {\n    const map = getMetadata<Map<string, Map<string, UseDataSourceValue>>>(\n      FormSystemMetadataKeys.DATA_SOURCES,\n      Object.getPrototypeOf(formDefinition),\n    );\n\n    if (!map) {\n      throw new RxapFormSystemError('Could not extract the use data source map from the form definition instance', '');\n    }\n\n    if (!map.has(controlId)) {\n      throw new RxapFormSystemError('A use data source definition does not exists in the form definition metadata', '');\n    }\n\n    return map.get(controlId)!;\n  }\n\n}\n","import {\n  AbstractControl,\n  FormDefinition,\n} from '@rxap/forms';\nimport { RxapFormSystemError } from '../error';\n\nexport class ExtractFormDefinitionMixin {\n\n  // TODO : change to AbstractControl from @rxap/forms\n  protected extractFormDefinition(control: AbstractControl): FormDefinition {\n    const formDefinition = control.rxapFormDefinition;\n\n    if (!formDefinition) {\n      throw new RxapFormSystemError('Could not find the form definition instance', '');\n    }\n\n    return formDefinition;\n  }\n\n}\n","import {\n  Injector,\n  isDevMode,\n} from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport {\n  BaseDataSource,\n  BaseDataSourceMetadata,\n  BaseDataSourceViewer,\n  DataSourceLoader,\n  PipeDataSource,\n} from '@rxap/data-source';\nimport { IdOrInstanceOrToken } from '@rxap/definition';\nimport { RxapFormControl } from '@rxap/forms';\nimport { Mixin } from '@rxap/mixin';\nimport { ControlOptions } from '@rxap/utilities';\nimport {\n  map,\n  tap,\n} from 'rxjs/operators';\nimport {\n  UseDataSource,\n  UseDataSourceSettings,\n  UseDataSourceValue,\n} from '../decorators/use-data-source';\nimport { InputSelectOptionsSettings } from '../directives/input-select-options.directive';\nimport { ExtractControlMixin } from './extract-control.mixin';\nimport { ExtractDataSourcesMixin } from './extract-data-sources.mixin';\nimport { ExtractFormDefinitionMixin } from './extract-form-definition.mixin';\n\nexport type UseOptionsDataSourceSettings<Source> = UseDataSourceSettings<Source, ControlOptions | Record<string, any>>\n\nexport const DATA_SOURCE_NAME = 'options';\n\nexport function ComposeOptionsTransformers(...fnc: Array<(value: any) => any>): (value: any) => any {\n  return base => fnc.reduce((source, transform) => transform(source), base);\n}\n\nexport function UseOptionsDataSource<Source>(\n  dataSource: IdOrInstanceOrToken<BaseDataSource<Source>>,\n  settings?: InputSelectOptionsSettings<Source>,\n): (\n  target: any,\n  propertyKey: string,\n) => any;\nexport function UseOptionsDataSource(\n  dataSource: IdOrInstanceOrToken<BaseDataSource>,\n  settings?: InputSelectOptionsSettings<ControlOptions>,\n) {\n  return function (target: any, propertyKey: string) {\n    UseDataSource(dataSource, DATA_SOURCE_NAME, settings)(target, propertyKey);\n  };\n}\n\nexport interface ExtractOptionsDataSourceMixin extends ExtractFormDefinitionMixin, ExtractDataSourcesMixin,\n                                                       ExtractControlMixin {\n}\n\n@Mixin(ExtractControlMixin, ExtractFormDefinitionMixin, ExtractDataSourcesMixin)\nexport class ExtractOptionsDataSourceMixin {\n\n  protected settings?: UseOptionsDataSourceSettings<any>;\n\n  protected readonly dataSourceLoader!: DataSourceLoader;\n\n  protected metadata?: BaseDataSourceMetadata;\n\n  protected viewer?: BaseDataSourceViewer;\n\n  protected dataSource?: BaseDataSource<ControlOptions | Record<string, any>>;\n\n  protected readonly injector!: Injector;\n\n  protected useDataSourceValue?: UseDataSourceValue<ControlOptions | Record<string, any>>;\n\n  protected extractOptionsDatasource(control?: AbstractControl): BaseDataSource<ControlOptions | Record<string, any>> {\n    control ??= this.extractControl();\n\n    if (!(control instanceof RxapFormControl)) {\n      throw new Error('Ensure to use a RxapFromControl');\n    }\n\n    const formDefinition = this.extractFormDefinition(control);\n\n    const useDataSourceValueMap = this.extractDataSources(formDefinition, control.controlId);\n\n    if (!useDataSourceValueMap.has('options')) {\n      throw new Error(`The data source with the name 'options' is not defined`);\n    }\n\n    const useDataSourceValue = this.useDataSourceValue = useDataSourceValueMap.get('options')!;\n\n    this.settings = this.useDataSourceValue.settings ?? {};\n\n    let dataSource: BaseDataSource;\n\n    try {\n\n      dataSource = this.dataSourceLoader.load(\n        useDataSourceValue.dataSource,\n        this.metadata,\n        this.injector,\n      );\n\n    } catch (e: any) {\n\n      if (e.name && e.name === 'NullInjectorError') {\n        if (isDevMode()) {\n          console.error('Cloud not inject the options data source', this.useDataSourceValue);\n        }\n        throw new Error('Cloud not inject the options data source:\\n' + e.message);\n      }\n\n      throw e;\n\n    }\n\n    if (this.settings?.transformer) {\n      dataSource = new PipeDataSource(\n        dataSource,\n        map(this.settings.transformer),\n        tap(options => useDataSourceValue.lastValue = options),\n      );\n    } else {\n      dataSource = new PipeDataSource(\n        dataSource,\n        tap(options => useDataSourceValue.lastValue = options),\n      );\n    }\n\n    return this.dataSource = dataSource;\n  }\n\n}\n","import {\n  AbstractControl,\n  NG_VALIDATORS,\n  ValidationErrors,\n  Validator,\n} from '@angular/forms';\nimport {\n  Directive,\n  forwardRef,\n  Inject,\n  INJECTOR,\n  Injector,\n  Input,\n  isDevMode,\n} from '@angular/core';\nimport {\n  BaseDataSourceViewer,\n  DataSourceLoader,\n} from '@rxap/data-source';\nimport { Mixin } from '@rxap/mixin';\nimport { ControlOptions } from '@rxap/utilities';\nimport { ExtractOptionsDataSourceMixin } from '../mixins/extract-options-data-source.mixin';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IsSelectableValueDirective extends ExtractOptionsDataSourceMixin {\n}\n\n@Mixin(ExtractOptionsDataSourceMixin)\n@Directive({\n  selector: '[rxapIsSelectableValue]',\n  providers: [\n    {\n      provide: NG_VALIDATORS,\n      multi: true,\n      useExisting: forwardRef(() => IsSelectableValueDirective),\n    },\n  ],\n  standalone: true,\n})\nexport class IsSelectableValueDirective implements Validator {\n\n  @Input()\n  public viewer: BaseDataSourceViewer = { id: '[rxapIsSelectableValue]' };\n\n  constructor(\n    @Inject(DataSourceLoader)\n    protected readonly dataSourceLoader: DataSourceLoader,\n    @Inject(INJECTOR)\n    protected readonly injector: Injector,\n  ) {\n  }\n\n  public validate(control: AbstractControl): ValidationErrors | null {\n    if (control.value) {\n      this.extractOptionsDatasource(control);\n      const data = this.useDataSourceValue?.lastValue;\n      if (data) {\n        let options: ControlOptions;\n        if (Array.isArray(data)) {\n          options = data;\n        } else {\n          options = Object.entries(data)\n                          .map(([ value, display ]) => ({\n                            value,\n                            display,\n                          }));\n        }\n        if (!options.some(option => option.value === control.value)) {\n          return {\n            isSelectableValue: {\n              expected: 'Value should be from the list of provided options',\n            },\n          };\n        }\n      } else if (isDevMode()) {\n        console.warn('The last value from the OptionsDataSource is empty', this);\n      }\n    }\n    return null;\n  }\n\n}\n\n\n","import { ControlOption } from '@rxap/utilities';\n\nexport function ResolveByUuidParameter({value}: { value: string }) {\n  return {\n    parameters: {\n      uuid: value,\n    },\n  };\n}\n\nexport function ResolveByUuidResultFactory<Entity>(transformer: (entity: Entity) => ControlOption) {\n  return (entity: Entity) => {\n    return transformer(entity);\n  };\n}\n","import {\n  Injector,\n  runInInjectionContext,\n} from '@angular/core';\nimport {\n  isPromise,\n  isPromiseLike,\n} from '@rxap/utilities';\nimport {\n  UseFunctionConfig,\n  UseFunctionType,\n} from './extract-functions.mixin';\n\nexport function ApplyUseFunctionAdapters<Args extends any[], Result>(injector: Injector, fnc: UseFunctionType<any[], any>, config?: UseFunctionConfig) {\n  if (config?.adapter?.result || config?.adapter?.args) {\n    return function (this: any, ...args: any[]) {\n      return new Promise((resolve, reject) => {\n        runInInjectionContext(injector, () => {\n\n          args    = config?.adapter?.args?.(args) ?? args;\n          const result = fnc.call(this, ...(args as Args));\n          if (isPromiseLike(result)) {\n            const p = result.then((result: any) => {\n              resolve(config?.adapter?.result?.(result) ?? result);\n            });\n            if (isPromise(p)) {\n              p.catch(reject);\n            }\n          } else {\n            try {\n              resolve(config?.adapter?.result?.(result) ?? result);\n            } catch (e) {\n              reject(e);\n            }\n          }\n        });\n\n      });\n\n    };\n  }\n  return fnc;\n}\n","import {\n  Injector,\n  runInInjectionContext,\n} from '@angular/core';\nimport {\n  Method,\n  ToMethod,\n} from '@rxap/pattern';\nimport { isPromiseLike, isPromise } from '@rxap/utilities';\nimport { UseMethodConfig } from './extract-methods.mixin';\n\nexport function ApplyUseMethodAdapters(injector: Injector, method: Method, config?: UseMethodConfig) {\n  if (config?.adapter?.result || config?.adapter?.parameter) {\n    return ToMethod((parameter: any, ...args: any[]) => {\n      return new Promise((resolve, reject) => {\n        runInInjectionContext(injector, () => {\n\n          parameter    = config?.adapter?.parameter?.(parameter) ?? parameter;\n          const result = method.call(parameter, ...args);\n          if (isPromiseLike(result)) {\n            const p = result.then((result: any) => {\n              resolve(config?.adapter?.result?.(result) ?? result);\n            });\n            if (isPromise(p)) {\n              p.catch(reject);\n            }\n          } else {\n            try {\n              resolve(config?.adapter?.result?.(result) ?? result);\n            } catch (e) {\n              reject(e);\n            }\n          }\n        });\n\n      });\n\n    });\n  }\n  return method;\n}\n","import { ControlContainer } from '@angular/forms';\nimport {\n  AbstractControl,\n  RxapFormArray,\n  RxapFormControl,\n  RxapFormGroup,\n} from '@rxap/forms';\nimport { RxapFormSystemError } from '../error';\n\nexport class ExtractControlFromParentMixin {\n\n  protected extractControlFromParent(parent: ControlContainer, controlPath: string): AbstractControl {\n    if (!controlPath) {\n      throw new RxapFormSystemError('The control path is empty', '');\n    }\n\n    if (!parent.control) {\n      throw new RxapFormSystemError('The control property of ControlContainer is not defined', '');\n    }\n\n    const control = parent.control.get(controlPath);\n\n    if (!control) {\n      throw new RxapFormSystemError('Could not find the control instance', '');\n    }\n\n    if (!(control instanceof RxapFormControl) &&\n      !(control instanceof RxapFormGroup) &&\n      !(control instanceof RxapFormArray)) {\n      throw new RxapFormSystemError('The extracted control is not a RxapFormControl', '');\n    }\n\n    return control;\n  }\n\n}\n","import { FormDefinition } from '@rxap/forms';\nimport {\n  getMetadata,\n  setMetadataMapMap,\n} from '@rxap/reflect-metadata';\n\nexport const RXAP_USE_FUNCTION = 'rxap/form-system/function/use';\n\nexport type FunctionParameterAdapterFunction<Source extends any[] = any[], Target extends any[] = any[]> = (args: Source) => Target;\nexport type FunctionResultAdapterFunction<Source = unknown, Target = unknown> = (result: Source) => Target;\n\nexport interface UseFunctionConfig<\n  ReturnTypeTarget = any,\n  ArgsSource extends any[] = any[],\n  ReturnTypeSource = any,\n  ArgsTarget extends any[] = any[],\n> {\n  adapter?: {\n    args?: FunctionParameterAdapterFunction<ArgsSource, ArgsTarget>;\n    result?: FunctionResultAdapterFunction<ReturnTypeSource, ReturnTypeTarget>;\n  };\n}\n\nexport type UseFunctionType<Args extends any[], Result> = (...args: Args) => Result\n\nexport function UseFunction<Args extends any[], Result>(fnc: UseFunctionType<Args, Result>, name: string, config?: UseFunctionConfig) {\n  return function (target: any, propertyKey: string) {\n    setMetadataMapMap(propertyKey, name, {fnc, config}, RXAP_USE_FUNCTION, target);\n  };\n}\n\nexport interface UseFunctionDefinition<\n  ReturnType = unknown,\n  Args extends any[] = any[],\n  Config extends UseFunctionConfig<ReturnType, Args> = UseFunctionConfig<ReturnType, Args>\n> {\n  fnc: UseFunctionType<Args, ReturnType>;\n  config?: Config;\n}\n\nexport class ExtractFunctionsMixin {\n\n  protected extractFunctions(\n    defaultMap: Map<string, UseFunctionDefinition> | null = null,\n    formDefinition: FormDefinition,\n    controlId: string,\n  ): Map<string, UseFunctionDefinition> {\n    const map = getMetadata<Map<string, Map<string, UseFunctionDefinition>>>(\n      RXAP_USE_FUNCTION,\n      Object.getPrototypeOf(formDefinition),\n    );\n\n    if (!map) {\n      if (defaultMap) {\n        return defaultMap;\n      }\n      throw new Error(\n        'Could not extract the use remote function map from the form definition instance',\n      );\n    }\n\n    if (!map.has(controlId)) {\n      if (defaultMap) {\n        return defaultMap;\n      }\n      throw new Error(\n        'A use remote function definition does not exists in the form definition metadata',\n      );\n    }\n\n    return map.get(controlId)!;\n  }\n\n}\n","import { Injector } from '@angular/core';\nimport { FormDefinition } from '@rxap/forms';\nimport { Mixin } from '@rxap/mixin';\nimport { ApplyUseFunctionAdapters } from './apply-use-function.adapters';\nimport {\n  ExtractFunctionsMixin,\n  UseFunctionDefinition,\n  UseFunctionType,\n} from './extract-functions.mixin';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface ExtractFunctionMixin extends ExtractFunctionsMixin {\n}\n\n@Mixin(ExtractFunctionsMixin)\nexport class ExtractFunctionMixin {\n\n  protected injector!: Injector;\n\n  extractFunction<Args extends any[], Result>(\n    defaultFunction: UseFunctionType<Args, Result> | null = null,\n    formDefinition: FormDefinition,\n    controlId: string,\n    name: string,\n  ): UseFunctionType<Args, Result> {\n    const map = this.extractFunctions(new Map<string, UseFunctionDefinition>, formDefinition, controlId);\n    if (!map.has(name)) {\n      if (defaultFunction) {\n        return defaultFunction;\n      }\n      throw new Error(\n        `A function with the name '${ name }' is not attached to the control '${ controlId }' use the @UseFunction decorator to attach a function to the control`);\n    }\n    const {fnc, config} = map.get(name)!;\n    return ApplyUseFunctionAdapters<Args, Result>(this.injector, fnc, config);\n  }\n\n}\n","import { RxapFormControl } from '@rxap/forms';\nimport { Mixin } from '@rxap/mixin';\nimport { ExtractControlMixin } from './extract-control.mixin';\nimport { ExtractFormDefinitionMixin } from './extract-form-definition.mixin';\nimport { ExtractFunctionMixin } from './extract-function.mixin';\nimport {\n  UseFunction,\n  UseFunctionConfig,\n  UseFunctionType,\n} from './extract-functions.mixin';\nimport { UseMethodConfig } from './extract-methods.mixin';\n\nexport const IS_VALUE_FUNCTION_NAME = 'is-value';\n\nexport function UseIsValueFunction(\n  fnc: UseFunctionType<[any], boolean>,\n): any;\nexport function UseIsValueFunction(\n  fnc: UseFunctionType<any[], any>,\n  config: UseFunctionConfig<boolean, any[], any, [any]>,\n): any;\nexport function UseIsValueFunction(\n  fnc: UseFunctionType<[any], boolean>,\n  config?: UseMethodConfig,\n) {\n  return function (target: any, propertyKey: string) {\n    UseFunction(fnc, IS_VALUE_FUNCTION_NAME, config)(target, propertyKey);\n  };\n}\n\nexport interface ExtractIsValueFunctionMixin extends ExtractFormDefinitionMixin, ExtractFunctionMixin,\n  ExtractControlMixin {\n}\n\n@Mixin(ExtractFormDefinitionMixin, ExtractFunctionMixin, ExtractControlMixin)\nexport class ExtractIsValueFunctionMixin {\n\n  protected extractIsValueFunction(\n    defaultFunction: UseFunctionType<[any], boolean> | null = null,\n    control: RxapFormControl = this.extractControl(),\n    formDefinition           = this.extractFormDefinition(control),\n  ): UseFunctionType<[any], boolean> {\n    return this.extractFunction(defaultFunction, formDefinition, control.controlId, IS_VALUE_FUNCTION_NAME);\n  }\n\n}\n","import { ProviderToken } from '@angular/core';\nimport { FormDefinition } from '@rxap/forms';\nimport { Method } from '@rxap/pattern';\nimport {\n  getMetadata,\n  setMetadataMapMap,\n} from '@rxap/reflect-metadata';\n\nexport const RXAP_USE_METHOD = 'rxap/form-system/method/use';\n\nexport type MethodParameterAdapterFunction<Source = unknown, Target = unknown> = (parameter: Source) => Target;\nexport type MethodResultAdapterFunction<Source = unknown, Target = unknown> = (result: Source) => Target;\n\nexport interface UseMethodConfig<\n  ReturnTypeTarget = any,\n  ParameterSource = any,\n  ReturnTypeSource = any,\n  ParameterTarget = any,\n> {\n  adapter?: {\n    parameter?: MethodParameterAdapterFunction<ParameterSource, ParameterTarget>;\n    result?: MethodResultAdapterFunction<ReturnTypeSource, ReturnTypeTarget>;\n  };\n}\n\nexport function UseMethod(method: ProviderToken<Method>, name: string, config?: UseMethodConfig) {\n  return function (target: any, propertyKey: string) {\n    setMetadataMapMap(propertyKey, name, {method, config}, RXAP_USE_METHOD, target);\n  };\n}\n\nexport interface UseMethodDefinition<\n  ReturnType = unknown,\n  Parameter = unknown,\n  Config extends UseMethodConfig<ReturnType, Parameter> = UseMethodConfig<ReturnType, Parameter>\n> {\n  method: ProviderToken<Method<ReturnType, Parameter>>;\n  config?: Config;\n}\n\nexport class ExtractMethodsMixin {\n\n  protected extractMethods(\n    formDefinition: FormDefinition,\n    controlId: string,\n  ): Map<string, UseMethodDefinition> {\n    const map = getMetadata<Map<string, Map<string, UseMethodDefinition>>>(\n      RXAP_USE_METHOD,\n      Object.getPrototypeOf(formDefinition),\n    );\n\n    if (!map) {\n      console.log(map);\n      throw new Error(\n        'Could not extract the use remote method map from the form definition instance',\n      );\n    }\n\n    if (!map.has(controlId)) {\n      throw new Error(\n        'A use remote method definition does not exists in the form definition metadata',\n      );\n    }\n\n    return map.get(controlId)!;\n  }\n\n}\n","import { Injector } from '@angular/core';\nimport { FormDefinition } from '@rxap/forms';\nimport { Mixin } from '@rxap/mixin';\nimport { ApplyUseMethodAdapters } from './apply-use-method.adapters';\nimport { ExtractMethodsMixin } from './extract-methods.mixin';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface ExtractMethodMixin extends ExtractMethodsMixin {\n}\n\n@Mixin(ExtractMethodsMixin)\nexport class ExtractMethodMixin {\n\n  protected injector!: Injector;\n\n  extractMethod(\n    formDefinition: FormDefinition,\n    controlId: string,\n    name: string,\n  ) {\n    const map = this.extractMethods(formDefinition, controlId);\n    if (!map.has(name)) {\n      throw new Error(`A method with the name '${ name }' is not attached to the control '${ controlId }' use the @UseMethod decorator to attach a method to the control`);\n    }\n    const {method: methodToken, config} = map.get(name)!;\n    const method                        = this.injector.get(methodToken);\n    return ApplyUseMethodAdapters(this.injector, method, config);\n  }\n\n}\n","import { ProviderToken } from '@angular/core';\nimport { RxapFormControl } from '@rxap/forms';\nimport { Mixin } from '@rxap/mixin';\nimport { Method } from '@rxap/pattern';\nimport { ControlOptions } from '@rxap/utilities';\nimport { Observable } from 'rxjs';\nimport { ExtractControlMixin } from './extract-control.mixin';\nimport { ExtractFormDefinitionMixin } from './extract-form-definition.mixin';\nimport { ExtractMethodMixin } from './extract-method.mixin';\nimport {\n  UseMethod,\n  UseMethodConfig,\n} from './extract-methods.mixin';\n\nexport const OPTIONS_METHOD_NAME = 'options';\n\nexport type OptionsMethod<CO extends ControlOptions = ControlOptions, Parameters = any> = Method<CO | Observable<CO | null> | null, Parameters>;\n\nexport function UseOptionsMethod<CO extends ControlOptions = ControlOptions, Parameters = any>(method: ProviderToken<OptionsMethod<CO, Parameters>>, config?: UseMethodConfig) {\n  return function (target: any, propertyKey: string) {\n    UseMethod(method, OPTIONS_METHOD_NAME, config)(target, propertyKey);\n  };\n}\n\nexport interface ExtractOptionsMethodMixin extends ExtractFormDefinitionMixin, ExtractMethodMixin,\n  ExtractControlMixin {\n}\n\n@Mixin(ExtractFormDefinitionMixin, ExtractMethodMixin, ExtractControlMixin)\nexport class ExtractOptionsMethodMixin {\n\n  protected extractOptionsMethod(\n    control: RxapFormControl = this.extractControl(),\n    formDefinition           = this.extractFormDefinition(control),\n  ) {\n    return this.extractMethod(formDefinition, control.controlId, OPTIONS_METHOD_NAME);\n  }\n\n}\n","import { ProviderToken } from '@angular/core';\nimport { RxapFormControl } from '@rxap/forms';\nimport { Mixin } from '@rxap/mixin';\nimport { MethodWithParameters } from '@rxap/pattern';\nimport { ControlOption } from '@rxap/utilities';\nimport { ExtractControlMixin } from './extract-control.mixin';\nimport { ExtractFormDefinitionMixin } from './extract-form-definition.mixin';\nimport { ExtractMethodMixin } from './extract-method.mixin';\nimport {\n  UseMethod,\n  UseMethodConfig,\n} from './extract-methods.mixin';\n\nexport const RESOLVE_METHOD_NAME = 'resolve';\n\nexport function UseResolveMethod<Value = unknown>(\n  method: ProviderToken<MethodWithParameters<ControlOption, Value>>,\n): any;\nexport function UseResolveMethod<Value = unknown>(\n  method: ProviderToken<MethodWithParameters>,\n  config: UseMethodConfig<ControlOption, Value>,\n): any;\nexport function UseResolveMethod<Value = unknown>(\n  method: ProviderToken<MethodWithParameters<ControlOption, Value>>,\n  config?: UseMethodConfig,\n) {\n  return function (target: any, propertyKey: string) {\n    UseMethod(method, RESOLVE_METHOD_NAME, config)(target, propertyKey);\n  };\n}\n\nexport interface ExtractResolveMethodMixin extends ExtractFormDefinitionMixin, ExtractMethodMixin,\n  ExtractControlMixin {\n}\n\n@Mixin(ExtractFormDefinitionMixin, ExtractMethodMixin, ExtractControlMixin)\nexport class ExtractResolveMethodMixin {\n\n  protected extractResolveMethod(\n    control: RxapFormControl = this.extractControl(),\n    formDefinition           = this.extractFormDefinition(control),\n  ) {\n    return this.extractMethod(formDefinition, control.controlId, RESOLVE_METHOD_NAME);\n  }\n\n}\n","import { RxapFormControl } from '@rxap/forms';\nimport { Mixin } from '@rxap/mixin';\nimport { ExtractControlMixin } from './extract-control.mixin';\nimport { ExtractFormDefinitionMixin } from './extract-form-definition.mixin';\nimport { ExtractFunctionMixin } from './extract-function.mixin';\nimport {\n  UseFunction,\n  UseFunctionConfig,\n  UseFunctionType,\n} from './extract-functions.mixin';\nimport { UseMethodConfig } from './extract-methods.mixin';\n\nexport const TO_DISPLAY_FUNCTION_NAME = 'to-display';\n\nexport function UseToDisplayFunction(\n  fnc: UseFunctionType<[any], string>,\n): any;\nexport function UseToDisplayFunction(\n  fnc: UseFunctionType<any[], any>,\n  config: UseFunctionConfig<string, any[], any, [any]>,\n): any;\nexport function UseToDisplayFunction(\n  fnc: UseFunctionType<[any], string>,\n  config?: UseMethodConfig,\n) {\n  return function (target: any, propertyKey: string) {\n    UseFunction(fnc, TO_DISPLAY_FUNCTION_NAME, config)(target, propertyKey);\n  };\n}\n\nexport interface ExtractToDisplayFunctionMixin extends ExtractFormDefinitionMixin, ExtractFunctionMixin,\n  ExtractControlMixin {\n}\n\n@Mixin(ExtractFormDefinitionMixin, ExtractFunctionMixin, ExtractControlMixin)\nexport class ExtractToDisplayFunctionMixin {\n\n  protected extractToDisplayFunction(\n    defaultFunction: UseFunctionType<[any], string> | null = null,\n    control: RxapFormControl = this.extractControl(),\n    formDefinition           = this.extractFormDefinition(control),\n  ): UseFunctionType<[any], string> {\n    return this.extractFunction(defaultFunction, formDefinition, control.controlId, TO_DISPLAY_FUNCTION_NAME);\n  }\n\n}\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Directive,\n  OnDestroy,\n  SkipSelf,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport {\n  ControlContainer,\n  UntypedFormArray,\n  UntypedFormGroup,\n} from '@angular/forms';\nimport { RxapFormArray } from '@rxap/forms';\nimport {\n  debounceTime,\n  distinctUntilChanged,\n  map,\n  pairwise,\n  startWith,\n  Subscription,\n  tap,\n} from 'rxjs';\n\nexport interface ForFormArrayItemsDirectiveContext {\n  $implicit: UntypedFormGroup;\n  index: number;\n  last: boolean;\n  first: boolean;\n  even: boolean;\n  odd: boolean;\n  array: UntypedFormArray;\n}\n\n// TODO : move to rxap packages\n@Directive({\n  selector: '[rxapForFormArrayItem]',\n  standalone: true,\n})\nexport class ForFormArrayItemsDirective implements AfterViewInit, OnDestroy {\n\n  private _formArrayValueSubscription?: Subscription;\n\n  private formArray!: RxapFormArray;\n\n  constructor(\n    @SkipSelf() private readonly container: ControlContainer,\n    private readonly template: TemplateRef<ForFormArrayItemsDirectiveContext>,\n    private readonly viewContainerRef: ViewContainerRef,\n    private readonly cdr: ChangeDetectorRef,\n  ) {\n  }\n\n  ngAfterViewInit() {\n    if (this.container.control instanceof RxapFormArray) {\n      this.formArray = this.container.control;\n      this.container.control.value$.pipe(\n        debounceTime(100),\n        map(value => value.length),\n        distinctUntilChanged(),\n        startWith(0),\n        pairwise(),\n        tap(([ a, b ]) => {\n          if (a !== b) {\n            this.render(b);\n          }\n        }),\n      ).subscribe();\n    } else {\n      throw new Error('The control container is not an instance of RxapFormArray');\n    }\n  }\n\n  ngOnDestroy() {\n    this._formArrayValueSubscription?.unsubscribe();\n  }\n\n  private render(length: number) {\n    this.viewContainerRef.clear();\n    for (let index = 0; index < length; index++) {\n      const group = this.formArray.at(index);\n      if (group instanceof UntypedFormGroup) {\n        this.viewContainerRef.createEmbeddedView(\n          this.template,\n          {\n            $implicit: group,\n            index,\n            first: index === 0,\n            last: index === length - 1,\n            even: index % 2 === 0,\n            odd: index % 2 !== 0,\n            array: this.formArray,\n          },\n        );\n      } else {\n        throw new Error('rxapForFormArrayItem only support FormArray with FormGroup as items');\n      }\n    }\n    this.cdr.detectChanges();\n  }\n\n}\n","import {\n  AfterViewInit,\n  Directive,\n  HostBinding,\n  HostListener,\n  OnDestroy,\n  Optional,\n  SkipSelf,\n} from '@angular/core';\nimport { ControlContainer } from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport { RxapFormArray } from '@rxap/forms';\nimport {\n  Subscription,\n  tap,\n} from 'rxjs';\n\n// TODO : move to rxap packages\n@Directive({\n  selector: '[rxapFormArrayItemAddButton]',\n  standalone: true,\n})\nexport class FormArrayAddItemButtonDirective implements AfterViewInit, OnDestroy {\n\n  @HostBinding('type')\n  type = 'button';\n  protected formArray!: RxapFormArray;\n  private _controlDisabledSubscription?: Subscription;\n\n  constructor(\n    @Optional() @SkipSelf() protected readonly parent: ControlContainer,\n    @Optional() protected readonly matButton: MatButton,\n  ) {\n  }\n\n  @HostBinding('disabled')\n  get disabled() {\n    return this.isDisabled;\n  }\n\n  protected get isDisabled(): boolean {\n    return !!this.formArray?.disabled;\n  }\n\n  ngAfterViewInit() {\n    if (this.parent.control instanceof RxapFormArray) {\n      this.formArray = this.parent.control;\n    }\n    if (this.matButton) {\n      this._controlDisabledSubscription = this.formArray.disabled$.pipe(\n        tap(isDisabled => this.matButton.disabled = isDisabled),\n      ).subscribe();\n    }\n  }\n\n  ngOnDestroy() {\n    this._controlDisabledSubscription?.unsubscribe();\n  }\n\n  @HostListener('click')\n  protected onClick() {\n    this.formArray.insertAt();\n  }\n\n}\n","import {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  HostBinding,\n  OnDestroy,\n  Optional,\n  Renderer2,\n  SkipSelf,\n} from '@angular/core';\nimport {\n  ControlContainer,\n  UntypedFormArray,\n} from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport {\n  RxapFormArray,\n  RxapFormControl,\n  RxapFormGroup,\n} from '@rxap/forms';\nimport {\n  Subscription,\n  tap,\n} from 'rxjs';\n\n// TODO : move to rxap packages\n@Directive()\nexport abstract class FormArrayItemButton implements AfterViewInit, OnDestroy {\n\n  @HostBinding('type')\n  type = 'button';\n  protected formGroup!: RxapFormGroup<{ deleted: boolean }>;\n  protected formArray!: RxapFormArray;\n  protected deletedControl!: RxapFormControl<boolean>;\n  private _controlDisabledSubscription?: Subscription;\n  private _deletedControlValueSubscription?: Subscription;\n\n  constructor(\n    @SkipSelf() protected readonly parent: ControlContainer,\n    @Optional() protected readonly matButton: MatButton,\n    protected readonly renderer: Renderer2,\n    protected readonly elementRef: ElementRef,\n  ) {\n  }\n\n  @HostBinding('disabled')\n  get disabled() {\n    return this.isDisabled;\n  }\n\n  get isDeleted(): boolean {\n    return this.deletedControl.value;\n  }\n\n  get index(): number {\n    return this.formArray.controls.findIndex(control => control === this.formGroup);\n  }\n\n  protected get isDisabled(): boolean {\n    return !!this.formGroup?.parent?.disabled;\n  }\n\n  ngAfterViewInit() {\n    if (this.parent.control instanceof RxapFormGroup) {\n      this.formGroup = this.parent.control;\n      if (this.formGroup.controls.deleted) {\n        if (this.formGroup.controls.deleted instanceof RxapFormControl) {\n          this.deletedControl = this.formGroup.controls.deleted;\n        } else {\n          throw new Error(`The parent FormGroup instance does have a 'deleted' control, but it is not a RxapFormControl instance`);\n        }\n      } else {\n        this.deletedControl = new RxapFormControl(false, { controlId: 'deleted' });\n        this.formGroup.addControl('deleted', this.deletedControl);\n      }\n      if (this.formGroup.parent instanceof RxapFormArray) {\n        this.formArray = this.formGroup.parent;\n      } else {\n        throw new Error(`The parent of the FormGroup is not a RxapFormArray instance`);\n      }\n    } else {\n      throw new Error(`The parent is not a form group instance`);\n    }\n    if (this.matButton) {\n      this._controlDisabledSubscription = this.formGroup.disabled$.pipe(\n        tap(isDisabled => this.matButton.disabled = isDisabled),\n      ).subscribe();\n    }\n    this.deletedControl.value$.pipe(\n      tap(() => this.updateDisplayStyle()),\n    ).subscribe();\n  }\n\n  ngOnDestroy() {\n    this._controlDisabledSubscription?.unsubscribe();\n    this._deletedControlValueSubscription?.unsubscribe();\n  }\n\n  protected abstract onClick(): void;\n\n  protected abstract updateDisplayStyle(): void;\n\n}\n","import {\n  AfterViewInit,\n  Directive,\n  HostListener,\n  Input,\n  OnDestroy,\n} from '@angular/core';\nimport { RxapFormGroup } from '@rxap/forms';\nimport { FormArrayItemButton } from './form-array-item-button';\n\n// TODO : move to rxap packages\n@Directive({\n  selector: 'button[rxapFormArrayItemRemoveButton]',\n  standalone: true,\n})\nexport class FormArrayItemRemoveButtonDirective extends FormArrayItemButton implements AfterViewInit, OnDestroy {\n\n  /**\n   * A function that returns if the control should be temporarily deleted.\n   * true - in the given form group the deleted control is set to true\n   * false - the form group is removed from the (parent) form array\n   */\n  @Input()\n  public shouldTemporarilyDeleted: (formGroup: RxapFormGroup) => boolean = () => false;\n\n  @HostListener('click')\n  protected onClick() {\n    const templateDelete = this.shouldTemporarilyDeleted(this.formGroup);\n    if (templateDelete) {\n      this.deletedControl.setValue(true);\n    } else {\n      this.formArray.removeAt(this.index);\n    }\n  }\n\n  protected updateDisplayStyle() {\n    if (this.isDeleted) {\n      this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'none');\n    } else {\n      this.renderer.removeStyle(this.elementRef.nativeElement, 'display');\n    }\n  }\n\n}\n","import {\n  AfterViewInit,\n  Directive,\n  HostListener,\n  OnDestroy,\n} from '@angular/core';\nimport { FormArrayItemButton } from './form-array-item-button';\n\n// TODO : move to rxap packages\n@Directive({\n  selector: 'button[rxapFormArrayItemRestoreButton]',\n  standalone: true,\n})\nexport class FormArrayItemRestoreButtonDirective extends FormArrayItemButton implements AfterViewInit, OnDestroy {\n\n  @HostListener('click')\n  override onClick() {\n    this.formGroup.controls.deleted.setValue(false);\n  }\n\n  override updateDisplayStyle() {\n    if (this.isDeleted) {\n      this.renderer.removeStyle(this.elementRef.nativeElement, 'display');\n    } else {\n      this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'none');\n    }\n  }\n\n}\n","import {\n  AfterViewInit,\n  Directive,\n  OnDestroy,\n  Optional,\n} from '@angular/core';\nimport {\n  ControlContainer,\n  UntypedFormArray,\n} from '@angular/forms';\nimport {\n  RxapFormControl,\n  RxapFormGroup,\n} from '@rxap/forms';\nimport {\n  Subscription,\n  tap,\n} from 'rxjs';\n\n// TODO : move to rxap packages\n@Directive({\n  selector: '[rxapFormArrayRemovable]',\n  standalone: true,\n})\nexport class FormArrayRemovableDirective implements AfterViewInit, OnDestroy {\n\n  protected formGroup!: RxapFormGroup<{ deleted: boolean }>;\n\n  protected deletedControl!: RxapFormControl<boolean>;\n  private _deletedControlValueSubscription?: Subscription;\n\n  constructor(@Optional() protected readonly parent: ControlContainer) {\n  }\n\n  get isDeleted(): boolean {\n    return this.deletedControl.value;\n  }\n\n  protected get isDisabled(): boolean {\n    return !!this.formGroup?.parent?.disabled;\n  }\n\n  ngAfterViewInit() {\n    if (this.parent.control instanceof RxapFormGroup) {\n      this.formGroup = this.parent.control;\n      if (this.formGroup.controls.deleted) {\n        if (this.formGroup.controls.deleted instanceof RxapFormControl) {\n          this.deletedControl = this.formGroup.controls.deleted;\n        } else {\n          throw new Error(`The parent FormGroup instance does have a 'deleted' control, but it is not a RxapFormControl instance`);\n        }\n      } else {\n        this.deletedControl = new RxapFormControl(false, { controlId: 'deleted' });\n        this.formGroup.addControl('deleted', this.deletedControl);\n      }\n      if (!(this.formGroup.parent instanceof UntypedFormArray)) {\n        throw new Error(`The parent of the FormGroup is not a FormArray instance`);\n      }\n    } else {\n      throw new Error(`The parent is not a form group instance`);\n    }\n    this._deletedControlValueSubscription = this.deletedControl.value$.pipe(\n      tap((isDeleted) => {\n        for (const [ name, control ] of Object.entries(this.formGroup.controls)) {\n          if (name !== 'deleted') {\n            if (isDeleted) {\n              control.disable({ onlySelf: true });\n            } else if (!this.isDisabled) {\n              control.enable({ onlySelf: true });\n            }\n          }\n        }\n      }),\n    ).subscribe();\n  }\n\n  ngOnDestroy() {\n    this._deletedControlValueSubscription?.unsubscribe();\n  }\n\n}\n\n\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Directive,\n  inject,\n  INJECTOR,\n  Injector,\n  Input,\n  OnChanges,\n  OnDestroy,\n  signal,\n  SimpleChanges,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport {\n  AbstractControlDirective,\n  NgControl,\n} from '@angular/forms';\nimport { MatFormField } from '@angular/material/form-field';\nimport { RxapFormControl } from '@rxap/forms';\nimport { Mixin } from '@rxap/mixin';\nimport {\n  ControlOption,\n  ControlOptions,\n} from '@rxap/utilities';\nimport {\n  isObservable,\n  Observable,\n  Subscription,\n  tap,\n} from 'rxjs';\nimport {\n  ExtractOptionsMethodMixin,\n  OptionsMethod,\n} from '../mixins/extract-options-method.mixin';\n\n\nexport interface OptionsFromMethodTemplateContext {\n  $implicit: ControlOption;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface OptionsFromMethodDirectiveSettings {\n}\n\n// eslient-disable-next-line @typescript-eslint/no-empty-interface\nexport interface OptionsFromMethodDirective<Value = any, Parameters = any>\n  extends AfterViewInit, OnChanges, ExtractOptionsMethodMixin {\n}\n\n@Mixin(ExtractOptionsMethodMixin)\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: '[rxapOptionsFromMethod]',\n  standalone: true,\n  exportAs: 'rxapOptionsFromMethod',\n})\nexport class OptionsFromMethodDirective<Value = any, Parameters = any> implements AfterViewInit, OnChanges, OnDestroy {\n\n  static ngTemplateContextGuard(\n    dir: OptionsFromMethodDirective,\n    ctx: any,\n  ): ctx is OptionsFromMethodTemplateContext {\n    return true;\n  }\n\n  readonly loading = signal<boolean>(true);\n\n  @Input('rxapOptionsFromMethodParameters')\n  public parameters?: Parameters;\n\n  @Input('rxapOptionsFromMethodResetOnChange')\n  public resetOnChange?: Value;\n\n  public options: ControlOptions | null                                    = null;\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('rxapOptionsFromMethodCall')\n  public method!: OptionsMethod<ControlOptions<Value>, Parameters>;\n  protected ngControl: NgControl | AbstractControlDirective | null         = null;\n  protected matFormField: MatFormField | null                              = null;\n  protected settings: OptionsFromMethodDirectiveSettings                   = {};\n  protected readonly viewContainerRef: ViewContainerRef                    = inject(ViewContainerRef);\n  protected readonly injector: Injector                                    = inject(INJECTOR);\n  protected readonly cdr: ChangeDetectorRef                                = inject(ChangeDetectorRef);\n  private readonly template: TemplateRef<OptionsFromMethodTemplateContext> = inject(TemplateRef);\n\n  protected _loadOptionsSubscription?: Subscription;\n\n  public async ngAfterViewInit() {\n    this.matFormField = this.injector.get(MatFormField, null);\n    this.ngControl    = this.matFormField?._control.ngControl ?? this.injector.get(NgControl, null);\n    this.control      = (this.ngControl?.control as RxapFormControl) ?? undefined;\n    this.method ??= this.extractOptionsMethod();\n    // ensure that the options are loaded. It is possible that the ngOnChange is triggered before the ngAfterViewInit\n    // then the options are not loaded.\n    if (!this.options) {\n      await this.load(this.parameters);\n    }\n  }\n\n  ngOnDestroy() {\n    this._loadOptionsSubscription?.unsubscribe();\n  }\n\n  public async ngOnChanges(changes: SimpleChanges) {\n    // only try to load the options if the method is defined\n    // else the initial load will be triggered in the ngAfterViewInit\n    if (!this.method) {\n      console.debug('The method is not yet defined');\n      return;\n    }\n    const parametersChanges = changes['parameters'];\n    if (parametersChanges) {\n      await this.load(parametersChanges.currentValue);\n    }\n  }\n\n  protected async loadOptions(parameters?: Parameters): Promise<Observable<ControlOptions | null> | ControlOptions | null> {\n    return this.method.call(parameters, this.control);\n  }\n\n  protected renderTemplate() {\n\n    if (!this.options) {\n      throw new Error('The options are not yet loaded');\n    }\n\n    this.viewContainerRef.clear();\n\n    for (const option of this.options) {\n      this.viewContainerRef.createEmbeddedView(this.template, {$implicit: option});\n    }\n\n    if (this.resetOnChange !== undefined) {\n      this.control?.reset(this.resetOnChange);\n    }\n\n    this.cdr.detectChanges();\n\n  }\n\n  protected setOptions(options: ControlOptions | null) {\n    if (!options) {\n      this.options = null;\n      this.viewContainerRef.clear();\n    } else {\n      this.options = options.slice();\n      this.renderTemplate();\n    }\n  }\n\n  public async load(parameters: Parameters | undefined = this.parameters) {\n    this.loading.set(true);\n    try {\n      const result = await this.loadOptions(parameters);\n      if (isObservable(result)) {\n        this._loadOptionsSubscription?.unsubscribe();\n        this._loadOptionsSubscription = result.pipe(\n          tap(options => this.setOptions(options)),\n        ).subscribe();\n      } else {\n        this.setOptions(result);\n      }\n    } finally {\n      this.loading.set(false);\n    }\n  }\n\n}\n\n\n","import {\n  AfterViewInit,\n  Directive,\n  inject,\n  Injectable,\n  Injector,\n  INJECTOR,\n  Input,\n  isDevMode,\n  OnDestroy,\n  ProviderToken,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { MatAutocomplete } from '@angular/material/autocomplete';\nimport { MatFormField } from '@angular/material/form-field';\nimport { controlValueChanges$ } from '@rxap/forms';\nimport { Mixin } from '@rxap/mixin';\nimport { OpenApiRemoteMethodParameter } from '@rxap/open-api/remote-method';\nimport {\n  Method,\n  MethodWithParameters,\n} from '@rxap/pattern';\nimport { isDefined } from '@rxap/rxjs';\nimport {\n  ControlOption,\n  ControlOptions,\n} from '@rxap/utilities';\nimport { isUUID } from '@rxap/validator';\nimport {\n  distinctUntilChanged,\n  Observable,\n  Subscription,\n  tap,\n} from 'rxjs';\nimport {\n  ExtractIsValueFunctionMixin,\n  UseIsValueFunction,\n} from '../mixins/extract-is-value-function.mixin';\nimport { UseMethodConfig } from '../mixins/extract-methods.mixin';\nimport { UseOptionsMethod } from '../mixins/extract-options-method.mixin';\nimport {\n  ExtractResolveMethodMixin,\n  UseResolveMethod,\n} from '../mixins/extract-resolve-method.mixin';\nimport {\n  ExtractToDisplayFunctionMixin,\n  UseToDisplayFunction,\n} from '../mixins/extract-to-display-function.mixin';\nimport {\n  OptionsFromMethodDirective,\n  OptionsFromMethodDirectiveSettings,\n} from './options-from-method.directive';\n\nexport function UseAutocompleteOptionsMethod(\n  method: ProviderToken<MethodWithParameters<ControlOptions, AutocompleteOptionsFromMethodDirectiveParameters>>,\n): any;\nexport function UseAutocompleteOptionsMethod(\n  method: ProviderToken<MethodWithParameters<ControlOptions, OpenApiRemoteMethodParameter<AutocompleteOptionsFromMethodDirectiveParameters>>>,\n): any;\nexport function UseAutocompleteOptionsMethod(\n  method: ProviderToken<MethodWithParameters>,\n  config: UseMethodConfig<ControlOptions, AutocompleteOptionsFromMethodDirectiveParameters>,\n): any;\nexport function UseAutocompleteOptionsMethod(\n  method: ProviderToken<MethodWithParameters<ControlOptions, AutocompleteOptionsFromMethodDirectiveParameters | OpenApiRemoteMethodParameter<AutocompleteOptionsFromMethodDirectiveParameters>>>,\n  config: UseMethodConfig = {},\n) {\n  config.adapter ??= {};\n  config.adapter.parameter ??= (parameters) => ({parameters});\n  return UseOptionsMethod(method as any, config);\n}\n\nexport function UseAutocompleteResolveMethod<Value = unknown>(\n  method: ProviderToken<MethodWithParameters<ControlOption<Value>, OpenApiRemoteMethodParameter<{ value: string }>>>,\n  config: UseMethodConfig = {},\n) {\n  config.adapter ??= {};\n  config.adapter.parameter ??= (parameters) => ({parameters});\n  return UseResolveMethod(method, config);\n}\n\nexport function UseAutocompleteIsValueFunction(\n  isValue: (value: any) => boolean,\n): any {\n  return UseIsValueFunction(isValue);\n}\n\nexport function UseAutocompleteToDisplayFunction(\n  toDisplay: (value: any) => string,\n): any {\n  return UseToDisplayFunction(toDisplay);\n}\n\nexport interface AutocompleteOptionsFromRemoteMethodTemplateContext {\n  $implicit: ControlOption;\n}\n\nexport interface AutocompleteOptionsFromMethodDirectiveSettings extends OptionsFromMethodDirectiveSettings {\n  filteredOptions?: boolean;\n}\n\nexport interface AutocompleteOptionsFromMethodDirectiveParameters<Value = any> {\n  search?: Value | null;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface AutocompleteOptionsFromMethodDirective<Value = any, Parameters extends AutocompleteOptionsFromMethodDirectiveParameters<Value> = AutocompleteOptionsFromMethodDirectiveParameters<Value>>\n  extends ExtractResolveMethodMixin, ExtractIsValueFunctionMixin, ExtractToDisplayFunctionMixin, AfterViewInit, OnDestroy {\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NoopResolveMethod<Value> implements Method<ControlOption, { value: Value }> {\n\n  call({ value } : { value: Value }): Promise<ControlOption> {\n    return Promise.resolve({ value, display: value + '' });\n  }\n\n}\n\n@Mixin(ExtractResolveMethodMixin, ExtractIsValueFunctionMixin, ExtractToDisplayFunctionMixin)\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: '[rxapAutocompleteOptionsFromMethod]',\n  standalone: true,\n})\nexport class AutocompleteOptionsFromMethodDirective<Value = any, Parameters extends AutocompleteOptionsFromMethodDirectiveParameters<Value> = AutocompleteOptionsFromMethodDirectiveParameters<Value>>\n  extends OptionsFromMethodDirective<Value, Parameters>\n  implements AfterViewInit, OnDestroy {\n\n  static override ngTemplateContextGuard(\n    dir: OptionsFromMethodDirective,\n    ctx: any,\n  ): ctx is AutocompleteOptionsFromRemoteMethodTemplateContext {\n    return true;\n  }\n\n  @Input('rxapAutocompleteOptionsFromMethodParameters')\n  public declare parameters?: Parameters;\n  @Input('rxapAutocompleteOptionsFromMethodResetOnChange')\n  public declare resetOnChange?: Value;\n  @Input('rxapAutocompleteOptionsFromMethodMatAutocomplete')\n  public matAutocomplete?: MatAutocomplete;\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('rxapAutocompleteOptionsFromMethodCall')\n  public declare method: Method<ControlOptions, Parameters>;\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('rxapAutocompleteOptionsFromMethodResolve')\n  public resolveMethod?: MethodWithParameters<ControlOption, { value: Value } & Parameters>;\n\n  @Input('rxapAutocompleteOptionsFromMethodIsValue')\n  public isValue?: (value: any) => boolean;\n\n  @Input('rxapAutocompleteOptionsFromMethodToDisplay')\n  public toDisplay?: (value: any) => string;\n\n  protected override ngControl: NgControl | null                              = null;\n  protected override matFormField: MatFormField | null                        = null;\n  protected override injector: Injector                                       = inject(INJECTOR);\n  protected override settings: AutocompleteOptionsFromMethodDirectiveSettings = {};\n  /**\n   * This flag is used to prevent the setValue is called for each refresh\n   * of the options list. This is needed because the setValue method will\n   * trigger a new refresh of the options list. This results in an endless\n   * call stack. This flag is set to true if the setValue method is called\n   * once.\n   */\n  private isAutocompleteToDisplayTriggered                                    = false;\n\n  private _subscription?: Subscription;\n\n  public override ngOnDestroy() {\n    super.ngOnDestroy();\n    this._subscription?.unsubscribe();\n  }\n\n  public override async ngAfterViewInit() {\n    if (this.matAutocomplete) {\n      this.settings ??= {};\n      this.settings.filteredOptions ??= true;\n    }\n    await super.ngAfterViewInit();\n    this.resolveMethod ??= this.extractResolveMethod();\n    this.isValue ??= this.extractIsValueFunction((value: any) => typeof value === 'string' && isUUID(value));\n    this.toDisplay ??= this.extractToDisplayFunction((value: any): string => {\n      if (!value) {\n        return '';\n      }\n      const option = this.findOptionByValue(value);\n      return option?.display ?? (isDevMode() ? 'to display error' : '...');\n    });\n    if (this.matAutocomplete) {\n      this.matAutocomplete.displayWith = this.toDisplay.bind(this);\n    }\n    if (!this.control) {\n      throw new Error('The control is not yet defined');\n    }\n    const value$       = controlValueChanges$(this.control);\n    this._subscription = value$.pipe(\n      isDefined(),\n      // only trigger the load options or resolve value if the value is changed\n      // this is required because in the resolveValue method the control value is set\n      // to trigger the toDisplay function in the mat-autocomplete\n      distinctUntilChanged(),\n      tap(async value => {\n        await this.load(this.parameters);\n        if (this.isValue?.(value)) {\n          this.triggerAutocompleteToDisplay();\n        }\n      }),\n    ).subscribe();\n  }\n\n  protected override loadOptions(parameters: Parameters = {} as Parameters): Promise<ControlOptions | null | Observable<ControlOptions | null>> {\n    if (!this.control) {\n      throw new Error('The control is not yet defined');\n    }\n    const value        = this.control?.value;\n    const c_parameters = {...parameters};\n    if (this.isValue?.(value)) {\n      return this.resolveValue(value, c_parameters);\n    } else {\n      c_parameters.search ??= value;\n      if (!c_parameters.search) {\n        return Promise.resolve([]);\n      }\n      return super.loadOptions(c_parameters);\n    }\n  }\n\n  protected override renderTemplate() {\n    super.renderTemplate();\n    if (this.matAutocomplete && !this.isAutocompleteToDisplayTriggered) {\n      this.isAutocompleteToDisplayTriggered = true;\n      this.triggerAutocompleteToDisplay();\n    }\n  }\n\n  protected async resolveValue(value: Value, parameters: Parameters = {} as Parameters) {\n    if (!this.resolveMethod) {\n      if (isDevMode()) {\n        console.warn('The resolve method is not yet defined');\n      }\n      return null;\n    }\n    // only resolve the value if the option is not already loaded\n    if (!this.findOptionByValue(value)) {\n      const option = await this.resolveMethod!.call({...parameters, value});\n      if (option.value !== value) {\n        throw new Error('The resolved value is not the same as the input value');\n      }\n      return [ option ];\n    }\n    return this.options;\n  }\n\n  private triggerAutocompleteToDisplay() {\n    // trigger a change detection after the options are rendered\n    // this is needed to trigger the mat-autocomplete options to display function\n    this.ngControl?.control?.setValue(this.ngControl?.control?.value);\n  }\n\n  private findOptionByValue(value: Value): ControlOption | null {\n    return this.options?.find((option: ControlOption) => option.value === value) ?? null;\n  }\n\n}\n","import {\n  Directive,\n  ElementRef,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Renderer2,\n  Self,\n} from '@angular/core';\nimport {\n  AbstractControl,\n  FormDefinition,\n  RxapFormControl,\n} from '@rxap/forms';\nimport {\n  ControlContainer,\n  NgControl,\n} from '@angular/forms';\nimport { Mixin } from '@rxap/mixin';\nimport {\n  of,\n  Subscription,\n} from 'rxjs';\nimport {\n  catchError,\n  startWith,\n  tap,\n} from 'rxjs/operators';\nimport { ExtractControlFromParentMixin } from '../mixins/extract-control-from-parent.mixin';\nimport { ExtractFormDefinitionMixin } from '../mixins/extract-form-definition.mixin';\nimport {\n  getMetadata,\n  setMetadataMap,\n} from '@rxap/reflect-metadata';\n\nexport const RXAP_FORM_SYSTEM_SHOW_METADATA = 'rxap/form-system/show-function';\nexport const RXAP_FORM_SYSTEM_HIDE_METADATA = 'rxap/form-system/hide-function';\nexport const RXAP_FORM_SYSTEM_HIDE_SHOW_OPTIONS = 'rxap/form-system/hide-show-options';\n\nexport type ControlHideShowFunction<T = any> = (this: T, control: AbstractControl) => boolean | null;\n\nexport interface ControlHideShowOptions {\n  /**\n   * Weather the hide/showFunction should be called on root group changes\n   */\n  rootChange?: boolean;\n}\n\nexport function UseHideFunction(hideFunction: ControlHideShowFunction, options: ControlHideShowOptions = {}) {\n  return function (target: any, propertyKey: string) {\n    setMetadataMap(propertyKey, hideFunction, RXAP_FORM_SYSTEM_HIDE_METADATA, target);\n    if (Object.keys(options).length) {\n      setMetadataMap(propertyKey, options, RXAP_FORM_SYSTEM_HIDE_SHOW_OPTIONS, target);\n    }\n  };\n}\n\nexport function UseShowFunction(showFunction: ControlHideShowFunction, options: ControlHideShowOptions = {}) {\n  return function (target: any, propertyKey: string) {\n    setMetadataMap(propertyKey, showFunction, RXAP_FORM_SYSTEM_SHOW_METADATA, target);\n    if (Object.keys(options).length) {\n      setMetadataMap(propertyKey, options, RXAP_FORM_SYSTEM_HIDE_SHOW_OPTIONS, target);\n    }\n  };\n}\n\nexport interface ControlHideShowDirective extends ExtractControlFromParentMixin,\n                                                  ExtractFormDefinitionMixin {\n}\n\n@Mixin(ExtractControlFromParentMixin, ExtractFormDefinitionMixin)\n@Directive({\n  selector: '[rxapControlHideShow]',\n  standalone: true,\n})\nexport class ControlHideShowDirective implements OnInit, OnDestroy {\n\n  @Input('rxapControlHideShow')\n  public controlId?: string;\n\n  public control!: RxapFormControl;\n\n  private subscription = new Subscription();\n\n  constructor(\n    @Inject(Renderer2)\n    private readonly renderer: Renderer2,\n    @Inject(ElementRef)\n    private readonly elementRef: ElementRef,\n    @Optional()\n    @Inject(ControlContainer)\n    private readonly parent: ControlContainer | null,\n    @Self()\n    @Optional()\n    @Inject(NgControl)\n    private readonly ngControl: NgControl | null,\n  ) {\n  }\n\n  public ngOnInit() {\n\n    if (!this.ngControl && !this.parent) {\n      throw new Error('Easier the ControlContainer or NgControl must be injectable');\n    }\n\n    if (!this.ngControl && !this.controlId) {\n      throw new Error('If the NgControl is not injectable then the control id must be defined!');\n    }\n\n    const control = this.ngControl?.control ?? this.extractControlFromParent(this.parent!, this.controlId!);\n\n    if (!(control instanceof RxapFormControl)) {\n      throw new Error('The control is not an instance of RxapFormControl');\n    }\n\n    this.control = control;\n\n    const formDefinition = this.extractFormDefinition(control);\n\n    const hideFunction = this.extractHideFunction(formDefinition);\n\n    const showFunction = this.extractShowFunction(formDefinition);\n\n    const options = this.extractOptions(formDefinition);\n\n    let changeTrigger = formDefinition.rxapFormGroup.valueChanges;\n\n    if (options.rootChange) {\n      changeTrigger = formDefinition.rxapFormGroup.root.valueChanges;\n    }\n\n    changeTrigger = changeTrigger.pipe(startWith(null));\n\n    if (showFunction) {\n      this.subscription.add(\n        changeTrigger.pipe(\n          tap(() => {\n            // TODO : resubscribe if the showFunction throws an error\n            const show = showFunction.call(formDefinition, control);\n\n            switch (show) {\n\n              case true:\n                this.show();\n                break;\n\n              case false:\n                this.hide();\n                break;\n\n              case null:\n                this.reset();\n                break;\n\n            }\n\n          }),\n          catchError(err => {\n            console.error(err);\n            return of(null);\n          }),\n        ).subscribe(),\n      );\n    }\n\n    if (hideFunction) {\n      this.subscription.add(\n        changeTrigger.pipe(\n          tap(() => {\n            // TODO : resubscribe if the hideFunction throws an error\n            const hide = hideFunction.call(formDefinition, control);\n\n            switch (hide) {\n\n              case true:\n                this.hide();\n                break;\n\n              case false:\n                this.show();\n                break;\n\n              case null:\n                this.reset();\n                break;\n\n            }\n\n          }),\n          catchError(err => {\n            console.error(err);\n            return of(null);\n          }),\n        ).subscribe(),\n      );\n    }\n\n  }\n\n  public ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n\n  private extractOptions(formDefinition: FormDefinition): ControlHideShowOptions {\n    const map = getMetadata<Map<string, ControlHideShowOptions>>(\n      RXAP_FORM_SYSTEM_HIDE_SHOW_OPTIONS,\n      Object.getPrototypeOf(formDefinition),\n    ) ?? null;\n\n    if (!map || !map.has(this.control.controlId)) {\n      return {};\n    }\n\n    return map.get(this.control.controlId)!;\n\n  }\n\n  private extractHideFunction(formDefinition: FormDefinition): ControlHideShowFunction | null {\n    const map = getMetadata<Map<string, ControlHideShowFunction>>(\n      RXAP_FORM_SYSTEM_HIDE_METADATA,\n      Object.getPrototypeOf(formDefinition),\n    ) ?? null;\n\n    if (!map || !map.has(this.control.controlId)) {\n      return null;\n    }\n\n    return map.get(this.control.controlId)!;\n\n  }\n\n  private extractShowFunction(formDefinition: FormDefinition): ControlHideShowFunction | null {\n    const map = getMetadata<Map<string, ControlHideShowFunction>>(\n      RXAP_FORM_SYSTEM_SHOW_METADATA,\n      Object.getPrototypeOf(formDefinition),\n    ) ?? null;\n\n    if (!map || !map.has(this.control.controlId)) {\n      return null;\n    }\n\n    return map.get(this.control.controlId)!;\n\n  }\n\n  private hide() {\n    this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'none');\n  }\n\n  private show() {\n    this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'block');\n  }\n\n  private reset() {\n    this.renderer.removeStyle(this.elementRef.nativeElement, 'display');\n  }\n\n\n}\n\n\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Directive,\n  Inject,\n  Injector,\n  INJECTOR,\n  Input,\n  isDevMode,\n  OnDestroy,\n  Optional,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport {\n  BaseDataSource,\n  BaseDataSourceMetadata,\n  BaseDataSourceViewer,\n  DataSourceLoader,\n} from '@rxap/data-source';\nimport { RxapFormControl } from '@rxap/forms';\nimport {\n  ControlOption,\n  ControlOptions,\n  equals,\n  Required,\n} from '@rxap/utilities';\nimport { Mixin } from '@rxap/mixin';\nimport {\n  EMPTY,\n  of,\n  Subscription,\n} from 'rxjs';\nimport {\n  distinctUntilChanged,\n  map,\n  switchMap,\n  tap,\n  throttleTime,\n} from 'rxjs/operators';\nimport {\n  MAT_FORM_FIELD,\n  MatFormField,\n} from '@angular/material/form-field';\nimport { MatAutocomplete } from '@angular/material/autocomplete';\nimport {\n  ExtractOptionsDataSourceMixin,\n  UseOptionsDataSourceSettings,\n} from '../mixins/extract-options-data-source.mixin';\n\nexport interface InputSelectOptionsTemplateContext {\n  $implicit: ControlOption;\n}\n\nexport interface InputSelectOptionsSettings<Source> extends UseOptionsDataSourceSettings<Source> {\n  /**\n   * true - the selected value is not send to the data source with the viewChange event.\n   * Instead an empty object {} is send to trigger a data source refresh.\n   *\n   * The OpenApiDataSource expects a Paramters Object in the viewChange event. This\n   * can couse issue if the select value object as a property that is also a parameter for\n   * the open-api operation. For instaed the select object has the property company and\n   * the open-api operation has a query parameter company. Then the BuildOptions method\n   * in the OpenApiDataSource would create a HttpParams object with the param company and the\n   * value from the select object property company. This will result in unpredictable behaviors.\n   */\n  ignoreSelectedValue?: boolean;\n\n  /**\n   * true - the options list is filtered by the current control value if the\n   * control value is of type string. Then the display value of each option is\n   * compared to the control value. If the display value of an option includes\n   * the control value, then the option is used. This comprehensions it not type\n   * sensitive\n   */\n  filteredOptions?: boolean;\n\n  /**\n   * true - the options list is only loaded once and not refreshed on each value change\n   */\n  loadOnce?: boolean;\n}\n\nexport interface InputSelectOptionsDirective extends OnDestroy, AfterViewInit,\n                                                     ExtractOptionsDataSourceMixin {\n}\n\n@Mixin(ExtractOptionsDataSourceMixin)\n@Directive({\n  selector: '[rxapInputSelectOptions]',\n  standalone: true,\n})\nexport class InputSelectOptionsDirective implements OnDestroy, AfterViewInit {\n\n  @Input('rxapInputSelectOptionsViewer')\n  public viewer: BaseDataSourceViewer = { id: '[rxapInputSelectOptions]' };\n\n  @Input('rxapInputSelectOptionsMetadata')\n  public metadata?: BaseDataSourceMetadata;\n\n  @Input('rxapInputSelectOptionsMatAutocomplete')\n  public matAutocomplete?: MatAutocomplete;\n\n  protected readonly subscription = new Subscription();\n\n  protected control!: RxapFormControl;\n\n  protected dataSource!: BaseDataSource<ControlOptions | Record<string, any>>;\n\n  protected options: ControlOptions | Record<string, any> | null = null;\n\n  protected settings?: InputSelectOptionsSettings<any>;\n\n  /**\n   * This flag is used to prevent the setValue is called for each refresh\n   * of the options list. This is needed because the setValue method will\n   * trigger a new refresh of the options list. This results in an endless\n   * call stack. This flag is set to true if the setValue method is called\n   * once.\n   */\n  private isAutocompleteToDisplayTriggered = false;\n\n  constructor(\n    @Inject(TemplateRef)\n    protected readonly template: TemplateRef<InputSelectOptionsTemplateContext>,\n    @Inject(DataSourceLoader)\n    protected readonly dataSourceLoader: DataSourceLoader,\n    @Inject(ViewContainerRef)\n    protected readonly viewContainerRef: ViewContainerRef,\n    @Inject(INJECTOR)\n    protected readonly injector: Injector,\n    @Inject(ChangeDetectorRef)\n    protected readonly cdr: ChangeDetectorRef,\n    // The ngControl could be unknown on construction\n    // bc it is available after the content is init\n    @Optional()\n    @Inject(NgControl)\n    protected ngControl: NgControl | null = null,\n    @Optional()\n    @Inject(MAT_FORM_FIELD)\n    protected matFormField: MatFormField | null = null,\n  ) {\n  }\n\n  public ngAfterViewInit() {\n    this.extractOptionsDatasource();\n    this.viewer = {\n      id: '[rxapInputSelectOptions]' + this.control.controlId,\n      viewChange: this.settings?.loadOnce ? EMPTY : this.control.value$.pipe(\n        throttleTime(1000),\n        distinctUntilChanged((a, b) => equals(a, b)),\n        map(value => {\n          if (this.settings?.ignoreSelectedValue) {\n            return {};\n          }\n          return value;\n        }),\n      ),\n      control: this.control,\n    };\n    if (this.matAutocomplete) {\n      this.matAutocomplete.displayWith = this.toDisplay.bind(this);\n      this.settings ??= {};\n      this.settings.filteredOptions ??= true;\n    }\n    this.loadOptions();\n  }\n\n  public toDisplay(value: any): string {\n    if (!value) {\n      return '';\n    }\n    return this.options?.find((option: any) => option.value === value)?.display ??\n      (isDevMode() ? 'to display error' : '');\n  }\n\n  public ngOnDestroy() {\n    this.subscription?.unsubscribe();\n  }\n\n  private loadOptions(dataSource: BaseDataSource<ControlOptions | Record<string, any>> = this.dataSource) {\n    this.subscription.add(dataSource.connect(this.viewer).pipe(\n      switchMap(options => {\n        if (this.settings?.filteredOptions) {\n          return this.control.value$.pipe(\n            map(controlValue => {\n              if (typeof controlValue === 'string' && controlValue) {\n                controlValue = controlValue.toLowerCase();\n                if (Array.isArray(options)) {\n                  return options.filter(option => option.display.toLowerCase().includes(controlValue));\n                } else {\n                  return Object.entries(options)\n                               .filter(([ value, display ]) => typeof display ===\n                                 'string' &&\n                                 display.toLowerCase().includes(controlValue))\n                               .map(([ value, display ]) => ({\n                                 value,\n                                 display,\n                               }));\n                }\n              }\n              return options;\n            }),\n          );\n        }\n        return of(options);\n      }),\n      tap(options => this.renderTemplate(this.options = options)),\n      tap(() => {\n        if (this.matAutocomplete && !this.isAutocompleteToDisplayTriggered) {\n          this.isAutocompleteToDisplayTriggered = true;\n          // trigger a change detection after the options are rendered\n          // this is needed to trigger the mat-autocomplete options to display function\n          this.ngControl?.control?.setValue(this.ngControl?.control?.value);\n        }\n      }),\n    ).subscribe());\n  }\n\n  protected renderTemplate(options: ControlOptions | Record<string, any> | null = this.options) {\n    this.viewContainerRef.clear();\n\n    if (options) {\n      if (!Array.isArray(options)) {\n\n        for (const [ value, display ] of Object.entries(options)) {\n          this.viewContainerRef.createEmbeddedView(\n            this.template,\n            {\n              $implicit: {\n                value,\n                display,\n              },\n            },\n          );\n        }\n\n      } else {\n\n        for (const option of options) {\n          this.viewContainerRef.createEmbeddedView(this.template, { $implicit: option });\n        }\n\n      }\n    } else {\n      if (isDevMode()) {\n        console.warn(`The options for the control ${ this.control.fullControlPath } is empty/null/undefined!`);\n      }\n    }\n\n    this.cdr.detectChanges();\n  }\n\n}\n\n\n","import { NgModule } from '@angular/core';\nimport { InputSelectOptionsDirective } from './input-select-options.directive';\nimport { ControlHideShowDirective } from './control-hide-show.directive';\n\n@NgModule({\n  exports: [\n    InputSelectOptionsDirective,\n    ControlHideShowDirective,\n  ],\n  imports: [\n    InputSelectOptionsDirective,\n    ControlHideShowDirective,\n  ],\n})\nexport class FormSystemDirectivesModule {}\n","import {\n  ChangeDetectorRef,\n  Directive,\n  Inject,\n  INJECTOR,\n  Injector,\n  Input,\n  OnChanges,\n  OnInit,\n  SimpleChanges,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport {\n  Constructor,\n  ControlOption,\n  ControlOptions,\n} from '@rxap/utilities';\nimport { NgControl } from '@angular/forms';\nimport {\n  FormDefinition,\n  RxapFormControl,\n} from '@rxap/forms';\nimport { Mixin } from '@rxap/mixin';\nimport {\n  BaseRemoteMethod,\n  RemoteMethodLoader,\n} from '@rxap/remote-method';\nimport { IdOrInstanceOrToken } from '@rxap/definition';\nimport {\n  getMetadata,\n  setMetadataMapMap,\n} from '@rxap/reflect-metadata';\nimport { RxapFormSystemError } from '../error';\nimport { ExtractFormDefinitionMixin } from '../mixins/extract-form-definition.mixin';\n\nexport interface OptionsFromRemoteMethodTemplateContext {\n  $implicit: ControlOption;\n}\n\nexport const REMOTE_METHOD_NAME = 'options';\n\nexport const RXAP_USE_REMOTE_METHOD = 'rxap/form-system/remote-method/use';\n\nexport function UseRemoteMethod(remoteMethod: Constructor<BaseRemoteMethod>, name: string) {\n  return function (target: any, propertyKey: string) {\n    setMetadataMapMap(propertyKey, name, remoteMethod, RXAP_USE_REMOTE_METHOD, target);\n  };\n}\n\nexport function UseOptionsRemoteMethod(dataSource: Constructor<BaseRemoteMethod<ControlOptions>>) {\n  return function (target: any, propertyKey: string) {\n    UseRemoteMethod(dataSource, REMOTE_METHOD_NAME)(target, propertyKey);\n  };\n}\n\nexport class ExtractRemoteMethodsMixin {\n\n  protected extractRemoteMethods(\n    formDefinition: FormDefinition,\n    controlId: string,\n  ): Map<string, Constructor<IdOrInstanceOrToken<BaseRemoteMethod>>> {\n    const map = getMetadata<Map<string, Map<string, Constructor<IdOrInstanceOrToken<BaseRemoteMethod>>>>>(\n      RXAP_USE_REMOTE_METHOD,\n      Object.getPrototypeOf(formDefinition),\n    );\n\n    if (!map) {\n      throw new RxapFormSystemError(\n        'Could not extract the use remote method map from the form definition instance',\n        '',\n      );\n    }\n\n    if (!map.has(controlId)) {\n      throw new RxapFormSystemError(\n        'A use remote method definition does not exists in the form definition metadata',\n        '',\n      );\n    }\n\n    return map.get(controlId)!;\n  }\n\n}\n\nexport interface OptionsFromRemoteMethodDirective<Value, Parameters> extends OnInit,\n                                                                             ExtractFormDefinitionMixin,\n                                                                             ExtractRemoteMethodsMixin {\n}\n\n@Mixin(ExtractFormDefinitionMixin, ExtractRemoteMethodsMixin)\n@Directive({\n  selector: '[rxapOptionsFromRemoteMethod]',\n  standalone: true,\n})\nexport class OptionsFromRemoteMethodDirective<Value, Parameters> implements OnChanges {\n\n  @Input('rxapOptionsFromRemoteMethodParameters')\n  public parameters?: Parameters;\n\n  @Input('rxapOptionsFromRemoteMethodResetOnChange')\n  public resetOnChange?: Value;\n\n  @Input('rxapOptionsFromRemoteMethodWithoutParameters')\n  public withoutParameters = false;\n\n  private remoteMethodToken!: IdOrInstanceOrToken<BaseRemoteMethod>;\n\n  constructor(\n    @Inject(NgControl)\n    private readonly ngControl: NgControl,\n    @Inject(TemplateRef)\n    private readonly template: TemplateRef<OptionsFromRemoteMethodTemplateContext>,\n    @Inject(RemoteMethodLoader)\n    private readonly remoteMethodLoader: RemoteMethodLoader,\n    @Inject(ViewContainerRef)\n    private readonly viewContainerRef: ViewContainerRef,\n    @Inject(INJECTOR)\n    private readonly injector: Injector,\n    @Inject(ChangeDetectorRef)\n    private readonly cdr: ChangeDetectorRef,\n  ) {\n  }\n\n  public ngOnChanges(changes: SimpleChanges) {\n    const parametersChanges = changes['parameters'];\n    if (parametersChanges) {\n      if (!this.remoteMethodToken) {\n        this.remoteMethodToken = this.extractRemoteMethodToken();\n      }\n      this.renderTemplate(parametersChanges.currentValue);\n    }\n    if (changes['withoutParameters']?.currentValue) {\n      if (!this.remoteMethodToken) {\n        this.remoteMethodToken = this.extractRemoteMethodToken();\n      }\n      this.renderTemplate();\n    }\n  }\n\n  private extractRemoteMethodToken() {\n    const control = this.ngControl.control;\n\n    if (!(control instanceof RxapFormControl)) {\n      throw new Error('Control is not a RxapFormControl!');\n    }\n\n    const formDefinition = this.extractFormDefinition(control);\n\n    const remoteMethodsTokens = this.extractRemoteMethods(formDefinition, control.controlId);\n\n    if (!remoteMethodsTokens.has(REMOTE_METHOD_NAME)) {\n      throw new Error(`The remote method with the name 'options' is not defined`);\n    }\n\n    return remoteMethodsTokens.get(REMOTE_METHOD_NAME)!;\n  }\n\n  private async renderTemplate(parameters?: Parameters) {\n\n    const options = await this.remoteMethodLoader.call$(this.remoteMethodToken, parameters, undefined, this.injector);\n\n    this.viewContainerRef.clear();\n\n    for (const option of options) {\n      this.viewContainerRef.createEmbeddedView(this.template, { $implicit: option });\n    }\n\n    if (this.resetOnChange !== undefined) {\n      this.ngControl.reset(this.resetOnChange);\n    }\n\n    this.cdr.detectChanges();\n\n  }\n\n}\n\n\n","import {\n  AbstractControl,\n  NgControl,\n} from '@angular/forms';\n\nexport class TestNgControl extends NgControl {\n\n  constructor(private readonly _control: AbstractControl) {\n    super();\n  }\n\n  override get control(): AbstractControl<any, any> | null {\n    return this._control;\n  }\n\n  override viewToModelUpdate(newValue: any): void {\n    throw new Error('Method not implemented.');\n  }\n\n}\n","import { Constructor } from '@rxap/utilities';\nimport { FormSystemMetadataKeys } from './metadata-keys';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { setMetadataMap } from '@rxap/reflect-metadata';\n\nexport function UseComponent<Component extends ControlValueAccessor>(\n  component: Constructor<Component>,\n  setProperties: Partial<Record<keyof Component, any>> = {},\n) {\n  return function (target: any, propertyKey: string) {\n    setMetadataMap(propertyKey, component, FormSystemMetadataKeys.COMPONENTS, target);\n    setMetadataMap(propertyKey, setProperties, FormSystemMetadataKeys.COMPONENTS_PROPERTIES, target);\n  };\n}\n","import { Constructor } from '@rxap/utilities';\nimport { FormSystemMetadataKeys } from './metadata-keys';\nimport { setMetadata } from '@rxap/reflect-metadata';\n\n/**\n * Links a component with a form definition\n *\n * @param component\n */\nexport function UseFormComponent(component: Constructor) {\n  return function (target: any) {\n    setMetadata(FormSystemMetadataKeys.FORM_COMPONENT, component, target);\n  };\n}\n","import {\n  BaseDataSource,\n  BaseDataSourceMetadata,\n  RXAP_DATA_SOURCE_METADATA,\n} from '@rxap/data-source';\nimport {\n  Inject,\n  Injectable,\n  InjectionToken,\n  isDevMode,\n  Optional,\n} from '@angular/core';\nimport { AbstractControl } from '@rxap/forms';\nimport {\n  distinctUntilChanged,\n  shareReplay,\n  startWith,\n} from 'rxjs/operators';\nimport { equals } from '@rxap/utilities';\n\nexport const RXAP_FORM_CONTROL_SOURCE = new InjectionToken(\n  'rxap/forms/data-source',\n);\n\n@Injectable()\nexport class ControlDataSource extends BaseDataSource {\n  constructor(\n    @Inject(RXAP_FORM_CONTROL_SOURCE)\n    private readonly control: AbstractControl,\n    @Optional()\n    @Inject(RXAP_DATA_SOURCE_METADATA)\n      metadata: BaseDataSourceMetadata | null = null,\n  ) {\n    super(metadata);\n  }\n\n  public override init() {\n    if (this._initialised) {\n      return;\n    }\n    super.init();\n\n    if (isDevMode()) {\n      console.log(this.control);\n    }\n\n    this._data$ = this.control.valueChanges.pipe(\n      startWith(this.control.value),\n      distinctUntilChanged((a, b) => equals(a, b)),\n      shareReplay(1),\n    );\n  }\n}\n\nexport function controlDataSource(control: AbstractControl): ControlDataSource {\n  // TODO : remove as any (wait for @rxap/forms update)\n  return new ControlDataSource(control, { id: (control as any).controlId });\n}\n","import { ActivatedRoute } from '@angular/router';\n\nexport function FormContextFromActivatedRouteFactory(route: ActivatedRoute) {\n  return route.snapshot.params;\n}\n","import {\n  ComponentFactoryResolver,\n  ComponentRef,\n  Directive,\n  Inject,\n  INJECTOR,\n  Injector,\n  Input,\n  OnInit,\n  ViewContainerRef,\n} from '@angular/core';\nimport {\n  Constructor,\n  Required,\n} from '@rxap/utilities';\nimport {\n  ControlContainer,\n  ControlValueAccessor,\n} from '@angular/forms';\nimport { RxapFormSystemError } from './error';\nimport {\n  FormDefinition,\n  RxapFormControl,\n} from '@rxap/forms';\nimport { FormSystemMetadataKeys } from './decorators/metadata-keys';\nimport { ControlWithDataSource } from './control-with-data-source';\nimport {\n  DataSourceLoader,\n  PipeDataSource,\n} from '@rxap/data-source';\nimport { Mixin } from '@rxap/mixin';\nimport { ExtractDataSourcesMixin } from './mixins/extract-data-sources.mixin';\nimport { map } from 'rxjs/operators';\nimport { getMetadata } from '@rxap/reflect-metadata';\n\nexport interface FormSystemControlDirective<T> extends ExtractDataSourcesMixin, ControlValueAccessor, OnInit {\n}\n\n@Mixin(ExtractDataSourcesMixin)\n@Directive({\n  selector: '[rxapFormSystemControl]',\n  standalone: true,\n})\nexport class FormSystemControlDirective<T> implements ControlValueAccessor, OnInit {\n\n  /**\n   * Defines the form control id\n   */\n  @Input({ required: true })\n  public controlId!: string;\n\n  protected control!: RxapFormControl;\n\n  protected componentRef!: ComponentRef<ControlValueAccessor & Partial<ControlWithDataSource>>;\n\n  constructor(\n    @Inject(ControlContainer)\n    private readonly parent: ControlContainer,\n    @Inject(ComponentFactoryResolver)\n    private readonly cfr: ComponentFactoryResolver,\n    @Inject(ViewContainerRef)\n    private readonly viewContainerRef: ViewContainerRef,\n    @Inject(DataSourceLoader)\n    private readonly dataSourceLoader: DataSourceLoader,\n    @Inject(INJECTOR)\n    private readonly injector: Injector,\n  ) {\n  }\n\n  public ngOnInit() {\n\n    this.control = this.extractControl();\n\n    const formDefinition = this.extractFormDefinition();\n\n    this.componentRef = this.createComponent(formDefinition);\n\n    this.setDataSources(formDefinition, this.componentRef.instance);\n    this.setComponentProperties(formDefinition, this.componentRef.instance);\n\n    this.viewContainerRef.insert(this.componentRef.hostView);\n\n  }\n\n  public registerOnChange(fn: (value: (any | null)) => void): void {\n    this.componentRef.instance.registerOnChange(fn);\n  }\n\n  public registerOnTouched(fn: () => void): void {\n    this.componentRef.instance.registerOnTouched(fn);\n  }\n\n  public writeValue(value: any): void {\n    this.componentRef.instance.writeValue(value);\n  }\n\n  public setDisabledState(isDisabled: boolean): void {\n    if (this.componentRef.instance.setDisabledState) {\n      this.componentRef.instance.setDisabledState(isDisabled);\n    }\n  }\n\n  private setDataSources(formDefinition: FormDefinition, component: Partial<ControlWithDataSource>): void {\n\n    if (!component.setDataSource) {\n      throw new RxapFormSystemError(\n        'The ControlWithDataSource interface is not implemented for the control component, but the control has defined data sources',\n        '',\n      );\n    }\n\n    const useDataSourceValueMap = this.extractDataSources(formDefinition, this.controlId);\n\n    for (const [ name, useDataSourceValue ] of useDataSourceValueMap.entries()) {\n\n      let dataSource = this.dataSourceLoader.load(useDataSourceValue.dataSource);\n\n      const settings = useDataSourceValue.settings;\n\n      if (settings?.transformer) {\n        dataSource = new PipeDataSource(dataSource, map(settings.transformer));\n      }\n\n      component.setDataSource(name, dataSource, useDataSourceValue.settings);\n\n    }\n\n  }\n\n  private setComponentProperties(formDefinition: FormDefinition, component: any) {\n    const componentProperties = this.extractComponentProperties(formDefinition);\n\n    for (const [ key, value ] of Object.entries(componentProperties)) {\n      Reflect.set(component, key, value);\n    }\n\n  }\n\n  private createComponent(formDefinition: FormDefinition): ComponentRef<ControlValueAccessor> {\n    const component = this.extractComponent(formDefinition);\n    const componentFactory = this.cfr.resolveComponentFactory(component);\n    return componentFactory.create(this.injector);\n  }\n\n  private extractControl(): RxapFormControl {\n    if (!this.parent.control) {\n      throw new RxapFormSystemError('The control property of ControlContainer is not defined', '');\n    }\n\n    const control = this.parent.control.get(this.controlId);\n\n    if (!control) {\n      throw new RxapFormSystemError('Could not find the control instance', '');\n    }\n\n    if (!(control instanceof RxapFormControl)) {\n      throw new RxapFormSystemError('The extracted control is not a RxapFormControl', '');\n    }\n\n    return control;\n  }\n\n  private extractFormDefinition(): FormDefinition {\n    const formDefinition = (this.control as any).rxapFormDefinition;\n\n    if (!formDefinition) {\n      throw new RxapFormSystemError('Could not find the form definition instance', '');\n    }\n\n    return formDefinition;\n  }\n\n  private extractComponent(formDefinition: FormDefinition): Constructor<ControlValueAccessor> {\n    const map = getMetadata<Map<string, Constructor<ControlValueAccessor>>>(\n      FormSystemMetadataKeys.COMPONENTS,\n      Object.getPrototypeOf(formDefinition),\n    );\n\n    if (!map) {\n      throw new RxapFormSystemError('Could not extract the use component map from the form definition instance', '');\n    }\n\n    if (!map.has(this.controlId)) {\n      throw new RxapFormSystemError('A use component definition does not exists in the form definition metadata', '');\n    }\n\n    return map.get(this.controlId)!;\n  }\n\n  private extractComponentProperties(formDefinition: FormDefinition): Record<string, any> {\n    const map = getMetadata<Map<string, Record<string, any>>>(\n      FormSystemMetadataKeys.COMPONENTS_PROPERTIES,\n      Object.getPrototypeOf(formDefinition),\n    );\n\n    if (!map) {\n      throw new RxapFormSystemError(\n        'Could not extract the use component properties map from the form definition instance',\n        '',\n      );\n    }\n\n    if (!map.has(this.controlId)) {\n      throw new RxapFormSystemError('A use component definition does not exists in the form definition metadata', '');\n    }\n\n    return map.get(this.controlId)!;\n  }\n\n}\n","import {\n  Inject,\n  Injectable,\n  InjectionToken,\n} from '@angular/core';\nimport { RXAP_FORM_CONTEXT } from '@rxap/forms';\nimport type {\n  OpenApiRemoteMethod,\n  OpenApiRemoteMethodParameter,\n} from '@rxap/open-api/remote-method';\nimport { ProxyRemoteMethod } from '@rxap/remote-method';\n\nexport const SUBMIT_CONTEXT_FORM_ADAPTER_METHOD = new InjectionToken('submit-context-form-adapter-method');\n\n@Injectable()\nexport class SubmitContextFormAdapter\n  extends ProxyRemoteMethod<unknown, Record<string, unknown>, OpenApiRemoteMethodParameter<Record<string, unknown>>> {\n\n  constructor(\n    @Inject(SUBMIT_CONTEXT_FORM_ADAPTER_METHOD)\n      remoteMethod: OpenApiRemoteMethod<unknown, OpenApiRemoteMethodParameter<Record<string, unknown>>, Record<string, unknown>>,\n    @Inject(RXAP_FORM_CONTEXT)\n    private readonly context: Record<string, unknown>,\n  ) {\n    super(remoteMethod);\n  }\n\n  public transformParameters(value: Record<string, unknown>): OpenApiRemoteMethodParameter {\n    return {\n      parameters: this.context ?? {},\n      requestBody: value,\n    };\n  }\n\n}\n\nexport function SubmitContextFormAdapterFactory(\n  remoteMethod: OpenApiRemoteMethod,\n  context: Record<string, unknown>,\n) {\n  return new SubmitContextFormAdapter(\n    remoteMethod,\n    context,\n  );\n}\n","// region validators\nexport * from './lib/validators/is-equal-to';\nexport * from './lib/validators/is-selectable-value.directive';\n// endregion\n\n// region mixins\nexport * from './lib/mixins/adapters';\nexport * from './lib/mixins/apply-use-function.adapters';\nexport * from './lib/mixins/apply-use-method.adapters';\nexport * from './lib/mixins/extract-control-from-parent.mixin';\nexport * from './lib/mixins/extract-control.mixin';\nexport * from './lib/mixins/extract-data-sources.mixin';\nexport * from './lib/mixins/extract-form-definition.mixin';\nexport * from './lib/mixins/extract-function.mixin';\nexport * from './lib/mixins/extract-functions.mixin';\nexport * from './lib/mixins/extract-is-value-function.mixin';\nexport * from './lib/mixins/extract-method.mixin';\nexport * from './lib/mixins/extract-methods.mixin';\nexport * from './lib/mixins/extract-options-data-source.mixin';\nexport * from './lib/mixins/extract-options-method.mixin';\nexport * from './lib/mixins/extract-resolve-method.mixin';\nexport * from './lib/mixins/extract-to-display-function.mixin';\n// endregion\n\n// region directives array\nexport * from './lib/directives/array/for-form-array-items.directive';\nexport * from './lib/directives/array/form-array-add-item-button.directive';\nexport * from './lib/directives/array/form-array-item-button';\nexport * from './lib/directives/array/form-array-item-remove-button.directive';\nexport * from './lib/directives/array/form-array-item-restore-button.directive';\nexport * from './lib/directives/array/form-array-removable.directive';\n// endregion\n\n// region directives\nexport * from './lib/directives/autocomplete-options-from-method.directive';\nexport * from './lib/directives/control-hide-show.directive';\nexport * from './lib/directives/form-directives.module';\nexport * from './lib/directives/input-select-options.directive';\nexport * from './lib/directives/options-from-method.directive';\nexport * from './lib/directives/options-from-remote-method.directive';\nexport * from './lib/directives/test-ng-control';\n// endregion\n\n// region decorators\nexport * from './lib/decorators/metadata-keys';\nexport * from './lib/decorators/use-component';\nexport * from './lib/decorators/use-data-source';\nexport * from './lib/decorators/use-form-component';\n// endregion\n\n// region \nexport * from './lib/control-data-source';\nexport * from './lib/control-with-data-source';\nexport * from './lib/error';\nexport * from './lib/form-context-from-activated-route.factory';\nexport * from './lib/form-system-control.directive';\nexport * from './lib/submit-context-form-adapter.factory';\n// endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["map","tap","i1","startWith","distinctUntilChanged"],"mappings":"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"}