From c3746ad105ca27946cf2f466406edf30dda345ce Mon Sep 17 00:00:00 2001
From: yuetsh <517252939@qq.com>
Date: Fri, 6 Jan 2023 20:09:26 +0800
Subject: [PATCH] add editor.
---
src/.prettierrc.toml => .prettierrc.toml | 0
package-lock.json | 37 ++++-
package.json | 2 +-
src/main.ts | 15 +-
src/oj/{user => components}/signup.vue | 0
src/oj/index.vue | 2 +-
src/oj/problem/components/editor.vue | 148 ++++++++++++++++++
.../{ => components}/problem-content.vue | 2 +-
.../problem/{ => components}/problem-info.vue | 5 +-
src/oj/problem/detail.vue | 23 +--
src/oj/problem/editor.vue | 134 ----------------
src/utils/code-templates.ts | 55 +++++++
src/utils/constants.ts | 24 ++-
vite.config.ts | 20 +--
14 files changed, 298 insertions(+), 169 deletions(-)
rename src/.prettierrc.toml => .prettierrc.toml (100%)
rename src/oj/{user => components}/signup.vue (100%)
create mode 100644 src/oj/problem/components/editor.vue
rename src/oj/problem/{ => components}/problem-content.vue (94%)
rename src/oj/problem/{ => components}/problem-info.vue (88%)
delete mode 100644 src/oj/problem/editor.vue
create mode 100644 src/utils/code-templates.ts
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 @@
+
+
+
+
提示
-