{"version":3,"file":"rxap-data-source-http-table.mjs","sources":["../../../../../packages/angular/data-source/http/table/src/lib/error.ts","../../../../../packages/angular/data-source/http/table/src/lib/tokens.ts","../../../../../packages/angular/data-source/http/table/src/lib/http-table.data-source.ts","../../../../../packages/angular/data-source/http/table/src/lib/to-http-table-data-source.pipe.ts","../../../../../packages/angular/data-source/http/table/src/index.ts","../../../../../packages/angular/data-source/http/table/src/rxap-data-source-http-table.ts"],"sourcesContent":["import { RxapHttpDataSourceError } from '@rxap/data-source/http';\n\nexport class RxapHttpTableDataSourceError extends RxapHttpDataSourceError {\n\n  constructor(message: string, code: string, className?: string) {\n    super(message, code, className);\n    this.addSubPackageName('table');\n  }\n\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const RXAP_HTTP_TABLE_DATA_SOURCE_TO_OPTIONS_FUNCTION = new InjectionToken(\n  'rxap/data-source/http/table/to-options');\n","import {\n  Inject,\n  Injectable,\n  Optional,\n} from '@angular/core';\nimport {\n  BaseDataSourceViewer,\n  RXAP_DATA_SOURCE_METADATA,\n} from '@rxap/data-source';\nimport type { HttpDataSource } from '@rxap/data-source/http';\nimport {\n  HttpDataSourceOptions,\n  HttpDataSourceViewer,\n} from '@rxap/data-source/http';\nimport {\n  PaginationData,\n  RxapHttpPaginationDataSourceError,\n} from '@rxap/data-source/http/pagination';\nimport { PaginatorLike } from '@rxap/data-source/pagination';\nimport {\n  AbstractTableDataSource,\n  AbstractTableDataSourceMetadata,\n  FilterLike,\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  RxapAbstractTableDataSource,\n  SortLike,\n  TableEvent,\n} from '@rxap/data-source/table';\nimport {\n  Constructor,\n  isPromise,\n} from '@rxap/utilities';\nimport {\n  combineLatest,\n  EMPTY,\n  isObservable,\n  Observable,\n  of,\n  TeardownLogic,\n} from 'rxjs';\nimport {\n  filter as rxjsFilter,\n  map,\n  startWith,\n  switchMap,\n  tap,\n} from 'rxjs/operators';\nimport { RxapHttpTableDataSourceError } from './error';\nimport { RXAP_HTTP_TABLE_DATA_SOURCE_TO_OPTIONS_FUNCTION } from './tokens';\n\nexport interface HttpTableDataSourceViewer extends BaseDataSourceViewer {\n  readonly viewChange: Observable<TableEvent>;\n}\n\nexport type HttpTableDataSourceMetadata = AbstractTableDataSourceMetadata\n\nexport type TableEventToHttpOptionsFunction = (\n  event: TableEvent,\n) =>\n  | HttpDataSourceOptions\n  | Observable<HttpDataSourceOptions>\n  | Promise<HttpDataSourceOptions>;\n\n@Injectable()\nexport class HttpTableDataSource<\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: HttpDataSource<PaginationData<Data>>,\n    @Optional()\n    @Inject(RXAP_TABLE_DATA_SOURCE_PAGINATOR)\n      paginator: PaginatorLike | null = null,\n    @Optional()\n    @Inject(RXAP_HTTP_TABLE_DATA_SOURCE_TO_OPTIONS_FUNCTION)\n      tableEventToHttpOptions: any | 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: HttpTableDataSourceMetadata | null = dataSource.metadata,\n  ) {\n    super(paginator, sort, filter, parameters, metadata);\n    if (tableEventToHttpOptions) {\n      this.tableEventToHttpOptions = tableEventToHttpOptions;\n    }\n  }\n\n  public tableEventToHttpOptions(\n    event: TableEvent,\n  ):\n    | HttpDataSourceOptions\n    | Observable<HttpDataSourceOptions>\n    | Promise<HttpDataSourceOptions> {\n    throw new RxapHttpTableDataSourceError(\n      'The TableEventToHttpOptionsFunction is not defined',\n      '',\n    );\n  }\n\n  protected override _connect(\n    viewer: HttpDataSourceViewer,\n  ): [ Observable<Data[]>, TeardownLogic ] {\n    this.assertPaginator();\n\n    if (viewer.viewChange && viewer.viewChange !== EMPTY) {\n      console.warn('The viewChange property is readonly');\n    }\n\n    if (this.paginator === undefined || this.paginator.page === undefined) {\n      throw new RxapHttpTableDataSourceError(\n        'The paginator instance has not a page property',\n        '',\n      );\n    }\n\n    viewer.viewChange = 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        tap((page) => {\n          if (typeof page.pageSize !== 'number') {\n            console.warn('The page size is not defined!');\n          }\n        }),\n        rxjsFilter((page) => typeof page.pageSize === 'number'),\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 ?? of(null),\n    ]).pipe(\n      map(([ page, sort, filter ]) => ({\n        start: page ? page.pageSize * page.pageIndex : 0,\n        end: page ? page.pageSize * page.pageIndex + page.pageSize : Number.MAX_SAFE_INTEGER,\n        page,\n        sort,\n        filter,\n      })),\n      switchMap((event) => {\n        const options = this.tableEventToHttpOptions(event);\n        if (isPromise(options) || isObservable(options)) {\n          return options;\n        }\n        return of(options);\n      }),\n    );\n\n    return [\n      this.dataSource.connect(viewer).pipe(\n        tap((paginationData) => {\n          if (typeof paginationData !== 'object') {\n            throw new RxapHttpPaginationDataSourceError(\n              'The http data source does not return a PaginationData object. Value is not an object',\n              '',\n            );\n          }\n          if (paginationData['total'] === undefined || paginationData['total'] === null) {\n            throw new RxapHttpPaginationDataSourceError(\n              'The http data source does not return a PaginationData object. Object has not the property total',\n              '',\n            );\n          }\n          if (\n            !paginationData['data'] &&\n            !Array.isArray(paginationData['data'])\n          ) {\n            throw new RxapHttpPaginationDataSourceError(\n              'The http data source does not return a PaginationData object. Object has not the property data' +\n              ' property of the value not an array',\n              '',\n            );\n          }\n          if (\n            paginationData['size'] !== undefined &&\n            paginationData['size'] !== this.paginator!.pageSize\n          ) {\n            console.warn(\n              'The selected page size from the paginator is not equal to the page size from the PaginationData object',\n            );\n          }\n          if (\n            paginationData.page !== undefined &&\n            paginationData.page !== this.paginator!.pageIndex\n          ) {\n            console.warn(\n              'The selected page index from the paginator is not equal to the page index from the PaginationData object',\n            );\n          }\n        }),\n        tap((paginationData) => this.updateTotalLength(paginationData.total)),\n        map((paginationData) => paginationData.data),\n      ),\n      () => this.dataSource.disconnect(viewer),\n    ];\n  }\n}\n\nexport function RxapHttpTableDataSource<Data extends Record<any, any>>(\n  metadata: HttpTableDataSourceMetadata,\n  className = 'HttpTableDataSource',\n  packageName = '@rxap/data-source/http/table',\n) {\n  return function (target: Constructor<HttpTableDataSource<Data>>) {\n    RxapAbstractTableDataSource(metadata, className, packageName)(target);\n  };\n}\n","import {\n  Pipe,\n  PipeTransform,\n} from '@angular/core';\nimport { HttpDataSource } from '@rxap/data-source/http';\nimport { PaginationData } from '@rxap/data-source/http/pagination';\nimport { PaginatorLike } from '@rxap/data-source/pagination';\nimport {\n  FilterLike,\n  SortLike,\n} from '@rxap/data-source/table';\nimport {\n  HttpTableDataSource,\n  TableEventToHttpOptionsFunction,\n} from './http-table.data-source';\n\n@Pipe({\n  name: 'toHttpTableDataSource',\n  standalone: true,\n})\nexport class ToHttpTableDataSourcePipe implements PipeTransform {\n\n  public transform<Data extends Record<any, any>>(\n    dataSource: HttpDataSource<PaginationData<Data>>,\n    paginator: PaginatorLike,\n    tableEventToHttpOptions: TableEventToHttpOptionsFunction,\n    sort?: SortLike,\n    filter?: FilterLike,\n  ): HttpTableDataSource<Data> {\n    return new HttpTableDataSource(dataSource, paginator, tableEventToHttpOptions, sort, filter);\n  }\n\n}\n\n\n","// region \nexport * from './lib/error';\nexport * from './lib/http-table.data-source';\nexport * from './lib/to-http-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":["rxjsFilter"],"mappings":"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"}