28 lines
619 B
TypeScript
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, "");
|
|
}
|