import { ChevronLeft, ChevronRight, Pause, Play, Radio } from "lucide-react"; import { Button } from "@/shared/ui/button"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/shared/ui/select"; import type { PresentationHistoryControls } from "../utils/presentation-view-history"; import { groupAdjacentPresentationHistory } from "../utils/presentation-history-categories"; import { PresentationHistoryMenu } from "./presentation-history-menu"; const statusLabels = { running: "进行中", completed: "完成", error: "未完成", cancelled: "已取消" }; export function PresentationHistorySwitcher({ entries, currentEntryId, selectedId, mergedEntry, mergedEntries, onSelect, playback }: PresentationHistoryControls) { const currentEntry = entries.find((entry) => entry.id === currentEntryId); const playable = playback?.entries ?? (mergedEntries?.length ? mergedEntries : entries).filter((entry) => entry.status === "completed"); const grouped = entries.some((entry) => entry.taskId); const available = grouped ? groupAdjacentPresentationHistory(entries).flatMap((group) => { const view = mergedEntries?.find((entry) => entry.id === group.id) ?? group.entries.slice().reverse().find((entry) => entry.status !== "running"); return view ? [{ id: view.id, stepIds: group.entries.map((entry) => entry.id) }] : []; }) : entries.filter( (entry) => entry.status !== "running" && (entry.id !== currentEntryId || entry.id === selectedId) ).map((entry) => ({ id: entry.id, stepIds: [entry.id] })); const index = selectedId === null ? available.length : available.findIndex((entry) => entry.id === selectedId || entry.stepIds.includes(selectedId)); const progress = selectedId === null ? Math.max(0, playable.length - 1) : Math.max(0, playable.findIndex((entry) => entry.id === selectedId || entry.mergedStepIds?.includes(selectedId))); return (