28 lines
619 B
TypeScript

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, "");
}