import React, { useState, useEffect } from "react"; import { ActionIcon, Slider } from "@mantine/core"; import { useViewer } from "@app/contexts/ViewerContext"; import { useNavigationState } from "@app/contexts/NavigationContext"; import ZoomInIcon from "@mui/icons-material/ZoomIn"; import ZoomOutIcon from "@mui/icons-material/ZoomOut"; /** * Compact zoom controls rendered inline in the WorkbenchBar when the current workbench is "viewer". */ export function ViewerInlineControls() { const { workbench } = useNavigationState(); const viewer = useViewer(); const [zoomPercent, setZoomPercent] = useState(100); useEffect(() => { const zoomState = viewer.getZoomState(); setZoomPercent(zoomState.zoomPercent || 100); const unregister = viewer.registerImmediateZoomUpdate((pct) => { setZoomPercent(pct); }); return () => unregister?.(); }, [viewer.registerImmediateZoomUpdate]); if (workbench !== "viewer") return null; const sliderValue = Math.min(Math.max(zoomPercent, 20), 500); return (