import * as React from 'react'; import * as ReactDOM from 'react-dom'; import { observer } from 'mobx-react'; import { observable, computed } from 'mobx'; import { CompileScript } from '../client/util/Scripting'; @observer class Repl extends React.Component { @observable text: string = ""; @observable executedCommands: { command: string, result: any }[] = []; onChange = (e: React.ChangeEvent) => { this.text = e.target.value; } onKeyDown = (e: React.KeyboardEvent) => { if (e.ctrlKey && e.key === "Enter") { const script = CompileScript(this.text, { addReturn: true, typecheck: false }); if (!script.compiled) { this.executedCommands.push({ command: this.text, result: "Compile Error" }); } else { const result = script.run(); if (result.success) { this.executedCommands.push({ command: this.text, result: result.result }); } else { this.executedCommands.push({ command: this.text, result: result.error.message || result.error }); } } this.text = ""; } } @computed get commands() { return this.executedCommands.map(command => { return (

{command.command}

{JSON.stringify(command.result, null, 2)}
); }); } render() { return (
{this.commands}