UNPKG

@hypernym/frame

Version:
57 lines 1.55 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 Process = (state: FrameState) => void; interface ProcessOptions { loop?: boolean; phase?: number; schedule?: boolean; } interface Phase { schedule(process: Process, options?: ProcessOptions): Process; add(state: FrameState): void; delete(process: Process): void; } interface FrameState { delta: number; timestamp: number; isRunning: boolean; } interface Frame { add(process: Process, options?: ProcessOptions): Process; delete(process?: Process): void; start(): void; stop(): void; get state(): Readonly<FrameState>; get fps(): number | false; set fps(v: number | false); } interface FrameOptions { scheduler?: (process: VoidFunction) => number | void; loop?: boolean; fps?: number | false; } //#endregion export { Frame, FrameOptions, FrameState, Phase, Process, ProcessOptions, createFrame };