From c11c3cf226c0c9c8c70f0bab5aa45ad59430ee82 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Thu, 7 May 2026 03:42:38 -0600 Subject: [PATCH] fix mermaid --- package-lock.json | 201 ++---------- package.json | 1 + .../problem/components/ProblemFlowchart.vue | 16 +- src/shared/components/MermaidEditor.vue | 101 ++---- src/shared/composables/useMermaid.ts | 303 ++++++------------ tsconfig.app.json | 6 + 6 files changed, 156 insertions(+), 472 deletions(-) diff --git a/package-lock.json b/package-lock.json index ad6d74d..e86f91e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -50,6 +50,7 @@ "@rsbuild/plugin-vue": "^1.2.7", "@types/canvas-confetti": "^1.9.0", "@types/node": "^25.6.0", + "@vue/tsconfig": "^0.9.1", "prettier": "^3.8.3", "typescript": "^6.0.3", "unplugin-auto-import": "^21.0.0", @@ -959,25 +960,6 @@ "@module-federation/sdk": "0.22.0" } }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", - "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@tybys/wasm-util": "^0.10.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1" - } - }, "node_modules/@rsbuild/core": { "version": "1.7.5", "resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-1.7.5.tgz", @@ -1211,168 +1193,6 @@ } } }, - "node_modules/@rspack/binding": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-2.0.2.tgz", - "integrity": "sha512-0kZPplW9GWx8mfC6DfsaRY3QBIYPuUs42JfmSM6aSb8tMHZAXQeLeMB8M+h8i4SeI+aFtCgO6UuYGtyWf7+L+A==", - "dev": true, - "license": "MIT", - "optional": true, - "optionalDependencies": { - "@rspack/binding-darwin-arm64": "2.0.2", - "@rspack/binding-darwin-x64": "2.0.2", - "@rspack/binding-linux-arm64-gnu": "2.0.2", - "@rspack/binding-linux-arm64-musl": "2.0.2", - "@rspack/binding-linux-x64-gnu": "2.0.2", - "@rspack/binding-linux-x64-musl": "2.0.2", - "@rspack/binding-wasm32-wasi": "2.0.2", - "@rspack/binding-win32-arm64-msvc": "2.0.2", - "@rspack/binding-win32-ia32-msvc": "2.0.2", - "@rspack/binding-win32-x64-msvc": "2.0.2" - } - }, - "node_modules/@rspack/binding-darwin-arm64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-2.0.2.tgz", - "integrity": "sha512-0o7lbgBBsDlICWdjIH0q3e0BsSco4GRiImHWVfZSVEG+q2+ykZJvSvYCVhPM1Co375Z0S3VMPa/8SjcY1FHwlw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rspack/binding-darwin-x64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-2.0.2.tgz", - "integrity": "sha512-tOwxZpoPlTlRs/w6UyUinXJ4TYRVHMlR7+eQxO1R3muKpixvhXQjtvoaY16HuFyTVky5F0IfOoWr3x9FEsgdLg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rspack/binding-linux-arm64-gnu": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-2.0.2.tgz", - "integrity": "sha512-1ZD4YFhG1rmgqj+W8hfwHyKV8xDxGsc/3KgU0FwmiVEX7JfzhCkgBO/xlCG79kRKSrzuVzt4icO/G3cCKn0pag==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-linux-arm64-musl": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-2.0.2.tgz", - "integrity": "sha512-/PtTkM/DsDLjeuXTmeJeRfbjCDbcL9jvoVgZrgxYFZ28y2cdLvbChbW9uigOzs5dQEs1CIBQXMTTj7KhdBTuQg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-linux-x64-gnu": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-2.0.2.tgz", - "integrity": "sha512-bBjsZxMHRaPo6X9SokApm6ucs+UhXtAJFyJJyuk2BH4XJsLeCU9Dz1vMwioeohFbJUUeTASVPm6/BL+RhSaunw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-linux-x64-musl": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-2.0.2.tgz", - "integrity": "sha512-HjlpInqzabDNkhVsUJpsHPqa9QYVWBViJoyWNjzXCAW0vKMDvwaphyUvokSinX8FGTlZi/sr5UEaHJo6XtQ35g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-wasm32-wasi": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-2.0.2.tgz", - "integrity": "sha512-YaRYNFLJRpkGfYjSWR7n9f+nQKtrlmrrffpAn/blc2geHcRvXoBc5SCs1idPtsLhj7H9qWWhs7ucjyHy4csWFg==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "1.10.0", - "@emnapi/runtime": "1.10.0", - "@napi-rs/wasm-runtime": "1.1.4" - } - }, - "node_modules/@rspack/binding-win32-arm64-msvc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-2.0.2.tgz", - "integrity": "sha512-d/3kTEKq+asLjRFPO96t+wfWiM7DLN76VQEPDD9bc1kdsZXlVJBuvyXfsgK8bbEvKplWXYcSsokhmEnuXrLOpg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rspack/binding-win32-ia32-msvc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-2.0.2.tgz", - "integrity": "sha512-161cWineq3RW+Jdm1FAfSpXeUtYWvhB3kAbm46vNT9h/YYz+spwsFMvveAZ1nsVSVL0IC5lDBGUte7yUAY8K2g==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rspack/binding-win32-x64-msvc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-2.0.2.tgz", - "integrity": "sha512-y7Q0S1FE+OlkL5GMqLG0PwxrPw6E1r892KhGrGKE1Vdufe5YTEx6xTPxzZ+b7N2KPD7s9G1/iJmWHQxb1+Bjkg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, "node_modules/@rspack/lite-tapable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.1.0.tgz", @@ -2215,6 +2035,25 @@ "integrity": "sha512-24uqU4OIiX29ryC3MeWid/Xf2fa2EFRUVLb77nRhk+UrTVrh/XiGtFAFmJBAtBRbjwNdsPRP+jj/OL27Eg1NDA==", "license": "MIT" }, + "node_modules/@vue/tsconfig": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.9.1.tgz", + "integrity": "sha512-buvjm+9NzLCJL29KY1j1991YYJ5e6275OiK+G4jtmfIb+z4POywbdm0wXusT9adVWqe0xqg70TbI7+mRx4uU9w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "typescript": ">= 5.8", + "vue": "^3.4.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vue": { + "optional": true + } + } + }, "node_modules/@vueuse/core": { "version": "14.3.0", "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-14.3.0.tgz", diff --git a/package.json b/package.json index 81bfa52..753e195 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,7 @@ "@rsbuild/plugin-vue": "^1.2.7", "@types/canvas-confetti": "^1.9.0", "@types/node": "^25.6.0", + "@vue/tsconfig": "^0.9.1", "prettier": "^3.8.3", "typescript": "^6.0.3", "unplugin-auto-import": "^21.0.0", diff --git a/src/oj/problem/components/ProblemFlowchart.vue b/src/oj/problem/components/ProblemFlowchart.vue index 0ab5199..0ec970d 100644 --- a/src/oj/problem/components/ProblemFlowchart.vue +++ b/src/oj/problem/components/ProblemFlowchart.vue @@ -6,20 +6,18 @@ const problemStore = useProblemStore() const { problem } = storeToRefs(problemStore) const mermaidContainer = useTemplateRef("mermaidContainer") -// 使用 mermaid composable const { renderError, renderFlowchart } = useMermaid() -// 渲染流程图的函数 const renderProblemFlowchart = async () => { - if (problem.value?.mermaid_code) { - await renderFlowchart(mermaidContainer.value, problem.value.mermaid_code) - } + await renderFlowchart( + mermaidContainer.value, + problem.value?.mermaid_code ?? "", + ) } -// 初始化Mermaid并渲染 -onMounted(() => { - renderProblemFlowchart() -}) +onMounted(renderProblemFlowchart) + +watch(() => problem.value?.mermaid_code, renderProblemFlowchart)