"use client"; import { useState } from "react"; import { LeRobotEpisode } from "@lerobot/web"; import { TeleoperatorFramesView } from "./teleoperator-frames-view"; import { Button } from "./ui/button"; interface TeleoperatorEpisodesViewProps { teleoperatorData?: LeRobotEpisode[]; } export function TeleoperatorEpisodesView({ teleoperatorData }: TeleoperatorEpisodesViewProps) { // State to track which episodes are expanded const [expandedEpisodes, setExpandedEpisodes] = useState>({}); // Toggle expanded state for an episode const toggleEpisode = (index: number) => { setExpandedEpisodes(prev => ({ ...prev, [index]: !prev[index] })); }; return (
List of recorded episodes
{/* Header */}
id
time length
frames
{/* Body */} {teleoperatorData && teleoperatorData.length > 0 ? ( teleoperatorData.map((episode: LeRobotEpisode, i: number) => (
{/* Episode row */}
{i}
{episode.timespan}
{episode.length}
toggleEpisode(i)}> {expandedEpisodes[i] ? : }
{/* Frames (collapsible) */} {expandedEpisodes[i] && ( )}
)) ) : (
No episodes recorded yet. Click "Start Recording" to begin.
)}
); }