@hypernym/frame
Version:
Universal Frame Manager.
57 lines • 1.55 kB
TypeScript
//#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 };