diff --git a/package-lock.json b/package-lock.json
index fc60e18b..7718fb8c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,6 +9,8 @@
"version": "1.0.0",
"license": "GPL",
"dependencies": {
+ "@codemirror/lang-html": "^6.4.9",
+ "@codemirror/theme-one-dark": "^6.1.2",
"@types/katex": "0.16.7",
"@types/three": "0.161.2",
"@vue/repl": "3.4.0",
@@ -18,6 +20,7 @@
"artplayer": "5.1.1",
"axios": "1.6.7",
"chart.js": "4.4.1",
+ "codemirror": "^6.0.1",
"dash": "3.25.22",
"echarts": "5.4.3",
"express": "^4.19.2",
@@ -25,6 +28,7 @@
"hls.js": "1.5.3",
"katex": "0.16.9",
"log4js": "^6.9.1",
+ "markmap-common": "^0.17.0",
"markmap-lib": "^0.15.8",
"markmap-toolbar": "^0.15.8",
"markmap-view": "^0.15.8",
@@ -38,6 +42,7 @@
"twikoo": "^1.6.31",
"vidstack": "0.6.14",
"vue": "^3.4.15",
+ "vue-codemirror": "^6.1.1",
"vuepress": "2.0.0-rc.6",
"vuepress-plugin-copy-code2": "2.0.0-rc.16",
"vuepress-plugin-pwa2": "2.0.0-rc.22",
@@ -1780,6 +1785,135 @@
"resolved": "https://registry.npmmirror.com/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz",
"integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A=="
},
+ "node_modules/@codemirror/autocomplete": {
+ "version": "6.16.0",
+ "resolved": "https://registry.npmmirror.com/@codemirror/autocomplete/-/autocomplete-6.16.0.tgz",
+ "integrity": "sha512-P/LeCTtZHRTCU4xQsa89vSKWecYv1ZqwzOd5topheGRf+qtacFgBeIMQi3eL8Kt/BUNvxUWkx+5qP2jlGoARrg==",
+ "dependencies": {
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.17.0",
+ "@lezer/common": "^1.0.0"
+ },
+ "peerDependencies": {
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.0.0",
+ "@lezer/common": "^1.0.0"
+ }
+ },
+ "node_modules/@codemirror/commands": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmmirror.com/@codemirror/commands/-/commands-6.5.0.tgz",
+ "integrity": "sha512-rK+sj4fCAN/QfcY9BEzYMgp4wwL/q5aj/VfNSoH1RWPF9XS/dUwBkvlL3hpWgEjOqlpdN1uLC9UkjJ4tmyjJYg==",
+ "dependencies": {
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/state": "^6.4.0",
+ "@codemirror/view": "^6.0.0",
+ "@lezer/common": "^1.1.0"
+ }
+ },
+ "node_modules/@codemirror/lang-css": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmmirror.com/@codemirror/lang-css/-/lang-css-6.2.1.tgz",
+ "integrity": "sha512-/UNWDNV5Viwi/1lpr/dIXJNWiwDxpw13I4pTUAsNxZdg6E0mI2kTQb0P2iHczg1Tu+H4EBgJR+hYhKiHKko7qg==",
+ "dependencies": {
+ "@codemirror/autocomplete": "^6.0.0",
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/state": "^6.0.0",
+ "@lezer/common": "^1.0.2",
+ "@lezer/css": "^1.0.0"
+ }
+ },
+ "node_modules/@codemirror/lang-html": {
+ "version": "6.4.9",
+ "resolved": "https://registry.npmmirror.com/@codemirror/lang-html/-/lang-html-6.4.9.tgz",
+ "integrity": "sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q==",
+ "dependencies": {
+ "@codemirror/autocomplete": "^6.0.0",
+ "@codemirror/lang-css": "^6.0.0",
+ "@codemirror/lang-javascript": "^6.0.0",
+ "@codemirror/language": "^6.4.0",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.17.0",
+ "@lezer/common": "^1.0.0",
+ "@lezer/css": "^1.1.0",
+ "@lezer/html": "^1.3.0"
+ }
+ },
+ "node_modules/@codemirror/lang-javascript": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmmirror.com/@codemirror/lang-javascript/-/lang-javascript-6.2.2.tgz",
+ "integrity": "sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==",
+ "dependencies": {
+ "@codemirror/autocomplete": "^6.0.0",
+ "@codemirror/language": "^6.6.0",
+ "@codemirror/lint": "^6.0.0",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.17.0",
+ "@lezer/common": "^1.0.0",
+ "@lezer/javascript": "^1.0.0"
+ }
+ },
+ "node_modules/@codemirror/language": {
+ "version": "6.10.1",
+ "resolved": "https://registry.npmmirror.com/@codemirror/language/-/language-6.10.1.tgz",
+ "integrity": "sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ==",
+ "dependencies": {
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.23.0",
+ "@lezer/common": "^1.1.0",
+ "@lezer/highlight": "^1.0.0",
+ "@lezer/lr": "^1.0.0",
+ "style-mod": "^4.0.0"
+ }
+ },
+ "node_modules/@codemirror/lint": {
+ "version": "6.7.1",
+ "resolved": "https://registry.npmmirror.com/@codemirror/lint/-/lint-6.7.1.tgz",
+ "integrity": "sha512-rELba6QJD20/bNXWP/cKTGLrwVEcpa2ViwULCV03ONcY1Je85++7sczVRUlnE4TJMjatx3IJTz6HX4NXi+moXw==",
+ "dependencies": {
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.0.0",
+ "crelt": "^1.0.5"
+ }
+ },
+ "node_modules/@codemirror/search": {
+ "version": "6.5.6",
+ "resolved": "https://registry.npmmirror.com/@codemirror/search/-/search-6.5.6.tgz",
+ "integrity": "sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==",
+ "dependencies": {
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.0.0",
+ "crelt": "^1.0.5"
+ }
+ },
+ "node_modules/@codemirror/state": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmmirror.com/@codemirror/state/-/state-6.4.1.tgz",
+ "integrity": "sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A=="
+ },
+ "node_modules/@codemirror/theme-one-dark": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmmirror.com/@codemirror/theme-one-dark/-/theme-one-dark-6.1.2.tgz",
+ "integrity": "sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==",
+ "dependencies": {
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.0.0",
+ "@lezer/highlight": "^1.0.0"
+ }
+ },
+ "node_modules/@codemirror/view": {
+ "version": "6.26.3",
+ "resolved": "https://registry.npmmirror.com/@codemirror/view/-/view-6.26.3.tgz",
+ "integrity": "sha512-gmqxkPALZjkgSxIeeweY/wGQXBfwTUaLs8h7OKtSwfbj9Ct3L11lD+u1sS7XHppxFQoMDiMDp07P9f3I2jWOHw==",
+ "dependencies": {
+ "@codemirror/state": "^6.4.0",
+ "style-mod": "^4.1.0",
+ "w3c-keyname": "^2.2.4"
+ }
+ },
"node_modules/@colors/colors": {
"version": "1.6.0",
"resolved": "https://registry.npmmirror.com/@colors/colors/-/colors-1.6.0.tgz",
@@ -2522,6 +2656,57 @@
"resolved": "https://registry.npmmirror.com/@kurkle/color/-/color-0.3.2.tgz",
"integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw=="
},
+ "node_modules/@lezer/common": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/@lezer/common/-/common-1.2.1.tgz",
+ "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ=="
+ },
+ "node_modules/@lezer/css": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmmirror.com/@lezer/css/-/css-1.1.8.tgz",
+ "integrity": "sha512-7JhxupKuMBaWQKjQoLtzhGj83DdnZY9MckEOG5+/iLKNK2ZJqKc6hf6uc0HjwCX7Qlok44jBNqZhHKDhEhZYLA==",
+ "dependencies": {
+ "@lezer/common": "^1.2.0",
+ "@lezer/highlight": "^1.0.0",
+ "@lezer/lr": "^1.0.0"
+ }
+ },
+ "node_modules/@lezer/highlight": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@lezer/highlight/-/highlight-1.2.0.tgz",
+ "integrity": "sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==",
+ "dependencies": {
+ "@lezer/common": "^1.0.0"
+ }
+ },
+ "node_modules/@lezer/html": {
+ "version": "1.3.9",
+ "resolved": "https://registry.npmmirror.com/@lezer/html/-/html-1.3.9.tgz",
+ "integrity": "sha512-MXxeCMPyrcemSLGaTQEZx0dBUH0i+RPl8RN5GwMAzo53nTsd/Unc/t5ZxACeQoyPUM5/GkPLRUs2WliOImzkRA==",
+ "dependencies": {
+ "@lezer/common": "^1.2.0",
+ "@lezer/highlight": "^1.0.0",
+ "@lezer/lr": "^1.0.0"
+ }
+ },
+ "node_modules/@lezer/javascript": {
+ "version": "1.4.16",
+ "resolved": "https://registry.npmmirror.com/@lezer/javascript/-/javascript-1.4.16.tgz",
+ "integrity": "sha512-84UXR3N7s11MPQHWgMnjb9571fr19MmXnr5zTv2XX0gHXXUvW3uPJ8GCjKrfTXmSdfktjRK0ayKklw+A13rk4g==",
+ "dependencies": {
+ "@lezer/common": "^1.2.0",
+ "@lezer/highlight": "^1.1.3",
+ "@lezer/lr": "^1.3.0"
+ }
+ },
+ "node_modules/@lezer/lr": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/@lezer/lr/-/lr-1.4.0.tgz",
+ "integrity": "sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==",
+ "dependencies": {
+ "@lezer/common": "^1.0.0"
+ }
+ },
"node_modules/@lit-labs/ssr-dom-shim": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz",
@@ -3374,18 +3559,6 @@
"android"
]
},
- "node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.17.2",
- "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.2.tgz",
- "integrity": "sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "darwin"
- ]
- },
"node_modules/@rollup/rollup-darwin-x64": {
"version": "4.17.2",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.17.2.tgz",
@@ -4035,6 +4208,7 @@
},
"node_modules/@types/three": {
"version": "0.161.2",
+ "resolved": "https://registry.npmmirror.com/@types/three/-/three-0.161.2.tgz",
"integrity": "sha512-DazpZ+cIfBzbW/p0zm6G8CS03HBMd748A3R1ZOXHpqaXZLv2I5zNgQUrRG//UfJ6zYFp2cUoCQaOLaz8ubH07w==",
"dependencies": {
"@types/stats.js": "*",
@@ -4146,6 +4320,7 @@
},
"node_modules/@vue/repl": {
"version": "3.4.0",
+ "resolved": "https://registry.npmmirror.com/@vue/repl/-/repl-3.4.0.tgz",
"integrity": "sha512-iHhIsmQsp9PJuOwverCRQC2owFb0FSFzk6YWwyirAX6AqH//2FrUV4WB16f9lGX5pDXAHjxlzAE6Lqf9P17HHA=="
},
"node_modules/@vue/runtime-core": {
@@ -4186,6 +4361,7 @@
},
"node_modules/@vuepress/bundler-vite": {
"version": "2.0.0-rc.6",
+ "resolved": "https://registry.npmmirror.com/@vuepress/bundler-vite/-/bundler-vite-2.0.0-rc.6.tgz",
"integrity": "sha512-QPODaSRMBxPrgEI8YWxrKXqgR0IdKdOwzdVhCWxmfzDssV9ch5eXDcuogyo3j/1kwPJ0U+g69JgTL2XAznQj2A==",
"dependencies": {
"@vitejs/plugin-vue": "^5.0.3",
@@ -4237,6 +4413,18 @@
"fsevents": "~2.3.2"
}
},
+ "node_modules/@vuepress/bundler-vite/node_modules/rollup/node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.17.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.2.tgz",
+ "integrity": "sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
"node_modules/@vuepress/cli": {
"version": "2.0.0-rc.6",
"resolved": "https://registry.npmmirror.com/@vuepress/cli/-/cli-2.0.0-rc.6.tgz",
@@ -4486,6 +4674,7 @@
},
"node_modules/@vuepress/plugin-feed": {
"version": "2.0.0-rc.3",
+ "resolved": "https://registry.npmmirror.com/@vuepress/plugin-feed/-/plugin-feed-2.0.0-rc.3.tgz",
"integrity": "sha512-kcuJ+LfDQOxnL8p5x9cTODIuSba7oflcjLu9ECYi2l9K3NWAXvh/Jp0FLeaYd8VZBH+ODWfdvY6ifKGCqgY4Kw==",
"dependencies": {
"@vuepress/helper": "2.0.0-rc.3",
@@ -5004,6 +5193,7 @@
},
"node_modules/artplayer": {
"version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/artplayer/-/artplayer-5.1.1.tgz",
"integrity": "sha512-pZ2/lB+Oo3g0CVLqkFuB86bMBPMtZaABaq5e1LPKubYDBW46+mzin2wzdVmk3tvFyfQoVnb+MBFU7nJYvI3qNg==",
"dependencies": {
"option-validator": "^2.0.6"
@@ -5070,6 +5260,7 @@
},
"node_modules/axios": {
"version": "1.6.7",
+ "resolved": "https://registry.npmmirror.com/axios/-/axios-1.6.7.tgz",
"integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==",
"dependencies": {
"follow-redirects": "^1.15.4",
@@ -5434,6 +5625,7 @@
},
"node_modules/chart.js": {
"version": "4.4.1",
+ "resolved": "https://registry.npmmirror.com/chart.js/-/chart.js-4.4.1.tgz",
"integrity": "sha512-C74QN1bxwV1v2PEujhmKjOZ7iUM4w6BWs23Md/6aOZZSlwMzeCIDGuZay++rBgChYru7/+QFeoQW0fQoP534Dg==",
"dependencies": {
"@kurkle/color": "^0.3.0"
@@ -5586,6 +5778,20 @@
"mimic-response": "^1.0.0"
}
},
+ "node_modules/codemirror": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/codemirror/-/codemirror-6.0.1.tgz",
+ "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==",
+ "dependencies": {
+ "@codemirror/autocomplete": "^6.0.0",
+ "@codemirror/commands": "^6.0.0",
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/lint": "^6.0.0",
+ "@codemirror/search": "^6.0.0",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.0.0"
+ }
+ },
"node_modules/color": {
"version": "3.2.1",
"resolved": "https://registry.npmmirror.com/color/-/color-3.2.1.tgz",
@@ -5783,6 +5989,11 @@
"sha.js": "^2.4.8"
}
},
+ "node_modules/crelt": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/crelt/-/crelt-1.0.6.tgz",
+ "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g=="
+ },
"node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -6299,6 +6510,7 @@
},
"node_modules/dash": {
"version": "3.25.22",
+ "resolved": "https://registry.npmmirror.com/dash/-/dash-3.25.22.tgz",
"integrity": "sha512-hshtSnsE2pVVx88CviDTAARLOjKmVHi3Qrp4CRcNLYe/h41RMVkIm0jDGMoCHS8pbbN5rPizPRoocpDwjm9DZg==",
"dependencies": {
"@dashevo/bls": "~1.2.9",
@@ -6630,6 +6842,7 @@
},
"node_modules/echarts": {
"version": "5.4.3",
+ "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.4.3.tgz",
"integrity": "sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==",
"dependencies": {
"tslib": "2.3.0",
@@ -7111,6 +7324,7 @@
},
"node_modules/express": {
"version": "4.19.2",
+ "resolved": "https://registry.npmmirror.com/express/-/express-4.19.2.tgz",
"integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
"dependencies": {
"accepts": "~1.3.8",
@@ -7300,6 +7514,7 @@
},
"node_modules/flowchart.ts": {
"version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/flowchart.ts/-/flowchart.ts-3.0.0.tgz",
"integrity": "sha512-yD+0wVJHvV6SutpNpao5S0hQp+7tnPuETtPORIodGEuUAP8LzegVVSUy+NFDWU9pUO2F1E+PikBD83PddoCfnw==",
"dependencies": {
"@types/raphael": "^2.3.9",
@@ -7771,6 +7986,7 @@
},
"node_modules/hls.js": {
"version": "1.5.3",
+ "resolved": "https://registry.npmmirror.com/hls.js/-/hls.js-1.5.3.tgz",
"integrity": "sha512-gonnYpZ5bxuVdwpcbzfylUlNZ8917LjACUjpWXiaeo8zPAIDfPcMZjEQPy6CeeRSJbcg1P+aVqwxrXr2J+SeUg=="
},
"node_modules/hmac-drbg": {
@@ -8602,6 +8818,7 @@
},
"node_modules/log4js": {
"version": "6.9.1",
+ "resolved": "https://registry.npmmirror.com/log4js/-/log4js-6.9.1.tgz",
"integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==",
"dependencies": {
"date-format": "^4.0.14",
@@ -8714,7 +8931,6 @@
"version": "0.17.0",
"resolved": "https://registry.npmmirror.com/markmap-common/-/markmap-common-0.17.0.tgz",
"integrity": "sha512-3tuU6PxjrQxivZD18czJKcGKTTRJKMNne1bBflcHqu7yASznJRBM80CC4DzIVGiAb74hTuX8tTfkEQUMu0yKMg==",
- "peer": true,
"dependencies": {
"@babel/runtime": "^7.22.6",
"@gera2ld/jsx-dom": "^2.2.2",
@@ -8723,6 +8939,7 @@
},
"node_modules/markmap-lib": {
"version": "0.15.8",
+ "resolved": "https://registry.npmmirror.com/markmap-lib/-/markmap-lib-0.15.8.tgz",
"integrity": "sha512-A3B1YTpn9zgLXTGjJ7QpenXU86AhlO0y+RRsQzReIAuQjPpUsZYQYpwmQcft0IP4/BCyVWGJonTSKCCpy3PUCQ==",
"dependencies": {
"@babel/runtime": "^7.22.6",
@@ -8755,6 +8972,7 @@
},
"node_modules/markmap-toolbar": {
"version": "0.15.8",
+ "resolved": "https://registry.npmmirror.com/markmap-toolbar/-/markmap-toolbar-0.15.8.tgz",
"integrity": "sha512-C8M/RtIdfxwpfAC70HZ9iNzjC8p8G3KKIY0Yt4etpYyPOln2dRGosEkFvFmwT7GQIva//GyFu2zulYWm2EQTfg==",
"dependencies": {
"@babel/runtime": "^7.22.6",
@@ -8766,6 +8984,7 @@
},
"node_modules/markmap-view": {
"version": "0.15.8",
+ "resolved": "https://registry.npmmirror.com/markmap-view/-/markmap-view-0.15.8.tgz",
"integrity": "sha512-/QrVf2cxgsMUEO256SQd9w1VykT4XTF6cJwUHiUO/dF4UjyIkTQ2TMzhoVGjj2XzppQtS2mjXcjPq2ePX16RUA==",
"dependencies": {
"@babel/runtime": "^7.22.6",
@@ -8927,6 +9146,7 @@
},
"node_modules/mermaid": {
"version": "10.8.0",
+ "resolved": "https://registry.npmmirror.com/mermaid/-/mermaid-10.8.0.tgz",
"integrity": "sha512-9CzfSreRjdDJxX796+jW4zjEq0DVw5xVF0nWsqff8OTbrt+ml0TZ5PyYUjjUZJa2NYxYJZZXewEquxGiM8qZEA==",
"dependencies": {
"@braintree/sanitize-url": "^6.0.1",
@@ -9242,6 +9462,7 @@
},
"node_modules/mini-sandbox": {
"version": "0.3.18",
+ "resolved": "https://registry.npmmirror.com/mini-sandbox/-/mini-sandbox-0.3.18.tgz",
"integrity": "sha512-GYPcj9YcPyfFL1IpEK7W+ceC1Qwn3KpNjfdzXYoyOTprpVrB2dFhKCiR2nUNxHpz9Jldn6R0a4/K9jIWcYb6Pg=="
},
"node_modules/minimalistic-assert": {
@@ -9462,8 +9683,7 @@
"node_modules/npm2url": {
"version": "0.2.4",
"resolved": "https://registry.npmmirror.com/npm2url/-/npm2url-0.2.4.tgz",
- "integrity": "sha512-arzGp/hQz0Ey+ZGhF64XVH7Xqwd+1Q/po5uGiBbzph8ebX6T0uvt3N7c1nBHQNsQVykQgHhqoRTX7JFcHecGuw==",
- "peer": true
+ "integrity": "sha512-arzGp/hQz0Ey+ZGhF64XVH7Xqwd+1Q/po5uGiBbzph8ebX6T0uvt3N7c1nBHQNsQVykQgHhqoRTX7JFcHecGuw=="
},
"node_modules/nth-check": {
"version": "2.1.1",
@@ -9768,6 +9988,7 @@
},
"node_modules/plyr": {
"version": "3.7.8",
+ "resolved": "https://registry.npmmirror.com/plyr/-/plyr-3.7.8.tgz",
"integrity": "sha512-yG/EHDobwbB/uP+4Bm6eUpJ93f8xxHjjk2dYcD1Oqpe1EcuQl5tzzw9Oq+uVAzd2lkM11qZfydSiyIpiB8pgdA==",
"dependencies": {
"core-js": "^3.26.1",
@@ -10379,6 +10600,7 @@
},
"node_modules/reveal.js": {
"version": "5.0.4",
+ "resolved": "https://registry.npmmirror.com/reveal.js/-/reveal.js-5.0.4.tgz",
"integrity": "sha512-480pVhre9SXWuE4QbDwG0nPrip3TkifflqaKQWF8Ynf4iYIUBfgu5leeMso0srubQsZQ+G2OzktAfAkrvBY0Ww==",
"engines": {
"node": ">=18.0.0"
@@ -10607,6 +10829,7 @@
},
"node_modules/serve-index": {
"version": "1.9.1",
+ "resolved": "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz",
"integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
"dependencies": {
"accepts": "~1.3.4",
@@ -10837,6 +11060,7 @@
},
"node_modules/socket.io": {
"version": "4.7.5",
+ "resolved": "https://registry.npmmirror.com/socket.io/-/socket.io-4.7.5.tgz",
"integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==",
"dependencies": {
"accepts": "~1.3.4",
@@ -11194,6 +11418,11 @@
"node": ">=8"
}
},
+ "node_modules/style-mod": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/style-mod/-/style-mod-4.1.2.tgz",
+ "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw=="
+ },
"node_modules/stylis": {
"version": "4.3.1",
"resolved": "https://registry.npmmirror.com/stylis/-/stylis-4.3.1.tgz",
@@ -11313,6 +11542,7 @@
},
"node_modules/three": {
"version": "0.161.0",
+ "resolved": "https://registry.npmmirror.com/three/-/three-0.161.0.tgz",
"integrity": "sha512-LC28VFtjbOyEu5b93K0bNRLw1rQlMJ85lilKsYj6dgTu+7i17W+JCCEbvrpmNHF1F3NAUqDSWq50UD7w9H2xQw=="
},
"node_modules/tinylogic": {
@@ -11448,6 +11678,7 @@
},
"node_modules/twikoo": {
"version": "1.6.32",
+ "resolved": "https://registry.npmmirror.com/twikoo/-/twikoo-1.6.32.tgz",
"integrity": "sha512-CWg/hUPWyiKvh4HHvU067mxXrBhZ8ZT7WzNbE3/s0wQzKQh1gOf/aBg7g+MhNyHFx9VC9tuzlGVrp5EK/GY5vw=="
},
"node_modules/typanion": {
@@ -11745,6 +11976,7 @@
},
"node_modules/vidstack": {
"version": "0.6.14",
+ "resolved": "https://registry.npmmirror.com/vidstack/-/vidstack-0.6.14.tgz",
"integrity": "sha512-JxM11ya75T9KefRqUXw4Tm1cNGMdtvebSK/mqjT9vBMwtfVesgSdT4oeW8kVuhQDixXOEb/OOldB1qOBycLHag==",
"dependencies": {
"maverick.js": "0.37.0",
@@ -11848,6 +12080,18 @@
"fsevents": "~2.3.2"
}
},
+ "node_modules/vite/node_modules/rollup/node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.17.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.2.tgz",
+ "integrity": "sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
"node_modules/vue": {
"version": "3.4.27",
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.4.27.tgz",
@@ -11868,6 +12112,21 @@
}
}
},
+ "node_modules/vue-codemirror": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmmirror.com/vue-codemirror/-/vue-codemirror-6.1.1.tgz",
+ "integrity": "sha512-rTAYo44owd282yVxKtJtnOi7ERAcXTeviwoPXjIc6K/IQYUsoDkzPvw/JDFtSP6T7Cz/2g3EHaEyeyaQCKoDMg==",
+ "dependencies": {
+ "@codemirror/commands": "6.x",
+ "@codemirror/language": "6.x",
+ "@codemirror/state": "6.x",
+ "@codemirror/view": "6.x"
+ },
+ "peerDependencies": {
+ "codemirror": "6.x",
+ "vue": "3.x"
+ }
+ },
"node_modules/vue-demi": {
"version": "0.14.7",
"resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.7.tgz",
@@ -11903,6 +12162,7 @@
},
"node_modules/vuepress": {
"version": "2.0.0-rc.6",
+ "resolved": "https://registry.npmmirror.com/vuepress/-/vuepress-2.0.0-rc.6.tgz",
"integrity": "sha512-EcPY3mgU2ESjAdOhLSk00jfl7pI/xjePJhWyt3XgTs2A3WwjTibRdzGRMYJ7KNqP/TFbCJ9GqXbAIJ/vOFOXrw==",
"dependencies": {
"@vuepress/cli": "2.0.0-rc.6",
@@ -12056,6 +12316,7 @@
},
"node_modules/vuepress-plugin-copy-code2": {
"version": "2.0.0-rc.16",
+ "resolved": "https://registry.npmmirror.com/vuepress-plugin-copy-code2/-/vuepress-plugin-copy-code2-2.0.0-rc.16.tgz",
"integrity": "sha512-jxv7eqmqsyyPS3Gb3VZiA2BI4ys9NsWBB2m1H99k1joAK2NQdCHuxRY4kfmln452fM+KpKfmhlSVfL7Yc5LCmw==",
"dependencies": {
"@vueuse/core": "^10.7.2",
@@ -12369,6 +12630,7 @@
},
"node_modules/vuepress-plugin-pwa2": {
"version": "2.0.0-rc.22",
+ "resolved": "https://registry.npmmirror.com/vuepress-plugin-pwa2/-/vuepress-plugin-pwa2-2.0.0-rc.22.tgz",
"integrity": "sha512-56dD7XCR2JElKuojb1tdypgx3y4oWrA+qGBagT3VXLrKU13uLTrWYpiiAvPdDHVzWQSO8aTkTX5zTv6EuZvTJw==",
"dependencies": {
"@vuepress/helper": "2.0.0-rc.11",
@@ -12448,6 +12710,7 @@
},
"node_modules/vuepress-plugin-search-pro": {
"version": "2.0.0-rc.22",
+ "resolved": "https://registry.npmmirror.com/vuepress-plugin-search-pro/-/vuepress-plugin-search-pro-2.0.0-rc.22.tgz",
"integrity": "sha512-3NUhDZZrW4C1crc500V2xIkC+MmCXHCQ9xROoYOv+yEAEDb0d4m75COl4ft/oTlAbpxpd1ocpkGG47aclnmDvw==",
"dependencies": {
"@vuepress/helper": "2.0.0-rc.11",
@@ -12533,6 +12796,7 @@
},
"node_modules/vuepress-theme-hope": {
"version": "2.0.0-rc.22",
+ "resolved": "https://registry.npmmirror.com/vuepress-theme-hope/-/vuepress-theme-hope-2.0.0-rc.22.tgz",
"integrity": "sha512-2uaH0y7pFMeXXufg557JZ3R7Xy2AKiNBI/rqP4H7bS/oNcC0gzxrzz/yJdXV0H0ISbo/9dc9zWIrBRNDoUfbug==",
"dependencies": {
"@vuepress/helper": "2.0.0-rc.11",
@@ -12634,6 +12898,11 @@
"vue-demi": ">=0.14.7"
}
},
+ "node_modules/w3c-keyname": {
+ "version": "2.2.8",
+ "resolved": "https://registry.npmmirror.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz",
+ "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="
+ },
"node_modules/wasm-x11-hash": {
"version": "0.0.2",
"resolved": "https://registry.npmmirror.com/wasm-x11-hash/-/wasm-x11-hash-0.0.2.tgz",
diff --git a/package.json b/package.json
index 12291063..674dae00 100644
--- a/package.json
+++ b/package.json
@@ -13,6 +13,8 @@
"md": "node src/.vuepress/scripts/genMarkDown.js"
},
"dependencies": {
+ "@codemirror/lang-html": "^6.4.9",
+ "@codemirror/theme-one-dark": "^6.1.2",
"@types/katex": "0.16.7",
"@types/three": "0.161.2",
"@vue/repl": "3.4.0",
@@ -22,6 +24,7 @@
"artplayer": "5.1.1",
"axios": "1.6.7",
"chart.js": "4.4.1",
+ "codemirror": "^6.0.1",
"dash": "3.25.22",
"echarts": "5.4.3",
"express": "^4.19.2",
@@ -29,6 +32,7 @@
"hls.js": "1.5.3",
"katex": "0.16.9",
"log4js": "^6.9.1",
+ "markmap-common": "^0.17.0",
"markmap-lib": "^0.15.8",
"markmap-toolbar": "^0.15.8",
"markmap-view": "^0.15.8",
@@ -42,6 +46,7 @@
"twikoo": "^1.6.31",
"vidstack": "0.6.14",
"vue": "^3.4.15",
+ "vue-codemirror": "^6.1.1",
"vuepress": "2.0.0-rc.6",
"vuepress-plugin-copy-code2": "2.0.0-rc.16",
"vuepress-plugin-pwa2": "2.0.0-rc.22",
diff --git a/src/.vuepress/components/react/React.vue b/src/.vuepress/components/react/React.vue
new file mode 100644
index 00000000..947cc514
--- /dev/null
+++ b/src/.vuepress/components/react/React.vue
@@ -0,0 +1,59 @@
+
+
+