/* eslint-disable react-hooks/exhaustive-deps */ import { MarkerComponentProps } from "react-image-marker"; import { useEffect, useState } from "react"; import { useTransformContext } from "react-zoom-pan-pinch"; import { markers } from "../../../consts/markers"; import useMarker from "../../../store/useMarker"; import { useNavigate } from "react-router-dom"; const Marker = (props: MarkerComponentProps) => { const { setHoveredMarker, hoveredMarker } = useMarker(); const { transformState } = useTransformContext(); const [markerScale, setMarkerScale] = useState(1); const navigate = useNavigate(); const currentMarker = markers.find( (marker) => marker.itemNumber === props.itemNumber ); const handleOnMouseEnter = () => { const hoveredMarker = currentMarker ? currentMarker : null; setHoveredMarker(hoveredMarker); }; const handleOnScroll = () => { const scale = 1 / transformState.scale; setMarkerScale(scale); }; const handleOnMouseLeave = () => { setHoveredMarker(null); }; const handleOnClick = () => { navigate(`../masterplan/${currentMarker?.itemNumber}`); setHoveredMarker(null); }; useEffect(() => { const map = document.querySelector(".react-transform-wrapper"); handleOnScroll(); if (map) map.addEventListener("wheel", handleOnScroll); return () => { if (map) map.removeEventListener("wheel", handleOnScroll); }; }, []); return (
{currentMarker && ( 1 )}
1
{currentMarker && ( 1 )}
); }; export default Marker;