瀏覽代碼

调试markdown预览

tanshanming 8 月之前
父節點
當前提交
24320697cd

+ 37 - 160
package-lock.json

@@ -27,6 +27,7 @@
 				"@vue-office/pdf": "1.2.0",
 				"ant-design-vue": "3.2.14",
 				"axios": "1.1.3",
+				"codemirror": "^6.0.2",
 				"cropperjs": "1.5.12",
 				"dayjs": "1.11.7",
 				"echarts": "5.4.0",
@@ -40,7 +41,7 @@
 				"js-pinyin": "0.1.9",
 				"jsbarcode": "^3.11.5",
 				"lodash-es": "4.17.21",
-				"mavon-editor": "^2.10.4",
+				"mavon-editor": "^3.0.1",
 				"nprogress": "0.2.0",
 				"pinia": "2.0.33",
 				"qrcode": "1.5.1",
@@ -503,7 +504,6 @@
 			"version": "2.4.28",
 			"resolved": "https://registry.npmjs.org/@antv/g2plot/-/g2plot-2.4.28.tgz",
 			"integrity": "sha512-eMG7afQ0Kj8AGsJ7r2/6sqqJ/xuIMeXeZPcDvDOvrlgR3tqksUvL00Q3Ahm5ry4mbEj9smPbZZcqZrmyO+uphA==",
-			"license": "MIT",
 			"dependencies": {
 				"@antv/color-util": "^2.0.6",
 				"@antv/event-emitter": "^0.1.2",
@@ -536,7 +536,6 @@
 			"version": "3.0.1",
 			"resolved": "https://registry.npmjs.org/@antv/path-util/-/path-util-3.0.1.tgz",
 			"integrity": "sha512-tpvAzMpF9Qm6ik2YSMqICNU5tco5POOW7S4XoxZAI/B0L26adU+Md/SmO0BBo2SpuywKvzPH3hPT3xmoyhr04Q==",
-			"license": "MIT",
 			"dependencies": {
 				"gl-matrix": "^3.1.0",
 				"lodash-es": "^4.17.21",
@@ -1107,7 +1106,6 @@
 			"version": "6.5.11",
 			"resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.11.tgz",
 			"integrity": "sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==",
-			"peer": true,
 			"dependencies": {
 				"@codemirror/state": "^6.0.0",
 				"@codemirror/view": "^6.0.0",
@@ -1161,7 +1159,6 @@
 				"arm"
 			],
 			"dev": true,
-			"license": "MIT",
 			"optional": true,
 			"os": [
 				"android"
@@ -1178,7 +1175,6 @@
 				"arm64"
 			],
 			"dev": true,
-			"license": "MIT",
 			"optional": true,
 			"os": [
 				"android"
@@ -1195,7 +1191,6 @@
 				"x64"
 			],
 			"dev": true,
-			"license": "MIT",
 			"optional": true,
 			"os": [
 				"android"
@@ -1212,7 +1207,6 @@
 				"arm64"
 			],
 			"dev": true,
-			"license": "MIT",
 			"optional": true,
 			"os": [
 				"darwin"
@@ -1229,7 +1223,6 @@
 				"x64"
 			],
 			"dev": true,
-			"license": "MIT",
 			"optional": true,
 			"os": [
 				"darwin"
@@ -1246,7 +1239,6 @@
 				"arm64"
 			],
 			"dev": true,
-			"license": "MIT",
 			"optional": true,
 			"os": [
 				"freebsd"
@@ -1263,7 +1255,6 @@
 				"x64"
 			],
 			"dev": true,
-			"license": "MIT",
 			"optional": true,
 			"os": [
 				"freebsd"
@@ -1280,7 +1271,6 @@
 				"arm"
 			],
 			"dev": true,
-			"license": "MIT",
 			"optional": true,
 			"os": [
 				"linux"
@@ -1297,7 +1287,6 @@
 				"arm64"
 			],
 			"dev": true,
-			"license": "MIT",
 			"optional": true,
 			"os": [
 				"linux"
@@ -1314,7 +1303,6 @@
 				"ia32"
 			],
 			"dev": true,
-			"license": "MIT",
 			"optional": true,
 			"os": [
 				"linux"
@@ -1331,7 +1319,6 @@
 				"loong64"
 			],
 			"dev": true,
-			"license": "MIT",
 			"optional": true,
 			"os": [
 				"linux"
@@ -1348,7 +1335,6 @@
 				"mips64el"
 			],
 			"dev": true,
-			"license": "MIT",
 			"optional": true,
 			"os": [
 				"linux"
@@ -1365,7 +1351,6 @@
 				"ppc64"
 			],
 			"dev": true,
-			"license": "MIT",
 			"optional": true,
 			"os": [
 				"linux"
@@ -1382,7 +1367,6 @@
 				"riscv64"
 			],
 			"dev": true,
-			"license": "MIT",
 			"optional": true,
 			"os": [
 				"linux"
@@ -1399,7 +1383,6 @@
 				"s390x"
 			],
 			"dev": true,
-			"license": "MIT",
 			"optional": true,
 			"os": [
 				"linux"
@@ -1416,7 +1399,6 @@
 				"x64"
 			],
 			"dev": true,
-			"license": "MIT",
 			"optional": true,
 			"os": [
 				"linux"
@@ -1433,7 +1415,6 @@
 				"x64"
 			],
 			"dev": true,
-			"license": "MIT",
 			"optional": true,
 			"os": [
 				"netbsd"
@@ -1450,7 +1431,6 @@
 				"x64"
 			],
 			"dev": true,
-			"license": "MIT",
 			"optional": true,
 			"os": [
 				"openbsd"
@@ -1467,7 +1447,6 @@
 				"x64"
 			],
 			"dev": true,
-			"license": "MIT",
 			"optional": true,
 			"os": [
 				"sunos"
@@ -1484,7 +1463,6 @@
 				"arm64"
 			],
 			"dev": true,
-			"license": "MIT",
 			"optional": true,
 			"os": [
 				"win32"
@@ -1501,7 +1479,6 @@
 				"ia32"
 			],
 			"dev": true,
-			"license": "MIT",
 			"optional": true,
 			"os": [
 				"win32"
@@ -1518,7 +1495,6 @@
 				"x64"
 			],
 			"dev": true,
-			"license": "MIT",
 			"optional": true,
 			"os": [
 				"win32"
@@ -1674,7 +1650,6 @@
 			"version": "9.2.2",
 			"resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.2.2.tgz",
 			"integrity": "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==",
-			"license": "MIT",
 			"dependencies": {
 				"@intlify/devtools-if": "9.2.2",
 				"@intlify/message-compiler": "9.2.2",
@@ -1689,7 +1664,6 @@
 			"version": "9.2.2",
 			"resolved": "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.2.2.tgz",
 			"integrity": "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==",
-			"license": "MIT",
 			"dependencies": {
 				"@intlify/shared": "9.2.2"
 			},
@@ -1701,7 +1675,6 @@
 			"version": "9.2.2",
 			"resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.2.2.tgz",
 			"integrity": "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==",
-			"license": "MIT",
 			"dependencies": {
 				"@intlify/shared": "9.2.2",
 				"source-map": "0.6.1"
@@ -1714,7 +1687,6 @@
 			"version": "9.2.2",
 			"resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.2.2.tgz",
 			"integrity": "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==",
-			"license": "MIT",
 			"engines": {
 				"node": ">= 14"
 			}
@@ -1723,7 +1695,6 @@
 			"version": "9.2.2",
 			"resolved": "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz",
 			"integrity": "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==",
-			"license": "MIT",
 			"dependencies": {
 				"@intlify/core-base": "9.2.2",
 				"@intlify/shared": "9.2.2"
@@ -1767,18 +1738,6 @@
 				"node": ">=6.0.0"
 			}
 		},
-		"node_modules/@jridgewell/source-map": {
-			"version": "0.3.6",
-			"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
-			"integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
-			"dev": true,
-			"license": "MIT",
-			"peer": true,
-			"dependencies": {
-				"@jridgewell/gen-mapping": "^0.3.5",
-				"@jridgewell/trace-mapping": "^0.3.25"
-			}
-		},
 		"node_modules/@jridgewell/sourcemap-codec": {
 			"version": "1.5.0",
 			"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
@@ -1872,7 +1831,6 @@
 			"version": "0.0.1",
 			"resolved": "https://registry.npmjs.org/@ljharb/resumer/-/resumer-0.0.1.tgz",
 			"integrity": "sha512-skQiAOrCfO7vRTq53cxznMpks7wS1va95UCidALlOVWqvBAzwPVErwizDwoMqNVMEn1mDq0utxZd02eIrvF1lw==",
-			"license": "MIT",
 			"dependencies": {
 				"@ljharb/through": "^2.3.9"
 			},
@@ -1884,7 +1842,6 @@
 			"version": "2.3.14",
 			"resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.14.tgz",
 			"integrity": "sha512-ajBvlKpWucBB17FuQYUShqpqy8GRgYEpJW0vWJbUu1CV9lWyrDCapy0lScU8T8Z6qn49sSwJB3+M+evYIdGg+A==",
-			"license": "MIT",
 			"dependencies": {
 				"call-bind": "^1.0.8"
 			},
@@ -2025,7 +1982,6 @@
 			"version": "5.0.0",
 			"resolved": "https://registry.npmjs.org/@tinymce/tinymce-vue/-/tinymce-vue-5.0.0.tgz",
 			"integrity": "sha512-1HRCNa2eGdztOKShYAiHIry50LTU6YJG//qSP9AJElrXhb3BIBN0Bef6E56nZObVgwCgSmI4cnX35VU9D49aow==",
-			"license": "MIT",
 			"dependencies": {
 				"tinymce": "^6.0.0 || ^5.5.1"
 			},
@@ -2610,9 +2566,9 @@
 			}
 		},
 		"node_modules/@vue/babel-plugin-resolve-type/node_modules/postcss": {
-			"version": "8.5.4",
-			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz",
-			"integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==",
+			"version": "8.5.6",
+			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
+			"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
 			"dev": true,
 			"funding": [
 				{
@@ -2628,7 +2584,6 @@
 					"url": "https://github.com/sponsors/ai"
 				}
 			],
-			"license": "MIT",
 			"dependencies": {
 				"nanoid": "^3.3.11",
 				"picocolors": "^1.1.1",
@@ -2642,6 +2597,7 @@
 			"version": "3.2.47",
 			"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.47.tgz",
 			"integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==",
+			"dev": true,
 			"license": "MIT",
 			"dependencies": {
 				"@babel/parser": "^7.16.4",
@@ -2654,12 +2610,14 @@
 			"version": "3.2.47",
 			"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz",
 			"integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==",
+			"dev": true,
 			"license": "MIT"
 		},
 		"node_modules/@vue/compiler-dom": {
 			"version": "3.2.47",
 			"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz",
 			"integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==",
+			"dev": true,
 			"license": "MIT",
 			"dependencies": {
 				"@vue/compiler-core": "3.2.47",
@@ -2670,12 +2628,14 @@
 			"version": "3.2.47",
 			"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz",
 			"integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==",
+			"dev": true,
 			"license": "MIT"
 		},
 		"node_modules/@vue/compiler-sfc": {
 			"version": "3.2.47",
 			"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz",
 			"integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==",
+			"dev": true,
 			"license": "MIT",
 			"dependencies": {
 				"@babel/parser": "^7.16.4",
@@ -2694,12 +2654,14 @@
 			"version": "3.2.47",
 			"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz",
 			"integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==",
+			"dev": true,
 			"license": "MIT"
 		},
 		"node_modules/@vue/compiler-sfc/node_modules/magic-string": {
 			"version": "0.25.9",
 			"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
 			"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+			"dev": true,
 			"license": "MIT",
 			"dependencies": {
 				"sourcemap-codec": "^1.4.8"
@@ -2709,6 +2671,7 @@
 			"version": "3.2.47",
 			"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz",
 			"integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==",
+			"dev": true,
 			"license": "MIT",
 			"dependencies": {
 				"@vue/compiler-dom": "3.2.47",
@@ -2719,6 +2682,7 @@
 			"version": "3.2.47",
 			"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz",
 			"integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==",
+			"dev": true,
 			"license": "MIT"
 		},
 		"node_modules/@vue/devtools-api": {
@@ -2759,6 +2723,7 @@
 			"version": "3.2.47",
 			"resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz",
 			"integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==",
+			"dev": true,
 			"license": "MIT",
 			"dependencies": {
 				"@babel/parser": "^7.16.4",
@@ -2772,12 +2737,14 @@
 			"version": "3.2.47",
 			"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz",
 			"integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==",
+			"dev": true,
 			"license": "MIT"
 		},
 		"node_modules/@vue/reactivity-transform/node_modules/magic-string": {
 			"version": "0.25.9",
 			"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
 			"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+			"dev": true,
 			"license": "MIT",
 			"dependencies": {
 				"sourcemap-codec": "^1.4.8"
@@ -2998,7 +2965,6 @@
 			"version": "0.1.4",
 			"resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
 			"integrity": "sha512-GrTZLRpmp6wIC2ztrWW9MjjTgSKccffgFagbNDOX95/dcjEcYZibYTeaOntySQLcdw1ztBoFkviiUvTMbb9MYg==",
-			"license": "MIT",
 			"dependencies": {
 				"kind-of": "^3.0.2",
 				"longest": "^1.0.1",
@@ -3012,7 +2978,6 @@
 			"version": "1.0.1",
 			"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
 			"integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==",
-			"license": "BSD-3-Clause OR MIT",
 			"engines": {
 				"node": ">=0.4.2"
 			}
@@ -3330,7 +3295,6 @@
 			"version": "1.1.3",
 			"resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz",
 			"integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==",
-			"license": "MIT",
 			"dependencies": {
 				"follow-redirects": "^1.15.0",
 				"form-data": "^4.0.0",
@@ -3388,10 +3352,9 @@
 			"license": "ISC"
 		},
 		"node_modules/brace-expansion": {
-			"version": "1.1.11",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-			"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-			"license": "MIT",
+			"version": "1.1.12",
+			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+			"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
 			"dependencies": {
 				"balanced-match": "^1.0.0",
 				"concat-map": "0.0.1"
@@ -3443,14 +3406,6 @@
 				"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
 			}
 		},
-		"node_modules/buffer-from": {
-			"version": "1.1.2",
-			"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
-			"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
-			"dev": true,
-			"license": "MIT",
-			"peer": true
-		},
 		"node_modules/builtin-modules": {
 			"version": "3.3.0",
 			"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
@@ -3588,7 +3543,6 @@
 			"version": "0.1.3",
 			"resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
 			"integrity": "sha512-Baz3aNe2gd2LP2qk5U+sDk/m4oSuwSDcBfayTCTBoWpfIGO5XFxPmjILQII4NGiZjD6DoDI6kf7gKaxkf7s3VQ==",
-			"license": "MIT",
 			"dependencies": {
 				"align-text": "^0.1.3",
 				"lazy-cache": "^1.0.3"
@@ -3759,7 +3713,6 @@
 			"version": "6.0.2",
 			"resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.2.tgz",
 			"integrity": "sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw==",
-			"peer": true,
 			"dependencies": {
 				"@codemirror/autocomplete": "^6.0.0",
 				"@codemirror/commands": "^6.0.0",
@@ -3803,8 +3756,7 @@
 		"node_modules/commander": {
 			"version": "2.20.3",
 			"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-			"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
-			"license": "MIT"
+			"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
 		},
 		"node_modules/compute-scroll-into-view": {
 			"version": "1.0.20",
@@ -3828,8 +3780,7 @@
 		"node_modules/contour_plot": {
 			"version": "0.0.1",
 			"resolved": "https://registry.npmjs.org/contour_plot/-/contour_plot-0.0.1.tgz",
-			"integrity": "sha512-Nil2HI76Xux6sVGORvhSS8v66m+/h5CwFkBJDO+U5vWaMdNC0yXNCsGDPbzPhvqOEU5koebhdEvD372LI+IyLw==",
-			"license": "MIT"
+			"integrity": "sha512-Nil2HI76Xux6sVGORvhSS8v66m+/h5CwFkBJDO+U5vWaMdNC0yXNCsGDPbzPhvqOEU5koebhdEvD372LI+IyLw=="
 		},
 		"node_modules/convert-source-map": {
 			"version": "2.0.0",
@@ -3904,8 +3855,7 @@
 		"node_modules/cssfilter": {
 			"version": "0.0.10",
 			"resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz",
-			"integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==",
-			"license": "MIT"
+			"integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw=="
 		},
 		"node_modules/csstype": {
 			"version": "3.1.3",
@@ -4299,7 +4249,6 @@
 			"version": "0.1.2",
 			"resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz",
 			"integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==",
-			"license": "MIT",
 			"dependencies": {
 				"minimatch": "^3.0.4"
 			},
@@ -4554,7 +4503,6 @@
 			"integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==",
 			"dev": true,
 			"hasInstallScript": true,
-			"license": "MIT",
 			"bin": {
 				"esbuild": "bin/esbuild"
 			},
@@ -5593,7 +5541,6 @@
 			"version": "0.0.2",
 			"resolved": "https://registry.npmjs.org/fmin/-/fmin-0.0.2.tgz",
 			"integrity": "sha512-sSi6DzInhl9d8yqssDfGZejChO8d2bAGIpysPsvYsxFe898z89XhCZg6CPNV3nhUhFefeC/AXZK2bAJxlBjN6A==",
-			"license": "BSD-3-Clause",
 			"dependencies": {
 				"contour_plot": "^0.0.1",
 				"json2module": "^0.0.3",
@@ -5606,7 +5553,6 @@
 			"version": "2.1.1",
 			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
 			"integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
-			"license": "MIT",
 			"engines": {
 				"node": ">=0.10.0"
 			}
@@ -5615,7 +5561,6 @@
 			"version": "2.2.1",
 			"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
 			"integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
-			"license": "MIT",
 			"engines": {
 				"node": ">=0.10.0"
 			}
@@ -5624,7 +5569,6 @@
 			"version": "1.1.3",
 			"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
 			"integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
-			"license": "MIT",
 			"dependencies": {
 				"ansi-styles": "^2.2.1",
 				"escape-string-regexp": "^1.0.2",
@@ -5640,7 +5584,6 @@
 			"version": "1.0.5",
 			"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
 			"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
-			"license": "MIT",
 			"engines": {
 				"node": ">=0.8.0"
 			}
@@ -5649,7 +5592,6 @@
 			"version": "0.25.8",
 			"resolved": "https://registry.npmjs.org/rollup/-/rollup-0.25.8.tgz",
 			"integrity": "sha512-a2S4Bh3bgrdO4BhKr2E4nZkjTvrJ2m2bWjMTzVYtoqSCn0HnuxosXnaJUHrMEziOWr3CzL9GjilQQKcyCQpJoA==",
-			"license": "MIT",
 			"dependencies": {
 				"chalk": "^1.1.1",
 				"minimist": "^1.2.0",
@@ -5674,7 +5616,6 @@
 			"version": "0.3.3",
 			"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.3.3.tgz",
 			"integrity": "sha512-9O4+y9n64RewmFoKUZ/5Tx9IHIcXM6Q+RTSw6ehnqybUz4a7iwR3Eaw80uLtqqQ5D0C+5H03D4KKGo9PdP33Gg==",
-			"license": "MIT",
 			"dependencies": {
 				"source-map": "0.1.32"
 			}
@@ -5683,7 +5624,6 @@
 			"version": "3.0.1",
 			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
 			"integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
-			"license": "MIT",
 			"dependencies": {
 				"ansi-regex": "^2.0.0"
 			},
@@ -5695,7 +5635,6 @@
 			"version": "2.0.0",
 			"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
 			"integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
-			"license": "MIT",
 			"engines": {
 				"node": ">=0.8.0"
 			}
@@ -6072,7 +6011,6 @@
 			"version": "1.0.4",
 			"resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz",
 			"integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==",
-			"license": "MIT",
 			"engines": {
 				"node": ">= 0.4.0"
 			}
@@ -6081,7 +6019,6 @@
 			"version": "2.0.0",
 			"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
 			"integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
-			"license": "MIT",
 			"dependencies": {
 				"ansi-regex": "^2.0.0"
 			},
@@ -6093,7 +6030,6 @@
 			"version": "2.1.1",
 			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
 			"integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
-			"license": "MIT",
 			"engines": {
 				"node": ">=0.10.0"
 			}
@@ -6466,8 +6402,7 @@
 		"node_modules/is-buffer": {
 			"version": "1.1.6",
 			"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-			"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
-			"license": "MIT"
+			"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
 		},
 		"node_modules/is-builtin-module": {
 			"version": "3.2.1",
@@ -6991,7 +6926,6 @@
 			"version": "0.0.3",
 			"resolved": "https://registry.npmjs.org/json2module/-/json2module-0.0.3.tgz",
 			"integrity": "sha512-qYGxqrRrt4GbB8IEOy1jJGypkNsjWoIMlZt4bAsmUScCA507Hbc2p1JOhBzqn45u3PWafUgH2OnzyNU7udO/GA==",
-			"license": "BSD-3-Clause",
 			"dependencies": {
 				"rw": "^1.3.2"
 			},
@@ -7084,7 +7018,6 @@
 			"version": "3.2.2",
 			"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
 			"integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-			"license": "MIT",
 			"dependencies": {
 				"is-buffer": "^1.1.5"
 			},
@@ -7096,7 +7029,6 @@
 			"version": "1.0.4",
 			"resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
 			"integrity": "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==",
-			"license": "MIT",
 			"engines": {
 				"node": ">=0.10.0"
 			}
@@ -7211,7 +7143,6 @@
 			"version": "1.0.1",
 			"resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
 			"integrity": "sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==",
-			"license": "MIT",
 			"engines": {
 				"node": ">=0.10.0"
 			}
@@ -7298,12 +7229,11 @@
 			}
 		},
 		"node_modules/mavon-editor": {
-			"version": "2.10.4",
-			"resolved": "https://registry.npmjs.org/mavon-editor/-/mavon-editor-2.10.4.tgz",
-			"integrity": "sha512-CFsBLkgt/KZBDg+SJYe2fyYv4zClY149PiwpH0rDAiiP4ae1XNs0GC8nBsoTeipsHcebDLN1QMkt3bUsnMDjQw==",
-			"license": "MIT",
+			"version": "3.0.1",
+			"resolved": "https://registry.npmjs.org/mavon-editor/-/mavon-editor-3.0.1.tgz",
+			"integrity": "sha512-973cYCwv+AB+fcecsU6Ua6UXATxDMaY0Q7QzKQ/GmRW1sg+3DolZDnCGXth7XHDgrmqKTO57N42fVYujt0wfFw==",
 			"dependencies": {
-				"xss": "^1.0.6"
+				"xss": "^1.0.10"
 			}
 		},
 		"node_modules/mdast-util-from-markdown": {
@@ -7471,7 +7401,6 @@
 			"version": "1.0.3",
 			"resolved": "https://registry.npmjs.org/mock-property/-/mock-property-1.0.3.tgz",
 			"integrity": "sha512-2emPTb1reeLLYwHxyVx993iYyCHEiRRO+y8NFXFPL5kl5q14sgTK76cXyEKkeKCHeRw35SfdkUJ10Q1KfHuiIQ==",
-			"license": "MIT",
 			"dependencies": {
 				"define-data-property": "^1.1.1",
 				"functions-have-names": "^1.2.3",
@@ -8126,7 +8055,6 @@
 					"url": "https://tidelift.com/funding/github/npm/postcss"
 				}
 			],
-			"license": "MIT",
 			"dependencies": {
 				"nanoid": "^3.3.4",
 				"picocolors": "^1.0.0",
@@ -8653,7 +8581,6 @@
 			"version": "1.6.1",
 			"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
 			"integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
-			"license": "MIT",
 			"engines": {
 				"node": ">=0.10"
 			}
@@ -8724,7 +8651,6 @@
 			"version": "0.1.3",
 			"resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
 			"integrity": "sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg==",
-			"license": "MIT",
 			"dependencies": {
 				"align-text": "^0.1.1"
 			},
@@ -8901,8 +8827,7 @@
 		"node_modules/rw": {
 			"version": "1.3.3",
 			"resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
-			"integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==",
-			"license": "BSD-3-Clause"
+			"integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
 		},
 		"node_modules/safe-array-concat": {
 			"version": "1.1.3",
@@ -9289,18 +9214,6 @@
 				"node": ">=0.10.0"
 			}
 		},
-		"node_modules/source-map-support": {
-			"version": "0.5.21",
-			"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
-			"integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
-			"dev": true,
-			"license": "MIT",
-			"peer": true,
-			"dependencies": {
-				"buffer-from": "^1.0.0",
-				"source-map": "^0.6.0"
-			}
-		},
 		"node_modules/sourcemap-codec": {
 			"version": "1.4.8",
 			"resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
@@ -9600,7 +9513,6 @@
 			"version": "4.17.0",
 			"resolved": "https://registry.npmjs.org/tape/-/tape-4.17.0.tgz",
 			"integrity": "sha512-KCuXjYxCZ3ru40dmND+oCLsXyuA8hoseu2SS404Px5ouyS0A99v8X/mdiLqsR5MTAyamMBN7PRwt2Dv3+xGIxw==",
-			"license": "MIT",
 			"dependencies": {
 				"@ljharb/resumer": "~0.0.1",
 				"@ljharb/through": "~2.3.9",
@@ -9630,7 +9542,6 @@
 			"version": "1.1.4",
 			"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
 			"integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
-			"license": "MIT",
 			"dependencies": {
 				"call-bind": "^1.0.2",
 				"has-tostringtag": "^1.0.0"
@@ -9646,31 +9557,10 @@
 			"version": "1.12.3",
 			"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
 			"integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
-			"license": "MIT",
 			"funding": {
 				"url": "https://github.com/sponsors/ljharb"
 			}
 		},
-		"node_modules/terser": {
-			"version": "5.42.0",
-			"resolved": "https://registry.npmjs.org/terser/-/terser-5.42.0.tgz",
-			"integrity": "sha512-UYCvU9YQW2f/Vwl+P0GfhxJxbUGLwd+5QrrGgLajzWAtC/23AX0vcise32kkP7Eu0Wu9VlzzHAXkLObgjQfFlQ==",
-			"dev": true,
-			"license": "BSD-2-Clause",
-			"peer": true,
-			"dependencies": {
-				"@jridgewell/source-map": "^0.3.3",
-				"acorn": "^8.14.0",
-				"commander": "^2.20.0",
-				"source-map-support": "~0.5.20"
-			},
-			"bin": {
-				"terser": "bin/terser"
-			},
-			"engines": {
-				"node": ">=10"
-			}
-		},
 		"node_modules/text-table": {
 			"version": "0.2.0",
 			"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
@@ -9693,8 +9583,7 @@
 		"node_modules/tinymce": {
 			"version": "6.8.6",
 			"resolved": "https://registry.npmjs.org/tinymce/-/tinymce-6.8.6.tgz",
-			"integrity": "sha512-++XYEs8lKWvZxDCjrr8Baiw7KiikraZ5JkLMg6EdnUVNKJui0IsrAADj5MsyUeFkcEryfn2jd3p09H7REvewyg==",
-			"license": "MIT"
+			"integrity": "sha512-++XYEs8lKWvZxDCjrr8Baiw7KiikraZ5JkLMg6EdnUVNKJui0IsrAADj5MsyUeFkcEryfn2jd3p09H7REvewyg=="
 		},
 		"node_modules/to-regex-range": {
 			"version": "5.0.1",
@@ -9865,7 +9754,7 @@
 			"version": "4.9.5",
 			"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
 			"integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
-			"devOptional": true,
+			"dev": true,
 			"license": "Apache-2.0",
 			"bin": {
 				"tsc": "bin/tsc",
@@ -9886,7 +9775,6 @@
 			"version": "2.8.29",
 			"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
 			"integrity": "sha512-qLq/4y2pjcU3vhlhseXGGJ7VbFO4pBANu0kwl8VCa9KEI0V8VfZIx2Fy3w01iSTA/pGwKZSmu/+I4etLNDdt5w==",
-			"license": "BSD-2-Clause",
 			"dependencies": {
 				"source-map": "~0.5.1",
 				"yargs": "~3.10.0"
@@ -9905,7 +9793,6 @@
 			"version": "1.2.1",
 			"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
 			"integrity": "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==",
-			"license": "MIT",
 			"engines": {
 				"node": ">=0.10.0"
 			}
@@ -9914,7 +9801,6 @@
 			"version": "2.1.0",
 			"resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
 			"integrity": "sha512-GIOYRizG+TGoc7Wgc1LiOTLare95R3mzKgoln+Q/lE4ceiYH19gUpl0l0Ffq4lJDEf3FxujMe6IBfOCs7pfqNA==",
-			"license": "ISC",
 			"dependencies": {
 				"center-align": "^0.1.1",
 				"right-align": "^0.1.1",
@@ -9925,7 +9811,6 @@
 			"version": "0.5.7",
 			"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
 			"integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
-			"license": "BSD-3-Clause",
 			"engines": {
 				"node": ">=0.10.0"
 			}
@@ -9934,7 +9819,6 @@
 			"version": "3.10.0",
 			"resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
 			"integrity": "sha512-QFzUah88GAGy9lyDKGBqZdkYApt63rCXYBGYnEP4xDJPXNqXXnBDACnbrXnViV6jRSqAePwrATi2i8mfYm4L1A==",
-			"license": "MIT",
 			"dependencies": {
 				"camelcase": "^1.0.2",
 				"cliui": "^2.1.0",
@@ -9946,7 +9830,6 @@
 			"version": "1.0.2",
 			"resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
 			"integrity": "sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==",
-			"license": "MIT",
 			"optional": true
 		},
 		"node_modules/unbox-primitive": {
@@ -10146,11 +10029,10 @@
 			}
 		},
 		"node_modules/unplugin-auto-import/node_modules/brace-expansion": {
-			"version": "2.0.1",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-			"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+			"version": "2.0.2",
+			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+			"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
 			"dev": true,
-			"license": "MIT",
 			"dependencies": {
 				"balanced-match": "^1.0.0"
 			}
@@ -10220,11 +10102,10 @@
 			}
 		},
 		"node_modules/unplugin-vue-components/node_modules/brace-expansion": {
-			"version": "2.0.1",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-			"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+			"version": "2.0.2",
+			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+			"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
 			"dev": true,
-			"license": "MIT",
 			"dependencies": {
 				"balanced-match": "^1.0.0"
 			}
@@ -10370,7 +10251,6 @@
 			"resolved": "https://registry.npmjs.org/vite/-/vite-4.2.1.tgz",
 			"integrity": "sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==",
 			"dev": true,
-			"license": "MIT",
 			"dependencies": {
 				"esbuild": "^0.17.5",
 				"postcss": "^8.4.21",
@@ -10596,7 +10476,6 @@
 			"version": "9.2.2",
 			"resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.2.2.tgz",
 			"integrity": "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==",
-			"license": "MIT",
 			"dependencies": {
 				"@intlify/core-base": "9.2.2",
 				"@intlify/shared": "9.2.2",
@@ -11071,7 +10950,6 @@
 			"version": "0.0.2",
 			"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
 			"integrity": "sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==",
-			"license": "MIT/X11",
 			"engines": {
 				"node": ">=0.4.0"
 			}
@@ -11110,7 +10988,6 @@
 			"version": "1.0.15",
 			"resolved": "https://registry.npmjs.org/xss/-/xss-1.0.15.tgz",
 			"integrity": "sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==",
-			"license": "MIT",
 			"dependencies": {
 				"commander": "^2.20.3",
 				"cssfilter": "0.0.10"

+ 2 - 1
package.json

@@ -36,6 +36,7 @@
 		"@vue-office/pdf": "1.2.0",
 		"ant-design-vue": "3.2.14",
 		"axios": "1.1.3",
+		"codemirror": "^6.0.2",
 		"cropperjs": "1.5.12",
 		"dayjs": "1.11.7",
 		"echarts": "5.4.0",
@@ -49,7 +50,7 @@
 		"js-pinyin": "0.1.9",
 		"jsbarcode": "^3.11.5",
 		"lodash-es": "4.17.21",
-		"mavon-editor": "^2.10.4",
+		"mavon-editor": "^3.0.1",
 		"nprogress": "0.2.0",
 		"pinia": "2.0.33",
 		"qrcode": "1.5.1",

File diff suppressed because it is too large
+ 2 - 0
public/mavonEditor/css/github-markdown.css


File diff suppressed because it is too large
+ 0 - 0
public/mavonEditor/css/katex.min.css


+ 75 - 0
public/mavonEditor/css/tomorrow-night.css

@@ -0,0 +1,75 @@
+/* Tomorrow Night Theme */
+/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
+/* Original theme - https://github.com/chriskempson/tomorrow-theme */
+/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
+
+/* Tomorrow Comment */
+.hljs-comment,
+.hljs-quote {
+	color: #969896;
+}
+
+/* Tomorrow Red */
+.hljs-variable,
+.hljs-template-variable,
+.hljs-tag,
+.hljs-name,
+.hljs-selector-id,
+.hljs-selector-class,
+.hljs-regexp,
+.hljs-deletion {
+	color: #cc6666;
+}
+
+/* Tomorrow Orange */
+.hljs-number,
+.hljs-built_in,
+.hljs-builtin-name,
+.hljs-literal,
+.hljs-type,
+.hljs-params,
+.hljs-meta,
+.hljs-link {
+	color: #de935f;
+}
+
+/* Tomorrow Yellow */
+.hljs-attribute {
+	color: #f0c674;
+}
+
+/* Tomorrow Green */
+.hljs-string,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-addition {
+	color: #b5bd68;
+}
+
+/* Tomorrow Blue */
+.hljs-title,
+.hljs-section {
+	color: #81a2be;
+}
+
+/* Tomorrow Purple */
+.hljs-keyword,
+.hljs-selector-tag {
+	color: #b294bb;
+}
+
+.hljs {
+	display: block;
+	overflow-x: auto;
+	background: #1d1f21;
+	color: #c5c8c6;
+	padding: 16px;
+}
+
+.hljs-emphasis {
+	font-style: italic;
+}
+
+.hljs-strong {
+	font-weight: bold;
+}

File diff suppressed because it is too large
+ 531 - 0
public/mavonEditor/js/highlight.min.js


File diff suppressed because it is too large
+ 0 - 0
public/mavonEditor/js/katex.min.js


+ 322 - 0
public/mavonEditor/js/lang.hljs.js

@@ -0,0 +1,322 @@
+export default {
+	'1c': '1c',
+	abnf: 'abnf',
+	accesslog: 'accesslog',
+	actionscript: 'actionscript',
+	as: 'actionscript',
+	ada: 'ada',
+	apache: 'apache',
+	apacheconf: 'apache',
+	applescript: 'applescript',
+	osascript: 'applescript',
+	arduino: 'arduino',
+	armasm: 'armasm',
+	arm: 'armasm',
+	asciidoc: 'asciidoc',
+	adoc: 'asciidoc',
+	aspectj: 'aspectj',
+	autohotkey: 'autohotkey',
+	ahk: 'autohotkey',
+	autoit: 'autoit',
+	avrasm: 'avrasm',
+	awk: 'awk',
+	axapta: 'axapta',
+	bash: 'bash',
+	sh: 'bash',
+	zsh: 'bash',
+	basic: 'basic',
+	bnf: 'bnf',
+	brainfuck: 'brainfuck',
+	bf: 'brainfuck',
+	cal: 'cal',
+	capnproto: 'capnproto',
+	capnp: 'capnproto',
+	ceylon: 'ceylon',
+	clean: 'clean',
+	icl: 'clean',
+	dcl: 'clean',
+	'clojure-repl': 'clojure-repl',
+	clojure: 'clojure',
+	clj: 'clojure',
+	cmake: 'cmake',
+	'cmake.in': 'cmake',
+	coffeescript: 'coffeescript',
+	coffee: 'coffeescript',
+	cson: 'coffeescript',
+	iced: 'coffeescript',
+	coq: 'coq',
+	cos: 'cos',
+	cls: 'cos',
+	cpp: 'cpp',
+	c: 'cpp',
+	cc: 'cpp',
+	h: 'cpp',
+	'c++': 'cpp',
+	'h++': 'cpp',
+	hpp: 'cpp',
+	crmsh: 'crmsh',
+	crm: 'crmsh',
+	pcmk: 'crmsh',
+	crystal: 'crystal',
+	cr: 'crystal',
+	cs: 'cs',
+	csharp: 'cs',
+	csp: 'csp',
+	css: 'css',
+	d: 'd',
+	dart: 'dart',
+	delphi: 'delphi',
+	dpr: 'delphi',
+	dfm: 'delphi',
+	pas: 'delphi',
+	pascal: 'delphi',
+	freepascal: 'delphi',
+	lazarus: 'delphi',
+	lpr: 'delphi',
+	lfm: 'delphi',
+	diff: 'diff',
+	patch: 'diff',
+	django: 'django',
+	jinja: 'django',
+	dns: 'dns',
+	bind: 'dns',
+	zone: 'dns',
+	dockerfile: 'dockerfile',
+	docker: 'dockerfile',
+	dos: 'dos',
+	bat: 'dos',
+	cmd: 'dos',
+	dsconfig: 'dsconfig',
+	dts: 'dts',
+	dust: 'dust',
+	dst: 'dust',
+	ebnf: 'ebnf',
+	elixir: 'elixir',
+	elm: 'elm',
+	erb: 'erb',
+	'erlang-repl': 'erlang-repl',
+	erlang: 'erlang',
+	erl: 'erlang',
+	excel: 'excel',
+	xlsx: 'excel',
+	xls: 'excel',
+	fix: 'fix',
+	flix: 'flix',
+	fortran: 'fortran',
+	f90: 'fortran',
+	f95: 'fortran',
+	fsharp: 'fsharp',
+	fs: 'fsharp',
+	gams: 'gams',
+	gms: 'gams',
+	gauss: 'gauss',
+	gss: 'gauss',
+	gcode: 'gcode',
+	nc: 'gcode',
+	gherkin: 'gherkin',
+	feature: 'gherkin',
+	glsl: 'glsl',
+	go: 'go',
+	golang: 'go',
+	golo: 'golo',
+	gradle: 'gradle',
+	groovy: 'groovy',
+	haml: 'haml',
+	handlebars: 'handlebars',
+	hbs: 'handlebars',
+	'html.hbs': 'handlebars',
+	'html.handlebars': 'handlebars',
+	haskell: 'haskell',
+	hs: 'haskell',
+	haxe: 'haxe',
+	hx: 'haxe',
+	hsp: 'hsp',
+	htmlbars: 'htmlbars',
+	http: 'http',
+	https: 'http',
+	hy: 'hy',
+	hylang: 'hy',
+	inform7: 'inform7',
+	i7: 'inform7',
+	ini: 'ini',
+	toml: 'ini',
+	irpf90: 'irpf90',
+	java: 'java',
+	jsp: 'java',
+	javascript: 'javascript',
+	js: 'javascript',
+	jsx: 'javascript',
+	'jboss-cli': 'jboss-cli',
+	'wildfly-cli': 'jboss-cli',
+	json: 'json',
+	'julia-repl': 'julia-repl',
+	julia: 'julia',
+	kotlin: 'kotlin',
+	lasso: 'lasso',
+	ls: 'livescript',
+	lassoscript: 'lasso',
+	ldif: 'ldif',
+	leaf: 'leaf',
+	less: 'less',
+	lisp: 'lisp',
+	livecodeserver: 'livecodeserver',
+	livescript: 'livescript',
+	llvm: 'llvm',
+	lsl: 'lsl',
+	lua: 'lua',
+	makefile: 'makefile',
+	mk: 'makefile',
+	mak: 'makefile',
+	markdown: 'markdown',
+	md: 'markdown',
+	mkdown: 'markdown',
+	mkd: 'markdown',
+	mathematica: 'mathematica',
+	mma: 'mathematica',
+	matlab: 'matlab',
+	maxima: 'maxima',
+	mel: 'mel',
+	mercury: 'mercury',
+	m: 'mercury',
+	moo: 'mercury',
+	mipsasm: 'mipsasm',
+	mips: 'mipsasm',
+	mizar: 'mizar',
+	mojolicious: 'mojolicious',
+	monkey: 'monkey',
+	moonscript: 'moonscript',
+	moon: 'moonscript',
+	n1ql: 'n1ql',
+	nginx: 'nginx',
+	nginxconf: 'nginx',
+	nimrod: 'nimrod',
+	nim: 'nimrod',
+	nix: 'nix',
+	nixos: 'nix',
+	nsis: 'nsis',
+	objectivec: 'objectivec',
+	mm: 'objectivec',
+	objc: 'objectivec',
+	'obj-c': 'objectivec',
+	ocaml: 'ocaml',
+	ml: 'sml',
+	openscad: 'openscad',
+	scad: 'openscad',
+	oxygene: 'oxygene',
+	parser3: 'parser3',
+	perl: 'perl',
+	pl: 'perl',
+	pm: 'perl',
+	pf: 'pf',
+	'pf.conf': 'pf',
+	php: 'php',
+	php3: 'php',
+	php4: 'php',
+	php5: 'php',
+	php6: 'php',
+	pony: 'pony',
+	powershell: 'powershell',
+	ps: 'powershell',
+	processing: 'processing',
+	profile: 'profile',
+	prolog: 'prolog',
+	protobuf: 'protobuf',
+	puppet: 'puppet',
+	pp: 'puppet',
+	purebasic: 'purebasic',
+	pb: 'purebasic',
+	pbi: 'purebasic',
+	python: 'python',
+	py: 'python',
+	gyp: 'python',
+	q: 'q',
+	k: 'q',
+	kdb: 'q',
+	qml: 'qml',
+	qt: 'qml',
+	r: 'r',
+	rib: 'rib',
+	roboconf: 'roboconf',
+	graph: 'roboconf',
+	instances: 'roboconf',
+	routeros: 'routeros',
+	mikrotik: 'routeros',
+	rsl: 'rsl',
+	ruby: 'ruby',
+	rb: 'ruby',
+	gemspec: 'ruby',
+	podspec: 'ruby',
+	thor: 'ruby',
+	irb: 'ruby',
+	ruleslanguage: 'ruleslanguage',
+	rust: 'rust',
+	rs: 'rust',
+	scala: 'scala',
+	scheme: 'scheme',
+	scilab: 'scilab',
+	sci: 'scilab',
+	scss: 'scss',
+	shell: 'shell',
+	console: 'shell',
+	smali: 'smali',
+	smalltalk: 'smalltalk',
+	st: 'smalltalk',
+	sml: 'sml',
+	sqf: 'sqf',
+	sql: 'sql',
+	stan: 'stan',
+	stata: 'stata',
+	do: 'stata',
+	ado: 'stata',
+	step21: 'step21',
+	p21: 'step21',
+	step: 'step21',
+	stp: 'step21',
+	stylus: 'stylus',
+	styl: 'stylus',
+	subunit: 'subunit',
+	swift: 'swift',
+	taggerscript: 'taggerscript',
+	tap: 'tap',
+	tcl: 'tcl',
+	tk: 'tcl',
+	tex: 'tex',
+	thrift: 'thrift',
+	tp: 'tp',
+	twig: 'twig',
+	craftcms: 'twig',
+	typescript: 'typescript',
+	ts: 'typescript',
+	vala: 'vala',
+	vbnet: 'vbnet',
+	vb: 'vbnet',
+	'vbscript-html': 'vbscript-html',
+	vbscript: 'vbscript',
+	vbs: 'vbscript',
+	verilog: 'verilog',
+	v: 'verilog',
+	sv: 'verilog',
+	svh: 'verilog',
+	vhdl: 'vhdl',
+	vim: 'vim',
+	x86asm: 'x86asm',
+	xl: 'xl',
+	tao: 'xl',
+	xml: 'xml',
+	html: 'xml',
+	xhtml: 'xml',
+	rss: 'xml',
+	atom: 'xml',
+	xjb: 'xml',
+	xsd: 'xml',
+	xsl: 'xml',
+	plist: 'xml',
+	xquery: 'xquery',
+	xpath: 'xquery',
+	xq: 'xquery',
+	yaml: 'yaml',
+	yml: 'yaml',
+	YAML: 'yaml',
+	zephir: 'zephir',
+	zep: 'zephir'
+}

+ 232 - 123
src/views/myResource/file/box/markdownPreview/BoxMask.vue

@@ -1,154 +1,251 @@
 <template>
-	<transition
-		name="fade"
-		enter-active-class="ant-fade-enter ant-fade-enter-active"
-		leave-active-class="ant-fade-leave ant-fade-leave-active"
-	>
+	<transition name="fade">
 		<div class="markdown-preview-wrapper" v-show="visible" @click.self="closeMarkdownPreview">
-			<!-- 顶部工具栏 -->
+			<!-- 顶部信息栏 & 工具栏 -->
 			<div class="tip-wrapper" v-if="visible">
-				<div class="name" :title="$file.getFileNameComplete(fileInfo)">
-					{{ $file.getFileNameComplete(fileInfo) }}
+				<div class="name" :title="getFileNameComplete(fileInfo)">
+					{{ getFileNameComplete(fileInfo) }}
 					<span class="un-save" v-show="isModify">(未保存)</span>
 				</div>
-
-				<div class="editor-preview">在线预览{{ editable ? ' & 编辑' : '' }}</div>
-
+				<div class="editor-preveiw">在线预览{{ editable ? ' & 编辑' : '' }}</div>
 				<div class="tool-wrapper">
 					<a
 						class="item download-link"
 						target="_blank"
-						:href="$file.getDownloadFilePath(fileInfo)"
-						:download="$file.getFileNameComplete(fileInfo)"
+						:href="getDownloadFilePath(fileInfo)"
+						:download="getFileNameComplete(fileInfo)"
 					>
 						<download-outlined title="下载" />
 					</a>
-
 					<a-tooltip placement="bottom">
 						<template #title>
-							1. 点击文档以外的区域可退出查看<br />
-							2. 按 Esc 键可退出查看
+							<div>
+								1. 点击文档以外的区域可退出查看<br />
+								2. 按 Esc 键可退出查看
+							</div>
 						</template>
 						<div class="item text-wrapper">
 							<span class="text">操作提示</span>
 							<bulb-outlined />
 						</div>
 					</a-tooltip>
-
 					<close-outlined class="item" title="关闭预览" @click="closeMarkdownPreview" />
 				</div>
 			</div>
-
-			<!-- Markdown编辑器 -->
+			<!-- mavon-editor 组件,配置项说明文档 https://www.npmjs.com/package/mavon-editor -->
 			<a-spin :spinning="markdownLoading">
-				<mavon-editor
-					ref="mavonEditor"
-					v-model:value="markdownText"
+				<mavonEditor
+					ref="mavonEditorRef"
+					v-model="markdownText"
 					:toolbars="toolbars"
 					:editable="editable"
 					:toolbarsFlag="toolbarsFlag"
-					:external-link="externalLink"
-					:subfield="screenWidth > 768"
+					:externalLink="externalLink"
+					:subfield="screenWidth > 768 ? true : false"
 					defaultOpen="preview"
 					@save="handleModifyFileContent"
-				/>
+				></mavonEditor>
 			</a-spin>
 		</div>
 	</transition>
 </template>
 
 <script setup>
-	import { ref, computed, watch, onMounted, onUnmounted } from 'vue'
-	import { message } from 'ant-design-vue'
-	import { DownloadOutlined, BulbOutlined, CloseOutlined } from '@ant-design/icons-vue'
+	import { ref, computed, watch, nextTick, getCurrentInstance } from 'vue'
 	import { mavonEditor } from 'mavon-editor'
-	import { useMyResourceStore } from '@/store/myResource'
-	import { getFilePreview, modifyFileContent } from '@/api/myResource/file'
-
 	import 'mavon-editor/dist/css/index.css'
-	// 引入public里的样式如何写
+	// 代码高亮样式表
 	import '@/assets/mavonEditor/css/tomorrow-night.css'
 	import '@/assets/mavonEditor/css/github-markdown.css'
+	import { useMyResourceStore } from '@/store/myResource.js'
+	import { getFilePreview, modifyFileContent } from '@/api/myResource/file.js'
+	import { DownloadOutlined, BulbOutlined, CloseOutlined } from '@ant-design/icons-vue'
+	import tool from '@/utils/tool'
+
+	// 获取全局变量
+	const { proxy } = getCurrentInstance()
+
+	// 获取store
+	const myResourceStore = useMyResourceStore()
+
+	// 定义props
 	const props = defineProps({
 		fileInfo: Object,
 		editable: Boolean,
 		callback: Function
 	})
 
-	// Store & Utils
-	const store = useMyResourceStore()
+	// 从proxy中获取$file方法
+	const getFileNameComplete = (fileInfo) => {
+		return proxy.$file.getFileNameComplete(fileInfo)
+	}
+
+	const getDownloadFilePath = (fileInfo) => {
+		return proxy.$file.getDownloadFilePath(fileInfo)
+	}
 
-	// State
+	// 响应式数据
 	const visible = ref(false)
-	// const mavonEditor = ref(null)
-	const markdownText = ref('')
 	const originalMarkdownText = ref('')
+	const markdownText = ref('')
 	const markdownLoading = ref(false)
 
-	// Computed
-	const screenWidth = computed(() => store.screenWidth)
-	const isModify = computed(() => originalMarkdownText.value !== markdownText.value)
-	const toolbarsFlag = computed(() => props.editable)
+	// 暴露visible属性给父组件
+	defineExpose({ visible })
 
-	// Methods
-	const getMarkdownText = async () => {
-		try {
-			markdownLoading.value = true
-			const res = await getFilePreview({
-				userFileId: props.fileInfo.userFileId,
-				isMin: false,
-				shareBatchNum: props.fileInfo.shareBatchNum,
-				extractionCode: props.fileInfo.extractionCode
-			})
-			originalMarkdownText.value = res
-			markdownText.value = res
-		} finally {
-			markdownLoading.value = false
-		}
+	// 工具栏配置
+	const toolbars = {
+		bold: true, // 粗体
+		italic: true, // 斜体
+		header: true, // 标题
+		underline: true, // 下划线
+		strikethrough: true, // 中划线
+		mark: true, // 标记
+		superscript: true, // 上角标
+		subscript: true, // 下角标
+		quote: true, // 引用
+		ol: true, // 有序列表
+		ul: true, // 无序列表
+		link: true, // 链接
+		imagelink: true, // 图片链接
+		code: true, // code
+		table: true, // 表格
+		fullscreen: true, // 全屏编辑
+		readmodel: true, // 沉浸式阅读
+		htmlcode: true, // 展示html源码
+		help: true, // 帮助
+		/* 1.3.5 */
+		undo: true, // 上一步
+		redo: true, // 下一步
+		trash: true, // 清空
+		save: true, // 保存(触发 events 中的 save 事件)
+		/* 1.4.2 */
+		navigation: true, // 导航目录
+		/* 2.1.8 */
+		aligncenter: true, // 居中
+		alignleft: true, // 左对齐
+		alignright: true, // 右对齐
+		/* 2.2.1 */
+		subfield: true, // 单双栏模式
+		preview: true // 预览
 	}
 
-	const handleModifyFileContent = async () => {
-		try {
-			markdownLoading.value = true
-			const res = await modifyFileContent({
-				userFileId: props.fileInfo.userFileId,
-				fileContent: markdownText.value
-			})
-			if (res.success) {
-				message.success('已保存')
-				getMarkdownText()
-			} else {
-				message.error(res.message)
+	// 计算属性
+	// 屏幕宽度
+	const screenWidth = computed(() => {
+		return myResourceStore.screenWidth
+	})
+
+	// 是否修改
+	const isModify = computed(() => {
+		return originalMarkdownText.value !== markdownText.value
+	})
+
+	// 外链 cdn 改为本地引入
+	const externalLink = computed(() => {
+		let context = process.env.NODE_ENV === 'production' ? '/' : '/'
+		return {
+			markdown_css: function () {
+				// 这是你的markdown css文件路径
+				return `${context}mavonEditor/css/github-markdown.css`
+			},
+			hljs_js: function () {
+				// 这是你的hljs文件路径
+				return `${context}mavonEditor/js/highlight.min.js`
+			},
+			hljs_css: function () {
+				// 这是你的代码高亮配色文件路径
+				return `${context}mavonEditor/css/tomorrow-night.css`
+			},
+			hljs_lang: function () {
+				// 这是你的代码高亮语言解析路径
+				return `${context}mavonEditor/js/lang.hljs.js`
+			},
+			katex_css: function () {
+				// 这是你的katex配色方案路径路径
+				return `${context}mavonEditor/css/katex.min.css`
+			},
+			katex_js: function () {
+				// 这是你的katex.js路径
+				return `${context}mavonEditor/js/katex.min.js`
 			}
-		} catch (err) {
-			message.error(err.message)
-		} finally {
-			markdownLoading.value = false
 		}
-	}
+	})
 
-	const closeMarkdownPreview = () => {
-		visible.value = false
-		props.callback('cancel')
-	}
+	// 工具栏是否展示
+	const toolbarsFlag = computed(() => {
+		return props.editable
+	})
 
-	// Watchers
+	// 监听 markdown 查看组件 显隐状态变化
 	watch(visible, (val) => {
 		if (val) {
 			getMarkdownText()
-			document.addEventListener('keyup', handleKeyup)
+			// 添加键盘 Esc 事件
+			nextTick(() => {
+				document.addEventListener('keyup', handleKeyup)
+			})
 		} else {
 			document.removeEventListener('keyup', handleKeyup)
 		}
 	})
 
-	onUnmounted(() => {
-		document.removeEventListener('keyup', handleKeyup)
-	})
+	// 键盘事件处理函数
+	const handleKeyup = (e) => {
+		if (e.key === 'Escape') {
+			closeMarkdownPreview()
+		}
+	}
 
-	defineExpose({
-		visible
-	})
+	/**
+	 * 获取 markdown 文本内容
+	 */
+	const getMarkdownText = () => {
+		markdownLoading.value = true
+		getFilePreview({
+			userFileId: props.fileInfo.userFileId,
+			isMin: false,
+			shareBatchNum: props.fileInfo.shareBatchNum,
+			extractionCode: props.fileInfo.extractionCode,
+			token: tool.data.get('TOKEN')
+		}).then((res) => {
+			markdownLoading.value = false
+			originalMarkdownText.value = res
+			markdownText.value = res
+		})
+	}
+
+	/**
+	 * 修改 markdown 文本内容
+	 */
+	const handleModifyFileContent = () => {
+		markdownLoading.value = true
+		modifyFileContent({
+			userFileId: props.fileInfo.userFileId,
+			fileContent: markdownText.value
+		})
+			.then((res) => {
+				markdownLoading.value = false
+				if (res.success) {
+					proxy.$message.success('已保存')
+					getMarkdownText()
+				} else {
+					proxy.$message.error(res.message)
+				}
+			})
+			.catch((err) => {
+				markdownLoading.value = false
+				proxy.$message.error(err.message)
+			})
+	}
+
+	/**
+	 * 关闭 markdown 预览
+	 */
+	const closeMarkdownPreview = () => {
+		visible.value = false
+		props.callback('cancel')
+	}
 </script>
 
 <style lang="less" scoped>
@@ -167,17 +264,28 @@
 		text-align: center;
 		display: flex;
 		align-items: center;
-		animation: previewAnimation 0.3s forwards;
-
-		@keyframes previewAnimation {
-			from {
+		animation: imgPreviewAnimation 0.3s;
+		-webkit-animation: imgPreviewAnimation 0.3s; /* Safari and Chrome */
+		animation-iteration-count: 0.3;
+		-webkit-animation-iteration-count: 0.3;
+		animation-fill-mode: forwards;
+		-webkit-animation-fill-mode: forwards; /* Safari 和 Chrome */
+		@keyframes imgPreviewAnimation {
+			0% {
 				background: transparent;
 			}
-			to {
+			100% {
+				background: rgba(0, 0, 0, 0.8);
+			}
+		}
+		@keyframes imgPreviewAnimation {
+			0% {
+				background: transparent;
+			}
+			100% {
 				background: rgba(0, 0, 0, 0.8);
 			}
 		}
-
 		.tip-wrapper {
 			position: fixed;
 			top: 0;
@@ -233,37 +341,38 @@
 				}
 			}
 		}
-		// >>> .v-note-wrapper {
-		// 	box-shadow: none !important;
-		// 	border: 1px solid $BorderBase;
-		// 	.v-note-op {
-		// 		border-bottom-color: $BorderBase;
-		// 		.op-image {
-		// 			.dropdown-item:nth-of-type(2) {
-		// 				display: none;
-		// 			}
-		// 		}
-		// 	}
-		// 	.v-note-navigation-wrapper {
-		// 		.v-note-navigation-content {
-		// 			h1,
-		// 			h2,
-		// 			h3,
-		// 			h4,
-		// 			h5,
-		// 			h6 {
-		// 				color: $PrimaryText;
-		// 				&:hover {
-		// 					color: $PrimaryText;
-		// 				}
-		// 			}
-		// 		}
-		// 	}
-		// }
-		// >>> .v-note-wrapper:not(.fullscreen) {
-		// 	margin: 56px auto 0 auto;
-		// 	width: 90vw;
-		// 	height: calc(100vh - 80px);
-		// }
+
+		:deep(.v-note-wrapper) {
+			box-shadow: none !important;
+			border: 1px solid @border-base;
+			.v-note-op {
+				border-bottom-color: @border-base;
+				.op-image {
+					.dropdown-item:nth-of-type(2) {
+						display: none;
+					}
+				}
+			}
+			.v-note-navigation-wrapper {
+				.v-note-navigation-content {
+					h1,
+					h2,
+					h3,
+					h4,
+					h5,
+					h6 {
+						color: @primary-text;
+						&:hover {
+							color: @primary-text;
+						}
+					}
+				}
+			}
+		}
+		:deep(.v-note-wrapper:not(.fullscreen)) {
+			margin: 56px auto 0 auto;
+			width: 90vw;
+			height: calc(100vh - 80px);
+		}
 	}
 </style>

+ 2 - 1
src/views/myResource/file/box/markdownPreview/index.js

@@ -2,7 +2,7 @@ import { createApp } from 'vue'
 import Antd from 'ant-design-vue'
 // 导入组件
 import MarkdownPreview from './BoxMask.vue'
-
+import snowy from '@/snowy'
 let markdownPreviewInstance = null
 let markdownPreviewApp = null
 
@@ -21,6 +21,7 @@ const initInstanceMarkdownPreview = (fileInfo, editable, callback) => {
 	})
 	// 注册 Ant Design Vue 组件
 	markdownPreviewApp.use(Antd)
+	markdownPreviewApp.use(snowy)
 	markdownPreviewInstance = markdownPreviewApp.mount(mountNode)
 	return mountNode
 }

Some files were not shown because too many files changed in this diff