UNPKG

react-sequencer

Version:

Step based sequencer to give your components reliable states for transitions and animations.

50 lines (49 loc) 1.59 kB
export declare enum PlayStatus { IDLE = "STATUS_IDLE", PLAYING = "STATUS_PLAYING" } export declare type EndMode = 'loop' | 'end' | 'start'; /**** Ticker */ export declare type TickerNotifyFunction = (timestamp: number) => void; /**** Sequencer */ export declare type StepInput<TStepName> = [TStepName, number]; export declare type StepsInput<TStepName> = Array<StepInput<TStepName>>; export interface OptionsInput<TStepName> { steps: StepsInput<TStepName>; loop?: boolean; complete?: boolean; endMode?: EndMode; autoplay?: boolean; } export interface Options<TStepName> { steps: StepsInput<TStepName>; loop: boolean; complete: boolean; endMode: EndMode; autoplay: boolean; } export interface Step<TStepName> { startPos: number; endPos: number; name: TStepName; } export declare type Steps<TStepName> = Array<Step<TStepName>>; export declare type NotifyFunction<TStepName> = (state: SequencerState<TStepName>) => void; export declare type Subscriptions<TStepName> = Array<NotifyFunction<TStepName>>; export interface SequencerState<TStepName> { current: TStepName; index: number; isPlaying: boolean; isComplete: boolean; isStopped: boolean; } export interface SequencerApi<TStepName> { play(): void; complete(): void; stop(): void; pause(): void; isBefore(name: TStepName): boolean; isAfter(name: TStepName): boolean; } /*** Use Sequencer */ export declare type TUseSequencer<TStepName> = [SequencerState<TStepName>, SequencerApi<TStepName>];