import { useState, ReactNode } from 'react'; import { NodeData, Settings } from '../types/graph'; import './NodeEditor.css'; interface NodeEditorProps { node: NodeData; settings: Settings; onUpdate: (data: NodeData) => void; onClose: () => void; } export default function NodeEditor({ node, settings, onUpdate, onClose }: NodeEditorProps): ReactNode { const [formData, setFormData] = useState(node); const [errors, setErrors] = useState([]); const handleInputChange = (field: keyof NodeData, value: string): void => { setFormData(prev => ({ ...prev, [field]: value })); }; const handleSave = (): void => { // const validation = validateNodeConfig(formData); // if (!validation.isValid) { // setErrors(validation.errors); // return; // } // setErrors([]); // onUpdate(formData); // onClose(); }; return (

编辑节点: {formData.label || '新节点'}

{errors.length > 0 && (
{errors.map((error, idx) => (

• {error}

))}
)}
handleInputChange('label', e.target.value)} placeholder="例如: Node-A" />
handleInputChange('privateKey', e.target.value)} readOnly />
handleInputChange('listenPort', e.target.value)} placeholder="例如: 51820" />
handleInputChange('dnsServers', e.target.value)} placeholder="例如: 8.8.8.8" />
handleInputChange('persistentKeepalive', e.target.value)} placeholder="秒数" />
); }