import { useState } from "react"; import { Editor } from "@monaco-editor/react"; import { useDiagram, useSettings } from "../../hooks"; import { Button } from "@douyinfe/semi-ui"; import { useTranslation } from "react-i18next"; import { IconCopy, IconTick } from "@douyinfe/semi-icons"; import { setUpDBML } from "./setUpDBML"; export default function CodeEditor({ showCopyButton, extraControls, filename, className = "", ...props }) { const { settings } = useSettings(); const { database } = useDiagram(); const { t } = useTranslation(); const [copied, setCopied] = useState(false); const copyCode = () => { navigator.clipboard .writeText(props.value) .then(() => { setCopied(true); setTimeout(() => setCopied(false), 3000); }) .catch((e) => console.error(e)); }; const handleEditorMount = (editor, monaco) => { setUpDBML(monaco, database); setTimeout(() => { editor.getAction("editor.action.formatDocument").run(); }, 300); }; return (
{filename && (
{filename}
)} {showCopyButton && (
{extraControls}
)}
); }