Files
Mav-Mobile-UI/src/components/CameraOverview/SnapshotContainer.tsx

53 lines
1.4 KiB
TypeScript
Raw Normal View History

2025-08-13 14:23:48 +01:00
import { useGetOverviewSnapshot } from "../../hooks/useGetOverviewSnapshot";
import NavigationArrow from "../UI/NavigationArrow";
2025-08-13 14:23:48 +01:00
type SnapshotContainerProps = {
side: string;
2025-08-18 12:53:30 +01:00
settingsPage?: boolean;
2025-08-13 14:23:48 +01:00
};
2025-08-18 12:53:30 +01:00
export const SnapshotContainer = ({
side,
settingsPage,
}: SnapshotContainerProps) => {
const { canvasRef, isError, isPending } = useGetOverviewSnapshot();
if (isError) return <p className="h-100">An error occurred</p>;
if (isPending) return <p className="h-100">Loading...</p>;
2025-08-13 14:23:48 +01:00
2025-09-29 08:47:13 +01:00
const handleZoomClick = (event: React.MouseEvent<HTMLCanvasElement>) => {
const bounds = canvasRef.current?.getBoundingClientRect();
if (!bounds) return;
const left = bounds.left;
const top = bounds.top;
const x = event.pageX;
const y = event.pageY;
const cw = canvasRef.current?.clientWidth;
const ch = canvasRef.current?.clientHeight;
if (!cw || !ch) return;
const px = x / cw;
const py = y / ch;
console.log({
left,
top,
x,
y,
px,
py,
});
};
2025-08-13 14:23:48 +01:00
return (
<div className="flex flex-col md:flex-row">
2025-08-18 12:53:30 +01:00
<NavigationArrow side={side} settingsPage={settingsPage} />
<div className="w-full">
<canvas
2025-09-29 08:47:13 +01:00
onClick={handleZoomClick}
ref={canvasRef}
className="absolute inset-0 object-contain min-h-[100%] z-20"
/>
</div>
2025-08-13 14:23:48 +01:00
</div>
);
};