import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuPortal, DropdownMenuSeparator, } from "@/components/ui/dropdown-menu"; import { HiDotsHorizontal } from "react-icons/hi"; import { useApiHost } from "@/api"; import { useNavigate } from "react-router-dom"; import { useTranslation } from "react-i18next"; import { Event } from "@/types/event"; import { FrigateConfig } from "@/types/frigateConfig"; import { useState } from "react"; type EventMenuProps = { event: Event; config?: FrigateConfig; onOpenUpload?: (e: Event) => void; onOpenSimilarity?: (e: Event) => void; isSelected?: boolean; onToggleSelection?: (event: Event | undefined) => void; }; export default function EventMenu({ event, config, onOpenUpload, onOpenSimilarity, isSelected = false, onToggleSelection, }: EventMenuProps) { const apiHost = useApiHost(); const navigate = useNavigate(); const { t } = useTranslation("views/explore"); const [isOpen, setIsOpen] = useState(false); const handleObjectSelect = () => { if (isSelected) { onToggleSelection?.(undefined); } else { onToggleSelection?.(event); } }; return ( <>
{isSelected ? t("itemMenu.hideObjectDetails.label") : t("itemMenu.showObjectDetails.label")} { navigate(`/explore?event_id=${event.id}`); }} > {t("details.item.button.viewInExplore")} {t("itemMenu.downloadSnapshot.label")} {event.has_snapshot && event.plus_id == undefined && event.data.type == "object" && config?.plus?.enabled && ( { setIsOpen(false); onOpenUpload?.(event); }} > {t("itemMenu.submitToPlus.label")} )} {event.has_snapshot && config?.semantic_search?.enabled && ( { if (onOpenSimilarity) onOpenSimilarity(event); else navigate( `/explore?search_type=similarity&event_id=${event.id}`, ); }} > {t("itemMenu.findSimilar.label")} )}
); }