import { create } from "zustand"; export interface TimelineClip { id: string; mediaId: string; name: string; duration: number; } export interface TimelineTrack { id: string; name: string; type: "video" | "audio" | "effects"; clips: TimelineClip[]; } interface TimelineStore { tracks: TimelineTrack[]; // Actions addTrack: (type: "video" | "audio" | "effects") => void; removeTrack: (trackId: string) => void; addClipToTrack: (trackId: string, clip: Omit) => void; } export const useTimelineStore = create((set) => ({ tracks: [], addTrack: (type) => { const newTrack: TimelineTrack = { id: crypto.randomUUID(), name: `${type.charAt(0).toUpperCase() + type.slice(1)} Track`, type, clips: [], }; set((state) => ({ tracks: [...state.tracks, newTrack], })); }, removeTrack: (trackId) => { set((state) => ({ tracks: state.tracks.filter((track) => track.id !== trackId), })); }, addClipToTrack: (trackId, clipData) => { const newClip: TimelineClip = { ...clipData, id: crypto.randomUUID(), }; set((state) => ({ tracks: state.tracks.map((track) => track.id === trackId ? { ...track, clips: [...track.clips, newClip] } : track ), })); }, }));