export interface SchedulerParams { /** * 数据总量 */ dataCount: number; /** * 数据位置索引 * * @default 0 */ defaultDataIndex?: number; /** * 容器最小数量 * @default 3 */ minCount?: number; /** * 是否循环 * @default false */ loop?: boolean; onRestart?: (detail: { containerIndex: number; dataIndex: number; }) => void; onContainerIndexChange?: (detail: { containerIndex: number; dataIndex: number; }) => void; onDataIndexChange?: (detail: { containerIndex: number; dataIndex: number; }) => void; onRecompute?: () => void; } declare class Scheduler { group: number[]; loop: boolean; indexMapping: Map; private dataIndex; private containerIndex; private dataCount; private minCount; private onContainerIndexChange; private onDataIndexChange; private onRecompute; private onRestart; constructor({ dataCount, defaultDataIndex, minCount, loop, onDataIndexChange, onRecompute, onRestart, onContainerIndexChange }: SchedulerParams); get maxDataIndex(): number; get groupSize(): number; get maxContainerIndex(): number; private get minMiddleCount(); /** * 更新数据总量 * @param count 总量值 */ updateCount(count: number): void; /** * 更新当前数据索引 * @param index 当前索引值 */ updateIndex(index: number): Promise; recomputeIndexArr(): number[]; computeContainerIndex(step?: number): number; setContainerIndex(index: number): number; getStepOffset(targetIndex: number): number; getSafeDataIndex(dataIndex: number): number; getDataIndexByStep(): void; getDataIndex(): number; getContainerIndex(): number; getDataIndexByContainerIndex(index: number): number; /** * 非 `loop` 模式时, 特殊处理第一组数据 * @private */ private getFirstGroupIndexMapping; /** * 非 `loop` 模式时, 特殊处理最后一组数据 * @returns */ private getLastGroupIndexMapping; private get isFirstGroup(); private get isLastGroup(); private getIndexMapping; private computeGroup; private setGroup; } export default Scheduler;