vscroll
Version:
Virtual scroll engine
54 lines (53 loc) • 1.71 kB
TypeScript
import { ProcessClass, ProcessName, ProcessPayload, ProcessSubject } from './process';
import { IDatasource } from './datasource';
import { IPackage } from './adapter';
import { Item } from '../classes/item';
import { RoutinesClassType } from './routines';
import { Scroller } from '../scroller';
export type OnDataChanged<Data> = (items: Item<Data>[]) => void;
export interface WorkflowParams<ItemData> {
datasource: IDatasource<ItemData>;
consumer: IPackage;
element: HTMLElement;
run: OnDataChanged<ItemData>;
Routines?: RoutinesClassType;
}
interface CallWorkflow {
(process: ProcessSubject): void;
interrupted?: boolean;
}
export interface ScrollerWorkflow<ItemData = unknown> {
call: CallWorkflow;
onDataChanged: OnDataChanged<ItemData>;
}
export interface ScrollerParams<ItemData> {
datasource: IDatasource<ItemData>;
consumer?: IPackage;
element?: HTMLElement;
workflow?: ScrollerWorkflow<ItemData>;
Routines?: RoutinesClassType;
scroller?: Scroller<ItemData>;
}
export type WorkflowGetter<ItemData> = () => ScrollerWorkflow<ItemData>;
export interface WorkflowError {
loop: string;
time: number;
message: string;
process: ProcessName;
}
export interface InterruptParams<ItemData> {
process: ProcessName;
finalize?: boolean;
datasource?: IDatasource<ItemData>;
}
export interface StateMachineMethods<ItemData> {
run: (process: ProcessClass) => (...args: unknown[]) => void;
interrupt: (params: InterruptParams<ItemData>) => void;
done: () => void;
onError: (process: ProcessName, payload: ProcessPayload) => void;
}
export interface StateMachineParams<ItemData = unknown> {
input: ProcessSubject;
methods: StateMachineMethods<ItemData>;
}
export {};