import { Button } from '@heroui/button'; import { Code } from '@heroui/code'; import { Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, } from '@heroui/modal'; import CodeEditor from '@/components/code_editor'; interface FileEditModalProps { isOpen: boolean; file: { path: string; content: string; } | null; onClose: () => void; onSave: () => void; onContentChange: (newContent?: string) => void; } export default function FileEditModal ({ isOpen, file, onClose, onSave, onContentChange, }: FileEditModalProps) { // 根据文件后缀返回对应语言 const getLanguage = (filePath: string) => { if (filePath.endsWith('.js')) return 'javascript'; if (filePath.endsWith('.ts')) return 'typescript'; if (filePath.endsWith('.tsx')) return 'tsx'; if (filePath.endsWith('.jsx')) return 'jsx'; if (filePath.endsWith('.vue')) return 'vue'; if (filePath.endsWith('.svelte')) return 'svelte'; if (filePath.endsWith('.json')) return 'json'; if (filePath.endsWith('.html')) return 'html'; if (filePath.endsWith('.css')) return 'css'; if (filePath.endsWith('.scss')) return 'scss'; if (filePath.endsWith('.less')) return 'less'; if (filePath.endsWith('.md')) return 'markdown'; if (filePath.endsWith('.yaml') || filePath.endsWith('.yml')) return 'yaml'; if (filePath.endsWith('.xml')) return 'xml'; if (filePath.endsWith('.sql')) return 'sql'; if (filePath.endsWith('.sh')) return 'shell'; if (filePath.endsWith('.bat')) return 'bat'; if (filePath.endsWith('.php')) return 'php'; if (filePath.endsWith('.java')) return 'java'; if (filePath.endsWith('.c')) return 'c'; if (filePath.endsWith('.cpp')) return 'cpp'; if (filePath.endsWith('.h')) return 'h'; if (filePath.endsWith('.hpp')) return 'hpp'; if (filePath.endsWith('.go')) return 'go'; if (filePath.endsWith('.py')) return 'python'; if (filePath.endsWith('.rb')) return 'ruby'; if (filePath.endsWith('.cs')) return 'csharp'; if (filePath.endsWith('.swift')) return 'swift'; if (filePath.endsWith('.vb')) return 'vb'; if (filePath.endsWith('.lua')) return 'lua'; if (filePath.endsWith('.pl')) return 'perl'; if (filePath.endsWith('.r')) return 'r'; return 'plaintext'; }; return ( 编辑文件 {file?.path}
按 Ctrl/Cmd + S 保存
{ if ((e.ctrlKey || e.metaKey) && e.key === 's') { e.preventDefault(); onSave(); } }} >
); }