import React, {useEffect, useState} from "react"; import TypeEditor from "./TypeEditor"; const ParametersManager = ({ parameters, onChange }) => { const [_parameters, setParameters] = useState(parameters || []); const [expandedStates, setExpandedStates] = useState({}); const handleAdd = () => { const updated = [ ..._parameters, { name: "", type: { base_type: "string", definition: {} } } ]; setParameters(updated); onChange(updated); }; const handleTypeChange = (index, newType) => { const updated = [..._parameters]; if (newType.base_type === "list" && !newType.extend_type) { newType.extend_type = { base_type: "string", definition: {} }; } updated[index].type = newType; setParameters(updated); onChange(updated); }; useEffect(() => { setParameters(parameters); }, [parameters]); const handleNameChange = (index, newName) => { const updated = [..._parameters]; updated[index].name = newName; setParameters(updated); onChange(updated); }; const handleDelete = (index) => { const updated = [..._parameters]; updated.splice(index, 1); setParameters(updated); onChange(updated); }; const toggleExpand = (index) => { setExpandedStates(prev => ({ ...prev, [index]: !prev[index] })); }; return (
{_parameters.map((param, index) => (
handleNameChange(index, e.target.value)} placeholder="Parameter name" />
{expandedStates[index] && (
handleTypeChange(index, newType)} />
)}
))}
); }; export default ParametersManager;