aboutsummaryrefslogtreecommitdiff
path: root/src_frontend/Components/Editor/Output.svelte
diff options
context:
space:
mode:
authorJakob Stendahl <jakob.stendahl@outlook.com>2021-09-19 19:43:11 +0200
committerJakob Stendahl <jakob.stendahl@outlook.com>2021-09-19 19:43:11 +0200
commit7bdce37fd3f18e2712e18c4e2c64cac69af0aca1 (patch)
treeb7ad3f1cca92e2dfd2664ae9e65652bd03ff58b2 /src_frontend/Components/Editor/Output.svelte
parente6880cd8ccf82d993f222cb14b4860581654acb8 (diff)
downloadLuxcena-Neo-7bdce37fd3f18e2712e18c4e2c64cac69af0aca1.tar.gz
Luxcena-Neo-7bdce37fd3f18e2712e18c4e2c64cac69af0aca1.zip
:boom: Introduce new UI based on svelte, and rewrite a lot of the node app and the NeoRuntime
Diffstat (limited to 'src_frontend/Components/Editor/Output.svelte')
-rw-r--r--src_frontend/Components/Editor/Output.svelte54
1 files changed, 54 insertions, 0 deletions
diff --git a/src_frontend/Components/Editor/Output.svelte b/src_frontend/Components/Editor/Output.svelte
new file mode 100644
index 0000000..dcd5995
--- /dev/null
+++ b/src_frontend/Components/Editor/Output.svelte
@@ -0,0 +1,54 @@
+<script>
+ import { authorizedSocket, authorizedSocketNeeded } from "../../stores/socketStore";
+ authorizedSocketNeeded.set(true);
+
+ let scrollBox;
+ let htmlCode = "";
+
+ function addData(data, classname) {
+ // let styles = "white-space:pre-wrap;margin:0;";
+ // let styles = "overflow-x:auto;";
+ let styles = "";
+ switch (classname) {
+ case "exit":
+ styles += "color: green";
+ break;
+ case"stderr":
+ styles += "color: red";
+ break;
+ }
+ htmlCode += `<span style="${styles}">${data}</span>`;
+ if (scrollBox != null) {
+ scrollBox.scrollTop = scrollBox.scrollHeight + 100;
+ }
+ }
+ authorizedSocket.on("editor:proc:exit", (code) => addData(`\nMode exited with ${code}\n\n`, "exit"));
+ authorizedSocket.on("editor:proc:stdout", (stdout) => addData(stdout, "stdout"));
+ authorizedSocket.on("editor:proc:stderr", (stderr) => addData(stderr, "stderr"));
+</script>
+
+<style>
+ div {
+ height: 100%;
+ width: 100%;
+ }
+ pre {
+ height: 100%;
+ width: calc(100vw - 30px);
+ overflow: auto;
+ padding: 15px;
+ margin: 0;
+ box-sizing: border-box;
+ }
+ @media (min-width: 800px) {
+ pre {
+ width: calc(100vw - 360px);
+ }
+ }
+</style>
+
+<div>
+ <pre bind:this={scrollBox}>
+ {@html htmlCode}
+ </pre>
+</div> \ No newline at end of file