"use client"; import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle, SheetTrigger, } from "@/components/ui/sheet"; import { Button } from "@/components/ui/button"; import { useSceneStore } from "@/stores/scene-store"; import { Check, ListCheck, Trash2 } from "lucide-react"; import { cn } from "@/lib/utils"; import { useState } from "react"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, DialogTrigger, } from "@/components/ui/dialog"; export function ScenesView({ children }: { children: React.ReactNode }) { const { scenes, currentScene, switchToScene, deleteScene } = useSceneStore(); const [isSelectMode, setIsSelectMode] = useState(false); const [selectedScenes, setSelectedScenes] = useState>(new Set()); const handleSceneSwitch = async (sceneId: string) => { if (isSelectMode) { toggleSceneSelection(sceneId); return; } try { await switchToScene({ sceneId }); } catch (error) { console.error("Failed to switch scene:", error); } }; const toggleSceneSelection = (sceneId: string) => { setSelectedScenes((prev) => { const newSet = new Set(prev); if (newSet.has(sceneId)) { newSet.delete(sceneId); } else { newSet.add(sceneId); } return newSet; }); }; const handleSelectMode = () => { setIsSelectMode(!isSelectMode); setSelectedScenes(new Set()); }; const handleDeleteSelected = async () => { for (const sceneId of selectedScenes) { const scene = scenes.find((s) => s.id === sceneId); if (scene && !scene.isMain) { try { await deleteScene({ sceneId }); } catch (error) { console.error("Failed to delete scene:", error); } } } setSelectedScenes(new Set()); setIsSelectMode(false); }; return ( {children} {isSelectMode ? `Select scenes (${selectedScenes.size})` : "Scenes"} {isSelectMode ? "Select scenes to delete" : "Switch between scenes in your project"}
{isSelectMode && ( scenes.find((s) => s.id === id)?.isMain )} > )}
{scenes.length === 0 ? (
No scenes available
) : (
{scenes.map((scene) => ( ))}
)}
); } function DeleteDialog({ count, onDelete, disabled, children, }: { count: number; onDelete: () => void; disabled?: boolean; children: React.ReactNode; }) { const [open, setOpen] = useState(false); const handleDelete = () => { onDelete(); setOpen(false); }; return ( {children} Delete Scenes Are you sure you want to delete {count} scene {count === 1 ? "" : "s"}? This action cannot be undone. ); }