import { useEffect, useMemo } from "react"; import { useAtomValue } from "jotai"; import L from "leaflet"; import { useTranslations } from "next-intl"; import { useMap } from "react-leaflet"; import { filteredTournamentsByTimeControlAtom } from "@/app/atoms"; import { TimeControlColours } from "@/app/constants"; import { TimeControl } from "@/types"; const Legend = () => { const at = useTranslations("App"); const map = useMap(); const tournaments = useAtomValue(filteredTournamentsByTimeControlAtom); const timeControls = useMemo( () => [ TimeControl.Classic, TimeControl.Rapid, TimeControl.Blitz, TimeControl.Other, ].filter((tc) => tournaments.some((t) => t.timeControl === tc)), [tournaments], ); useEffect(() => { if (map) { // @ts-ignore const legend = L.control({ position: "bottomleft" }); legend.onAdd = () => { const div = L.DomUtil.create("div", "map-legend"); div.setAttribute( "style", "background: white; color: black; border: 2px solid grey; border-radius: 6px; padding: 10px;", ); div.innerHTML = ` `; return div; }; legend.addTo(map); } }, [map, at]); // eslint-disable-line react-hooks/exhaustive-deps return null; }; export default Legend;