{"version":3,"file":"ngx-simple-forms.mjs","sources":["../../../projects/ngx-simple-forms/src/lib/components/elements/base/base.component.ts","../../../projects/ngx-simple-forms/src/lib/components/elements/base/base.component.html","../../../projects/ngx-simple-forms/src/lib/components/elements/input/input.component.ts","../../../projects/ngx-simple-forms/src/lib/components/elements/input/input.component.html","../../../projects/ngx-simple-forms/src/lib/components/elements/select/select.component.ts","../../../projects/ngx-simple-forms/src/lib/components/elements/select/select.component.html","../../../projects/ngx-simple-forms/src/lib/components/elements/button/button.component.ts","../../../projects/ngx-simple-forms/src/lib/components/elements/button/button.component.html","../../../projects/ngx-simple-forms/src/lib/components/elements/datepicker/datepicker.component.ts","../../../projects/ngx-simple-forms/src/lib/components/elements/datepicker/datepicker.component.html","../../../projects/ngx-simple-forms/src/lib/components/elements/remote-select/remote-select.service.ts","../../../projects/ngx-simple-forms/src/lib/utils.ts","../../../projects/ngx-simple-forms/src/lib/components/elements/remote-select/remote-select.component.ts","../../../projects/ngx-simple-forms/src/lib/components/elements/remote-select/remote-select.component.html","../../../projects/ngx-simple-forms/src/lib/components/form/form.elements.ts","../../../projects/ngx-simple-forms/src/lib/browser.ts","../../../projects/ngx-simple-forms/src/lib/components/form/form.component.ts","../../../projects/ngx-simple-forms/src/lib/components/form/form.component.html","../../../projects/ngx-simple-forms/src/lib/components/dialog/dialog.component.ts","../../../projects/ngx-simple-forms/src/lib/components/dialog/dialog.component.html","../../../projects/ngx-simple-forms/src/lib/components/dialog/dialog.service.ts","../../../projects/ngx-simple-forms/src/public-api.ts","../../../projects/ngx-simple-forms/src/ngx-simple-forms.ts"],"sourcesContent":["import {\n  ChangeDetectorRef,\n  Component,\n  Injector,\n  Input,\n  OnInit,\n} from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { BaseParameters } from './base.parameters';\nimport { BaseFormElementValidator } from '../../form/form.elements';\n\n@Component({\n  selector: 'ngx-simple-forms-base',\n  standalone: true,\n  imports: [],\n  templateUrl: './base.component.html',\n  styleUrl: './base.component.css',\n})\nexport class BaseComponent implements OnInit {\n  @Input() params: BaseParameters = {};\n  @Input() formControl!: FormControl;\n  @Input() validators!: BaseFormElementValidator[];\n\n  constructor(\n    public changeDetectorRef: ChangeDetectorRef,\n    public injector: Injector\n  ) {}\n\n  ngOnInit(): void {}\n\n  protected getErrorMessage(): string {\n    for (const current of this.validators) {\n      const validator = current[0];\n      const message = current[1];\n      const result = validator(this.formControl);\n\n      if (result) {\n        return message;\n      }\n    }\n\n    return '';\n  }\n}\n","<p>base works!</p>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { InputParameters } from './input.parameters';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { NgIf } from '@angular/common';\nimport { BaseComponent } from '../base/base.component';\n\n@Component({\n  selector: 'ngx-simple-forms-input',\n  standalone: true,\n  imports: [ReactiveFormsModule, MatInputModule, NgIf],\n  templateUrl: './input.component.html',\n  styleUrl: './input.component.css',\n})\nexport class InputComponent extends BaseComponent implements OnInit {\n  @Input() override params: InputParameters = {};\n  @Input() override formControl!: FormControl;\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n  }\n}\n","<mat-form-field>\n  <mat-label *ngIf=\"params.label\">{{ params.label }}</mat-label>\n\n  <input\n    matInput\n    [formControl]=\"formControl\"\n    [placeholder]=\"params.placeholder || ''\"\n    [type]=\"params.type || 'text'\"\n  />\n\n  <mat-error\n    *ngIf=\"formControl.errors && (formControl.dirty || formControl.touched)\"\n  >\n    {{ getErrorMessage() }}\n  </mat-error>\n</mat-form-field>\n","import { NgIf } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport {\n  MatFormField,\n  MatLabel,\n  MatOption,\n  MatSelectModule,\n} from '@angular/material/select';\nimport { SelectParameters } from './select.parameters';\nimport { BaseComponent } from '../base/base.component';\n\n@Component({\n  selector: 'ngx-simple-forms-select',\n  standalone: true,\n  imports: [\n    MatSelectModule,\n    NgIf,\n    MatFormField,\n    MatLabel,\n    MatOption,\n    ReactiveFormsModule,\n  ],\n  templateUrl: './select.component.html',\n  styleUrl: './select.component.css',\n})\nexport class SelectComponent extends BaseComponent implements OnInit {\n  @Input() override params: SelectParameters = {};\n  @Input() override formControl!: FormControl;\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n  }\n}\n","<mat-form-field>\n  <mat-label *ngIf=\"params.label\">{{ params.label }}</mat-label>\n\n  <mat-select [formControl]=\"formControl\">\n    @for (option of params.options || []; track option) {\n    <mat-option [value]=\"option.value\">{{ option.description }}</mat-option>\n    }\n  </mat-select>\n\n  <mat-error\n    *ngIf=\"formControl.errors && (formControl.dirty || formControl.touched)\"\n  >\n    {{ getErrorMessage() }}\n  </mat-error>\n</mat-form-field>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault } from '@angular/common';\nimport { BaseComponent } from '../base/base.component';\nimport { ButtonParameters } from './button.parameters';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\n\n@Component({\n  selector: 'ngx-simple-forms-input',\n  standalone: true,\n  imports: [\n    ReactiveFormsModule,\n    MatInputModule,\n    NgIf,\n    NgSwitch,\n    NgSwitchDefault,\n    NgSwitchCase,\n    MatButtonModule,\n    MatIconModule,\n    MatProgressSpinnerModule,\n    MatProgressBarModule,\n  ],\n  templateUrl: './button.component.html',\n  styleUrl: './button.component.css',\n})\nexport class ButtonComponent extends BaseComponent implements OnInit {\n  @Input() override params: ButtonParameters = {};\n  @Input() override formControl!: FormControl;\n\n  public isDisabled = false;\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n\n    this.registerOnDisabledChange();\n  }\n\n  private registerOnDisabledChange() {\n    this.formControl.registerOnDisabledChange((isDisabled) => {\n      this.isDisabled = isDisabled;\n    });\n  }\n\n  public async onClick(event: Event) {\n    if (typeof this.params.handle !== 'function') {\n      return;\n    }\n\n    const parentForm = this.formControl.parent as FormGroup;\n\n    if (this.params.type === 'submit') {\n      parentForm.markAllAsTouched();\n    }\n\n    const extra = this.params.getExtra?.();\n    await this.params.handle({ group: parentForm, extra });\n\n    this.formControl.setValue(this.formControl.value, {\n      emitEvent: true,\n      onlySelf: false,\n    });\n  }\n}\n","<div class=\"button-container\" [ngSwitch]=\"params.variant\">\n  <!-- mat-raised-button -->\n  <button\n    *ngSwitchCase=\"'raised'\"\n    mat-raised-button\n    [type]=\"params.type || 'button'\"\n    [color]=\"params.color || 'primary'\"\n    [disabled]=\"isDisabled\"\n    (click)=\"onClick($event)\"\n  >\n    {{ params.text }}\n  </button>\n\n  <!-- mat-flat-button -->\n  <button\n    *ngSwitchCase=\"'flat'\"\n    mat-flat-button\n    [type]=\"params.type || 'button'\"\n    [color]=\"params.color || 'primary'\"\n    [disabled]=\"isDisabled\"\n    (click)=\"onClick($event)\"\n  >\n    {{ params.text }}\n  </button>\n\n  <!-- mat-icon-button -->\n  <button\n    *ngSwitchCase=\"'icon'\"\n    mat-icon-button\n    [type]=\"params.type || 'button'\"\n    [color]=\"params.color || 'primary'\"\n    [disabled]=\"isDisabled\"\n    (click)=\"onClick($event)\"\n  >\n    <mat-icon>{{ params.text }}</mat-icon>\n  </button>\n\n  <!-- mat-stroked-button -->\n  <button\n    *ngSwitchCase=\"'stroked'\"\n    mat-stroked-button\n    [type]=\"params.type || 'button'\"\n    [color]=\"params.color || 'primary'\"\n    [disabled]=\"isDisabled\"\n    (click)=\"onClick($event)\"\n  >\n    {{ params.text }}\n  </button>\n\n  <!-- mat-fab -->\n  <button\n    *ngSwitchCase=\"'fab'\"\n    mat-fab\n    [type]=\"params.type || 'button'\"\n    [color]=\"params.color || 'primary'\"\n    [disabled]=\"isDisabled\"\n    (click)=\"onClick($event)\"\n  >\n    <mat-icon>{{ params.text }}</mat-icon>\n  </button>\n\n  <!-- mat-mini-fab -->\n  <button\n    *ngSwitchCase=\"'mini-fab'\"\n    mat-mini-fab\n    [type]=\"params.type || 'button'\"\n    [color]=\"params.color || 'primary'\"\n    [disabled]=\"isDisabled\"\n    (click)=\"onClick($event)\"\n  >\n    <mat-icon>{{ params.text }}</mat-icon>\n  </button>\n\n  <!-- mat-button -->\n  <button\n    *ngSwitchDefault\n    mat-button\n    [type]=\"params.type || 'button'\"\n    [color]=\"params.color || 'primary'\"\n    [disabled]=\"isDisabled\"\n    (click)=\"onClick($event)\"\n  >\n    {{ params.text }}\n  </button>\n\n  <mat-progress-bar\n    *ngIf=\"params.loading\"\n    [color]=\"params.color || 'primary'\"\n    mode=\"indeterminate\"\n  ></mat-progress-bar>\n</div>\n","import { NgIf } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { BaseComponent } from '../base/base.component';\nimport { DatepickerParameters } from './datepicker.parameters';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatError, MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatNativeDateModule } from '@angular/material/core';\n\n@Component({\n  selector: 'ngx-simple-forms-datepicker',\n  standalone: true,\n  imports: [\n    NgIf,\n    MatFormField,\n    MatLabel,\n    MatError,\n    ReactiveFormsModule,\n    MatDatepickerModule,\n    MatNativeDateModule,\n    MatInputModule,\n  ],\n  templateUrl: './datepicker.component.html',\n  styleUrl: './datepicker.component.css',\n})\nexport class DatepickerComponent extends BaseComponent implements OnInit {\n  @Input() override params: DatepickerParameters = {};\n  @Input() override formControl!: FormControl;\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n  }\n}\n","<mat-form-field>\n  <mat-label *ngIf=\"params.label\">{{ params.label }}</mat-label>\n\n  <input matInput [matDatepicker]=\"picker\" [formControl]=\"formControl\" />\n\n  <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n  <mat-datepicker #picker></mat-datepicker>\n\n  <mat-error\n    *ngIf=\"formControl.errors && (formControl.dirty || formControl.touched)\"\n  >\n    {{ getErrorMessage() }}\n  </mat-error>\n</mat-form-field>\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\ninterface GetOptions {\n  method: 'GET' | 'POST' | 'PATCH' | 'DELETE' | 'PUT';\n  url: string;\n  body?: unknown;\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class RemoteSelectService {\n  constructor(private readonly http: HttpClient) {}\n\n  getObservable<T = Object>(options: GetOptions): Observable<T> {\n    switch (options.method) {\n      case 'GET':\n        return this.http.get<T>(options.url);\n      case 'POST':\n        return this.http.post<T>(options.url, options.body);\n      case 'PATCH':\n        return this.http.patch<T>(options.url, options.body);\n      case 'DELETE':\n        return this.http.delete<T>(options.url);\n      case 'PUT':\n        return this.http.put<T>(options.url, options.body);\n      default:\n        throw new Error('Invalid method');\n    }\n  }\n\n  getPromise<T = Object>(options: GetOptions): Promise<T> {\n    return new Promise((resolve, reject) => {\n      const result = this.getObservable<T>(options);\n\n      result?.subscribe(\n        (data) => {\n          resolve(data);\n        },\n        (error) => {\n          reject(error);\n        }\n      );\n    });\n  }\n}\n","export function addGetterSetter<T>(\n  obj: any,\n  path: string,\n  callback: (oldValue: T, newValue: T) => void,\n  deep: boolean = false\n) {\n  const parts = path.split('.');\n  let current = obj;\n\n  for (let i = 0; i < parts.length - 1; i++) {\n    const part = parts[i];\n    if (!(part in current)) {\n      return;\n    }\n    current = current[part];\n  }\n\n  const lastKey = parts[parts.length - 1];\n  let value = current[lastKey];\n\n  if (deep && typeof value === 'object' && value !== null) {\n    for (const key of Object.keys(value)) {\n      addGetterSetter(value, key, callback, deep);\n    }\n  }\n\n  Object.defineProperty(current, lastKey, {\n    get() {\n      return value;\n    },\n    set(newValue) {\n      const oldValue = value;\n      value = newValue;\n      callback(oldValue, newValue);\n\n      if (deep && typeof newValue === 'object' && newValue !== null) {\n        for (const key of Object.keys(newValue)) {\n          addGetterSetter(newValue, key, callback, deep);\n        }\n      }\n    },\n    enumerable: true,\n    configurable: true,\n  });\n}\n\nexport function getDeepValue<T = unknown>(\n  object: unknown,\n  keys?: string\n): T | undefined {\n  if (typeof object !== 'object' || object === null) {\n    return undefined;\n  }\n\n  if (!keys) {\n    return object as T;\n  }\n\n  return keys.split('.').reduce((obj, key) => {\n    if (obj && typeof obj === 'object') {\n      return (obj as Record<string, any>)[key];\n    }\n    return undefined;\n  }, object) as T | undefined;\n}\n\nexport function deepClone<T>(value: T, map = new WeakMap<object, any>()): T {\n  if (value === null || typeof value !== 'object') {\n    return value;\n  }\n\n  if (map.has(value)) {\n    return map.get(value);\n  }\n\n  if (typeof value === 'function') {\n    const fn = value as Function;\n    return fn.bind({}) as unknown as T;\n  }\n\n  if (value instanceof Date) {\n    return new Date(value) as T;\n  }\n\n  if (value instanceof RegExp) {\n    return new RegExp(value) as T;\n  }\n\n  if (value instanceof Map) {\n    const result = new Map();\n    map.set(value, result);\n    value.forEach((v, k) => {\n      result.set(deepClone(k, map), deepClone(v, map));\n    });\n    return result as T;\n  }\n\n  if (value instanceof Set) {\n    const result = new Set();\n    map.set(value, result);\n    value.forEach((v) => {\n      result.add(deepClone(v, map));\n    });\n    return result as T;\n  }\n\n  if (Array.isArray(value)) {\n    const result: any[] = [];\n    map.set(value, result);\n    value.forEach((item, index) => {\n      result[index] = deepClone(item, map);\n    });\n    return result as T;\n  }\n\n  const result = Object.create(Object.getPrototypeOf(value));\n  map.set(value, result);\n\n  Object.keys(value).forEach((key) => {\n    (result as any)[key] = deepClone((value as any)[key], map);\n  });\n\n  return result as T;\n}\n\nexport function deepMerge<T extends object>(target: T, source: T): T {\n  if (target === source) return target;\n\n  if (\n    typeof target !== 'object' ||\n    target === null ||\n    typeof source !== 'object' ||\n    source === null\n  ) {\n    return source;\n  }\n\n  if (Array.isArray(target) && Array.isArray(source)) {\n    return [...target, ...source] as T;\n  }\n\n  if (target instanceof Date && source instanceof Date) {\n    return new Date(Math.max(target.getTime(), source.getTime())) as T;\n  }\n\n  if (target instanceof Map && source instanceof Map) {\n    return new Map([...target, ...source]) as T;\n  }\n\n  if (target instanceof Set && source instanceof Set) {\n    return new Set([...target, ...source]) as T;\n  }\n\n  const merged: Record<string | symbol, any> = { ...target };\n\n  for (const key of Reflect.ownKeys(source)) {\n    const targetValue = (target as Record<string | symbol, any>)[key];\n    const sourceValue = (source as Record<string | symbol, any>)[key];\n\n    if (typeof sourceValue === 'function') {\n      merged[key] = sourceValue;\n    } else if (sourceValue instanceof Date) {\n      merged[key] = new Date(sourceValue.getTime());\n    } else if (sourceValue instanceof Map) {\n      merged[key] = new Map(sourceValue);\n    } else if (sourceValue instanceof Set) {\n      merged[key] = new Set(sourceValue);\n    } else if (typeof sourceValue === 'object' && sourceValue !== null) {\n      merged[key] = deepMerge(targetValue, sourceValue);\n    } else {\n      merged[key] = sourceValue;\n    }\n  }\n\n  return merged as T;\n}\n","import { NgIf } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport {\n  MatFormField,\n  MatLabel,\n  MatOption,\n  MatSelectModule,\n} from '@angular/material/select';\nimport {\n  RemoteSelectOption,\n  RemoteSelectParameters,\n  RemoteSelectParametersServiceKeys,\n} from './remote-select.parameters';\nimport { BaseComponent } from '../base/base.component';\nimport { RemoteSelectService } from './remote-select.service';\nimport { addGetterSetter, getDeepValue } from '../../../utils';\nimport { HttpClientModule } from '@angular/common/http';\n\n@Component({\n  selector: 'ngx-simple-forms-remote-select',\n  standalone: true,\n  imports: [\n    MatSelectModule,\n    NgIf,\n    MatFormField,\n    MatLabel,\n    MatOption,\n    ReactiveFormsModule,\n    HttpClientModule,\n  ],\n  templateUrl: './remote-select.component.html',\n  styleUrl: './remote-select.component.css',\n})\nexport class RemoteSelectComponent extends BaseComponent implements OnInit {\n  @Input() override params!: RemoteSelectParameters;\n  @Input() override formControl!: FormControl;\n\n  public remoteSelectService!: RemoteSelectService;\n\n  public options: RemoteSelectOption[] = [];\n  public remoteOptions: RemoteSelectOption[] = [];\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n  }\n\n  ngAfterViewInit(): void {\n    this.remoteSelectService = this.injector.get(RemoteSelectService);\n    this.defaultOptionsListener();\n    this.loadOptions();\n  }\n\n  private defaultOptionsListener() {\n    addGetterSetter(\n      this.params,\n      'defaultOptions',\n      (oldValue, newValue) => {\n        this.mergeOptions();\n      },\n      true\n    );\n  }\n\n  private async loadOptions() {\n    const url = this.params.service.url();\n    const method = this.params.service.method;\n    const body = this.params.service.body\n      ? this.params.service.body()\n      : undefined;\n    const response = await this.remoteSelectService.getPromise<\n      RemoteSelectOption[]\n    >({\n      url,\n      method,\n      body,\n    });\n\n    this.remoteOptions = this.beautyResponse<RemoteSelectOption>(response);\n    this.mergeOptions();\n  }\n\n  private beautyResponse<T = Object[]>(response: T[]): T[] {\n    const keys: RemoteSelectParametersServiceKeys = {\n      value: this.params.service.keys?.value ?? 'value',\n      description: this.params.service.keys?.description ?? 'description',\n    };\n\n    return response.map((item) => {\n      return {\n        value: getDeepValue(item, keys.value),\n        description: getDeepValue(item, keys.description) ?? '',\n      };\n    }) as T[];\n  }\n\n  private mergeOptions() {\n    this.options = [\n      ...(this.params.defaultOptions || []),\n      ...(this.remoteOptions || []),\n    ];\n  }\n}\n","<mat-form-field>\n  <mat-label *ngIf=\"params.label\">{{ params.label }}</mat-label>\n\n  <mat-select [formControl]=\"formControl\">\n    @for (option of options || []; track option) {\n    <mat-option [value]=\"option.value\">{{ option.description }}</mat-option>\n    }\n  </mat-select>\n\n  <mat-error\n    *ngIf=\"formControl.errors && (formControl.dirty || formControl.touched)\"\n  >\n    {{ getErrorMessage() }}\n  </mat-error>\n</mat-form-field>\n","import { FormControl, ValidatorFn } from '@angular/forms';\nimport { BaseComponent } from '../elements/base/base.component';\nimport { InputComponent } from '../elements/input/input.component';\nimport { InputParameters } from '../elements/input/input.parameters';\nimport { SelectComponent } from '../elements/select/select.component';\nimport { SelectParameters } from '../elements/select/select.parameters';\nimport { ButtonComponent } from '../elements/button/button.component';\nimport { ButtonParameters } from '../elements/button/button.parameters';\nimport { ComponentRef } from '@angular/core';\nimport { DatepickerParameters } from '../elements/datepicker/datepicker.parameters';\nimport { DatepickerComponent } from '../elements/datepicker/datepicker.component';\nimport { RemoteSelectParameters } from '../elements/remote-select/remote-select.parameters';\nimport { RemoteSelectComponent } from '../elements/remote-select/remote-select.component';\n\ntype TooltipPosition =\n  | 'left'\n  | 'right'\n  | 'above'\n  | 'below'\n  | 'before'\n  | 'after';\n\nexport type BaseFormElementValidator = [ValidatorFn, string];\n\nexport type BaseFormElementTooltip = {\n  disabled?: boolean;\n  hideDelay?: number;\n  message?: string;\n  withHtml?: boolean;\n  position?: TooltipPosition;\n  positionAtOrigin?: boolean;\n  showDelay?: number;\n  class?: any;\n  touchGestures?: 'auto' | 'off' | 'on';\n};\n\nexport type BaseFormElement<Params, GetOnExtra = any> = {\n  disabled?: () => boolean | undefined;\n  hidden?: (extra?: GetOnExtra) => boolean;\n  value?: unknown;\n  formControl?: FormControl;\n  componentRef?: ComponentRef<BaseComponent>;\n  validators?: BaseFormElementValidator[];\n  params?: Params;\n  tooltip?: BaseFormElementTooltip;\n  styles?: Partial<CSSStyleDeclaration>;\n  onMouseOver?: (event: Event, extra?: GetOnExtra) => void;\n  onMouseOut?: (event: Event) => void;\n  onClick?: (event: Event) => void;\n  onKeyPress?: (event: KeyboardEvent) => void;\n  onFocus?: (event: Event) => void;\n  onBlur?: (event: Event) => void;\n  getOnExtra?: () => GetOnExtra;\n};\n\nexport type FormElement<Params = unknown, GetOnExtra = any> =\n  | (BaseFormElement<Params, GetOnExtra> & {\n      type: 'input';\n      params: InputParameters;\n    })\n  | (BaseFormElement<Params, GetOnExtra> & {\n      type: 'select';\n      params: SelectParameters;\n    })\n  | (BaseFormElement<Params, GetOnExtra> & {\n      type: 'button';\n      params: ButtonParameters;\n    })\n  | (BaseFormElement<Params, GetOnExtra> & {\n      type: 'datepicker';\n      params: DatepickerParameters;\n    })\n  | (BaseFormElement<Params, GetOnExtra> & {\n      type: 'remote-select';\n      params: RemoteSelectParameters;\n    });\n\nexport function getFormElementComponentByType(\n  type: string\n): typeof BaseComponent {\n  const typesComponent: { [key: string]: typeof BaseComponent } = {\n    input: InputComponent,\n    select: SelectComponent,\n    button: ButtonComponent,\n    datepicker: DatepickerComponent,\n    'remote-select': RemoteSelectComponent,\n  };\n\n  return typesComponent[type];\n}\n","import { TooltipComponent } from '@angular/material/tooltip';\n\nexport function callbackObserveMatTooltips(mutationsList: MutationRecord[]) {\n  for (let mutation of mutationsList) {\n    if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\n      const elmTooltip = mutation.target as HTMLElement;\n      const elmSurface = elmTooltip.querySelector(\n        '.mdc-tooltip__surface'\n      ) as HTMLElement;\n      const originalValue = (elmTooltip as any).originalValue;\n      const withHtml = elmTooltip?.classList?.contains(\n        'ngx-simple-forms__tooltip-with-html'\n      );\n\n      if (!elmSurface || !elmTooltip) {\n        return;\n      }\n\n      (elmTooltip as any).withHtml = withHtml;\n\n      if (withHtml) {\n        elmSurface.innerHTML = originalValue;\n      } else {\n        elmSurface.innerText = originalValue;\n      }\n    }\n  }\n}\n\nexport function createObserverMatTooltips() {\n  const observer = new MutationObserver(callbackObserveMatTooltips);\n\n  return observer;\n}\n\nexport function interceptMatTooltipsMessage() {\n  const observer = createObserverMatTooltips();\n\n  Object.defineProperty(TooltipComponent.prototype, 'message', {\n    set(v: any) {\n      const elmSurfaces = document.querySelectorAll('.mdc-tooltip__surface');\n\n      elmSurfaces.forEach((tmp) => {\n        const elmSurface = tmp as HTMLElement;\n        const elmTooltip = elmSurface?.parentElement as HTMLElement;\n\n        if (!elmSurface || !elmTooltip) {\n          return;\n        }\n\n        const withHtml = (elmTooltip as any).withHtml;\n\n        if ((elmTooltip as any).isObserved) {\n          if (withHtml) {\n            elmSurface.innerHTML = v;\n          } else {\n            elmSurface.innerText = v;\n          }\n        } else {\n          observer.observe(elmTooltip, {\n            attributeFilter: ['class'],\n            attributeOldValue: true,\n          });\n        }\n\n        (elmTooltip as any).originalValue = v;\n        (elmTooltip as any).isObserved = true;\n      });\n    },\n  });\n}\n","import {\n  ChangeDetectorRef,\n  Component,\n  Input,\n  QueryList,\n  ViewChildren,\n  ViewContainerRef,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { FormElement, getFormElementComponentByType } from './form.elements';\nimport { KeyValue, KeyValuePipe, NgFor, NgStyle } from '@angular/common';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { addGetterSetter, deepClone } from '../../utils';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { interceptMatTooltipsMessage } from '../../browser';\n\n@Component({\n  selector: 'ngx-simple-forms-form',\n  standalone: true,\n  imports: [\n    NgFor,\n    KeyValuePipe,\n    ReactiveFormsModule,\n    NgStyle,\n    MatTooltipModule,\n  ],\n  templateUrl: './form.component.html',\n  styleUrl: './form.component.css',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class FormComponent {\n  private static IS_EXECUTED_TOOLTIP_INIT = false;\n\n  @Input() checkTimer = 512;\n  @Input() elements: { [key: string]: FormElement } = {};\n  @Input() cloneElements = false;\n  @Input() defaultStyles: Partial<CSSStyleDeclaration> = {};\n\n  @ViewChildren('dynamicComponentElementContainer', { read: ViewContainerRef })\n  dynamicComponentElementContainer!: QueryList<ViewContainerRef>;\n\n  group: FormGroup = new FormGroup({});\n\n  constructor(private readonly changeDetectorRef: ChangeDetectorRef) {\n    this.executeTooltipInit();\n  }\n\n  ngAfterViewInit(): void {\n    this.cloneElementsIfNeeded();\n    this.createFormControls();\n    this.createFormControlValidators();\n    this.mergeStyles();\n    this.stylesListener();\n    this.createComponents();\n    this.createCheckTimer();\n    this.createDisabledListener();\n    this.createValueListener();\n    this.createHiddenListenerDefaultFn();\n    this.detectChanges();\n  }\n\n  private executeTooltipInit() {\n    if (FormComponent.IS_EXECUTED_TOOLTIP_INIT) {\n      return;\n    }\n\n    FormComponent.IS_EXECUTED_TOOLTIP_INIT = true;\n    interceptMatTooltipsMessage();\n  }\n\n  private cloneElementsIfNeeded() {\n    if (!this.cloneElements) {\n      return;\n    }\n\n    this.elements = deepClone(this.elements);\n  }\n\n  private getElements() {\n    return Object.keys(this.elements).map((key, index) => {\n      return { key, element: this.elements[key], index };\n    });\n  }\n\n  private createFormControls() {\n    this.getElements().forEach(({ key, element }) => {\n      const formControl = element.formControl ?? new FormControl();\n\n      this.group.addControl(key, formControl);\n      element.formControl = formControl;\n    });\n  }\n\n  private createFormControlValidators() {\n    this.getElements().forEach(({ key, element }) => {\n      if (!element.validators?.length) {\n        return;\n      }\n\n      const onlyValidators = element.validators.map(([validator]) => validator);\n\n      element.formControl?.setValidators(onlyValidators);\n      element.formControl?.updateValueAndValidity();\n    });\n\n    this.detectChanges();\n  }\n\n  private mergeStyles() {\n    const baseStyles: Partial<CSSStyleDeclaration> = {\n      padding: '12px',\n    };\n\n    const baseWithDefaultStyles = { ...baseStyles, ...this.defaultStyles };\n\n    this.getElements().forEach(({ element, key }) => {\n      if (typeof element.styles === 'undefined') {\n        element.styles = { ...baseWithDefaultStyles };\n\n        return;\n      }\n\n      const elementWithBaseWithDefaultStyles = {\n        ...baseWithDefaultStyles,\n        ...element.styles,\n      };\n\n      element.styles = elementWithBaseWithDefaultStyles;\n    });\n\n    this.changeDetectorRef.detectChanges();\n  }\n\n  private stylesListener() {\n    this.getElements().forEach(({ element }) => {\n      addGetterSetter<Partial<CSSStyleDeclaration>>(\n        element,\n        'styles',\n        (oldValue, newValue) => {\n          if (oldValue === newValue) {\n            return;\n          }\n\n          this.changeDetectorRef.detectChanges();\n        },\n        true\n      );\n    });\n  }\n\n  private createComponents() {\n    this.getElements().forEach(({ key, element, index }) => {\n      const container = this.dynamicComponentElementContainer.get(index);\n\n      if (!container) {\n        return;\n      }\n\n      container.clear();\n\n      const componentType = getFormElementComponentByType(element.type);\n      const componentRef = container.createComponent(componentType);\n\n      componentRef.instance.params = element.params;\n      componentRef.instance.formControl =\n        element.formControl ?? new FormControl();\n      componentRef.instance.validators = element.validators ?? [];\n      componentRef.changeDetectorRef.detectChanges();\n\n      element.componentRef = componentRef;\n    });\n  }\n\n  private createCheckTimer() {\n    if (this.checkTimer <= 0 || !this.checkTimer) {\n      return;\n    }\n\n    setInterval(() => {\n      this.fnDisableElements();\n    }, this.checkTimer);\n  }\n\n  private createValueListener() {\n    this.getElements().forEach(({ element }) => {\n      element.formControl?.valueChanges.subscribe(() => {\n        element.value = element.formControl?.value;\n      });\n\n      if (typeof element.value !== 'undefined') {\n        element.formControl?.setValue(element.value);\n      }\n    });\n  }\n\n  private createDisabledListener() {\n    this.fnDisableElements();\n\n    this.group.valueChanges.subscribe(() => {\n      this.fnDisableElements();\n    });\n\n    this.group.statusChanges.subscribe(() => {\n      this.fnDisableElements();\n    });\n  }\n\n  private createHiddenListenerDefaultFn() {\n    const elements = this.getElements();\n\n    for (const data of elements) {\n      const element = data.element;\n\n      if (typeof element.hidden !== 'undefined') {\n        return;\n      }\n\n      element.hidden = () => false;\n    }\n  }\n\n  private fnDisableElements() {\n    const elements = this.getElements();\n\n    for (const data of elements) {\n      const element = data.element;\n\n      if (typeof element.disabled !== 'function') {\n        continue;\n      }\n\n      const previous = element.formControl?.disabled;\n      const disabled = element.disabled();\n\n      if (!!previous === !!disabled) {\n        continue;\n      }\n\n      if (disabled) {\n        element.formControl?.disable({ emitEvent: true, onlySelf: true });\n      } else {\n        element.formControl?.enable({ emitEvent: true, onlySelf: true });\n      }\n    }\n  }\n\n  public detectChanges(\n    includeElements: boolean = true,\n    includeForm: boolean = true\n  ) {\n    if (includeElements) {\n      this.getElements().forEach(({ element }) => {\n        element.componentRef?.changeDetectorRef?.detectChanges?.();\n      });\n    }\n\n    if (includeForm) {\n      this.changeDetectorRef.detectChanges();\n    }\n  }\n\n  onMouseOver(event: Event, element: FormElement) {\n    if (typeof element.onMouseOver !== 'function') {\n      return;\n    }\n\n    const extra = element.getOnExtra?.();\n\n    element.onMouseOver?.(event, extra);\n  }\n\n  hidden(element: FormElement) {\n    if (typeof element.hidden !== 'function') {\n      return false;\n    }\n\n    const extra = element.getOnExtra?.();\n\n    return element.hidden?.(extra);\n  }\n\n  originalOrderFn = (\n    a: KeyValue<string, any>,\n    b: KeyValue<string, any>\n  ): number => {\n    return 0;\n  };\n}\n","<form [formGroup]=\"group\" class=\"ngx-simple-forms__form\">\n  <ng-container *ngFor=\"let element of elements | keyvalue : originalOrderFn\">\n    <div\n      class=\"ngx-simple-forms__form element-container\"\n      [style.display]=\"hidden(element.value) ? 'none' : 'inline-block'\"\n      [ngStyle]=\"element.value.styles\"\n      [matTooltipDisabled]=\"element.value.tooltip?.disabled\"\n      [matTooltipHideDelay]=\"element.value.tooltip?.hideDelay\"\n      [matTooltip]=\"element.value.tooltip?.message || ''\"\n      [matTooltipPosition]=\"element.value.tooltip?.position || 'above'\"\n      [matTooltipPositionAtOrigin]=\"element.value.tooltip?.positionAtOrigin\"\n      [matTooltipShowDelay]=\"element.value.tooltip?.showDelay\"\n      [matTooltipClass]=\"[\n        element.value.tooltip?.class ?? '',\n        'ngx-simple-forms__tooltip-default',\n        element.value.tooltip?.withHtml\n          ? 'ngx-simple-forms__tooltip-with-html'\n          : 'ngx-simple-forms__tooltip-no-html'\n      ]\"\n      [matTooltipTouchGestures]=\"element.value.tooltip?.touchGestures || 'auto'\"\n      (mouseover)=\"onMouseOver($event, element.value)\"\n      (mouseout)=\"element.value.onMouseOut?.($event)\"\n      (click)=\"element.value.onClick?.($event)\"\n      (keypress)=\"element.value.onKeyPress?.($event)\"\n      (focus)=\"element.value.onFocus?.($event)\"\n      (blur)=\"element.value.onBlur?.($event)\"\n    >\n      <ng-container #dynamicComponentElementContainer></ng-container>\n    </div>\n  </ng-container>\n</form>\n","import { Component, Inject, ViewChild } from '@angular/core';\nimport { FormComponent } from '../form/form.component';\nimport {\n  MAT_DIALOG_DATA,\n  MatDialogModule,\n  MatDialogRef,\n} from '@angular/material/dialog';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { DialogParameters } from './dialog.parameters';\nimport { NgIf, NgStyle } from '@angular/common';\n\n@Component({\n  selector: 'ngx-simple-forms-dialog',\n  standalone: true,\n  imports: [FormComponent, MatDialogModule, MatToolbarModule, NgIf, NgStyle],\n  templateUrl: './dialog.component.html',\n  styleUrl: './dialog.component.css',\n})\nexport class DialogComponent {\n  @ViewChild(FormComponent) form!: FormComponent;\n\n  constructor(\n    @Inject(MAT_DIALOG_DATA) public parameters: DialogParameters,\n    public dialogRef: MatDialogRef<DialogComponent>\n  ) {}\n}\n","<mat-dialog-content class=\"mat-typography\">\n  <mat-toolbar *ngIf=\"parameters.title?.text\" [color]=\"parameters.title?.color\">\n    <h2>{{ parameters.title?.text }}</h2>\n  </mat-toolbar>\n\n  <p\n    *ngIf=\"parameters.description?.text\"\n    [ngStyle]=\"parameters.description?.styles || {}\"\n  >\n    {{ parameters.description?.text }}\n  </p>\n\n  <ngx-simple-forms-form\n    [checkTimer]=\"256\"\n    [elements]=\"parameters.elements\"\n    [defaultStyles]=\"parameters.defaultStyles || {}\"\n  ></ngx-simple-forms-form>\n</mat-dialog-content>\n","import { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DialogComponent } from './dialog.component';\nimport { DialogParameters } from './dialog.parameters';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class DialogService {\n  constructor(private dialog: MatDialog) {}\n\n  open(params: DialogParameters) {\n    return this.dialog.open(DialogComponent, {\n      width: '512px',\n      autoFocus: true,\n      data: params,\n    });\n  }\n}\n","/*\n * Public API Surface of ngx-simple-forms\n */\n\nexport * from './lib/components/form/form.component';\nexport * from './lib/components/form/form.elements';\n\nexport * from './lib/components/elements/base/base.component';\nexport * from './lib/components/elements/base/base.parameters';\n\nexport * from './lib/components/elements/input/input.component';\nexport * from './lib/components/elements/input/input.parameters';\n\nexport * from './lib/components/elements/select/select.component';\nexport * from './lib/components/elements/select/select.parameters';\n\nexport * from './lib/components/elements/button/button.component';\nexport * from './lib/components/elements/button/button.parameters';\n\nexport * from './lib/components/elements/datepicker/datepicker.component';\nexport * from './lib/components/elements/datepicker/datepicker.parameters';\n\nexport * from './lib/components/elements/remote-select/remote-select.component';\nexport * from './lib/components/elements/remote-select/remote-select.parameters';\n\nexport * from './lib/components/dialog/dialog.component';\nexport * from './lib/components/dialog/dialog.parameters';\nexport * from './lib/components/dialog/dialog.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i4","i3","MatFormField","MatLabel"],"mappings":"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"}