import React, { useEffect, useState, useRef } from 'react'; import { Drawer, Button, Tabs, Badge, Select, TreeSelect } from 'antd'; import { request } from '@/utils/http'; import config from '@/utils/config'; import SplitPane from 'react-split-pane'; import Editor from '@monaco-editor/react'; import SaveModal from './saveModal'; import SettingModal from './setting'; import { useTheme } from '@/utils/hooks'; const { Option } = Select; const LangMap: any = { '.py': 'python', '.js': 'javascript', '.sh': 'shell', '.ts': 'typescript', }; const prefixMap: any = { python: '.py', javascript: '.js', shell: '.sh', typescript: '.ts', }; const EditModal = ({ treeData, currentFile, content, handleCancel, visible, }: { treeData?: any; currentFile?: string; content?: string; visible: boolean; handleCancel: () => void; }) => { const [value, setValue] = useState(''); const [language, setLanguage] = useState('javascript'); const [fileName, setFileName] = useState(''); const [saveModalVisible, setSaveModalVisible] = useState(false); const [settingModalVisible, setSettingModalVisible] = useState(false); const [log, setLog] = useState(''); const { theme } = useTheme(); const editorRef = useRef(null); const cancel = () => { handleCancel(); }; const onSelect = (value: any, node: any) => { const newMode = LangMap[value.slice(-3)] || ''; setFileName(value); setLanguage(newMode); getDetail(node); }; const getDetail = (node: any) => { request.get(`${config.apiPrefix}scripts/${node.value}`).then((data) => { setValue(data.data); }); }; const run = () => {}; useEffect(() => { if (currentFile) { setFileName(currentFile); setValue(content as string); } }, [currentFile, content]); return ( {fileName} } width={'100%'} headerStyle={{ padding: '11px 24px' }} onClose={cancel} visible={visible} > { editorRef.current = editor; }} />
{log}
{ setSaveModalVisible(false); }} file={{ content: editorRef.current && editorRef.current.getValue().replace(/\r\n/g, '\n'), filename: fileName, }} /> { setSettingModalVisible(false); }} />
); }; export default EditModal;