diff --git a/webserial/package-lock.json b/webserial/package-lock.json index 024a47e..ec5daaa 100644 --- a/webserial/package-lock.json +++ b/webserial/package-lock.json @@ -11,6 +11,8 @@ "@sveltejs/vite-plugin-svelte": "^2.0.0", "@tsconfig/svelte": "^3.0.0", "@types/w3c-web-serial": "^1.0.3", + "monaco-editor": "^0.34.1", + "sass": "^1.57.1", "svelte": "^3.54.0", "svelte-check": "^2.10.0", "tslib": "^2.4.1", @@ -776,6 +778,12 @@ "node": ">= 0.4.0" } }, + "node_modules/immutable": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.1.tgz", + "integrity": "sha512-7WYV7Q5BTs0nlQm7tl92rDYYoyELLKHoDMBKhrxEoiV4mrfVdRz8hzPiYOzH7yWjzoVEamxRuAqhxL2PLRwZYQ==", + "dev": true + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -947,6 +955,12 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/monaco-editor": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.34.1.tgz", + "integrity": "sha512-FKc80TyiMaruhJKKPz5SpJPIjL+dflGvz4CpuThaPMc94AyN7SeC9HQ8hrvaxX7EyHdJcUY5i4D0gNyJj1vSZQ==", + "dev": true + }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", @@ -1204,6 +1218,23 @@ "rimraf": "^2.5.2" } }, + "node_modules/sass": { + "version": "1.57.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.57.1.tgz", + "integrity": "sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/sorcery": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", @@ -1948,6 +1979,12 @@ "function-bind": "^1.1.1" } }, + "immutable": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.1.tgz", + "integrity": "sha512-7WYV7Q5BTs0nlQm7tl92rDYYoyELLKHoDMBKhrxEoiV4mrfVdRz8hzPiYOzH7yWjzoVEamxRuAqhxL2PLRwZYQ==", + "dev": true + }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -2074,6 +2111,12 @@ "minimist": "^1.2.6" } }, + "monaco-editor": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.34.1.tgz", + "integrity": "sha512-FKc80TyiMaruhJKKPz5SpJPIjL+dflGvz4CpuThaPMc94AyN7SeC9HQ8hrvaxX7EyHdJcUY5i4D0gNyJj1vSZQ==", + "dev": true + }, "mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", @@ -2237,6 +2280,17 @@ "rimraf": "^2.5.2" } }, + "sass": { + "version": "1.57.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.57.1.tgz", + "integrity": "sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, "sorcery": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", diff --git a/webserial/package.json b/webserial/package.json index 9b22f18..8c6ddaf 100644 --- a/webserial/package.json +++ b/webserial/package.json @@ -13,6 +13,8 @@ "@sveltejs/vite-plugin-svelte": "^2.0.0", "@tsconfig/svelte": "^3.0.0", "@types/w3c-web-serial": "^1.0.3", + "monaco-editor": "^0.34.1", + "sass": "^1.57.1", "svelte": "^3.54.0", "svelte-check": "^2.10.0", "tslib": "^2.4.1", diff --git a/webserial/src/App.svelte b/webserial/src/App.svelte index 78c0d6f..3b5ebd2 100644 --- a/webserial/src/App.svelte +++ b/webserial/src/App.svelte @@ -1,10 +1,28 @@
-
cOnTeNt
- + +
+ + diff --git a/webserial/src/dmx/Debug.svelte b/webserial/src/dmx/Debug.svelte new file mode 100644 index 0000000..7b3d822 --- /dev/null +++ b/webserial/src/dmx/Debug.svelte @@ -0,0 +1,7 @@ + + +
dbg: "{dbg}"
diff --git a/webserial/src/editor/Monaco.svelte b/webserial/src/editor/Monaco.svelte new file mode 100644 index 0000000..f19343f --- /dev/null +++ b/webserial/src/editor/Monaco.svelte @@ -0,0 +1,50 @@ + + +
+ + diff --git a/webserial/src/editor/code.ts b/webserial/src/editor/code.ts new file mode 100644 index 0000000..2b329af --- /dev/null +++ b/webserial/src/editor/code.ts @@ -0,0 +1,6 @@ +import { writable } from "svelte/store"; +import defaultCode from "./defaultCode.ts?raw"; +import TS from "typescript"; + +/** the transpiled JavaScript code */ +export const code = writable(TS.transpile(defaultCode, {strict: true})); \ No newline at end of file diff --git a/webserial/src/editor/defaultCode.ts b/webserial/src/editor/defaultCode.ts new file mode 100644 index 0000000..9c5bd09 --- /dev/null +++ b/webserial/src/editor/defaultCode.ts @@ -0,0 +1,4 @@ +// ayaya ayaya + +ctx.set(1, 255); +ctx.set(2, 255); \ No newline at end of file diff --git a/webserial/src/editor/defaultEnv.d.ts b/webserial/src/editor/defaultEnv.d.ts new file mode 100644 index 0000000..1d43a76 --- /dev/null +++ b/webserial/src/editor/defaultEnv.d.ts @@ -0,0 +1,9 @@ +type Context = { + set(address: number, value: number): void, +}; + +/** the global Context object */ +declare const ctx: Context; + +/** the current time (in seconds, e.g. 1.25 after 1250 milliseconds) */ +declare const t: number; \ No newline at end of file diff --git a/webserial/src/eval/EvalLoop.svelte b/webserial/src/eval/EvalLoop.svelte new file mode 100644 index 0000000..bedba0d --- /dev/null +++ b/webserial/src/eval/EvalLoop.svelte @@ -0,0 +1,43 @@ + + + \ No newline at end of file diff --git a/webserial/src/serial/SerialManager.svelte b/webserial/src/serial/SerialManager.svelte index 9214877..7ed2812 100644 --- a/webserial/src/serial/SerialManager.svelte +++ b/webserial/src/serial/SerialManager.svelte @@ -13,6 +13,7 @@ } +
{#if navigator.serial}

Serial available 🚀

{#if port !== null} @@ -24,4 +25,11 @@ {:else}

Looks like your browser does not support WebSerial 😢

Check here for a list of compatible browsers

-{/if} \ No newline at end of file +{/if} +
+ + \ No newline at end of file