import React, { useState, useRef, useEffect } from 'react'; import { Package, X, ChevronRight } from 'lucide-react'; import { comms } from '../communication'; import { useAlert } from '../contexts/AlertContext'; import { usePickerMove } from '../App'; interface FunctionMenuProps { isOpen: boolean; onClose: () => void; } export const FunctionMenu: React.FC = ({ isOpen, onClose }) => { const [activeSubmenu, setActiveSubmenu] = useState(null); const menuRef = useRef(null); const { showAlert } = useAlert(); const { openPickerMove } = usePickerMove(); useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if (menuRef.current && !menuRef.current.contains(event.target as Node)) { onClose(); } }; if (isOpen) { document.addEventListener('mousedown', handleClickOutside); } return () => { document.removeEventListener('mousedown', handleClickOutside); }; }, [isOpen, onClose]); const handleCommand = async (commandFn: () => Promise<{ success: boolean; message: string }>, actionName: string) => { try { const result = await commandFn(); if (result.success) { console.log(`[FunctionMenu] ${actionName}: ${result.message}`); } else { console.error(`[FunctionMenu] ${actionName} failed: ${result.message}`); showAlert({ type: 'error', title: `${actionName} Failed`, message: result.message }); } } catch (error: any) { console.error(`[FunctionMenu] ${actionName} error:`, error); showAlert({ type: 'error', title: `${actionName} Error`, message: error.message || 'Unknown error' }); } }; return ( <> {isOpen && (
{/* Header */}

FUNCTION

{/* Menu Items */}
{/* Manage */} {/* Log Viewer */} {/* Open Folder */}
{/* Folder Submenu */} {activeSubmenu === 'folder' && (
setActiveSubmenu(null)} >
)}
)} ); };