import { EditorView, basicSetup } from 'codemirror' import { render } from 'hono/jsx/dom' import { shrimpTheme } from './theme' import { shrimpDiagnostics } from './diagnostics' import { persistencePlugin, getContent } from './persistence' import { shrimpHighlighter } from './highlighter' export const Editor = () => { return (
{ if (!el?.querySelector('.cm-editor')) createEditorView(el) }} /> ) } const createEditorView = (el: Element) => { new EditorView({ parent: el, doc: getContent() || '# type some code\necho hello', extensions: [basicSetup, shrimpTheme, shrimpDiagnostics, persistencePlugin, shrimpHighlighter], }) } // Mount when running in browser if (typeof document !== 'undefined') { render(, document.getElementById('root')!) }