From 23797a5ec5eafdfcc5215efbd96cc509f6963f98 Mon Sep 17 00:00:00 2001 From: novrain Date: Tue, 12 Dec 2023 23:21:32 +0800 Subject: [PATCH 1/2] :rocket: using lumino widget. --- package.json | 21 +- src/renderer/src/App.vue | 5 +- src/renderer/src/components/SerialSession.vue | 10 +- .../src/components/lumino/ItemWidget.ts | 72 +++ .../src/components/lumino/LuminoBoxPanel.vue | 65 +++ .../src/components/lumino/LuminoWidget.vue | 56 +++ src/renderer/src/main.ts | 1 - src/renderer/src/store/session.ts | 8 + src/renderer/src/views/SessionManager.vue | 56 ++- tsconfig.vite.json | 7 +- yarn.lock | 412 ++++++++++++++---- 11 files changed, 587 insertions(+), 126 deletions(-) create mode 100644 src/renderer/src/components/lumino/ItemWidget.ts create mode 100644 src/renderer/src/components/lumino/LuminoBoxPanel.vue create mode 100644 src/renderer/src/components/lumino/LuminoWidget.vue diff --git a/package.json b/package.json index 9d2c17c..38fc5cc 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,10 @@ "forge:publish": "electron-forge publish" }, "dependencies": { + "@fortawesome/fontawesome-free": "^6.5.1", "@intlify/unplugin-vue-i18n": "^1.5.0", + "@lumino/default-theme": "^2.1.4", + "@lumino/widgets": "^2.3.1", "@mdi/font": "7.3.67", "@serialport/binding-abstract": "^10.1.0", "buffer": "^6.0.3", @@ -40,13 +43,13 @@ "js-yaml": "^4.1.0", "macos-release": "^3.2.0", "pinia": "^2.1.7", - "reflect-metadata": "^0.1.13", + "reflect-metadata": "^0.1.14", "roboto-fontface": "*", "rxjs": "^7.8.1", "serialport": "^12.0.0", "splitpanes": "^3.1.5", "stylus": "^0.62.0", - "vue": "^3.3.10", + "vue": "^3.3.11", "vue-i18n": "^9.8.0", "vue-router": "^4.2.5", "vuetify": "^3.4.6", @@ -58,7 +61,7 @@ "windows-native-registry": "^3.2.2" }, "devDependencies": { - "@babel/types": "^7.23.5", + "@babel/types": "^7.23.6", "@electron-forge/cli": "^7.2.0", "@electron-forge/maker-deb": "^7.2.0", "@electron-forge/maker-rpm": "^7.2.0", @@ -67,10 +70,10 @@ "@electron-forge/plugin-auto-unpack-natives": "^7.2.0", "@types/jest": "^29.5.11", "@types/js-yaml": "^4.0.9", - "@types/node": "^20.10.3", - "@typescript-eslint/eslint-plugin": "^6.13.2", - "@typescript-eslint/parser": "^6.13.2", - "@vitejs/plugin-vue": "^4.5.1", + "@types/node": "^20.10.4", + "@typescript-eslint/eslint-plugin": "^6.14.0", + "@typescript-eslint/parser": "^6.14.0", + "@vitejs/plugin-vue": "^4.5.2", "@vue/eslint-config-typescript": "^12.0.0", "@vue/test-utils": "^2.4.3", "@vue/vue3-jest": "^29.2.6", @@ -84,8 +87,8 @@ "ts-jest": "^29.1.1", "typescript": "^5.3.3", "unplugin-fonts": "^1.1.1", - "vite": "^5.0.6", - "vite-plugin-vuetify": "^1.0.2", + "vite": "^5.0.8", + "vite-plugin-vuetify": "^2.0.1", "vue-tsc": "^1.8.25", "wait-on": "^7.2.0" }, diff --git a/src/renderer/src/App.vue b/src/renderer/src/App.vue index 151d386..f7f7e8c 100644 --- a/src/renderer/src/App.vue +++ b/src/renderer/src/App.vue @@ -54,6 +54,7 @@ + + \ No newline at end of file diff --git a/src/renderer/src/components/lumino/LuminoWidget.vue b/src/renderer/src/components/lumino/LuminoWidget.vue new file mode 100644 index 0000000..40171a1 --- /dev/null +++ b/src/renderer/src/components/lumino/LuminoWidget.vue @@ -0,0 +1,56 @@ + + + + + \ No newline at end of file diff --git a/src/renderer/src/main.ts b/src/renderer/src/main.ts index 4fed22c..f11674d 100644 --- a/src/renderer/src/main.ts +++ b/src/renderer/src/main.ts @@ -12,7 +12,6 @@ import { createApp } from 'vue' // Plugins import { registerPlugins } from '@/plugins' -import 'splitpanes/dist/splitpanes.css' const app = createApp(App) diff --git a/src/renderer/src/store/session.ts b/src/renderer/src/store/session.ts index a61cee3..bb48ea4 100644 --- a/src/renderer/src/store/session.ts +++ b/src/renderer/src/store/session.ts @@ -51,6 +51,14 @@ export const useSessionStore = defineStore('session', { this.sessions = this.sessions.filter(s => { return !(s.id === session.id) }) + }, + setSessionName(session: Session, name: string) { + const s = this.sessions.find(s => { + return (s.id === session.id) + }) + if (s) { + s.name = name + } } } }) diff --git a/src/renderer/src/views/SessionManager.vue b/src/renderer/src/views/SessionManager.vue index bfb93a9..84b1442 100644 --- a/src/renderer/src/views/SessionManager.vue +++ b/src/renderer/src/views/SessionManager.vue @@ -1,37 +1,21 @@ diff --git a/tsconfig.vite.json b/tsconfig.vite.json index c61d6c1..293fde7 100644 --- a/tsconfig.vite.json +++ b/tsconfig.vite.json @@ -20,7 +20,12 @@ ], "types": [ "element-plus/global" - ] + ], + "paths": { + "@/*": ["./src/renderer/src/*"], + "@W/*": ["./src/wavy/*"], + "@M/*": ["./src/main/*"], + } }, "include": [ "src/renderer/**/*.ts", diff --git a/yarn.lock b/yarn.lock index 4951606..dcb0b43 100644 --- a/yarn.lock +++ b/yarn.lock @@ -318,6 +318,15 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" +"@babel/types@^7.23.6": + version "7.23.6" + resolved "http://47.122.4.61:4873/@babel%2ftypes/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd" + integrity sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "http://47.122.4.61:4873/@bcoe%2fv8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -846,6 +855,11 @@ resolved "http://47.122.4.61:4873/@floating-ui%2futils/-/utils-0.1.6.tgz#22958c042e10b67463997bd6ea7115fe28cbcaf9" integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A== +"@fortawesome/fontawesome-free@^6.5.1": + version "6.5.1" + resolved "https://registry.npmmirror.com/@fortawesome/fontawesome-free/-/fontawesome-free-6.5.1.tgz#55cc8410abf1003b726324661ce5b0d1c10de258" + integrity sha512-CNy5vSwN3fsUStPRLX7fUYojyuzoEMSXPl7zSLJ8TgtRfjv24LOnOWKT2zYwaHZCJGkdyRnTmstR0P+Ah503Gw== + "@gar/promisify@^1.1.3": version "1.1.3" resolved "http://47.122.4.61:4873/@gar%2fpromisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" @@ -1189,6 +1203,114 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@lumino/algorithm@^2.0.1": + version "2.0.1" + resolved "https://mirrors.cloud.tencent.com/npm/@lumino/algorithm/-/algorithm-2.0.1.tgz#1045f4629f96076b431fc1a8c0005e13d8b95a56" + integrity sha512-iA+uuvA7DeNFB0/cQpIWNgO1c6z4pOSigifjstLy+rxf1U5ZzxIq+xudnEuTbWgKSTviG02j4cKwCyx1PO6rzA== + +"@lumino/collections@^2.0.1": + version "2.0.1" + resolved "https://mirrors.cloud.tencent.com/npm/@lumino/collections/-/collections-2.0.1.tgz#cfb9afa9837eddb72d1939e73dcd5256feaf37ef" + integrity sha512-8TbAU/48XVPKc/FOhGHLuugf2Gmx6vhVEx867KGG5fLwDOI8EW4gTno78yJUk8G0QpgNa+sdpB/LwbJFNIratg== + dependencies: + "@lumino/algorithm" "^2.0.1" + +"@lumino/commands@^2.2.0": + version "2.2.0" + resolved "https://mirrors.cloud.tencent.com/npm/@lumino/commands/-/commands-2.2.0.tgz#ec3ee704a39ec5ca4adcae40c4bd9d606d901121" + integrity sha512-xm+4rFithAd/DLZheQcS0GJaI3m0gVg07mCEZAWBLolN5e7w6XTr17VuD7J6KSjdBygMKZ3n8GlEkpcRNWEajA== + dependencies: + "@lumino/algorithm" "^2.0.1" + "@lumino/coreutils" "^2.1.2" + "@lumino/disposable" "^2.1.2" + "@lumino/domutils" "^2.0.1" + "@lumino/keyboard" "^2.0.1" + "@lumino/signaling" "^2.1.2" + "@lumino/virtualdom" "^2.0.1" + +"@lumino/coreutils@^2.1.2": + version "2.1.2" + resolved "https://mirrors.cloud.tencent.com/npm/@lumino/coreutils/-/coreutils-2.1.2.tgz#354e658353e99969329c9ee33b0692ecd97abe1f" + integrity sha512-vyz7WzchTO4HQ8iVAxvSUmb5o/8t3cz1vBo8V4ZIaPGada0Jx0xe3tKQ8bXp4pjHc+AEhMnkCnlUyVYMWbnj4A== + +"@lumino/default-theme@^2.1.4": + version "2.1.4" + resolved "https://mirrors.cloud.tencent.com/npm/@lumino/default-theme/-/default-theme-2.1.4.tgz#91caebd07b84053d0105caf1bd898a20e46d51b9" + integrity sha512-9Fs8imKEmVbsDXH3TVSTTSGEKdcpVXxN2vDmmgqTvHkbeaTJG6nuXxe3bx3bgcdGC4gSUWFQNojRxUZ7MPyXIg== + dependencies: + "@lumino/dragdrop" "^2.1.4" + "@lumino/widgets" "^2.3.1" + +"@lumino/disposable@^2.1.2": + version "2.1.2" + resolved "https://mirrors.cloud.tencent.com/npm/@lumino/disposable/-/disposable-2.1.2.tgz#a4df34a50d23e577051eee27c000fc9ad37f35bb" + integrity sha512-0qmB6zPt9+uj4SVMTfISn0wUOjYHahtKotwxDD5flfcscj2gsXaFCXO4Oqot1zcsZbg8uJmTUhEzAvFW0QhFNA== + dependencies: + "@lumino/signaling" "^2.1.2" + +"@lumino/domutils@^2.0.1": + version "2.0.1" + resolved "https://mirrors.cloud.tencent.com/npm/@lumino/domutils/-/domutils-2.0.1.tgz#1852eadd2658cf754e17f2d0e5c18d1737a91530" + integrity sha512-tbcfhsdKH04AMjSgYAYGD2xE80YcjrqKnfMTeU2NHt4J294Hzxs1GvEmSMk5qJ3Bbgwx6Z4BbQ7apnFg8Gc6cA== + +"@lumino/dragdrop@^2.1.4": + version "2.1.4" + resolved "https://mirrors.cloud.tencent.com/npm/@lumino/dragdrop/-/dragdrop-2.1.4.tgz#b5c90cdb27cc4d7c57e34cbe40897acadb59323f" + integrity sha512-/ckaYPHIZC1Ff0pU2H3WDI/Xm7V3i0XnyYG4PeZvG1+ovc0I0zeZtlb6qZXne0Vi2r8L2a0624FjF2CwwgNSnA== + dependencies: + "@lumino/coreutils" "^2.1.2" + "@lumino/disposable" "^2.1.2" + +"@lumino/keyboard@^2.0.1": + version "2.0.1" + resolved "https://mirrors.cloud.tencent.com/npm/@lumino/keyboard/-/keyboard-2.0.1.tgz#a16db961e29a94f87b2669c989b2b358590ce1f6" + integrity sha512-R2mrH9HCEcv/0MSAl7bEUbjCNOnhrg49nXZBEVckg//TEG+sdayCsyrbJNMPcZ07asIPKc6mq3v7DpAmDKqh+w== + +"@lumino/messaging@^2.0.1": + version "2.0.1" + resolved "https://mirrors.cloud.tencent.com/npm/@lumino/messaging/-/messaging-2.0.1.tgz#5ef321ed090b74b821d2a0de02493a2f9f3c21f7" + integrity sha512-Z1b9Sq7i2yw7BN/u9ezoBUMYK06CsQXO7BqpczSnEO0PfwFf9dWi7y9VcIySOBz9uogsT1uczZMIMtLefk+xPQ== + dependencies: + "@lumino/algorithm" "^2.0.1" + "@lumino/collections" "^2.0.1" + +"@lumino/properties@^2.0.1": + version "2.0.1" + resolved "https://mirrors.cloud.tencent.com/npm/@lumino/properties/-/properties-2.0.1.tgz#349407042df99d94943798078454dc11a327684b" + integrity sha512-RPtHrp8cQqMnTC915lOIdrmsbPDCC7PhPOZb2YY7/Jj6dEdwmGhoMthc2tBEYWoHP+tU/hVm8UR/mEQby22srQ== + +"@lumino/signaling@^2.1.2": + version "2.1.2" + resolved "https://mirrors.cloud.tencent.com/npm/@lumino/signaling/-/signaling-2.1.2.tgz#b5f127463165884174f1446e8364794af831a852" + integrity sha512-KtwKxx+xXkLOX/BdSqtvnsqBTPKDIENFBKeYkMTxstQc3fHRmyTzmaVoeZES+pr1EUy3e8vM4pQFVQpb8VsDdA== + dependencies: + "@lumino/algorithm" "^2.0.1" + "@lumino/coreutils" "^2.1.2" + +"@lumino/virtualdom@^2.0.1": + version "2.0.1" + resolved "https://mirrors.cloud.tencent.com/npm/@lumino/virtualdom/-/virtualdom-2.0.1.tgz#335e0e8758f21908a67f66b43f8dec177bcd6133" + integrity sha512-WNM+uUZX7vORhlDRN9NmhEE04Tz1plDjtbwsX+i/51pQj2N2r7+gsVPY/gR4w+I5apmC3zG8/BojjJYIwi8ogA== + dependencies: + "@lumino/algorithm" "^2.0.1" + +"@lumino/widgets@^2.3.1": + version "2.3.1" + resolved "https://mirrors.cloud.tencent.com/npm/@lumino/widgets/-/widgets-2.3.1.tgz#5c62de6cc7e2a2a84a1d1c63d719dad3a3de74ea" + integrity sha512-t3yKoXY4P1K1Tiv7ABZLKjwtn2gFIbaK0jnjFhoHNlzX5q43cm7FjtCFQWrvJbBN6Heq9qq00JPOWXeZ3IlQdg== + dependencies: + "@lumino/algorithm" "^2.0.1" + "@lumino/commands" "^2.2.0" + "@lumino/coreutils" "^2.1.2" + "@lumino/disposable" "^2.1.2" + "@lumino/domutils" "^2.0.1" + "@lumino/dragdrop" "^2.1.4" + "@lumino/keyboard" "^2.0.1" + "@lumino/messaging" "^2.0.1" + "@lumino/properties" "^2.0.1" + "@lumino/signaling" "^2.1.2" + "@lumino/virtualdom" "^2.0.1" + "@malept/cross-spawn-promise@^1.0.0", "@malept/cross-spawn-promise@^1.1.0": version "1.1.1" resolved "http://47.122.4.61:4873/@malept%2fcross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz#504af200af6b98e198bce768bc1730c6936ae01d" @@ -1628,7 +1750,7 @@ resolved "http://47.122.4.61:4873/@types%2fminimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== -"@types/node@*", "@types/node@^20.10.3": +"@types/node@*": version "20.10.3" resolved "http://47.122.4.61:4873/@types%2fnode/-/node-20.10.3.tgz#4900adcc7fc189d5af5bb41da8f543cea6962030" integrity sha512-XJavIpZqiXID5Yxnxv3RUDKTN5b81ddNC3ecsA0SoFXz/QU8OGBwZGMomiq0zw+uuqbL/krztv/DINAQ/EV4gg== @@ -1647,6 +1769,13 @@ dependencies: undici-types "~5.26.4" +"@types/node@^20.10.4": + version "20.10.4" + resolved "https://mirrors.cloud.tencent.com/npm/@types/node/-/node-20.10.4.tgz#b246fd84d55d5b1b71bf51f964bd514409347198" + integrity sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg== + dependencies: + undici-types "~5.26.4" + "@types/responselike@^1.0.0": version "1.0.3" resolved "http://47.122.4.61:4873/@types%2fresponselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50" @@ -1703,7 +1832,24 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^6.13.2", "@typescript-eslint/eslint-plugin@^6.7.0": +"@typescript-eslint/eslint-plugin@^6.14.0": + version "6.14.0" + resolved "http://47.122.4.61:4873/@typescript-eslint%2feslint-plugin/-/eslint-plugin-6.14.0.tgz#fc1ab5f23618ba590c87e8226ff07a760be3dd7b" + integrity sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.14.0" + "@typescript-eslint/type-utils" "6.14.0" + "@typescript-eslint/utils" "6.14.0" + "@typescript-eslint/visitor-keys" "6.14.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/eslint-plugin@^6.7.0": version "6.13.2" resolved "http://47.122.4.61:4873/@typescript-eslint%2feslint-plugin/-/eslint-plugin-6.13.2.tgz#2e03506c5362a65e43cb132c37c9ce2d3cb51470" integrity sha512-3+9OGAWHhk4O1LlcwLBONbdXsAhLjyCFogJY/cWy2lxdVJ2JrcTF2pTGMaLl2AE7U1l31n8Py4a8bx5DLf/0dQ== @@ -1720,7 +1866,18 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/parser@^6.13.2", "@typescript-eslint/parser@^6.7.0": +"@typescript-eslint/parser@^6.14.0": + version "6.14.0" + resolved "http://47.122.4.61:4873/@typescript-eslint%2fparser/-/parser-6.14.0.tgz#a2d6a732e0d2b95c73f6a26ae7362877cc1b4212" + integrity sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA== + dependencies: + "@typescript-eslint/scope-manager" "6.14.0" + "@typescript-eslint/types" "6.14.0" + "@typescript-eslint/typescript-estree" "6.14.0" + "@typescript-eslint/visitor-keys" "6.14.0" + debug "^4.3.4" + +"@typescript-eslint/parser@^6.7.0": version "6.13.2" resolved "http://47.122.4.61:4873/@typescript-eslint%2fparser/-/parser-6.13.2.tgz#390b79cc9a57a5f904d197a201cc4b6bc4f9afb9" integrity sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg== @@ -1739,6 +1896,14 @@ "@typescript-eslint/types" "6.13.2" "@typescript-eslint/visitor-keys" "6.13.2" +"@typescript-eslint/scope-manager@6.14.0": + version "6.14.0" + resolved "http://47.122.4.61:4873/@typescript-eslint%2fscope-manager/-/scope-manager-6.14.0.tgz#53d24363fdb5ee0d1d8cda4ed5e5321272ab3d48" + integrity sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg== + dependencies: + "@typescript-eslint/types" "6.14.0" + "@typescript-eslint/visitor-keys" "6.14.0" + "@typescript-eslint/type-utils@6.13.2": version "6.13.2" resolved "http://47.122.4.61:4873/@typescript-eslint%2ftype-utils/-/type-utils-6.13.2.tgz#ebec2da14a6bb7122e0fd31eea72a382c39c6102" @@ -1749,11 +1914,26 @@ debug "^4.3.4" ts-api-utils "^1.0.1" +"@typescript-eslint/type-utils@6.14.0": + version "6.14.0" + resolved "http://47.122.4.61:4873/@typescript-eslint%2ftype-utils/-/type-utils-6.14.0.tgz#ac9cb5ba0615c837f1a6b172feeb273d36e4f8af" + integrity sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw== + dependencies: + "@typescript-eslint/typescript-estree" "6.14.0" + "@typescript-eslint/utils" "6.14.0" + debug "^4.3.4" + ts-api-utils "^1.0.1" + "@typescript-eslint/types@6.13.2": version "6.13.2" resolved "http://47.122.4.61:4873/@typescript-eslint%2ftypes/-/types-6.13.2.tgz#c044aac24c2f6cefb8e921e397acad5417dd0ae6" integrity sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg== +"@typescript-eslint/types@6.14.0": + version "6.14.0" + resolved "http://47.122.4.61:4873/@typescript-eslint%2ftypes/-/types-6.14.0.tgz#935307f7a931016b7a5eb25d494ea3e1f613e929" + integrity sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA== + "@typescript-eslint/typescript-estree@6.13.2": version "6.13.2" resolved "http://47.122.4.61:4873/@typescript-eslint%2ftypescript-estree/-/typescript-estree-6.13.2.tgz#ae556ee154c1acf025b48d37c3ef95a1d55da258" @@ -1767,6 +1947,19 @@ semver "^7.5.4" ts-api-utils "^1.0.1" +"@typescript-eslint/typescript-estree@6.14.0": + version "6.14.0" + resolved "http://47.122.4.61:4873/@typescript-eslint%2ftypescript-estree/-/typescript-estree-6.14.0.tgz#90c7ddd45cd22139adf3d4577580d04c9189ac13" + integrity sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw== + dependencies: + "@typescript-eslint/types" "6.14.0" + "@typescript-eslint/visitor-keys" "6.14.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + "@typescript-eslint/utils@6.13.2": version "6.13.2" resolved "http://47.122.4.61:4873/@typescript-eslint%2futils/-/utils-6.13.2.tgz#8eb89e53adc6d703a879b131e528807245486f89" @@ -1780,6 +1973,19 @@ "@typescript-eslint/typescript-estree" "6.13.2" semver "^7.5.4" +"@typescript-eslint/utils@6.14.0": + version "6.14.0" + resolved "http://47.122.4.61:4873/@typescript-eslint%2futils/-/utils-6.14.0.tgz#856a9e274367d99ffbd39c48128b93a86c4261e3" + integrity sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.14.0" + "@typescript-eslint/types" "6.14.0" + "@typescript-eslint/typescript-estree" "6.14.0" + semver "^7.5.4" + "@typescript-eslint/visitor-keys@6.13.2": version "6.13.2" resolved "http://47.122.4.61:4873/@typescript-eslint%2fvisitor-keys/-/visitor-keys-6.13.2.tgz#e0a4a80cf842bb08e6127b903284166ac4a5594c" @@ -1788,15 +1994,23 @@ "@typescript-eslint/types" "6.13.2" eslint-visitor-keys "^3.4.1" +"@typescript-eslint/visitor-keys@6.14.0": + version "6.14.0" + resolved "http://47.122.4.61:4873/@typescript-eslint%2fvisitor-keys/-/visitor-keys-6.14.0.tgz#1d1d486581819287de824a56c22f32543561138e" + integrity sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw== + dependencies: + "@typescript-eslint/types" "6.14.0" + eslint-visitor-keys "^3.4.1" + "@ungap/structured-clone@^1.2.0": version "1.2.0" resolved "http://47.122.4.61:4873/@ungap%2fstructured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@vitejs/plugin-vue@^4.5.1": - version "4.5.1" - resolved "http://47.122.4.61:4873/@vitejs%2fplugin-vue/-/plugin-vue-4.5.1.tgz#84815bfeb46928c03a9ed765e4a8425c22345e15" - integrity sha512-DaUzYFr+2UGDG7VSSdShKa9sIWYBa1LL8KC0MNOf2H5LjcTPjob0x8LbkqXWmAtbANJCkpiQTj66UVcQkN2s3g== +"@vitejs/plugin-vue@^4.5.2": + version "4.5.2" + resolved "https://mirrors.cloud.tencent.com/npm/@vitejs/plugin-vue/-/plugin-vue-4.5.2.tgz#1212d81bc83680e14448fefe55abd9fe1ed49ed1" + integrity sha512-UGR3DlzLi/SaVBPX0cnSyE37vqxU3O6chn8l0HJNzQzDia6/Au2A4xKv+iIJW8w2daf80G7TYHhi1pAUjdZ0bQ== "@volar/language-core@1.11.1", "@volar/language-core@~1.11.1": version "1.11.1" @@ -1830,6 +2044,16 @@ estree-walker "^2.0.2" source-map-js "^1.0.2" +"@vue/compiler-core@3.3.11": + version "3.3.11" + resolved "https://mirrors.cloud.tencent.com/npm/@vue/compiler-core/-/compiler-core-3.3.11.tgz#9fa26f8c81b9b34365f94ce1ed4d0e6e6f94a2ac" + integrity sha512-h97/TGWBilnLuRaj58sxNrsUU66fwdRKLOLQ9N/5iNDfp+DZhYH9Obhe0bXxhedl8fjAgpRANpiZfbgWyruQ0w== + dependencies: + "@babel/parser" "^7.23.5" + "@vue/shared" "3.3.11" + estree-walker "^2.0.2" + source-map-js "^1.0.2" + "@vue/compiler-dom@3.3.10", "@vue/compiler-dom@^3.3.0": version "3.3.10" resolved "http://47.122.4.61:4873/@vue%2fcompiler-dom/-/compiler-dom-3.3.10.tgz#183811252be6aff4ac923f783124bb1590301907" @@ -1838,7 +2062,31 @@ "@vue/compiler-core" "3.3.10" "@vue/shared" "3.3.10" -"@vue/compiler-sfc@3.3.10", "@vue/compiler-sfc@^3.2.47": +"@vue/compiler-dom@3.3.11": + version "3.3.11" + resolved "https://mirrors.cloud.tencent.com/npm/@vue/compiler-dom/-/compiler-dom-3.3.11.tgz#36a76ea3a296d41bad133a6912cb0a847d969e4f" + integrity sha512-zoAiUIqSKqAJ81WhfPXYmFGwDRuO+loqLxvXmfUdR5fOitPoUiIeFI9cTTyv9MU5O1+ZZglJVTusWzy+wfk5hw== + dependencies: + "@vue/compiler-core" "3.3.11" + "@vue/shared" "3.3.11" + +"@vue/compiler-sfc@3.3.11": + version "3.3.11" + resolved "https://mirrors.cloud.tencent.com/npm/@vue/compiler-sfc/-/compiler-sfc-3.3.11.tgz#acfae240c875d067e0e2c9a4e2d910074408c73b" + integrity sha512-U4iqPlHO0KQeK1mrsxCN0vZzw43/lL8POxgpzcJweopmqtoYy9nljJzWDIQS3EfjiYhfdtdk9Gtgz7MRXnz3GA== + dependencies: + "@babel/parser" "^7.23.5" + "@vue/compiler-core" "3.3.11" + "@vue/compiler-dom" "3.3.11" + "@vue/compiler-ssr" "3.3.11" + "@vue/reactivity-transform" "3.3.11" + "@vue/shared" "3.3.11" + estree-walker "^2.0.2" + magic-string "^0.30.5" + postcss "^8.4.32" + source-map-js "^1.0.2" + +"@vue/compiler-sfc@^3.2.47": version "3.3.10" resolved "http://47.122.4.61:4873/@vue%2fcompiler-sfc/-/compiler-sfc-3.3.10.tgz#8eb97d42f276089ec58fd0565ef3a813bceeaa87" integrity sha512-xpcTe7Rw7QefOTRFFTlcfzozccvjM40dT45JtrE3onGm/jBLZ0JhpKu3jkV7rbDFLeeagR/5RlJ2Y9SvyS0lAg== @@ -1862,6 +2110,14 @@ "@vue/compiler-dom" "3.3.10" "@vue/shared" "3.3.10" +"@vue/compiler-ssr@3.3.11": + version "3.3.11" + resolved "https://mirrors.cloud.tencent.com/npm/@vue/compiler-ssr/-/compiler-ssr-3.3.11.tgz#598942a73b64f2bd3f95908b104a7fbb55fc41a2" + integrity sha512-Zd66ZwMvndxRTgVPdo+muV4Rv9n9DwQ4SSgWWKWkPFebHQfVYRrVjeygmmDmPewsHyznCNvJ2P2d6iOOhdv8Qg== + dependencies: + "@vue/compiler-dom" "3.3.11" + "@vue/shared" "3.3.11" + "@vue/devtools-api@^6.5.0": version "6.5.1" resolved "http://47.122.4.61:4873/@vue%2fdevtools-api/-/devtools-api-6.5.1.tgz#7f71f31e40973eeee65b9a64382b13593fdbd697" @@ -1902,43 +2158,59 @@ estree-walker "^2.0.2" magic-string "^0.30.5" -"@vue/reactivity@3.3.10": - version "3.3.10" - resolved "http://47.122.4.61:4873/@vue%2freactivity/-/reactivity-3.3.10.tgz#78fe3da319276d9e6d0f072037532928c472a287" - integrity sha512-H5Z7rOY/JLO+e5a6/FEXaQ1TMuOvY4LDVgT+/+HKubEAgs9qeeZ+NhADSeEtrNQeiKLDuzeKc8v0CUFpB6Pqgw== +"@vue/reactivity-transform@3.3.11": + version "3.3.11" + resolved "https://mirrors.cloud.tencent.com/npm/@vue/reactivity-transform/-/reactivity-transform-3.3.11.tgz#2bd486f4eff60c8724309925618891e722fcfadc" + integrity sha512-fPGjH0wqJo68A0wQ1k158utDq/cRyZNlFoxGwNScE28aUFOKFEnCBsvyD8jHn+0kd0UKVpuGuaZEQ6r9FJRqCg== dependencies: - "@vue/shared" "3.3.10" + "@babel/parser" "^7.23.5" + "@vue/compiler-core" "3.3.11" + "@vue/shared" "3.3.11" + estree-walker "^2.0.2" + magic-string "^0.30.5" -"@vue/runtime-core@3.3.10": - version "3.3.10" - resolved "http://47.122.4.61:4873/@vue%2fruntime-core/-/runtime-core-3.3.10.tgz#d7b78c5c0500b856cf9447ef81d4a1b1438fd5bb" - integrity sha512-DZ0v31oTN4YHX9JEU5VW1LoIVgFovWgIVb30bWn9DG9a7oA415idcwsRNNajqTx8HQJyOaWfRKoyuP2P2TYIag== +"@vue/reactivity@3.3.11": + version "3.3.11" + resolved "https://mirrors.cloud.tencent.com/npm/@vue/reactivity/-/reactivity-3.3.11.tgz#91f8e6c9ac60a595a5278c836b197628fd947a0d" + integrity sha512-D5tcw091f0nuu+hXq5XANofD0OXnBmaRqMYl5B3fCR+mX+cXJIGNw/VNawBqkjLNWETrFW0i+xH9NvDbTPVh7g== dependencies: - "@vue/reactivity" "3.3.10" - "@vue/shared" "3.3.10" + "@vue/shared" "3.3.11" -"@vue/runtime-dom@3.3.10": - version "3.3.10" - resolved "http://47.122.4.61:4873/@vue%2fruntime-dom/-/runtime-dom-3.3.10.tgz#130dfffb8fee8051671aaf80c5104d2020544950" - integrity sha512-c/jKb3ny05KJcYk0j1m7Wbhrxq7mZYr06GhKykDMNRRR9S+/dGT8KpHuNQjv3/8U4JshfkAk6TpecPD3B21Ijw== +"@vue/runtime-core@3.3.11": + version "3.3.11" + resolved "https://mirrors.cloud.tencent.com/npm/@vue/runtime-core/-/runtime-core-3.3.11.tgz#63defba57bc54c1dac68a95b56c2633b1419193d" + integrity sha512-g9ztHGwEbS5RyWaOpXuyIVFTschclnwhqEbdy5AwGhYOgc7m/q3NFwr50MirZwTTzX55JY8pSkeib9BX04NIpw== dependencies: - "@vue/runtime-core" "3.3.10" - "@vue/shared" "3.3.10" + "@vue/reactivity" "3.3.11" + "@vue/shared" "3.3.11" + +"@vue/runtime-dom@3.3.11": + version "3.3.11" + resolved "https://mirrors.cloud.tencent.com/npm/@vue/runtime-dom/-/runtime-dom-3.3.11.tgz#1146d8d280b0fec4d2e18c4a4c8f8121d0cecc09" + integrity sha512-OlhtV1PVpbgk+I2zl+Y5rQtDNcCDs12rsRg71XwaA2/Rbllw6mBLMi57VOn8G0AjOJ4Mdb4k56V37+g8ukShpQ== + dependencies: + "@vue/runtime-core" "3.3.11" + "@vue/shared" "3.3.11" csstype "^3.1.2" -"@vue/server-renderer@3.3.10": - version "3.3.10" - resolved "http://47.122.4.61:4873/@vue%2fserver-renderer/-/server-renderer-3.3.10.tgz#f23d151f0e5021ebdc730052d9934c9178486742" - integrity sha512-0i6ww3sBV3SKlF3YTjSVqKQ74xialMbjVYGy7cOTi7Imd8ediE7t72SK3qnvhrTAhOvlQhq6Bk6nFPdXxe0sAg== +"@vue/server-renderer@3.3.11": + version "3.3.11" + resolved "https://mirrors.cloud.tencent.com/npm/@vue/server-renderer/-/server-renderer-3.3.11.tgz#409aed8031a125791e2143552975ecd1958ad601" + integrity sha512-AIWk0VwwxCAm4wqtJyxBylRTXSy1wCLOKbWxHaHiu14wjsNYtiRCSgVuqEPVuDpErOlRdNnuRgipQfXRLjLN5A== dependencies: - "@vue/compiler-ssr" "3.3.10" - "@vue/shared" "3.3.10" + "@vue/compiler-ssr" "3.3.11" + "@vue/shared" "3.3.11" "@vue/shared@3.3.10", "@vue/shared@^3.3.0": version "3.3.10" resolved "http://47.122.4.61:4873/@vue%2fshared/-/shared-3.3.10.tgz#1583a8d85a957d8b819078c465d2a11db7914b2f" integrity sha512-2y3Y2J1a3RhFa0WisHvACJR2ncvWiVHcP8t0Inxo+NKz+8RKO4ZV8eZgCxRgQoA6ITfV12L4E6POOL9HOU5nqw== +"@vue/shared@3.3.11": + version "3.3.11" + resolved "https://mirrors.cloud.tencent.com/npm/@vue/shared/-/shared-3.3.11.tgz#f6a038e15237edefcc90dbfe7edb806dd355c7bd" + integrity sha512-u2G8ZQ9IhMWTMXaWqZycnK4UthG1fA238CD+DP4Dm4WJi5hdUKKLg0RMRaRpDPNMdkTwIDkp7WtD0Rd9BH9fLw== + "@vue/test-utils@^2.4.3": version "2.4.3" resolved "http://47.122.4.61:4873/@vue%2ftest-utils/-/test-utils-2.4.3.tgz#d86786d809f918c77fb9e1fafaa2438af37c17d3" @@ -1959,12 +2231,11 @@ source-map "0.5.6" tsconfig "^7.0.0" -"@vuetify/loader-shared@^1.7.1": - version "1.7.1" - resolved "http://47.122.4.61:4873/@vuetify%2floader-shared/-/loader-shared-1.7.1.tgz#0f63a3d41b6df29a2db1ff438aa1819b237c37a3" - integrity sha512-kLUvuAed6RCvkeeTNJzuy14pqnkur8lTuner7v7pNE/kVhPR97TuyXwBSBMR1cJeiLiOfu6SF5XlCYbXByEx1g== +"@vuetify/loader-shared@^2.0.1": + version "2.0.1" + resolved "http://47.122.4.61:4873/@vuetify%2floader-shared/-/loader-shared-2.0.1.tgz#4bb50ce6455b1c37958a58a63cc32e4ae6829287" + integrity sha512-zy5/ohEO7RcJaWYu2Xiy8TBEOkTb42XvWvSAJwXAtY8OlwqyGhzzBp9OvMVjLGIuFXumBpXKlsaVIkeN0OWWSw== dependencies: - find-cache-dir "^3.3.2" upath "^2.0.1" "@vueuse/core@^9.1.0": @@ -2643,11 +2914,6 @@ commander@^5.0.0: resolved "http://47.122.4.61:4873/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -commondir@^1.0.1: - version "1.0.1" - resolved "http://47.122.4.61:4873/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - compare-version@^0.1.2: version "0.1.2" resolved "http://47.122.4.61:4873/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080" @@ -3471,15 +3737,6 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-cache-dir@^3.3.2: - version "3.3.2" - resolved "http://47.122.4.61:4873/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - find-up@^2.0.0: version "2.1.0" resolved "http://47.122.4.61:4873/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -4928,13 +5185,6 @@ magic-string@^0.30.0, magic-string@^0.30.5: dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" -make-dir@^3.0.2: - version "3.1.0" - resolved "http://47.122.4.61:4873/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - make-dir@^4.0.0: version "4.0.0" resolved "http://47.122.4.61:4873/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" @@ -5619,7 +5869,7 @@ pirates@^4.0.4: resolved "http://47.122.4.61:4873/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== -pkg-dir@^4.1.0, pkg-dir@^4.2.0: +pkg-dir@^4.2.0: version "4.2.0" resolved "http://47.122.4.61:4873/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== @@ -5805,10 +6055,10 @@ rechoir@^0.8.0: dependencies: resolve "^1.20.0" -reflect-metadata@^0.1.13: - version "0.1.13" - resolved "http://47.122.4.61:4873/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" - integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== +reflect-metadata@^0.1.14: + version "0.1.14" + resolved "https://mirrors.cloud.tencent.com/npm/reflect-metadata/-/reflect-metadata-0.1.14.tgz#24cf721fe60677146bb77eeb0e1f9dece3d65859" + integrity sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A== regenerator-runtime@^0.14.0: version "0.14.0" @@ -6009,7 +6259,7 @@ semver-compare@^1.0.0: resolved "http://47.122.4.61:4873/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.0.0, semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: +semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "http://47.122.4.61:4873/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== @@ -6658,19 +6908,19 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -vite-plugin-vuetify@^1.0.2: - version "1.0.2" - resolved "http://47.122.4.61:4873/vite-plugin-vuetify/-/vite-plugin-vuetify-1.0.2.tgz#d1777c63aa1b3a308756461b3d0299fd101ee8f4" - integrity sha512-MubIcKD33O8wtgQXlbEXE7ccTEpHZ8nPpe77y9Wy3my2MWw/PgehP9VqTp92BLqr0R1dSL970Lynvisx3UxBFw== +vite-plugin-vuetify@^2.0.1: + version "2.0.1" + resolved "http://47.122.4.61:4873/vite-plugin-vuetify/-/vite-plugin-vuetify-2.0.1.tgz#172ffb6c46fec469fa96b3df03fd11b90d48f5d6" + integrity sha512-GlRVAruohE8b0FqmeYYh1cYg3n8THGOv066uMA44qLv9uhUxSLw55CS7fi2yU0wH363TJ2vq36zUsPTjRFrjGQ== dependencies: - "@vuetify/loader-shared" "^1.7.1" + "@vuetify/loader-shared" "^2.0.1" debug "^4.3.3" upath "^2.0.1" -vite@^5.0.6: - version "5.0.6" - resolved "http://47.122.4.61:4873/vite/-/vite-5.0.6.tgz#f9e13503a4c5ccd67312c67803dec921f3bdea7c" - integrity sha512-MD3joyAEBtV7QZPl2JVVUai6zHms3YOmLR+BpMzLlX2Yzjfcc4gTgNi09d/Rua3F4EtC8zdwPU8eQYyib4vVMQ== +vite@^5.0.8: + version "5.0.8" + resolved "http://47.122.4.61:4873/vite/-/vite-5.0.8.tgz#070383dcb4d4f12adde9c119b8cca0f40bf906e9" + integrity sha512-jYMALd8aeqR3yS9xlHd0OzQJndS9fH5ylVgWdB+pxTwxLKdO1pgC5Dlb398BUxpfaBxa4M9oT7j1g503Gaj5IQ== dependencies: esbuild "^0.19.3" postcss "^8.4.32" @@ -6734,16 +6984,16 @@ vue-tsc@^1.8.25: "@vue/language-core" "1.8.25" semver "^7.5.4" -vue@^3.3.10: - version "3.3.10" - resolved "http://47.122.4.61:4873/vue/-/vue-3.3.10.tgz#6e19c1982ee655a14babe1610288b90005f02ab1" - integrity sha512-zg6SIXZdTBwiqCw/1p+m04VyHjLfwtjwz8N57sPaBhEex31ND0RYECVOC1YrRwMRmxFf5T1dabl6SGUbMKKuVw== +vue@^3.3.11: + version "3.3.11" + resolved "https://mirrors.cloud.tencent.com/npm/vue/-/vue-3.3.11.tgz#898d97025f73cdb5fc4e3ae3fd07a54615232140" + integrity sha512-d4oBctG92CRO1cQfVBZp6WJAs0n8AK4Xf5fNjQCBeKCvMI1efGQ5E3Alt1slFJS9fZuPcFoiAiqFvQlv1X7t/w== dependencies: - "@vue/compiler-dom" "3.3.10" - "@vue/compiler-sfc" "3.3.10" - "@vue/runtime-dom" "3.3.10" - "@vue/server-renderer" "3.3.10" - "@vue/shared" "3.3.10" + "@vue/compiler-dom" "3.3.11" + "@vue/compiler-sfc" "3.3.11" + "@vue/runtime-dom" "3.3.11" + "@vue/server-renderer" "3.3.11" + "@vue/shared" "3.3.11" vuetify@^3.4.6: version "3.4.6" From 96fbcfd2443d0b60681bc1f1e9727679cab94afb Mon Sep 17 00:00:00 2001 From: novrain Date: Wed, 13 Dec 2023 22:07:12 +0800 Subject: [PATCH 2/2] :memo: update docs. --- README.md | 8 +++++--- README_zh.md | 8 +++++--- docs/imgs/Lumino.png | Bin 0 -> 63662 bytes 3 files changed, 10 insertions(+), 6 deletions(-) create mode 100644 docs/imgs/Lumino.png diff --git a/README.md b/README.md index 6ec39aa..1f64090 100644 --- a/README.md +++ b/README.md @@ -8,11 +8,13 @@ Target: Build a protocol testing tool that supports various connection methods. ### UI -Communication between two serial ports. +Using lumino, drag and drop function to change the layout, making it more convenient for multiple connections. -![COM1](docs/imgs/COM-1.png) +[vue3-lumino-widget](https://github.com/novrain/vue3-lumino-widget) -![COM2](docs/imgs/COM-2.png) +Send and receive data between two serial ports. + +![Lumino](docs/imgs/Lumino.png) ## Development diff --git a/README_zh.md b/README_zh.md index 61b22fd..f25f635 100644 --- a/README_zh.md +++ b/README_zh.md @@ -8,11 +8,13 @@ ### UI -两个串口间收发数据。 +引入了Lumino, 方便的拖拽功能,改变布局,多连接时更便捷。 + +[vue3-lumino-widget](https://github.com/novrain/vue3-lumino-widget) -![COM1](docs/imgs/COM-1.png) +两个串口间收发数据。 -![COM2](docs/imgs/COM-2.png) +![Lumino](docs/imgs/Lumino.png) ## 开发 diff --git a/docs/imgs/Lumino.png b/docs/imgs/Lumino.png new file mode 100644 index 0000000000000000000000000000000000000000..d6755db1b9edc7e38334231e57fe154cdf73c272 GIT binary patch literal 63662 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 literal 0 HcmV?d00001