import { ZOOM_MAX, ZOOM_MIN, ZOOM_STEP } from "@/App/parameters"; import { Dispatch, memo, SetStateAction, useEffect } from "react"; import { KeyInfoHidden, KeyInfoVisible } from "./KeyInfo"; import ZoomInIcon from '@mui/icons-material/ZoomIn'; import ZoomOutIcon from '@mui/icons-material/ZoomOut'; const shortcutZoomIn = <>Ctrl+-; const shortcutZoomOut = <>Ctrl++; export const ZoomButtons = memo(function ZoomButtons({showKeys, zoom, setZoom}: {showKeys: boolean, zoom: number, setZoom: Dispatch>}) { const KeyInfo = showKeys ? KeyInfoVisible : KeyInfoHidden; function onZoomIn() { setZoom(zoom => Math.min(zoom * ZOOM_STEP, ZOOM_MAX)); } function onZoomOut() { setZoom(zoom => Math.max(zoom / ZOOM_STEP, ZOOM_MIN)); } useEffect(() => { const onKeyDown = (e: KeyboardEvent) => { if (e.ctrlKey) { if (e.key === "+") { e.preventDefault(); onZoomIn(); } if (e.key === "-") { e.preventDefault(); onZoomOut(); } } }; window.addEventListener("keydown", onKeyDown); return () => { window.removeEventListener("keydown", onKeyDown); }; }, []); return <> ; });