import ActivityIndicator from "../indicators/activity-indicator"; import { LuPencil, LuTrash } from "react-icons/lu"; import { Button } from "../ui/button"; import { useState } from "react"; import { isDesktop } from "react-device-detect"; import { FaPlay } from "react-icons/fa"; import Chip from "../indicators/Chip"; import { Skeleton } from "../ui/skeleton"; import { Dialog, DialogContent, DialogFooter, DialogTitle } from "../ui/dialog"; import { Input } from "../ui/input"; import useKeyboardListener from "@/hooks/use-keyboard-listener"; import { Export } from "@/types/export"; type ExportProps = { className: string; exportedRecording: Export; onSelect: (selected: Export) => void; onRename: (original: string, update: string) => void; onDelete: (file: string) => void; }; export default function ExportCard({ className, exportedRecording, onSelect, onRename, onDelete, }: ExportProps) { const [hovered, setHovered] = useState(false); const [loading, setLoading] = useState(true); // editing name const [editName, setEditName] = useState<{ original: string; update: string; }>(); useKeyboardListener( editName != undefined ? ["Enter"] : [], (_, down, repeat) => { if (down && !repeat && editName && editName.update.length > 0) { onRename(editName.original, editName.update); setEditName(undefined); } }, ); return ( <> { if (!open) { setEditName(undefined); } }} > Rename Export {editName && ( <> setEditName({ original: editName.original ?? "", update: e.target.value, }) } /> )}
setHovered(true) : undefined } onMouseLeave={ isDesktop && !exportedRecording.in_progress ? () => setHovered(false) : undefined } onClick={ isDesktop || exportedRecording.in_progress ? undefined : () => setHovered(!hovered) } > {hovered && ( <>
setEditName({ original: exportedRecording.id, update: "" }) } > onDelete(exportedRecording.id)} >
)} {exportedRecording.in_progress ? ( ) : ( setLoading(false)} /> )} {loading && ( )}
{exportedRecording.name}
); }