Crude first pass at playground page

This commit is contained in:
2024-11-04 22:30:40 -08:00
parent f225d0ecbd
commit f92d287909
9 changed files with 1209 additions and 0 deletions

45
playground/src/main.ts Normal file
View File

@@ -0,0 +1,45 @@
import './style.css'
import {newtLanguage} from './monarch.ts'
import * as monaco from 'monaco-editor'
monaco.languages.setMonarchTokensProvider("newt", newtLanguage);
let container = document.getElementById('editor')!
let result = document.getElementById('result')!
const editor = monaco.editor.create(container, {
value: "module Main\n\n",
language: "newt",
theme: "vs",
automaticLayout: true,
})
let timeout : number | undefined
function run(s: string) {
console.log('run', s)
process.argv = ['','', 'src/Main.newt']
files['src/Main.newt'] = s
result.innerHTML = ''
__mainExpression_0()
}
// We'll want to collect and put info in the monaco
process.stdout.write = (s) => {
console.log('write', s)
let div = document.createElement('div')
div.className = 'log'
div.textContent = s
result.appendChild(div)
}
editor.onDidChangeModelContent((ev) => {
console.log('mc', ev)
let value = editor.getValue()
clearTimeout(timeout)
timeout = setTimeout(() => run(value), 1000)
})
console.log('REGISTER')