import { Stage, Layer, Image, Rect } from "react-konva"; import type { SightingType } from "../../../../utils/types"; import { useCreateVideoSnapshot } from "../../hooks/useCreateVideoSnapshot"; import { useEffect, useState } from "react"; type VideoFeedProps = { mostRecentSighting: SightingType; isLoading: boolean; }; const VideoFeed = ({ mostRecentSighting, isLoading }: VideoFeedProps) => { const [size, setSize] = useState<{ width: number; height: number }>({ width: 1280, height: 960 }); const [mode, setMode] = useState(0); const { image, plateRect, plateTrack } = useCreateVideoSnapshot(mostRecentSighting); const handleModeChange = (newMode: number) => { if (newMode > 2) setMode(0); else setMode(newMode); }; useEffect(() => { const updateSize = () => { const width = window.innerWidth * 0.48; const height = (width * 2) / 3; setSize({ width, height }); }; updateSize(); window.addEventListener("resize", updateSize); return () => window.removeEventListener("resize", updateSize); }, []); if (isLoading) return <>Loading...; return (
handleModeChange(mode + 1)}> { const container = e.target.getStage()?.container(); if (container) container.style.cursor = "pointer"; }} onMouseLeave={(e) => { const container = e.target.getStage()?.container(); if (container) container.style.cursor = "default"; }} cornerRadius={10} /> {plateRect && mode === 1 && ( )} {plateTrack && mode === 2 && ( {plateTrack.map((rect, index) => ( ))} )}
); }; export default VideoFeed;