byt-lingxiao-ai 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/components/AiMessage.vue +12 -18
  2. package/components/ChatAvatar.vue +8 -1
  3. package/components/ChatMessageList.vue +29 -10
  4. package/components/ChatWindow.vue +107 -4
  5. package/components/ChatWindowHeader.vue +1 -0
  6. package/components/assets/arrow.png +0 -0
  7. package/components/assets/empty.png +0 -0
  8. package/components/assets/entering.png +0 -0
  9. package/components/assets/logo.png +0 -0
  10. package/components/assets/normal.png +0 -0
  11. package/components/assets/output.png +0 -0
  12. package/components/assets/speaking.png +0 -0
  13. package/components/assets/think.png +0 -0
  14. package/components/assets/thinking.png +0 -0
  15. package/components/assets/waiting.png +0 -0
  16. package/components/mixins/messageMixin.js +11 -5
  17. package/dist/img/empty.f36cb82e.png +0 -0
  18. package/dist/img/entering.4ef198fb.png +0 -0
  19. package/dist/img/normal.30197a82.png +0 -0
  20. package/dist/img/output.1dfa94eb.png +0 -0
  21. package/dist/img/speaking.fa87fedb.png +0 -0
  22. package/dist/img/thinking.21ad5ca5.png +0 -0
  23. package/dist/img/waiting.460478ef.png +0 -0
  24. package/dist/index.common.js +189 -79
  25. package/dist/index.common.js.map +1 -1
  26. package/dist/index.css +2 -2
  27. package/dist/index.umd.js +189 -79
  28. package/dist/index.umd.js.map +1 -1
  29. package/dist/index.umd.min.js +1 -1
  30. package/dist/index.umd.min.js.map +1 -1
  31. package/package.json +1 -1
  32. package/components/assets/byt.mp3 +0 -0
  33. package/dist/img/entering.42f05909.png +0 -0
  34. package/dist/img/normal.13f08ecb.png +0 -0
  35. package/dist/img/output.85c6bd8b.png +0 -0
  36. package/dist/img/speaking.3ce8b666.png +0 -0
  37. package/dist/img/thinking.05f29a84.png +0 -0
  38. package/dist/img/waiting.ac21d76e.png +0 -0
package/dist/index.css CHANGED
@@ -1,4 +1,4 @@
1
- .chat-robot[data-v-3d936cb2]{width:150px;height:200px}.chat-robot.entering[data-v-3d936cb2]{background-image:url(img/entering.42f05909.png);background-size:cover}.chat-robot.waiting[data-v-3d936cb2]{background-image:url(img/waiting.ac21d76e.png);background-size:cover}.chat-robot.speaking[data-v-3d936cb2]{background-image:url(img/speaking.3ce8b666.png);background-size:cover}.chat-ai[data-v-0c02b1ca]{display:flex;width:38px;padding:2px 2px 9px 2px;flex-direction:column;align-items:center;gap:6px;border-radius:40px;background:linear-gradient(180deg,#3e5beb,#5ca5f9);box-shadow:0 2px 11.6px 0 rgba(0,0,0,.1);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chat-ai-avater[data-v-0c02b1ca]{border-radius:67px;border:1px solid #0f66e4;background:#124087;display:flex;width:34px;height:33px;padding:2px 2px 1px 2px;justify-content:center;align-items:center;background-size:cover;background-position:50%}.chat-ai-avater.normal[data-v-0c02b1ca]{background-image:url(img/normal.13f08ecb.png)}.chat-ai-avater.thinking[data-v-0c02b1ca]{background-image:url(img/thinking.05f29a84.png)}.chat-ai-avater.output[data-v-0c02b1ca]{background-image:url(img/output.85c6bd8b.png)}.chat-ai-text[data-v-0c02b1ca]{color:#fff;font-family:PingFang SC;font-size:16px;font-style:normal;font-weight:500;line-height:20px;align-self:stretch;display:flex;align-items:center;width:20px;margin:0 auto;text-align:center}.chat-window-header[data-v-90ac64ba]{display:flex;align-items:center;border-bottom:1px solid #eaeaea;background:#fff;padding:16px;flex-shrink:0}.chat-window-header-title[data-v-90ac64ba]{color:#29414e;font-size:18px;font-weight:900;position:relative;padding-left:36px}.chat-window-header-open[data-v-90ac64ba]{width:24px;height:24px;overflow:hidden;margin-left:auto;margin-right:20px;cursor:pointer}.chat-window-header-title[data-v-90ac64ba]:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:32px;height:32px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAXOSURBVHgB7VZNTFxVFD7nvvveDMzADHTE0j+mpaYuWoGasmsc0jTR1Cp05appjU1MNAFj94DGnTHo1qQ/UaMLTWmMxmgsU39iwsKBqIk1UgdsnVLaztAZYOa9d+/x3Dd00wIDbu0JNzfDe+9+3/nO3wV4aP93Q9ig9b4+l4o3hJ6vuDqZv+PHp6bKgCgKQtAEgL78+1fb0xs5b90Ejg8X+xlkyAlbcSckwAkLckKItgVw64YLv2QWoFTUIARmpYVD4589en4959Yk0DuQT1oWnnXCmLIdAaGwADuEwCTIcZjAMhGLNIx9OQ8LJQ3ITPlv2g7ZPelzTdm1zhdrPTx8Kt/pe5TRmlLKR+IdlCLQPpBWhIp/V3cgI8Who02QSFjg2ICOLZISVObwqZud/4lA6oVcUnv+BaUgrjVHl8HYSQBi2ZCV49381gEhjYaYcBC6DzZAyAlUYaVEzLHlWO/L+eRqOHK1Bx5YY6ixTflEWiK7T7itVU4kk/ZkU9yaWFqk7ExOty24NKD5vSpJwGjChl27Hbx+3QNhcXoKjKGEC3xk10o4K+bAgWO5E1JaZ0ImxuzVrvYQ7dkXRlFvgecBGOnrbYCmOhjyS+75mYKVUYjV5GTPpa/gp+8WWF8Ezh9OTAaS9NpHw7ERWE8IfA2DmjisLGX3wSg8fiCCvrRgaYnAc3lVCPJ3CWbv6IFNm8JtmxrFCaTlcLASVr2E9nYnG4TBwSBpQ7YYXAnrAQJ7n/47xYckI1GLUkdj0NjiBMBuRQfgZiePIBGBc+075M7nuvHyq0fkxWgY0iZNOGTgcpK27XDSQaWYiglIiPhLbxZTNQlwJaeiDQIOHYmZVEO3vAzs8uG8Rx1Ib2+BnleekSf7urBw77tEFIYlEhoFlNLY3GylQ+Gq99wzgiUk1Cbg+9Cxb38EfEb3GNRd9trSen5LM5443Wv3nOyx0/d/d/KwnY46YsSEwbGQyiVVsMNckmGL2PtgFYt+R00CdRER39YW4jhrqPAKFKhQtiWuupobaRrWsI7tYjgSgkK9UO9dueY1SdvIzz2BG5XZ83kVr0mgtdWG0oLxOkg2NLuNOITS6Z++iRfGMhRfjUAPh6T9EeoL2f6Ir8VgFdx0TkGRqKBczoOaBJoTsmAkZ+mJwcl3NezeQfOLCvtLHsSuzPqDsIb9c4eSMzesjHQwuSy9KU28nq0A945CTQKOI7KB7GWNlWoCkhlAngK0BOCtEvR/MOal7v/uLP/v7VFv7GYRz2oUcTOsQkZ63i0g+jWzYEbE5P3fPdgJUV30PWvA98D0fgSurfy8fkpwN+HOBp5POFsAo0LavG5C8lvOG5mZw+OmS1t8ouBy4NfRNCFVUXjpiwIU7xJJEOkH4GAFe/GtUt73KWYImKzesdXOtj5Wl1w0jYjDY2o9Ua/7tm528ldzanTBhbjgsWwAkSvAKMUJSLevVXByfJHmbnngeno6M9q6E2qFwJhX9oZZevQqXIa8/rzqtUFF5S0GYRWIPYW5Ir4ze7s8HWvEkcYoj+lQdUzXh3k0c6++Ml7E8e9LUCwqNGrYlhhaCWvV+8Cx04UMKerUyjQWoG1bJOzpjuLSkjYVQqwEMsmszZeP3Ztpvi4ik4Uidfx1tdLJhDtN9QTJbJZH2R8/btm5Es6q01D71Oe7lOExa8YxTk25lNzjkVUnORn5DsBKoIC2pbI+9/MfGnxXgUna8pIOhk918SCyIGu7qmc1nFXvA6MjTdmK5/dwCPJumUvS1fjDtyUG0mSScXnKmXHL9wNzPaBAT/4dPA/ekViwUPamP2nNbpiAsW/eb5lQ4O53fTXNBGBuzsNLn+dRMQkMstzkBAVggbcMbt0DtyAtFXR9faZpci2MdV9KzR0hGNOKktEGSU88WY+JzQ55PpjKqPYMjjvveS7h4Q/faHh3Pedu+Fq+99lcyvd1ijR2aNLx9vYwd0+nICVNLxbc0U9HHknDQ3toG7B/AS/M/OhsLMvIAAAAAElFTkSuQmCC);background-size:cover}.chat-window-header-close[data-v-90ac64ba]{width:24px;height:24px;overflow:hidden;cursor:pointer}.chat-window-message-user[data-v-6a2b6167]{display:flex;justify-content:flex-end}.user-message[data-v-6a2b6167]{max-width:80%;display:flex;padding:8px 12px;justify-content:center;align-items:center;gap:10px;border-radius:12px;background:#e3ecff}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}
1
+ .chat-robot[data-v-3d936cb2]{width:150px;height:200px}.chat-robot.entering[data-v-3d936cb2]{background-image:url(img/entering.4ef198fb.png);background-size:cover}.chat-robot.waiting[data-v-3d936cb2]{background-image:url(img/waiting.460478ef.png);background-size:cover}.chat-robot.speaking[data-v-3d936cb2]{background-image:url(img/speaking.fa87fedb.png);background-size:cover}.chat-ai[data-v-45540794]{display:flex;width:38px;padding:2px 2px 9px 2px;flex-direction:column;align-items:center;gap:6px;border-radius:40px;background:linear-gradient(180deg,#3e5beb,#5ca5f9);box-shadow:0 2px 11.6px 0 rgba(0,0,0,.1);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:box-shadow .2s}.chat-ai[data-v-45540794]:hover{box-shadow:0 4px 16px 0 rgba(0,0,0,.2)}.chat-ai[data-v-45540794]:active{cursor:grabbing}.chat-ai-avater[data-v-45540794]{border-radius:67px;border:1px solid #0f66e4;background:#124087;display:flex;width:34px;height:33px;padding:2px 2px 1px 2px;justify-content:center;align-items:center;background-size:cover;background-position:50%}.chat-ai-avater.normal[data-v-45540794]{background-image:url(img/normal.30197a82.png)}.chat-ai-avater.thinking[data-v-45540794]{background-image:url(img/thinking.21ad5ca5.png)}.chat-ai-avater.output[data-v-45540794]{background-image:url(img/output.1dfa94eb.png)}.chat-ai-text[data-v-45540794]{color:#fff;font-family:PingFang SC;font-size:16px;font-style:normal;font-weight:500;line-height:20px;align-self:stretch;display:flex;align-items:center;width:20px;margin:0 auto;text-align:center}.chat-window-header[data-v-7cac9eba]{display:flex;align-items:center;border-bottom:1px solid #eaeaea;background:#fff;padding:16px;flex-shrink:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chat-window-header-title[data-v-7cac9eba]{color:#29414e;font-size:18px;font-weight:900;position:relative;padding-left:36px}.chat-window-header-open[data-v-7cac9eba]{width:24px;height:24px;overflow:hidden;margin-left:auto;margin-right:20px;cursor:pointer}.chat-window-header-title[data-v-7cac9eba]:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:32px;height:32px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAABVlBMVEUAAABIZOyWtvucufuNsvx2nfkxUOhIaOwmReYoSOVcf/KgvvsrSeWvyf2bufeBp/phg/M7Weq/z/9Ma+9Lau5DYO14l/ZDYOtSdPCMsPuLr/tTc/AvT+clReRZevCYuftggfKfwf2oxf01Uuenxv6Xt/s2U+lScetFZepihfQ7WOp+pfp3lvV3lfVafPJafPBegPGYu/2Qsv1mh/OBo/p6n/d7ofp7nvpkg/Ngg+9FZe9GYu+vz/9ojPWAq/yJtf6Fr/2BrPyFrPuFsf1+p/tulPhrkfdihfSMuP+Drv12nvlymvlZe/JUdPF4ovpcfvNObe+RvP+Hs/56o/t9pfpwl/hMae5FYu2Pu/9/qfx0m/lkiPVnhfNWd/JRcfBJZ+5HZe1DYexBXuw/XOs7W+o5Vuo3VemOs/yCqvt8pftojfYvTed3oPp7n/hfgvRegfOCpvkvTeilAxCMAAAAPXRSTlMAIJ9P79/fv6+Ab0BAPyDv798Q7+/v39/Pv7+/v7+vkI9/cGBfX19AMO/f3s/Pr6+Qj4+Ab2BfX0BAMC8QOqPNlAAAAc9JREFUOMvNklVz23AQxB3JHGOYqUmTMnP/JGbJIMnM7ED7/V+aTj2q7CTvubed/e3NzdwGHtucHx1E9qOxxAN2PAME1SiC3jT89B57aVe7qQq2MiZMe9DPLi3631cbdVMEfMUoY+x0O+sXC/nNpqWb4oRXlSLJ/3JbzbX5Hc87LUt/SZ3QH0MFyJZqjtXY8vtP+l23NsxJKHecSnMYDfW6psV9QHjgXpVQnpVJMElzJJ/bMM3rzH8/MW1jxGICR9TPQGAHYokSxSr46gGxHoNlWOa2l/+qZUZGpwAI/AcPiAICuUL6bCbfQ4nmeVs98IA9pmgooVRyJleCh5/UinIZ8YCIoVTsL++CKzOdTIWUwpjZ84A3qs0LtEQOZ/osXRiXCYh6wJEgTMApkpl/R25zZSizTC/mAd9AVRQpiYU7twdQI0gwi5j2b9/bn92Y2kYuTzg6GbwN51HpyhmE/VXQ6roeRJh7kTqWkJQb1txuf64UWw3LqZVYWAh9pk+oV7rV6mTn373WbLkMkrlLlZ+Imm41Nxcqc7He6ToYQ6PCA9GsN1Z/3Klctj9oj0hRsYXqtbbr5f2lCE97oGioAsjEH+h1Ihbdj7x+ex54ZPMHPwRk1/kdiX4AAAAASUVORK5CYII=);background-size:cover}.chat-window-header-close[data-v-7cac9eba]{width:24px;height:24px;overflow:hidden;cursor:pointer}.chat-window-message-user[data-v-6a2b6167]{display:flex;justify-content:flex-end}.user-message[data-v-6a2b6167]{max-width:80%;display:flex;padding:8px 12px;justify-content:center;align-items:center;gap:10px;border-radius:12px;background:#e3ecff}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}
2
2
  /*!
3
3
  Theme: GitHub
4
4
  Description: Light theme as seen on github.com
@@ -8,4 +8,4 @@
8
8
 
9
9
  Outdated base version: https://github.com/primer/github-syntax-light
10
10
  Current colors taken from GitHub's CSS
11
- */.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#005cc5}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-code,.hljs-comment,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}.ai-loading[data-v-a8b0fba0]{display:flex;align-items:center;padding:12px 0;height:24px}.dot[data-v-a8b0fba0]{width:8px;height:8px;margin-right:6px;background-color:#86909c;border-radius:50%;animation:dot-bounce-a8b0fba0 1.4s ease-in-out infinite both}.dot[data-v-a8b0fba0]:first-child{animation-delay:-.32s}.dot[data-v-a8b0fba0]:nth-child(2){animation-delay:-.16s}.dot[data-v-a8b0fba0]:nth-child(3){animation-delay:0s}@keyframes dot-bounce-a8b0fba0{0%,80%,to{transform:scale(0);opacity:.5}40%{transform:scale(1);opacity:1}}.chat-window-message-ai[data-v-a8b0fba0]{display:flex;gap:12px;align-items:flex-start;max-width:100%;border-radius:12px;background:#f6f8fc;padding:8px 12px}.ai-render[data-v-a8b0fba0]{width:100%}.ai-thinking[data-v-a8b0fba0]{margin-bottom:8px}.ai-thinking-time[data-v-a8b0fba0]{border-radius:9px;background:#ecedf4;color:#86909c;font-family:"Alibaba PuHuiTi 2.0";font-size:16px;font-style:normal;font-weight:500;padding:0 30px 0 30px;height:28px;box-sizing:border-box;display:inline-flex;align-items:center;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer}.ai-thinking-time[data-v-a8b0fba0]:before{left:6px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJ2SURBVHgBhVS/axRBFP7eGuEiJO7mDCYQ4dIIKTQnaBErjZ0EvIgWVndaWZ7WQs7C1uA/oJ6tYiIEBcFTLLxOz0rQwhMPo+Dm1iab6sb3dnazO7uby4NlZ97M++Z7Pwk50u8rGxaqA4VzBJRZVQqPOgroWhbWnXFq5tlSWvG3ryoW4REvbQyXLllopIEtg9k/tcpga2mw7Z1cwJIa4DHbrOQCyoFSqMvaZ4D2p/jS5y/mvvUhfoRtGi4Tic4odLMWummw2uoDM9MGK7isGx0FDhVMPcd7+YhD6wFDBlsBsoYbLb1+w4yePNfrjbfAt+/IiBCSZB4QdkSoRa6+fg8cnwUOjwGnT2qmO/wdHAGOTgJnTgBTk7Hroh8fC7YFroA/5Hpqjf2upF1tcmqqy8DqQ+120dZxvHWDgdrA4oLWG64rvBihuMYCkQs+x2hmikEcjldBrydsfSbAsi7a2ThyRuYlhlK46G2GMWppkIVTwO17zOQscPUicIH/V/h/5z5wbFo/9vSl9uhrHNOSlXR1P9n2zb08nGZJW54S/FJS6Xo64PNzwLNXOkmFgq7Hm9eYGeuWzmdLiqVjcWY6BouQ6c/N+C8u9X7psMhjvq/vZbxS+EFuX9W5bIJKl7KRmltaNNkKqHRAlKhI5G55LtZxb9dIilERxG2jf4WVlEn1sjbs/dZrKXAJhXwp6U7YNBu1XiUcCrsibN281vP2SAazk8kTZFl6kJv8QfJC+2MMlhwOUn+yT8aPbe9GY8yYhxzPBuX09TARIkWH6rtM0xfCySOgpeFQ8HjCXBfvkkra63Y4NC6FrVkO1V0pM37wHQZoOg55abv/kUb4+qgKrBoAAAAASUVORK5CYII=) no-repeat;background-size:cover}.ai-thinking-time[data-v-a8b0fba0]:after,.ai-thinking-time[data-v-a8b0fba0]:before{content:"";position:absolute;top:50%;transform:translateY(-50%);width:16px;height:16px}.ai-thinking-time[data-v-a8b0fba0]:after{right:6px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAB/SURBVHgB7ZAxDkBAEEVnBLUjuIm4gSNoFEqtaivKLRUKbiJO4ArOQWQsIiHsbiG6feX8/34xAIZ/YbzxGK98VceSBaUQXVwGF51ONYIymYQIRP3RwmCiOWRZOmoHrnKeJfF2K3jdykZQJ5/IRm4/ILCjN3ljv4nMAfuRGT6yAqDAQFdhjRBxAAAAAElFTkSuQmCC) no-repeat;background-size:cover}.ai-thinking-content[data-v-a8b0fba0]{color:#86909c;font-size:14px;padding:8px 0 8px 12px}.ai-content[data-v-a8b0fba0],.ai-thinking-content[data-v-a8b0fba0]{font-family:"Alibaba PuHuiTi 2.0";font-style:normal;font-weight:400;line-height:24px}.ai-content[data-v-a8b0fba0]{color:#4e5969;font-size:16px}.markdown-body[data-v-a8b0fba0]{word-wrap:break-word}.markdown-body[data-v-a8b0fba0] h1,.markdown-body[data-v-a8b0fba0] h2,.markdown-body[data-v-a8b0fba0] h3,.markdown-body[data-v-a8b0fba0] h4{margin:16px 0 8px 0;font-weight:600;line-height:1.4;color:#1f2937}.markdown-body[data-v-a8b0fba0] h1{font-size:24px;border-bottom:2px solid #e5e7eb;padding-bottom:8px}.markdown-body[data-v-a8b0fba0] h2{font-size:20px;border-bottom:1px solid #e5e7eb;padding-bottom:6px}.markdown-body[data-v-a8b0fba0] h3{font-size:18px}.markdown-body[data-v-a8b0fba0] h4{font-size:16px}.markdown-body[data-v-a8b0fba0] code{background-color:rgba(175,184,193,.2);border-radius:3px;font-size:85%;margin:0;padding:.2em .4em;font-family:Monaco,Menlo,Consolas,Courier New,monospace;color:#e83e8c}.markdown-body[data-v-a8b0fba0] pre{background-color:#f6f8fa;border-radius:6px;padding:16px;overflow:auto;margin:12px 0;border:1px solid #e1e4e8}.markdown-body[data-v-a8b0fba0] pre code{background-color:transparent;border:0;display:inline;line-height:inherit;margin:0;overflow:visible;padding:0;word-wrap:normal;color:#24292e;font-size:14px}.markdown-body[data-v-a8b0fba0] .table-wrapper{overflow-x:auto;border:1px solid #dfe2e5}.markdown-body[data-v-a8b0fba0] .markdown-table{border-collapse:collapse;width:100%;margin:12px 0;font-size:14px;box-shadow:0 1px 3px rgba(0,0,0,.1);overflow:hidden}.markdown-body[data-v-a8b0fba0] .markdown-table td,.markdown-body[data-v-a8b0fba0] .markdown-table th{border:1px solid #dfe2e5;padding:10px 14px;text-align:left}.markdown-body[data-v-a8b0fba0] .markdown-table th{background-color:#f3f4f6;font-weight:600;color:#374151}.markdown-body[data-v-a8b0fba0] .markdown-table tr:nth-child(2n){background-color:#f9fafb}.markdown-body[data-v-a8b0fba0] .markdown-table tr:hover{background-color:#f3f4f6;transition:background-color .2s}.markdown-body[data-v-a8b0fba0] ol,.markdown-body[data-v-a8b0fba0] ul{padding-left:24px;margin:8px 0}.markdown-body[data-v-a8b0fba0] li{margin:4px 0;line-height:1.6}.markdown-body[data-v-a8b0fba0] strong{font-weight:600;color:#1f2937}.markdown-body[data-v-a8b0fba0] em{font-style:italic}.markdown-body[data-v-a8b0fba0] del{text-decoration:line-through;opacity:.7}.markdown-body[data-v-a8b0fba0] blockquote{border-left:4px solid #dfe2e5;padding-left:16px;margin:12px 0;color:#6b7280;font-style:italic}.markdown-body[data-v-a8b0fba0] a{color:#3b82f6;text-decoration:none}.markdown-body[data-v-a8b0fba0] a:hover{text-decoration:underline;color:#2563eb}.markdown-body[data-v-a8b0fba0] img{max-width:100%;border-radius:6px;margin:12px 0}.markdown-body[data-v-a8b0fba0] hr{border:none;border-top:1px solid #e5e7eb;margin:16px 0}.markdown-body[data-v-a8b0fba0] br{line-height:1.6}.chat-window-content[data-v-53715846]{flex:1;padding:16px;overflow-y:auto;display:flex;flex-direction:column;gap:8px}.scrollbar-hide[data-v-53715846]::-webkit-scrollbar{display:none}.scrollbar-hide[data-v-53715846]{-ms-overflow-style:none;scrollbar-width:none}[data-v-6f416073] .el-textarea__inner{border:none!important;padding:0 5px;font-family:PingFang SC!important}[data-v-6f416073] .el-textarea__inner::-webkit-scrollbar{width:6px;height:6px}[data-v-6f416073] .el-textarea__inner::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:3px}[data-v-6f416073] .el-textarea__inner::-webkit-scrollbar-track{background:transparent}.chat-window-footer[data-v-6f416073]{padding:16px}.chat-window-textarea[data-v-6f416073]{min-height:99px;max-height:180px;border-radius:8px;border:1px solid #f2f2f2;background:#fff;display:flex;flex-direction:column}.chat-window-input[data-v-6f416073]{padding:10px 12px;font-size:16px;font-family:PingFang SC}.chat-window-bar[data-v-6f416073]{display:flex;justify-content:flex-end;padding:8px}.chat-window-send[data-v-6f416073]{width:70px;height:36px;flex-shrink:0;border-radius:6px;background:rgba(43,128,246,.1);display:flex;align-items:center;justify-content:center;cursor:pointer}.chat-overlay[data-v-1424b8b1]{position:fixed;top:0;left:0;width:100%;height:100%;background:transparent;z-index:10000}.chat-window[data-v-1424b8b1]{width:480px;height:740px;border-radius:14px;background:#fff;box-shadow:0 2px 20px 0 rgba(0,0,0,.16);position:absolute;bottom:20px;right:60px;overflow:hidden;display:flex;flex-direction:column}.hidden-audio[data-v-14ff12bc]{position:absolute;left:-9999px;opacity:0;pointer-events:none}.chat[data-v-14ff12bc]{position:fixed;bottom:20px;right:10px;z-index:10001}
11
+ */.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#005cc5}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-code,.hljs-comment,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}.ai-loading[data-v-70c64956]{display:flex;align-items:center;padding:12px 0;height:24px}.dot[data-v-70c64956]{width:8px;height:8px;margin-right:6px;background-color:#86909c;border-radius:50%;animation:dot-bounce-70c64956 1.4s ease-in-out infinite both}.dot[data-v-70c64956]:first-child{animation-delay:-.32s}.dot[data-v-70c64956]:nth-child(2){animation-delay:-.16s}.dot[data-v-70c64956]:nth-child(3){animation-delay:0s}@keyframes dot-bounce-70c64956{0%,80%,to{transform:scale(0);opacity:.5}40%{transform:scale(1);opacity:1}}.chat-window-message-ai[data-v-70c64956]{display:flex;gap:12px;align-items:flex-start;max-width:100%;border-radius:12px;background:#f6f8fc;padding:8px 12px}.ai-render[data-v-70c64956]{width:100%}.ai-thinking[data-v-70c64956]{margin-bottom:8px}.ai-thinking-time[data-v-70c64956]{border-radius:9px;background:#ecedf4;color:#86909c;font-family:"Alibaba PuHuiTi 2.0";font-size:16px;font-style:normal;font-weight:500;padding:0 30px 0 30px;height:28px;box-sizing:border-box;display:inline-flex;align-items:center;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer}.ai-thinking-time[data-v-70c64956]:before{left:6px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAAAYFBMVEUAAADu8P/u8P/u8P/u8P/u8P/u8P/s7//v8v/s7//v7//t7//v8f/u8P/l6P/Iz/+stv+1v//S1/9Xbf/b3/+/x/+irv/b4P+Zpv9yhP+Pnv+Glv+Qnv99jf9hdf/R1/8RfKwjAAAADXRSTlMA36/vz5CAYF9QEHBvMEqmkAAAAM9JREFUGNNNkIkSgyAMRAG1niEoouDV///LJvFqZmDgkZ0Nq6SazmiA3FTqrTqDq/SDC7nbE39O9iHQA/S0HL0UzEppG3gfpbsmqPnwXcFtsAQ+Zw032ol7A2vBkaRVRsRpOPbN44r8YFTOinmxKbpjjKPMpQAGmCx6R/6+h2gRgCDe0BGcgKEWecQUpzSuMll+Gs07+rR63C+j9hppDoFdHG2VaiQMXMAtsAUx54jeb87yzeoOibwDh2L/Y3qrUFeV+kYZR/Rgk5OD6Rq5/QAhCBJvrLC2lgAAAABJRU5ErkJggg==) no-repeat;background-size:cover}.ai-thinking-time[data-v-70c64956]:after,.ai-thinking-time[data-v-70c64956]:before{content:"";position:absolute;top:50%;transform:translateY(-50%);width:16px;height:16px}.ai-thinking-time[data-v-70c64956]:after{right:6px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAFVBMVEUAAACDj5eGkJyGj5uFj5uGj5uAj5/flAqRAAAAB3RSTlMAIN+ggHAQx7ts8QAAAClJREFUCNdjIBWwCUAZQooQmlHZSAAiYMCsCBFgYAALsRowMDA7kGY8AIDkAfQcVWSDAAAAAElFTkSuQmCC) no-repeat;background-size:cover}.ai-thinking-content[data-v-70c64956]{color:#86909c;font-size:14px;padding:8px 0 8px 12px}.ai-content[data-v-70c64956],.ai-thinking-content[data-v-70c64956]{font-family:"Alibaba PuHuiTi 2.0";font-style:normal;font-weight:400;line-height:24px}.ai-content[data-v-70c64956]{color:#4e5969;font-size:16px}.markdown-body[data-v-70c64956]{word-wrap:break-word}.markdown-body[data-v-70c64956] h1,.markdown-body[data-v-70c64956] h2,.markdown-body[data-v-70c64956] h3,.markdown-body[data-v-70c64956] h4{margin:16px 0 8px 0;font-weight:600;line-height:1.4;color:#1f2937}.markdown-body[data-v-70c64956] h1{font-size:24px;border-bottom:2px solid #e5e7eb;padding-bottom:8px}.markdown-body[data-v-70c64956] h2{font-size:20px;border-bottom:1px solid #e5e7eb;padding-bottom:6px}.markdown-body[data-v-70c64956] h3{font-size:18px}.markdown-body[data-v-70c64956] h4{font-size:16px}.markdown-body[data-v-70c64956] code{background-color:rgba(175,184,193,.2);border-radius:3px;font-size:85%;margin:0;padding:.2em .4em;font-family:Monaco,Menlo,Consolas,Courier New,monospace;color:#e83e8c}.markdown-body[data-v-70c64956] pre{background-color:#f6f8fa;border-radius:6px;padding:16px;overflow:auto;margin:12px 0;border:1px solid #e1e4e8}.markdown-body[data-v-70c64956] pre code{background-color:transparent;border:0;display:inline;line-height:inherit;margin:0;overflow:visible;padding:0;word-wrap:normal;color:#24292e;font-size:14px}.markdown-body[data-v-70c64956] .table-wrapper{overflow-x:auto;border:1px solid #dfe2e5}.markdown-body[data-v-70c64956] .markdown-table{border-collapse:collapse;width:100%;margin:12px 0;font-size:14px;box-shadow:0 1px 3px rgba(0,0,0,.1);overflow:hidden}.markdown-body[data-v-70c64956] .markdown-table td,.markdown-body[data-v-70c64956] .markdown-table th{border:1px solid #dfe2e5;padding:10px 14px;text-align:left}.markdown-body[data-v-70c64956] .markdown-table th{background-color:#f3f4f6;font-weight:600;color:#374151}.markdown-body[data-v-70c64956] .markdown-table tr:nth-child(2n){background-color:#f9fafb}.markdown-body[data-v-70c64956] .markdown-table tr:hover{background-color:#f3f4f6;transition:background-color .2s}.markdown-body[data-v-70c64956] ol,.markdown-body[data-v-70c64956] ul{padding-left:24px;margin:8px 0}.markdown-body[data-v-70c64956] li{margin:4px 0;line-height:1.6}.markdown-body[data-v-70c64956] strong{font-weight:600;color:#1f2937}.markdown-body[data-v-70c64956] em{font-style:italic}.markdown-body[data-v-70c64956] del{text-decoration:line-through;opacity:.7}.markdown-body[data-v-70c64956] blockquote{border-left:4px solid #dfe2e5;padding-left:16px;margin:12px 0;color:#6b7280;font-style:italic}.markdown-body[data-v-70c64956] a{color:#3b82f6;text-decoration:none}.markdown-body[data-v-70c64956] a:hover{text-decoration:underline;color:#2563eb}.markdown-body[data-v-70c64956] img{max-width:100%;border-radius:6px;margin:12px 0}.markdown-body[data-v-70c64956] hr{border:none;border-top:1px solid #e5e7eb;margin:16px 0}.markdown-body[data-v-70c64956] br{line-height:.8em}.chat-window-empty[data-v-dfc4454c]{width:300px;height:300px;background:url(img/empty.f36cb82e.png) no-repeat;background-size:cover;margin:auto}.chat-window-content[data-v-dfc4454c]{flex:1;padding:16px;overflow-y:auto;display:flex;flex-direction:column;gap:8px}.scrollbar-hide[data-v-dfc4454c]::-webkit-scrollbar{display:none}.scrollbar-hide[data-v-dfc4454c]{-ms-overflow-style:none;scrollbar-width:none}[data-v-6f416073] .el-textarea__inner{border:none!important;padding:0 5px;font-family:PingFang SC!important}[data-v-6f416073] .el-textarea__inner::-webkit-scrollbar{width:6px;height:6px}[data-v-6f416073] .el-textarea__inner::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:3px}[data-v-6f416073] .el-textarea__inner::-webkit-scrollbar-track{background:transparent}.chat-window-footer[data-v-6f416073]{padding:16px}.chat-window-textarea[data-v-6f416073]{min-height:99px;max-height:180px;border-radius:8px;border:1px solid #f2f2f2;background:#fff;display:flex;flex-direction:column}.chat-window-input[data-v-6f416073]{padding:10px 12px;font-size:16px;font-family:PingFang SC}.chat-window-bar[data-v-6f416073]{display:flex;justify-content:flex-end;padding:8px}.chat-window-send[data-v-6f416073]{width:70px;height:36px;flex-shrink:0;border-radius:6px;background:rgba(43,128,246,.1);display:flex;align-items:center;justify-content:center;cursor:pointer}.chat-overlay[data-v-1424b8b1]{position:fixed;top:0;left:0;width:100%;height:100%;background:transparent;z-index:10000}.chat-window[data-v-1424b8b1]{width:480px;height:740px;border-radius:14px;background:#fff;box-shadow:0 2px 20px 0 rgba(0,0,0,.16);position:absolute;bottom:20px;right:60px;overflow:hidden;display:flex;flex-direction:column}.hidden-audio[data-v-637b4214]{position:absolute;left:-9999px;opacity:0;pointer-events:none}.chat[data-v-637b4214]{position:fixed;bottom:20px;right:10px;z-index:10001}
package/dist/index.umd.js CHANGED
@@ -28460,12 +28460,13 @@ if (typeof window !== 'undefined') {
28460
28460
  var es_iterator_constructor = __webpack_require__(8111);
28461
28461
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.for-each.js
28462
28462
  var es_iterator_for_each = __webpack_require__(7588);
28463
- ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindow.vue?vue&type=template&id=14ff12bc&scoped=true
28463
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindow.vue?vue&type=template&id=637b4214&scoped=true
28464
28464
  var render = function render() {
28465
28465
  var _vm = this,
28466
28466
  _c = _vm._self._c;
28467
28467
  return _c('div', {
28468
- staticClass: "chat"
28468
+ staticClass: "chat",
28469
+ style: _vm.chatStyle
28469
28470
  }, [_c('audio', {
28470
28471
  ref: "audioPlayer",
28471
28472
  staticClass: "hidden-audio",
@@ -28487,14 +28488,13 @@ var render = function render() {
28487
28488
  "status": _vm.avaterStatus
28488
28489
  },
28489
28490
  on: {
28490
- "click": _vm.toggleWindow
28491
+ "mousedown": _vm.startDrag
28491
28492
  }
28492
28493
  }), _c('ChatWindowDialog', {
28493
28494
  attrs: {
28494
28495
  "messages": _vm.messages,
28495
28496
  "input-message": _vm.inputMessage,
28496
- "think-status": _vm.thinkStatus,
28497
- "loading": _vm.isLoading
28497
+ "think-status": _vm.thinkStatus
28498
28498
  },
28499
28499
  on: {
28500
28500
  "update:inputMessage": function ($event) {
@@ -28678,15 +28678,15 @@ var component = normalizeComponent(
28678
28678
  )
28679
28679
 
28680
28680
  /* harmony default export */ var ChatRobot = (component.exports);
28681
- ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatAvatar.vue?vue&type=template&id=0c02b1ca&scoped=true
28682
- var ChatAvatarvue_type_template_id_0c02b1ca_scoped_true_render = function render() {
28681
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatAvatar.vue?vue&type=template&id=45540794&scoped=true
28682
+ var ChatAvatarvue_type_template_id_45540794_scoped_true_render = function render() {
28683
28683
  var _vm = this,
28684
28684
  _c = _vm._self._c;
28685
28685
  return _c('div', {
28686
28686
  staticClass: "chat-ai",
28687
28687
  on: {
28688
- "click": function ($event) {
28689
- return _vm.$emit('click');
28688
+ "mousedown": function ($event) {
28689
+ return _vm.$emit('mousedown');
28690
28690
  }
28691
28691
  }
28692
28692
  }, [_c('div', {
@@ -28695,7 +28695,7 @@ var ChatAvatarvue_type_template_id_0c02b1ca_scoped_true_render = function render
28695
28695
  staticClass: "chat-ai-text"
28696
28696
  }, [_vm._v(_vm._s(_vm.statusText))])]);
28697
28697
  };
28698
- var ChatAvatarvue_type_template_id_0c02b1ca_scoped_true_staticRenderFns = [];
28698
+ var ChatAvatarvue_type_template_id_45540794_scoped_true_staticRenderFns = [];
28699
28699
 
28700
28700
  ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatAvatar.vue?vue&type=script&lang=js
28701
28701
  /* harmony default export */ var ChatAvatarvue_type_script_lang_js = ({
@@ -28720,10 +28720,10 @@ var ChatAvatarvue_type_template_id_0c02b1ca_scoped_true_staticRenderFns = [];
28720
28720
  });
28721
28721
  ;// ./components/ChatAvatar.vue?vue&type=script&lang=js
28722
28722
  /* harmony default export */ var components_ChatAvatarvue_type_script_lang_js = (ChatAvatarvue_type_script_lang_js);
28723
- ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatAvatar.vue?vue&type=style&index=0&id=0c02b1ca&prod&scoped=true&lang=css
28723
+ ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatAvatar.vue?vue&type=style&index=0&id=45540794&prod&scoped=true&lang=css
28724
28724
  // extracted by mini-css-extract-plugin
28725
28725
 
28726
- ;// ./components/ChatAvatar.vue?vue&type=style&index=0&id=0c02b1ca&prod&scoped=true&lang=css
28726
+ ;// ./components/ChatAvatar.vue?vue&type=style&index=0&id=45540794&prod&scoped=true&lang=css
28727
28727
 
28728
28728
  ;// ./components/ChatAvatar.vue
28729
28729
 
@@ -28736,11 +28736,11 @@ var ChatAvatarvue_type_template_id_0c02b1ca_scoped_true_staticRenderFns = [];
28736
28736
 
28737
28737
  var ChatAvatar_component = normalizeComponent(
28738
28738
  components_ChatAvatarvue_type_script_lang_js,
28739
- ChatAvatarvue_type_template_id_0c02b1ca_scoped_true_render,
28740
- ChatAvatarvue_type_template_id_0c02b1ca_scoped_true_staticRenderFns,
28739
+ ChatAvatarvue_type_template_id_45540794_scoped_true_render,
28740
+ ChatAvatarvue_type_template_id_45540794_scoped_true_staticRenderFns,
28741
28741
  false,
28742
28742
  null,
28743
- "0c02b1ca",
28743
+ "45540794",
28744
28744
  null
28745
28745
 
28746
28746
  )
@@ -28804,8 +28804,8 @@ var ChatWindowDialogvue_type_template_id_1424b8b1_scoped_true_render = function
28804
28804
  };
28805
28805
  var ChatWindowDialogvue_type_template_id_1424b8b1_scoped_true_staticRenderFns = [];
28806
28806
 
28807
- ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindowHeader.vue?vue&type=template&id=90ac64ba&scoped=true
28808
- var ChatWindowHeadervue_type_template_id_90ac64ba_scoped_true_render = function render() {
28807
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindowHeader.vue?vue&type=template&id=7cac9eba&scoped=true
28808
+ var ChatWindowHeadervue_type_template_id_7cac9eba_scoped_true_render = function render() {
28809
28809
  var _vm = this,
28810
28810
  _c = _vm._self._c;
28811
28811
  return _c('div', {
@@ -28890,7 +28890,7 @@ var ChatWindowHeadervue_type_template_id_90ac64ba_scoped_true_render = function
28890
28890
  }
28891
28891
  })])])]);
28892
28892
  };
28893
- var ChatWindowHeadervue_type_template_id_90ac64ba_scoped_true_staticRenderFns = [];
28893
+ var ChatWindowHeadervue_type_template_id_7cac9eba_scoped_true_staticRenderFns = [];
28894
28894
 
28895
28895
  ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindowHeader.vue?vue&type=script&lang=js
28896
28896
  /* harmony default export */ var ChatWindowHeadervue_type_script_lang_js = ({
@@ -28904,10 +28904,10 @@ var ChatWindowHeadervue_type_template_id_90ac64ba_scoped_true_staticRenderFns =
28904
28904
  });
28905
28905
  ;// ./components/ChatWindowHeader.vue?vue&type=script&lang=js
28906
28906
  /* harmony default export */ var components_ChatWindowHeadervue_type_script_lang_js = (ChatWindowHeadervue_type_script_lang_js);
28907
- ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindowHeader.vue?vue&type=style&index=0&id=90ac64ba&prod&scoped=true&lang=css
28907
+ ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindowHeader.vue?vue&type=style&index=0&id=7cac9eba&prod&scoped=true&lang=css
28908
28908
  // extracted by mini-css-extract-plugin
28909
28909
 
28910
- ;// ./components/ChatWindowHeader.vue?vue&type=style&index=0&id=90ac64ba&prod&scoped=true&lang=css
28910
+ ;// ./components/ChatWindowHeader.vue?vue&type=style&index=0&id=7cac9eba&prod&scoped=true&lang=css
28911
28911
 
28912
28912
  ;// ./components/ChatWindowHeader.vue
28913
28913
 
@@ -28920,24 +28920,26 @@ var ChatWindowHeadervue_type_template_id_90ac64ba_scoped_true_staticRenderFns =
28920
28920
 
28921
28921
  var ChatWindowHeader_component = normalizeComponent(
28922
28922
  components_ChatWindowHeadervue_type_script_lang_js,
28923
- ChatWindowHeadervue_type_template_id_90ac64ba_scoped_true_render,
28924
- ChatWindowHeadervue_type_template_id_90ac64ba_scoped_true_staticRenderFns,
28923
+ ChatWindowHeadervue_type_template_id_7cac9eba_scoped_true_render,
28924
+ ChatWindowHeadervue_type_template_id_7cac9eba_scoped_true_staticRenderFns,
28925
28925
  false,
28926
28926
  null,
28927
- "90ac64ba",
28927
+ "7cac9eba",
28928
28928
  null
28929
28929
 
28930
28930
  )
28931
28931
 
28932
28932
  /* harmony default export */ var ChatWindowHeader = (ChatWindowHeader_component.exports);
28933
- ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatMessageList.vue?vue&type=template&id=53715846&scoped=true
28934
- var ChatMessageListvue_type_template_id_53715846_scoped_true_render = function render() {
28933
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatMessageList.vue?vue&type=template&id=dfc4454c&scoped=true
28934
+ var ChatMessageListvue_type_template_id_dfc4454c_scoped_true_render = function render() {
28935
28935
  var _vm = this,
28936
28936
  _c = _vm._self._c;
28937
28937
  return _c('div', {
28938
28938
  ref: "chatArea",
28939
28939
  staticClass: "chat-window-content scrollbar-hide"
28940
- }, _vm._l(_vm.messages, function (message) {
28940
+ }, [_vm.messages.length === 0 ? _c('div', {
28941
+ staticClass: "chat-window-empty"
28942
+ }) : _vm._e(), _vm._l(_vm.messages, function (message) {
28941
28943
  return _c('div', {
28942
28944
  key: message.id,
28943
28945
  staticClass: "chat-window-message"
@@ -28948,18 +28950,17 @@ var ChatMessageListvue_type_template_id_53715846_scoped_true_render = function r
28948
28950
  }) : _c('AiMessage', {
28949
28951
  attrs: {
28950
28952
  "message": message,
28951
- "think-status": _vm.thinkStatus,
28952
- "loading": _vm.isLoading
28953
+ "think-status": _vm.thinkStatus
28953
28954
  },
28954
28955
  on: {
28955
- "thinking-click": function ($event) {
28956
- return _vm.$emit('thinking-click');
28956
+ "thinking-toggle": function ($event) {
28957
+ return _vm.handleThinkingToggle(message);
28957
28958
  }
28958
28959
  }
28959
28960
  })], 1);
28960
- }), 0);
28961
+ })], 2);
28961
28962
  };
28962
- var ChatMessageListvue_type_template_id_53715846_scoped_true_staticRenderFns = [];
28963
+ var ChatMessageListvue_type_template_id_dfc4454c_scoped_true_staticRenderFns = [];
28963
28964
 
28964
28965
  ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/UserMessage.vue?vue&type=template&id=6a2b6167&scoped=true
28965
28966
  var UserMessagevue_type_template_id_6a2b6167_scoped_true_render = function render() {
@@ -29011,15 +29012,15 @@ var UserMessage_component = normalizeComponent(
29011
29012
  )
29012
29013
 
29013
29014
  /* harmony default export */ var UserMessage = (UserMessage_component.exports);
29014
- ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/AiMessage.vue?vue&type=template&id=a8b0fba0&scoped=true
29015
- var AiMessagevue_type_template_id_a8b0fba0_scoped_true_render = function render() {
29015
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/AiMessage.vue?vue&type=template&id=70c64956&scoped=true
29016
+ var AiMessagevue_type_template_id_70c64956_scoped_true_render = function render() {
29016
29017
  var _vm = this,
29017
29018
  _c = _vm._self._c;
29018
29019
  return _c('div', {
29019
29020
  staticClass: "chat-window-message-ai"
29020
29021
  }, [_c('div', {
29021
29022
  staticClass: "ai-render"
29022
- }, [_vm.loading ? _c('div', {
29023
+ }, [_vm.isLoading ? _c('div', {
29023
29024
  staticClass: "ai-loading"
29024
29025
  }, [_c('div', {
29025
29026
  staticClass: "dot"
@@ -29031,12 +29032,12 @@ var AiMessagevue_type_template_id_a8b0fba0_scoped_true_render = function render(
29031
29032
  staticClass: "ai-thinking",
29032
29033
  on: {
29033
29034
  "click": function ($event) {
29034
- return _vm.$emit('thinking-click');
29035
+ return _vm.$emit('thinking-toggle');
29035
29036
  }
29036
29037
  }
29037
29038
  }, [_c('div', {
29038
29039
  staticClass: "ai-thinking-time"
29039
- }, [_vm._v("思考用时" + _vm._s(_vm.message.time) + "秒")]), _vm.thinkStatus ? _c('div', {
29040
+ }, [_vm._v(_vm._s(_vm.message.time ? `思考用时${_vm.message.time}秒` : '思考中...'))]), _vm.thinkingExpanded ? _c('div', {
29040
29041
  staticClass: "ai-thinking-content"
29041
29042
  }, [_vm._v(_vm._s(_vm.message.thinking))]) : _vm._e()]) : _vm._e(), _c('div', {
29042
29043
  staticClass: "ai-content markdown-body",
@@ -29045,7 +29046,7 @@ var AiMessagevue_type_template_id_a8b0fba0_scoped_true_render = function render(
29045
29046
  }
29046
29047
  })])]);
29047
29048
  };
29048
- var AiMessagevue_type_template_id_a8b0fba0_scoped_true_staticRenderFns = [];
29049
+ var AiMessagevue_type_template_id_70c64956_scoped_true_staticRenderFns = [];
29049
29050
 
29050
29051
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.filter.js
29051
29052
  var es_iterator_filter = __webpack_require__(2489);
@@ -30859,10 +30860,11 @@ function parseMarkdown(text) {
30859
30860
  html = html.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2" target="_blank">$1</a>');
30860
30861
  html = html.replace(/!\[([^\]]*)\]\(([^)]+)\)/g, '<img src="$2" alt="$1" />');
30861
30862
  html = html.replace(/^-{3,}$/gm, '<hr>');
30862
- html = html.replace(/\n/g, '<br>');
30863
+
30864
+ // html = html.replace(/\n/g, '<br>');
30865
+
30863
30866
  return html;
30864
30867
  }
30865
-
30866
30868
  // 解析表格
30867
30869
  function parseTable(text) {
30868
30870
  const lines = text.split('\n');
@@ -30899,7 +30901,6 @@ function parseTable(text) {
30899
30901
  }
30900
30902
  return result.join('\n');
30901
30903
  }
30902
-
30903
30904
  // 渲染表格
30904
30905
  function renderTable(rows) {
30905
30906
  if (rows.length < 2) return rows.join('\n');
@@ -30929,7 +30930,6 @@ function renderTable(rows) {
30929
30930
  html += '</table></div>';
30930
30931
  return html;
30931
30932
  }
30932
-
30933
30933
  // HTML 转义
30934
30934
  function escapeHtml(text) {
30935
30935
  const map = {
@@ -30947,19 +30947,17 @@ function escapeHtml(text) {
30947
30947
  message: {
30948
30948
  type: Object,
30949
30949
  required: true
30950
- },
30951
- thinkStatus: {
30952
- type: Boolean,
30953
- default: true
30954
- },
30955
- loading: {
30956
- type: Boolean,
30957
- default: false
30958
30950
  }
30959
30951
  },
30960
30952
  computed: {
30953
+ thinkingExpanded() {
30954
+ return this.message.thinkingExpanded !== false;
30955
+ },
30961
30956
  renderedContent() {
30962
30957
  return parseMarkdown(this.message.content);
30958
+ },
30959
+ isLoading() {
30960
+ return this.message.loading === true;
30963
30961
  }
30964
30962
  },
30965
30963
  watch: {
@@ -30970,10 +30968,10 @@ function escapeHtml(text) {
30970
30968
  });
30971
30969
  ;// ./components/AiMessage.vue?vue&type=script&lang=js
30972
30970
  /* harmony default export */ var components_AiMessagevue_type_script_lang_js = (AiMessagevue_type_script_lang_js);
30973
- ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/AiMessage.vue?vue&type=style&index=0&id=a8b0fba0&prod&scoped=true&lang=css
30971
+ ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/AiMessage.vue?vue&type=style&index=0&id=70c64956&prod&scoped=true&lang=css
30974
30972
  // extracted by mini-css-extract-plugin
30975
30973
 
30976
- ;// ./components/AiMessage.vue?vue&type=style&index=0&id=a8b0fba0&prod&scoped=true&lang=css
30974
+ ;// ./components/AiMessage.vue?vue&type=style&index=0&id=70c64956&prod&scoped=true&lang=css
30977
30975
 
30978
30976
  ;// ./components/AiMessage.vue
30979
30977
 
@@ -30986,11 +30984,11 @@ function escapeHtml(text) {
30986
30984
 
30987
30985
  var AiMessage_component = normalizeComponent(
30988
30986
  components_AiMessagevue_type_script_lang_js,
30989
- AiMessagevue_type_template_id_a8b0fba0_scoped_true_render,
30990
- AiMessagevue_type_template_id_a8b0fba0_scoped_true_staticRenderFns,
30987
+ AiMessagevue_type_template_id_70c64956_scoped_true_render,
30988
+ AiMessagevue_type_template_id_70c64956_scoped_true_staticRenderFns,
30991
30989
  false,
30992
30990
  null,
30993
- "a8b0fba0",
30991
+ "70c64956",
30994
30992
  null
30995
30993
 
30996
30994
  )
@@ -31013,13 +31011,22 @@ var AiMessage_component = normalizeComponent(
31013
31011
  thinkStatus: {
31014
31012
  type: Boolean,
31015
31013
  default: true
31016
- },
31017
- isLoading: {
31018
- type: Boolean,
31019
- default: false
31014
+ }
31015
+ },
31016
+ computed: {
31017
+ lastMessageObject() {
31018
+ const len = this.messages.length;
31019
+ if (len === 0) {
31020
+ return null;
31021
+ }
31022
+ return this.messages[len - 1];
31020
31023
  }
31021
31024
  },
31022
31025
  methods: {
31026
+ handleThinkingToggle(message) {
31027
+ console.log('handleThinkingToggle', message);
31028
+ this.$set(message, 'thinkingExpanded', !message.thinkingExpanded);
31029
+ },
31023
31030
  scrollToBottom() {
31024
31031
  this.$nextTick(() => {
31025
31032
  const chatArea = this.$refs.chatArea;
@@ -31030,20 +31037,23 @@ var AiMessage_component = normalizeComponent(
31030
31037
  }
31031
31038
  },
31032
31039
  watch: {
31033
- messages: {
31034
- handler() {
31035
- this.scrollToBottom();
31040
+ lastMessageObject: {
31041
+ handler(newMsg) {
31042
+ if (newMsg) {
31043
+ this.scrollToBottom();
31044
+ }
31036
31045
  },
31037
- deep: true
31046
+ deep: true,
31047
+ immediate: true
31038
31048
  }
31039
31049
  }
31040
31050
  });
31041
31051
  ;// ./components/ChatMessageList.vue?vue&type=script&lang=js
31042
31052
  /* harmony default export */ var components_ChatMessageListvue_type_script_lang_js = (ChatMessageListvue_type_script_lang_js);
31043
- ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatMessageList.vue?vue&type=style&index=0&id=53715846&prod&scoped=true&lang=css
31053
+ ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatMessageList.vue?vue&type=style&index=0&id=dfc4454c&prod&scoped=true&lang=css
31044
31054
  // extracted by mini-css-extract-plugin
31045
31055
 
31046
- ;// ./components/ChatMessageList.vue?vue&type=style&index=0&id=53715846&prod&scoped=true&lang=css
31056
+ ;// ./components/ChatMessageList.vue?vue&type=style&index=0&id=dfc4454c&prod&scoped=true&lang=css
31047
31057
 
31048
31058
  ;// ./components/ChatMessageList.vue
31049
31059
 
@@ -31056,11 +31066,11 @@ var AiMessage_component = normalizeComponent(
31056
31066
 
31057
31067
  var ChatMessageList_component = normalizeComponent(
31058
31068
  components_ChatMessageListvue_type_script_lang_js,
31059
- ChatMessageListvue_type_template_id_53715846_scoped_true_render,
31060
- ChatMessageListvue_type_template_id_53715846_scoped_true_staticRenderFns,
31069
+ ChatMessageListvue_type_template_id_dfc4454c_scoped_true_render,
31070
+ ChatMessageListvue_type_template_id_dfc4454c_scoped_true_staticRenderFns,
31061
31071
  false,
31062
31072
  null,
31063
- "53715846",
31073
+ "dfc4454c",
31064
31074
  null
31065
31075
 
31066
31076
  )
@@ -31767,8 +31777,7 @@ class StreamParser {
31767
31777
  /* harmony default export */ var messageMixin = ({
31768
31778
  data() {
31769
31779
  return {
31770
- streamParser: null,
31771
- isLoading: false
31780
+ streamParser: null
31772
31781
  };
31773
31782
  },
31774
31783
  created() {
@@ -31778,7 +31787,6 @@ class StreamParser {
31778
31787
  // 约60fps
31779
31788
  debug: "production" === 'development'
31780
31789
  });
31781
- this.isLoading = true;
31782
31790
  },
31783
31791
  methods: {
31784
31792
  createAiMessage() {
@@ -31789,7 +31797,9 @@ class StreamParser {
31789
31797
  time: '',
31790
31798
  thinking: '',
31791
31799
  charts: [],
31792
- content: ''
31800
+ content: '',
31801
+ loading: true,
31802
+ thinkingExpanded: true
31793
31803
  };
31794
31804
  this.messages.push(message);
31795
31805
  this.currentMessage = message;
@@ -31852,14 +31862,17 @@ class StreamParser {
31852
31862
  }
31853
31863
  console.log(`流处理完成,总耗时: ${duration}ms`);
31854
31864
  this.avaterStatus = 'normal';
31855
- this.isLoading = false;
31856
31865
  } catch (error) {
31857
31866
  console.error('发送消息失败:', error);
31858
31867
  if (this.currentMessage) {
31859
31868
  this.currentMessage.content = '抱歉,发生了错误,请重试。';
31860
31869
  this.$forceUpdate();
31861
31870
  }
31862
- this.isLoading = false;
31871
+ } finally {
31872
+ // 确保加载状态关闭
31873
+ if (this.currentMessage) {
31874
+ this.currentMessage.loading = false;
31875
+ }
31863
31876
  }
31864
31877
  },
31865
31878
  /**
@@ -31896,7 +31909,9 @@ class StreamParser {
31896
31909
  handleStreamUpdate(result) {
31897
31910
  if (!this.currentMessage) return;
31898
31911
  console.log('收到更新:', result);
31899
-
31912
+ if (this.currentMessage.loading) {
31913
+ this.currentMessage.loading = false;
31914
+ }
31900
31915
  // 更新思考内容
31901
31916
  if (result.thinking) {
31902
31917
  this.currentMessage.thinking += result.thinking;
@@ -31971,14 +31986,45 @@ const FRAME_SIZE = 512;
31971
31986
  thinkStatus: true,
31972
31987
  jumpedTimePoints: new Set(),
31973
31988
  SAMPLE_RATE,
31974
- FRAME_SIZE
31989
+ FRAME_SIZE,
31990
+ dragThreshold: 5,
31991
+ // 拖拽阈值
31992
+ isDragging: false,
31993
+ dragStartX: 0,
31994
+ dragStartY: 0,
31995
+ currentX: 10,
31996
+ currentY: 20,
31997
+ initialX: 10,
31998
+ initialY: 20,
31999
+ hasMoved: false
31975
32000
  };
31976
32001
  },
32002
+ computed: {
32003
+ chatStyle() {
32004
+ if (this.robotStatus === 'leaving' && !this.visible) {
32005
+ return {
32006
+ right: `${this.currentX}px`,
32007
+ bottom: `${this.currentY}px`,
32008
+ cursor: this.isDragging ? 'grabbing' : 'grab',
32009
+ transition: this.isDragging ? 'none' : 'right 0.3s ease, bottom 0.3s ease'
32010
+ };
32011
+ }
32012
+ return {
32013
+ cursor: 'pointer'
32014
+ };
32015
+ }
32016
+ },
31977
32017
  mounted() {
31978
32018
  this.initWebSocket();
31979
32019
  if (this.appendToBody) {
31980
32020
  this.appendToBodyHandler();
31981
32021
  }
32022
+ this.$nextTick(() => {
32023
+ const chatEl = this.$el;
32024
+ const style = window.getComputedStyle(chatEl);
32025
+ this.initialX = this.currentX = parseInt(style.right, 10) || 10;
32026
+ this.initialY = this.currentY = parseInt(style.bottom, 10) || 20;
32027
+ });
31982
32028
  },
31983
32029
  beforeDestroy() {
31984
32030
  if (this.appendToBody && this.$el.parentElement === document.body) {
@@ -31986,10 +32032,74 @@ const FRAME_SIZE = 512;
31986
32032
  }
31987
32033
  this.closeWebSocket();
31988
32034
  this.stopRecording();
32035
+
32036
+ // 移除全局事件监听器
32037
+ document.removeEventListener('mousemove', this.onDrag);
32038
+ document.removeEventListener('mouseup', this.stopDrag);
31989
32039
  },
31990
32040
  methods: {
31991
32041
  toggleWindow() {
31992
32042
  this.visible = !this.visible;
32043
+ if (this.visible) {
32044
+ this.currentX = this.initialX;
32045
+ this.currentY = this.initialY;
32046
+ }
32047
+ },
32048
+ startDrag() {
32049
+ console.log('startDrag');
32050
+ if (this.robotStatus !== 'leaving' && this.visible) return;
32051
+ this.isDragging = true;
32052
+ this.hasMoved = false;
32053
+
32054
+ // 记录鼠标的初始位置
32055
+ this.dragStartX = event.clientX;
32056
+ this.dragStartY = event.clientY;
32057
+
32058
+ // 绑定全局事件监听器
32059
+ document.addEventListener('mousemove', this.onDrag);
32060
+ document.addEventListener('mouseup', this.stopDrag);
32061
+ },
32062
+ onDrag(event) {
32063
+ if (!this.isDragging) return;
32064
+
32065
+ // 鼠标位移量
32066
+ const deltaX = event.clientX - this.dragStartX;
32067
+ const deltaY = event.clientY - this.dragStartY;
32068
+ if (Math.abs(deltaX) > this.dragThreshold || Math.abs(deltaY) > this.dragThreshold) {
32069
+ console.log('移动超过阈值');
32070
+ this.hasMoved = true; // 只要移动超过阈值,就标记为拖拽
32071
+ }
32072
+
32073
+ // 获取 .chat 容器的尺寸
32074
+ const chatEl = this.$el;
32075
+ const chatWidth = chatEl.offsetWidth;
32076
+ const chatHeight = chatEl.offsetHeight;
32077
+ let newX = this.currentX - deltaX;
32078
+ let newY = this.currentY - deltaY;
32079
+
32080
+ // 视口宽度和高度
32081
+ const viewportWidth = window.innerWidth;
32082
+ const viewportHeight = window.innerHeight;
32083
+ newX = Math.max(0, newX);
32084
+ newX = Math.min(viewportWidth - chatWidth, newX);
32085
+ newY = Math.max(0, newY);
32086
+ newY = Math.min(viewportHeight - chatHeight, newY);
32087
+
32088
+ // 更新位置
32089
+ this.currentX = newX;
32090
+ this.currentY = newY;
32091
+
32092
+ // 重新设置新的拖拽起始点,实现平滑拖拽
32093
+ this.dragStartX = event.clientX;
32094
+ this.dragStartY = event.clientY;
32095
+ },
32096
+ stopDrag() {
32097
+ this.isDragging = false;
32098
+ document.removeEventListener('mousemove', this.onDrag);
32099
+ document.removeEventListener('mouseup', this.stopDrag);
32100
+ if (!this.hasMoved) {
32101
+ this.toggleWindow();
32102
+ }
31993
32103
  },
31994
32104
  handleThinkingClick() {
31995
32105
  this.thinkStatus = !this.thinkStatus;
@@ -32042,10 +32152,10 @@ const FRAME_SIZE = 512;
32042
32152
  });
32043
32153
  ;// ./components/ChatWindow.vue?vue&type=script&lang=js
32044
32154
  /* harmony default export */ var components_ChatWindowvue_type_script_lang_js = (ChatWindowvue_type_script_lang_js);
32045
- ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindow.vue?vue&type=style&index=0&id=14ff12bc&prod&scoped=true&lang=css
32155
+ ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindow.vue?vue&type=style&index=0&id=637b4214&prod&scoped=true&lang=css
32046
32156
  // extracted by mini-css-extract-plugin
32047
32157
 
32048
- ;// ./components/ChatWindow.vue?vue&type=style&index=0&id=14ff12bc&prod&scoped=true&lang=css
32158
+ ;// ./components/ChatWindow.vue?vue&type=style&index=0&id=637b4214&prod&scoped=true&lang=css
32049
32159
 
32050
32160
  ;// ./components/ChatWindow.vue
32051
32161
 
@@ -32062,7 +32172,7 @@ var ChatWindow_component = normalizeComponent(
32062
32172
  staticRenderFns,
32063
32173
  false,
32064
32174
  null,
32065
- "14ff12bc",
32175
+ "637b4214",
32066
32176
  null
32067
32177
 
32068
32178
  )