From 98441c800f7a15ad5aeca182737f14d272831385 Mon Sep 17 00:00:00 2001 From: qiutianhong Date: Fri, 8 Nov 2024 15:55:44 +0800 Subject: [PATCH] =?UTF-8?q?add=EF=BC=9A=E4=BC=98=E5=8C=96=E8=81=8A?= =?UTF-8?q?=E5=A4=A9=E5=8A=9F=E8=83=BD=E6=95=B4=E4=BD=93UI=E3=80=82?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=88=A0=E9=99=A4=E8=81=8A=E5=A4=A9=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/components.d.ts | 5 + frontend/package.json | 1 + frontend/pnpm-lock.yaml | 950 ++++++++++++++++++ frontend/src/assets/icons/group.png | Bin 0 -> 3893 bytes .../assets/{icon => icons}/group_avatar.svg | 0 frontend/src/components/chat/Chat.vue | 11 +- frontend/src/components/chat/ChatBox.vue | 164 ++- frontend/src/components/chat/ChatMenu.vue | 230 +++-- frontend/src/components/chat/ChatMessage.vue | 102 +- frontend/src/components/chat/ChatMsgList.vue | 39 +- frontend/src/components/chat/ChatUserList.vue | 25 +- .../src/components/chat/chatGroupMember.vue | 66 ++ frontend/src/components/chat/chatUserInfo.vue | 255 +++-- .../src/components/window/WindowTemplate.vue | 4 +- frontend/src/main.ts | 21 +- frontend/src/stores/chat.ts | 73 +- frontend/src/stores/db.ts | 5 + frontend/src/system/member.ts | 2 +- 18 files changed, 1548 insertions(+), 405 deletions(-) create mode 100644 frontend/src/assets/icons/group.png rename frontend/src/assets/{icon => icons}/group_avatar.svg (100%) create mode 100644 frontend/src/components/chat/chatGroupMember.vue diff --git a/frontend/components.d.ts b/frontend/components.d.ts index f98742a..cb5a945 100644 --- a/frontend/components.d.ts +++ b/frontend/components.d.ts @@ -22,6 +22,7 @@ declare module 'vue' { ChatDomain: typeof import('./src/components/localchat/ChatDomain.vue')['default'] ChatEditor: typeof import('./src/components/localchat/ChatEditor.vue')['default'] ChatFoot: typeof import('./src/components/localchat/ChatFoot.vue')['default'] + ChatGroupMember: typeof import('./src/components/chat/chatGroupMember.vue')['default'] ChatMenu: typeof import('./src/components/chat/ChatMenu.vue')['default'] ChatMessage: typeof import('./src/components/chat/ChatMessage.vue')['default'] ChatMsgList: typeof import('./src/components/chat/ChatMsgList.vue')['default'] @@ -50,6 +51,7 @@ declare module 'vue' { EditType: typeof import('./src/components/builtin/EditType.vue')['default'] ElAside: typeof import('element-plus/es')['ElAside'] ElAvatar: typeof import('element-plus/es')['ElAvatar'] + ElAvimg: typeof import('element-plus/es')['ElAvimg'] ElBadge: typeof import('element-plus/es')['ElBadge'] ElButton: typeof import('element-plus/es')['ElButton'] ElCard: typeof import('element-plus/es')['ElCard'] @@ -71,6 +73,7 @@ declare module 'vue' { ElHeader: typeof import('element-plus/es')['ElHeader'] ElIcon: typeof import('element-plus/es')['ElIcon'] ElImage: typeof import('element-plus/es')['ElImage'] + ElImg: typeof import('element-plus/es')['ElImg'] ElInput: typeof import('element-plus/es')['ElInput'] ElMain: typeof import('element-plus/es')['ElMain'] ElMenu: typeof import('element-plus/es')['ElMenu'] @@ -80,6 +83,7 @@ declare module 'vue' { ElPopover: typeof import('element-plus/es')['ElPopover'] ElProgress: typeof import('element-plus/es')['ElProgress'] ElRow: typeof import('element-plus/es')['ElRow'] + ElS: typeof import('element-plus/es')['ElS'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] ElSelect: typeof import('element-plus/es')['ElSelect'] ElSwitch: typeof import('element-plus/es')['ElSwitch'] @@ -147,6 +151,7 @@ declare module 'vue' { StartOption: typeof import('./src/components/taskbar/StartOption.vue')['default'] StateIcon: typeof import('./src/components/taskbar/StateIcon.vue')['default'] Store: typeof import('./src/components/store/Store.vue')['default'] + Svg: typeof import('./src/components/svg/index.vue')['default'] Taskbar: typeof import('./src/components/taskbar/Taskbar.vue')['default'] Upgrade: typeof import('./src/components/desktop/Upgrade.vue')['default'] UpPopover: typeof import('./src/components/computer/UpPopover.vue')['default'] diff --git a/frontend/package.json b/frontend/package.json index 9149204..a0c860d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -21,6 +21,7 @@ "pinia": "^2.1.7", "pinia-plugin-persist": "^1.0.0", "vditor": "^3.10.4", + "vite-plugin-svg-icons": "^2.0.1", "vue": "^3.4.31", "vue-i18n": "^9.13.1", "vue-router": "^4.4.0", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index d15ff5d..653be6f 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -44,6 +44,9 @@ importers: vditor: specifier: ^3.10.4 version: 3.10.7 + vite-plugin-svg-icons: + specifier: ^2.0.1 + version: 2.0.1(vite@5.4.9(@types/node@20.16.13)(sass@1.80.3)(terser@5.36.0)) vue: specifier: ^3.4.31 version: 3.5.12(typescript@5.6.3) @@ -499,6 +502,10 @@ packages: '@sxzz/popperjs-es@2.11.7': resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==} + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} @@ -514,6 +521,9 @@ packages: '@types/node@20.16.13': resolution: {integrity: sha512-GjQ7im10B0labo8ZGXDGROUl9k0BNyDgzfGpb4g/cl+4yYDWVKcozANF4FGr4/p0O/rAkQClM6Wiwkije++1Tg==} + '@types/svgo@2.6.4': + resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} + '@types/web-bluetooth@0.0.16': resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} @@ -637,6 +647,10 @@ packages: resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} engines: {node: '>=0.10.0'} + array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + array-unique@0.2.1: resolution: {integrity: sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==} engines: {node: '>=0.10.0'} @@ -645,6 +659,10 @@ packages: resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} engines: {node: '>=0.10.0'} + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + assert@1.5.1: resolution: {integrity: sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==} @@ -672,6 +690,10 @@ packages: engines: {node: '>= 4.5.0'} hasBin: true + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + babel-code-frame@6.26.0: resolution: {integrity: sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==} @@ -877,6 +899,9 @@ packages: big.js@3.2.0: resolution: {integrity: sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==} + big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + binary-extensions@1.13.1: resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} engines: {node: '>=0.10.0'} @@ -888,6 +913,12 @@ packages: bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} @@ -960,6 +991,10 @@ packages: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} + clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + collection-visit@1.0.0: resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} engines: {node: '>=0.10.0'} @@ -967,6 +1002,10 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + component-emitter@1.3.1: resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} @@ -996,15 +1035,46 @@ packages: core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + crypto-browserify@3.3.0: resolution: {integrity: sha512-9n5nGl6D8zb29Ui8Ji8pVdUIE3RUe6A9zQf2iLPjFKftnkkkJBCGb7TkYAFNjt9nfsvZTLL52CwxzS9Tw7Bujw==} css-line-break@2.1.0: resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==} + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + + css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + csso@4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} @@ -1067,10 +1137,35 @@ packages: diff-match-patch@1.0.5: resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==} + dom-serializer@0.2.2: + resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} + + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + domain-browser@1.2.0: resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==} engines: {node: '>=0.4', npm: '>=1.2'} + domelementtype@1.3.1: + resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@2.4.2: + resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} + + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + + domutils@1.7.0: + resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} + + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + element-plus@2.8.6: resolution: {integrity: sha512-fk5jB8V3efM02/4roZ5SWOLArgaYXbxEydZLlXSr+KPAwjNyHBlk2+HO5em8YKo5+RLBoHnn6BaThj6IE4nXoQ==} peerDependencies: @@ -1080,10 +1175,20 @@ packages: resolution: {integrity: sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==} engines: {node: '>= 0.10'} + emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + enhanced-resolve@0.9.1: resolution: {integrity: sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw==} engines: {node: '>=0.6'} + entities@1.1.2: + resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -1092,6 +1197,10 @@ packages: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + es-define-property@1.0.0: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} @@ -1100,6 +1209,18 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} @@ -1126,6 +1247,10 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + events@1.1.1: resolution: {integrity: sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==} engines: {node: '>=0.4.x'} @@ -1187,6 +1312,9 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + for-in@1.0.2: resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} engines: {node: '>=0.10.0'} @@ -1199,6 +1327,10 @@ packages: resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} engines: {node: '>=0.10.0'} + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + fsevents@1.2.13: resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} engines: {node: '>= 4.0'} @@ -1213,10 +1345,21 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + get-intrinsic@1.2.4: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + get-value@2.0.6: resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} engines: {node: '>=0.10.0'} @@ -1236,6 +1379,10 @@ packages: resolution: {integrity: sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==} engines: {node: '>=0.10.0'} + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} @@ -1246,6 +1393,9 @@ packages: resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} engines: {node: '>=0.10.0'} + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + has-flag@1.0.0: resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==} engines: {node: '>=0.10.0'} @@ -1261,6 +1411,10 @@ packages: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + has-value@0.3.1: resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} engines: {node: '>=0.10.0'} @@ -1289,12 +1443,20 @@ packages: resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==} engines: {node: '>=8.0.0'} + htmlparser2@3.10.1: + resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} + https-browserify@0.0.1: resolution: {integrity: sha512-EjDQFbgJr1vDD/175UJeSX3ncQ3+RUnCL5NkthQGHvF4VNHlzTy8ifJfTqz47qiPRqaFH58+CbuG3x51WuB1XQ==} ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} @@ -1310,6 +1472,10 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + interpret@0.6.6: resolution: {integrity: sha512-Vg6X07U0AOZb4HF6CWHa+jnJU8j71buKQ9Pc0C75qBXgvCYbxWBkGo4jnTS3O0MIc9FZtt0mB7h+uclojqdw1Q==} @@ -1320,6 +1486,13 @@ packages: resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} engines: {node: '>= 0.10'} + is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + is-binary-path@1.0.1: resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==} engines: {node: '>=0.10.0'} @@ -1328,13 +1501,29 @@ packages: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + is-buffer@1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + is-data-descriptor@1.0.1: resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} engines: {node: '>= 0.4'} + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + is-descriptor@0.1.7: resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} engines: {node: '>= 0.4'} @@ -1375,6 +1564,14 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + is-number@2.1.0: resolution: {integrity: sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg==} engines: {node: '>=0.10.0'} @@ -1391,6 +1588,10 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + is-plain-object@2.0.4: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} @@ -1403,6 +1604,29 @@ packages: resolution: {integrity: sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==} engines: {node: '>=0.10.0'} + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + + is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} @@ -1410,6 +1634,9 @@ packages: isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + isobject@2.1.0: resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} engines: {node: '>=0.10.0'} @@ -1418,6 +1645,9 @@ packages: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} + js-base64@2.6.4: + resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==} + js-md5@0.8.3: resolution: {integrity: sha512-qR0HB5uP6wCuRMrWPTrkMaev7MJZwJuuw4fnwAzRgP4J4/F8RwtodOKpGp4XpqsLBFzzgqIO42efFAyz2Et6KQ==} @@ -1438,6 +1668,13 @@ packages: resolution: {integrity: sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==} hasBin: true + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jszip@3.10.1: resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} @@ -1449,6 +1686,10 @@ packages: resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} engines: {node: '>=0.10.0'} + kind-of@5.1.0: + resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} + engines: {node: '>=0.10.0'} + kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -1463,6 +1704,10 @@ packages: loader-utils@0.2.17: resolution: {integrity: sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==} + loader-utils@1.4.2: + resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} + engines: {node: '>=4.0.0'} + local-pkg@0.5.0: resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} @@ -1505,6 +1750,9 @@ packages: math-random@1.0.4: resolution: {integrity: sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==} + mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + memoize-one@6.0.0: resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} @@ -1514,6 +1762,10 @@ packages: memory-fs@0.3.0: resolution: {integrity: sha512-QTNXnl79X97kZ9jJk/meJrtDuvgvRakX5LU7HZW1L7MsXHuSTwoMIzN9tOLLH3Xfsj/gbsSqX/ovnsqz246zKQ==} + merge-options@1.0.1: + resolution: {integrity: sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==} + engines: {node: '>=4'} + merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -1522,6 +1774,10 @@ packages: resolution: {integrity: sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==} engines: {node: '>=0.10.0'} + micromatch@3.1.0: + resolution: {integrity: sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==} + engines: {node: '>=0.10.0'} + micromatch@3.1.10: resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} engines: {node: '>=0.10.0'} @@ -1592,6 +1848,9 @@ packages: normalize-wheel-es@1.2.0: resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==} + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -1654,6 +1913,9 @@ packages: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} + pathe@0.2.0: + resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==} + pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} @@ -1696,10 +1958,40 @@ packages: resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} engines: {node: '>=0.10.0'} + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + postcss-prefix-selector@1.16.1: + resolution: {integrity: sha512-Umxu+FvKMwlY6TyDzGFoSUnzW+NOfMBLyC1tAkIjgX+Z/qGspJeRjVC903D7mx7TuBpJlwti2ibXtWuA7fKMeQ==} + peerDependencies: + postcss: '>4 <9' + + postcss@5.2.18: + resolution: {integrity: sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==} + engines: {node: '>=0.12'} + postcss@8.4.47: resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} engines: {node: ^10 || ^12 || >=14} + posthtml-parser@0.2.1: + resolution: {integrity: sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==} + + posthtml-rename-id@1.0.12: + resolution: {integrity: sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==} + + posthtml-render@1.4.0: + resolution: {integrity: sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==} + engines: {node: '>=10'} + + posthtml-svg-mode@1.0.3: + resolution: {integrity: sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==} + + posthtml@0.9.2: + resolution: {integrity: sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==} + engines: {node: '>=0.10.0'} + preserve@0.2.0: resolution: {integrity: sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ==} engines: {node: '>=0.10.0'} @@ -1730,6 +2022,10 @@ packages: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} + query-string@4.3.4: + resolution: {integrity: sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==} + engines: {node: '>=0.10.0'} + querystring-es3@0.2.1: resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} engines: {node: '>=0.4.x'} @@ -1744,6 +2040,10 @@ packages: readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + readdirp@2.2.1: resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} engines: {node: '>=0.10'} @@ -1773,6 +2073,10 @@ packages: resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} engines: {node: '>=0.10.0'} + regexp.prototype.flags@1.5.3: + resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} + engines: {node: '>= 0.4'} + regexpu-core@2.0.0: resolution: {integrity: sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ==} @@ -1825,9 +2129,17 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + safe-regex@1.1.0: resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} @@ -1854,6 +2166,10 @@ packages: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + set-value@2.0.1: resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} engines: {node: '>=0.10.0'} @@ -1915,6 +2231,10 @@ packages: resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} engines: {node: '>=0.10.0'} + stable@0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + static-extend@0.1.2: resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} engines: {node: '>=0.10.0'} @@ -1925,6 +2245,21 @@ packages: stream-http@2.8.3: resolution: {integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==} + strict-uri-encode@1.1.0: + resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} + engines: {node: '>=0.10.0'} + + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + string_decoder@0.10.31: resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} @@ -1946,6 +2281,14 @@ packages: resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==} engines: {node: '>=0.8.0'} + svg-baker@1.7.0: + resolution: {integrity: sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==} + + svgo@2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + tapable@0.1.10: resolution: {integrity: sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ==} engines: {node: '>=0.6'} @@ -1989,9 +2332,33 @@ packages: resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} engines: {node: '>=0.10.0'} + traverse@0.6.10: + resolution: {integrity: sha512-hN4uFRxbK+PX56DxYiGHsTn2dME3TVr9vbNqlQGcGcPhJAn+tdP126iA+TArMpI4YSgnTkMWyoLl5bf81Hi5TA==} + engines: {node: '>= 0.4'} + tty-browserify@0.0.0: resolution: {integrity: sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==} + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + + typedarray.prototype.slice@1.0.3: + resolution: {integrity: sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==} + engines: {node: '>= 0.4'} + typescript@5.6.3: resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} engines: {node: '>=14.17'} @@ -2008,6 +2375,9 @@ packages: uglify-to-browserify@1.0.2: resolution: {integrity: sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==} + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} @@ -2018,6 +2388,10 @@ packages: resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} engines: {node: '>=0.10.0'} + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + unplugin-auto-import@0.18.3: resolution: {integrity: sha512-q3FUtGQjYA2e+kb1WumyiQMjHM27MrTQ05QfVwtLRVhyYe+KF6TblBYaEX9L6Z0EibsqaXAiW+RFfkcQpfaXzg==} engines: {node: '>=14'} @@ -2077,9 +2451,18 @@ packages: utrie@1.0.2: resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==} + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + vditor@3.10.7: resolution: {integrity: sha512-n+ZM1IgLJzUGZeXzQT4xKbUwCplSFoRlsnmMvLv2kMPLnUTMk9O2qV8nMEOahYed0xExhQZtVb6TKeavgA6w3w==} + vite-plugin-svg-icons@2.0.1: + resolution: {integrity: sha512-6ktD+DhV6Rz3VtedYvBKKVA2eXF+sAQVaKkKLDSqGUfnhqXl3bj5PPkVTl3VexfTuZy66PmINi8Q6eFnVfRUmA==} + peerDependencies: + vite: '>=2.0.0' + vite@5.4.9: resolution: {integrity: sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==} engines: {node: ^18.0.0 || >=20.0.0} @@ -2205,6 +2588,13 @@ packages: resolution: {integrity: sha512-TbrbBmiQBL9n0/5bvDdORc6ZfRY/Z7JnEj+EYOD1ghseZdpJ+nF2yx14k3LgQKc7JZnG7HAcL+zHnY25So9d7A==} engines: {node: '>=6.0.0', npm: '>=3.10.0'} + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + window-size@0.1.0: resolution: {integrity: sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==} engines: {node: '>= 0.8.0'} @@ -2506,6 +2896,8 @@ snapshots: '@sxzz/popperjs-es@2.11.7': {} + '@trysound/sax@0.2.0': {} + '@types/estree@1.0.6': {} '@types/file-saver@2.0.7': {} @@ -2520,6 +2912,10 @@ snapshots: dependencies: undici-types: 6.19.8 + '@types/svgo@2.6.4': + dependencies: + '@types/node': 20.16.13 + '@types/web-bluetooth@0.0.16': {} '@vitejs/plugin-vue@5.1.4(vite@5.4.9(@types/node@20.16.13)(sass@1.80.3)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))': @@ -2676,10 +3072,26 @@ snapshots: arr-union@3.1.0: {} + array-buffer-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + is-array-buffer: 3.0.4 + array-unique@0.2.1: {} array-unique@0.3.2: {} + arraybuffer.prototype.slice@1.0.3: + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 + assert@1.5.1: dependencies: object.assign: 4.1.5 @@ -2699,6 +3111,10 @@ snapshots: atob@2.1.2: {} + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.0.0 + babel-code-frame@6.26.0: dependencies: chalk: 1.1.3 @@ -3137,6 +3553,8 @@ snapshots: big.js@3.2.0: {} + big.js@5.2.2: {} + binary-extensions@1.13.1: {} binary-extensions@2.3.0: {} @@ -3146,6 +3564,10 @@ snapshots: file-uri-to-path: 1.0.0 optional: true + bluebird@3.7.2: {} + + boolbase@1.0.0: {} + brace-expansion@2.0.1: dependencies: balanced-match: 1.0.2 @@ -3274,6 +3696,8 @@ snapshots: clone@1.0.4: {} + clone@2.1.2: {} + collection-visit@1.0.0: dependencies: map-visit: 1.0.0 @@ -3281,6 +3705,8 @@ snapshots: commander@2.20.3: {} + commander@7.2.0: {} + component-emitter@1.3.1: {} computeds@0.0.1: {} @@ -3299,6 +3725,11 @@ snapshots: core-util-is@1.0.3: {} + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + crypto-browserify@3.3.0: dependencies: browserify-aes: 0.4.0 @@ -3310,8 +3741,45 @@ snapshots: dependencies: utrie: 1.0.2 + css-select@4.3.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + + css-tree@1.1.3: + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + + css-what@6.1.0: {} + + csso@4.2.0: + dependencies: + css-tree: 1.1.3 + csstype@3.1.3: {} + data-view-buffer@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-offset@1.0.0: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dayjs@1.11.13: {} de-indent@1.0.2: {} @@ -3361,8 +3829,42 @@ snapshots: diff-match-patch@1.0.5: {} + dom-serializer@0.2.2: + dependencies: + domelementtype: 2.3.0 + entities: 2.2.0 + + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + domain-browser@1.2.0: {} + domelementtype@1.3.1: {} + + domelementtype@2.3.0: {} + + domhandler@2.4.2: + dependencies: + domelementtype: 1.3.1 + + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + + domutils@1.7.0: + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + element-plus@2.8.6(vue@3.5.12(typescript@5.6.3)): dependencies: '@ctrl/tinycolor': 3.6.1 @@ -3386,24 +3888,95 @@ snapshots: emojis-list@2.1.0: {} + emojis-list@3.0.0: {} + enhanced-resolve@0.9.1: dependencies: graceful-fs: 4.2.11 memory-fs: 0.2.0 tapable: 0.1.10 + entities@1.1.2: {} + + entities@2.2.0: {} + entities@4.5.0: {} errno@0.1.8: dependencies: prr: 1.0.1 + es-abstract@1.23.3: + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.2 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.3 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 es-errors@1.3.0: {} + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.0.3: + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-to-primitive@1.2.1: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + esbuild@0.21.5: optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 @@ -3444,6 +4017,8 @@ snapshots: esutils@2.0.3: {} + etag@1.8.1: {} + events@1.1.1: {} expand-brackets@0.1.5: @@ -3530,6 +4105,10 @@ snapshots: dependencies: to-regex-range: 5.0.1 + for-each@0.3.3: + dependencies: + is-callable: 1.2.7 + for-in@1.0.2: {} for-own@0.1.5: @@ -3540,6 +4119,12 @@ snapshots: dependencies: map-cache: 0.2.2 + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + fsevents@1.2.13: dependencies: bindings: 1.5.0 @@ -3551,6 +4136,15 @@ snapshots: function-bind@1.1.2: {} + function.prototype.name@1.1.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + functions-have-names: 1.2.3 + + functions-have-names@1.2.3: {} + get-intrinsic@1.2.4: dependencies: es-errors: 1.3.0 @@ -3559,6 +4153,12 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.2 + get-symbol-description@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + get-value@2.0.6: {} glob-base@0.3.0: @@ -3576,6 +4176,11 @@ snapshots: globals@9.18.0: {} + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.0.1 + gopd@1.0.1: dependencies: get-intrinsic: 1.2.4 @@ -3586,6 +4191,8 @@ snapshots: dependencies: ansi-regex: 2.1.1 + has-bigints@1.0.2: {} + has-flag@1.0.0: {} has-property-descriptors@1.0.2: @@ -3596,6 +4203,10 @@ snapshots: has-symbols@1.0.3: {} + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.0.3 + has-value@0.3.1: dependencies: get-value: 2.0.6 @@ -3626,10 +4237,21 @@ snapshots: css-line-break: 2.1.0 text-segmentation: 1.0.3 + htmlparser2@3.10.1: + dependencies: + domelementtype: 1.3.1 + domhandler: 2.4.2 + domutils: 1.7.0 + entities: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.2 + https-browserify@0.0.1: {} ieee754@1.2.1: {} + image-size@0.5.5: {} + immediate@3.0.6: {} immutable@4.3.7: {} @@ -3640,6 +4262,12 @@ snapshots: inherits@2.0.4: {} + internal-slot@1.0.7: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 + interpret@0.6.6: {} invariant@2.2.4: @@ -3650,6 +4278,15 @@ snapshots: dependencies: hasown: 2.0.2 + is-array-buffer@3.0.4: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + + is-bigint@1.0.4: + dependencies: + has-bigints: 1.0.2 + is-binary-path@1.0.1: dependencies: binary-extensions: 1.13.1 @@ -3658,12 +4295,27 @@ snapshots: dependencies: binary-extensions: 2.3.0 + is-boolean-object@1.1.2: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + is-buffer@1.1.6: {} + is-callable@1.2.7: {} + is-data-descriptor@1.0.1: dependencies: hasown: 2.0.2 + is-data-view@1.0.1: + dependencies: + is-typed-array: 1.1.13 + + is-date-object@1.0.5: + dependencies: + has-tostringtag: 1.0.2 + is-descriptor@0.1.7: dependencies: is-accessor-descriptor: 1.0.1 @@ -3698,6 +4350,12 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-negative-zero@2.0.3: {} + + is-number-object@1.0.7: + dependencies: + has-tostringtag: 1.0.2 + is-number@2.1.0: dependencies: kind-of: 3.2.2 @@ -3710,6 +4368,8 @@ snapshots: is-number@7.0.0: {} + is-plain-obj@1.1.0: {} + is-plain-object@2.0.4: dependencies: isobject: 3.0.1 @@ -3718,16 +4378,45 @@ snapshots: is-primitive@2.0.0: {} + is-regex@1.1.4: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-shared-array-buffer@1.0.3: + dependencies: + call-bind: 1.0.7 + + is-string@1.0.7: + dependencies: + has-tostringtag: 1.0.2 + + is-symbol@1.0.4: + dependencies: + has-symbols: 1.0.3 + + is-typed-array@1.1.13: + dependencies: + which-typed-array: 1.1.15 + + is-weakref@1.0.2: + dependencies: + call-bind: 1.0.7 + is-windows@1.0.2: {} isarray@1.0.0: {} + isarray@2.0.5: {} + isobject@2.1.0: dependencies: isarray: 1.0.0 isobject@3.0.1: {} + js-base64@2.6.4: {} + js-md5@0.8.3: {} js-tokens@3.0.2: {} @@ -3740,6 +4429,16 @@ snapshots: json5@0.5.1: {} + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + jszip@3.10.1: dependencies: lie: 3.3.0 @@ -3755,6 +4454,8 @@ snapshots: dependencies: is-buffer: 1.1.6 + kind-of@5.1.0: {} + kind-of@6.0.3: {} lazy-cache@1.0.4: {} @@ -3770,6 +4471,12 @@ snapshots: json5: 0.5.1 object-assign: 4.1.1 + loader-utils@1.4.2: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 1.0.2 + local-pkg@0.5.0: dependencies: mlly: 1.7.2 @@ -3805,6 +4512,8 @@ snapshots: math-random@1.0.4: {} + mdn-data@2.0.14: {} + memoize-one@6.0.0: {} memory-fs@0.2.0: {} @@ -3814,6 +4523,10 @@ snapshots: errno: 0.1.8 readable-stream: 2.3.8 + merge-options@1.0.1: + dependencies: + is-plain-obj: 1.1.0 + merge2@1.4.1: {} micromatch@2.3.11: @@ -3832,6 +4545,24 @@ snapshots: parse-glob: 3.0.4 regex-cache: 0.4.4 + micromatch@3.1.0: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2(supports-color@3.2.3) + define-property: 1.0.0 + extend-shallow: 2.0.1 + extglob: 2.0.4(supports-color@3.2.3) + fragment-cache: 0.2.1 + kind-of: 5.1.0 + nanomatch: 1.2.13(supports-color@3.2.3) + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2(supports-color@3.2.3) + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + micromatch@3.1.10(supports-color@3.2.3): dependencies: arr-diff: 4.0.0 @@ -3944,6 +4675,10 @@ snapshots: normalize-wheel-es@1.2.0: {} + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + object-assign@4.1.1: {} object-copy@0.1.0: @@ -4002,6 +4737,8 @@ snapshots: path-is-absolute@1.0.1: {} + pathe@0.2.0: {} + pathe@1.1.2: {} pbkdf2-compat@2.0.1: {} @@ -4032,12 +4769,48 @@ snapshots: posix-character-classes@0.1.1: {} + possible-typed-array-names@1.0.0: {} + + postcss-prefix-selector@1.16.1(postcss@5.2.18): + dependencies: + postcss: 5.2.18 + + postcss@5.2.18: + dependencies: + chalk: 1.1.3 + js-base64: 2.6.4 + source-map: 0.5.7 + supports-color: 3.2.3 + postcss@8.4.47: dependencies: nanoid: 3.3.7 picocolors: 1.1.1 source-map-js: 1.2.1 + posthtml-parser@0.2.1: + dependencies: + htmlparser2: 3.10.1 + isobject: 2.1.0 + + posthtml-rename-id@1.0.12: + dependencies: + escape-string-regexp: 1.0.5 + + posthtml-render@1.4.0: {} + + posthtml-svg-mode@1.0.3: + dependencies: + merge-options: 1.0.1 + posthtml: 0.9.2 + posthtml-parser: 0.2.1 + posthtml-render: 1.4.0 + + posthtml@0.9.2: + dependencies: + posthtml-parser: 0.2.1 + posthtml-render: 1.4.0 + preserve@0.2.0: {} prettier@2.8.8: @@ -4057,6 +4830,11 @@ snapshots: dependencies: side-channel: 1.0.6 + query-string@4.3.4: + dependencies: + object-assign: 4.1.1 + strict-uri-encode: 1.1.0 + querystring-es3@0.2.1: {} queue-microtask@1.2.3: {} @@ -4077,6 +4855,12 @@ snapshots: string_decoder: 1.1.1 util-deprecate: 1.0.2 + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + readdirp@2.2.1(supports-color@3.2.3): dependencies: graceful-fs: 4.2.11 @@ -4110,6 +4894,13 @@ snapshots: extend-shallow: 3.0.2 safe-regex: 1.1.0 + regexp.prototype.flags@1.5.3: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + regexpu-core@2.0.0: dependencies: regenerate: 1.4.2 @@ -4170,8 +4961,21 @@ snapshots: dependencies: queue-microtask: 1.2.3 + safe-array-concat@1.1.2: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + safe-buffer@5.1.2: {} + safe-regex-test@1.0.3: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + safe-regex@1.1.0: dependencies: ret: 0.1.15 @@ -4200,6 +5004,13 @@ snapshots: gopd: 1.0.1 has-property-descriptors: 1.0.2 + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + set-value@2.0.1: dependencies: extend-shallow: 2.0.1 @@ -4272,6 +5083,8 @@ snapshots: dependencies: extend-shallow: 3.0.2 + stable@0.1.8: {} + static-extend@0.1.2: dependencies: define-property: 0.2.5 @@ -4290,6 +5103,27 @@ snapshots: to-arraybuffer: 1.0.1 xtend: 4.0.2 + strict-uri-encode@1.1.0: {} + + string.prototype.trim@1.2.9: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + + string.prototype.trimend@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + string_decoder@0.10.31: {} string_decoder@1.1.1: @@ -4310,6 +5144,34 @@ snapshots: dependencies: has-flag: 1.0.0 + svg-baker@1.7.0: + dependencies: + bluebird: 3.7.2 + clone: 2.1.2 + he: 1.2.0 + image-size: 0.5.5 + loader-utils: 1.4.2 + merge-options: 1.0.1 + micromatch: 3.1.0 + postcss: 5.2.18 + postcss-prefix-selector: 1.16.1(postcss@5.2.18) + posthtml-rename-id: 1.0.12 + posthtml-svg-mode: 1.0.3 + query-string: 4.3.4 + traverse: 0.6.10 + transitivePeerDependencies: + - supports-color + + svgo@2.8.0: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.1.1 + stable: 0.1.8 + tapable@0.1.10: {} terser@5.36.0: @@ -4353,8 +5215,55 @@ snapshots: regex-not: 1.0.2 safe-regex: 1.1.0 + traverse@0.6.10: + dependencies: + gopd: 1.0.1 + typedarray.prototype.slice: 1.0.3 + which-typed-array: 1.1.15 + tty-browserify@0.0.0: {} + typed-array-buffer@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + + typed-array-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + + typed-array-byte-offset@1.0.2: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + + typed-array-length@1.0.6: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + + typedarray.prototype.slice@1.0.3: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + typed-array-buffer: 1.0.2 + typed-array-byte-offset: 1.0.2 + typescript@5.6.3: {} ufo@1.5.4: {} @@ -4368,6 +5277,13 @@ snapshots: uglify-to-browserify@1.0.2: {} + unbox-primitive@1.0.2: + dependencies: + call-bind: 1.0.7 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + undici-types@6.19.8: {} unimport@3.13.1(rollup@4.24.0): @@ -4396,6 +5312,8 @@ snapshots: is-extendable: 0.1.1 set-value: 2.0.1 + universalify@2.0.1: {} + unplugin-auto-import@0.18.3(@vueuse/core@9.13.0(vue@3.5.12(typescript@5.6.3)))(rollup@4.24.0): dependencies: '@antfu/utils': 0.7.10 @@ -4461,10 +5379,26 @@ snapshots: dependencies: base64-arraybuffer: 1.0.2 + vary@1.1.2: {} + vditor@3.10.7: dependencies: diff-match-patch: 1.0.5 + vite-plugin-svg-icons@2.0.1(vite@5.4.9(@types/node@20.16.13)(sass@1.80.3)(terser@5.36.0)): + dependencies: + '@types/svgo': 2.6.4 + cors: 2.8.5 + debug: 4.3.7 + etag: 1.8.1 + fs-extra: 10.1.0 + pathe: 0.2.0 + svg-baker: 1.7.0 + svgo: 2.8.0 + vite: 5.4.9(@types/node@20.16.13)(sass@1.80.3)(terser@5.36.0) + transitivePeerDependencies: + - supports-color + vite@5.4.9(@types/node@20.16.13)(sass@1.80.3)(terser@5.36.0): dependencies: esbuild: 0.21.5 @@ -4581,6 +5515,22 @@ snapshots: rtcpeerconnection-shim: 1.2.15 sdp: 2.12.0 + which-boxed-primitive@1.0.2: + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + + which-typed-array@1.1.15: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + window-size@0.1.0: {} wordwrap@0.0.2: {} diff --git a/frontend/src/assets/icons/group.png b/frontend/src/assets/icons/group.png new file mode 100644 index 0000000000000000000000000000000000000000..847564b75da8c236235d1c369c59b02c01d01f11 GIT binary patch literal 3893 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 G{{H}3bQ4ej literal 0 HcmV?d00001 diff --git a/frontend/src/assets/icon/group_avatar.svg b/frontend/src/assets/icons/group_avatar.svg similarity index 100% rename from frontend/src/assets/icon/group_avatar.svg rename to frontend/src/assets/icons/group_avatar.svg diff --git a/frontend/src/components/chat/Chat.vue b/frontend/src/components/chat/Chat.vue index 2342b6b..3b11a24 100644 --- a/frontend/src/components/chat/Chat.vue +++ b/frontend/src/components/chat/Chat.vue @@ -2,7 +2,7 @@ import { useChatStore } from "@/stores/chat"; import { getWorkflowUrl } from "@/system/config"; import { Search } from "@element-plus/icons-vue"; - const store = useChatStore(); + const store = useChatStore() const workUrl = getWorkflowUrl(); onMounted(() => { store.initChat(); @@ -223,8 +223,9 @@ .side { flex: 1; /* 占据剩余宽度 */ - max-width: 200px; - min-width: 200px; + max-width: 200px; + min-width: 200px; + min-height: 650px; max-height: max-content; border-right: 1px solid #e8e8e8; overflow-y: hidden; @@ -282,8 +283,10 @@ .chat-box { flex: 3; + width: 100%; + height: 100%; max-height: max-content; - background-color: #f5f5f5; + background-color: #ffffff; } .chat-setting { diff --git a/frontend/src/components/chat/ChatBox.vue b/frontend/src/components/chat/ChatBox.vue index 4d07a68..b8f5d07 100644 --- a/frontend/src/components/chat/ChatBox.vue +++ b/frontend/src/components/chat/ChatBox.vue @@ -99,79 +99,11 @@ " >退出群聊 + 清空记录 - - - -
-
-
- -
- {{ member.nickname }} -
-
-
-
-
@@ -204,28 +138,29 @@ - -
- -
-
+ +
+ +
+ + +
+
+
+ +
+ +
+ +
+
+
- + -
+
- - - import { useChatStore } from "@/stores/chat"; import { useChooseStore } from "@/stores/choose"; + const store: any = useChatStore(); const choose = useChooseStore(); const imgExt = ["png", "jpg", "jpeg", "gif", "bmp", "webp", "svg"]; @@ -364,7 +294,7 @@ function openDrawer() { store.drawerVisible = true; - store.getGroupMemberList(store.targetGroupInfo.group_id); + // store.getGroupMemberList(store.targetGroupInfo.group_id); } // 监听store.drawerVisible @@ -405,6 +335,35 @@ \ No newline at end of file + /* 设置按钮独立在底部 */ + .settings-icon-row { + position: absolute; + bottom: 20px; + left: 0; + right: 0; + width: 55px; + height: 55px; + } + diff --git a/frontend/src/components/chat/ChatMessage.vue b/frontend/src/components/chat/ChatMessage.vue index a33df70..b234a7b 100644 --- a/frontend/src/components/chat/ChatMessage.vue +++ b/frontend/src/components/chat/ChatMessage.vue @@ -82,6 +82,7 @@
+ + + + +
+
+

{{ targetUserInfo.displayName }}

+

工号:{{ targetUserInfo.jobNumber }}

+

岗位:{{ targetUserInfo.desc }}

+

邮箱:{{ targetUserInfo.email }}

+

电话:{{ targetUserInfo.phone }}

+

入职日期:{{ targetUserInfo.hiredDate }}

+
+
+ + + 发送消息 +
diff --git a/frontend/src/components/chat/chatUserInfo.vue b/frontend/src/components/chat/chatUserInfo.vue index 6e86076..d8b8a91 100644 --- a/frontend/src/components/chat/chatUserInfo.vue +++ b/frontend/src/components/chat/chatUserInfo.vue @@ -1,173 +1,172 @@ diff --git a/frontend/src/components/window/WindowTemplate.vue b/frontend/src/components/window/WindowTemplate.vue index 952495e..d910c1c 100644 --- a/frontend/src/components/window/WindowTemplate.vue +++ b/frontend/src/components/window/WindowTemplate.vue @@ -191,10 +191,10 @@ margin: 0; // left: 0; // top: 0; - min-width: 950px; + // min-width: 900px; width: max-content; height: max-content; - min-height: 650px; + // min-height: 650px; border-radius: 10px; overflow: hidden; background-color: #fff; diff --git a/frontend/src/main.ts b/frontend/src/main.ts index 12724a6..7a3dba6 100644 --- a/frontend/src/main.ts +++ b/frontend/src/main.ts @@ -1,21 +1,24 @@ +import * as ElementPlusIconsVue from '@element-plus/icons-vue'; +//svg插件需要配置代码 +import ElementPlus from 'element-plus'; +import 'element-plus/dist/index.css'; import { createApp } from "vue"; +import screenShort from "vue-web-screen-shot"; import App from "./App.vue"; -import pinia from './stores/index.ts' -import ElementPlus from 'element-plus' -import 'element-plus/dist/index.css' -import './assets/windows10.scss' -import * as ElementPlusIconsVue from '@element-plus/icons-vue' -import router from './system/router' -import screenShort from "vue-web-screen-shot" -import {i18n} from './i18n/index.ts' +import './assets/windows10.scss'; +import { i18n } from './i18n/index.ts'; +import pinia from './stores/index.ts'; +import router from './system/router'; const app = createApp(App) + app.use(router) app.use(ElementPlus) app.use(pinia) app.use(i18n) + app.use(screenShort, { enableWebRtc: true }) for (const [key, component] of Object.entries(ElementPlusIconsVue)) { - app.component(key, component) + app.component(key, component) } app.mount("#app"); diff --git a/frontend/src/stores/chat.ts b/frontend/src/stores/chat.ts index 7a805b5..5feabb8 100644 --- a/frontend/src/stores/chat.ts +++ b/frontend/src/stores/chat.ts @@ -80,7 +80,6 @@ export const useChatStore = defineStore('chatStore', () => { // 群组l列表 const groupList: any = ref([]); - const drawerVisible = ref(false) const targetGroupInfo: any = ref({}) const activeNames = ref([]); const userInfo: any = ref({}); @@ -411,7 +410,7 @@ export const useChatStore = defineStore('chatStore', () => { previewMessage: message.value, previewTimeFormat: formatTime(Date.now()), displayName: userInfo.value.nickname, - chatId: targetUserInfo.value.chatId.toString(), + chatId: targetUserInfo.value.chatId, avatar: userInfo.value.avatar, createdAt: Date.now() } @@ -426,7 +425,7 @@ export const useChatStore = defineStore('chatStore', () => { previewTimeFormat: formatTime(Date.now()), displayName: targetGroupInfo.value.name, isMe: true, - chatId: targetGroupInfo.value.chatId.toString(), + chatId: targetGroupInfo.value.chatId, createdAt: Date.now() } @@ -483,10 +482,6 @@ export const useChatStore = defineStore('chatStore', () => { // 从 conversationList 数据库中查找是否存在对应的会话 const conversation = await db.getByField("workbenchSessionList", 'chatId', data.userId); - - - console.log("更新的文字", message) - // 准备会话更新数据 const updatedConversation = { userId: data.userId, @@ -903,8 +898,6 @@ export const useChatStore = defineStore('chatStore', () => { const updateOrAddUsers = async (users: OnlineUserInfoType[]) => { // 从数据库中获取所有用户信息 const allUsers = await db.getAll("workbenchChatUser"); - console.log(users) - console.log(allUsers) // 添加或更新在线用户 for (const user of users) { const existingUser = allUsers.find((u: { id: string; }) => u.id === user.id); @@ -986,12 +979,10 @@ export const useChatStore = defineStore('chatStore', () => { chatHistory.value = [] targetChatId.value = chatId - console.log("------") if (type === 'user') { console.log("user") // 获取当前用户和目标用户的聊天记录 const history = await getHistory(userInfo.value.id, chatId, type) - console.log(history) chatHistory.value = [...history]; // 设置目标用户的信息 await setTargetUserInfo(chatId); @@ -1030,12 +1021,18 @@ export const useChatStore = defineStore('chatStore', () => { // 设置目标用户的信息 const setTargetUserInfo = async (id: string) => { - const userInfoArray = await db.getByField("workbenchChatUser", "chatId", id); + var userInfoArray = await db.getByField("workbenchChatUser", "chatId", id); + // 封装用户信息 const userInfo = { type: "user", avatar: userInfoArray[0].avatar || "", displayName: userInfoArray[0].nickname || "", + jobNumber: userInfoArray[0].jobNumber || "", + desc: userInfoArray[0].desc || "", + email: userInfoArray[0].email || "", + phone: userInfoArray[0].phone || "", + hiredDate: userInfoArray[0].hiredDate || "", toUserId: config.userInfo.id, chatId: userInfoArray[0].chatId } @@ -1045,8 +1042,16 @@ export const useChatStore = defineStore('chatStore', () => { // 设置目标群信息 const setTargetGrouprInfo = async (id: string) => { - for (const group of groupList.value) { + for (var group of groupList.value) { if (group.group_id === id) { + // 模拟群信息 + // group = { + // chatId: id, + // displayName: "湖南果度科技有限公司", + // avatar: "./src/assets/icons/group.png", + // memberCount: 150, // 假设成员数 + // createdAt: "2023-01-01" // 假设创建日期 + // } targetGroupInfo.value = group; targetUserInfo.value = {}; break; @@ -1149,7 +1154,6 @@ export const useChatStore = defineStore('chatStore', () => { initChatList() targetGroupInfo.value = {} targetChatId.value = '' - drawerVisible.value = false notifySuccess("退出群聊成功") } @@ -1256,6 +1260,43 @@ export const useChatStore = defineStore('chatStore', () => { }; + // 清空聊天记录 + // 清空聊天记录 + const clearChatRecord = async () => { + // 删除我发送给对方的记录 + const whereObjSent = { + toUserId: targetChatId.value, + userId: userInfo.value.id + }; + const resSent = await db.deleteByWhere("workbenchChatRecord", whereObjSent); + + // 删除对方发送给我的记录 + const whereObjReceived = { + userId: targetChatId.value, + toUserId: userInfo.value.id + }; + const resReceived = await db.deleteByWhere("workbenchChatRecord", whereObjReceived); + + // 检查两个删除操作是否都成功 + if (resSent == 1 && resReceived == 1) { + // 更新chatHistory,移除相关记录 + chatHistory.value = chatHistory.value.filter((item: any) => + !(item.toUserId === targetChatId.value && item.userId === userInfo.value.id) && + !(item.userId === targetChatId.value && item.toUserId === userInfo.value.id) + ); + + // 更新chatList中的预览消息 + chatList.value.forEach((item: any) => { + if (item.chatId === targetChatId.value) { + item.previewMessage = "快开始打招呼吧!"; + } + }); + notifySuccess("清空成功"); + return; + } + notifyError("清空失败"); + } + return { emojiList, groupSystemMessage, @@ -1288,7 +1329,6 @@ export const useChatStore = defineStore('chatStore', () => { groupMemberList, groups, inviteFriendDialogVisible, - drawerVisible, addMemberDialogVisible, inviteUserList, messageSendStatus, @@ -1317,6 +1357,7 @@ export const useChatStore = defineStore('chatStore', () => { groupInviteMessage, setScrollToBottom, getGroupMemberList, - getInviteUserList + getInviteUserList, + clearChatRecord, }; }); \ No newline at end of file diff --git a/frontend/src/stores/db.ts b/frontend/src/stores/db.ts index ccced38..94c1826 100644 --- a/frontend/src/stores/db.ts +++ b/frontend/src/stores/db.ts @@ -142,6 +142,11 @@ export const db = { async deleteByField(tableName: ChatTable, fieldName: string, val: any) { return dbInit[tableName].where(fieldName).equals(val).delete() }, + + // 根据whereObj条件删除 + async deleteByWhere(tableName: ChatTable, whereObj: any) { + return dbInit[tableName].where(whereObj).delete() + }, // 获取创建时间最近的记录 async getLatest(tableName: ChatTable, fieldName: string, val: any) { return dbInit[tableName].where(fieldName).equals(val).reverse().first() diff --git a/frontend/src/system/member.ts b/frontend/src/system/member.ts index 690e720..bbaec68 100644 --- a/frontend/src/system/member.ts +++ b/frontend/src/system/member.ts @@ -4,7 +4,7 @@ export const memberList = [ appIcon: "chat", content:"Chat", frame: true, - width: 1050, + width: 1000, height: 650, center: true, resizable: true,