export const CANVAS_MIN_ZOOM = 0.1; export const CANVAS_MAX_ZOOM = 8; export const CANVAS_ZOOM_FACTOR = 1.2; export type CanvasZoomDirection = "in" | "out"; export function clampCanvasZoom(value: number) { return Math.min( CANVAS_MAX_ZOOM, Math.max(CANVAS_MIN_ZOOM, Number(value.toFixed(2))) ); } export function stepCanvasZoom( value: number, direction: CanvasZoomDirection ) { return clampCanvasZoom( direction === "in" ? value * CANVAS_ZOOM_FACTOR : value / CANVAS_ZOOM_FACTOR ); } export function sanitizeCanvasZoomInput(value: string) { return value.replace(/\D/g, ""); }