diff --git a/src/.prettierrc.toml b/.prettierrc.toml similarity index 100% rename from src/.prettierrc.toml rename to .prettierrc.toml diff --git a/package-lock.json b/package-lock.json index 2135cc8..59b1bbd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,9 +9,9 @@ "version": "0.0.0", "dependencies": { "@element-plus/icons-vue": "^2.0.10", + "@monaco-editor/loader": "^1.3.2", "axios": "^1.2.2", "element-plus": "^2.2.28", - "monaco-editor": "^0.34.1", "normalize.css": "^8.0.1", "pinia": "^2.0.28", "vue": "^3.2.45", @@ -472,6 +472,17 @@ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, + "node_modules/@monaco-editor/loader": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/@monaco-editor/loader/-/loader-1.3.2.tgz", + "integrity": "sha512-BTDbpHl3e47r3AAtpfVFTlAi7WXv4UQ/xZmz8atKl4q7epQV5e7+JbigFDViWF71VBi4IIBdcWP57Hj+OWuc9g==", + "dependencies": { + "state-local": "^1.0.6" + }, + "peerDependencies": { + "monaco-editor": ">= 0.21.0 < 1" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1432,7 +1443,8 @@ "node_modules/monaco-editor": { "version": "0.34.1", "resolved": "https://registry.npmmirror.com/monaco-editor/-/monaco-editor-0.34.1.tgz", - "integrity": "sha512-FKc80TyiMaruhJKKPz5SpJPIjL+dflGvz4CpuThaPMc94AyN7SeC9HQ8hrvaxX7EyHdJcUY5i4D0gNyJj1vSZQ==" + "integrity": "sha512-FKc80TyiMaruhJKKPz5SpJPIjL+dflGvz4CpuThaPMc94AyN7SeC9HQ8hrvaxX7EyHdJcUY5i4D0gNyJj1vSZQ==", + "peer": true }, "node_modules/ms": { "version": "2.1.2", @@ -1775,6 +1787,11 @@ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "deprecated": "Please use @jridgewell/sourcemap-codec instead" }, + "node_modules/state-local": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/state-local/-/state-local-1.0.7.tgz", + "integrity": "sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==" + }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -2363,6 +2380,14 @@ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, + "@monaco-editor/loader": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/@monaco-editor/loader/-/loader-1.3.2.tgz", + "integrity": "sha512-BTDbpHl3e47r3AAtpfVFTlAi7WXv4UQ/xZmz8atKl4q7epQV5e7+JbigFDViWF71VBi4IIBdcWP57Hj+OWuc9g==", + "requires": { + "state-local": "^1.0.6" + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3127,7 +3152,8 @@ "monaco-editor": { "version": "0.34.1", "resolved": "https://registry.npmmirror.com/monaco-editor/-/monaco-editor-0.34.1.tgz", - "integrity": "sha512-FKc80TyiMaruhJKKPz5SpJPIjL+dflGvz4CpuThaPMc94AyN7SeC9HQ8hrvaxX7EyHdJcUY5i4D0gNyJj1vSZQ==" + "integrity": "sha512-FKc80TyiMaruhJKKPz5SpJPIjL+dflGvz4CpuThaPMc94AyN7SeC9HQ8hrvaxX7EyHdJcUY5i4D0gNyJj1vSZQ==", + "peer": true }, "ms": { "version": "2.1.2", @@ -3374,6 +3400,11 @@ "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" }, + "state-local": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/state-local/-/state-local-1.0.7.tgz", + "integrity": "sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==" + }, "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz", diff --git a/package.json b/package.json index 67f70ca..77f0ec1 100644 --- a/package.json +++ b/package.json @@ -11,9 +11,9 @@ }, "dependencies": { "@element-plus/icons-vue": "^2.0.10", + "@monaco-editor/loader": "^1.3.2", "axios": "^1.2.2", "element-plus": "^2.2.28", - "monaco-editor": "^0.34.1", "normalize.css": "^8.0.1", "pinia": "^2.0.28", "vue": "^3.2.45", diff --git a/src/main.ts b/src/main.ts index 0041699..8ad9ea6 100644 --- a/src/main.ts +++ b/src/main.ts @@ -3,10 +3,12 @@ import { createRouter, createWebHistory } from "vue-router" import { createPinia } from "pinia" import "normalize.css" import "element-plus/theme-chalk/display.css" -import App from "./App.vue" +import loader from "@monaco-editor/loader" +import App from "./App.vue" import Home from "./oj/index.vue" import Problems from "./oj/problem/list.vue" + import storage from "./utils/storage" import { STORAGE_KEY } from "./utils/constants" import { useLoginStore } from "./shared/stores/login" @@ -18,7 +20,7 @@ const routes = [ children: [ { path: "", component: Problems }, { - path: "problem/:id", + path: "problem/:problemID", component: () => import("./oj/problem/detail.vue"), }, { @@ -27,7 +29,7 @@ const routes = [ meta: { requiresAuth: true }, }, { - path: "status/:id", + path: "status/:statusID", component: () => import("./oj/status/detail.vue"), }, { @@ -36,7 +38,7 @@ const routes = [ meta: { requiresAuth: true }, }, { - path: "contest/:id", + path: "contest/:contestID", component: () => import("./oj/contest/detail.vue"), }, { @@ -69,6 +71,11 @@ router.beforeEach((to, from, next) => { const pinia = createPinia() +loader.config({ + paths: { vs: "https://cdn.staticfile.org/monaco-editor/0.34.1/min/vs" }, + "vs/nls": { availableLanguages: { "*": "zh-cn" } }, +}) + const app = createApp(App) app.use(router) app.use(pinia) diff --git a/src/oj/user/signup.vue b/src/oj/components/signup.vue similarity index 100% rename from src/oj/user/signup.vue rename to src/oj/components/signup.vue diff --git a/src/oj/index.vue b/src/oj/index.vue index 1a8bd7f..196b791 100644 --- a/src/oj/index.vue +++ b/src/oj/index.vue @@ -1,6 +1,6 @@ diff --git a/src/oj/problem/components/editor.vue b/src/oj/problem/components/editor.vue new file mode 100644 index 0000000..0e576af --- /dev/null +++ b/src/oj/problem/components/editor.vue @@ -0,0 +1,148 @@ + + + + + diff --git a/src/oj/problem/problem-content.vue b/src/oj/problem/components/problem-content.vue similarity index 94% rename from src/oj/problem/problem-content.vue rename to src/oj/problem/components/problem-content.vue index 6e8d7db..7e5fa81 100644 --- a/src/oj/problem/problem-content.vue +++ b/src/oj/problem/components/problem-content.vue @@ -16,7 +16,7 @@ const { problem } = defineProps(["problem"])

提示

- +
diff --git a/src/oj/problem/problem-info.vue b/src/oj/problem/components/problem-info.vue similarity index 88% rename from src/oj/problem/problem-info.vue rename to src/oj/problem/components/problem-info.vue index 76a7188..599f663 100644 --- a/src/oj/problem/problem-info.vue +++ b/src/oj/problem/components/problem-info.vue @@ -1,7 +1,6 @@ diff --git a/src/oj/problem/detail.vue b/src/oj/problem/detail.vue index 830ab0e..4a735d6 100644 --- a/src/oj/problem/detail.vue +++ b/src/oj/problem/detail.vue @@ -1,15 +1,17 @@ diff --git a/src/oj/problem/editor.vue b/src/oj/problem/editor.vue deleted file mode 100644 index 5a90f0b..0000000 --- a/src/oj/problem/editor.vue +++ /dev/null @@ -1,134 +0,0 @@ - - - - - diff --git a/src/utils/code-templates.ts b/src/utils/code-templates.ts new file mode 100644 index 0000000..de0597e --- /dev/null +++ b/src/utils/code-templates.ts @@ -0,0 +1,55 @@ +export const cSource = + '#include\r\n\r\nint main()\r\n{\r\n printf("黄岩一职");\r\n return 0;\r\n}' +export const cppSource = + '#include\r\n\r\nusing namespace std;\r\n\r\nint main()\r\n{\r\n cout<<"黄岩一职"<