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, useExamples } from "./api" import Select from "react-select" const defaultSourceText = `define times2 dup + ; 2 times2 . -- prints 4 ` const Editor = () => { const examples = useExamples() const [sourceText, setSourceText] = useState(defaultSourceText) const [result, setResult] = useState>({ type: "not_yet_requested" }) const onChange = setSourceText const executeCode = async (text: string) => { const result = await submitSource(text) setResult(result) } const renderExamples = () => { switch (examples.type) { case "not_yet_requested": case "loading": return
Loading examples...
case "failed": return
An unexpected error occurred while loading examples. See console for details.
case "success": { const options = examples.data.map(example => ({ value: example.content, label: example.title })) const customStyles = { option: (styles: any) => ({ ...styles, cursor: "pointer", }), control: (styles: any) => ({ ...styles, cursor: "pointer", }), } return (