import { IconName } from "@/components/icons/IconPicker"; import { FrigateConfig } from "@/types/frigateConfig"; import { BsPersonWalking } from "react-icons/bs"; import { FaAmazon, FaBicycle, FaBus, FaCarSide, FaCat, FaCheckCircle, FaDhl, FaDog, FaFedex, FaFire, FaFootballBall, FaHockeyPuck, FaHorse, FaMotorcycle, FaMouse, FaRegTrashAlt, FaUmbrella, FaUps, FaUsps, } from "react-icons/fa"; import { GiDeer, GiFox, GiGoat, GiPolarBear, GiPostStamp, GiRabbit, GiRaccoonHead, GiSailboat, } from "react-icons/gi"; import { LuBox, LuLassoSelect, LuScanBarcode } from "react-icons/lu"; import * as LuIcons from "react-icons/lu"; import { MdRecordVoiceOver } from "react-icons/md"; import { PiBirdFill } from "react-icons/pi"; export function getAttributeLabels(config?: FrigateConfig) { if (!config) { return []; } const labels = new Set(); Object.values(config.model.attributes_map).forEach((values) => values.forEach((label) => labels.add(label)), ); return [...labels]; } export function isValidIconName(value: string): value is IconName { return Object.keys(LuIcons).includes(value as IconName); } export function getIconForLabel(label: string, className?: string) { if (label.endsWith("-verified")) { return getVerifiedIcon(label, className); } else if (label.endsWith("-plate")) { return getRecognizedPlateIcon(label, className); } switch (label) { // objects case "bear": return ; case "bicycle": return ; case "bird": return ; case "boat": return ; case "bus": return ; case "car": case "vehicle": return ; case "cat": return ; case "deer": return ; case "animal": case "bark": case "dog": return ; case "fox": return ; case "goat": return ; case "horse": return ; case "motorcycle": return ; case "mouse": return ; case "package": return ; case "person": return ; case "rabbit": return ; case "raccoon": return ; case "robot_lawnmower": return ; case "sports_ball": return ; case "squirrel": return ; case "umbrella": return ; case "waste_bin": return ; // audio case "crying": case "laughter": case "scream": case "speech": case "yell": return ; case "fire_alarm": return ; // sub labels case "amazon": return ; case "an_post": case "dpd": case "gls": case "nzpost": case "postnl": case "postnord": case "purolator": return ; case "dhl": return ; case "fedex": return ; case "ups": return ; case "usps": return ; default: return ; } } function getVerifiedIcon(label: string, className?: string) { const simpleLabel = label.substring(0, label.lastIndexOf("-")); return (
{getIconForLabel(simpleLabel, className)}
); } function getRecognizedPlateIcon(label: string, className?: string) { const simpleLabel = label.substring(0, label.lastIndexOf("-")); return (
{getIconForLabel(simpleLabel, className)}
); }