import React, {useState} from 'react'; import {Button} from '@/components/ui/button'; import {Select, SelectContent, SelectItem, SelectTrigger, SelectValue} from '@/components/ui/select'; import {Input} from '@/components/ui/input'; import {Tabs, TabsContent, TabsList, TabsTrigger} from '@/components/ui/tabs'; import {Label} from '@/components/ui/label'; import EditableInput from '../shared/EditableInput'; import PropertyTable from '../shared/PropertyTable'; import ServerManager from '@/components/ServerManager.jsx'; import {Table, TableBody, TableCell, TableHead, TableHeader, TableRow} from '@/components/ui/table.jsx'; import {useAPI} from '@/providers/APIProvider'; import MonacoEditor from '@/components/shared/MonacoEditor'; // import MonacoVariableEditor from './MonacoVariableEditor'; // Import the new component const HTTP_METHODS = [ 'POST', 'GET', 'PUT', 'DELETE', 'CONNECT', 'HEAD', 'OPTIONS', 'TRACE', 'PATCH' ]; export const HTTPClientView = ({model, index}) => { const {getServer} = useAPI(); const [currentModel, setCurrentModel] = useState(model); const [basePath, setBasePath] = useState(''); const [currentTab, setCurrentTab] = useState('body'); const [currentResponseTab, setCurrentResponseTab] = useState('response-body'); const [responseData, setResponseData] = useState({ headers: [], status: '', time: '', size: '' }); const [editorContents, setEditorContents] = useState({ requestBody: currentModel.requestBody || '', responseBody: currentModel.responseBody || '', console: '', preRequestScript: currentModel.preRequestScript || '', postRequestScript: currentModel.postRequestScript || '' }); const handleServerChange = (serverId) => { const selectedServer = getServer(serverId); setCurrentModel(prev => ({ ...prev, server: serverId })); if (selectedServer) { setBasePath(selectedServer.basePath || ''); } }; const handleHeadersChange = (headers) => { setCurrentModel(prev => ({ ...prev, headers })); }; const handlePathChange = (path) => { const queryParams = parseQueryParams(path); setCurrentModel(prev => ({ ...prev, path, queryParams })); }; const parseQueryParams = (path) => { const queryParams = []; const queryString = path.split('?')[1]; if (queryString) { queryString.split('&').forEach(param => { const [key, value] = param.split('='); queryParams.push({ enabled: true, key, value: value || '' }); }); } return queryParams; }; const renderRequestVariables = () => (