"use client"; import { useEffect, useRef } from "react"; import type { Entity } from "@/uhm/api/entities"; import type { Wiki } from "@/uhm/api/wikis"; type PopupRow = { entity: Entity; wiki: Wiki | null; quote: string; }; type Props = { rows: PopupRow[]; featureId: string | number; top: number; left: number; onClose: () => void; onSelectRow: (entityId: string, wikiId?: string) => void; }; export default function PinnedWikiPopup({ rows, featureId, top, left, onClose, onSelectRow, }: Props) { const containerRef = useRef(null); useEffect(() => { const handleKeyDown = (event: KeyboardEvent) => { if (event.key === "Escape") { onClose(); } }; const handlePointerDown = (event: PointerEvent) => { const target = event.target as Node | null; if (target && containerRef.current?.contains(target)) { return; } onClose(); }; window.addEventListener("keydown", handleKeyDown); window.addEventListener("pointerdown", handlePointerDown); return () => { window.removeEventListener("keydown", handleKeyDown); window.removeEventListener("pointerdown", handlePointerDown); }; }, [onClose]); return (
{rows.map(({ entity, wiki, quote }) => ( ))}
); }