"use client"; import { useTimelineStore } from "@/stores/timeline-store"; import { useMediaStore } from "@/stores/media-store"; import { usePlaybackStore } from "@/stores/playback-store"; import { VideoPlayer } from "@/components/ui/video-player"; import { Button } from "@/components/ui/button"; import { Play, Pause, Volume2, VolumeX } from "lucide-react"; import { useState, useRef } from "react"; // Debug flag - set to false to hide active clips info const SHOW_DEBUG_INFO = process.env.NODE_ENV === "development"; export function PreviewPanel() { const { tracks } = useTimelineStore(); const { mediaItems } = useMediaStore(); const { isPlaying, toggle, currentTime, muted, toggleMute, volume } = usePlaybackStore(); const [canvasSize, setCanvasSize] = useState({ width: 1920, height: 1080 }); const [showDebug, setShowDebug] = useState(SHOW_DEBUG_INFO); const previewRef = useRef(null); // Get active clips at current time const getActiveClips = () => { const activeClips: Array<{ clip: any; track: any; mediaItem: any; }> = []; tracks.forEach((track) => { track.clips.forEach((clip) => { const clipStart = clip.startTime; const clipEnd = clip.startTime + (clip.duration - clip.trimStart - clip.trimEnd); if (currentTime >= clipStart && currentTime < clipEnd) { const mediaItem = clip.mediaId === "test" ? { type: "test", name: clip.name, url: "", thumbnailUrl: "" } : mediaItems.find((item) => item.id === clip.mediaId); if (mediaItem || clip.mediaId === "test") { activeClips.push({ clip, track, mediaItem }); } } }); }); return activeClips; }; const activeClips = getActiveClips(); const aspectRatio = canvasSize.width / canvasSize.height; // Render a clip const renderClip = (clipData: any, index: number) => { const { clip, mediaItem } = clipData; // Test clips if (!mediaItem || clip.mediaId === "test") { return (
🎬

{clip.name}

); } // Video clips if (mediaItem.type === "video") { return (
); } // Image clips if (mediaItem.type === "image") { return (
{mediaItem.name}
); } // Audio clips (visual representation) if (mediaItem.type === "audio") { return (
🎵

{mediaItem.name}

); } return null; }; // Canvas presets const canvasPresets = [ { name: "16:9 HD", width: 1920, height: 1080 }, { name: "16:9 4K", width: 3840, height: 2160 }, { name: "9:16 Mobile", width: 1080, height: 1920 }, { name: "1:1 Square", width: 1080, height: 1080 }, { name: "4:3 Standard", width: 1440, height: 1080 }, ]; return (
{/* Controls */}
Canvas: {/* Debug Toggle - Only show in development */} {SHOW_DEBUG_INFO && ( )}
{/* Preview Area */}
{activeClips.length === 0 ? (
{tracks.length === 0 ? "Drop media to start editing" : "No clips at current time"}
) : ( activeClips.map((clipData, index) => renderClip(clipData, index)) )}
{/* Debug Info Panel - Conditionally rendered */} {showDebug && (
Debug: Active Clips ({activeClips.length})
{activeClips.map((clipData, index) => (
{index + 1} {clipData.clip.name} ({clipData.mediaItem?.type || "test"})
))} {activeClips.length === 0 && ( No active clips )}
)}
); }