"use client"; import { useEffect, useRef, useState } from "react"; function RefreshIcon() { return ; } function ShareIcon() { return ; } type ReportActionsProps = { loading: boolean; onReinspect: () => void; onInspectAnother: () => void; onShare: () => void; onExportJson: () => void; onExportMarkdown: () => void; }; export function ReportActions({ loading, onReinspect, onInspectAnother, onShare, onExportJson, onExportMarkdown }: ReportActionsProps) { const [mobileOpen, setMobileOpen] = useState(false); const [desktopExportOpen, setDesktopExportOpen] = useState(false); const [mobileExportOpen, setMobileExportOpen] = useState(false); const desktopRef = useRef(null); const mobileRef = useRef(null); const close = () => { setMobileOpen(false); setDesktopExportOpen(false); setMobileExportOpen(false); }; useEffect(() => { if (!mobileOpen && !desktopExportOpen && !mobileExportOpen) return; const onKeyDown = (event: KeyboardEvent) => { if (event.key === "Escape") close(); }; const onPointerDown = (event: PointerEvent) => { if (![desktopRef.current, mobileRef.current].some((element) => element?.contains(event.target as Node))) close(); }; document.addEventListener("keydown", onKeyDown); document.addEventListener("pointerdown", onPointerDown); return () => { document.removeEventListener("keydown", onKeyDown); document.removeEventListener("pointerdown", onPointerDown); }; }, [mobileOpen, desktopExportOpen, mobileExportOpen]); const controls = (variant: "desktop" | "mobile") => { const exportOpen = variant === "desktop" ? desktopExportOpen : mobileExportOpen; const setExportOpen = variant === "desktop" ? setDesktopExportOpen : setMobileExportOpen; const exportId = variant + "-export-options"; return <>
{exportOpen &&
}
; }; return <>
{controls("desktop")}
{mobileOpen &&
{controls("mobile")}
}
; }