"use client"; import { useEffect, useRef, useState } from "react"; import { useSortable } from "@dnd-kit/sortable"; import { CSS } from "@dnd-kit/utilities"; import { GripVertical } from "lucide-react"; import { SceneItemActions } from "@/components/studio/SceneItemActions"; import type { Scene } from "@/lib/studio-types"; import { cn } from "@/lib/utils"; export interface DraggableSceneItemProps { scene: Scene; isActive: boolean; canDelete: boolean; onSelect: () => void; onDelete: () => void; onDuplicate: () => void; onRename: (name: string) => void; } export function DraggableSceneItem({ scene, isActive, canDelete, onSelect, onDelete, onDuplicate, onRename, }: DraggableSceneItemProps) { const [isEditing, setIsEditing] = useState(false); const [editName, setEditName] = useState(scene.name); const inputRef = useRef(null); const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition, isDragging, } = useSortable({ id: scene.id }); useEffect(() => { setEditName(scene.name); }, [scene.name]); useEffect(() => { if (isEditing) { inputRef.current?.focus(); inputRef.current?.select(); } }, [isEditing]); const commitRename = () => { const trimmed = editName.trim(); if (trimmed && trimmed !== scene.name) { onRename(trimmed); } else { setEditName(scene.name); } setIsEditing(false); }; return (
); }