import AceEditor from "react-ace" import "ace-builds/src-noconflict/mode-java" import "ace-builds/src-noconflict/theme-github" import { useState } from "react" import styles from "./Editor.module.css" import { APIResult, submitSource } from "./api" const Editor = () => { const [sourceText, setSourceText] = useState("") const [result, setResult] = useState>({ type: "not_yet_requested" }) const onChange = setSourceText const executeCode = async (text: string) => { const result = await submitSource(text) setResult(result) } const renderResults = () => { switch (result.type) { case "not_yet_requested": case "loading": return null case "failed": return (
Failed to run code on the server. See console for details.
) case "success": return ( undefined} value={result.data} name="results" editorProps={{ $blockScrolling: true }} width="100%" fontSize={16} readOnly /> ) } } return ( <>
{renderResults()}
) } export default Editor