diff --git a/package-lock.json b/package-lock.json
index 1c6df74..4086e79 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -15,7 +15,7 @@
"@wangeditor/editor-for-vue": "^5.1.12",
"axios": "1.3.4",
"chart.js": "^4.2.1",
- "copy-text-to-clipboard": "^3.0.1",
+ "copy-text-to-clipboard": "^3.1.0",
"date-fns": "^2.29.3",
"highlight.js": "^11.7.0",
"naive-ui": "^2.34.3",
@@ -28,16 +28,16 @@
},
"devDependencies": {
"@iconify-json/ep": "^1.1.10",
- "@types/node": "^18.14.6",
- "@vitejs/plugin-vue": "^4.0.0",
+ "@types/node": "^18.15.11",
+ "@vitejs/plugin-vue": "^4.1.0",
"markdown-it-shiki": "^0.8.0",
"monaco-editor": "^0.36.1",
- "prettier": "^2.8.4",
- "typescript": "^4.9.5",
- "unplugin-auto-import": "^0.15.1",
- "unplugin-icons": "^0.15.3",
+ "prettier": "^2.8.7",
+ "typescript": "^5.0.2",
+ "unplugin-auto-import": "^0.15.2",
+ "unplugin-icons": "^0.16.1",
"unplugin-vue-components": "^0.24.1",
- "vite": "^4.1.4",
+ "vite": "^4.2.1",
"vite-plugin-vue-markdown": "^0.22.4",
"vue-tsc": "^1.2.0"
}
@@ -507,9 +507,9 @@
"integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow=="
},
"node_modules/@esbuild/android-arm": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz",
- "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==",
+ "version": "0.17.14",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.17.14.tgz",
+ "integrity": "sha512-0CnlwnjDU8cks0yJLXfkaU/uoLyRf9VZJs4p1PskBr2AlAHeEsFEwJEo0of/Z3g+ilw5mpyDwThlxzNEIxOE4g==",
"cpu": [
"arm"
],
@@ -523,9 +523,9 @@
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz",
- "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==",
+ "version": "0.17.14",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.17.14.tgz",
+ "integrity": "sha512-eLOpPO1RvtsP71afiFTvS7tVFShJBCT0txiv/xjFBo5a7R7Gjw7X0IgIaFoLKhqXYAXhahoXm7qAmRXhY4guJg==",
"cpu": [
"arm64"
],
@@ -539,9 +539,9 @@
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz",
- "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==",
+ "version": "0.17.14",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.17.14.tgz",
+ "integrity": "sha512-nrfQYWBfLGfSGLvRVlt6xi63B5IbfHm3tZCdu/82zuFPQ7zez4XjmRtF/wIRYbJQ/DsZrxJdEvYFE67avYXyng==",
"cpu": [
"x64"
],
@@ -555,9 +555,9 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz",
- "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==",
+ "version": "0.17.14",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.14.tgz",
+ "integrity": "sha512-eoSjEuDsU1ROwgBH/c+fZzuSyJUVXQTOIN9xuLs9dE/9HbV/A5IqdXHU1p2OfIMwBwOYJ9SFVGGldxeRCUJFyw==",
"cpu": [
"arm64"
],
@@ -571,9 +571,9 @@
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz",
- "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==",
+ "version": "0.17.14",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.17.14.tgz",
+ "integrity": "sha512-zN0U8RWfrDttdFNkHqFYZtOH8hdi22z0pFm0aIJPsNC4QQZv7je8DWCX5iA4Zx6tRhS0CCc0XC2m7wKsbWEo5g==",
"cpu": [
"x64"
],
@@ -587,9 +587,9 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz",
- "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==",
+ "version": "0.17.14",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.14.tgz",
+ "integrity": "sha512-z0VcD4ibeZWVQCW1O7szaLxGsx54gcCnajEJMdYoYjLiq4g1jrP2lMq6pk71dbS5+7op/L2Aod+erw+EUr28/A==",
"cpu": [
"arm64"
],
@@ -603,9 +603,9 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz",
- "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==",
+ "version": "0.17.14",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.14.tgz",
+ "integrity": "sha512-hd9mPcxfTgJlolrPlcXkQk9BMwNBvNBsVaUe5eNUqXut6weDQH8whcNaKNF2RO8NbpT6GY8rHOK2A9y++s+ehw==",
"cpu": [
"x64"
],
@@ -619,9 +619,9 @@
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz",
- "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==",
+ "version": "0.17.14",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.17.14.tgz",
+ "integrity": "sha512-BNTl+wSJ1omsH8s3TkQmIIIQHwvwJrU9u1ggb9XU2KTVM4TmthRIVyxSp2qxROJHhZuW/r8fht46/QE8hU8Qvg==",
"cpu": [
"arm"
],
@@ -635,9 +635,9 @@
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz",
- "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==",
+ "version": "0.17.14",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.17.14.tgz",
+ "integrity": "sha512-FhAMNYOq3Iblcj9i+K0l1Fp/MHt+zBeRu/Qkf0LtrcFu3T45jcwB6A1iMsemQ42vR3GBhjNZJZTaCe3VFPbn9g==",
"cpu": [
"arm64"
],
@@ -651,9 +651,9 @@
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz",
- "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==",
+ "version": "0.17.14",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.17.14.tgz",
+ "integrity": "sha512-91OK/lQ5y2v7AsmnFT+0EyxdPTNhov3y2CWMdizyMfxSxRqHazXdzgBKtlmkU2KYIc+9ZK3Vwp2KyXogEATYxQ==",
"cpu": [
"ia32"
],
@@ -667,9 +667,9 @@
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
- "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
+ "version": "0.17.14",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.17.14.tgz",
+ "integrity": "sha512-vp15H+5NR6hubNgMluqqKza85HcGJgq7t6rMH7O3Y6ApiOWPkvW2AJfNojUQimfTp6OUrACUXfR4hmpcENXoMQ==",
"cpu": [
"loong64"
],
@@ -683,9 +683,9 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz",
- "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==",
+ "version": "0.17.14",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.14.tgz",
+ "integrity": "sha512-90TOdFV7N+fgi6c2+GO9ochEkmm9kBAKnuD5e08GQMgMINOdOFHuYLPQ91RYVrnWwQ5683sJKuLi9l4SsbJ7Hg==",
"cpu": [
"mips64el"
],
@@ -699,9 +699,9 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz",
- "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==",
+ "version": "0.17.14",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.14.tgz",
+ "integrity": "sha512-NnBGeoqKkTugpBOBZZoktQQ1Yqb7aHKmHxsw43NddPB2YWLAlpb7THZIzsRsTr0Xw3nqiPxbA1H31ZMOG+VVPQ==",
"cpu": [
"ppc64"
],
@@ -715,9 +715,9 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz",
- "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==",
+ "version": "0.17.14",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.14.tgz",
+ "integrity": "sha512-0qdlKScLXA8MGVy21JUKvMzCYWovctuP8KKqhtE5A6IVPq4onxXhSuhwDd2g5sRCzNDlDjitc5sX31BzDoL5Fw==",
"cpu": [
"riscv64"
],
@@ -731,9 +731,9 @@
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz",
- "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==",
+ "version": "0.17.14",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.17.14.tgz",
+ "integrity": "sha512-Hdm2Jo1yaaOro4v3+6/zJk6ygCqIZuSDJHdHaf8nVH/tfOuoEX5Riv03Ka15LmQBYJObUTNS1UdyoMk0WUn9Ww==",
"cpu": [
"s390x"
],
@@ -747,9 +747,9 @@
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
- "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
+ "version": "0.17.14",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.17.14.tgz",
+ "integrity": "sha512-8KHF17OstlK4DuzeF/KmSgzrTWQrkWj5boluiiq7kvJCiQVzUrmSkaBvcLB2UgHpKENO2i6BthPkmUhNDaJsVw==",
"cpu": [
"x64"
],
@@ -763,9 +763,9 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz",
- "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==",
+ "version": "0.17.14",
+ "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.14.tgz",
+ "integrity": "sha512-nVwpqvb3yyXztxIT2+VsxJhB5GCgzPdk1n0HHSnchRAcxqKO6ghXwHhJnr0j/B+5FSyEqSxF4q03rbA2fKXtUQ==",
"cpu": [
"x64"
],
@@ -779,9 +779,9 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz",
- "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==",
+ "version": "0.17.14",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.14.tgz",
+ "integrity": "sha512-1RZ7uQQ9zcy/GSAJL1xPdN7NDdOOtNEGiJalg/MOzeakZeTrgH/DoCkbq7TaPDiPhWqnDF+4bnydxRqQD7il6g==",
"cpu": [
"x64"
],
@@ -795,9 +795,9 @@
}
},
"node_modules/@esbuild/sunos-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz",
- "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==",
+ "version": "0.17.14",
+ "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.17.14.tgz",
+ "integrity": "sha512-nqMjDsFwv7vp7msrwWRysnM38Sd44PKmW8EzV01YzDBTcTWUpczQg6mGao9VLicXSgW/iookNK6AxeogNVNDZA==",
"cpu": [
"x64"
],
@@ -811,9 +811,9 @@
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz",
- "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==",
+ "version": "0.17.14",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.17.14.tgz",
+ "integrity": "sha512-xrD0mccTKRBBIotrITV7WVQAwNJ5+1va6L0H9zN92v2yEdjfAN7864cUaZwJS7JPEs53bDTzKFbfqVlG2HhyKQ==",
"cpu": [
"arm64"
],
@@ -827,9 +827,9 @@
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz",
- "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==",
+ "version": "0.17.14",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.17.14.tgz",
+ "integrity": "sha512-nXpkz9bbJrLLyUTYtRotSS3t5b+FOuljg8LgLdINWFs3FfqZMtbnBCZFUmBzQPyxqU87F8Av+3Nco/M3hEcu1w==",
"cpu": [
"ia32"
],
@@ -843,9 +843,9 @@
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz",
- "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==",
+ "version": "0.17.14",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.17.14.tgz",
+ "integrity": "sha512-gPQmsi2DKTaEgG14hc3CHXHp62k8g6qr0Pas+I4lUxRMugGSATh/Bi8Dgusoz9IQ0IfdrvLpco6kujEIBoaogA==",
"cpu": [
"x64"
],
@@ -874,9 +874,9 @@
"dev": true
},
"node_modules/@iconify/utils": {
- "version": "2.1.3",
- "resolved": "https://registry.npmmirror.com/@iconify/utils/-/utils-2.1.3.tgz",
- "integrity": "sha512-4rnzpZ2AWztPKDyWtw+DwJ9uko24it6YS+cnVpZveOrvLErwg22eXcGnIfuMFyECvsfbFhMqZW5YYWHe3CyEEg==",
+ "version": "2.1.5",
+ "resolved": "https://registry.npmmirror.com/@iconify/utils/-/utils-2.1.5.tgz",
+ "integrity": "sha512-6MvDI+I6QMvXn5rK9KQGdpEE4mmLTcuQdLZEiX5N+uZB+vc4Yw9K1OtnOgkl8mp4d9X0UrILREyZgF1NUwUt+Q==",
"dev": true,
"dependencies": {
"@antfu/install-pkg": "^0.1.1",
@@ -1179,9 +1179,9 @@
"dev": true
},
"node_modules/@types/node": {
- "version": "18.14.6",
- "resolved": "https://registry.npmmirror.com/@types/node/-/node-18.14.6.tgz",
- "integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==",
+ "version": "18.15.11",
+ "resolved": "https://registry.npmmirror.com/@types/node/-/node-18.15.11.tgz",
+ "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==",
"dev": true
},
"node_modules/@types/web-bluetooth": {
@@ -1240,9 +1240,9 @@
}
},
"node_modules/@vitejs/plugin-vue": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.0.0.tgz",
- "integrity": "sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.1.0.tgz",
+ "integrity": "sha512-++9JOAFdcXI3lyer9UKUV4rfoQ3T1RN8yDqoCLar86s0xQct5yblxAE+yWgRnU5/0FOlVCpTZpYSBV/bGWrSrQ==",
"dev": true,
"engines": {
"node": "^14.18.0 || >=16.0.0"
@@ -1964,9 +1964,9 @@
"peer": true
},
"node_modules/copy-text-to-clipboard": {
- "version": "3.0.1",
- "resolved": "https://registry.npmmirror.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz",
- "integrity": "sha512-rvVsHrpFcL4F2P8ihsoLdFHmd404+CMg71S756oRSeQgqk51U3kicGdnvfkrxva0xXH92SjGS62B0XIJsbh+9Q==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.1.0.tgz",
+ "integrity": "sha512-PFM6BnjLnOON/lB3ta/Jg7Ywsv+l9kQGD4TWDCSlRBGmqnnTM5MrDkhAFgw+8HZt0wW6Q2BBE4cmy9sq+s9Qng==",
"engines": {
"node": ">=12"
}
@@ -2210,9 +2210,9 @@
}
},
"node_modules/esbuild": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.16.17.tgz",
- "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==",
+ "version": "0.17.14",
+ "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.17.14.tgz",
+ "integrity": "sha512-vOO5XhmVj/1XQR9NQ1UPq6qvMYL7QFJU57J5fKBKBKxp17uDt5PgxFDb4A2nEiXhr1qQs4x0F5+66hVVw4ruNw==",
"dev": true,
"hasInstallScript": true,
"bin": {
@@ -2222,28 +2222,28 @@
"node": ">=12"
},
"optionalDependencies": {
- "@esbuild/android-arm": "0.16.17",
- "@esbuild/android-arm64": "0.16.17",
- "@esbuild/android-x64": "0.16.17",
- "@esbuild/darwin-arm64": "0.16.17",
- "@esbuild/darwin-x64": "0.16.17",
- "@esbuild/freebsd-arm64": "0.16.17",
- "@esbuild/freebsd-x64": "0.16.17",
- "@esbuild/linux-arm": "0.16.17",
- "@esbuild/linux-arm64": "0.16.17",
- "@esbuild/linux-ia32": "0.16.17",
- "@esbuild/linux-loong64": "0.16.17",
- "@esbuild/linux-mips64el": "0.16.17",
- "@esbuild/linux-ppc64": "0.16.17",
- "@esbuild/linux-riscv64": "0.16.17",
- "@esbuild/linux-s390x": "0.16.17",
- "@esbuild/linux-x64": "0.16.17",
- "@esbuild/netbsd-x64": "0.16.17",
- "@esbuild/openbsd-x64": "0.16.17",
- "@esbuild/sunos-x64": "0.16.17",
- "@esbuild/win32-arm64": "0.16.17",
- "@esbuild/win32-ia32": "0.16.17",
- "@esbuild/win32-x64": "0.16.17"
+ "@esbuild/android-arm": "0.17.14",
+ "@esbuild/android-arm64": "0.17.14",
+ "@esbuild/android-x64": "0.17.14",
+ "@esbuild/darwin-arm64": "0.17.14",
+ "@esbuild/darwin-x64": "0.17.14",
+ "@esbuild/freebsd-arm64": "0.17.14",
+ "@esbuild/freebsd-x64": "0.17.14",
+ "@esbuild/linux-arm": "0.17.14",
+ "@esbuild/linux-arm64": "0.17.14",
+ "@esbuild/linux-ia32": "0.17.14",
+ "@esbuild/linux-loong64": "0.17.14",
+ "@esbuild/linux-mips64el": "0.17.14",
+ "@esbuild/linux-ppc64": "0.17.14",
+ "@esbuild/linux-riscv64": "0.17.14",
+ "@esbuild/linux-s390x": "0.17.14",
+ "@esbuild/linux-x64": "0.17.14",
+ "@esbuild/netbsd-x64": "0.17.14",
+ "@esbuild/openbsd-x64": "0.17.14",
+ "@esbuild/sunos-x64": "0.17.14",
+ "@esbuild/win32-arm64": "0.17.14",
+ "@esbuild/win32-ia32": "0.17.14",
+ "@esbuild/win32-x64": "0.17.14"
}
},
"node_modules/escalade": {
@@ -3177,9 +3177,9 @@
}
},
"node_modules/minimatch": {
- "version": "7.4.2",
- "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-7.4.2.tgz",
- "integrity": "sha512-xy4q7wou3vUoC9k1xGTXc+awNdGaGVHtFUaey8tiX4H1QRc04DZ/rmDFwNm2EBsuYEhAZ6SgMmYf3InGY6OauA==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-7.4.3.tgz",
+ "integrity": "sha512-5UB4yYusDtkRPbRiy1cqZ1IpGNcJCGlEMG17RKzPddpyiPKoCdwohbED8g4QXT0ewCt8LTkQXuljsUfQ3FKM4A==",
"dev": true,
"dependencies": {
"brace-expansion": "^2.0.1"
@@ -3243,15 +3243,15 @@
}
},
"node_modules/mlly": {
- "version": "1.1.1",
- "resolved": "https://registry.npmmirror.com/mlly/-/mlly-1.1.1.tgz",
- "integrity": "sha512-Jnlh4W/aI4GySPo6+DyTN17Q75KKbLTyFK8BrGhjNP4rxuUjbRWhE6gHg3bs33URWAF44FRm7gdQA348i3XxRw==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/mlly/-/mlly-1.2.0.tgz",
+ "integrity": "sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==",
"dev": true,
"dependencies": {
"acorn": "^8.8.2",
"pathe": "^1.1.0",
- "pkg-types": "^1.0.1",
- "ufo": "^1.1.0"
+ "pkg-types": "^1.0.2",
+ "ufo": "^1.1.1"
}
},
"node_modules/monaco-editor": {
@@ -3568,9 +3568,9 @@
"integrity": "sha512-KyoXVDU5OqTpG9LXlB3+y639JAGzl8JSBXLn1J9HTSB3gbKcuInga7bZnXLlxmK94ntTs1EFeZp0lrja2AuBYQ=="
},
"node_modules/prettier": {
- "version": "2.8.4",
- "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.8.4.tgz",
- "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==",
+ "version": "2.8.7",
+ "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.8.7.tgz",
+ "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==",
"dev": true,
"bin": {
"prettier": "bin-prettier.js"
@@ -3686,9 +3686,9 @@
}
},
"node_modules/rollup": {
- "version": "3.14.0",
- "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.14.0.tgz",
- "integrity": "sha512-o23sdgCLcLSe3zIplT9nQ1+r97okuaiR+vmAPZPTDYB7/f3tgWIYNyiQveMsZwshBT0is4eGax/HH83Q7CG+/Q==",
+ "version": "3.20.2",
+ "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.20.2.tgz",
+ "integrity": "sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==",
"dev": true,
"bin": {
"rollup": "dist/bin/rollup"
@@ -4051,16 +4051,16 @@
"integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
},
"node_modules/typescript": {
- "version": "4.9.5",
- "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.9.5.tgz",
- "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
+ "version": "5.0.2",
+ "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.0.2.tgz",
+ "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==",
"devOptional": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
- "node": ">=4.2.0"
+ "node": ">=12.20"
}
},
"node_modules/uc.micro": {
@@ -4070,9 +4070,9 @@
"dev": true
},
"node_modules/ufo": {
- "version": "1.1.0",
- "resolved": "https://registry.npmmirror.com/ufo/-/ufo-1.1.0.tgz",
- "integrity": "sha512-LQc2s/ZDMaCN3QLpa+uzHUOQ7SdV0qgv3VBXOolQGXTaaZpIur6PwUclF5nN2hNkiTRcUugXd1zFOW3FLJ135Q==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/ufo/-/ufo-1.1.1.tgz",
+ "integrity": "sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg==",
"dev": true
},
"node_modules/unctx": {
@@ -4122,9 +4122,9 @@
}
},
"node_modules/unplugin": {
- "version": "1.1.0",
- "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-1.1.0.tgz",
- "integrity": "sha512-I8obQ8Rs/hnkxokRV6g8JKOQFgYNnTd9DL58vcSt5IJ9AkK8wbrtsnzD5hi4BJlvcY536JzfEXj9L6h7j559/A==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-1.3.1.tgz",
+ "integrity": "sha512-h4uUTIvFBQRxUKS2Wjys6ivoeofGhxzTe2sRWlooyjHXVttcVfV/JiavNd3d4+jty0SVV0dxGw9AkY9MwiaCEw==",
"dev": true,
"dependencies": {
"acorn": "^8.8.2",
@@ -4134,18 +4134,18 @@
}
},
"node_modules/unplugin-auto-import": {
- "version": "0.15.1",
- "resolved": "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.15.1.tgz",
- "integrity": "sha512-xLS+BfVNy00Y3IkqBmEd0IThvjx8kSGIgSuf/1kETttiENK8sHrDA+poKkQxRCPTKYH4yWM6txGQANPTzwpUWQ==",
+ "version": "0.15.2",
+ "resolved": "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.15.2.tgz",
+ "integrity": "sha512-Wivfu+xccgvEZG8QtZcIvt6napfX9wyOFqM//7FHOtev8+k+dp3ykiqsEl6TODgHmqTTBeQX4Ah1JvRgUNjlkg==",
"dev": true,
"dependencies": {
"@antfu/utils": "^0.7.2",
"@rollup/pluginutils": "^5.0.2",
"local-pkg": "^0.4.3",
"magic-string": "^0.30.0",
- "minimatch": "^7.4.2",
- "unimport": "^3.0.2",
- "unplugin": "^1.1.0"
+ "minimatch": "^7.4.3",
+ "unimport": "^3.0.3",
+ "unplugin": "^1.3.1"
},
"engines": {
"node": ">=14"
@@ -4176,9 +4176,9 @@
}
},
"node_modules/unplugin-auto-import/node_modules/unimport": {
- "version": "3.0.2",
- "resolved": "https://registry.npmmirror.com/unimport/-/unimport-3.0.2.tgz",
- "integrity": "sha512-OQ0hShpcerS1PSsISsyn/NV2dGe5xfdUn4p5nwOodq0iqq5xxYQrTidHqlFGjxIliPDtDJp80OeySzyPTjYHmA==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmmirror.com/unimport/-/unimport-3.0.4.tgz",
+ "integrity": "sha512-eoof/HLiNJcIkVpnqc7sJbzKSLx39J6xTaP7E4ElgVQKeq2t9fPTkvJKcA55IJTaRPkEkDq8kcc/IZPmrypnFg==",
"dev": true,
"dependencies": {
"@rollup/pluginutils": "^5.0.2",
@@ -4186,30 +4186,30 @@
"fast-glob": "^3.2.12",
"local-pkg": "^0.4.3",
"magic-string": "^0.30.0",
- "mlly": "^1.1.1",
+ "mlly": "^1.2.0",
"pathe": "^1.1.0",
"pkg-types": "^1.0.2",
"scule": "^1.0.0",
"strip-literal": "^1.0.1",
- "unplugin": "^1.1.0"
+ "unplugin": "^1.3.1"
}
},
"node_modules/unplugin-icons": {
- "version": "0.15.3",
- "resolved": "https://registry.npmmirror.com/unplugin-icons/-/unplugin-icons-0.15.3.tgz",
- "integrity": "sha512-YWgJqv5AahrokeOnta8uX/m1damZA6Rf6zPClgHg2Fa/45iyOe3Lj+Wn/Ba+CSsq9yBffn17YfKfJNyWCNZPvw==",
+ "version": "0.16.1",
+ "resolved": "https://registry.npmmirror.com/unplugin-icons/-/unplugin-icons-0.16.1.tgz",
+ "integrity": "sha512-qTunFUkpAyDnwzwV7YV1ZgCWRYfLuURcCurhhXOWMy2ipY88qx1pADvral2hJu4Xymh0X0t3Zcll3BIru2AVLQ==",
"dev": true,
"dependencies": {
"@antfu/install-pkg": "^0.1.1",
"@antfu/utils": "^0.7.2",
- "@iconify/utils": "^2.1.2",
+ "@iconify/utils": "^2.1.5",
"debug": "^4.3.4",
"kolorist": "^1.7.0",
"local-pkg": "^0.4.3",
- "unplugin": "^1.0.1"
+ "unplugin": "^1.3.1"
},
"peerDependencies": {
- "@svgr/core": ">=5.5.0",
+ "@svgr/core": ">=7.0.0",
"@vue/compiler-sfc": "^3.0.2 || ^2.7.0",
"vue-template-compiler": "^2.6.12",
"vue-template-es2015-compiler": "^1.9.0"
@@ -4327,15 +4327,15 @@
}
},
"node_modules/vite": {
- "version": "4.1.4",
- "resolved": "https://registry.npmmirror.com/vite/-/vite-4.1.4.tgz",
- "integrity": "sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmmirror.com/vite/-/vite-4.2.1.tgz",
+ "integrity": "sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==",
"dev": true,
"dependencies": {
- "esbuild": "^0.16.14",
+ "esbuild": "^0.17.5",
"postcss": "^8.4.21",
"resolve": "^1.22.1",
- "rollup": "^3.10.0"
+ "rollup": "^3.18.0"
},
"bin": {
"vite": "bin/vite.js"
diff --git a/package.json b/package.json
index 4dbf3e4..7fa083c 100644
--- a/package.json
+++ b/package.json
@@ -17,7 +17,7 @@
"@wangeditor/editor-for-vue": "^5.1.12",
"axios": "1.3.4",
"chart.js": "^4.2.1",
- "copy-text-to-clipboard": "^3.0.1",
+ "copy-text-to-clipboard": "^3.1.0",
"date-fns": "^2.29.3",
"highlight.js": "^11.7.0",
"naive-ui": "^2.34.3",
@@ -30,16 +30,16 @@
},
"devDependencies": {
"@iconify-json/ep": "^1.1.10",
- "@types/node": "^18.14.6",
- "@vitejs/plugin-vue": "^4.0.0",
+ "@types/node": "^18.15.11",
+ "@vitejs/plugin-vue": "^4.1.0",
"markdown-it-shiki": "^0.8.0",
"monaco-editor": "^0.36.1",
- "prettier": "^2.8.4",
- "typescript": "^4.9.5",
- "unplugin-auto-import": "^0.15.1",
- "unplugin-icons": "^0.15.3",
+ "prettier": "^2.8.7",
+ "typescript": "^5.0.2",
+ "unplugin-auto-import": "^0.15.2",
+ "unplugin-icons": "^0.16.1",
"unplugin-vue-components": "^0.24.1",
- "vite": "^4.1.4",
+ "vite": "^4.2.1",
"vite-plugin-vue-markdown": "^0.22.4",
"vue-tsc": "^1.2.0"
}
diff --git a/src/admin/api.ts b/src/admin/api.ts
index 96e759a..b2ba496 100644
--- a/src/admin/api.ts
+++ b/src/admin/api.ts
@@ -16,11 +16,19 @@ export async function getProblemList(
offset = 0,
limit = 10,
keyword: string,
- contestID?: string
+ contestID?: string,
+ ruleType?: "ACM" | "OI"
) {
const endpoint = !!contestID ? "admin/contest/problem" : "admin/problem"
const res = await http.get(endpoint, {
- params: { paging: true, offset, limit, keyword, contest_id: contestID },
+ params: {
+ paging: true,
+ offset,
+ limit,
+ keyword,
+ contest_id: contestID,
+ rule_type: ruleType,
+ },
})
return {
results: res.data.results.map((result: AdminProblem) => ({
@@ -129,3 +137,15 @@ export function getContest(id: string) {
params: { id },
})
}
+
+export function addProblemForContest(
+ contestID: string,
+ problemID: number,
+ displayID: string
+) {
+ return http.post("admin/contest/add_problem_from_public", {
+ contest_id: contestID,
+ problem_id: problemID,
+ display_id: displayID,
+ })
+}
diff --git a/src/admin/contest/components/Actions.vue b/src/admin/contest/components/Actions.vue
index 5a6508d..ec969b9 100644
--- a/src/admin/contest/components/Actions.vue
+++ b/src/admin/contest/components/Actions.vue
@@ -23,12 +23,12 @@ function goEditProblems() {
-
- 编辑
-
-
+
题目
+
+ 编辑
+
diff --git a/src/admin/problem/components/Actions.vue b/src/admin/problem/components/Actions.vue
index 62baa4c..5122d8c 100644
--- a/src/admin/problem/components/Actions.vue
+++ b/src/admin/problem/components/Actions.vue
@@ -41,7 +41,16 @@ function goEdit() {
}
function goCheck() {
- const data = router.resolve("/problem/" + props.problemDisplayID)
+ let data = router.resolve("/problem/" + props.problemDisplayID)
+ if (route.name === "admin contest problem list") {
+ data = router.resolve({
+ name: "contest problem",
+ params: {
+ contestID: route.params.contestID,
+ problemID: props.problemDisplayID,
+ },
+ })
+ }
window.open(data.href, "_blank")
}
diff --git a/src/admin/problem/components/AddButton.vue b/src/admin/problem/components/AddButton.vue
new file mode 100644
index 0000000..680af91
--- /dev/null
+++ b/src/admin/problem/components/AddButton.vue
@@ -0,0 +1,44 @@
+
+
+
+
+ +
+
+
+ 请输入在这场比赛中的显示编号
+
+
+
+
+
diff --git a/src/admin/problem/components/Modal.vue b/src/admin/problem/components/Modal.vue
new file mode 100644
index 0000000..0c6e6fb
--- /dev/null
+++ b/src/admin/problem/components/Modal.vue
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/admin/problem/list.vue b/src/admin/problem/list.vue
index fe5007f..5b299b3 100644
--- a/src/admin/problem/list.vue
+++ b/src/admin/problem/list.vue
@@ -5,12 +5,29 @@ import { DataTableColumn, NSwitch } from "naive-ui"
import { AdminProblemFiltered } from "~/utils/types"
import { parseTime } from "~/utils/functions"
import Actions from "./components/Actions.vue"
+import Modal from "./components/Modal.vue"
interface Props {
contestID?: string
}
const props = defineProps()
+const route = useRoute()
+const router = useRouter()
+
+const title = computed(
+ () =>
+ ({
+ "admin problem list": "题目列表",
+ "admin contest problem list": "比赛题目列表",
+ }[route.name])
+)
+const isContestProblemList = computed(
+ () => route.name === "admin contest problem list"
+)
+
+const [show, toggleShow] = useToggle()
+const { count, inc } = useCounter(0)
const total = ref(0)
const problems = ref([])
const query = reactive({
@@ -78,14 +95,34 @@ async function toggleVisible(problemID: number) {
})
}
+function createContestProblem() {
+ router.push({
+ name: "admin contest problem create",
+ params: { contestID: props.contestID },
+ })
+}
+
+async function selectProblems() {
+ toggleShow(true)
+ inc()
+}
+
onMounted(listProblems)
watch(query, listProblems, { deep: true })
- 题目列表
-
+ {{ title }}
+
+
+ 新建比赛题目
+
+
+ 从题库中选择
+
+
+
+