@vindev/particle
Version:
Angular Component Library using Tailwind
39 lines (38 loc) • 1.42 kB
TypeScript
import { BehaviorSubject, Observable, Subscription } from 'rxjs';
import { AtmPaginator } from './paginator';
export declare type ListRange = {
start: number;
end: number;
};
export interface CollectionViewer {
viewChange: Observable<ListRange>;
}
export declare abstract class DataSource<T> {
abstract connect(collectionViewer: CollectionViewer): Observable<readonly T[]>;
abstract disconnect(collectionViewer: CollectionViewer): void;
}
export declare function isDataSource(value: any): value is DataSource<any>;
export declare class AtmDataSource<T> extends DataSource<T> {
private readonly _data;
private readonly _filter;
private readonly _renderData;
private readonly _internalPageChanges;
_renderChangesSubscription: Subscription | null;
filteredData: T[];
get paginator(): AtmPaginator | null;
set paginator(paginator: AtmPaginator | null);
private _paginator;
get data(): T[];
set data(data: T[]);
get filter(): string;
set filter(filter: string);
filterPredicate: (data: T, filter: string) => boolean;
constructor(initialData?: T[]);
connect(): BehaviorSubject<T[]>;
addToData(newData: T[]): void;
disconnect(): void;
_updateChangeSubscription(): void;
_filterData(data: T[]): T[];
_pageData(data: T[]): T[];
_updatePaginator(filteredDataLength: number): void;
}