import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuPortal, } 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 type { Event } from "@/types/event"; import type { FrigateConfig } from "@/types/frigateConfig"; type EventMenuProps = { event: Event; config?: FrigateConfig; onOpenUpload?: (e: Event) => void; onOpenSimilarity?: (e: Event) => void; }; export default function EventMenu({ event, config, onOpenUpload, onOpenSimilarity, }: EventMenuProps) { const apiHost = useApiHost(); const navigate = useNavigate(); const { t } = useTranslation("views/explore"); return ( { 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 && ( { 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")} )} ); }