From 48289fafc6b8e48d2d5482e14bb6c7eac12398ac Mon Sep 17 00:00:00 2001
From: junleea <354425203@qq.com>
Date: Wed, 21 May 2025 14:25:26 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=9C=AC=E6=96=87=E4=BB=B6=E6=B7=BB?=
=?UTF-8?q?=E5=8A=A0=E9=A2=84=E8=A7=88=E7=BC=96=E8=BE=91=E7=AD=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
package-lock.json | 145 +++++++++++++++++++++++++
package.json | 2 +
src/api/file.ts | 24 +++++
src/components/table-custom.vue | 10 +-
src/views/system/gen-chat.vue | 2 -
src/views/system/manage-file.vue | 104 ++++++++++++++++--
src/views/system/manage-model.vue | 1 -
src/views/system/slide-code-edit.vue | 152 +++++++++++++++++++++++++++
yarn.lock | 130 ++++++++++++++++++++++-
9 files changed, 559 insertions(+), 11 deletions(-)
create mode 100644 src/views/system/slide-code-edit.vue
diff --git a/package-lock.json b/package-lock.json
index 6618580..522e9e1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -14,6 +14,7 @@
"@wangeditor/editor-for-vue": "^5.1.12",
"axios": "^1.6.3",
"clipboard": "^2.0.11",
+ "codemirror": "^6.0.1",
"countup.js": "^2.8.0",
"cropperjs": "^2.0.0",
"d3": "^7.9.0",
@@ -37,6 +38,7 @@
"pinia": "^2.1.7",
"vditor": "^3.11.0",
"vue": "^3.4.5",
+ "vue-codemirror": "^6.1.1",
"vue-cropper": "1.1.1",
"vue-cropperjs": "^5.0.0",
"vue-echarts": "^6.6.9",
@@ -250,6 +252,79 @@
"resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz",
"integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ=="
},
+ "node_modules/@codemirror/autocomplete": {
+ "version": "6.18.6",
+ "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.18.6.tgz",
+ "integrity": "sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==",
+ "dependencies": {
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.17.0",
+ "@lezer/common": "^1.0.0"
+ }
+ },
+ "node_modules/@codemirror/commands": {
+ "version": "6.8.1",
+ "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.8.1.tgz",
+ "integrity": "sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==",
+ "dependencies": {
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/state": "^6.4.0",
+ "@codemirror/view": "^6.27.0",
+ "@lezer/common": "^1.1.0"
+ }
+ },
+ "node_modules/@codemirror/language": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.11.0.tgz",
+ "integrity": "sha512-A7+f++LodNNc1wGgoRDTt78cOwWm9KVezApgjOMp1W4hM0898nsqBXwF+sbePE7ZRcjN7Sa1Z5m2oN27XkmEjQ==",
+ "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.8.5",
+ "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.8.5.tgz",
+ "integrity": "sha512-s3n3KisH7dx3vsoeGMxsbRAgKe4O1vbrnKBClm99PU0fWxmxsx5rR2PfqQgIt+2MMJBHbiJ5rfIdLYfB9NNvsA==",
+ "dependencies": {
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.35.0",
+ "crelt": "^1.0.5"
+ }
+ },
+ "node_modules/@codemirror/search": {
+ "version": "6.5.11",
+ "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.11.tgz",
+ "integrity": "sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==",
+ "dependencies": {
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.0.0",
+ "crelt": "^1.0.5"
+ }
+ },
+ "node_modules/@codemirror/state": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.5.2.tgz",
+ "integrity": "sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==",
+ "dependencies": {
+ "@marijn/find-cluster-break": "^1.0.0"
+ }
+ },
+ "node_modules/@codemirror/view": {
+ "version": "6.36.8",
+ "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.36.8.tgz",
+ "integrity": "sha512-yoRo4f+FdnD01fFt4XpfpMCcCAo9QvZOtbrXExn4SqzH32YC6LgzqxfLZw/r6Ge65xyY03mK/UfUqrVw1gFiFg==",
+ "dependencies": {
+ "@codemirror/state": "^6.5.0",
+ "style-mod": "^4.1.0",
+ "w3c-keyname": "^2.2.4"
+ }
+ },
"node_modules/@cropper/element": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@cropper/element/-/element-2.0.0.tgz",
@@ -556,6 +631,32 @@
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
+ "node_modules/@lezer/common": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.3.tgz",
+ "integrity": "sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA=="
+ },
+ "node_modules/@lezer/highlight": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.1.tgz",
+ "integrity": "sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==",
+ "dependencies": {
+ "@lezer/common": "^1.0.0"
+ }
+ },
+ "node_modules/@lezer/lr": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.2.tgz",
+ "integrity": "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==",
+ "dependencies": {
+ "@lezer/common": "^1.0.0"
+ }
+ },
+ "node_modules/@marijn/find-cluster-break": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz",
+ "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g=="
+ },
"node_modules/@mermaid-js/parser": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.4.0.tgz",
@@ -1598,6 +1699,20 @@
"tiny-emitter": "^2.0.0"
}
},
+ "node_modules/codemirror": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/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/codepage": {
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz",
@@ -1684,6 +1799,11 @@
"node": ">=0.8"
}
},
+ "node_modules/crelt": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz",
+ "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g=="
+ },
"node_modules/cropperjs": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-2.0.0.tgz",
@@ -4943,6 +5063,11 @@
"url": "https://github.com/sponsors/antfu"
}
},
+ "node_modules/style-mod": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz",
+ "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw=="
+ },
"node_modules/stylis": {
"version": "4.3.6",
"resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz",
@@ -5373,6 +5498,21 @@
}
}
},
+ "node_modules/vue-codemirror": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/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-cropper": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/vue-cropper/-/vue-cropper-1.1.1.tgz",
@@ -5480,6 +5620,11 @@
"typescript": "*"
}
},
+ "node_modules/w3c-keyname": {
+ "version": "2.2.8",
+ "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz",
+ "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="
+ },
"node_modules/web-worker": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.5.0.tgz",
diff --git a/package.json b/package.json
index dc2d98c..2b24d4f 100644
--- a/package.json
+++ b/package.json
@@ -14,6 +14,7 @@
"@wangeditor/editor-for-vue": "^5.1.12",
"axios": "^1.6.3",
"clipboard": "^2.0.11",
+ "codemirror": "^6.0.1",
"countup.js": "^2.8.0",
"cropperjs": "^2.0.0",
"d3": "^7.9.0",
@@ -37,6 +38,7 @@
"pinia": "^2.1.7",
"vditor": "^3.11.0",
"vue": "^3.4.5",
+ "vue-codemirror": "^6.1.1",
"vue-cropper": "1.1.1",
"vue-cropperjs": "^5.0.0",
"vue-echarts": "^6.6.9",
diff --git a/src/api/file.ts b/src/api/file.ts
index 1524479..482c483 100644
--- a/src/api/file.ts
+++ b/src/api/file.ts
@@ -46,4 +46,28 @@ export const DelUserFileService = (Data) => {
'token': Data.token, //token
}
})
+}
+
+export const FindFileContentService = (Data) => {
+ const params = new URLSearchParams();
+ for (let key in Data) {
+ params.append(key, Data[key])
+ }
+ return request.post('/file/find_file_content', params,{
+ headers: {
+ 'token': Data.token, //token
+ }
+ })
+}
+
+export const UpdateFileContentService = (Data) => {
+ const params = new URLSearchParams();
+ for (let key in Data) {
+ params.append(key, Data[key])
+ }
+ return request.post('/file/update_file_content', params,{
+ headers: {
+ 'token': Data.token, //token
+ }
+ })
}
\ No newline at end of file
diff --git a/src/components/table-custom.vue b/src/components/table-custom.vue
index 61cab51..122f0bc 100644
--- a/src/components/table-custom.vue
+++ b/src/components/table-custom.vue
@@ -59,9 +59,13 @@
{{item.operate.push.label}}
-
+
{{item.operate.gen.label}}
+
+ {{item.operate.genv2.label}}
+
+
{{ item.formatter(row[item.prop]) }}
@@ -155,6 +159,10 @@ const props = defineProps({
type: Function,
default: () => { }
},
+ genOperateV2: {
+ type: Function,
+ default: () => { }
+ },
})
let {
diff --git a/src/views/system/gen-chat.vue b/src/views/system/gen-chat.vue
index bfa5177..0df78a8 100644
--- a/src/views/system/gen-chat.vue
+++ b/src/views/system/gen-chat.vue
@@ -342,8 +342,6 @@ import mermaidPlugin from "@agoose77/markdown-it-mermaid";
import "katex/dist/katex.min.css";
import Vditor from 'vditor';
import 'vditor/dist/index.css';
-import { json } from "d3";
-import { pa } from "element-plus/es/locale";
interface Message {
diff --git a/src/views/system/manage-file.vue b/src/views/system/manage-file.vue
index bc31a15..019748e 100644
--- a/src/views/system/manage-file.vue
+++ b/src/views/system/manage-file.vue
@@ -3,7 +3,7 @@
+ :delFunc="handleDelete" :changePage="changePage" :currentPage="page.index" :editFunc="handleEdit" :genOperate="handleGenOperate" :refresh="getData" :genOperateV2="handleGenOperateV2">
上传文件
@@ -21,6 +21,17 @@
+
+
([]);
const allData = ref([]);
const downloadFileVisible = ref(false);
const downloadFileUrl = ref('');
+const code_edit = ref(false);
+const code_edit_content = ref('');
+const edit_file_name = ref('');
+const edit_file_id = ref(0);
// 查询相关
const query = reactive({
@@ -106,8 +121,7 @@ let columns = ref([
{ prop: "UploadType", label: "上传类型",width: 100},
{ prop: 'CreatedAt', label: '创建时间',type: 'date',width: 220 },
{ prop: 'UpdatedAt', label: '更新时间',type: 'date',width: 220 },
- { prop: 'operator', label: '操作' , operate: { view: false, edit: true, delete: true,push: {link: false,label:"继续该会话"} ,gen: {show: true,label:"下载文件"}},
- align: 'center', fixed: 'right' },
+ { prop: 'operator', label: '操作' , operate: { view: false, edit: true, delete: true,push: {link: false,label:"继续该会话"} ,gen: {show: true,label:"下载文件"}, genv2:{type:"file_edit", label:"编辑文件内容", show:true}},align: 'center', fixed: 'right' },
])
const getData = async () => {
@@ -252,6 +266,34 @@ const handleGenOperate = async (row: File) => {
downloadFile(row);
}
+
+const editFileType= {'txt':true,'json':true,'md':true,'py':true,'java':true,'cpp':true,'go':true,'js':true,'html':true,'css':true}
+
+const handleGenOperateV2 = async (row: File, content: any) => {
+ if (content.type == 'download'){
+ console.log("gen row:", row);
+ //弹出提示框
+ downloadFile(row);
+ }else if (content.type == 'file_edit'){
+ //文件类型是否支持
+ let fileName = row.UserFileName;
+ //按.分割
+ let fileType = fileName.split(".")[1];
+ console.log("fileType:", fileType);
+ if(editFileType[fileType] == undefined){
+ ElMessage.error("不支持的文件类型:"+fileType+",该文件类型不支持在线编辑,请下载后编辑");
+ return;
+ }
+ //获取文本内容
+ await FindFileContent(row);
+ code_edit.value = true;
+
+ }else{
+ ElMessage.error("操作类型错误");
+ }
+}
+
+
const downloadFile = async (row: File) => {
const fileUrl_ = fileUrl2+row.file_store_name +"?token=" + localStorage.getItem('token');
//对话框,加入标签
@@ -291,6 +333,56 @@ const handleDelete = async (row: File) => {
console.log(e);
}
}
+
+const FindFileContent = async (row: File) => {
+ let req={
+ token: localStorage.getItem('token'),
+ user_file_id: row.ID,
+ };
+ edit_file_name.value = row.UserFileName;
+ edit_file_id.value = row.ID;
+ try{
+ let result = await FindFileContentService(req);
+ if(result["code"] === 0){
+ //console.log("file content:", result["data"][0]);
+ code_edit_content.value = result["data"][0]["FileContent"];
+ console.log("code_edit_content:", code_edit_content.value);
+ }else{
+ ElMessage.error("删除失败");
+ }
+ }catch(e){
+ console.log(e);
+ }
+}
+
+const closeFileEdit = () => {
+ code_edit.value = false;
+ code_edit_content.value = '';
+}
+
+const updateFileContent = async (value) => {
+ console.log("file content:", value);
+}
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/views/system/manage-model.vue b/src/views/system/manage-model.vue
index 6baf5b3..e42ac5d 100644
--- a/src/views/system/manage-model.vue
+++ b/src/views/system/manage-model.vue
@@ -38,7 +38,6 @@ import TableCustom from '@/components/table-custom.vue';
import TableDetail from '@/components/table-detail.vue';
import TableSearch from '@/components/table-search.vue';
import { FormOption, FormOptionList } from '@/types/form-option';
-import { pa } from 'element-plus/es/locale';
// 查询相关
diff --git a/src/views/system/slide-code-edit.vue b/src/views/system/slide-code-edit.vue
new file mode 100644
index 0000000..a8e3171
--- /dev/null
+++ b/src/views/system/slide-code-edit.vue
@@ -0,0 +1,152 @@
+
+
+
+
+
保存修改
+
+
{{ fileName }}
+
+
+
+
+
+
+
+
+
diff --git a/yarn.lock b/yarn.lock
index 01742ae..5a1b7f3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -87,6 +87,72 @@
resolved "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz"
integrity sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==
+"@codemirror/autocomplete@^6.0.0":
+ version "6.18.6"
+ resolved "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.18.6.tgz"
+ integrity sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==
+ dependencies:
+ "@codemirror/language" "^6.0.0"
+ "@codemirror/state" "^6.0.0"
+ "@codemirror/view" "^6.17.0"
+ "@lezer/common" "^1.0.0"
+
+"@codemirror/commands@^6.0.0", "@codemirror/commands@6.x":
+ version "6.8.1"
+ resolved "https://registry.npmjs.org/@codemirror/commands/-/commands-6.8.1.tgz"
+ integrity sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==
+ dependencies:
+ "@codemirror/language" "^6.0.0"
+ "@codemirror/state" "^6.4.0"
+ "@codemirror/view" "^6.27.0"
+ "@lezer/common" "^1.1.0"
+
+"@codemirror/language@^6.0.0", "@codemirror/language@6.x":
+ version "6.11.0"
+ resolved "https://registry.npmjs.org/@codemirror/language/-/language-6.11.0.tgz"
+ integrity sha512-A7+f++LodNNc1wGgoRDTt78cOwWm9KVezApgjOMp1W4hM0898nsqBXwF+sbePE7ZRcjN7Sa1Z5m2oN27XkmEjQ==
+ 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"
+
+"@codemirror/lint@^6.0.0":
+ version "6.8.5"
+ resolved "https://registry.npmjs.org/@codemirror/lint/-/lint-6.8.5.tgz"
+ integrity sha512-s3n3KisH7dx3vsoeGMxsbRAgKe4O1vbrnKBClm99PU0fWxmxsx5rR2PfqQgIt+2MMJBHbiJ5rfIdLYfB9NNvsA==
+ dependencies:
+ "@codemirror/state" "^6.0.0"
+ "@codemirror/view" "^6.35.0"
+ crelt "^1.0.5"
+
+"@codemirror/search@^6.0.0":
+ version "6.5.11"
+ resolved "https://registry.npmjs.org/@codemirror/search/-/search-6.5.11.tgz"
+ integrity sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==
+ dependencies:
+ "@codemirror/state" "^6.0.0"
+ "@codemirror/view" "^6.0.0"
+ crelt "^1.0.5"
+
+"@codemirror/state@^6.0.0", "@codemirror/state@^6.4.0", "@codemirror/state@^6.5.0", "@codemirror/state@6.x":
+ version "6.5.2"
+ resolved "https://registry.npmjs.org/@codemirror/state/-/state-6.5.2.tgz"
+ integrity sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==
+ dependencies:
+ "@marijn/find-cluster-break" "^1.0.0"
+
+"@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@^6.23.0", "@codemirror/view@^6.27.0", "@codemirror/view@^6.35.0", "@codemirror/view@6.x":
+ version "6.36.8"
+ resolved "https://registry.npmjs.org/@codemirror/view/-/view-6.36.8.tgz"
+ integrity sha512-yoRo4f+FdnD01fFt4XpfpMCcCAo9QvZOtbrXExn4SqzH32YC6LgzqxfLZw/r6Ge65xyY03mK/UfUqrVw1gFiFg==
+ dependencies:
+ "@codemirror/state" "^6.5.0"
+ style-mod "^4.1.0"
+ w3c-keyname "^2.2.4"
+
"@cropper/element-canvas@^2.0.0":
version "2.0.0"
resolved "https://registry.npmjs.org/@cropper/element-canvas/-/element-canvas-2.0.0.tgz"
@@ -287,6 +353,30 @@
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
+"@lezer/common@^1.0.0", "@lezer/common@^1.1.0":
+ version "1.2.3"
+ resolved "https://registry.npmjs.org/@lezer/common/-/common-1.2.3.tgz"
+ integrity sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==
+
+"@lezer/highlight@^1.0.0":
+ version "1.2.1"
+ resolved "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.1.tgz"
+ integrity sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==
+ dependencies:
+ "@lezer/common" "^1.0.0"
+
+"@lezer/lr@^1.0.0":
+ version "1.4.2"
+ resolved "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.2.tgz"
+ integrity sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==
+ dependencies:
+ "@lezer/common" "^1.0.0"
+
+"@marijn/find-cluster-break@^1.0.0":
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz"
+ integrity sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==
+
"@mermaid-js/parser@^0.4.0":
version "0.4.0"
resolved "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.4.0.tgz"
@@ -1049,6 +1139,19 @@ clipboard@^2.0.11:
select "^1.1.2"
tiny-emitter "^2.0.0"
+codemirror@^6.0.1, codemirror@6.x:
+ version "6.0.1"
+ resolved "https://registry.npmjs.org/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"
+
codepage@~1.15.0:
version "1.15.0"
resolved "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz"
@@ -1145,6 +1248,11 @@ crc-32@~1.2.0, crc-32@~1.2.1:
resolved "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz"
integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==
+crelt@^1.0.5:
+ version "1.0.6"
+ resolved "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz"
+ integrity sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==
+
cropperjs@^1.5.6:
version "1.6.2"
resolved "https://registry.npmjs.org/cropperjs/-/cropperjs-1.6.2.tgz"
@@ -3122,6 +3230,11 @@ strip-literal@^1.0.0:
dependencies:
acorn "^8.10.0"
+style-mod@^4.0.0, style-mod@^4.1.0:
+ version "4.1.2"
+ resolved "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz"
+ integrity sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==
+
stylis@^4.1.2, stylis@^4.1.3, stylis@^4.3.6:
version "4.3.6"
resolved "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz"
@@ -3348,6 +3461,16 @@ vscode-uri@~3.0.8:
resolved "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz"
integrity sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==
+vue-codemirror@^6.1.1:
+ version "6.1.1"
+ resolved "https://registry.npmjs.org/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"
+
vue-cropper@1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/vue-cropper/-/vue-cropper-1.1.1.tgz"
@@ -3404,7 +3527,7 @@ vue-tsc@^0.38.4:
dependencies:
"@volar/vue-typescript" "0.38.9"
-vue@*, "vue@^2.6.12 || ^3.1.1", "vue@^2.6.14 || ^3.3.0", "vue@^3.0.0-0 || ^2.6.0", vue@^3.0.5, vue@^3.2.0, vue@^3.2.25, vue@^3.2.47, vue@^3.3.4, vue@^3.4.5, vue@>=3.0.0, "vue@2 || 3", vue@3.4.21:
+vue@*, "vue@^2.6.12 || ^3.1.1", "vue@^2.6.14 || ^3.3.0", "vue@^3.0.0-0 || ^2.6.0", vue@^3.0.5, vue@^3.2.0, vue@^3.2.25, vue@^3.2.47, vue@^3.3.4, vue@^3.4.5, vue@>=3.0.0, "vue@2 || 3", vue@3.4.21, vue@3.x:
version "3.4.21"
resolved "https://registry.npmjs.org/vue/-/vue-3.4.21.tgz"
integrity sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==
@@ -3415,6 +3538,11 @@ vue@*, "vue@^2.6.12 || ^3.1.1", "vue@^2.6.14 || ^3.3.0", "vue@^3.0.0-0 || ^2.6.0
"@vue/server-renderer" "3.4.21"
"@vue/shared" "3.4.21"
+w3c-keyname@^2.2.4:
+ version "2.2.8"
+ resolved "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz"
+ integrity sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==
+
web-worker@^1.2.0:
version "1.5.0"
resolved "https://registry.npmjs.org/web-worker/-/web-worker-1.5.0.tgz"