import SearchFilterGroup from "@/components/filter/SearchFilterGroup"; import ActivityIndicator from "@/components/indicators/activity-indicator"; import SearchDetailDialog from "@/components/overlay/detail/SearchDetailDialog"; import SearchThumbnailPlayer from "@/components/player/SearchThumbnailPlayer"; import { Input } from "@/components/ui/input"; import { Toaster } from "@/components/ui/sonner"; import { cn } from "@/lib/utils"; import { Preview } from "@/types/preview"; import { SearchFilter, SearchResult } from "@/types/search"; import { useCallback, useState } from "react"; import { LuExternalLink, LuSearchCheck, LuSearchX, LuXCircle, } from "react-icons/lu"; import { Link } from "react-router-dom"; type SearchViewProps = { search: string; searchTerm: string; searchFilter?: SearchFilter; searchResults?: SearchResult[]; allPreviews?: Preview[]; isLoading: boolean; setSearch: (search: string) => void; setSimilaritySearch: (search: SearchResult) => void; onUpdateFilter: (filter: SearchFilter) => void; onOpenSearch: (item: SearchResult) => void; }; export default function SearchView({ search, searchTerm, searchFilter, searchResults, allPreviews, isLoading, setSearch, setSimilaritySearch, onUpdateFilter, onOpenSearch, }: SearchViewProps) { // detail const [searchDetail, setSearchDetail] = useState(); // search interaction const onSelectSearch = useCallback( (item: SearchResult, detail: boolean) => { if (detail) { setSearchDetail(item); } else { onOpenSearch(item); } }, [onOpenSearch], ); return (
setSimilaritySearch(searchDetail)) } />
setSearch(e.target.value)} /> {search && ( setSearch("")} /> )}
{searchTerm.length == 0 && (
Search
Frigate can find detected objects in your review items.
Read the Documentation{" "}
)} {searchTerm.length > 0 && searchResults?.length == 0 && (
No Detected Objects Found
)} {isLoading && ( )}
{searchResults && searchResults.map((value) => { const selected = false; return (
); })}
); }