byt-lingxiao-ai 0.3.22 → 0.3.24
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.
- package/components/AiMessage.vue +25 -88
- package/components/ChatWindow.vue +37 -29
- package/components/mixins/messageMixin.js +19 -28
- package/components/mixins/webSocketMixin.js +2 -0
- package/components/utils/StreamParser.js +88 -166
- package/dist/index.common.js +163 -237
- package/dist/index.common.js.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.umd.js +163 -237
- package/dist/index.umd.js.map +1 -1
- package/dist/index.umd.min.js +1 -1
- package/dist/index.umd.min.js.map +1 -1
- package/package.json +1 -1
package/dist/index.css
CHANGED
|
@@ -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-
|
|
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-7f2cec94]{display:flex;align-items:center;padding:12px 0;height:24px}.dot[data-v-7f2cec94]{width:8px;height:8px;margin-right:6px;background-color:#86909c;border-radius:50%;animation:dot-bounce-7f2cec94 1.4s ease-in-out infinite both}.dot[data-v-7f2cec94]:first-child{animation-delay:-.32s}.dot[data-v-7f2cec94]:nth-child(2){animation-delay:-.16s}.dot[data-v-7f2cec94]:nth-child(3){animation-delay:0s}@keyframes dot-bounce-7f2cec94{0%,80%,to{transform:scale(0);opacity:.5}40%{transform:scale(1);opacity:1}}.chat-window-message-ai[data-v-7f2cec94]{display:flex;gap:12px;align-items:flex-start;max-width:100%;border-radius:12px;background:#f6f8fc;padding:8px 12px}.ai-render[data-v-7f2cec94]{width:100%}.ai-thinking[data-v-7f2cec94]{margin-bottom:8px}.ai-thinking-time[data-v-7f2cec94]{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-7f2cec94]: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-7f2cec94]:after,.ai-thinking-time[data-v-7f2cec94]:before{content:"";position:absolute;top:50%;transform:translateY(-50%);width:16px;height:16px}.ai-thinking-time[data-v-7f2cec94]:after{right:6px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAFVBMVEUAAACDj5eGkJyGj5uFj5uGj5uAj5/flAqRAAAAB3RSTlMAIN+ggHAQx7ts8QAAAClJREFUCNdjIBWwCUAZQooQmlHZSAAiYMCsCBFgYAALsRowMDA7kGY8AIDkAfQcVWSDAAAAAElFTkSuQmCC) no-repeat;background-size:cover}.ai-thinking-content[data-v-7f2cec94]{color:#86909c;font-size:14px;padding:8px 0 8px 12px}.ai-content[data-v-7f2cec94],.ai-thinking-content[data-v-7f2cec94]{font-family:"Alibaba PuHuiTi 2.0";font-style:normal;font-weight:400;line-height:24px}.ai-content[data-v-7f2cec94]{color:#4e5969;font-size:16px}.markdown-body[data-v-7f2cec94]{word-wrap:break-word}.markdown-body[data-v-7f2cec94] h1,.markdown-body[data-v-7f2cec94] h2,.markdown-body[data-v-7f2cec94] h3,.markdown-body[data-v-7f2cec94] h4{margin:16px 0 8px 0;font-weight:600;line-height:1.4;color:#1f2937}.markdown-body[data-v-7f2cec94] h1{font-size:24px;border-bottom:2px solid #e5e7eb;padding-bottom:8px}.markdown-body[data-v-7f2cec94] h2{font-size:20px;border-bottom:1px solid #e5e7eb;padding-bottom:6px}.markdown-body[data-v-7f2cec94] h3{font-size:18px}.markdown-body[data-v-7f2cec94] h4{font-size:16px}.markdown-body[data-v-7f2cec94] ol{list-style-type:decimal;padding-left:24px;margin:8px 0}.markdown-body[data-v-7f2cec94] ul{list-style-type:disc;padding-left:24px;margin:8px 0}.markdown-body[data-v-7f2cec94] li{display:list-item}.markdown-body[data-v-7f2cec94] 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-7f2cec94] pre{background-color:#f6f8fa;border-radius:6px;padding:16px;overflow:auto;margin:12px 0;border:1px solid #e1e4e8}.markdown-body[data-v-7f2cec94] 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-7f2cec94] table{border:1px solid #dfe2e5;max-height:500px;margin:12px 0;border-collapse:collapse;width:100%;display:block;overflow:auto}.markdown-body[data-v-7f2cec94] table::-webkit-scrollbar{height:6px}.markdown-body[data-v-7f2cec94] table::-webkit-scrollbar-track{background-color:#f3f4f6}.markdown-body[data-v-7f2cec94] table::-webkit-scrollbar-thumb{background-color:#d1d5db;border-radius:3px}.markdown-body[data-v-7f2cec94] table::-webkit-scrollbar-thumb:hover{background-color:#9ca3af}.markdown-body[data-v-7f2cec94] table td,.markdown-body[data-v-7f2cec94] table th{border:1px solid #dfe2e5;padding:10px 14px;text-align:left}.markdown-body[data-v-7f2cec94] table th{background-color:#f3f4f6;font-weight:600;color:#374151}.markdown-body[data-v-7f2cec94] table tr:nth-child(2n){background-color:#f9fafb}.markdown-body[data-v-7f2cec94] .markdown-table tr:hover{background-color:#f3f4f6;transition:background-color .2s}.markdown-body[data-v-7f2cec94] ol,.markdown-body[data-v-7f2cec94] ul{padding-left:24px;margin:8px 0}.markdown-body[data-v-7f2cec94] li{margin:4px 0;line-height:1.6}.markdown-body[data-v-7f2cec94] strong{font-weight:600;color:#1f2937}.markdown-body[data-v-7f2cec94] em{font-style:italic}.markdown-body[data-v-7f2cec94] del{text-decoration:line-through;opacity:.7}.markdown-body[data-v-7f2cec94] blockquote{border-left:4px solid #dfe2e5;padding-left:16px;margin:12px 0;color:#6b7280;font-style:italic}.markdown-body[data-v-7f2cec94] a{color:#3b82f6;text-decoration:none}.markdown-body[data-v-7f2cec94] a:hover{text-decoration:underline;color:#2563eb}.markdown-body[data-v-7f2cec94] img{max-width:100%;border-radius:6px;margin:12px 0}.markdown-body[data-v-7f2cec94] hr{border:none;border-top:1px solid #e5e7eb;margin:16px 0}.markdown-body[data-v-7f2cec94] 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-2cd84254] .el-textarea__inner{border:none!important;padding:0 5px;font-family:PingFang SC!important}[data-v-2cd84254] .el-textarea__inner::-webkit-scrollbar{width:6px;height:6px}[data-v-2cd84254] .el-textarea__inner::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:3px}[data-v-2cd84254] .el-textarea__inner::-webkit-scrollbar-track{background:transparent}.chat-window-footer[data-v-2cd84254]{padding:16px}.chat-window-textarea[data-v-2cd84254]{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-2cd84254]{padding:10px 12px;font-size:16px;font-family:PingFang SC;box-sizing:border-box}.chat-window-bar[data-v-2cd84254]{display:flex;justify-content:flex-end;padding:8px}.chat-window-send[data-v-2cd84254]{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-bc074e36]{position:fixed;top:0;left:0;width:100%;height:100%;background:transparent;z-index:9999;pointer-events:none}.chat-window[data-v-bc074e36]{width:480px;height:740px;border-radius:14px;background:#fff;box-shadow:0 2px 20px 0 rgba(0,0,0,.16);position:absolute;bottom:0;right:60px;overflow:hidden;display:flex;flex-direction:column;z-index:10000}.hidden-audio[data-v-67cef8d6]{position:absolute;left:-9999px;opacity:0;pointer-events:none}.chat[data-v-67cef8d6]{position:fixed;bottom:20px;right:10px;z-index:10001}
|
package/dist/index.umd.js
CHANGED
|
@@ -28614,7 +28614,7 @@ if (typeof window !== 'undefined') {
|
|
|
28614
28614
|
var es_iterator_constructor = __webpack_require__(8111);
|
|
28615
28615
|
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.for-each.js
|
|
28616
28616
|
var es_iterator_for_each = __webpack_require__(7588);
|
|
28617
|
-
;// ./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=
|
|
28617
|
+
;// ./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=67cef8d6&scoped=true
|
|
28618
28618
|
var render = function render() {
|
|
28619
28619
|
var _vm = this,
|
|
28620
28620
|
_c = _vm._self._c;
|
|
@@ -29177,8 +29177,8 @@ var UserMessage_component = normalizeComponent(
|
|
|
29177
29177
|
)
|
|
29178
29178
|
|
|
29179
29179
|
/* harmony default export */ var UserMessage = (UserMessage_component.exports);
|
|
29180
|
-
;// ./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=
|
|
29181
|
-
var
|
|
29180
|
+
;// ./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=7f2cec94&scoped=true
|
|
29181
|
+
var AiMessagevue_type_template_id_7f2cec94_scoped_true_render = function render() {
|
|
29182
29182
|
var _vm = this,
|
|
29183
29183
|
_c = _vm._self._c;
|
|
29184
29184
|
return _c('div', {
|
|
@@ -29193,39 +29193,28 @@ var AiMessagevue_type_template_id_0d2964f2_scoped_true_render = function render(
|
|
|
29193
29193
|
staticClass: "dot"
|
|
29194
29194
|
}), _c('div', {
|
|
29195
29195
|
staticClass: "dot"
|
|
29196
|
-
})]) : _vm._e(), _vm.
|
|
29197
|
-
|
|
29198
|
-
|
|
29199
|
-
|
|
29200
|
-
|
|
29201
|
-
staticClass: "ai-thinking",
|
|
29202
|
-
on: {
|
|
29203
|
-
"click": function ($event) {
|
|
29204
|
-
return _vm.$emit('thinking-toggle');
|
|
29205
|
-
}
|
|
29206
|
-
}
|
|
29207
|
-
}, [_c('div', {
|
|
29208
|
-
staticClass: "ai-thinking-time"
|
|
29209
|
-
}, [_vm._v(" " + _vm._s(_vm.message.time ? `思考用时 ${_vm.message.time} 秒` : '思考中...') + " ")]), _vm.thinkingExpanded ? _c('div', {
|
|
29210
|
-
staticClass: "ai-thinking-content"
|
|
29211
|
-
}, [_vm._v(" " + _vm._s(item.text) + " ")]) : _vm._e()]) : item.type === 'tool' ? _c('div', {
|
|
29212
|
-
staticClass: "ai-tool"
|
|
29213
|
-
}, [_c('div', {
|
|
29214
|
-
staticClass: "ai-tool-header"
|
|
29215
|
-
}, [_vm._v(" 调用工具:" + _vm._s(item.tool.name) + " ")]), _c('details', [_c('summary', [_vm._v("参数")]), _c('pre', [_vm._v(_vm._s(item.tool.args))])]), item.tool.result ? _c('details', [_c('summary', [_vm._v("结果")]), _c('pre', [_vm._v(_vm._s(item.tool.result))])]) : _vm._e()]) : item.type === 'content' ? _c('div', {
|
|
29216
|
-
staticClass: "ai-content markdown-body",
|
|
29217
|
-
domProps: {
|
|
29218
|
-
"innerHTML": _vm._s(_vm.renderMarkdown(item.text))
|
|
29219
|
-
},
|
|
29220
|
-
on: {
|
|
29221
|
-
"click": _vm.handleLinkClick
|
|
29196
|
+
})]) : _vm._e(), _vm.message.thinking ? _c('div', {
|
|
29197
|
+
staticClass: "ai-thinking",
|
|
29198
|
+
on: {
|
|
29199
|
+
"click": function ($event) {
|
|
29200
|
+
return _vm.$emit('thinking-toggle');
|
|
29222
29201
|
}
|
|
29223
|
-
}
|
|
29224
|
-
|
|
29225
|
-
|
|
29226
|
-
}
|
|
29202
|
+
}
|
|
29203
|
+
}, [_c('div', {
|
|
29204
|
+
staticClass: "ai-thinking-time"
|
|
29205
|
+
}, [_vm._v(_vm._s(_vm.message.time ? `思考用时${_vm.message.time}秒` : '思考中...'))]), _vm.thinkingExpanded ? _c('div', {
|
|
29206
|
+
staticClass: "ai-thinking-content"
|
|
29207
|
+
}, [_vm._v(_vm._s(_vm.message.thinking))]) : _vm._e()]) : _vm._e(), _c('div', {
|
|
29208
|
+
staticClass: "ai-content markdown-body",
|
|
29209
|
+
domProps: {
|
|
29210
|
+
"innerHTML": _vm._s(_vm.renderedContent)
|
|
29211
|
+
},
|
|
29212
|
+
on: {
|
|
29213
|
+
"click": _vm.handleLinkClick
|
|
29214
|
+
}
|
|
29215
|
+
})])]);
|
|
29227
29216
|
};
|
|
29228
|
-
var
|
|
29217
|
+
var AiMessagevue_type_template_id_7f2cec94_scoped_true_staticRenderFns = [];
|
|
29229
29218
|
|
|
29230
29219
|
// EXTERNAL MODULE: ./node_modules/core-js/modules/web.url-search-params.delete.js
|
|
29231
29220
|
var web_url_search_params_delete = __webpack_require__(4603);
|
|
@@ -31011,6 +31000,8 @@ var lib = __webpack_require__(336);
|
|
|
31011
31000
|
|
|
31012
31001
|
|
|
31013
31002
|
|
|
31003
|
+
|
|
31004
|
+
// 创建自定义渲染器
|
|
31014
31005
|
const renderer = new d.Renderer();
|
|
31015
31006
|
|
|
31016
31007
|
// 自定义链接渲染
|
|
@@ -31030,8 +31021,8 @@ renderer.link = function ({
|
|
|
31030
31021
|
}
|
|
31031
31022
|
};
|
|
31032
31023
|
d.setOptions({
|
|
31033
|
-
renderer,
|
|
31034
|
-
highlight(code, lang) {
|
|
31024
|
+
renderer: renderer,
|
|
31025
|
+
highlight: function (code, lang) {
|
|
31035
31026
|
if (lang && es.getLanguage(lang)) {
|
|
31036
31027
|
return es.highlight(code, {
|
|
31037
31028
|
language: lang
|
|
@@ -31054,34 +31045,19 @@ d.setOptions({
|
|
|
31054
31045
|
thinkingExpanded() {
|
|
31055
31046
|
return this.message.thinkingExpanded !== false;
|
|
31056
31047
|
},
|
|
31048
|
+
renderedContent() {
|
|
31049
|
+
return d.parse(this.message.content || '');
|
|
31050
|
+
},
|
|
31057
31051
|
isLoading() {
|
|
31058
31052
|
return this.message.loading === true;
|
|
31059
|
-
}
|
|
31060
|
-
|
|
31061
|
-
|
|
31062
|
-
|
|
31063
|
-
|
|
31064
|
-
if (item.type === 'content') {
|
|
31065
|
-
if (last && last.type === 'content') {
|
|
31066
|
-
last.text += item.text;
|
|
31067
|
-
} else {
|
|
31068
|
-
last = {
|
|
31069
|
-
...item
|
|
31070
|
-
};
|
|
31071
|
-
result.push(last);
|
|
31072
|
-
}
|
|
31073
|
-
} else {
|
|
31074
|
-
last = null;
|
|
31075
|
-
result.push(item);
|
|
31076
|
-
}
|
|
31077
|
-
}
|
|
31078
|
-
return result;
|
|
31053
|
+
}
|
|
31054
|
+
},
|
|
31055
|
+
watch: {
|
|
31056
|
+
thinkStatus(newVal, oldVal) {
|
|
31057
|
+
console.log('thinkStatus 变化:', newVal, oldVal);
|
|
31079
31058
|
}
|
|
31080
31059
|
},
|
|
31081
31060
|
methods: {
|
|
31082
|
-
renderMarkdown(text) {
|
|
31083
|
-
return d.parse(text || '');
|
|
31084
|
-
},
|
|
31085
31061
|
handleLinkClick(event) {
|
|
31086
31062
|
const link = event.target.closest('a');
|
|
31087
31063
|
if (!link) return;
|
|
@@ -31111,10 +31087,10 @@ d.setOptions({
|
|
|
31111
31087
|
});
|
|
31112
31088
|
;// ./components/AiMessage.vue?vue&type=script&lang=js
|
|
31113
31089
|
/* harmony default export */ var components_AiMessagevue_type_script_lang_js = (AiMessagevue_type_script_lang_js);
|
|
31114
|
-
;// ./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=
|
|
31090
|
+
;// ./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=7f2cec94&prod&scoped=true&lang=css
|
|
31115
31091
|
// extracted by mini-css-extract-plugin
|
|
31116
31092
|
|
|
31117
|
-
;// ./components/AiMessage.vue?vue&type=style&index=0&id=
|
|
31093
|
+
;// ./components/AiMessage.vue?vue&type=style&index=0&id=7f2cec94&prod&scoped=true&lang=css
|
|
31118
31094
|
|
|
31119
31095
|
;// ./components/AiMessage.vue
|
|
31120
31096
|
|
|
@@ -31127,11 +31103,11 @@ d.setOptions({
|
|
|
31127
31103
|
|
|
31128
31104
|
var AiMessage_component = normalizeComponent(
|
|
31129
31105
|
components_AiMessagevue_type_script_lang_js,
|
|
31130
|
-
|
|
31131
|
-
|
|
31106
|
+
AiMessagevue_type_template_id_7f2cec94_scoped_true_render,
|
|
31107
|
+
AiMessagevue_type_template_id_7f2cec94_scoped_true_staticRenderFns,
|
|
31132
31108
|
false,
|
|
31133
31109
|
null,
|
|
31134
|
-
"
|
|
31110
|
+
"7f2cec94",
|
|
31135
31111
|
null
|
|
31136
31112
|
|
|
31137
31113
|
)
|
|
@@ -31561,7 +31537,9 @@ const TIME_JUMP_POINTS_URL = '/minio/lingxiaoai/timeJumpPoints.json'; // 语音u
|
|
|
31561
31537
|
try {
|
|
31562
31538
|
// this.ws = new WebSocket('ws://10.2.233.41:9999');
|
|
31563
31539
|
// 测试
|
|
31540
|
+
// console.log('WS_URL:', WS_URL)
|
|
31564
31541
|
this.ws = new WebSocket(WS_URL);
|
|
31542
|
+
// this.ws = new WebSocket('ws://192.168.8.87/audio/ws/');
|
|
31565
31543
|
this.ws.binaryType = 'arraybuffer';
|
|
31566
31544
|
this.ws.onopen = async () => {
|
|
31567
31545
|
console.log('WebSocket 连接成功');
|
|
@@ -31652,138 +31630,99 @@ const TIME_JUMP_POINTS_URL = '/minio/lingxiaoai/timeJumpPoints.json'; // 语音u
|
|
|
31652
31630
|
});
|
|
31653
31631
|
;// ./components/utils/StreamParser.js
|
|
31654
31632
|
|
|
31655
|
-
// utils/StreamParser.js
|
|
31656
31633
|
class StreamParser {
|
|
31657
31634
|
constructor(options = {}) {
|
|
31658
31635
|
this.options = {
|
|
31659
31636
|
updateInterval: 16,
|
|
31637
|
+
// 每16ms刷新一次(约60fps)
|
|
31660
31638
|
debug: false,
|
|
31661
31639
|
...options
|
|
31662
31640
|
};
|
|
31663
31641
|
this.reset();
|
|
31664
31642
|
}
|
|
31643
|
+
|
|
31644
|
+
// 重置解析器状态
|
|
31665
31645
|
reset() {
|
|
31646
|
+
this.buffer = '';
|
|
31666
31647
|
this.contentBuffer = [];
|
|
31667
31648
|
this.thinkingBuffer = [];
|
|
31668
|
-
this.completedThinkingSegments = [];
|
|
31669
|
-
this.completedToolCalls = [];
|
|
31670
|
-
this.currentToolCall = null;
|
|
31671
|
-
this.protocolErrorBuffer = []; // ✅ 新增
|
|
31672
|
-
|
|
31673
31649
|
this.inTag = false;
|
|
31674
31650
|
this.tagBuffer = '';
|
|
31675
31651
|
this.updateTimer = null;
|
|
31676
|
-
this.status = 'output'; // thinking | output
|
|
31652
|
+
this.status = 'output'; // thinking | output
|
|
31677
31653
|
}
|
|
31654
|
+
|
|
31655
|
+
// 处理接收到的流数据块
|
|
31678
31656
|
processChunk(chunk, callback) {
|
|
31679
31657
|
if (!chunk) return;
|
|
31680
31658
|
this.parseContent(chunk, callback);
|
|
31681
31659
|
}
|
|
31660
|
+
|
|
31661
|
+
// 核心内容解析,支持 <think> 标签
|
|
31682
31662
|
parseContent(content, callback) {
|
|
31683
31663
|
let i = 0;
|
|
31684
31664
|
while (i < content.length) {
|
|
31685
31665
|
if (this.inTag) {
|
|
31686
|
-
const
|
|
31687
|
-
if (
|
|
31688
|
-
this.tagBuffer += content.
|
|
31666
|
+
const endIndex = content.indexOf('>', i);
|
|
31667
|
+
if (endIndex !== -1) {
|
|
31668
|
+
this.tagBuffer += content.substring(i, endIndex + 1);
|
|
31689
31669
|
this.handleTag(this.tagBuffer);
|
|
31690
31670
|
this.tagBuffer = '';
|
|
31691
31671
|
this.inTag = false;
|
|
31692
|
-
i =
|
|
31672
|
+
i = endIndex + 1;
|
|
31693
31673
|
} else {
|
|
31694
|
-
|
|
31674
|
+
// 标签未闭合,超过50字符强制输出,防止阻塞
|
|
31675
|
+
this.tagBuffer += content.substring(i);
|
|
31676
|
+
if (this.tagBuffer.length > 50) {
|
|
31677
|
+
this.appendText(this.tagBuffer);
|
|
31678
|
+
this.tagBuffer = '';
|
|
31679
|
+
this.inTag = false;
|
|
31680
|
+
}
|
|
31695
31681
|
break;
|
|
31696
31682
|
}
|
|
31697
31683
|
} else {
|
|
31698
|
-
const
|
|
31699
|
-
if (
|
|
31700
|
-
this.appendText(content.
|
|
31701
|
-
|
|
31702
|
-
|
|
31703
|
-
|
|
31704
|
-
|
|
31705
|
-
|
|
31706
|
-
|
|
31707
|
-
|
|
31708
|
-
|
|
31709
|
-
|
|
31684
|
+
const startIndex = content.indexOf('<', i);
|
|
31685
|
+
if (startIndex !== -1) {
|
|
31686
|
+
if (startIndex > i) this.appendText(content.substring(i, startIndex));
|
|
31687
|
+
const endIndex = content.indexOf('>', startIndex);
|
|
31688
|
+
if (endIndex !== -1) {
|
|
31689
|
+
const tag = content.substring(startIndex, endIndex + 1);
|
|
31690
|
+
this.handleTag(tag);
|
|
31691
|
+
i = endIndex + 1;
|
|
31692
|
+
} else {
|
|
31693
|
+
const nextChar = content[startIndex + 1];
|
|
31694
|
+
if (!/[a-zA-Z/]/.test(nextChar)) {
|
|
31695
|
+
// 很可能不是标签,直接当文本输出
|
|
31696
|
+
this.appendText('<');
|
|
31697
|
+
i = startIndex + 1;
|
|
31698
|
+
} else {
|
|
31699
|
+
this.inTag = true;
|
|
31700
|
+
this.tagBuffer = content.substring(startIndex);
|
|
31701
|
+
break;
|
|
31702
|
+
}
|
|
31703
|
+
}
|
|
31704
|
+
} else {
|
|
31705
|
+
this.appendText(content.substring(i));
|
|
31710
31706
|
break;
|
|
31711
31707
|
}
|
|
31712
|
-
const tag = content.slice(start, end + 1);
|
|
31713
|
-
this.handleTag(tag);
|
|
31714
|
-
i = end + 1;
|
|
31715
31708
|
}
|
|
31716
31709
|
}
|
|
31717
31710
|
this.scheduleUpdate(callback);
|
|
31718
31711
|
}
|
|
31712
|
+
|
|
31713
|
+
// 处理标签
|
|
31719
31714
|
handleTag(tag) {
|
|
31720
31715
|
const t = tag.toLowerCase();
|
|
31721
|
-
|
|
31722
|
-
// ---------- think ----------
|
|
31723
|
-
if (t === '<think>') {
|
|
31724
|
-
this.status = 'thinking';
|
|
31725
|
-
return;
|
|
31726
|
-
}
|
|
31727
|
-
if (t === '</think>') {
|
|
31728
|
-
if (this.thinkingBuffer.length) {
|
|
31729
|
-
this.completedThinkingSegments.push(this.thinkingBuffer.join(''));
|
|
31730
|
-
this.thinkingBuffer = [];
|
|
31731
|
-
}
|
|
31732
|
-
this.status = 'output';
|
|
31733
|
-
return;
|
|
31734
|
-
}
|
|
31735
|
-
|
|
31736
|
-
// ---------- tool_call ----------
|
|
31737
|
-
if (t.startsWith('<tool_call')) {
|
|
31738
|
-
const nameMatch = tag.match(/name\s*=\s*["'](.+?)["']/);
|
|
31739
|
-
this.currentToolCall = {
|
|
31740
|
-
id: `${Date.now()}-${Math.random()}`,
|
|
31741
|
-
name: nameMatch ? nameMatch[1] : 'unknown',
|
|
31742
|
-
args: '',
|
|
31743
|
-
result: '',
|
|
31744
|
-
status: 'calling'
|
|
31745
|
-
};
|
|
31746
|
-
this.status = 'tool_call';
|
|
31747
|
-
return;
|
|
31748
|
-
}
|
|
31749
|
-
if (t === '</tool_call>') {
|
|
31750
|
-
this.status = 'output';
|
|
31751
|
-
return;
|
|
31752
|
-
}
|
|
31753
|
-
|
|
31754
|
-
// ---------- tool_result ----------
|
|
31755
|
-
if (t === '<tool_result>') {
|
|
31756
|
-
this.status = 'tool_result';
|
|
31757
|
-
return;
|
|
31758
|
-
}
|
|
31759
|
-
if (t === '</tool_result>') {
|
|
31760
|
-
if (this.currentToolCall) {
|
|
31761
|
-
this.currentToolCall.status = 'done';
|
|
31762
|
-
this.completedToolCalls.push(this.currentToolCall);
|
|
31763
|
-
this.currentToolCall = null;
|
|
31764
|
-
}
|
|
31765
|
-
this.status = 'output';
|
|
31766
|
-
return;
|
|
31767
|
-
}
|
|
31768
|
-
|
|
31769
|
-
// ---------- ❌ 协议错误 ----------
|
|
31770
|
-
if (t.startsWith('<') && t.endsWith('>')) {
|
|
31771
|
-
this.protocolErrorBuffer.push(tag);
|
|
31772
|
-
this.status = 'output';
|
|
31773
|
-
}
|
|
31716
|
+
if (t === '<think>') this.status = 'thinking';else if (t === '</think>') this.status = 'output';
|
|
31774
31717
|
}
|
|
31718
|
+
|
|
31719
|
+
// 添加文本到缓冲区
|
|
31775
31720
|
appendText(text) {
|
|
31776
31721
|
if (!text) return;
|
|
31777
|
-
if (this.status === 'thinking')
|
|
31778
|
-
this.thinkingBuffer.push(text);
|
|
31779
|
-
} else if (this.status === 'tool_call') {
|
|
31780
|
-
this.currentToolCall && (this.currentToolCall.args += text);
|
|
31781
|
-
} else if (this.status === 'tool_result') {
|
|
31782
|
-
this.currentToolCall && (this.currentToolCall.result += text);
|
|
31783
|
-
} else {
|
|
31784
|
-
this.contentBuffer.push(text);
|
|
31785
|
-
}
|
|
31722
|
+
if (this.status === 'thinking') this.thinkingBuffer.push(text);else this.contentBuffer.push(text);
|
|
31786
31723
|
}
|
|
31724
|
+
|
|
31725
|
+
// 防抖刷新
|
|
31787
31726
|
scheduleUpdate(callback) {
|
|
31788
31727
|
if (this.updateTimer) return;
|
|
31789
31728
|
this.updateTimer = setTimeout(() => {
|
|
@@ -31791,39 +31730,32 @@ class StreamParser {
|
|
|
31791
31730
|
this.updateTimer = null;
|
|
31792
31731
|
}, this.options.updateInterval);
|
|
31793
31732
|
}
|
|
31733
|
+
|
|
31734
|
+
// 刷新缓冲区
|
|
31794
31735
|
flush(callback) {
|
|
31795
31736
|
if (!callback) return;
|
|
31796
31737
|
const result = {
|
|
31797
|
-
|
|
31798
|
-
|
|
31799
|
-
content: null,
|
|
31800
|
-
protocolError: null,
|
|
31738
|
+
thinking: this.thinkingBuffer.length ? this.thinkingBuffer.join('') : null,
|
|
31739
|
+
content: this.contentBuffer.length ? this.contentBuffer.join('') : null,
|
|
31801
31740
|
status: this.status
|
|
31802
31741
|
};
|
|
31803
|
-
|
|
31804
|
-
|
|
31805
|
-
this.protocolErrorBuffer = [];
|
|
31806
|
-
}
|
|
31807
|
-
if (this.completedThinkingSegments.length) {
|
|
31808
|
-
result.thinkingSegment = this.completedThinkingSegments.shift();
|
|
31809
|
-
}
|
|
31810
|
-
if (this.completedToolCalls.length) {
|
|
31811
|
-
result.toolCall = this.completedToolCalls.shift();
|
|
31812
|
-
}
|
|
31813
|
-
if (this.contentBuffer.length) {
|
|
31814
|
-
result.content = this.contentBuffer.join('');
|
|
31815
|
-
this.contentBuffer = [];
|
|
31816
|
-
}
|
|
31742
|
+
this.thinkingBuffer = [];
|
|
31743
|
+
this.contentBuffer = [];
|
|
31817
31744
|
callback(result);
|
|
31818
31745
|
}
|
|
31746
|
+
|
|
31747
|
+
// 完成解析
|
|
31819
31748
|
finish(callback) {
|
|
31820
|
-
if (this.
|
|
31821
|
-
this.
|
|
31822
|
-
this.
|
|
31749
|
+
if (this.inTag && this.tagBuffer) {
|
|
31750
|
+
this.appendText(this.tagBuffer);
|
|
31751
|
+
this.tagBuffer = '';
|
|
31752
|
+
this.inTag = false;
|
|
31823
31753
|
}
|
|
31824
31754
|
this.flush(callback);
|
|
31825
31755
|
if (this.updateTimer) clearTimeout(this.updateTimer);
|
|
31826
31756
|
}
|
|
31757
|
+
|
|
31758
|
+
// 销毁解析器
|
|
31827
31759
|
destroy() {
|
|
31828
31760
|
if (this.updateTimer) clearTimeout(this.updateTimer);
|
|
31829
31761
|
this.reset();
|
|
@@ -31873,7 +31805,9 @@ const getCookie = cname => {
|
|
|
31873
31805
|
type: 'ai',
|
|
31874
31806
|
sender: 'AI',
|
|
31875
31807
|
time: '',
|
|
31876
|
-
|
|
31808
|
+
thinking: '',
|
|
31809
|
+
charts: [],
|
|
31810
|
+
content: '',
|
|
31877
31811
|
loading: true,
|
|
31878
31812
|
thinkingExpanded: true
|
|
31879
31813
|
};
|
|
@@ -31906,7 +31840,7 @@ const getCookie = cname => {
|
|
|
31906
31840
|
const controller = new AbortController();
|
|
31907
31841
|
try {
|
|
31908
31842
|
const startTime = Date.now();
|
|
31909
|
-
const token = getCookie('bonyear-access_token') || `
|
|
31843
|
+
const token = getCookie('bonyear-access_token') || `44e7f112-63f3-429d-908d-2c97ec380de2`;
|
|
31910
31844
|
const response = await fetch(API_URL, {
|
|
31911
31845
|
method: 'POST',
|
|
31912
31846
|
signal: controller.signal,
|
|
@@ -31986,38 +31920,27 @@ const getCookie = cname => {
|
|
|
31986
31920
|
*/
|
|
31987
31921
|
handleStreamUpdate(result) {
|
|
31988
31922
|
if (!this.currentMessage) return;
|
|
31989
|
-
|
|
31990
|
-
if (
|
|
31991
|
-
this.currentMessage.
|
|
31992
|
-
type: 'protocol_error',
|
|
31993
|
-
id: Date.now() + Math.random(),
|
|
31994
|
-
raw: result.protocolError
|
|
31995
|
-
});
|
|
31923
|
+
console.log('收到更新:', result);
|
|
31924
|
+
if (this.currentMessage.loading) {
|
|
31925
|
+
this.currentMessage.loading = false;
|
|
31996
31926
|
}
|
|
31997
|
-
|
|
31998
|
-
|
|
31999
|
-
|
|
32000
|
-
id: Date.now() + Math.random(),
|
|
32001
|
-
text: result.thinkingSegment
|
|
32002
|
-
});
|
|
32003
|
-
}
|
|
32004
|
-
if (result.toolCall) {
|
|
32005
|
-
this.currentMessage.timeline.push({
|
|
32006
|
-
type: 'tool',
|
|
32007
|
-
id: result.toolCall.id,
|
|
32008
|
-
tool: result.toolCall
|
|
32009
|
-
});
|
|
31927
|
+
// 更新思考内容
|
|
31928
|
+
if (result.thinking) {
|
|
31929
|
+
this.currentMessage.thinking += result.thinking;
|
|
32010
31930
|
}
|
|
31931
|
+
|
|
31932
|
+
// 更新回复内容
|
|
31933
|
+
console.log('更新回复内容:', result.content);
|
|
32011
31934
|
if (result.content) {
|
|
32012
|
-
this.currentMessage.
|
|
32013
|
-
type: 'content',
|
|
32014
|
-
id: Date.now() + Math.random(),
|
|
32015
|
-
text: result.content
|
|
32016
|
-
});
|
|
31935
|
+
this.currentMessage.content += result.content;
|
|
32017
31936
|
}
|
|
32018
31937
|
|
|
32019
31938
|
// 更新状态
|
|
32020
|
-
|
|
31939
|
+
if (result.status === 'thinking') {
|
|
31940
|
+
this.avaterStatus = 'thinking';
|
|
31941
|
+
} else {
|
|
31942
|
+
this.avaterStatus = 'output';
|
|
31943
|
+
}
|
|
32021
31944
|
|
|
32022
31945
|
// 触发视图更新
|
|
32023
31946
|
this.$forceUpdate();
|
|
@@ -32099,7 +32022,8 @@ const startTime = null;
|
|
|
32099
32022
|
currentY: 20,
|
|
32100
32023
|
initialX: 10,
|
|
32101
32024
|
initialY: 20,
|
|
32102
|
-
hasMoved: false
|
|
32025
|
+
hasMoved: false,
|
|
32026
|
+
timeJumpPoints: []
|
|
32103
32027
|
};
|
|
32104
32028
|
},
|
|
32105
32029
|
computed: {
|
|
@@ -32122,6 +32046,7 @@ const startTime = null;
|
|
|
32122
32046
|
if (this.appendToBody) {
|
|
32123
32047
|
this.appendToBodyHandler();
|
|
32124
32048
|
}
|
|
32049
|
+
this.fetchTimeJumpPoints();
|
|
32125
32050
|
this.$nextTick(() => {
|
|
32126
32051
|
const chatEl = this.$el;
|
|
32127
32052
|
const style = window.getComputedStyle(chatEl);
|
|
@@ -32218,41 +32143,42 @@ const startTime = null;
|
|
|
32218
32143
|
}
|
|
32219
32144
|
});
|
|
32220
32145
|
},
|
|
32146
|
+
async fetchTimeJumpPoints() {
|
|
32147
|
+
try {
|
|
32148
|
+
const res = await fetch(TIME_JUMP_POINTS_URL);
|
|
32149
|
+
const data = await res.json();
|
|
32150
|
+
this.timeJumpPoints = Array.isArray(data) ? data : [];
|
|
32151
|
+
console.log('时间跳转点加载完成:', this.timeJumpPoints);
|
|
32152
|
+
} catch (err) {
|
|
32153
|
+
console.error('获取时间跳转点失败:', err);
|
|
32154
|
+
this.timeJumpPoints = [];
|
|
32155
|
+
}
|
|
32156
|
+
},
|
|
32221
32157
|
// 音频时间更新处理
|
|
32222
32158
|
onTimeUpdate() {
|
|
32223
32159
|
const audio = this.$refs.audioPlayer;
|
|
32224
32160
|
const currentTime = audio.currentTime;
|
|
32225
|
-
if (!this.
|
|
32226
|
-
|
|
32227
|
-
|
|
32228
|
-
|
|
32229
|
-
|
|
32230
|
-
|
|
32231
|
-
|
|
32232
|
-
|
|
32233
|
-
|
|
32234
|
-
|
|
32235
|
-
|
|
32236
|
-
|
|
32237
|
-
|
|
32238
|
-
|
|
32239
|
-
|
|
32240
|
-
|
|
32241
|
-
|
|
32242
|
-
|
|
32243
|
-
|
|
32244
|
-
|
|
32245
|
-
|
|
32246
|
-
},
|
|
32247
|
-
query: {},
|
|
32248
|
-
params: {}
|
|
32249
|
-
});
|
|
32250
|
-
this.$appOptions.router.push({
|
|
32251
|
-
path: point.url
|
|
32252
|
-
});
|
|
32253
|
-
}
|
|
32254
|
-
});
|
|
32255
|
-
}).catch(error => console.error('获取时间跳转点失败:', error));
|
|
32161
|
+
if (!this.timeJumpPoints.length) return;
|
|
32162
|
+
this.timeJumpPoints.forEach(point => {
|
|
32163
|
+
if (currentTime >= point.time && currentTime < point.time + 1 && !this.jumpedTimePoints.has(point.time)) {
|
|
32164
|
+
console.log('触发跳转:', point.url);
|
|
32165
|
+
this.jumpedTimePoints.add(point.time);
|
|
32166
|
+
this.$appOptions.store.dispatch('tags/addTagview', {
|
|
32167
|
+
path: point.url,
|
|
32168
|
+
fullPath: point.url,
|
|
32169
|
+
label: point.title,
|
|
32170
|
+
name: point.title,
|
|
32171
|
+
meta: {
|
|
32172
|
+
title: point.title
|
|
32173
|
+
},
|
|
32174
|
+
query: {},
|
|
32175
|
+
params: {}
|
|
32176
|
+
});
|
|
32177
|
+
this.$appOptions.router.push({
|
|
32178
|
+
path: point.url
|
|
32179
|
+
});
|
|
32180
|
+
}
|
|
32181
|
+
});
|
|
32256
32182
|
},
|
|
32257
32183
|
onAudioEnded() {
|
|
32258
32184
|
this.robotStatus = 'leaving';
|
|
@@ -32263,10 +32189,10 @@ const startTime = null;
|
|
|
32263
32189
|
});
|
|
32264
32190
|
;// ./components/ChatWindow.vue?vue&type=script&lang=js
|
|
32265
32191
|
/* harmony default export */ var components_ChatWindowvue_type_script_lang_js = (ChatWindowvue_type_script_lang_js);
|
|
32266
|
-
;// ./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=
|
|
32192
|
+
;// ./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=67cef8d6&prod&scoped=true&lang=css
|
|
32267
32193
|
// extracted by mini-css-extract-plugin
|
|
32268
32194
|
|
|
32269
|
-
;// ./components/ChatWindow.vue?vue&type=style&index=0&id=
|
|
32195
|
+
;// ./components/ChatWindow.vue?vue&type=style&index=0&id=67cef8d6&prod&scoped=true&lang=css
|
|
32270
32196
|
|
|
32271
32197
|
;// ./components/ChatWindow.vue
|
|
32272
32198
|
|
|
@@ -32283,7 +32209,7 @@ var ChatWindow_component = normalizeComponent(
|
|
|
32283
32209
|
staticRenderFns,
|
|
32284
32210
|
false,
|
|
32285
32211
|
null,
|
|
32286
|
-
"
|
|
32212
|
+
"67cef8d6",
|
|
32287
32213
|
null
|
|
32288
32214
|
|
|
32289
32215
|
)
|