diff --git a/ui/.prettierrc.json b/ui/.prettierrc.json index 511ba8d..2a391e6 100644 --- a/ui/.prettierrc.json +++ b/ui/.prettierrc.json @@ -1,7 +1,8 @@ { "$schema": "https://json.schemastore.org/prettierrc", - "semi": false, + "semi": true, "singleQuote": true, + "trailingComma": "all", "printWidth": 100, "plugins": [ "prettier-plugin-tailwindcss" diff --git a/ui/eslint.config.ts b/ui/eslint.config.ts index d3d8f17..f576ccb 100644 --- a/ui/eslint.config.ts +++ b/ui/eslint.config.ts @@ -1,6 +1,6 @@ -import pluginVue from 'eslint-plugin-vue' -import { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript' -import skipFormatting from '@vue/eslint-config-prettier/skip-formatting' +import pluginVue from 'eslint-plugin-vue'; +import { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript'; +import skipFormatting from '@vue/eslint-config-prettier/skip-formatting'; // To allow more languages other than `ts` in `.vue` files, uncomment the following lines: // import { configureVueProject } from '@vue/eslint-config-typescript' @@ -21,4 +21,4 @@ export default defineConfigWithVueTs( pluginVue.configs['flat/essential'], vueTsConfigs.recommended, skipFormatting, -) +); diff --git a/ui/package-lock.json b/ui/package-lock.json index 19572d8..a5ea0d0 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.0", "dependencies": { "@tailwindcss/vite": "^4.0.6", + "monaco-editor": "^0.52.2", "tailwindcss": "^4.0.6", "vue": "^3.5.13", "vue-router": "^4.5.0" @@ -4156,6 +4157,12 @@ "dev": true, "license": "MIT" }, + "node_modules/monaco-editor": { + "version": "0.52.2", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.52.2.tgz", + "integrity": "sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==", + "license": "MIT" + }, "node_modules/mrmime": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", diff --git a/ui/package.json b/ui/package.json index a0b834e..7d320c7 100644 --- a/ui/package.json +++ b/ui/package.json @@ -15,6 +15,7 @@ }, "dependencies": { "@tailwindcss/vite": "^4.0.6", + "monaco-editor": "^0.52.2", "tailwindcss": "^4.0.6", "vue": "^3.5.13", "vue-router": "^4.5.0" diff --git a/ui/src/App.vue b/ui/src/App.vue index 53b92f5..96a4023 100644 --- a/ui/src/App.vue +++ b/ui/src/App.vue @@ -1,5 +1,5 @@ - - diff --git a/ui/src/components/EditorPage.vue b/ui/src/components/EditorPage.vue index e363ed2..3f81e5f 100644 --- a/ui/src/components/EditorPage.vue +++ b/ui/src/components/EditorPage.vue @@ -1,6 +1,16 @@ - diff --git a/ui/src/components/MonacoEditor.vue b/ui/src/components/MonacoEditor.vue new file mode 100644 index 0000000..a4a1377 --- /dev/null +++ b/ui/src/components/MonacoEditor.vue @@ -0,0 +1,96 @@ + + + + diff --git a/ui/src/router/index.ts b/ui/src/router/index.ts index a249f34..dca7b4c 100644 --- a/ui/src/router/index.ts +++ b/ui/src/router/index.ts @@ -1,6 +1,6 @@ -import { createRouter, createWebHistory } from 'vue-router' -import HomeView from '../views/HomeView.vue' -import NotFoundView from '../views/NotFoundView.vue' +import { createRouter, createWebHistory } from 'vue-router'; +import HomeView from '../views/HomeView.vue'; +import NotFoundView from '../views/NotFoundView.vue'; const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), @@ -19,11 +19,11 @@ const router = createRouter({ component: () => import('../views/AboutView.vue'), }, { - path: "/:catchAll(.*)", + path: '/:catchAll(.*)', name: 'not-found', component: NotFoundView, }, ], -}) +}); -export default router +export default router; diff --git a/ui/src/views/AboutView.vue b/ui/src/views/AboutView.vue index f8cfde6..3fa2807 100644 --- a/ui/src/views/AboutView.vue +++ b/ui/src/views/AboutView.vue @@ -3,5 +3,3 @@

This is an about page

- - diff --git a/ui/src/workers/monaco.workers.ts b/ui/src/workers/monaco.workers.ts new file mode 100644 index 0000000..3775a9b --- /dev/null +++ b/ui/src/workers/monaco.workers.ts @@ -0,0 +1,12 @@ +import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'; + +self.MonacoEnvironment = { + getWorker() { + return new editorWorker(); + }, +}; + +export function setupMonaco() { + // This function is intentionally empty - it just needs to be imported + // to set up the workers +} diff --git a/ui/vite.config.ts b/ui/vite.config.ts index 588eb96..7892f6f 100644 --- a/ui/vite.config.ts +++ b/ui/vite.config.ts @@ -1,20 +1,16 @@ -import { fileURLToPath, URL } from 'node:url' +import { fileURLToPath, URL } from 'node:url'; -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' -import vueDevTools from 'vite-plugin-vue-devtools' -import tailwindcss from '@tailwindcss/vite' +import { defineConfig } from 'vite'; +import vue from '@vitejs/plugin-vue'; +import vueDevTools from 'vite-plugin-vue-devtools'; +import tailwindcss from '@tailwindcss/vite'; // https://vite.dev/config/ export default defineConfig({ - plugins: [ - vue(), - vueDevTools(), - tailwindcss(), - ], + plugins: [vue(), vueDevTools(), tailwindcss()], resolve: { alias: { - '@': fileURLToPath(new URL('./src', import.meta.url)) + '@': fileURLToPath(new URL('./src', import.meta.url)), }, }, -}) +});