From 0b2d9e3efdbc5259b83c3ae4f0fb9df686cdfff4 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Fri, 20 Jan 2023 12:29:32 +0800 Subject: [PATCH] hljs. --- package-lock.json | 148 ++++++++++-------- package.json | 10 +- src/App.vue | 15 ++ src/auto-imports.d.ts | 1 + src/components.d.ts | 4 +- src/learn/components/Loading.vue | 1 - src/learn/index.vue | 15 +- src/learn/step-1/1.c | 6 + src/learn/step-1/index.md | 14 +- src/main.ts | 20 +-- src/oj/problem/components/Editor.vue | 2 +- src/oj/problem/components/Panel.vue | 2 +- src/oj/status/detail.vue | 5 - src/oj/submission/detail.vue | 80 ++++++++++ src/oj/{status => submission}/list.vue | 20 ++- src/routes.ts | 8 +- src/shared/Header.vue | 3 +- src/shared/Monaco.vue | 19 ++- .../SubmissionResultTag.vue | 4 +- src/shared/composables/monaco.ts | 19 +++ src/shims.d.ts | 11 -- src/utils/types.ts | 2 +- vite.config.ts | 12 +- 23 files changed, 271 insertions(+), 150 deletions(-) delete mode 100644 src/learn/components/Loading.vue create mode 100644 src/learn/step-1/1.c delete mode 100644 src/oj/status/detail.vue create mode 100644 src/oj/submission/detail.vue rename src/oj/{status => submission}/list.vue (91%) rename src/{oj/components => shared}/SubmissionResultTag.vue (70%) create mode 100644 src/shared/composables/monaco.ts diff --git a/package-lock.json b/package-lock.json index 9dd0419..c0b38f4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,13 +10,14 @@ "dependencies": { "@element-plus/icons-vue": "^2.0.10", "@monaco-editor/loader": "^1.3.2", - "@vueuse/core": "^9.10.0", - "@vueuse/integrations": "^9.10.0", - "axios": "^1.2.2", + "@vueuse/core": "^9.11.0", + "@vueuse/integrations": "^9.11.0", + "axios": "^1.2.3", "copy-text-to-clipboard": "^3.0.1", + "highlight.js": "^11.7.0", "naive-ui": "^2.34.3", "party-js": "^2.2.0", - "pinia": "^2.0.28", + "pinia": "^2.0.29", "vue": "^3.2.45", "vue-router": "^4.1.6" }, @@ -24,6 +25,7 @@ "@iconify-json/ep": "^1.1.8", "@types/node": "^18.11.18", "@vitejs/plugin-vue": "^4.0.0", + "markdown-it-highlightjs": "^4.0.1", "monaco-editor": "^0.34.1", "prettier": "^2.8.3", "typescript": "^4.9.4", @@ -809,6 +811,11 @@ "csstype": "^2.6.8" } }, + "node_modules/@vue/runtime-dom/node_modules/csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" + }, "node_modules/@vue/server-renderer": { "version": "3.2.45", "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.45.tgz", @@ -827,13 +834,13 @@ "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==" }, "node_modules/@vueuse/core": { - "version": "9.10.0", - "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.10.0.tgz", - "integrity": "sha512-CxMewME07qeuzuT/AOIQGv0EhhDoojniqU6pC3F8m5VC76L47UT18DcX88kWlP3I7d3qMJ4u/PD8iSRsy3bmNA==", + "version": "9.11.0", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.11.0.tgz", + "integrity": "sha512-7yZJ8LNOssA8ZmeSjd4F+wbFBA4csiP4TiaXgruqg1H4PAtzSkv93PPwFLvQkSnfo3Bar+e+6QoRvWjhz7l2Xg==", "dependencies": { "@types/web-bluetooth": "^0.0.16", - "@vueuse/metadata": "9.10.0", - "@vueuse/shared": "9.10.0", + "@vueuse/metadata": "9.11.0", + "@vueuse/shared": "9.11.0", "vue-demi": "*" } }, @@ -860,12 +867,12 @@ } }, "node_modules/@vueuse/integrations": { - "version": "9.10.0", - "resolved": "https://registry.npmmirror.com/@vueuse/integrations/-/integrations-9.10.0.tgz", - "integrity": "sha512-MLGVbN3i9gRq3pb8VRZXgPvbNJcUUvgR5pmbc1QZj4Z1vvsvxam159AwWEJdyX2I39a1E7EkmBujtiXtVckO5g==", + "version": "9.11.0", + "resolved": "https://registry.npmmirror.com/@vueuse/integrations/-/integrations-9.11.0.tgz", + "integrity": "sha512-t6ox9R1sDOBzHWaycv5bti4t8o0oFyAQx98zDjCxtcrwkyib0ZKtyf/dIHGFS9kHk4ycOT3nwS47A/jXOGfxaQ==", "dependencies": { - "@vueuse/core": "9.10.0", - "@vueuse/shared": "9.10.0", + "@vueuse/core": "9.11.0", + "@vueuse/shared": "9.11.0", "vue-demi": "*" }, "peerDependencies": { @@ -940,14 +947,14 @@ } }, "node_modules/@vueuse/metadata": { - "version": "9.10.0", - "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.10.0.tgz", - "integrity": "sha512-G5VZhgTCapzU9rv0Iq2HBrVOSGzOKb+OE668NxhXNcTjUjwYxULkEhAw70FtRLMZc+hxcFAzDZlKYA0xcwNMuw==" + "version": "9.11.0", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.11.0.tgz", + "integrity": "sha512-HhtG2SWkcfZBLbamHdvLn7jKOCFpw/ifXjVTd5ilFkj98WVUk/3UTQ03wF1XIkuhSO4+b45hD2lfG9/GdKCF7w==" }, "node_modules/@vueuse/shared": { - "version": "9.10.0", - "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.10.0.tgz", - "integrity": "sha512-vakHJ2ZRklAzqmcVBL38RS7BxdBA4+5poG9NsSyqJxrt9kz0zX3P5CXMy0Hm6LFbZXUgvKdqAS3pUH1zX/5qTQ==", + "version": "9.11.0", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.11.0.tgz", + "integrity": "sha512-8lO7wD5abYxupKy2KynH1pSgP715ky6iCrWYb8aX2AuAVi9uHXj7qE1dw6BnmArSaLHci4x9iuzWPCpAzUkC/A==", "dependencies": { "vue-demi": "*" } @@ -1019,9 +1026,9 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/axios": { - "version": "1.2.2", - "resolved": "https://registry.npmmirror.com/axios/-/axios-1.2.2.tgz", - "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==", + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.2.3.tgz", + "integrity": "sha512-pdDkMYJeuXLZ6Xj/Q5J3Phpe+jbGdsSzlQaFVkMQzRUL05+6+tetX8TV3p4HrU4kzuO9bt+io/yGQxuyxA/xcw==", "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -1127,16 +1134,11 @@ "csstype": "~3.0.5" } }, - "node_modules/css-render/node_modules/csstype": { + "node_modules/csstype": { "version": "3.0.11", "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.0.11.tgz", "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" }, - "node_modules/csstype": { - "version": "2.6.21", - "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz", - "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" - }, "node_modules/date-fns": { "version": "2.29.3", "resolved": "https://registry.npmmirror.com/date-fns/-/date-fns-2.29.3.tgz", @@ -1641,6 +1643,15 @@ "markdown-it": "bin/markdown-it.js" } }, + "node_modules/markdown-it-highlightjs": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/markdown-it-highlightjs/-/markdown-it-highlightjs-4.0.1.tgz", + "integrity": "sha512-EPXwFEN6P5nqR3G4KjT20r20xbGYKMMA/360hhSYFmeoGXTE6hsLtJAiB/8ID8slVH4CWHHEL7GX0YenyIstVQ==", + "dev": true, + "dependencies": { + "highlight.js": "^11.5.1" + } + }, "node_modules/markdown-it/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", @@ -1710,9 +1721,9 @@ } }, "node_modules/minimatch": { - "version": "5.1.4", - "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.4.tgz", - "integrity": "sha512-U0iNYXt9wALljzfnGkhFSy5sAC6/SCR3JrHrlsdJz4kF8MvhTRQNiC59iUi1iqsitV7abrNAJWElVL9pdnoUgw==", + "version": "5.1.6", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -3063,6 +3074,13 @@ "@vue/runtime-core": "3.2.45", "@vue/shared": "3.2.45", "csstype": "^2.6.8" + }, + "dependencies": { + "csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" + } } }, "@vue/server-renderer": { @@ -3080,13 +3098,13 @@ "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==" }, "@vueuse/core": { - "version": "9.10.0", - "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.10.0.tgz", - "integrity": "sha512-CxMewME07qeuzuT/AOIQGv0EhhDoojniqU6pC3F8m5VC76L47UT18DcX88kWlP3I7d3qMJ4u/PD8iSRsy3bmNA==", + "version": "9.11.0", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.11.0.tgz", + "integrity": "sha512-7yZJ8LNOssA8ZmeSjd4F+wbFBA4csiP4TiaXgruqg1H4PAtzSkv93PPwFLvQkSnfo3Bar+e+6QoRvWjhz7l2Xg==", "requires": { "@types/web-bluetooth": "^0.0.16", - "@vueuse/metadata": "9.10.0", - "@vueuse/shared": "9.10.0", + "@vueuse/metadata": "9.11.0", + "@vueuse/shared": "9.11.0", "vue-demi": "*" }, "dependencies": { @@ -3099,12 +3117,12 @@ } }, "@vueuse/integrations": { - "version": "9.10.0", - "resolved": "https://registry.npmmirror.com/@vueuse/integrations/-/integrations-9.10.0.tgz", - "integrity": "sha512-MLGVbN3i9gRq3pb8VRZXgPvbNJcUUvgR5pmbc1QZj4Z1vvsvxam159AwWEJdyX2I39a1E7EkmBujtiXtVckO5g==", + "version": "9.11.0", + "resolved": "https://registry.npmmirror.com/@vueuse/integrations/-/integrations-9.11.0.tgz", + "integrity": "sha512-t6ox9R1sDOBzHWaycv5bti4t8o0oFyAQx98zDjCxtcrwkyib0ZKtyf/dIHGFS9kHk4ycOT3nwS47A/jXOGfxaQ==", "requires": { - "@vueuse/core": "9.10.0", - "@vueuse/shared": "9.10.0", + "@vueuse/core": "9.11.0", + "@vueuse/shared": "9.11.0", "vue-demi": "*" }, "dependencies": { @@ -3117,14 +3135,14 @@ } }, "@vueuse/metadata": { - "version": "9.10.0", - "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.10.0.tgz", - "integrity": "sha512-G5VZhgTCapzU9rv0Iq2HBrVOSGzOKb+OE668NxhXNcTjUjwYxULkEhAw70FtRLMZc+hxcFAzDZlKYA0xcwNMuw==" + "version": "9.11.0", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.11.0.tgz", + "integrity": "sha512-HhtG2SWkcfZBLbamHdvLn7jKOCFpw/ifXjVTd5ilFkj98WVUk/3UTQ03wF1XIkuhSO4+b45hD2lfG9/GdKCF7w==" }, "@vueuse/shared": { - "version": "9.10.0", - "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.10.0.tgz", - "integrity": "sha512-vakHJ2ZRklAzqmcVBL38RS7BxdBA4+5poG9NsSyqJxrt9kz0zX3P5CXMy0Hm6LFbZXUgvKdqAS3pUH1zX/5qTQ==", + "version": "9.11.0", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.11.0.tgz", + "integrity": "sha512-8lO7wD5abYxupKy2KynH1pSgP715ky6iCrWYb8aX2AuAVi9uHXj7qE1dw6BnmArSaLHci4x9iuzWPCpAzUkC/A==", "requires": { "vue-demi": "*" }, @@ -3173,9 +3191,9 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "axios": { - "version": "1.2.2", - "resolved": "https://registry.npmmirror.com/axios/-/axios-1.2.2.tgz", - "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==", + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.2.3.tgz", + "integrity": "sha512-pdDkMYJeuXLZ6Xj/Q5J3Phpe+jbGdsSzlQaFVkMQzRUL05+6+tetX8TV3p4HrU4kzuO9bt+io/yGQxuyxA/xcw==", "requires": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -3259,19 +3277,12 @@ "requires": { "@emotion/hash": "~0.8.0", "csstype": "~3.0.5" - }, - "dependencies": { - "csstype": { - "version": "3.0.11", - "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.0.11.tgz", - "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" - } } }, "csstype": { - "version": "2.6.21", - "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz", - "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" + "version": "3.0.11", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.0.11.tgz", + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" }, "date-fns": { "version": "2.29.3", @@ -3659,6 +3670,15 @@ } } }, + "markdown-it-highlightjs": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/markdown-it-highlightjs/-/markdown-it-highlightjs-4.0.1.tgz", + "integrity": "sha512-EPXwFEN6P5nqR3G4KjT20r20xbGYKMMA/360hhSYFmeoGXTE6hsLtJAiB/8ID8slVH4CWHHEL7GX0YenyIstVQ==", + "dev": true, + "requires": { + "highlight.js": "^11.5.1" + } + }, "mdurl": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/mdurl/-/mdurl-1.0.1.tgz", @@ -3707,9 +3727,9 @@ "dev": true }, "minimatch": { - "version": "5.1.4", - "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.4.tgz", - "integrity": "sha512-U0iNYXt9wALljzfnGkhFSy5sAC6/SCR3JrHrlsdJz4kF8MvhTRQNiC59iUi1iqsitV7abrNAJWElVL9pdnoUgw==", + "version": "5.1.6", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "requires": { "brace-expansion": "^2.0.1" diff --git a/package.json b/package.json index 721ab48..3dd2732 100644 --- a/package.json +++ b/package.json @@ -12,13 +12,14 @@ "dependencies": { "@element-plus/icons-vue": "^2.0.10", "@monaco-editor/loader": "^1.3.2", - "@vueuse/core": "^9.10.0", - "@vueuse/integrations": "^9.10.0", - "axios": "^1.2.2", + "@vueuse/core": "^9.11.0", + "@vueuse/integrations": "^9.11.0", + "axios": "^1.2.3", "copy-text-to-clipboard": "^3.0.1", + "highlight.js": "^11.7.0", "naive-ui": "^2.34.3", "party-js": "^2.2.0", - "pinia": "^2.0.28", + "pinia": "^2.0.29", "vue": "^3.2.45", "vue-router": "^4.1.6" }, @@ -26,6 +27,7 @@ "@iconify-json/ep": "^1.1.8", "@types/node": "^18.11.18", "@vitejs/plugin-vue": "^4.0.0", + "markdown-it-highlightjs": "^4.0.1", "monaco-editor": "^0.34.1", "prettier": "^2.8.3", "typescript": "^4.9.4", diff --git a/src/App.vue b/src/App.vue index c1a5035..bcd5702 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,8 +1,22 @@