vscroll
Version:
Virtual scroll engine
29 lines (28 loc) • 1.15 kB
TypeScript
import { Settings, DevSettings } from './settings';
import { IAdapter } from './adapter';
type SuccessFn<T = unknown> = (data: T[]) => void;
type ErrorFn = (error: unknown) => void;
export interface ObservableLike<T = unknown> {
subscribe(next: SuccessFn<T>, error: ErrorFn, complete: () => void): {
unsubscribe: () => void;
};
}
type DSGetCallback<T> = (index: number, count: number, success: SuccessFn<T>, fail?: ErrorFn) => void;
type DSGetObservable<T> = (index: number, count: number) => ObservableLike<T[]>;
type DSGetPromise<T> = (index: number, count: number) => PromiseLike<T[]>;
export type DatasourceGet<T> = DSGetCallback<T> | DSGetObservable<T> | DSGetPromise<T>;
export interface IDatasourceParams<T = unknown> {
get: DatasourceGet<T>;
settings?: Settings<T>;
devSettings?: DevSettings;
}
export interface IDatasourceOptional<T = unknown> extends Omit<IDatasourceParams<T>, 'get'> {
get?: DatasourceGet<T>;
}
export interface IDatasource<T = unknown> extends IDatasourceParams<T> {
adapter?: IAdapter<T>;
}
export interface IDatasourceConstructed<T = unknown> extends IDatasource<T> {
adapter: IAdapter<T>;
}
export {};