{"version":3,"file":"rxap-data-source-table.mjs","sources":["../../../../../packages/angular/data-source/table/src/lib/tokens.ts","../../../../../packages/angular/data-source/table/src/lib/abstract-table.data-source.ts","../../../../../packages/angular/data-source/table/src/lib/dynamic-table.data-source.ts","../../../../../packages/angular/data-source/table/src/lib/error.ts","../../../../../packages/angular/data-source/table/src/lib/table.data-source.ts","../../../../../packages/angular/data-source/table/src/lib/to-table-data-source.pipe.ts","../../../../../packages/angular/data-source/table/src/index.ts","../../../../../packages/angular/data-source/table/src/rxap-data-source-table.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const RXAP_TABLE_DATA_SOURCE_PAGINATOR = new InjectionToken('rxap/data-source/table/paginator');\nexport const RXAP_TABLE_DATA_SOURCE_SORT = new InjectionToken('rxap/data-source/table/sort');\nexport const RXAP_TABLE_DATA_SOURCE_FILTER = new InjectionToken('rxap/data-source/table/filter');\nexport const RXAP_TABLE_DATA_SOURCE_PARAMETERS = new InjectionToken('rxap/data-source/table/parameters');\nexport const RXAP_TABLE_DATA_SOURCE = new InjectionToken('rxap/data-source/table/source');\nexport const RXAP_TABLE_METHOD = new InjectionToken(\n  'rxap/data-source/table/table-method',\n);\n","import {\n  Inject,\n  Injectable,\n  isDevMode,\n  Optional,\n} from '@angular/core';\nimport { RXAP_DATA_SOURCE_METADATA } from '@rxap/data-source';\nimport {\n  AbstractPaginationDataSource,\n  AbstractPaginationDataSourceMetadata,\n  PaginatorLike,\n  RxapAbstractPaginationDataSource,\n} from '@rxap/data-source/pagination';\nimport { ToggleSubject } from '@rxap/rxjs';\nimport {\n  Constructor,\n  hasIndexSignature,\n} from '@rxap/utilities';\nimport { Observable } from 'rxjs';\nimport {\n  RXAP_TABLE_DATA_SOURCE_FILTER,\n  RXAP_TABLE_DATA_SOURCE_PAGINATOR,\n  RXAP_TABLE_DATA_SOURCE_PARAMETERS,\n  RXAP_TABLE_DATA_SOURCE_SORT,\n} from './tokens';\n\nexport type SortDirection = 'asc' | 'desc' | '';\n\nexport interface Sort {\n  /** The id of the column being sorted. */\n  active: string;\n  /** The sort direction. */\n  direction: SortDirection;\n}\n\nexport interface SortLike {\n  disabled?: boolean;\n  sortChange?: Observable<Sort>;\n  /** The id of the most recently sorted MatSortable. */\n  active: string;\n  /**\n   * The direction to set when an MatSortable is initially sorted.\n   * May be overriden by the MatSortable's sort start.\n   */\n  start: SortDirection;\n  /** The sort direction of the currently active MatSortable. */\n  direction: SortDirection;\n}\n\nexport interface FilterLike {\n  change: Observable<Record<string, any> | string>;\n  current: Record<string, any> | string;\n}\n\nexport type AbstractTableDataSourceMetadata = AbstractPaginationDataSourceMetadata\n\n@Injectable()\nexport abstract class AbstractTableDataSource<Data extends Record<string, any> = any, Parameters = any>\n  extends AbstractPaginationDataSource<Data> {\n\n  public override readonly loading$ = new ToggleSubject(true);\n  public sort?: SortLike;\n  public filter?: FilterLike;\n  public parameters?: Observable<Parameters>;\n\n  constructor(\n    @Optional()\n    @Inject(RXAP_TABLE_DATA_SOURCE_PAGINATOR)\n      paginator: PaginatorLike | null = null,\n    @Optional()\n    @Inject(RXAP_TABLE_DATA_SOURCE_SORT)\n      sort: SortLike | null = null,\n    @Optional()\n    @Inject(RXAP_TABLE_DATA_SOURCE_FILTER)\n      filter: FilterLike | null = null,\n    @Optional()\n    @Inject(RXAP_TABLE_DATA_SOURCE_PARAMETERS)\n      parameters: Observable<Parameters> | null = null,\n    @Optional()\n    @Inject(RXAP_DATA_SOURCE_METADATA)\n      metadata: AbstractTableDataSourceMetadata | null = null,\n  ) {\n    super(paginator, metadata);\n    if (parameters) {\n      this.parameters = parameters;\n    }\n    if (sort) {\n      this.sort = sort;\n    }\n    if (filter) {\n      this.filter = filter;\n    }\n  }\n\n  public get sortByColumn(): string | undefined {\n    return this.sort?.active;\n  }\n\n  public get sortDirection(): 'asc' | 'desc' | '' | undefined {\n    return this.sort?.direction;\n  }\n\n  public get totalRowCount(): number {\n    return this.paginator!.length;\n  }\n\n  public get filterValue(): Record<string, any> | string | undefined {\n    return this.filter?.current;\n  }\n\n  public applySortBy(\n    data: ReadonlyArray<Data>,\n    column: string,\n    direction: SortDirection,\n  ): Data[] {\n    return column ? data.slice().sort((a, b) => {\n\n      if (!hasIndexSignature(a) || !hasIndexSignature(b)) {\n        return 0;\n      }\n\n      const aColumn = a[column];\n      const bColumn = b[column];\n\n      const type = typeof aColumn;\n      let sort = 0;\n\n      switch (type) {\n        case 'boolean':\n          sort = aColumn === bColumn ? 0 : aColumn ? 1 : -1;\n          break;\n        case 'string':\n          sort = aColumn.localeCompare(bColumn);\n          break;\n        case 'number':\n        case 'bigint':\n          sort = aColumn - bColumn;\n          break;\n\n      }\n\n      return direction === 'desc' ? sort * -1 : sort;\n\n    }) : data.slice();\n  }\n\n  public applyFilterBy(data: ReadonlyArray<Data>, filter: Record<string, any> | string): Data[] {\n    if (filter) {\n      if (typeof filter === 'string') {\n        if (isDevMode()) {\n          console.error('The filter is a string. Currently not supported by the AbstractTableDataSource');\n        }\n        return data.slice();\n      } else {\n        return data.filter(row => {\n          return Object.entries(filter).every(([ key, value ]) => {\n            const type = typeof value;\n            if (row[key] !== undefined && hasIndexSignature(row)) {\n              switch (type) {\n                case 'undefined':\n                  return true;\n                case 'object':\n                  return value === null || value === undefined || value === row[key];\n                case 'boolean':\n                  return value === row[key];\n                case 'number':\n                  return value === row[key];\n                case 'string':\n                  return (row[key] || '').toString().toLowerCase().includes(value.toLowerCase());\n                case 'function':\n                  return value(row[key]);\n                case 'bigint':\n                  return value === row[key];\n              }\n            }\n            return true;\n          });\n        });\n      }\n    } else {\n      return data.slice();\n    }\n  }\n\n}\n\nexport function RxapAbstractTableDataSource(\n  metadataOrId: string | AbstractTableDataSourceMetadata,\n  className = 'AbstractTableDataSource',\n  packageName = '@rxap/data-source/table',\n) {\n  return function (target: Constructor<AbstractTableDataSource<any>>) {\n    RxapAbstractPaginationDataSource(metadataOrId, className, packageName)(target);\n  };\n}\n","import {\n  Inject,\n  Injectable,\n  InjectionToken,\n  isDevMode,\n  OnInit,\n  Optional,\n} from '@angular/core';\nimport {\n  BaseDataSourceViewer,\n  DataSourceViewerId,\n  RXAP_DATA_SOURCE_METADATA,\n} from '@rxap/data-source';\nimport {\n  PageEvent,\n  PaginatorLike,\n} from '@rxap/data-source/pagination';\nimport {\n  Method,\n  MethodWithParameters,\n} from '@rxap/pattern';\nimport {\n  clone,\n  equals,\n} from '@rxap/utilities';\nimport {\n  BehaviorSubject,\n  combineLatest,\n  Observable,\n  of,\n  TeardownLogic,\n} from 'rxjs';\nimport {\n  debounceTime,\n  distinctUntilChanged,\n  map,\n  retry,\n  startWith,\n  switchMap,\n  tap,\n} from 'rxjs/operators';\nimport {\n  AbstractTableDataSource,\n  FilterLike,\n  Sort,\n  SortLike,\n} from './abstract-table.data-source';\nimport { TableDataSourceMetadata } from './table.data-source';\nimport {\n  RXAP_TABLE_DATA_SOURCE_FILTER,\n  RXAP_TABLE_DATA_SOURCE_PAGINATOR,\n  RXAP_TABLE_DATA_SOURCE_PARAMETERS,\n  RXAP_TABLE_DATA_SOURCE_SORT,\n  RXAP_TABLE_METHOD,\n} from './tokens';\n\n/**\n * @deprecated removed use RXAP_TABLE_METHOD instead\n */\nexport const RXAP_TABLE_REMOTE_METHOD = new InjectionToken('rxap/data-source/table/remote-method');\n\nexport interface TableEvent<Parameters = any> {\n  start: number;\n  end: number;\n  page?: PageEvent | null;\n  sort?: Sort | null;\n  filter?: Record<string, any> | null | string;\n  /** The custom table parameter */\n  parameters?: Parameters;\n  /** time of the last refresh call */\n  refresh?: number;\n  setTotalLength?: (length: number) => void;\n}\n\nexport interface DynamicTableDataSourceViewer<Parameters> extends BaseDataSourceViewer<Parameters> {\n  parameters: Parameters;\n}\n\n@Injectable()\nexport class DynamicTableDataSource<Data extends Record<any, any> = any, Parameters = any>\n  extends AbstractTableDataSource<Data, Parameters> implements OnInit {\n\n  public paginatorMap = new Map<string, PaginatorLike>();\n  public sortMap = new Map<string, SortLike>();\n  public filterMap = new Map<string, FilterLike>();\n  public parametersMap = new Map<string, Observable<Parameters>>();\n  protected _refresh$ = new BehaviorSubject<number>(Date.now());\n\n  constructor(\n    @Optional()\n    @Inject(RXAP_TABLE_METHOD)\n    protected readonly method: MethodWithParameters<Data[], TableEvent<Parameters>>,\n    @Optional()\n    @Inject(RXAP_TABLE_DATA_SOURCE_PAGINATOR)\n      paginator: PaginatorLike | null = null,\n    @Optional()\n    @Inject(RXAP_TABLE_DATA_SOURCE_SORT)\n      sort: SortLike | null = null,\n    @Optional()\n    @Inject(RXAP_TABLE_DATA_SOURCE_FILTER)\n      filter: FilterLike | null = null,\n    @Optional()\n    @Inject(RXAP_TABLE_DATA_SOURCE_PARAMETERS)\n      parameters: Observable<Parameters> | null = null,\n    @Optional()\n    @Inject(RXAP_DATA_SOURCE_METADATA)\n      metadata: TableDataSourceMetadata | null = method.metadata,\n  ) {\n    super(paginator, sort, filter, parameters, metadata);\n  }\n\n  /**\n   * @deprecated use method instead\n   * @private\n   */\n  private get remoteMethod(): Method<Data[], TableEvent<Parameters>> {\n    return this.method;\n  }\n\n  // eslint-disable-next-line @angular-eslint/contextual-lifecycle\n  public ngOnInit() {\n    this._data$ = this.createTableDataLoader(this.paginator, this.sort, this.filter, this.parameters);\n  }\n\n  public setTotalLengthFactory(id?: string) {\n    const paginator: PaginatorLike | undefined = id ? this.paginatorMap.get(id) : this.paginator;\n\n    function setTotalLength(length: number): void {\n      if (paginator) {\n        paginator.length = length;\n      }\n    }\n\n    return setTotalLength;\n  }\n\n  public setTotalLength(length: number, id?: string): void {\n    if (id) {\n      if (this.paginatorMap.has(id)) {\n        this.paginatorMap.get(id)!.length = length;\n      }\n    } else {\n      if (this.paginator) {\n        this.paginator.length = length;\n      }\n    }\n  }\n\n  public override refresh(): any {\n    this._refresh$.next(Date.now());\n  }\n\n  setPaginator(paginator: PaginatorLike | undefined, id?: string) {\n    if (paginator) {\n      if (id) {\n        this.paginatorMap.set(id, paginator);\n      } else {\n        this.paginator = paginator;\n      }\n    }\n  }\n\n  setSort(sort: SortLike | null, id?: string) {\n    if (sort) {\n      if (id) {\n        this.sortMap.set(id, sort);\n      } else {\n        this.sort = sort;\n      }\n    }\n  }\n\n  setFilter(tableFilter: FilterLike | undefined, id?: string) {\n    if (tableFilter) {\n      if (id) {\n        this.filterMap.set(id, tableFilter);\n      } else {\n        this.filter = tableFilter;\n      }\n    }\n  }\n\n  setParameters(parameters: Observable<Parameters> | undefined, id?: string) {\n    if (parameters) {\n      if (id) {\n        this.parametersMap.set(id, parameters);\n      } else {\n        this.parameters = parameters;\n      }\n    }\n  }\n\n  protected override genericRetryFunction(error: any, retryCount: number): Observable<any> {\n    this.loading$.disable();\n    return super.genericRetryFunction(error, retryCount);\n  }\n\n  protected override _connect(viewer: BaseDataSourceViewer): [ Observable<Data[]>, TeardownLogic ] | Observable<Data[]> {\n    // call to ensure all parent logic is executed\n    let data = super._connect(viewer);\n    if (viewer.id && this.hasDynamicInputs(viewer.id)) {\n      data = this.createTableDataLoader(\n        this.paginatorMap.get(viewer.id),\n        this.sortMap.get(viewer.id),\n        this.filterMap.get(viewer.id),\n        this.parametersMap.get(viewer.id),\n        viewer.id,\n      );\n    }\n    return data;\n  }\n\n  protected override _disconnect(viewerId: DataSourceViewerId) {\n    if (this.hasDynamicInputs(viewerId)) {\n      this.paginatorMap.delete(viewerId);\n      this.sortMap.delete(viewerId);\n      this.filterMap.delete(viewerId);\n      this.parametersMap.delete(viewerId);\n    }\n    super._disconnect(viewerId);\n  }\n\n  protected async loadPage(tableEvent: TableEvent): Promise<Data[]> {\n    try {\n      return await this.method.call(tableEvent);\n    } catch (e: any) {\n      console.error(`Failed to load page: ${ e.message }`);\n      this.handelError(e);\n      this.hasError$.enable();\n      this.error$.next(e);\n    }\n    return [];\n  }\n\n  protected override handelError(error: any) {\n    if (isDevMode()) {\n      console.error(`Failed to load page: ${ error.message }`, error);\n    }\n  }\n\n  protected hasDynamicInputs(id: string) {\n    return this.paginatorMap.has(id) || this.sortMap.has(id) || this.filterMap.has(id) || this.parametersMap.has(id);\n  }\n\n  private createTableDataLoader(\n    paginatorLike?: PaginatorLike,\n    sortLike?: SortLike,\n    filterLike?: FilterLike,\n    parametersLike?: Observable<Parameters>,\n    id?: string,\n  ) {\n    return combineLatest([\n      paginatorLike?.page?.pipe(\n        startWith({\n          pageIndex: paginatorLike?.pageIndex ?? 0,\n          pageSize: paginatorLike?.pageSize ?? Number.MAX_SAFE_INTEGER,\n          length: paginatorLike?.length,\n        }),\n      ) ?? of(undefined),\n      sortLike?.sortChange?.pipe(\n        startWith({\n          active: sortLike?.active,\n          direction: sortLike?.direction,\n        }),\n      ) ?? of(undefined),\n      filterLike?.change?.pipe(tap(() => paginatorLike?.firstPage && paginatorLike?.firstPage())) ?? of(undefined),\n      parametersLike ?? of(undefined),\n      this._refresh$,\n      this._retry$.pipe(startWith(null)),\n    ]).pipe(\n      debounceTime(100),\n      map(([ page, sort, filter, parameters, refresh ]) => {\n        const tableEvent: TableEvent = {\n          page,\n          start: page ? page.pageSize * page.pageIndex : 0,\n          end: page ? page.pageSize * page.pageIndex + page.pageSize : Number.MAX_SAFE_INTEGER,\n          sort,\n          filter,\n          parameters,\n          refresh,\n        };\n        return {\n          ...clone(tableEvent),\n          setTotalLength: this.setTotalLengthFactory(id),\n        };\n      }),\n      distinctUntilChanged((a, b) => equals(a, b)),\n      tap(() => {\n        this.loading$.enable();\n        if (this.hasError$.value) {\n          this.hasError$.disable();\n        }\n      }),\n      switchMap(tableEvent => this.loadPage(tableEvent)),\n      tap({\n        next: () => this.loading$.disable(),\n        error: error => {\n          this.hasError$.enable();\n          this.error$.next(error);\n          this.handelError(error);\n        },\n      }),\n      retry({\n        delay: (error, retryCount) => this.genericRetryFunction(error, retryCount),\n      }),\n    );\n  }\n\n}\n","import { RxapDataSourceError } from '@rxap/data-source';\n\nexport class RxapTableDataSourceError extends RxapDataSourceError {\n\n  constructor(message: string, code: string, className?: string) {\n    super(message, code, className);\n    this.addSubPackageName('table');\n  }\n\n}\n","import {\n  AbstractTableDataSource,\n  AbstractTableDataSourceMetadata,\n  FilterLike,\n  RxapAbstractTableDataSource,\n  SortLike,\n} from './abstract-table.data-source';\nimport {\n  Inject,\n  Injectable,\n  Optional,\n} from '@angular/core';\nimport {\n  RXAP_TABLE_DATA_SOURCE,\n  RXAP_TABLE_DATA_SOURCE_FILTER,\n  RXAP_TABLE_DATA_SOURCE_PAGINATOR,\n  RXAP_TABLE_DATA_SOURCE_PARAMETERS,\n  RXAP_TABLE_DATA_SOURCE_SORT,\n} from './tokens';\nimport { PaginatorLike } from '@rxap/data-source/pagination';\nimport {\n  BaseDataSource,\n  BaseDataSourceViewer,\n  RXAP_DATA_SOURCE_METADATA,\n} from '@rxap/data-source';\nimport {\n  combineLatest,\n  Observable,\n  of,\n  TeardownLogic,\n} from 'rxjs';\nimport {\n  map,\n  startWith,\n  switchMap,\n  tap,\n} from 'rxjs/operators';\nimport { Constructor } from '@rxap/utilities';\n\nexport type TableDataSourceMetadata = AbstractTableDataSourceMetadata\n\n@Injectable()\nexport class TableDataSource<\n  Data extends Record<any, any>,\n  Parameters = any\n> extends AbstractTableDataSource<Data> {\n  constructor(\n    @Inject(RXAP_TABLE_DATA_SOURCE)\n    private readonly dataSource: BaseDataSource<Data[]>,\n    @Optional()\n    @Inject(RXAP_TABLE_DATA_SOURCE_PAGINATOR)\n      paginator: PaginatorLike | null = null,\n    @Optional()\n    @Inject(RXAP_TABLE_DATA_SOURCE_SORT)\n      sort: SortLike | null = null,\n    @Optional()\n    @Inject(RXAP_TABLE_DATA_SOURCE_FILTER)\n      filter: FilterLike | null = null,\n    @Optional()\n    @Inject(RXAP_TABLE_DATA_SOURCE_PARAMETERS)\n      parameters: Observable<Parameters> | null = null,\n    @Optional()\n    @Inject(RXAP_DATA_SOURCE_METADATA)\n      metadata: TableDataSourceMetadata | null = dataSource.metadata,\n  ) {\n    super(paginator, sort, filter, parameters, metadata);\n  }\n\n  public override refresh(): any {\n    this.dataSource.refresh();\n  }\n\n  protected override _connect(\n    viewer: BaseDataSourceViewer,\n  ): [ Observable<Data[]>, TeardownLogic ] {\n    return [\n      this.dataSource.connect(viewer).pipe(\n        tap((data) => this.updateTotalLength(data.length)),\n        tap(() => this.loading$.disable()),\n        switchMap((data) => {\n          this.assertPaginator();\n\n          if (this.paginator && this.paginator.page) {\n            return combineLatest([\n              this.paginator.page.pipe(\n                startWith({\n                  pageIndex: this.paginator.pageIndex,\n                  pageSize: this.paginator.pageSize,\n                  length: this.paginator.length,\n                }),\n              ),\n              this.sort?.sortChange?.pipe(\n                startWith({\n                  active: this.sort?.active,\n                  direction: this.sort?.direction,\n                }),\n              ) ?? of(null),\n              this.filter?.change.pipe(startWith({})) ?? of(null),\n            ]).pipe(\n              map(([ page, sort, filter ]) => {\n                let filteredData = data;\n\n                if (filter) {\n                  filteredData = this.applyFilterBy(filteredData, filter);\n                }\n\n                let sortData = filteredData;\n\n                if (sort) {\n                  sortData = this.applySortBy(\n                    sortData,\n                    sort.active,\n                    sort.direction,\n                  );\n                }\n\n                return this.applyPagination(\n                  sortData,\n                  page.pageSize,\n                  page.pageIndex,\n                );\n              }),\n            );\n          }\n\n          throw new Error('The paginator have not a defined page property!');\n        }),\n      ),\n      () => this.dataSource.disconnect(viewer),\n    ];\n  }\n}\n\nexport function RxapTableDataSource(\n  metadataOrId: string | TableDataSourceMetadata,\n  className = 'TableDataSource',\n  packageName = '@rxap/data-source/table',\n) {\n  return function (target: Constructor<TableDataSource<any>>) {\n    RxapAbstractTableDataSource(metadataOrId, className, packageName)(target);\n  };\n}\n","import {\n  Pipe,\n  PipeTransform,\n} from '@angular/core';\nimport { PaginatorLike } from '@rxap/data-source/pagination';\nimport { TableDataSource } from './table.data-source';\nimport { BaseDataSource } from '@rxap/data-source';\nimport {\n  FilterLike,\n  SortLike,\n} from './abstract-table.data-source';\n\n@Pipe({\n  name: 'toTableDataSource',\n  standalone: true,\n})\nexport class ToTableDataSourcePipe implements PipeTransform {\n\n  public transform<Data extends Record<any, any>>(\n    dataSource: BaseDataSource<Data[]>,\n    paginator: PaginatorLike,\n    sort?: SortLike,\n    filter?: FilterLike,\n  ): TableDataSource<Data> {\n    return new TableDataSource(dataSource, paginator, sort, filter);\n  }\n\n}\n\n\n","// region \nexport * from './lib/abstract-table.data-source';\nexport * from './lib/dynamic-table.data-source';\nexport * from './lib/error';\nexport * from './lib/table.data-source';\nexport * from './lib/to-table-data-source.pipe';\nexport * from './lib/tokens';\n// endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}