import { type AnyNode, emitter, useScene } from "@pascal-app/core"; import { Camera, Eye, EyeOff, Trash2 } from "lucide-react"; import { useState } from "react"; import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/primitives/popover"; interface TreeNodeActionsProps { node: AnyNode; } export function TreeNodeActions({ node }: TreeNodeActionsProps) { const [open, setOpen] = useState(false); const updateNode = useScene((state) => state.updateNode); const hasCamera = !!node.camera; const isVisible = node.visible !== false; const toggleVisibility = (e: React.MouseEvent) => { e.stopPropagation(); updateNode(node.id, { visible: !isVisible }); }; const handleCaptureCamera = (e: React.MouseEvent) => { e.stopPropagation(); emitter.emit("camera-controls:capture", { nodeId: node.id }); setOpen(false); }; const handleViewCamera = (e: React.MouseEvent) => { e.stopPropagation(); emitter.emit("camera-controls:view", { nodeId: node.id }); setOpen(false); }; const handleClearCamera = (e: React.MouseEvent) => { e.stopPropagation(); updateNode(node.id, { camera: undefined }); setOpen(false); }; return (