import { formatTime, formatLongTime } from '@/lib/timeUtils'; import '../styles/ClipSegments.css'; export interface Segment { id: number; chapterTitle: string; startTime: number; endTime: number; } interface ClipSegmentsProps { segments: Segment[]; selectedSegmentId?: number | null; } const ClipSegments = ({ segments, selectedSegmentId }: ClipSegmentsProps) => { // Sort segments by startTime const sortedSegments = [...segments].sort((a, b) => a.startTime - b.startTime); // Handle delete segment click const handleDeleteSegment = (segmentId: number) => { // Create and dispatch the delete event const deleteEvent = new CustomEvent('delete-segment', { detail: { segmentId }, }); document.dispatchEvent(deleteEvent); }; // Generate the same color background for a segment as shown in the timeline const getSegmentColorClass = (index: number) => { // Return CSS class based on index modulo 8 // This matches the CSS nth-child selectors in the timeline return `segment-default-color segment-color-${(index % 8) + 1}`; }; // Get selected segment const selectedSegment = sortedSegments.find((seg) => seg.id === selectedSegmentId); return (

Chapters

{sortedSegments.map((segment, index) => (
{segment.chapterTitle ? ( {segment.chapterTitle} ) : ( Chapter {index + 1} )}
{formatTime(segment.startTime)} - {formatTime(segment.endTime)}
Duration: {formatLongTime(segment.endTime - segment.startTime)}
))} {sortedSegments.length === 0 && (
No chapters created yet. Use the split button to create chapter segments.
)}
); }; export default ClipSegments;