import { BehaviorSubject, Subscription } from 'rxjs'; import { DataSource } from '@angular/cdk/collections'; import { RealsoftPaginator } from '../paginator/paginator'; import { RealsoftSort } from '../sort/sort'; export declare class RealsoftTableDataSource extends DataSource { private readonly _data; private readonly _renderData; private readonly _filter; private readonly _internalPageChanges; /** * Subscription to the changes that should trigger an update to the table's rendered rows, such * as filtering, sorting, pagination, or base data changes. */ _renderChangesSubscription: Subscription | null; filteredData: T[]; get data(): T[]; set data(data: T[]); get filter(): string; set filter(filter: string); get sort(): RealsoftSort | null; set sort(sort: RealsoftSort | null); private _sort; get paginator(): P | null; set paginator(paginator: P | null); private _paginator; /** * ensures proper sorting behavior in tables when sorting mixed data types * prevents issues with large numbers that js cannot safely handle. * avoids coercion problems where "25" string may be treated differently than 25 (number) * Ensures proper sorting behavior in tables, especially when sorting mixed data types. */ sortingDataAccessor: (data: T, sortHeaderId: string) => string | number; sortData: (data: T[], sort: RealsoftSort) => T[]; /** * @returns true if any value in the object matches the filter, otherwise it returns false; */ filterPredicate: (data: T, filter: string) => boolean; constructor(initialData?: T[]); _updateChangeSubscription(): void; _filterData(data: T[]): T[]; _orderData(data: T[]): T[]; _pageData(data: T[]): T[]; _updatePaginator(filteredDataLength: number): void; connect(): BehaviorSubject; disconnect(): void; }