import { VESSEL_TYPES } from "../../entities/vessel/model/meta"; import type { DerivedLegacyVessel } from "../../features/legacyDashboard/model/types"; import type { MouseEvent } from "react"; type Props = { vessels: DerivedLegacyVessel[]; selectedMmsi: number | null; highlightedMmsiSet?: number[]; onToggleHighlightMmsi: (mmsi: number) => void; onSelectMmsi: (mmsi: number) => void; onHoverMmsi?: (mmsi: number) => void; onClearHover?: () => void; }; export function VesselList({ vessels, selectedMmsi, highlightedMmsiSet = [], onToggleHighlightMmsi, onSelectMmsi, onHoverMmsi, onClearHover, }: Props) { const handlePrimaryAction = (e: MouseEvent, mmsi: number) => { if (e.shiftKey || e.ctrlKey || e.metaKey) { onToggleHighlightMmsi(mmsi); return; } onSelectMmsi(mmsi); }; function isFiniteNumber(x: unknown): x is number { return typeof x === "number" && Number.isFinite(x); } const sorted = vessels .slice() .sort((a, b) => (isFiniteNumber(b.sog) ? b.sog : -1) - (isFiniteNumber(a.sog) ? a.sog : -1)) .slice(0, 80); return (