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.
- package/components/AiMessage.vue +12 -18
- package/components/ChatAvatar.vue +8 -1
- package/components/ChatMessageList.vue +29 -10
- package/components/ChatWindow.vue +107 -4
- package/components/ChatWindowHeader.vue +1 -0
- package/components/assets/arrow.png +0 -0
- package/components/assets/empty.png +0 -0
- package/components/assets/entering.png +0 -0
- package/components/assets/logo.png +0 -0
- package/components/assets/normal.png +0 -0
- package/components/assets/output.png +0 -0
- package/components/assets/speaking.png +0 -0
- package/components/assets/think.png +0 -0
- package/components/assets/thinking.png +0 -0
- package/components/assets/waiting.png +0 -0
- package/components/mixins/messageMixin.js +11 -5
- package/dist/img/empty.f36cb82e.png +0 -0
- package/dist/img/entering.4ef198fb.png +0 -0
- package/dist/img/normal.30197a82.png +0 -0
- package/dist/img/output.1dfa94eb.png +0 -0
- package/dist/img/speaking.fa87fedb.png +0 -0
- package/dist/img/thinking.21ad5ca5.png +0 -0
- package/dist/img/waiting.460478ef.png +0 -0
- package/dist/index.common.js +189 -79
- package/dist/index.common.js.map +1 -1
- package/dist/index.css +2 -2
- package/dist/index.umd.js +189 -79
- 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/components/assets/byt.mp3 +0 -0
- package/dist/img/entering.42f05909.png +0 -0
- package/dist/img/normal.13f08ecb.png +0 -0
- package/dist/img/output.85c6bd8b.png +0 -0
- package/dist/img/speaking.3ce8b666.png +0 -0
- package/dist/img/thinking.05f29a84.png +0 -0
- package/dist/img/waiting.ac21d76e.png +0 -0
package/dist/index.common.js
CHANGED
|
@@ -28450,12 +28450,13 @@ if (typeof window !== 'undefined') {
|
|
|
28450
28450
|
var es_iterator_constructor = __webpack_require__(8111);
|
|
28451
28451
|
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.for-each.js
|
|
28452
28452
|
var es_iterator_for_each = __webpack_require__(7588);
|
|
28453
|
-
;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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=
|
|
28453
|
+
;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
|
|
28454
28454
|
var render = function render() {
|
|
28455
28455
|
var _vm = this,
|
|
28456
28456
|
_c = _vm._self._c;
|
|
28457
28457
|
return _c('div', {
|
|
28458
|
-
staticClass: "chat"
|
|
28458
|
+
staticClass: "chat",
|
|
28459
|
+
style: _vm.chatStyle
|
|
28459
28460
|
}, [_c('audio', {
|
|
28460
28461
|
ref: "audioPlayer",
|
|
28461
28462
|
staticClass: "hidden-audio",
|
|
@@ -28477,14 +28478,13 @@ var render = function render() {
|
|
|
28477
28478
|
"status": _vm.avaterStatus
|
|
28478
28479
|
},
|
|
28479
28480
|
on: {
|
|
28480
|
-
"
|
|
28481
|
+
"mousedown": _vm.startDrag
|
|
28481
28482
|
}
|
|
28482
28483
|
}), _c('ChatWindowDialog', {
|
|
28483
28484
|
attrs: {
|
|
28484
28485
|
"messages": _vm.messages,
|
|
28485
28486
|
"input-message": _vm.inputMessage,
|
|
28486
|
-
"think-status": _vm.thinkStatus
|
|
28487
|
-
"loading": _vm.isLoading
|
|
28487
|
+
"think-status": _vm.thinkStatus
|
|
28488
28488
|
},
|
|
28489
28489
|
on: {
|
|
28490
28490
|
"update:inputMessage": function ($event) {
|
|
@@ -28668,15 +28668,15 @@ var component = normalizeComponent(
|
|
|
28668
28668
|
)
|
|
28669
28669
|
|
|
28670
28670
|
/* harmony default export */ var ChatRobot = (component.exports);
|
|
28671
|
-
;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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=
|
|
28672
|
-
var
|
|
28671
|
+
;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
|
|
28672
|
+
var ChatAvatarvue_type_template_id_45540794_scoped_true_render = function render() {
|
|
28673
28673
|
var _vm = this,
|
|
28674
28674
|
_c = _vm._self._c;
|
|
28675
28675
|
return _c('div', {
|
|
28676
28676
|
staticClass: "chat-ai",
|
|
28677
28677
|
on: {
|
|
28678
|
-
"
|
|
28679
|
-
return _vm.$emit('
|
|
28678
|
+
"mousedown": function ($event) {
|
|
28679
|
+
return _vm.$emit('mousedown');
|
|
28680
28680
|
}
|
|
28681
28681
|
}
|
|
28682
28682
|
}, [_c('div', {
|
|
@@ -28685,7 +28685,7 @@ var ChatAvatarvue_type_template_id_0c02b1ca_scoped_true_render = function render
|
|
|
28685
28685
|
staticClass: "chat-ai-text"
|
|
28686
28686
|
}, [_vm._v(_vm._s(_vm.statusText))])]);
|
|
28687
28687
|
};
|
|
28688
|
-
var
|
|
28688
|
+
var ChatAvatarvue_type_template_id_45540794_scoped_true_staticRenderFns = [];
|
|
28689
28689
|
|
|
28690
28690
|
;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatAvatar.vue?vue&type=script&lang=js
|
|
28691
28691
|
/* harmony default export */ var ChatAvatarvue_type_script_lang_js = ({
|
|
@@ -28710,10 +28710,10 @@ var ChatAvatarvue_type_template_id_0c02b1ca_scoped_true_staticRenderFns = [];
|
|
|
28710
28710
|
});
|
|
28711
28711
|
;// ./components/ChatAvatar.vue?vue&type=script&lang=js
|
|
28712
28712
|
/* harmony default export */ var components_ChatAvatarvue_type_script_lang_js = (ChatAvatarvue_type_script_lang_js);
|
|
28713
|
-
;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatAvatar.vue?vue&type=style&index=0&id=
|
|
28713
|
+
;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.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
|
|
28714
28714
|
// extracted by mini-css-extract-plugin
|
|
28715
28715
|
|
|
28716
|
-
;// ./components/ChatAvatar.vue?vue&type=style&index=0&id=
|
|
28716
|
+
;// ./components/ChatAvatar.vue?vue&type=style&index=0&id=45540794&prod&scoped=true&lang=css
|
|
28717
28717
|
|
|
28718
28718
|
;// ./components/ChatAvatar.vue
|
|
28719
28719
|
|
|
@@ -28726,11 +28726,11 @@ var ChatAvatarvue_type_template_id_0c02b1ca_scoped_true_staticRenderFns = [];
|
|
|
28726
28726
|
|
|
28727
28727
|
var ChatAvatar_component = normalizeComponent(
|
|
28728
28728
|
components_ChatAvatarvue_type_script_lang_js,
|
|
28729
|
-
|
|
28730
|
-
|
|
28729
|
+
ChatAvatarvue_type_template_id_45540794_scoped_true_render,
|
|
28730
|
+
ChatAvatarvue_type_template_id_45540794_scoped_true_staticRenderFns,
|
|
28731
28731
|
false,
|
|
28732
28732
|
null,
|
|
28733
|
-
"
|
|
28733
|
+
"45540794",
|
|
28734
28734
|
null
|
|
28735
28735
|
|
|
28736
28736
|
)
|
|
@@ -28794,8 +28794,8 @@ var ChatWindowDialogvue_type_template_id_1424b8b1_scoped_true_render = function
|
|
|
28794
28794
|
};
|
|
28795
28795
|
var ChatWindowDialogvue_type_template_id_1424b8b1_scoped_true_staticRenderFns = [];
|
|
28796
28796
|
|
|
28797
|
-
;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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=
|
|
28798
|
-
var
|
|
28797
|
+
;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
|
|
28798
|
+
var ChatWindowHeadervue_type_template_id_7cac9eba_scoped_true_render = function render() {
|
|
28799
28799
|
var _vm = this,
|
|
28800
28800
|
_c = _vm._self._c;
|
|
28801
28801
|
return _c('div', {
|
|
@@ -28880,7 +28880,7 @@ var ChatWindowHeadervue_type_template_id_90ac64ba_scoped_true_render = function
|
|
|
28880
28880
|
}
|
|
28881
28881
|
})])])]);
|
|
28882
28882
|
};
|
|
28883
|
-
var
|
|
28883
|
+
var ChatWindowHeadervue_type_template_id_7cac9eba_scoped_true_staticRenderFns = [];
|
|
28884
28884
|
|
|
28885
28885
|
;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindowHeader.vue?vue&type=script&lang=js
|
|
28886
28886
|
/* harmony default export */ var ChatWindowHeadervue_type_script_lang_js = ({
|
|
@@ -28894,10 +28894,10 @@ var ChatWindowHeadervue_type_template_id_90ac64ba_scoped_true_staticRenderFns =
|
|
|
28894
28894
|
});
|
|
28895
28895
|
;// ./components/ChatWindowHeader.vue?vue&type=script&lang=js
|
|
28896
28896
|
/* harmony default export */ var components_ChatWindowHeadervue_type_script_lang_js = (ChatWindowHeadervue_type_script_lang_js);
|
|
28897
|
-
;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindowHeader.vue?vue&type=style&index=0&id=
|
|
28897
|
+
;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.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
|
|
28898
28898
|
// extracted by mini-css-extract-plugin
|
|
28899
28899
|
|
|
28900
|
-
;// ./components/ChatWindowHeader.vue?vue&type=style&index=0&id=
|
|
28900
|
+
;// ./components/ChatWindowHeader.vue?vue&type=style&index=0&id=7cac9eba&prod&scoped=true&lang=css
|
|
28901
28901
|
|
|
28902
28902
|
;// ./components/ChatWindowHeader.vue
|
|
28903
28903
|
|
|
@@ -28910,24 +28910,26 @@ var ChatWindowHeadervue_type_template_id_90ac64ba_scoped_true_staticRenderFns =
|
|
|
28910
28910
|
|
|
28911
28911
|
var ChatWindowHeader_component = normalizeComponent(
|
|
28912
28912
|
components_ChatWindowHeadervue_type_script_lang_js,
|
|
28913
|
-
|
|
28914
|
-
|
|
28913
|
+
ChatWindowHeadervue_type_template_id_7cac9eba_scoped_true_render,
|
|
28914
|
+
ChatWindowHeadervue_type_template_id_7cac9eba_scoped_true_staticRenderFns,
|
|
28915
28915
|
false,
|
|
28916
28916
|
null,
|
|
28917
|
-
"
|
|
28917
|
+
"7cac9eba",
|
|
28918
28918
|
null
|
|
28919
28919
|
|
|
28920
28920
|
)
|
|
28921
28921
|
|
|
28922
28922
|
/* harmony default export */ var ChatWindowHeader = (ChatWindowHeader_component.exports);
|
|
28923
|
-
;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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=
|
|
28924
|
-
var
|
|
28923
|
+
;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
|
|
28924
|
+
var ChatMessageListvue_type_template_id_dfc4454c_scoped_true_render = function render() {
|
|
28925
28925
|
var _vm = this,
|
|
28926
28926
|
_c = _vm._self._c;
|
|
28927
28927
|
return _c('div', {
|
|
28928
28928
|
ref: "chatArea",
|
|
28929
28929
|
staticClass: "chat-window-content scrollbar-hide"
|
|
28930
|
-
}, _vm.
|
|
28930
|
+
}, [_vm.messages.length === 0 ? _c('div', {
|
|
28931
|
+
staticClass: "chat-window-empty"
|
|
28932
|
+
}) : _vm._e(), _vm._l(_vm.messages, function (message) {
|
|
28931
28933
|
return _c('div', {
|
|
28932
28934
|
key: message.id,
|
|
28933
28935
|
staticClass: "chat-window-message"
|
|
@@ -28938,18 +28940,17 @@ var ChatMessageListvue_type_template_id_53715846_scoped_true_render = function r
|
|
|
28938
28940
|
}) : _c('AiMessage', {
|
|
28939
28941
|
attrs: {
|
|
28940
28942
|
"message": message,
|
|
28941
|
-
"think-status": _vm.thinkStatus
|
|
28942
|
-
"loading": _vm.isLoading
|
|
28943
|
+
"think-status": _vm.thinkStatus
|
|
28943
28944
|
},
|
|
28944
28945
|
on: {
|
|
28945
|
-
"thinking-
|
|
28946
|
-
return _vm
|
|
28946
|
+
"thinking-toggle": function ($event) {
|
|
28947
|
+
return _vm.handleThinkingToggle(message);
|
|
28947
28948
|
}
|
|
28948
28949
|
}
|
|
28949
28950
|
})], 1);
|
|
28950
|
-
}),
|
|
28951
|
+
})], 2);
|
|
28951
28952
|
};
|
|
28952
|
-
var
|
|
28953
|
+
var ChatMessageListvue_type_template_id_dfc4454c_scoped_true_staticRenderFns = [];
|
|
28953
28954
|
|
|
28954
28955
|
;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
|
|
28955
28956
|
var UserMessagevue_type_template_id_6a2b6167_scoped_true_render = function render() {
|
|
@@ -29001,15 +29002,15 @@ var UserMessage_component = normalizeComponent(
|
|
|
29001
29002
|
)
|
|
29002
29003
|
|
|
29003
29004
|
/* harmony default export */ var UserMessage = (UserMessage_component.exports);
|
|
29004
|
-
;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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=
|
|
29005
|
-
var
|
|
29005
|
+
;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
|
|
29006
|
+
var AiMessagevue_type_template_id_70c64956_scoped_true_render = function render() {
|
|
29006
29007
|
var _vm = this,
|
|
29007
29008
|
_c = _vm._self._c;
|
|
29008
29009
|
return _c('div', {
|
|
29009
29010
|
staticClass: "chat-window-message-ai"
|
|
29010
29011
|
}, [_c('div', {
|
|
29011
29012
|
staticClass: "ai-render"
|
|
29012
|
-
}, [_vm.
|
|
29013
|
+
}, [_vm.isLoading ? _c('div', {
|
|
29013
29014
|
staticClass: "ai-loading"
|
|
29014
29015
|
}, [_c('div', {
|
|
29015
29016
|
staticClass: "dot"
|
|
@@ -29021,12 +29022,12 @@ var AiMessagevue_type_template_id_a8b0fba0_scoped_true_render = function render(
|
|
|
29021
29022
|
staticClass: "ai-thinking",
|
|
29022
29023
|
on: {
|
|
29023
29024
|
"click": function ($event) {
|
|
29024
|
-
return _vm.$emit('thinking-
|
|
29025
|
+
return _vm.$emit('thinking-toggle');
|
|
29025
29026
|
}
|
|
29026
29027
|
}
|
|
29027
29028
|
}, [_c('div', {
|
|
29028
29029
|
staticClass: "ai-thinking-time"
|
|
29029
|
-
}, [_vm._v(
|
|
29030
|
+
}, [_vm._v(_vm._s(_vm.message.time ? `思考用时${_vm.message.time}秒` : '思考中...'))]), _vm.thinkingExpanded ? _c('div', {
|
|
29030
29031
|
staticClass: "ai-thinking-content"
|
|
29031
29032
|
}, [_vm._v(_vm._s(_vm.message.thinking))]) : _vm._e()]) : _vm._e(), _c('div', {
|
|
29032
29033
|
staticClass: "ai-content markdown-body",
|
|
@@ -29035,7 +29036,7 @@ var AiMessagevue_type_template_id_a8b0fba0_scoped_true_render = function render(
|
|
|
29035
29036
|
}
|
|
29036
29037
|
})])]);
|
|
29037
29038
|
};
|
|
29038
|
-
var
|
|
29039
|
+
var AiMessagevue_type_template_id_70c64956_scoped_true_staticRenderFns = [];
|
|
29039
29040
|
|
|
29040
29041
|
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.filter.js
|
|
29041
29042
|
var es_iterator_filter = __webpack_require__(2489);
|
|
@@ -30849,10 +30850,11 @@ function parseMarkdown(text) {
|
|
|
30849
30850
|
html = html.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2" target="_blank">$1</a>');
|
|
30850
30851
|
html = html.replace(/!\[([^\]]*)\]\(([^)]+)\)/g, '<img src="$2" alt="$1" />');
|
|
30851
30852
|
html = html.replace(/^-{3,}$/gm, '<hr>');
|
|
30852
|
-
|
|
30853
|
+
|
|
30854
|
+
// html = html.replace(/\n/g, '<br>');
|
|
30855
|
+
|
|
30853
30856
|
return html;
|
|
30854
30857
|
}
|
|
30855
|
-
|
|
30856
30858
|
// 解析表格
|
|
30857
30859
|
function parseTable(text) {
|
|
30858
30860
|
const lines = text.split('\n');
|
|
@@ -30889,7 +30891,6 @@ function parseTable(text) {
|
|
|
30889
30891
|
}
|
|
30890
30892
|
return result.join('\n');
|
|
30891
30893
|
}
|
|
30892
|
-
|
|
30893
30894
|
// 渲染表格
|
|
30894
30895
|
function renderTable(rows) {
|
|
30895
30896
|
if (rows.length < 2) return rows.join('\n');
|
|
@@ -30919,7 +30920,6 @@ function renderTable(rows) {
|
|
|
30919
30920
|
html += '</table></div>';
|
|
30920
30921
|
return html;
|
|
30921
30922
|
}
|
|
30922
|
-
|
|
30923
30923
|
// HTML 转义
|
|
30924
30924
|
function escapeHtml(text) {
|
|
30925
30925
|
const map = {
|
|
@@ -30937,19 +30937,17 @@ function escapeHtml(text) {
|
|
|
30937
30937
|
message: {
|
|
30938
30938
|
type: Object,
|
|
30939
30939
|
required: true
|
|
30940
|
-
},
|
|
30941
|
-
thinkStatus: {
|
|
30942
|
-
type: Boolean,
|
|
30943
|
-
default: true
|
|
30944
|
-
},
|
|
30945
|
-
loading: {
|
|
30946
|
-
type: Boolean,
|
|
30947
|
-
default: false
|
|
30948
30940
|
}
|
|
30949
30941
|
},
|
|
30950
30942
|
computed: {
|
|
30943
|
+
thinkingExpanded() {
|
|
30944
|
+
return this.message.thinkingExpanded !== false;
|
|
30945
|
+
},
|
|
30951
30946
|
renderedContent() {
|
|
30952
30947
|
return parseMarkdown(this.message.content);
|
|
30948
|
+
},
|
|
30949
|
+
isLoading() {
|
|
30950
|
+
return this.message.loading === true;
|
|
30953
30951
|
}
|
|
30954
30952
|
},
|
|
30955
30953
|
watch: {
|
|
@@ -30960,10 +30958,10 @@ function escapeHtml(text) {
|
|
|
30960
30958
|
});
|
|
30961
30959
|
;// ./components/AiMessage.vue?vue&type=script&lang=js
|
|
30962
30960
|
/* harmony default export */ var components_AiMessagevue_type_script_lang_js = (AiMessagevue_type_script_lang_js);
|
|
30963
|
-
;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/AiMessage.vue?vue&type=style&index=0&id=
|
|
30961
|
+
;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.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
|
|
30964
30962
|
// extracted by mini-css-extract-plugin
|
|
30965
30963
|
|
|
30966
|
-
;// ./components/AiMessage.vue?vue&type=style&index=0&id=
|
|
30964
|
+
;// ./components/AiMessage.vue?vue&type=style&index=0&id=70c64956&prod&scoped=true&lang=css
|
|
30967
30965
|
|
|
30968
30966
|
;// ./components/AiMessage.vue
|
|
30969
30967
|
|
|
@@ -30976,11 +30974,11 @@ function escapeHtml(text) {
|
|
|
30976
30974
|
|
|
30977
30975
|
var AiMessage_component = normalizeComponent(
|
|
30978
30976
|
components_AiMessagevue_type_script_lang_js,
|
|
30979
|
-
|
|
30980
|
-
|
|
30977
|
+
AiMessagevue_type_template_id_70c64956_scoped_true_render,
|
|
30978
|
+
AiMessagevue_type_template_id_70c64956_scoped_true_staticRenderFns,
|
|
30981
30979
|
false,
|
|
30982
30980
|
null,
|
|
30983
|
-
"
|
|
30981
|
+
"70c64956",
|
|
30984
30982
|
null
|
|
30985
30983
|
|
|
30986
30984
|
)
|
|
@@ -31003,13 +31001,22 @@ var AiMessage_component = normalizeComponent(
|
|
|
31003
31001
|
thinkStatus: {
|
|
31004
31002
|
type: Boolean,
|
|
31005
31003
|
default: true
|
|
31006
|
-
}
|
|
31007
|
-
|
|
31008
|
-
|
|
31009
|
-
|
|
31004
|
+
}
|
|
31005
|
+
},
|
|
31006
|
+
computed: {
|
|
31007
|
+
lastMessageObject() {
|
|
31008
|
+
const len = this.messages.length;
|
|
31009
|
+
if (len === 0) {
|
|
31010
|
+
return null;
|
|
31011
|
+
}
|
|
31012
|
+
return this.messages[len - 1];
|
|
31010
31013
|
}
|
|
31011
31014
|
},
|
|
31012
31015
|
methods: {
|
|
31016
|
+
handleThinkingToggle(message) {
|
|
31017
|
+
console.log('handleThinkingToggle', message);
|
|
31018
|
+
this.$set(message, 'thinkingExpanded', !message.thinkingExpanded);
|
|
31019
|
+
},
|
|
31013
31020
|
scrollToBottom() {
|
|
31014
31021
|
this.$nextTick(() => {
|
|
31015
31022
|
const chatArea = this.$refs.chatArea;
|
|
@@ -31020,20 +31027,23 @@ var AiMessage_component = normalizeComponent(
|
|
|
31020
31027
|
}
|
|
31021
31028
|
},
|
|
31022
31029
|
watch: {
|
|
31023
|
-
|
|
31024
|
-
handler() {
|
|
31025
|
-
|
|
31030
|
+
lastMessageObject: {
|
|
31031
|
+
handler(newMsg) {
|
|
31032
|
+
if (newMsg) {
|
|
31033
|
+
this.scrollToBottom();
|
|
31034
|
+
}
|
|
31026
31035
|
},
|
|
31027
|
-
deep: true
|
|
31036
|
+
deep: true,
|
|
31037
|
+
immediate: true
|
|
31028
31038
|
}
|
|
31029
31039
|
}
|
|
31030
31040
|
});
|
|
31031
31041
|
;// ./components/ChatMessageList.vue?vue&type=script&lang=js
|
|
31032
31042
|
/* harmony default export */ var components_ChatMessageListvue_type_script_lang_js = (ChatMessageListvue_type_script_lang_js);
|
|
31033
|
-
;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatMessageList.vue?vue&type=style&index=0&id=
|
|
31043
|
+
;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.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
|
|
31034
31044
|
// extracted by mini-css-extract-plugin
|
|
31035
31045
|
|
|
31036
|
-
;// ./components/ChatMessageList.vue?vue&type=style&index=0&id=
|
|
31046
|
+
;// ./components/ChatMessageList.vue?vue&type=style&index=0&id=dfc4454c&prod&scoped=true&lang=css
|
|
31037
31047
|
|
|
31038
31048
|
;// ./components/ChatMessageList.vue
|
|
31039
31049
|
|
|
@@ -31046,11 +31056,11 @@ var AiMessage_component = normalizeComponent(
|
|
|
31046
31056
|
|
|
31047
31057
|
var ChatMessageList_component = normalizeComponent(
|
|
31048
31058
|
components_ChatMessageListvue_type_script_lang_js,
|
|
31049
|
-
|
|
31050
|
-
|
|
31059
|
+
ChatMessageListvue_type_template_id_dfc4454c_scoped_true_render,
|
|
31060
|
+
ChatMessageListvue_type_template_id_dfc4454c_scoped_true_staticRenderFns,
|
|
31051
31061
|
false,
|
|
31052
31062
|
null,
|
|
31053
|
-
"
|
|
31063
|
+
"dfc4454c",
|
|
31054
31064
|
null
|
|
31055
31065
|
|
|
31056
31066
|
)
|
|
@@ -31757,8 +31767,7 @@ class StreamParser {
|
|
|
31757
31767
|
/* harmony default export */ var messageMixin = ({
|
|
31758
31768
|
data() {
|
|
31759
31769
|
return {
|
|
31760
|
-
streamParser: null
|
|
31761
|
-
isLoading: false
|
|
31770
|
+
streamParser: null
|
|
31762
31771
|
};
|
|
31763
31772
|
},
|
|
31764
31773
|
created() {
|
|
@@ -31768,7 +31777,6 @@ class StreamParser {
|
|
|
31768
31777
|
// 约60fps
|
|
31769
31778
|
debug: "production" === 'development'
|
|
31770
31779
|
});
|
|
31771
|
-
this.isLoading = true;
|
|
31772
31780
|
},
|
|
31773
31781
|
methods: {
|
|
31774
31782
|
createAiMessage() {
|
|
@@ -31779,7 +31787,9 @@ class StreamParser {
|
|
|
31779
31787
|
time: '',
|
|
31780
31788
|
thinking: '',
|
|
31781
31789
|
charts: [],
|
|
31782
|
-
content: ''
|
|
31790
|
+
content: '',
|
|
31791
|
+
loading: true,
|
|
31792
|
+
thinkingExpanded: true
|
|
31783
31793
|
};
|
|
31784
31794
|
this.messages.push(message);
|
|
31785
31795
|
this.currentMessage = message;
|
|
@@ -31842,14 +31852,17 @@ class StreamParser {
|
|
|
31842
31852
|
}
|
|
31843
31853
|
console.log(`流处理完成,总耗时: ${duration}ms`);
|
|
31844
31854
|
this.avaterStatus = 'normal';
|
|
31845
|
-
this.isLoading = false;
|
|
31846
31855
|
} catch (error) {
|
|
31847
31856
|
console.error('发送消息失败:', error);
|
|
31848
31857
|
if (this.currentMessage) {
|
|
31849
31858
|
this.currentMessage.content = '抱歉,发生了错误,请重试。';
|
|
31850
31859
|
this.$forceUpdate();
|
|
31851
31860
|
}
|
|
31852
|
-
|
|
31861
|
+
} finally {
|
|
31862
|
+
// 确保加载状态关闭
|
|
31863
|
+
if (this.currentMessage) {
|
|
31864
|
+
this.currentMessage.loading = false;
|
|
31865
|
+
}
|
|
31853
31866
|
}
|
|
31854
31867
|
},
|
|
31855
31868
|
/**
|
|
@@ -31886,7 +31899,9 @@ class StreamParser {
|
|
|
31886
31899
|
handleStreamUpdate(result) {
|
|
31887
31900
|
if (!this.currentMessage) return;
|
|
31888
31901
|
console.log('收到更新:', result);
|
|
31889
|
-
|
|
31902
|
+
if (this.currentMessage.loading) {
|
|
31903
|
+
this.currentMessage.loading = false;
|
|
31904
|
+
}
|
|
31890
31905
|
// 更新思考内容
|
|
31891
31906
|
if (result.thinking) {
|
|
31892
31907
|
this.currentMessage.thinking += result.thinking;
|
|
@@ -31961,14 +31976,45 @@ const FRAME_SIZE = 512;
|
|
|
31961
31976
|
thinkStatus: true,
|
|
31962
31977
|
jumpedTimePoints: new Set(),
|
|
31963
31978
|
SAMPLE_RATE,
|
|
31964
|
-
FRAME_SIZE
|
|
31979
|
+
FRAME_SIZE,
|
|
31980
|
+
dragThreshold: 5,
|
|
31981
|
+
// 拖拽阈值
|
|
31982
|
+
isDragging: false,
|
|
31983
|
+
dragStartX: 0,
|
|
31984
|
+
dragStartY: 0,
|
|
31985
|
+
currentX: 10,
|
|
31986
|
+
currentY: 20,
|
|
31987
|
+
initialX: 10,
|
|
31988
|
+
initialY: 20,
|
|
31989
|
+
hasMoved: false
|
|
31965
31990
|
};
|
|
31966
31991
|
},
|
|
31992
|
+
computed: {
|
|
31993
|
+
chatStyle() {
|
|
31994
|
+
if (this.robotStatus === 'leaving' && !this.visible) {
|
|
31995
|
+
return {
|
|
31996
|
+
right: `${this.currentX}px`,
|
|
31997
|
+
bottom: `${this.currentY}px`,
|
|
31998
|
+
cursor: this.isDragging ? 'grabbing' : 'grab',
|
|
31999
|
+
transition: this.isDragging ? 'none' : 'right 0.3s ease, bottom 0.3s ease'
|
|
32000
|
+
};
|
|
32001
|
+
}
|
|
32002
|
+
return {
|
|
32003
|
+
cursor: 'pointer'
|
|
32004
|
+
};
|
|
32005
|
+
}
|
|
32006
|
+
},
|
|
31967
32007
|
mounted() {
|
|
31968
32008
|
this.initWebSocket();
|
|
31969
32009
|
if (this.appendToBody) {
|
|
31970
32010
|
this.appendToBodyHandler();
|
|
31971
32011
|
}
|
|
32012
|
+
this.$nextTick(() => {
|
|
32013
|
+
const chatEl = this.$el;
|
|
32014
|
+
const style = window.getComputedStyle(chatEl);
|
|
32015
|
+
this.initialX = this.currentX = parseInt(style.right, 10) || 10;
|
|
32016
|
+
this.initialY = this.currentY = parseInt(style.bottom, 10) || 20;
|
|
32017
|
+
});
|
|
31972
32018
|
},
|
|
31973
32019
|
beforeDestroy() {
|
|
31974
32020
|
if (this.appendToBody && this.$el.parentElement === document.body) {
|
|
@@ -31976,10 +32022,74 @@ const FRAME_SIZE = 512;
|
|
|
31976
32022
|
}
|
|
31977
32023
|
this.closeWebSocket();
|
|
31978
32024
|
this.stopRecording();
|
|
32025
|
+
|
|
32026
|
+
// 移除全局事件监听器
|
|
32027
|
+
document.removeEventListener('mousemove', this.onDrag);
|
|
32028
|
+
document.removeEventListener('mouseup', this.stopDrag);
|
|
31979
32029
|
},
|
|
31980
32030
|
methods: {
|
|
31981
32031
|
toggleWindow() {
|
|
31982
32032
|
this.visible = !this.visible;
|
|
32033
|
+
if (this.visible) {
|
|
32034
|
+
this.currentX = this.initialX;
|
|
32035
|
+
this.currentY = this.initialY;
|
|
32036
|
+
}
|
|
32037
|
+
},
|
|
32038
|
+
startDrag() {
|
|
32039
|
+
console.log('startDrag');
|
|
32040
|
+
if (this.robotStatus !== 'leaving' && this.visible) return;
|
|
32041
|
+
this.isDragging = true;
|
|
32042
|
+
this.hasMoved = false;
|
|
32043
|
+
|
|
32044
|
+
// 记录鼠标的初始位置
|
|
32045
|
+
this.dragStartX = event.clientX;
|
|
32046
|
+
this.dragStartY = event.clientY;
|
|
32047
|
+
|
|
32048
|
+
// 绑定全局事件监听器
|
|
32049
|
+
document.addEventListener('mousemove', this.onDrag);
|
|
32050
|
+
document.addEventListener('mouseup', this.stopDrag);
|
|
32051
|
+
},
|
|
32052
|
+
onDrag(event) {
|
|
32053
|
+
if (!this.isDragging) return;
|
|
32054
|
+
|
|
32055
|
+
// 鼠标位移量
|
|
32056
|
+
const deltaX = event.clientX - this.dragStartX;
|
|
32057
|
+
const deltaY = event.clientY - this.dragStartY;
|
|
32058
|
+
if (Math.abs(deltaX) > this.dragThreshold || Math.abs(deltaY) > this.dragThreshold) {
|
|
32059
|
+
console.log('移动超过阈值');
|
|
32060
|
+
this.hasMoved = true; // 只要移动超过阈值,就标记为拖拽
|
|
32061
|
+
}
|
|
32062
|
+
|
|
32063
|
+
// 获取 .chat 容器的尺寸
|
|
32064
|
+
const chatEl = this.$el;
|
|
32065
|
+
const chatWidth = chatEl.offsetWidth;
|
|
32066
|
+
const chatHeight = chatEl.offsetHeight;
|
|
32067
|
+
let newX = this.currentX - deltaX;
|
|
32068
|
+
let newY = this.currentY - deltaY;
|
|
32069
|
+
|
|
32070
|
+
// 视口宽度和高度
|
|
32071
|
+
const viewportWidth = window.innerWidth;
|
|
32072
|
+
const viewportHeight = window.innerHeight;
|
|
32073
|
+
newX = Math.max(0, newX);
|
|
32074
|
+
newX = Math.min(viewportWidth - chatWidth, newX);
|
|
32075
|
+
newY = Math.max(0, newY);
|
|
32076
|
+
newY = Math.min(viewportHeight - chatHeight, newY);
|
|
32077
|
+
|
|
32078
|
+
// 更新位置
|
|
32079
|
+
this.currentX = newX;
|
|
32080
|
+
this.currentY = newY;
|
|
32081
|
+
|
|
32082
|
+
// 重新设置新的拖拽起始点,实现平滑拖拽
|
|
32083
|
+
this.dragStartX = event.clientX;
|
|
32084
|
+
this.dragStartY = event.clientY;
|
|
32085
|
+
},
|
|
32086
|
+
stopDrag() {
|
|
32087
|
+
this.isDragging = false;
|
|
32088
|
+
document.removeEventListener('mousemove', this.onDrag);
|
|
32089
|
+
document.removeEventListener('mouseup', this.stopDrag);
|
|
32090
|
+
if (!this.hasMoved) {
|
|
32091
|
+
this.toggleWindow();
|
|
32092
|
+
}
|
|
31983
32093
|
},
|
|
31984
32094
|
handleThinkingClick() {
|
|
31985
32095
|
this.thinkStatus = !this.thinkStatus;
|
|
@@ -32032,10 +32142,10 @@ const FRAME_SIZE = 512;
|
|
|
32032
32142
|
});
|
|
32033
32143
|
;// ./components/ChatWindow.vue?vue&type=script&lang=js
|
|
32034
32144
|
/* harmony default export */ var components_ChatWindowvue_type_script_lang_js = (ChatWindowvue_type_script_lang_js);
|
|
32035
|
-
;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindow.vue?vue&type=style&index=0&id=
|
|
32145
|
+
;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.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
|
|
32036
32146
|
// extracted by mini-css-extract-plugin
|
|
32037
32147
|
|
|
32038
|
-
;// ./components/ChatWindow.vue?vue&type=style&index=0&id=
|
|
32148
|
+
;// ./components/ChatWindow.vue?vue&type=style&index=0&id=637b4214&prod&scoped=true&lang=css
|
|
32039
32149
|
|
|
32040
32150
|
;// ./components/ChatWindow.vue
|
|
32041
32151
|
|
|
@@ -32052,7 +32162,7 @@ var ChatWindow_component = normalizeComponent(
|
|
|
32052
32162
|
staticRenderFns,
|
|
32053
32163
|
false,
|
|
32054
32164
|
null,
|
|
32055
|
-
"
|
|
32165
|
+
"637b4214",
|
|
32056
32166
|
null
|
|
32057
32167
|
|
|
32058
32168
|
)
|