{"version":3,"sources":["scripts.js"],"names":["editor","inputField","document","addEventListener","getElementById","sendCodeToServer","sendParamsToServer","CodeMirror","value","mode","theme","lineNumbers","code","getValue","sendToServer","params","body","url","window","location","href","fetch","method","headers","then","r","text","handleResult","codeMirrorRead","codeMirrorParsed","result","json","JSON","parse","destroyCodeMirror","querySelectorAll","forEach","ele","innerText","parseError","querySelector","concat","paramError","readCode","initReadonlyCodeMirror","parsedCode","parsedInputs","codeMirrorInputsParsed","codeMirrorResult","cm","toTextArea","lineWrapping","readOnly","on","e","codemirrorIgnore"],"mappings":"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","file":"scripts.f4db8b96.js","sourceRoot":"..\\src","sourcesContent":["\nlet editor\nlet inputField\ndocument.addEventListener('DOMContentLoaded', () => {\n document.getElementById(\"parse\").addEventListener(\"click\", sendCodeToServer);\n document.getElementById(\"run\").addEventListener(\"click\", sendParamsToServer);\n \n editor = CodeMirror(document.getElementById('inputcode'), {\n value: 'While x1 > 0 Do\\n x2 = x2 + 1;\\n x1 = x1 - 1\\nEnd;\\nx0 = x2 + 0',\n mode: \"loopwhile\",\n theme: 'solarized',\n lineNumbers: true,\n });\n\n inputField = CodeMirror(document.getElementById('params'), {\n value: \"2, 15\",\n mode: \"loopwhile\",\n theme: 'solarized',\n lineNumbers: true,\n });\n})\n\n\nfunction sendCodeToServer() {\n const code = editor.getValue()\n sendToServer(code)\n}\n\nfunction sendParamsToServer() {\n const code = editor.getValue()\n const params = inputField.getValue()\n sendToServer(code, params)\n}\n\nfunction sendToServer(body, params) {\n const url = `${window.location.href}api/code${params ? `?args=${params}` : ''}`\n fetch(url, {\n body,\n method: 'POST',\n headers: {\n 'Content-Type': 'text/plain; charset=utf-8'\n }\n })\n .then(r => r.text())\n .then(handleResult)\n}\n\nlet codeMirrorRead;\nlet codeMirrorParsed;\n\nfunction handleResult(result) {\n const json = JSON.parse(result)\n destroyCodeMirror(codeMirrorRead)\n destroyCodeMirror(codeMirrorParsed)\n \n document.querySelectorAll('code').forEach(ele => ele.innerText = '')\n if (json.parseError) {\n document.querySelector('#parseError').innerText = \"ERROR IN CODE:\\n\".concat(json.parseError)\n }\n if (json.paramError) {\n document.querySelector('#paramError').innerText = \"ERROR IN PARAMS:\\n\".concat(json.paramError)\n }\n if (json.readCode) {\n codeMirrorRead = initReadonlyCodeMirror(document.getElementById('readCode'), \"\\nREAD CODE:\\n\\n\".concat(json.readCode), 'loopwhile')\n }\n if (json.parsedCode) {\n codeMirrorParsed = initReadonlyCodeMirror(document.getElementById('parsedCode'), \"PARSED CODE:\\n\".concat(json.parsedCode), 'haskell')\n }\n if (json.parsedInputs) {\n codeMirrorInputsParsed = initReadonlyCodeMirror(document.getElementById('parsedInputs'), \"PARSED PARAMETERS:\\n\".concat(json.parsedInputs),'haskell')\n }\n if (json.result) {\n codeMirrorResult = initReadonlyCodeMirror(document.getElementById('result'), \"RESULT:\\n\".concat(json.result),'haskell')\n }\n}\n\nfunction destroyCodeMirror(cm) {\n if (cm && cm.toTextArea) {\n cm.toTextArea()\n }\n}\n\nfunction initReadonlyCodeMirror(ele, code, mode) {\n let cm = CodeMirror(ele, {\n value: code,\n mode: mode,\n theme: 'default',\n lineWrapping: true,\n readOnly: true\n });\n /* https://github.com/codemirror/CodeMirror/issues/4762 */\n cm.on('copy', (cm, e) => {\n // ignore copy by codemirror. and will copy by browser\n e.codemirrorIgnore = true;\n });\n return cm;\n}"]}