{"version":3,"file":"rxap-ngx-material-table-select.mjs","sources":["../../../../../../packages/angular/material/table-select/src/lib/table-select-window/table-select-window.component.ts","../../../../../../packages/angular/material/table-select/src/lib/table-select-window/table-select-window.component.html","../../../../../../packages/angular/material/table-select/src/lib/table-select-window/window-test-wrapper.ts","../../../../../../packages/angular/material/table-select/src/lib/table-select-input/table-select-input.component.ts","../../../../../../packages/angular/material/table-select/src/lib/table-select-input/table-select-input.component.html","../../../../../../packages/angular/material/table-select/src/lib/create-filter-form-provider.ts","../../../../../../packages/angular/material/table-select/src/lib/decorators.ts","../../../../../../packages/angular/material/table-select/src/lib/extract-table-select-column-map.mixin.ts","../../../../../../packages/angular/material/table-select/src/lib/extract-table-select-data-source.mixin.ts","../../../../../../packages/angular/material/table-select/src/lib/extract-table-select-to-display.mixin.ts","../../../../../../packages/angular/material/table-select/src/lib/extract-table-select-to-value.mixin.ts","../../../../../../packages/angular/material/table-select/src/lib/open-table-select-window.method.ts","../../../../../../packages/angular/material/table-select/src/lib/open-table-select-window.directive.ts","../../../../../../packages/angular/material/table-select/src/lib/table-select-control.directive.ts","../../../../../../packages/angular/material/table-select/src/lib/table-select-control.module.ts","../../../../../../packages/angular/material/table-select/src/index.ts","../../../../../../packages/angular/material/table-select/src/rxap-ngx-material-table-select.ts"],"sourcesContent":["import {\n  AsyncPipe,\n  KeyValuePipe,\n  NgFor,\n  NgIf,\n  NgSwitch,\n  NgSwitchCase,\n  NgSwitchDefault,\n} from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  Inject,\n} from '@angular/core';\nimport {\n  FormsModule,\n  ReactiveFormsModule,\n} from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { ParentControlContainerDirective } from '@rxap/forms';\nimport { FormFieldNoPaddingDirective } from '@rxap/material-directives/form-field';\nimport { InputClearButtonDirective } from '@rxap/material-form-system';\nimport {\n  BooleanCellComponent,\n  CheckboxCellComponent,\n  CheckboxHeaderCellComponent,\n  DateCellComponent,\n  FilterHeaderRowDirective,\n  RowAnimation,\n  SelectRowService,\n  TableDataSourceDirective,\n  TableFilterService,\n} from '@rxap/material-table-system';\nimport { GetFromObjectPipe } from '@rxap/pipes';\nimport {\n  RXAP_WINDOW_DATA,\n  RXAP_WINDOW_REF,\n  WindowFooterDirective,\n  WindowRef,\n} from '@rxap/window-system';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { OpenTableSelectWindowMethodParameters } from '../open-table-select-window.method';\n\n\n@Component({\n    selector: 'rxap-table-select-window',\n    templateUrl: './table-select-window.component.html',\n    styleUrls: ['./table-select-window.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    animations: [RowAnimation],\n    providers: [\n        SelectRowService,\n        TableFilterService,\n    ],\n    imports: [\n        NgIf,\n        MatProgressBarModule,\n        MatTableModule,\n        TableDataSourceDirective,\n        FilterHeaderRowDirective,\n        MatSortModule,\n        CheckboxHeaderCellComponent,\n        CheckboxCellComponent,\n        NgFor,\n        NgSwitch,\n        NgSwitchCase,\n        NgSwitchDefault,\n        MatFormFieldModule,\n        MatInputModule,\n        FormsModule,\n        ReactiveFormsModule,\n        ParentControlContainerDirective,\n        MatButtonModule,\n        InputClearButtonDirective,\n        MatIconModule,\n        DateCellComponent,\n        BooleanCellComponent,\n        MatPaginatorModule,\n        WindowFooterDirective,\n        AsyncPipe,\n        KeyValuePipe,\n        GetFromObjectPipe,\n        FormFieldNoPaddingDirective,\n    ]\n})\nexport class TableSelectWindowComponent<Data = unknown> {\n\n  public readonly displayColumns: string[];\n  public readonly filterDisplayColumns: string[];\n  public readonly hasSomeFilterColumn: boolean;\n  public readonly id: string;\n\n  public hasNotSelected$: Observable<boolean>;\n\n  constructor(\n    @Inject(RXAP_WINDOW_DATA)\n    public readonly data: OpenTableSelectWindowMethodParameters,\n    private readonly selectRows: SelectRowService<Data>,\n    @Inject(RXAP_WINDOW_REF)\n    private readonly windowRef: WindowRef\n  ) {\n    this.id = this.data.id;\n    this.displayColumns = [ ...this.data.columns.keys() ];\n    if (this.data.multiple) {\n      this.displayColumns.unshift('select');\n    }\n    this.filterDisplayColumns = this.displayColumns.map(column => [ 'filter', column ].join('__'));\n    this.hasSomeFilterColumn = Array.from(this.data.columns.values()).some(column => column.filter);\n    this.hasNotSelected$ = this.selectRows.selectedRows$.pipe(\n      map((selected) => selected.length === 0)\n    );\n    if (this.data.selected?.length) {\n      this.selectRows.selectionModel.select(...this.data.selected as Data[]);\n    }\n  }\n\n  selectRow(element: Data) {\n    this.selectRows.selectionModel.select(element);\n    // if not multi select send the selection and close\n    if (!this.data.multiple) {\n      this.select();\n    }\n  }\n\n  public close() {\n    this.windowRef.complete();\n  }\n\n  public select() {\n    this.windowRef.next(this.selectRows.selectedRows);\n    this.close();\n  }\n\n}\n","<mat-progress-bar *ngIf=\"tableDataSourceDirective.loading$ | async\" mode=\"indeterminate\"></mat-progress-bar>\n<div class=\"table-scroll-container mt-4 overflow-x-auto overscroll-auto\">\n  <table #tableDataSourceDirective=\"rxapTableDataSource\"\n         [id]=\"id ?? 'table-select'\"\n         [paginator]=\"paginator\"\n         [parameters]=\"data.parameters\"\n         mat-table\n         matSort\n         rxap-filter-header-row\n         rxapTableDataSource>\n\n    <ng-container *ngIf=\"data.multiple\" matColumnDef=\"select\" [sticky]=\"true\">\n      <th *matHeaderCellDef class=\"drop-shadow-2xl\" mat-header-cell rxap-checkbox-header-cell></th>\n      <td\n        *matCellDef=\"let element\"\n        [element]=\"element\"\n        class=\"drop-shadow-2xl\"\n        mat-cell\n        rxap-checkbox-cell\n      ></td>\n    </ng-container>\n\n    <ng-container *ngIf=\"hasSomeFilterColumn\">\n\n      <ng-container *ngIf=\"data.multiple\" [matColumnDef]=\"'filter__select'\">\n        <th *matHeaderCellDef mat-header-cell></th>\n      </ng-container>\n\n      <ng-container *ngFor=\"let item of data.columns | keyvalue\">\n\n        <ng-container *ngIf=\"item.value.filter\">\n\n          <ng-container [ngSwitch]=\"item.value.type\">\n\n            <ng-container *ngSwitchCase=\"'date'\">\n\n              <ng-container [matColumnDef]=\"'filter__' + item.key\">\n                <th *matHeaderCellDef mat-header-cell>\n\n                </th>\n              </ng-container>\n\n            </ng-container>\n\n            <ng-container *ngSwitchCase=\"'boolean'\">\n\n              <ng-container [matColumnDef]=\"'filter__' + item.key\">\n                <th *matHeaderCellDef mat-header-cell>\n\n                </th>\n              </ng-container>\n\n            </ng-container>\n\n            <ng-container *ngSwitchDefault>\n\n              <ng-container [matColumnDef]=\"'filter__' + item.key\">\n                <th *matHeaderCellDef mat-header-cell>\n                  <mat-form-field rxapNoPadding>\n                    <mat-label i18n>{{ item.value.label }}</mat-label>\n                    <input\n                      [formControlName]=\"item.key\"\n                      [placeholder]=\"'Enter the ' + item.value.label + ' filter'\"\n                      matInput\n                      parentControlContainer\n                    />\n                    <button mat-icon-button matSuffix rxapInputClearButton>\n                      <mat-icon>clear</mat-icon>\n                    </button>\n                  </mat-form-field>\n                </th>\n              </ng-container>\n\n            </ng-container>\n\n          </ng-container>\n\n        </ng-container>\n\n        <ng-container *ngIf=\"!item.value.filter\">\n          <ng-container [matColumnDef]=\"'filter__' + item.key\">\n            <th *matHeaderCellDef mat-header-cell>{{ data.showHeader ? '' : item.value.label }}</th>\n          </ng-container>\n        </ng-container>\n\n      </ng-container>\n\n    </ng-container>\n\n    <ng-container *ngFor=\"let item of data.columns | keyvalue\">\n\n      <ng-container [ngSwitch]=\"item.value.type\">\n\n        <ng-container *ngSwitchCase=\"'date'\">\n\n          <ng-container [matColumnDef]=\"item.key\">\n            <th *matHeaderCellDef mat-header-cell mat-sort-header>{{ item.value.label }}</th>\n            <td\n              *matCellDef=\"let element\"\n              [format]=\"item.value['format']\"\n              [rxap-date-cell]=\"element | getFromObject:item.key\"\n              mat-cell\n            ></td>\n          </ng-container>\n\n        </ng-container>\n\n        <ng-container *ngSwitchCase=\"'boolean'\">\n\n          <ng-container [matColumnDef]=\"item.key\">\n            <th *matHeaderCellDef mat-header-cell mat-sort-header>{{ item.value.label }}</th>\n            <td\n              *matCellDef=\"let element\"\n              [rxap-boolean-cell]=\"element | getFromObject:item.key\"\n              mat-cell\n            ></td>\n          </ng-container>\n\n        </ng-container>\n\n        <ng-container *ngSwitchDefault>\n\n          <ng-container [matColumnDef]=\"item.key\">\n            <th *matHeaderCellDef mat-header-cell mat-sort-header>\n              {{ item.value.label }}\n            </th>\n            <td *matCellDef=\"let element\" mat-cell>\n              {{ element | getFromObject:item.key }}\n            </td>\n          </ng-container>\n\n        </ng-container>\n\n      </ng-container>\n\n    </ng-container>\n\n    <ng-container *ngIf=\"hasSomeFilterColumn\">\n      <tr\n        *matHeaderRowDef=\"filterDisplayColumns\"\n        class=\"filter-header\"\n        mat-header-row\n      ></tr>\n    </ng-container>\n\n    <ng-template [ngIf]=\"data.showHeader\">\n      <tr\n        *matHeaderRowDef=\"displayColumns\"\n        mat-header-row\n      ></tr>\n    </ng-template>\n\n    <tr\n      (click)=\"selectRow(element)\"\n      *matRowDef=\"let element; columns: displayColumns\"\n      [@rowsAnimation]\n      class=\"cursor-pointer\"\n      mat-row\n    ></tr>\n\n  </table>\n</div>\n<mat-paginator\n  #paginator=\"matPaginator\"\n  [pageSizeOptions]=\"[5, 10, 25, 50, 75, 100, 150, 200]\"\n  [pageSize]=\"10\"\n></mat-paginator>\n\n<ng-template rxapWindowFooter>\n  <div class=\"flex flex-row items-center gap-4\">\n    <button (click)=\"close()\" class=\"grow-0\" mat-stroked-button type=\"button\">\n      <ng-container i18n>Cancel</ng-container>\n    </button>\n    <button (click)=\"select()\" *ngIf=\"data.multiple\" [disabled]=\"hasNotSelected$ | async\" class=\"grow-0\" mat-raised-button\n            type=\"button\">\n      <ng-container i18n>Select</ng-container>\n    </button>\n    <span *ngIf=\"!data.multiple\" class=\"hint\" i18n>Click on a row to select an entry.</span>\n  </div>\n</ng-template>\n","import { ComponentType } from '@angular/cdk/overlay';\nimport {\n  CdkPortalOutlet,\n  ComponentPortal,\n  Portal,\n  PortalModule,\n} from '@angular/cdk/portal';\nimport { NgIf } from '@angular/common';\nimport {\n  AfterViewInit,\n  Component,\n  ComponentRef,\n  inject,\n  Injector,\n  INJECTOR,\n  Input,\n  QueryList,\n  ViewChildren,\n  ViewContainerRef,\n  ViewRef,\n} from '@angular/core';\nimport { RXAP_WINDOW_REF } from '@rxap/window-system';\nimport {\n  ReplaySubject,\n  Subject,\n  tap,\n} from 'rxjs';\n\n// TODO : refactor move to package @rxap/ngx-testing\n\nexport class MockWindowRef<O = any, R = any> extends Subject<R> {\n\n  /**\n   * @deprecated removed. use the subscribe method and wait for the resolve event\n   */\n  public readonly closed$ = new Subject<R | undefined>();\n\n  /**\n   * @internal\n   */\n  public footerPortal$ = new ReplaySubject<Portal<any>>(1);\n\n  /**\n   * @deprecated removed. use the complete method\n   * @param result\n   */\n  public close(result?: R): void {\n    this.closed$.next(result);\n    if (result !== undefined) {\n      this.next(result);\n    }\n    this.complete();\n  }\n\n  public override complete() {\n    super.complete();\n  }\n\n  /**\n   * @param portal\n   */\n  public setFooterPortal(portal: Portal<any>) {\n    setTimeout(() => {\n      this.footerPortal$.next(portal);\n    });\n  }\n\n}\n\n@Component({\n    template: `\n    <div class=\"flex flex-col gap-8\">\n      <div class=\"grow\">\n        <ng-template [cdkPortalOutlet]=\"content\"></ng-template>\n      </div>\n      <hr class=\"m-4\">\n      <div class=\"grow-0\">\n        <ng-template [cdkPortalOutlet]=\"footer\"></ng-template>\n      </div>\n    </div>\n  `,\n    imports: [\n        PortalModule,\n        NgIf,\n    ]\n})\nexport class WindowTestWrapperComponent implements AfterViewInit {\n\n  @Input({required: true})\n  component!: ComponentType<unknown>;\n\n  content: Portal<unknown> | null = null;\n  footer: Portal<unknown> | null = null;\n\n  injector         = inject(INJECTOR);\n  viewContainerRef = this.injector.get(ViewContainerRef);\n\n  @ViewChildren(CdkPortalOutlet)\n  public portalOutlet!: QueryList<CdkPortalOutlet>;\n\n  ngAfterViewInit() {\n    this.portalOutlet.forEach((outlet) => {\n      outlet.attached.pipe(\n        tap(attachedRef => {\n          if (attachedRef instanceof ComponentRef) {\n            console.log('ComponentRef', attachedRef);\n            // attachedRef.changeDetectorRef.detach();\n          } else if (attachedRef instanceof ViewRef) {\n            console.log('viewRef', attachedRef);\n          } else {\n            console.log('attachedRef', attachedRef);\n          }\n        }),\n      ).subscribe();\n    });\n    const windowRef = new MockWindowRef();\n    const injector  = Injector.create({\n      parent: this.injector,\n      providers: [ {\n        provide: RXAP_WINDOW_REF,\n        useValue: windowRef,\n      } ],\n    });\n    windowRef.footerPortal$.pipe(\n      tap((portal) => this.footer = portal),\n    ).subscribe();\n    this.content = new ComponentPortal(this.component, this.viewContainerRef, injector);\n  }\n\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n  NgClass,\n  NgIf,\n} from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  forwardRef,\n  HostBinding,\n  Input,\n  OnDestroy,\n  Optional,\n  Self,\n} from '@angular/core';\nimport {\n  AbstractControl,\n  NgControl,\n} from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport {\n  ControlValueAccessor,\n  RxapFormControl,\n} from '@rxap/forms';\nimport {\n  delay,\n  startWith,\n  Subject,\n  Subscription,\n} from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\n@Component({\n    selector: 'rxap-table-select-input',\n    templateUrl: './table-select-input.component.html',\n    styleUrls: ['./table-select-input.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: MatFormFieldControl,\n            useExisting: forwardRef(() => TableSelectInputComponent),\n        },\n    ],\n    imports: [NgClass, NgIf]\n})\nexport class TableSelectInputComponent<Data extends Record<string, any> = Record<string, any>>\n  extends ControlValueAccessor<Data>\n  implements MatFormFieldControl<Data>, OnDestroy, AfterViewInit {\n\n  static nextId = 0;\n\n  @HostBinding() id = `rxap-table-select-input-${ TableSelectInputComponent.nextId++ }`;\n\n  stateChanges = new Subject<void>();\n\n  control: AbstractControl | null = null;\n  rxapControl: RxapFormControl | null = null;\n\n  focused = false;\n\n  get empty() {\n    return this._value === null;\n  }\n\n  @HostBinding('class.floating')\n  get shouldLabelFloat() {\n    return this.focused || !this.empty;\n  }\n\n  @Input()\n  get required() {\n    return this._required;\n  }\n  set required(req) {\n    this._required = coerceBooleanProperty(req);\n    this.stateChanges.next();\n  }\n\n  @Input()\n  get disabled(): boolean { return this._disabled; }\n\n  set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n    this.stateChanges.next();\n  }\n\n  private _subscription = new Subscription();\n\n  get errorState(): boolean {\n    return this.ngControl?.invalid || false;\n  }\n\n\n  private _disabled = false;\n\n  private _required = false;\n\n  private _value: Data | null = null;\n\n  private _placeholder = '';\n\n  @Input()\n  get placeholder() {\n    return this._placeholder;\n  }\n\n  set placeholder(placeholder: string) {\n    this._placeholder = placeholder;\n    this.stateChanges.next();\n  }\n\n  set value(value: Data | null) {\n    this._value = value;\n    this.stateChanges.next();\n  }\n\n  get value(): Data | null {\n    return this._value;\n  }\n\n  constructor(\n    @Optional() @Self() public ngControl: NgControl | null,\n    private readonly cdr: ChangeDetectorRef,\n  ) {\n    super();\n    // Replace the provider from above with this.\n    if (this.ngControl != null) {\n      // Setting the value accessor directly (instead of using\n      // the providers) to avoid running into a circular import.\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  private _display?: string;\n\n  get display(): string | undefined {\n    return this._display;\n  }\n\n  set display(value: string | undefined) {\n    this._display = value;\n    this.cdr.detectChanges();\n  }\n\n  public writeValue(value: Data) {\n    this.value = value;\n  }\n\n  public setValue(value: Data) {\n    this.value = value;\n    if (this.onChange) {\n      this.onChange(this.value);\n    }\n  }\n\n  ngAfterViewInit() {\n    if (this.ngControl) {\n      this.control = this.ngControl.control;\n      if (this.control instanceof RxapFormControl) {\n        this.rxapControl = this.control;\n      }\n    }\n    this._subscription.add(this.control?.valueChanges.pipe(\n      startWith(this.control?.value ?? null),\n      delay(100), // TODO : remove timing workaround\n      // the method updateTableSelectInput of TableSelectControlDirective is called in the ngAfterViewInit\n      // and will be executed AFTER the first value is used to create the display\n      // solution: it must be ensured the the this.toDisplay function is called after the updateTableSelectInput\n      // execution else for the first this.toDisplay function the default implementation is used\n      tap(async value => this.display = value === null ? '' : await this.toDisplay(value)),\n    ).subscribe());\n    this._subscription.add(this.rxapControl?.disabled$.pipe(\n      tap(disabled => this.disabled = disabled),\n    ).subscribe());\n  }\n\n  toDisplay(value: any): string | Promise<string> {\n    return value;\n  }\n\n  ngOnDestroy() {\n    this.stateChanges.complete();\n    this._subscription?.unsubscribe();\n  }\n\n  setDescribedByIds(ids: string[]): void {\n    // no op\n  }\n\n  onContainerClick(event: MouseEvent): void {\n    // no op\n  }\n\n}\n","<div [ngClass]=\"{ disabled: disabled }\" class=\"mat-select-trigger\">\n  <span *ngIf=\"display || placeholder\">{{display ?? placeholder}}</span>\n</div>\n","import { StaticProvider } from '@angular/core';\nimport {\n  RxapFormControl,\n  RxapFormGroup,\n} from '@rxap/forms';\nimport { RXAP_TABLE_FILTER_FORM_DEFINITION } from '@rxap/material-table-system';\nimport { TableSelectColumnMap } from './open-table-select-window.method';\n\nexport function CreateFilterFormProvider(columns: TableSelectColumnMap): StaticProvider {\n\n  const columnNameList: string[] = Array.from(columns.entries())\n                                        .filter(([ key, column ]) => column.filter)\n                                        .map(([ key, column ]) => key);\n\n  const controls: Record<string, RxapFormControl> = {};\n\n  for (const column of columnNameList) {\n    controls[column] = new RxapFormControl(null, { controlId: column });\n  }\n\n  const form = {\n    ...controls,\n    rxapFormGroup: new RxapFormGroup(controls, { controlId: 'filter' }),\n    rxapMetadata: { controlId: 'filter' },\n  };\n\n  Reflect.set(form.rxapFormGroup, '_rxapFormDefinition', form);\n\n  return {\n    provide: RXAP_TABLE_FILTER_FORM_DEFINITION,\n    useValue: form,\n  };\n\n}\n","import { InjectionToken } from '@angular/core';\nimport { BaseDataSource } from '@rxap/data-source';\nimport { AbstractTableDataSource } from '@rxap/data-source/table';\nimport {\n  UseDataSource,\n  UseDataSourceSettings,\n} from '@rxap/form-system';\nimport { Method } from '@rxap/pattern';\nimport { setMetadataMap } from '@rxap/reflect-metadata';\nimport { Constructor } from '@rxap/utilities';\nimport { TableSelectColumn } from './open-table-select-window.method';\n\nexport const TABLE_SELECT_COLUMN_MAP  = 'TABLE_SELECT_COLUMN_MAP';\nexport const TABLE_SELECT_TO_DISPLAY  = 'TABLE_SELECT_TO_DISPLAY';\nexport const TABLE_SELECT_TO_VALUE    = 'TABLE_SELECT_TO_VALUE';\nexport const TABLE_SELECT_METHOD      = 'TABLE_SELECT_TO_VALUE';\nexport const TABLE_SELECT_DATA_SOURCE = 'TABLE_SELECT_DATA_SOURCE';\n\nexport function UseTableSelectColumns(columnMap: Map<string, TableSelectColumn> | Record<string, TableSelectColumn>) {\n  return function (target: any, propertyKey: string) {\n    setMetadataMap(propertyKey, columnMap, TABLE_SELECT_COLUMN_MAP, target);\n  };\n}\n\nexport function UseTableSelectDataSource<Data extends Record<string, any> = Record<string, any>>(\n  dataSource: Constructor<BaseDataSource<Data[]>> | Constructor<AbstractTableDataSource<Data>> | InjectionToken<AbstractTableDataSource<Data> | BaseDataSource<Data[]>>,\n  settings?: UseDataSourceSettings,\n) {\n  return UseDataSource(dataSource, TABLE_SELECT_DATA_SOURCE, settings);\n}\n\nexport function UseTableSelectToDisplay<Data = Record<string, any>>(toDisplay: (value: Data) => string | Promise<string>) {\n  return function (target: any, propertyKey: string) {\n    setMetadataMap(propertyKey, toDisplay, TABLE_SELECT_TO_DISPLAY, target);\n  };\n}\n\nexport function UseTableSelectToValue<Data = Record<string, any>>(toValue: (value: Data) => unknown | Promise<unknown>) {\n  return function (target: any, propertyKey: string) {\n    setMetadataMap(propertyKey, toValue, TABLE_SELECT_TO_VALUE, target);\n  };\n}\n\nexport function UseTableSelectMethod<Data = Record<string, any>>(method: Method) {\n  return function (target: any, propertyKey: string) {\n    setMetadataMap(propertyKey, method, TABLE_SELECT_METHOD, target);\n  };\n}\n","import {\n  ExtractControlMixin,\n  ExtractFormDefinitionMixin,\n  RxapFormSystemError,\n} from '@rxap/form-system';\nimport { Mixin } from '@rxap/mixin';\nimport { getMetadata } from '@rxap/reflect-metadata';\nimport { TABLE_SELECT_COLUMN_MAP } from './decorators';\nimport { TableSelectColumn } from './open-table-select-window.method';\n\nexport interface ExtractTableSelectColumnMapMixin extends ExtractControlMixin, ExtractFormDefinitionMixin {\n}\n\n@Mixin(ExtractFormDefinitionMixin, ExtractControlMixin)\nexport class ExtractTableSelectColumnMapMixin {\n\n  protected extractTableSelectColumnMap(\n    control        = this.extractControl(),\n    formDefinition = this.extractFormDefinition(control),\n  ) {\n    const map = getMetadata<Map<string, Record<string, TableSelectColumn>>>(\n      TABLE_SELECT_COLUMN_MAP,\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(control.controlId)) {\n      throw new RxapFormSystemError('A use data source definition does not exists in the form definition metadata', '');\n    }\n\n    return map.get(control.controlId)!;\n  }\n\n}\n","import { BaseDataSource } from '@rxap/data-source';\nimport { ExtractDatasourceMixin } from '@rxap/material-table-window-system';\nimport { Mixin } from '@rxap/mixin';\nimport { TABLE_SELECT_DATA_SOURCE } from './decorators';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface ExtractTableSelectDataSourceMixin<Data extends Record<string, any>> extends ExtractDatasourceMixin {\n}\n\n@Mixin(ExtractDatasourceMixin)\nexport class ExtractTableSelectDataSourceMixin<Data extends Record<string, any>> {\n\n  protected extractTableSelectDataSource(): BaseDataSource<Data[]> {\n    return this.extractDatasource(TABLE_SELECT_DATA_SOURCE) as any as BaseDataSource<Data[]>;\n  }\n\n}\n","import {\n  ExtractControlMixin,\n  ExtractFormDefinitionMixin,\n  RxapFormSystemError,\n} from '@rxap/form-system';\nimport { Mixin } from '@rxap/mixin';\nimport { getMetadata } from '@rxap/reflect-metadata';\nimport { TABLE_SELECT_TO_DISPLAY } from './decorators';\n\nexport interface ExtractTableSelectToDisplayMixin<Value = unknown> extends ExtractControlMixin,\n  ExtractFormDefinitionMixin {\n}\n\nexport type TableSelectToDisplayFunction<Value = unknown> = (value: Value) => string | Promise<string>;\n\n@Mixin(ExtractFormDefinitionMixin, ExtractControlMixin)\nexport class ExtractTableSelectToDisplayMixin<Value = unknown> {\n\n  protected extractTableSelectToDisplay(\n    control        = this.extractControl(),\n    formDefinition = this.extractFormDefinition(control),\n  ) {\n    const map = getMetadata<Map<string, TableSelectToDisplayFunction<Value>>>(\n      TABLE_SELECT_TO_DISPLAY,\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(control.controlId)) {\n      throw new RxapFormSystemError('A use data source definition does not exists in the form definition metadata', '');\n    }\n\n    return map.get(control.controlId)!;\n  }\n\n}\n","import {\n  ExtractControlMixin,\n  ExtractFormDefinitionMixin,\n  RxapFormSystemError,\n} from '@rxap/form-system';\nimport { Mixin } from '@rxap/mixin';\nimport { getMetadata } from '@rxap/reflect-metadata';\nimport { TABLE_SELECT_TO_VALUE } from './decorators';\n\nexport interface ExtractTableSelectToValueMixin<Data = unknown, Value = unknown> extends ExtractControlMixin,\n  ExtractFormDefinitionMixin {\n}\n\nexport type TableSelectToValueFunction<Data = unknown, Value = unknown> = (value: Data) => Value | Promise<Value>;\n\n@Mixin(ExtractFormDefinitionMixin, ExtractControlMixin)\nexport class ExtractTableSelectToValueMixin<Data = unknown, Value = unknown> {\n\n  protected extractTableSelectToValue(\n    control        = this.extractControl(),\n    formDefinition = this.extractFormDefinition(control),\n  ) {\n    const map = getMetadata<Map<string, TableSelectToValueFunction<Data, Value>>>(\n      TABLE_SELECT_TO_VALUE,\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(control.controlId)) {\n      throw new RxapFormSystemError('A use data source definition does not exists in the form definition metadata', '');\n    }\n\n    return map.get(control.controlId)!;\n  }\n\n}\n","import {\n  Inject,\n  Injectable,\n  INJECTOR,\n  Injector,\n  StaticProvider,\n  ViewContainerRef,\n} from '@angular/core';\nimport '@rxap/rxjs';\nimport {\n  BaseDataSource,\n  staticDataSource,\n} from '@rxap/data-source';\nimport {\n  AbstractTableDataSource,\n  TableDataSource,\n} from '@rxap/data-source/table';\nimport {\n  RXAP_MATERIAL_TABLE_SYSTEM_SELECT_ROW_OPTIONS,\n  RXAP_TABLE_FILTER,\n  RXAP_TABLE_METHOD,\n  TABLE_DATA_SOURCE,\n  TABLE_REMOTE_METHOD_ADAPTER_FACTORY,\n} from '@rxap/material-table-system';\nimport { Method } from '@rxap/pattern';\nimport {\n  RXAP_WINDOW_SETTINGS,\n  WindowConfig,\n  WindowService,\n} from '@rxap/window-system';\nimport { Observable } from 'rxjs';\nimport { CreateFilterFormProvider } from './create-filter-form-provider';\nimport { TableSelectWindowComponent } from './table-select-window/table-select-window.component';\n\ndeclare const $localize: any;\n\nexport interface SelectColumn {\n  label: string;\n  type?: string;\n  filter?: boolean;\n\n  [key: string]: any;\n}\n\nexport interface BooleanColumn extends SelectColumn {\n  type: 'boolean';\n}\n\nexport interface DateColumn extends SelectColumn {\n  type: 'date';\n  format?: string;\n}\n\nexport type TableSelectColumn = BooleanColumn | DateColumn | SelectColumn;\n\nexport type TableSelectColumnMap = ReadonlyMap<string, TableSelectColumn>;\n\nexport interface OpenTableSelectWindowMethodParameters<Data extends Record<string, any> = Record<string, any>> {\n  multiple?: boolean;\n  columns: TableSelectColumnMap;\n  data: AbstractTableDataSource<Data> | BaseDataSource<Data[]> | Data[];\n  windowConfig?: Omit<Omit<Omit<WindowConfig, 'component'>, 'injector'>, 'viewContainerRef'>;\n  viewContainerRef?: ViewContainerRef;\n  /**\n   * (optional) The parameters Observable passed to the tableDirective and then joined with the parameters used in the\n   * TableDataSource http request\n   *\n   * Use to add additional parameters to the http request\n   */\n  parameters?: Observable<Record<string, any>>;\n  injector?: Injector;\n  selected?: Data[];\n  /**\n   * true - the table header row is visible\n   */\n  showHeader?: boolean;\n  title: string;\n  id: string;\n  compareWith?: (o1: Data, o2: Data) => boolean;\n}\n\n@Injectable()\nexport class OpenTableSelectWindowMethod<Data extends Record<string, any> = Record<string, any>>\n  implements Method<Data[], OpenTableSelectWindowMethodParameters<Data>> {\n\n  constructor(\n    private readonly windowService: WindowService,\n    @Inject(INJECTOR)\n    private readonly injector: Injector,\n  ) {\n  }\n\n  public async call(parameters: OpenTableSelectWindowMethodParameters<Data>): Promise<Data[]> {\n\n    const providers: StaticProvider[] = [\n      {\n        provide: RXAP_MATERIAL_TABLE_SYSTEM_SELECT_ROW_OPTIONS,\n        useValue: {\n          multiple: parameters.multiple ?? false,\n          selected: parameters.selected ?? [],\n          compareWith: parameters.compareWith,\n        },\n      },\n    ];\n\n    if (Array.isArray(parameters.data)) {\n      providers.push({\n        provide: TABLE_DATA_SOURCE,\n        useValue: new TableDataSource(staticDataSource(parameters.data)),\n      });\n    } else if (parameters.data instanceof AbstractTableDataSource) {\n      providers.push({\n        provide: TABLE_DATA_SOURCE,\n        useValue: parameters.data,\n      });\n    } else {\n      providers.push({\n        provide: TABLE_DATA_SOURCE,\n        useValue: new TableDataSource(parameters.data),\n      });\n    }\n\n    providers.push({\n      provide: RXAP_TABLE_METHOD,\n      useValue: null,\n    });\n\n    providers.push({\n      provide: TABLE_REMOTE_METHOD_ADAPTER_FACTORY,\n      useValue: null,\n    });\n\n    providers.push({\n      provide: RXAP_TABLE_FILTER,\n      useValue: null,\n    });\n\n    providers.push({\n      provide: RXAP_WINDOW_SETTINGS,\n      useValue: null,\n    });\n\n    providers.push(this.createFilterForm(parameters.columns));\n\n    const windowRef = this.windowService.open({\n      ...parameters.windowConfig,\n      viewContainerRef: parameters.viewContainerRef,\n      injector: Injector.create({\n        parent: parameters.injector ?? this.injector,\n        providers,\n      }),\n      title: parameters.title ?? $localize`Select`,\n      data: parameters,\n      component: TableSelectWindowComponent,\n    });\n\n    return new Promise((resolve, reject) => {\n      windowRef.subscribe({\n        next: data => resolve(data ?? []),\n        error: error => reject(error),\n        complete: () => resolve([]),\n      });\n    });\n\n  }\n\n  private createFilterForm(columns: TableSelectColumnMap): StaticProvider {\n    return CreateFilterFormProvider(columns);\n  }\n\n}\n","import {\n  AfterViewInit,\n  Directive,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  inject,\n  INJECTOR,\n  Injector,\n  input,\n  Input,\n  isDevMode,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport { MatFormField } from '@angular/material/form-field';\nimport {\n  BaseDataSource,\n  DataSourceLoader,\n} from '@rxap/data-source';\nimport { AbstractTableDataSource } from '@rxap/data-source/table';\nimport { RxapFormControl } from '@rxap/forms';\nimport { Mixin } from '@rxap/mixin';\nimport { GenerateRandomString } from '@rxap/utilities';\nimport { WindowService } from '@rxap/window-system';\nimport { Observable } from 'rxjs';\nimport { ExtractTableSelectColumnMapMixin } from './extract-table-select-column-map.mixin';\nimport { ExtractTableSelectDataSourceMixin } from './extract-table-select-data-source.mixin';\nimport { ExtractTableSelectToValueMixin } from './extract-table-select-to-value.mixin';\nimport {\n  OpenTableSelectWindowMethod,\n  TableSelectColumn,\n} from './open-table-select-window.method';\n\nexport interface OpenTableSelectWindowDirective<Data extends Record<string, any>, Value = Data>\n  extends ExtractTableSelectDataSourceMixin<Data>, ExtractTableSelectColumnMapMixin,\n    ExtractTableSelectToValueMixin<Data, Value> {\n}\n\n@Mixin(ExtractTableSelectDataSourceMixin,\n  ExtractTableSelectColumnMapMixin,\n  ExtractTableSelectToValueMixin,\n)\n@Directive({\n  selector: '[rxapOpenTableSelectWindow]',\n  standalone: true,\n  providers: [ OpenTableSelectWindowMethod ],\n})\nexport class OpenTableSelectWindowDirective<Data extends Record<string, any> = Record<string, any>, Value = Data>\n  implements OnChanges, OnInit, OnDestroy, AfterViewInit {\n  @Input()\n  public data?: Data[] | BaseDataSource<Data[]> | AbstractTableDataSource<Data>;\n  @Input()\n  public columns?: Map<string, TableSelectColumn> | Record<string, TableSelectColumn>;\n  @Input()\n  public selected: Data[]               = [];\n  @Input()\n  public parameters?: Observable<Record<string, unknown>>;\n  @Output()\n  public selectedChange                 = new EventEmitter<Data[]>();\n  @Input()\n  public label?: string;\n  @Input()\n  public id?: string;\n  public _internalId                    = GenerateRandomString();\n  @Input()\n  public compareWith?: (o1: Data, o2: Data) => boolean;\n\n  public readonly multiple              = input(false);\n\n  @HostBinding('type')\n  public type                           = 'button';\n  public control?: RxapFormControl;\n  // required for the use mixin ExtractDatasourceMixin\n  public readonly dataSourceLoader      = inject(DataSourceLoader);\n  protected _hasOpenWindow              = false;\n  protected readonly openMethod         = inject<OpenTableSelectWindowMethod<Data>>(OpenTableSelectWindowMethod);\n  protected readonly windowService      = inject(WindowService);\n  protected readonly injector: Injector = inject(INJECTOR);\n  protected matButton                   = inject(MatButton, {optional: true});\n  private invalidInputs                 = false;\n\n  private _disabled = false;\n\n  @HostBinding('disabled')\n  get disabled(): boolean {\n    return this._disabled || this.invalidInputs;\n  }\n\n  set disabled(value: boolean) {\n    this._disabled = value;\n  }\n\n  @Input()\n  public toValue?: (value: Data) => Value | Promise<Value>;\n\n  public ngOnChanges() {\n    this.checkInputs();\n  }\n\n  public ngOnInit() {\n    this.checkInputs();\n  }\n\n  ngOnDestroy() {\n    if (this.windowService.has(this._internalId)) {\n      this.windowService.close(this._internalId);\n    }\n  }\n\n  @HostListener('click', [ '$event' ])\n  public async onClick($event: Event) {\n    $event.stopPropagation();\n    if (this.disabled || this._hasOpenWindow) {\n      console.debug('disabled or has open window', {disabled: this.disabled, hasOpenWindow: this._hasOpenWindow});\n      return;\n    }\n    if (!this.data || !this.columns) {\n      throw new Error('FATAL: The data or columns input is not set');\n    }\n    setTimeout(() => {\n      this.control?.disable();\n    });\n    const selected = await this.openMethod.call({\n      windowConfig: {\n        id: this._internalId,\n      },\n      injector: this.injector,\n      data: this.data,\n      columns: this.columns instanceof Map ? this.columns : new Map(Object.entries(this.columns)),\n      selected: this.selected?.slice() ?? [],\n      title: this.label ?? 'Select value',\n      compareWith: this.compareWith,\n      id: this.id ?? GenerateRandomString(10),\n      parameters: this.parameters,\n      multiple: this.multiple(),\n    });\n    this.control?.enable();\n    if (isDevMode()) {\n      console.debug('selected', selected);\n    }\n    this.selected       = selected ?? [];\n    this._hasOpenWindow = false;\n    this.selectedChange.emit(this.selected);\n    if (this.selected.length) {\n      if (this.toValue) {\n        this.control?.setValue(this.toValue(this.selected[0]));\n      } else {\n        throw new Error('The toValue method is not defined');\n      }\n    } else {\n      this.control?.reset();\n    }\n  }\n\n  ngAfterViewInit() {\n    const hasNgControl    = !!this.injector.get(NgControl, null);\n    const hasMatFormField = !!this.injector.get(MatFormField, null);\n    if (hasMatFormField || hasNgControl) {\n      this.matFormField = this.injector.get(MatFormField);\n      this.ngControl    = this.matFormField._control.ngControl;\n      this.control ??= this.ngControl?.control as RxapFormControl ?? null;\n      this.data ??= this.extractTableSelectDataSource();\n      this.columns ??= this.extractTableSelectColumnMap();\n      this.toValue ??= this.extractTableSelectToValue() ?? (value => value as any);\n      if (this.control) {\n        this.disabled = this.control.disabled;\n        this.control.registerOnDisabledChange(isDisabled => {\n          this.disabled = isDisabled;\n        });\n      }\n    }\n    this.checkInputs();\n  }\n\n  public checkInputs() {\n    if (!this.columns || !this.data) {\n      console.warn('columns or data is not defined');\n      this.invalidInputs = true;\n      if (this.matButton) {\n        this.matButton.disabled = this.disabled;\n      }\n    } else {\n      if (typeof this.columns !== 'object') {\n        throw new Error('Ensure that the input columns has a valid value');\n      }\n      if (!Array.isArray(this.data) && !(this.data instanceof BaseDataSource)) {\n        throw new Error('Ensure that the input data has a valid value');\n      }\n      this.invalidInputs = false;\n      if (this.matButton) {\n        this.matButton.disabled = this.disabled;\n      }\n    }\n  }\n\n}\n","import {\n  AfterContentInit,\n  AfterViewInit,\n  ContentChild,\n  ContentChildren,\n  Directive,\n  ElementRef,\n  inject,\n  INJECTOR,\n  Injector,\n  Input,\n  isDevMode,\n  OnChanges,\n  OnDestroy,\n  QueryList,\n  SimpleChanges,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { MatFormField } from '@angular/material/form-field';\nimport '@rxap/rxjs';\nimport {\n  BaseDataSource,\n  DataSourceLoader,\n} from '@rxap/data-source';\nimport { AbstractTableDataSource } from '@rxap/data-source/table';\nimport { RxapFormControl } from '@rxap/forms';\nimport { WindowTableSelectOptions } from '@rxap/material-table-window-system';\nimport { Mixin } from '@rxap/mixin';\nimport { Method } from '@rxap/pattern';\nimport { coerceArray } from '@rxap/utilities';\nimport { Subscription } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { ExtractTableSelectColumnMapMixin } from './extract-table-select-column-map.mixin';\nimport { ExtractTableSelectDataSourceMixin } from './extract-table-select-data-source.mixin';\nimport { ExtractTableSelectToDisplayMixin } from './extract-table-select-to-display.mixin';\nimport { ExtractTableSelectToValueMixin } from './extract-table-select-to-value.mixin';\nimport { OpenTableSelectWindowDirective } from './open-table-select-window.directive';\nimport { TableSelectColumn } from './open-table-select-window.method';\nimport { TableSelectInputComponent } from './table-select-input/table-select-input.component';\n\nexport interface TableSelectControlDirective<Data extends Record<string, any>>\n  extends ExtractTableSelectDataSourceMixin<Data>, ExtractTableSelectToValueMixin, ExtractTableSelectToDisplayMixin,\n    ExtractTableSelectColumnMapMixin {\n}\n\n@Mixin(ExtractTableSelectDataSourceMixin,\n  ExtractTableSelectToValueMixin,\n  ExtractTableSelectToDisplayMixin,\n  ExtractTableSelectColumnMapMixin)\n@Directive({\n  selector: 'mat-form-field[rxapTableSelectControl]',\n  standalone: true,\n})\nexport class TableSelectControlDirective<Data extends Record<string, any> = Record<string, any>>\n  implements AfterViewInit, AfterContentInit, OnChanges, OnDestroy {\n\n  @Input()\n  public multiple?: boolean;\n\n  @Input()\n  public openMethod!: Method<Data[], WindowTableSelectOptions<Data>>;\n\n  @Input()\n  public data?: Data[] | BaseDataSource<Data[]> | AbstractTableDataSource<Data>;\n\n  @Input()\n  public columns?: Map<string, TableSelectColumn> | Record<string, TableSelectColumn>;\n\n  public ngControl: NgControl | null = null;\n\n  public value: Data | null = null;\n\n  public control!: RxapFormControl;\n\n  @ContentChildren(OpenTableSelectWindowDirective)\n  public openTableSelectWindow!: QueryList<OpenTableSelectWindowDirective<Data>>;\n\n  @ContentChild(TableSelectInputComponent)\n  public tableSelectInput!: TableSelectInputComponent;\n\n  @ContentChild('mat-label')\n  public matLabel?: ElementRef;\n  @Input()\n  public toValue?: (value: Data) => unknown | Promise<unknown>;\n  public readonly injector: Injector          = inject(INJECTOR);\n  // required for the use mixin ExtractDatasourceMixin\n  public readonly dataSourceLoader            = inject(DataSourceLoader);\n  protected disabled                          = false;\n  protected matFormField: MatFormField | null = null;\n  private readonly _subscription              = new Subscription();\n\n  public get selected(): Data[] {\n    return this.value !== null ? [ this.value ] : [];\n  }\n\n  @Input()\n  public toDisplay: (value: Data) => string | Promise<string> = value => value as any;\n\n  public ngOnChanges(changes: SimpleChanges) {\n    const columnsChange = changes['columns'];\n    const dataChange    = changes['data'];\n    if (this.openTableSelectWindow) {\n      if (columnsChange || dataChange) {\n        this.updateOpenTableSelectWindow();\n      }\n    }\n  }\n\n  public ngAfterViewInit() {\n    this.matFormField = this.injector.get(MatFormField, null);\n    if (!this.matFormField) {\n      throw new Error('The mat form field could not be injected');\n    }\n    this.ngControl = this.matFormField._control.ngControl as NgControl;\n    if (this.ngControl) {\n      if (this.ngControl.control instanceof RxapFormControl) {\n        this.data      = this.extractTableSelectDataSource();\n        this.toDisplay = this.extractTableSelectToDisplay() ?? this.toDisplay;\n        this.toValue   = this.extractTableSelectToValue() ?? this.toValue;\n        this.columns   = this.extractTableSelectColumnMap();\n      }\n      this.updateOpenTableSelectWindow();\n      if (this.ngControl.control instanceof RxapFormControl) {\n        this._subscription?.add(this.control.disabled$.pipe(\n          tap(disabled => this.disabled = disabled),\n          tap(() => this.updateOpenTableSelectWindowDisabledState()),\n        ).subscribe());\n      }\n    } else {\n      if (isDevMode()) {\n        console.log('standalone mode');\n      }\n    }\n    this.updateTableSelectInput();\n  }\n\n  public ngAfterContentInit() {\n    this.updateOpenTableSelectWindow();\n    for (const openTableSelectWindow of this.openTableSelectWindow) {\n      this._subscription.add(openTableSelectWindow.selectedChange.pipe(\n        tap($event => this.onSelected($event)),\n      ).subscribe());\n    }\n\n  }\n\n  public ngOnDestroy() {\n    this._subscription?.unsubscribe();\n  }\n\n  private updateTableSelectInput() {\n    if (this.toDisplay) {\n      this.tableSelectInput.toDisplay = this.toDisplay.bind(this);\n    }\n  }\n\n  private updateOpenTableSelectWindowDisabledState() {\n    for (const openTableSelectWindow of this.openTableSelectWindow) {\n      openTableSelectWindow.disabled = this.disabled;\n      openTableSelectWindow.checkInputs();\n    }\n  }\n\n  private updateOpenTableSelectWindow() {\n    for (const openTableSelectWindow of this.openTableSelectWindow) {\n      openTableSelectWindow.disabled = this.disabled;\n      if (this.columns) {\n        openTableSelectWindow.columns = this.columns;\n      }\n      if (this.data) {\n        openTableSelectWindow.data = this.data;\n      }\n      if (this.toValue) {\n        openTableSelectWindow.compareWith = ((o1: Data, o2: Data) => {\n          if (this.toValue) {\n            return this.toValue(o1) === this.toValue(o2);\n          }\n          return o1 === o2;\n        });\n      }\n      if (this.matLabel) {\n        openTableSelectWindow.label = this.matLabel?.nativeElement.innerText;\n      }\n      if (this.ngControl) {\n        const control = this.ngControl.control;\n        if (control?.value) {\n          openTableSelectWindow.selected = coerceArray(control.value);\n        }\n      }\n      openTableSelectWindow.checkInputs();\n    }\n  }\n\n  private async onSelected($event: Data[]) {\n    if ($event?.length) {\n      this.tableSelectInput.display = await this.toDisplay($event[0]);\n      this.value                    = $event[0];\n      this.tableSelectInput.setValue(this.value);\n    } else {\n      this.value = null;\n    }\n  }\n\n}\n","import { NgModule } from '@angular/core';\nimport { OpenTableSelectWindowDirective } from './open-table-select-window.directive';\n\nimport { OpenTableSelectWindowMethod } from './open-table-select-window.method';\nimport { TableSelectControlDirective } from './table-select-control.directive';\nimport { TableSelectInputComponent } from './table-select-input/table-select-input.component';\nimport { TableSelectWindowComponent } from './table-select-window/table-select-window.component';\n\n\n@NgModule({\n  imports: [\n    OpenTableSelectWindowDirective,\n    TableSelectControlDirective,\n    TableSelectInputComponent,\n    TableSelectWindowComponent,\n  ],\n  exports: [\n    OpenTableSelectWindowDirective,\n    TableSelectControlDirective,\n    TableSelectInputComponent,\n    TableSelectWindowComponent,\n  ],\n  providers: [\n    OpenTableSelectWindowMethod,\n  ],\n})\nexport class TableSelectControlModule {\n}\n","// region table-select-window\nexport * from './lib/table-select-window/table-select-window.component';\nexport * from './lib/table-select-window/window-test-wrapper';\n// endregion\n\n// region table-select-input\nexport * from './lib/table-select-input/table-select-input.component';\n// endregion\n\n// region \nexport * from './lib/create-filter-form-provider';\nexport * from './lib/decorators';\nexport * from './lib/extract-table-select-column-map.mixin';\nexport * from './lib/extract-table-select-data-source.mixin';\nexport * from './lib/extract-table-select-to-display.mixin';\nexport * from './lib/extract-table-select-to-value.mixin';\nexport * from './lib/open-table-select-window.directive';\nexport * from './lib/open-table-select-window.method';\nexport * from './lib/table-select-control.directive';\nexport * from './lib/table-select-control.module';\n// endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","tap"],"mappings":"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"}