q5-react
Version:
> Minimal React wrapper for [q5.js](https://github.com/q5js/q5.js)
37 lines (36 loc) • 1.22 kB
TypeScript
import q5 from "q5";
import { createCanvasState } from "../lib/canvas-state";
export interface DrawExtras {
pressedKeys: Set<string>;
pressedMouseButtons: Set<number>;
}
export interface CreateCanvasProps<T> {
draw: DrawFn<T>;
state: ReturnType<typeof createCanvasState<T>>;
events?: {
keyPressed?: (key: string) => void;
keyReleased?: (key: string) => void;
mousePressed?: (button: number, position: {
x: number;
y: number;
}) => void;
mouseReleased?: (button: number, position: {
x: number;
y: number;
}) => void;
mouseWheel?: (x: number, y: number) => void;
windowResized?: () => void;
};
}
export type DrawFn<T> = (p: q5, state: ReturnType<typeof createCanvasState<T>>, extras: DrawExtras) => void;
export interface UseCanvasProps<T = any> {
canvas: CreateCanvasProps<T>;
sizeInternal: Q5CanvasProps["size"];
}
export interface Q5CanvasProps<T = any> {
canvas: CreateCanvasProps<T>;
size?: "fullscreen" | number | [number, number];
children?: React.ReactNode | (({ toggleFullscreen, }: {
toggleFullscreen: () => void;
}) => React.ReactNode);
}