import { memo, useEffect, useState } from "react"; import { useStyletron } from "baseui"; import { LabelXSmall } from "baseui/typography"; import { formatMessageTimestamp, type HistoryEvent } from "./view-model"; export const HistoryMinimap = memo(function HistoryMinimap({ events, onSelect, }: { events: HistoryEvent[]; onSelect: (event: HistoryEvent) => void; }) { const [css, theme] = useStyletron(); const [open, setOpen] = useState(false); const [activeEventId, setActiveEventId] = useState(events[events.length - 1]?.id ?? null); useEffect(() => { if (!events.some((event) => event.id === activeEventId)) { setActiveEventId(events[events.length - 1]?.id ?? null); } }, [activeEventId, events]); if (events.length === 0) { return null; } return (
setOpen(true)} onMouseLeave={() => setOpen(false)} > {open ? (
Handoff Events {events.length}
{events.map((event) => { const isActive = event.id === activeEventId; return ( ); })}
) : null}
{events.map((event) => { const isActive = event.id === activeEventId; return (
); })}
); });