UNPKG

@hypernym/frame

Version:
57 lines 1.59 kB
//#region src/index.d.ts /** * Creates a universal `frame` manager. * * @example * * ```ts * import { createFrame } from '@hypernym/frame' * * const frame = createFrame() * * const process = frame.add((state) => console.log(state), { loop: true }) // Adds the process * * frame.delete(process) // Deletes a specific process * * frame.add((state) => console.log(state), { phase: 1 }) // Adds the process to a specific phase (default is 0) * * frame.delete() // Deletes all processes, phases and resets the frame state * ``` * * @see [Repository](https://github.com/hypernym-studio/frame) */ declare function createFrame(options?: FrameOptions): Frame; //#endregion //#region src/types.d.ts type FrameProcess = (state: FrameState) => void; interface FrameProcessOptions { loop?: boolean; phase?: number; schedule?: boolean; } interface FramePhase { schedule(process: FrameProcess, options?: FrameProcessOptions): FrameProcess; add(state: FrameState): void; delete(process: FrameProcess): void; } interface FrameState { delta: number; timestamp: number; isRunning: boolean; } interface Frame { add(process: FrameProcess, options?: FrameProcessOptions): FrameProcess; delete(process?: FrameProcess): void; start(): void; stop(): void; get state(): Readonly<FrameState>; get fps(): number; set fps(v: number); } interface FrameOptions { scheduler?: (process: VoidFunction) => number | void; loop?: boolean; fps?: number; } //#endregion export { Frame, FrameOptions, FramePhase, FrameProcess, FrameProcessOptions, FrameState, createFrame };