@touchvue/chat 1.0.0-beta.2 → 1.0.0-beta.4
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/es/package.json.mjs +1 -1
- package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/HelloChat.vue2.mjs +3 -3
- package/es/packages/components/touchchat/component/AiRobot/HelloChat.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/face.vue2.mjs +3 -1
- package/es/packages/components/touchchat/component/AiRobot/face.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/meterialPrepare.vue2.mjs +9 -6
- package/es/packages/components/touchchat/component/AiRobot/meterialPrepare.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/start.vue2.mjs +1 -1
- package/es/packages/components/touchchat/component/AiRobot/start.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/component/CardView.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/HelloChat.vue2.mjs +2 -2
- package/es/packages/components/touchchat/component/HelloChat.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/img/aiAvatar.png.mjs +4 -0
- package/es/packages/components/touchchat/img/aiAvatar.png.mjs.map +1 -0
- package/es/packages/components/touchchat/img/icon.png.mjs.map +1 -0
- package/es/packages/components/touchchat/img/userAvatar.png.mjs +4 -0
- package/es/packages/components/touchchat/img/userAvatar.png.mjs.map +1 -0
- package/es/packages/components/touchchat/index.mjs +1 -1
- package/es/packages/components/touchchat/index.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs +115 -199
- package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs +43 -137
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs +90 -127
- package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs +17 -39
- package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs +41 -181
- package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/{AiRobot → AiChat}/Scene.vue2.mjs +1 -1
- package/es/packages/components/touchchat/src/AiChat/Scene.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue.mjs +6 -0
- package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs +25 -0
- package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs +618 -390
- package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs +200 -89
- package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs +42 -37
- package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/index.vue2.mjs +54 -29
- package/es/packages/components/touchchat/src/index.vue2.mjs.map +1 -1
- package/lib/package.json.js +1 -1
- package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/HelloChat.vue2.js +3 -3
- package/lib/packages/components/touchchat/component/AiRobot/HelloChat.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/face.vue2.js +3 -1
- package/lib/packages/components/touchchat/component/AiRobot/face.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/meterialPrepare.vue2.js +8 -5
- package/lib/packages/components/touchchat/component/AiRobot/meterialPrepare.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/start.vue2.js +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/start.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/component/CardView.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/HelloChat.vue2.js +2 -2
- package/lib/packages/components/touchchat/component/HelloChat.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/img/aiAvatar.png.js +8 -0
- package/lib/packages/components/touchchat/img/aiAvatar.png.js.map +1 -0
- package/lib/packages/components/touchchat/img/icon.png.js.map +1 -0
- package/lib/packages/components/touchchat/img/userAvatar.png.js +8 -0
- package/lib/packages/components/touchchat/img/userAvatar.png.js.map +1 -0
- package/lib/packages/components/touchchat/index.js +1 -1
- package/lib/packages/components/touchchat/index.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js +107 -191
- package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js +43 -137
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js +89 -126
- package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js +16 -38
- package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js +41 -181
- package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/{AiRobot → AiChat}/Scene.vue2.js +1 -1
- package/lib/packages/components/touchchat/src/AiChat/Scene.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue.js +10 -0
- package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js +29 -0
- package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js +615 -387
- package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js +199 -88
- package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js +41 -36
- package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/index.vue2.js +53 -28
- package/lib/packages/components/touchchat/src/index.vue2.js.map +1 -1
- package/package.json +81 -81
- package/theme/components/index.css +1447 -2004
- package/theme/img/aiArrow.png +0 -0
- package/theme/img/loading.png +0 -0
- package/theme/img/logo.png +0 -0
- package/theme/img/userArrow.png +0 -0
- package/theme/index.css +1448 -2005
- package/theme/skin/default.css +1448 -2005
- package/es/packages/components/touchchat/img/AI.png.mjs +0 -4
- package/es/packages/components/touchchat/img/AI.png.mjs.map +0 -1
- package/es/packages/components/touchchat/img/asir.png.mjs +0 -4
- package/es/packages/components/touchchat/img/asir.png.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/ChatPanel.vue.mjs +0 -6
- package/es/packages/components/touchchat/src/AiRobot/ChatPanel.vue.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/ChatPanel.vue2.mjs +0 -620
- package/es/packages/components/touchchat/src/AiRobot/ChatPanel.vue2.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/Content.vue.mjs +0 -6
- package/es/packages/components/touchchat/src/AiRobot/Content.vue.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/Content.vue2.mjs +0 -224
- package/es/packages/components/touchchat/src/AiRobot/Content.vue2.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/Header.vue.mjs +0 -6
- package/es/packages/components/touchchat/src/AiRobot/Header.vue.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/Header.vue2.mjs +0 -188
- package/es/packages/components/touchchat/src/AiRobot/Header.vue2.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/Input.vue.mjs +0 -6
- package/es/packages/components/touchchat/src/AiRobot/Input.vue.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/Input.vue2.mjs +0 -69
- package/es/packages/components/touchchat/src/AiRobot/Input.vue2.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/Scene.vue2.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/component/HelloChat.vue2.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/component/face.vue2.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/component/letter.vue2.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/component/meterialPrepare.vue2.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/component/start.vue2.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/img/Avatar-AI.png.mjs +0 -4
- package/es/packages/components/touchchat/src/AiRobot/img/Avatar-AI.png.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/img/icon.png.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/index.vue.mjs +0 -6
- package/es/packages/components/touchchat/src/AiRobot/index.vue.mjs.map +0 -1
- package/es/packages/components/touchchat/src/AiRobot/index.vue2.mjs +0 -67
- package/es/packages/components/touchchat/src/AiRobot/index.vue2.mjs.map +0 -1
- package/lib/packages/components/touchchat/img/AI.png.js +0 -8
- package/lib/packages/components/touchchat/img/AI.png.js.map +0 -1
- package/lib/packages/components/touchchat/img/asir.png.js +0 -8
- package/lib/packages/components/touchchat/img/asir.png.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/ChatPanel.vue.js +0 -10
- package/lib/packages/components/touchchat/src/AiRobot/ChatPanel.vue.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/ChatPanel.vue2.js +0 -624
- package/lib/packages/components/touchchat/src/AiRobot/ChatPanel.vue2.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/Content.vue.js +0 -10
- package/lib/packages/components/touchchat/src/AiRobot/Content.vue.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/Content.vue2.js +0 -228
- package/lib/packages/components/touchchat/src/AiRobot/Content.vue2.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/Header.vue.js +0 -10
- package/lib/packages/components/touchchat/src/AiRobot/Header.vue.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/Header.vue2.js +0 -192
- package/lib/packages/components/touchchat/src/AiRobot/Header.vue2.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/Input.vue.js +0 -10
- package/lib/packages/components/touchchat/src/AiRobot/Input.vue.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/Input.vue2.js +0 -73
- package/lib/packages/components/touchchat/src/AiRobot/Input.vue2.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/Scene.vue2.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/component/HelloChat.vue2.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/component/face.vue2.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/component/letter.vue2.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/component/meterialPrepare.vue2.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/component/start.vue2.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/img/Avatar-AI.png.js +0 -8
- package/lib/packages/components/touchchat/src/AiRobot/img/Avatar-AI.png.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/img/icon.png.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/index.vue.js +0 -10
- package/lib/packages/components/touchchat/src/AiRobot/index.vue.js.map +0 -1
- package/lib/packages/components/touchchat/src/AiRobot/index.vue2.js +0 -71
- package/lib/packages/components/touchchat/src/AiRobot/index.vue2.js.map +0 -1
- package/theme/img/default.png +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/HelloChat.vue.mjs +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/HelloChat.vue.mjs.map +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/face.vue.mjs +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/face.vue.mjs.map +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/letter.vue.mjs +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/letter.vue.mjs.map +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/letter.vue2.mjs +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/meterialPrepare.vue.mjs +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/meterialPrepare.vue.mjs.map +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/start.vue.mjs +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/start.vue.mjs.map +0 -0
- /package/es/packages/components/touchchat/{src/AiRobot/img → img}/icon.png.mjs +0 -0
- /package/es/packages/components/touchchat/src/{AiRobot → AiChat}/Scene.vue.mjs +0 -0
- /package/es/packages/components/touchchat/src/{AiRobot → AiChat}/Scene.vue.mjs.map +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/HelloChat.vue.js +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/HelloChat.vue.js.map +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/face.vue.js +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/face.vue.js.map +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/letter.vue.js +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/letter.vue.js.map +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/letter.vue2.js +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/meterialPrepare.vue.js +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/meterialPrepare.vue.js.map +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/start.vue.js +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/component → component/AiRobot}/start.vue.js.map +0 -0
- /package/lib/packages/components/touchchat/{src/AiRobot/img → img}/icon.png.js +0 -0
- /package/lib/packages/components/touchchat/src/{AiRobot → AiChat}/Scene.vue.js +0 -0
- /package/lib/packages/components/touchchat/src/{AiRobot → AiChat}/Scene.vue.js.map +0 -0
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import { defineComponent, ref, inject, computed, nextTick, watch, openBlock, createElementBlock, createElementVNode, renderSlot, createCommentVNode, normalizeClass,
|
|
2
|
-
import _imports_0 from '../../img/
|
|
1
|
+
import { defineComponent, ref, inject, computed, nextTick, watch, openBlock, createElementBlock, createElementVNode, renderSlot, createCommentVNode, normalizeClass, createTextVNode, toDisplayString, Fragment, createVNode, Transition, withCtx, withDirectives, vShow, unref, createBlock, resolveDynamicComponent } from 'vue';
|
|
2
|
+
import _imports_0 from '../../img/aiAvatar.png.mjs';
|
|
3
3
|
import markdown from '../../utils/markdown.mjs';
|
|
4
|
-
import _sfc_main$
|
|
5
|
-
import _sfc_main$
|
|
6
|
-
import _sfc_main$
|
|
7
|
-
import _sfc_main$
|
|
8
|
-
import _sfc_main$
|
|
4
|
+
import _sfc_main$3 from '../../component/FileView.vue2.mjs';
|
|
5
|
+
import _sfc_main$4 from '../../component/ImageView.vue2.mjs';
|
|
6
|
+
import _sfc_main$5 from '../../component/LinkView.vue2.mjs';
|
|
7
|
+
import _sfc_main$6 from '../../component/CardView.vue2.mjs';
|
|
8
|
+
import _sfc_main$2 from './MessageActions.vue2.mjs';
|
|
9
|
+
import _sfc_main$7 from '../../component/AiRobot/face.vue2.mjs';
|
|
10
|
+
import _sfc_main$8 from '../../component/AiRobot/meterialPrepare.vue2.mjs';
|
|
11
|
+
import _sfc_main$1 from '../../component/AiRobot/letter.vue2.mjs';
|
|
9
12
|
|
|
10
13
|
var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
11
14
|
__name: "AiMessage",
|
|
@@ -13,13 +16,15 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
13
16
|
item: {},
|
|
14
17
|
index: {}
|
|
15
18
|
},
|
|
16
|
-
emits: ["copy", "retry", "like", "dislike", "contentRendered"],
|
|
19
|
+
emits: ["copy", "retry", "like", "dislike", "contentRendered", "completeRendered", "toggle-sidebar"],
|
|
17
20
|
setup(__props, { emit: __emit }) {
|
|
18
21
|
const componentMap = {
|
|
19
|
-
FileView: _sfc_main$
|
|
20
|
-
ImageView: _sfc_main$
|
|
21
|
-
LinkView: _sfc_main$
|
|
22
|
-
CardView: _sfc_main$
|
|
22
|
+
FileView: _sfc_main$3,
|
|
23
|
+
ImageView: _sfc_main$4,
|
|
24
|
+
LinkView: _sfc_main$5,
|
|
25
|
+
CardView: _sfc_main$6,
|
|
26
|
+
Face: _sfc_main$7,
|
|
27
|
+
MeterialPrepare: _sfc_main$8
|
|
23
28
|
};
|
|
24
29
|
const props = __props;
|
|
25
30
|
const emits = __emit;
|
|
@@ -31,6 +36,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
31
36
|
const aiAvatarPath = ref(_imports_0);
|
|
32
37
|
const rootMap = inject("rootMap", {});
|
|
33
38
|
const isAvatar = inject("isAvatar", true);
|
|
39
|
+
const scripts = inject("scripts", []);
|
|
34
40
|
const init = () => {
|
|
35
41
|
isShowAvatar.value = isAvatar;
|
|
36
42
|
};
|
|
@@ -51,6 +57,9 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
51
57
|
const contentShow = computed(() => {
|
|
52
58
|
return props.item.content;
|
|
53
59
|
});
|
|
60
|
+
const toggleSidebarClick = (item, index) => {
|
|
61
|
+
emits("toggle-sidebar", item, index);
|
|
62
|
+
};
|
|
54
63
|
nextTick(() => {
|
|
55
64
|
renderContent();
|
|
56
65
|
});
|
|
@@ -77,200 +86,107 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
77
86
|
}
|
|
78
87
|
init();
|
|
79
88
|
};
|
|
89
|
+
const complete = () => {
|
|
90
|
+
emits("completeRendered");
|
|
91
|
+
};
|
|
80
92
|
const onCopy = () => emits("copy", props.index);
|
|
81
93
|
const onRetry = () => emits("retry", props.index);
|
|
82
94
|
const onLike = () => emits("like", props.index);
|
|
83
95
|
const onDislike = () => emits("dislike", props.index);
|
|
84
96
|
return (_ctx, _cache) => {
|
|
85
|
-
return openBlock(), createElementBlock("div", { class: "
|
|
86
|
-
createElementVNode("div", { class: "
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
return openBlock(), createElementBlock("div", { class: "touchchat-ai" }, [
|
|
98
|
+
createElementVNode("div", { class: "touchchat-ai-avatar" }, [
|
|
99
|
+
renderSlot(_ctx.$slots, "aiAvatar", {}, () => [
|
|
100
|
+
isShowAvatar.value ? (openBlock(), createElementBlock("img", {
|
|
101
|
+
key: 0,
|
|
102
|
+
src: aiAvatarPath.value,
|
|
103
|
+
class: "touchchat-ai-avatar-pic"
|
|
104
|
+
}, null, 8, ["src"])) : createCommentVNode("", true)
|
|
105
|
+
])
|
|
106
|
+
]),
|
|
107
|
+
createElementVNode("div", {
|
|
108
|
+
class: normalizeClass(["touchchat-ai-content", { "is-full": !_ctx.item.isChating && _ctx.item.componentName }])
|
|
109
|
+
}, [
|
|
110
|
+
createElementVNode("div", { class: "touchchat-ai-bubble" }, [
|
|
111
|
+
thinkContentShow.value ? (openBlock(), createElementBlock("div", {
|
|
112
|
+
key: 0,
|
|
113
|
+
ref: (el) => thinkingContentRef.value = el,
|
|
114
|
+
class: "touchchat-ai-think"
|
|
115
|
+
}, null, 512)) : createCommentVNode("", true),
|
|
116
|
+
reasoningContentShow.value ? (openBlock(), createElementBlock("div", {
|
|
117
|
+
key: 1,
|
|
118
|
+
class: "touchchat-ai-think"
|
|
119
|
+
}, [
|
|
120
|
+
createElementVNode("div", { class: "touchchat-ai-think-header" }, [
|
|
121
|
+
createElementVNode("div", { class: "touchchat-ai-think-state" }, [
|
|
122
|
+
createTextVNode(toDisplayString(_ctx.item.thinkStatus === "thinking" ? "\u6DF1\u5EA6\u601D\u8003\u4E2D..." : _ctx.item.thinkStatus === "completed" ? "\u5DF2\u6DF1\u5EA6\u601D\u8003" : "\u601D\u8003\u5DF2\u505C\u6B62") + " ", 1),
|
|
123
|
+
_ctx.item.thinkStatus === "completed" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
|
|
124
|
+
createTextVNode("\uFF08\u7528\u65F6" + toDisplayString((_ctx.item.thinkTime || 0) / 1e3) + "\u79D2\uFF09", 1)
|
|
125
|
+
], 64)) : createCommentVNode("", true)
|
|
126
|
+
]),
|
|
127
|
+
createElementVNode("div", {
|
|
128
|
+
class: normalizeClass(["touchchat-ai-think-toggle", collapse.value ? "" : "is-expand"]),
|
|
129
|
+
onClick: ($event) => collapse.value = !collapse.value
|
|
130
|
+
}, [
|
|
131
|
+
createElementVNode("span", { class: "touchchat-ai-think-toggle-icon" })
|
|
132
|
+
], 10, ["onClick"])
|
|
133
|
+
]),
|
|
134
|
+
createVNode(Transition, { name: "touchchat-ai-think-collpase" }, {
|
|
135
|
+
default: withCtx(() => [
|
|
136
|
+
withDirectives(createElementVNode("div", {
|
|
137
|
+
ref: (el) => reasoningContentRef.value = el,
|
|
138
|
+
class: "touchchat-ai-think-content"
|
|
139
|
+
}, null, 512), [
|
|
140
|
+
[vShow, collapse.value]
|
|
141
|
+
])
|
|
142
|
+
]),
|
|
143
|
+
_: 1
|
|
144
|
+
})
|
|
145
|
+
])) : createCommentVNode("", true),
|
|
146
|
+
contentShow.value && unref(scripts) && unref(scripts).length === 0 ? (openBlock(), createElementBlock("div", {
|
|
147
|
+
key: 2,
|
|
148
|
+
ref: (el) => htmlContentRef.value = el,
|
|
149
|
+
class: "touchchat-ai-bubble-text touchchat-markdown"
|
|
150
|
+
}, null, 512)) : createCommentVNode("", true),
|
|
151
|
+
unref(scripts) && unref(scripts).length > 0 && !_ctx.item.componentName ? (openBlock(), createBlock(_sfc_main$1, {
|
|
152
|
+
key: 3,
|
|
153
|
+
data: _ctx.item.content,
|
|
154
|
+
onComplete: complete
|
|
155
|
+
}, null, 8, ["data"])) : createCommentVNode("", true),
|
|
156
|
+
!_ctx.item.isChating ? renderSlot(_ctx.$slots, "aiMessageContent", {
|
|
157
|
+
key: 4,
|
|
158
|
+
item: _ctx.item,
|
|
159
|
+
index: _ctx.index
|
|
160
|
+
}, () => [
|
|
161
|
+
(openBlock(), createBlock(resolveDynamicComponent(componentName.value), {
|
|
162
|
+
index: _ctx.index,
|
|
163
|
+
item: _ctx.item,
|
|
164
|
+
onComplete: complete,
|
|
165
|
+
onToggleSidebar: toggleSidebarClick
|
|
166
|
+
}, null, 40, ["index", "item"]))
|
|
167
|
+
]) : createCommentVNode("", true),
|
|
168
|
+
_ctx.item.isChating ? (openBlock(), createElementBlock("div", {
|
|
169
|
+
key: 5,
|
|
170
|
+
class: "touchchat-ai-loading"
|
|
99
171
|
}, [
|
|
100
|
-
createElementVNode("div", { class: "ai-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
height: "14",
|
|
117
|
-
viewBox: "0 0 14 14",
|
|
118
|
-
fill: "none"
|
|
119
|
-
}, [
|
|
120
|
-
createElementVNode("path", {
|
|
121
|
-
d: "M5.74953 8.22414L2.87513 5.34974C2.19171 4.66632 2.19172 3.55828 2.87513 2.87487C3.55855 2.19145 4.66659 2.19145 5.35001 2.87487L5.76366 3.28852",
|
|
122
|
-
stroke: "#0077FA",
|
|
123
|
-
"stroke-width": "1.16667",
|
|
124
|
-
"stroke-linecap": "round",
|
|
125
|
-
"stroke-linejoin": "round"
|
|
126
|
-
}),
|
|
127
|
-
createElementVNode("path", {
|
|
128
|
-
d: "M8.23818 5.76292L11.1248 8.64955C11.8082 9.33297 11.8082 10.441 11.1248 11.1244C10.4414 11.8078 9.33335 11.8078 8.64994 11.1244L8.23127 10.7058",
|
|
129
|
-
stroke: "#0077FA",
|
|
130
|
-
"stroke-width": "1.16667",
|
|
131
|
-
"stroke-linecap": "round",
|
|
132
|
-
"stroke-linejoin": "round"
|
|
133
|
-
}),
|
|
134
|
-
createElementVNode("path", {
|
|
135
|
-
d: "M8.23736 8.23754L5.34674 11.1282C4.66512 11.8098 3.55855 11.8083 2.87513 11.1249C2.19172 10.4415 2.19025 9.3349 2.87186 8.65328L3.28526 8.23989",
|
|
136
|
-
stroke: "#0077FA",
|
|
137
|
-
"stroke-width": "1.16667",
|
|
138
|
-
"stroke-linecap": "round",
|
|
139
|
-
"stroke-linejoin": "round"
|
|
140
|
-
}),
|
|
141
|
-
createElementVNode("path", {
|
|
142
|
-
d: "M5.7627 5.76233L8.64774 2.87729C9.33243 2.19259 10.4415 2.19156 11.1249 2.87498C11.8083 3.55839 11.8073 4.66747 11.1226 5.35216L10.7261 5.74866",
|
|
143
|
-
stroke: "#0077FA",
|
|
144
|
-
"stroke-width": "1.16667",
|
|
145
|
-
"stroke-linecap": "round",
|
|
146
|
-
"stroke-linejoin": "round"
|
|
147
|
-
})
|
|
148
|
-
])),
|
|
149
|
-
createElementVNode("span", { class: "status-text" }, toDisplayString(_ctx.item.thinkStatus === "thinking" ? "\u6DF1\u5EA6\u601D\u8003\u4E2D..." : _ctx.item.thinkStatus === "completed" ? "\u5DF2\u6DF1\u5EA6\u601D\u8003" : "\u601D\u8003\u5DF2\u505C\u6B62"), 1),
|
|
150
|
-
_ctx.item.thinkStatus === "completed" ? (openBlock(), createElementBlock("span", {
|
|
151
|
-
key: 0,
|
|
152
|
-
class: "think-time"
|
|
153
|
-
}, " (\u7528\u65F6" + toDisplayString((_ctx.item.thinkTime || 0) / 1e3) + "\u79D2) ", 1)) : createCommentVNode("", true)
|
|
154
|
-
]),
|
|
155
|
-
(openBlock(), createElementBlock("svg", {
|
|
156
|
-
class: "folding",
|
|
157
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
158
|
-
width: "9",
|
|
159
|
-
height: "5",
|
|
160
|
-
viewBox: "0 0 9 5",
|
|
161
|
-
fill: "none",
|
|
162
|
-
onClick: ($event) => collapse.value = !collapse.value
|
|
163
|
-
}, [
|
|
164
|
-
withDirectives(createElementVNode("path", {
|
|
165
|
-
d: "M8.5 4.5L4.5 0.499999L0.5 4.5",
|
|
166
|
-
stroke: "#1D2129",
|
|
167
|
-
"stroke-linecap": "round",
|
|
168
|
-
"stroke-linejoin": "round"
|
|
169
|
-
}, null, 512), [
|
|
170
|
-
[vShow, collapse.value]
|
|
171
|
-
]),
|
|
172
|
-
withDirectives(createElementVNode("path", {
|
|
173
|
-
d: "M9 0.5L5 4.5L1 0.500001",
|
|
174
|
-
stroke: "#1D2129",
|
|
175
|
-
"stroke-linecap": "round",
|
|
176
|
-
"stroke-linejoin": "round"
|
|
177
|
-
}, null, 512), [
|
|
178
|
-
[vShow, !collapse.value]
|
|
179
|
-
])
|
|
180
|
-
], 8, ["onClick"]))
|
|
181
|
-
]),
|
|
182
|
-
createVNode(Transition, { name: "reasoning-collapse" }, {
|
|
183
|
-
default: withCtx(() => [
|
|
184
|
-
withDirectives(createElementVNode("div", {
|
|
185
|
-
ref: (el) => reasoningContentRef.value = el
|
|
186
|
-
}, null, 512), [
|
|
187
|
-
[vShow, collapse.value]
|
|
188
|
-
])
|
|
189
|
-
]),
|
|
190
|
-
_: 1
|
|
191
|
-
})
|
|
192
|
-
])) : createCommentVNode("", true),
|
|
193
|
-
contentShow.value ? (openBlock(), createElementBlock("div", {
|
|
194
|
-
key: 2,
|
|
195
|
-
ref: (el) => htmlContentRef.value = el,
|
|
196
|
-
class: "msg-rich-text markdown"
|
|
197
|
-
}, null, 512)) : createCommentVNode("", true),
|
|
198
|
-
!_ctx.item.isChating ? renderSlot(_ctx.$slots, "aiMessageContent", {
|
|
199
|
-
key: 3,
|
|
200
|
-
item: _ctx.item,
|
|
201
|
-
index: _ctx.index
|
|
202
|
-
}, () => [
|
|
203
|
-
(openBlock(), createBlock(resolveDynamicComponent(componentName.value), {
|
|
204
|
-
index: _ctx.index,
|
|
205
|
-
item: _ctx.item
|
|
206
|
-
}, null, 8, ["index", "item"]))
|
|
207
|
-
]) : createCommentVNode("", true),
|
|
208
|
-
_ctx.item.isChating ? (openBlock(), createElementBlock("div", {
|
|
209
|
-
key: 4,
|
|
210
|
-
class: "loading-indicator"
|
|
211
|
-
}, [
|
|
212
|
-
(openBlock(), createElementBlock("svg", {
|
|
213
|
-
class: "loading-spin",
|
|
214
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
215
|
-
width: "23",
|
|
216
|
-
height: "23",
|
|
217
|
-
viewBox: "0 0 23 23",
|
|
218
|
-
fill: "none"
|
|
219
|
-
}, [
|
|
220
|
-
createElementVNode("g", {
|
|
221
|
-
"clip-path": "url(#paint0_angular_2228_1409_clip_path)",
|
|
222
|
-
"data-figma-skip-parse": "true"
|
|
223
|
-
}, [
|
|
224
|
-
createElementVNode("g", { transform: "matrix(0.00917971 0.00166904 -0.00166904 0.00917971 11.4999 11.842)" }, [
|
|
225
|
-
(openBlock(), createElementBlock("foreignObject", {
|
|
226
|
-
x: "-1356.57",
|
|
227
|
-
y: "-1356.57",
|
|
228
|
-
width: "2713.14",
|
|
229
|
-
height: "2713.14"
|
|
230
|
-
}, [
|
|
231
|
-
createElementVNode("div", {
|
|
232
|
-
xmlns: "http://www.w3.org/1999/xhtml",
|
|
233
|
-
style: { "background": "conic-gradient(\n from 90deg,\n rgba(0, 119, 250, 1) 0deg,\n rgba(255, 255, 255, 0) 84.375deg,\n rgba(0, 119, 250, 1) 360deg\n )", "height": "100%", "width": "100%", "opacity": "1" }
|
|
234
|
-
})
|
|
235
|
-
]))
|
|
236
|
-
])
|
|
237
|
-
]),
|
|
238
|
-
createElementVNode("path", {
|
|
239
|
-
"fill-rule": "evenodd",
|
|
240
|
-
"clip-rule": "evenodd",
|
|
241
|
-
d: "M11.4999 5.15277C7.80558 5.15277 4.81073 8.14762 4.81073 11.842C4.81073 15.5363 7.80558 18.5311 11.4999 18.5311C12.1841 18.5311 12.7387 19.0858 12.7387 19.7699C12.7387 20.454 12.1841 21.0086 11.4999 21.0086C6.43731 21.0086 2.33325 16.9046 2.33325 11.842C2.33325 6.77935 6.43731 2.67529 11.4999 2.67529C16.5625 2.67529 20.6666 6.77935 20.6666 11.842C20.6666 12.5261 20.112 13.0807 19.4278 13.0807C18.7437 13.0807 18.1891 12.5261 18.1891 11.842C18.1891 8.14762 15.1943 5.15277 11.4999 5.15277Z",
|
|
242
|
-
"data-figma-gradient-fill": '{"type":"GRADIENT_ANGULAR","stops":[{"color":{"r":1.0,"g":1.0,"b":1.0,"a":0.0},"position":0.2343750},{"color":{"r":0.0,"g":0.46666666865348816,"b":0.98039215803146362,"a":1.0},"position":1.0}],"stopsVar":[],"transform":{"m00":18.359409332275391,"m01":-3.3380792140960693,"m02":3.9892544746398926,"m10":3.3380761146545410,"m11":18.359424591064453,"m12":0.99320876598358154},"opacity":1.0,"blendMode":"NORMAL","visible":true}'
|
|
243
|
-
}),
|
|
244
|
-
createElementVNode("defs", null, [
|
|
245
|
-
createElementVNode("clipPath", { id: "paint0_angular_2228_1409_clip_path" }, [
|
|
246
|
-
createElementVNode("path", {
|
|
247
|
-
"fill-rule": "evenodd",
|
|
248
|
-
"clip-rule": "evenodd",
|
|
249
|
-
d: "M11.4999 5.15277C7.80558 5.15277 4.81073 8.14762 4.81073 11.842C4.81073 15.5363 7.80558 18.5311 11.4999 18.5311C12.1841 18.5311 12.7387 19.0858 12.7387 19.7699C12.7387 20.454 12.1841 21.0086 11.4999 21.0086C6.43731 21.0086 2.33325 16.9046 2.33325 11.842C2.33325 6.77935 6.43731 2.67529 11.4999 2.67529C16.5625 2.67529 20.6666 6.77935 20.6666 11.842C20.6666 12.5261 20.112 13.0807 19.4278 13.0807C18.7437 13.0807 18.1891 12.5261 18.1891 11.842C18.1891 8.14762 15.1943 5.15277 11.4999 5.15277Z"
|
|
250
|
-
})
|
|
251
|
-
])
|
|
252
|
-
])
|
|
253
|
-
])),
|
|
254
|
-
createElementVNode("span", { class: "loading-text" }, "\u52A0\u8F7D\u4E2D...")
|
|
255
|
-
])) : createCommentVNode("", true)
|
|
256
|
-
])
|
|
257
|
-
])
|
|
258
|
-
], 2),
|
|
259
|
-
withDirectives(createVNode(_sfc_main$1, {
|
|
260
|
-
"message-type": "ai",
|
|
261
|
-
index: _ctx.index,
|
|
262
|
-
"is-show-like": _ctx.item.isShowLike,
|
|
263
|
-
"is-liked": _ctx.item.isLiked,
|
|
264
|
-
"is-disliked": _ctx.item.isDisliked,
|
|
265
|
-
onCopy,
|
|
266
|
-
onRetry,
|
|
267
|
-
onLike,
|
|
268
|
-
onDislike
|
|
269
|
-
}, null, 8, ["index", "is-show-like", "is-liked", "is-disliked"]), [
|
|
270
|
-
[vShow, !_ctx.item.isChating]
|
|
271
|
-
])
|
|
172
|
+
createElementVNode("div", { class: "touchchat-ai-loading-icon" }),
|
|
173
|
+
createElementVNode("span", { class: "touchchat-ai-loading-text" }, "\u52A0\u8F7D\u4E2D...")
|
|
174
|
+
])) : createCommentVNode("", true)
|
|
175
|
+
]),
|
|
176
|
+
withDirectives(createVNode(_sfc_main$2, {
|
|
177
|
+
"message-type": "ai",
|
|
178
|
+
index: _ctx.index,
|
|
179
|
+
"is-show-like": _ctx.item.isShowLike,
|
|
180
|
+
"is-liked": _ctx.item.isLiked,
|
|
181
|
+
"is-disliked": _ctx.item.isDisliked,
|
|
182
|
+
onCopy,
|
|
183
|
+
onRetry,
|
|
184
|
+
onLike,
|
|
185
|
+
onDislike
|
|
186
|
+
}, null, 8, ["index", "is-show-like", "is-liked", "is-disliked"]), [
|
|
187
|
+
[vShow, !_ctx.item.isChating && !unref(scripts).length]
|
|
272
188
|
])
|
|
273
|
-
])
|
|
189
|
+
], 2)
|
|
274
190
|
]);
|
|
275
191
|
};
|
|
276
192
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiMessage.vue2.mjs","sources":["../../../../../../../packages/components/touchchat/src/AiChat/AiMessage.vue"],"sourcesContent":["<template>\n <div class=\"to-chat-item ai-message\">\n <div class=\"message-content\">\n <div class=\"avatar-container\">\n <slot name=\"aiAvatar\">\n <!-- 默认头像 -->\n <img v-if=\"isShowAvatar\" :src=\"aiAvatarPath\" class=\"avatar\" />\n </slot>\n </div>\n <div style=\"width: 100%\">\n <div class=\"text-content\" :class=\"{ full: !item.isChating && item.componentName }\">\n <div class=\"ai-message-wrapper\">\n <!-- 内容区域 -->\n <div class=\"msg-content-container\">\n <!-- <span>{{item.componentName}}</span> -->\n <!-- 思考内容 -->\n <div\n v-if=\"thinkContentShow\"\n :ref=\"el => (thinkingContentRef = el as HTMLElement)\"\n class=\"think-content\"\n ></div>\n <!-- 推理内容 -->\n <div v-if=\"reasoningContentShow\" class=\"reasoning-content\">\n <div class=\"reasoning-header\">\n <div class=\"reasoning-status\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n >\n <path\n d=\"M5.74953 8.22414L2.87513 5.34974C2.19171 4.66632 2.19172 3.55828 2.87513 2.87487C3.55855 2.19145 4.66659 2.19145 5.35001 2.87487L5.76366 3.28852\"\n stroke=\"#0077FA\"\n stroke-width=\"1.16667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M8.23818 5.76292L11.1248 8.64955C11.8082 9.33297 11.8082 10.441 11.1248 11.1244C10.4414 11.8078 9.33335 11.8078 8.64994 11.1244L8.23127 10.7058\"\n stroke=\"#0077FA\"\n stroke-width=\"1.16667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M8.23736 8.23754L5.34674 11.1282C4.66512 11.8098 3.55855 11.8083 2.87513 11.1249C2.19172 10.4415 2.19025 9.3349 2.87186 8.65328L3.28526 8.23989\"\n stroke=\"#0077FA\"\n stroke-width=\"1.16667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M5.7627 5.76233L8.64774 2.87729C9.33243 2.19259 10.4415 2.19156 11.1249 2.87498C11.8083 3.55839 11.8073 4.66747 11.1226 5.35216L10.7261 5.74866\"\n stroke=\"#0077FA\"\n stroke-width=\"1.16667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n <span class=\"status-text\">\n {{\n item.thinkStatus === 'thinking'\n ? '深度思考中...'\n : item.thinkStatus === 'completed'\n ? '已深度思考'\n : '思考已停止'\n }}\n </span>\n <span v-if=\"item.thinkStatus === 'completed'\" class=\"think-time\">\n (用时{{ (item.thinkTime || 0) / 1000 }}秒)\n </span>\n </div>\n <!-- fold-active -->\n <svg\n class=\"folding\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"9\"\n height=\"5\"\n viewBox=\"0 0 9 5\"\n fill=\"none\"\n @click=\"collapse = !collapse\"\n >\n <path\n v-show=\"collapse\"\n d=\"M8.5 4.5L4.5 0.499999L0.5 4.5\"\n stroke=\"#1D2129\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n v-show=\"!collapse\"\n d=\"M9 0.5L5 4.5L1 0.500001\"\n stroke=\"#1D2129\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n <!-- <svg v-else class=\"folding\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"5\" viewBox=\"0 0 10 5\" fill=\"none\">\n\t\t\t\t\t\t\t\t<path d=\"M9 0.5L5 4.5L1 0.500001\" stroke=\"#1D2129\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n\t\t\t\t\t\t\t</svg> -->\n </div>\n <transition name=\"reasoning-collapse\">\n <div\n v-show=\"collapse\"\n :ref=\"el => (reasoningContentRef = el as HTMLElement)\"\n ></div>\n </transition>\n </div>\n <!-- 主内容 -->\n <div\n v-if=\"contentShow\"\n :ref=\"el => (htmlContentRef = el as HTMLElement)\"\n class=\"msg-rich-text markdown\"\n ></div>\n <!-- v-if=\"!hasAiMessageSlot && !item.isChating && item.componentName\" -->\n <slot v-if=\"!item.isChating\" name=\"aiMessageContent\" :item=\"item\" :index=\"index\">\n <component :is=\"componentName\" :index=\"index\" :item=\"item\"> </component>\n </slot>\n\n <!-- 新增加载状态区域 -->\n <div v-if=\"item.isChating\" class=\"loading-indicator\">\n <svg\n class=\"loading-spin\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"23\"\n height=\"23\"\n viewBox=\"0 0 23 23\"\n fill=\"none\"\n >\n <g\n clip-path=\"url(#paint0_angular_2228_1409_clip_path)\"\n data-figma-skip-parse=\"true\"\n >\n <g\n transform=\"matrix(0.00917971 0.00166904 -0.00166904 0.00917971 11.4999 11.842)\"\n >\n <foreignObject x=\"-1356.57\" y=\"-1356.57\" width=\"2713.14\" height=\"2713.14\">\n <div\n xmlns=\"http://www.w3.org/1999/xhtml\"\n style=\"\n background: conic-gradient(\n from 90deg,\n rgba(0, 119, 250, 1) 0deg,\n rgba(255, 255, 255, 0) 84.375deg,\n rgba(0, 119, 250, 1) 360deg\n );\n height: 100%;\n width: 100%;\n opacity: 1;\n \"\n ></div>\n </foreignObject>\n </g>\n </g>\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11.4999 5.15277C7.80558 5.15277 4.81073 8.14762 4.81073 11.842C4.81073 15.5363 7.80558 18.5311 11.4999 18.5311C12.1841 18.5311 12.7387 19.0858 12.7387 19.7699C12.7387 20.454 12.1841 21.0086 11.4999 21.0086C6.43731 21.0086 2.33325 16.9046 2.33325 11.842C2.33325 6.77935 6.43731 2.67529 11.4999 2.67529C16.5625 2.67529 20.6666 6.77935 20.6666 11.842C20.6666 12.5261 20.112 13.0807 19.4278 13.0807C18.7437 13.0807 18.1891 12.5261 18.1891 11.842C18.1891 8.14762 15.1943 5.15277 11.4999 5.15277Z\"\n data-figma-gradient-fill='{\"type\":\"GRADIENT_ANGULAR\",\"stops\":[{\"color\":{\"r\":1.0,\"g\":1.0,\"b\":1.0,\"a\":0.0},\"position\":0.2343750},{\"color\":{\"r\":0.0,\"g\":0.46666666865348816,\"b\":0.98039215803146362,\"a\":1.0},\"position\":1.0}],\"stopsVar\":[],\"transform\":{\"m00\":18.359409332275391,\"m01\":-3.3380792140960693,\"m02\":3.9892544746398926,\"m10\":3.3380761146545410,\"m11\":18.359424591064453,\"m12\":0.99320876598358154},\"opacity\":1.0,\"blendMode\":\"NORMAL\",\"visible\":true}'\n />\n <defs>\n <clipPath id=\"paint0_angular_2228_1409_clip_path\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11.4999 5.15277C7.80558 5.15277 4.81073 8.14762 4.81073 11.842C4.81073 15.5363 7.80558 18.5311 11.4999 18.5311C12.1841 18.5311 12.7387 19.0858 12.7387 19.7699C12.7387 20.454 12.1841 21.0086 11.4999 21.0086C6.43731 21.0086 2.33325 16.9046 2.33325 11.842C2.33325 6.77935 6.43731 2.67529 11.4999 2.67529C16.5625 2.67529 20.6666 6.77935 20.6666 11.842C20.6666 12.5261 20.112 13.0807 19.4278 13.0807C18.7437 13.0807 18.1891 12.5261 18.1891 11.842C18.1891 8.14762 15.1943 5.15277 11.4999 5.15277Z\"\n />\n </clipPath>\n </defs>\n </svg>\n <span class=\"loading-text\">加载中...</span>\n </div>\n </div>\n </div>\n </div>\n <MessageActions\n v-show=\"!item.isChating\"\n message-type=\"ai\"\n :index=\"index\"\n :is-show-like=\"item.isShowLike\"\n :is-liked=\"item.isLiked\"\n :is-disliked=\"item.isDisliked\"\n @copy=\"onCopy\"\n @retry=\"onRetry\"\n @like=\"onLike\"\n @dislike=\"onDislike\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\n// useSlots, Comment,\nimport { ref, nextTick, watch, computed, inject } from 'vue';\nimport type { ChatMessage } from './TouchChat.vue';\nimport aiAvatarBase from '../../img/AI.png';\nimport markdown from '../../utils/markdown.ts';\nimport FileView from '../../component/FileView.vue';\nimport ImageView from '../../component/ImageView.vue';\nimport LinkView from '../../component/LinkView.vue';\nimport CardView from '../../component/CardView.vue';\nimport MessageActions from './MessageActions.vue';\n\n// 为组件映射表定义接口\ninterface ComponentMap {\n [key: string]: any; // 允许任何字符串键\n FileView: typeof FileView;\n ImageView: typeof ImageView;\n LinkView: typeof LinkView;\n CardView: typeof CardView;\n}\n\n// 创建组件映射表\nconst componentMap: ComponentMap = {\n FileView,\n ImageView,\n LinkView,\n CardView,\n};\n\nconst props = withDefaults(\n defineProps<{\n item: ChatMessage;\n index: number;\n }>(),\n {}\n);\n\nconst emits = defineEmits<{\n (e: 'copy', index: number): void;\n (e: 'retry', index: number): void;\n (e: 'like', index: number): void;\n (e: 'dislike', index: number): void;\n (e: 'contentRendered', element: HTMLElement): void;\n}>();\n\nconst htmlContentRef = ref<HTMLElement | null>(null);\nconst thinkingContentRef = ref<HTMLElement | null>(null);\nconst reasoningContentRef = ref<HTMLElement | null>(null);\nconst collapse = ref(true);\nconst isShowAvatar = ref(true);\nconst aiAvatarPath = ref(aiAvatarBase);\nconst rootMap = inject<Record<string, any>>('rootMap', {}); // 指定类型并提供默认值 {}\nconst isAvatar = inject<boolean>('isAvatar', true);\n\nconst init = () => {\n isShowAvatar.value = isAvatar;\n};\n\nconst componentName = computed(() => {\n const slotMap = rootMap;\n // 明确newMap的类型,允许字符串索引\n const newMap: Record<string, any> = {\n ...slotMap,\n ...componentMap,\n };\n return newMap[props.item.componentName as string] || null;\n});\n\nconst thinkContentShow = computed(() => {\n return props.item.thinkContent;\n // && !props.item.componentName;\n});\n\nconst reasoningContentShow = computed(() => {\n return props.item.reasoningContent;\n});\n\nconst contentShow = computed(() => {\n return props.item.content;\n // && !props.item.componentName;\n});\n\n// 初始化渲染\nnextTick(() => {\n renderContent();\n});\n\n// 添加数据变化监听\nwatch(\n () => [props.item.content, props.item.thinkContent, props.item.reasoningContent],\n () => {\n nextTick(() => renderContent());\n },\n { deep: true }\n);\n\nconst renderContent = () => {\n if (htmlContentRef.value) {\n htmlContentRef.value.innerHTML = props.item.content\n ? (markdown && markdown?.render(props.item.content, { isReasoning: false })) || ''\n : '';\n emits('contentRendered', htmlContentRef.value);\n }\n if (thinkingContentRef.value) {\n thinkingContentRef.value.innerHTML = props.item.thinkContent\n ? (markdown && markdown?.render(props.item.thinkContent, { isReasoning: true })) || ''\n : '';\n emits('contentRendered', thinkingContentRef.value);\n }\n if (reasoningContentRef.value) {\n reasoningContentRef.value.innerHTML = props.item.reasoningContent\n ? (markdown && markdown?.render(props.item.reasoningContent, { isReasoning: true })) || ''\n : '';\n emits('contentRendered', reasoningContentRef.value);\n }\n init();\n};\n\nconst onCopy = () => emits('copy', props.index);\nconst onRetry = () => emits('retry', props.index);\nconst onLike = () => emits('like', props.index);\nconst onDislike = () => emits('dislike', props.index);\n</script>\n<!-- <style lang=\"less\" scoped>\n@import '../../style/ChatView.less';\n@import '../../style/AiMessage.less';\n</style> -->\n"],"names":["FileView","ImageView","LinkView","CardView","aiAvatarBase","_createElementBlock","_createElementVNode","_renderSlot","_normalizeClass","item","_createVNode","_Transition","index","_openBlock","_createBlock","_resolveDynamicComponent","MessageActions"],"mappings":";;;;;;;;;;;;;;;;;AAwNA,IAAA,MAAM,YAA6B,GAAA;AAAA,gBACjCA,WAAA;AAAA,iBACAC,WAAA;AAAA,gBACAC,WAAA;AAAA,gBACAC,WAAA;AAAA,KACF,CAAA;AAEA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAQd,IAAA,MAAM,KAAQ,GAAA,MAAA,CAAA;AAQd,IAAM,MAAA,cAAA,GAAiB,IAAwB,IAAI,CAAA,CAAA;AACnD,IAAM,MAAA,kBAAA,GAAqB,IAAwB,IAAI,CAAA,CAAA;AACvD,IAAM,MAAA,mBAAA,GAAsB,IAAwB,IAAI,CAAA,CAAA;AACxD,IAAM,MAAA,QAAA,GAAW,IAAI,IAAI,CAAA,CAAA;AACzB,IAAM,MAAA,YAAA,GAAe,IAAI,IAAI,CAAA,CAAA;AAC7B,IAAM,MAAA,YAAA,GAAe,IAAIC,UAAY,CAAA,CAAA;AACrC,IAAA,MAAM,OAAU,GAAA,MAAA,CAA4B,SAAW,EAAA,EAAE,CAAA,CAAA;AACzD,IAAM,MAAA,QAAA,GAAW,MAAgB,CAAA,UAAA,EAAY,IAAI,CAAA,CAAA;AAEjD,IAAA,MAAM,OAAO,MAAM;AACjB,MAAA,YAAA,CAAa,KAAQ,GAAA,QAAA,CAAA;AAAA,KACvB,CAAA;AAEA,IAAM,MAAA,aAAA,GAAgB,SAAS,MAAM;AACnC,MAAA,MAAM,OAAU,GAAA,OAAA,CAAA;AAEhB,MAAA,MAAM,MAA8B,GAAA;AAAA,QAClC,GAAG,OAAA;AAAA,QACH,GAAG,YAAA;AAAA,OACL,CAAA;AACA,MAAA,OAAO,MAAO,CAAA,KAAA,CAAM,IAAK,CAAA,aAAuB,CAAK,IAAA,IAAA,CAAA;AAAA,KACtD,CAAA,CAAA;AAED,IAAM,MAAA,gBAAA,GAAmB,SAAS,MAAM;AACtC,MAAA,OAAO,MAAM,IAAK,CAAA,YAAA,CAAA;AAAA,KAEnB,CAAA,CAAA;AAED,IAAM,MAAA,oBAAA,GAAuB,SAAS,MAAM;AAC1C,MAAA,OAAO,MAAM,IAAK,CAAA,gBAAA,CAAA;AAAA,KACnB,CAAA,CAAA;AAED,IAAM,MAAA,WAAA,GAAc,SAAS,MAAM;AACjC,MAAA,OAAO,MAAM,IAAK,CAAA,OAAA,CAAA;AAAA,KAEnB,CAAA,CAAA;AAGD,IAAA,QAAA,CAAS,MAAM;AACb,MAAc,aAAA,EAAA,CAAA;AAAA,KACf,CAAA,CAAA;AAGD,IAAA,KAAA;AAAA,MACE,MAAM,CAAC,KAAA,CAAM,IAAK,CAAA,OAAA,EAAS,MAAM,IAAK,CAAA,YAAA,EAAc,KAAM,CAAA,IAAA,CAAK,gBAAgB,CAAA;AAAA,MAC/E,MAAM;AACJ,QAAS,QAAA,CAAA,MAAM,eAAe,CAAA,CAAA;AAAA,OAChC;AAAA,MACA,EAAE,MAAM,IAAK,EAAA;AAAA,KACf,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;;AAC1B,MAAA,IAAI,eAAe,KAAO,EAAA;AACxB,QAAA,cAAA,CAAe,KAAM,CAAA,SAAA,GAAY,KAAM,CAAA,IAAA,CAAK,UACvC,QAAY,KAAA,CAAA,EAAA,GAAA,QAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAU,MAAO,CAAA,KAAA,CAAM,KAAK,OAAS,EAAA,EAAE,WAAa,EAAA,KAAA,QAAa,EAC9E,GAAA,EAAA,CAAA;AACJ,QAAM,KAAA,CAAA,iBAAA,EAAmB,eAAe,KAAK,CAAA,CAAA;AAAA,OAC/C;AACA,MAAA,IAAI,mBAAmB,KAAO,EAAA;AAC5B,QAAA,kBAAA,CAAmB,KAAM,CAAA,SAAA,GAAY,KAAM,CAAA,IAAA,CAAK,eAC3C,QAAY,KAAA,CAAA,EAAA,GAAA,QAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAU,MAAO,CAAA,KAAA,CAAM,KAAK,YAAc,EAAA,EAAE,WAAa,EAAA,IAAA,QAAY,EAClF,GAAA,EAAA,CAAA;AACJ,QAAM,KAAA,CAAA,iBAAA,EAAmB,mBAAmB,KAAK,CAAA,CAAA;AAAA,OACnD;AACA,MAAA,IAAI,oBAAoB,KAAO,EAAA;AAC7B,QAAA,mBAAA,CAAoB,KAAM,CAAA,SAAA,GAAY,KAAM,CAAA,IAAA,CAAK,mBAC5C,QAAY,KAAA,CAAA,EAAA,GAAA,QAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAU,MAAO,CAAA,KAAA,CAAM,KAAK,gBAAkB,EAAA,EAAE,WAAa,EAAA,IAAA,QAAY,EACtF,GAAA,EAAA,CAAA;AACJ,QAAM,KAAA,CAAA,iBAAA,EAAmB,oBAAoB,KAAK,CAAA,CAAA;AAAA,OACpD;AACA,MAAK,IAAA,EAAA,CAAA;AAAA,KACP,CAAA;AAEA,IAAA,MAAM,MAAS,GAAA,MAAM,KAAM,CAAA,MAAA,EAAQ,MAAM,KAAK,CAAA,CAAA;AAC9C,IAAA,MAAM,OAAU,GAAA,MAAM,KAAM,CAAA,OAAA,EAAS,MAAM,KAAK,CAAA,CAAA;AAChD,IAAA,MAAM,MAAS,GAAA,MAAM,KAAM,CAAA,MAAA,EAAQ,MAAM,KAAK,CAAA,CAAA;AAC9C,IAAA,MAAM,SAAY,GAAA,MAAM,KAAM,CAAA,SAAA,EAAW,MAAM,KAAK,CAAA,CAAA;;wBA1TlD,EAAAC,kBAAA,CA8LM,OAAA,EA9LD,KAAA,EAAM,2BAAyB,EAAA;AAAA,QAClCC,kBA4LM,CAAA,KAAA,EAAA,EA5LD,KAAA,EAAM,mBAAiB,EAAA;AAAA,UAC1BA,kBAKM,CAAA,KAAA,EAAA,EALD,KAAA,EAAM,oBAAkB,EAAA;AAAA,YAC3BC,WAGO,6BAHP,MAGO;AAAA,cADM,YAAY,CAAA,KAAA,iBAAvBF,mBAA8D,KAAA,EAAA;AAAA;gBAApC,KAAK,YAAY,CAAA,KAAA;AAAA,gBAAE,KAAM,EAAA,QAAA;AAAA;;;UAGvDC,kBAAA,CAoLM,OAAA,EApLD,KAAA,EAAA,EAAmB,OAAA,EAAA,MAAA,IAAA,EAAA;AAAA,YACtBA,mBAsKM,KAAA,EAAA;AAAA,cAtKD,KAAK,EAAAE,cAAA,CAAA,CAAC,cAAA,EAAgCC,EAAAA,IAAAA,EAAAA,CAAAA,IAAAA,CAAAA,IAAAA,CAAK,SAAaA,IAAAA,IAAAA,CAAI,IAAC,CAAA,aAAA,EAAa,CAAA,CAAA;AAAA;cAC7EH,kBAoKM,CAAA,KAAA,EAAA,EApKD,KAAA,EAAM,sBAAoB,EAAA;AAAA,gBAE7BA,kBAiKM,CAAA,KAAA,EAAA,EAjKD,KAAA,EAAM,yBAAuB,EAAA;AAAA,kBAIxB,gBAAgB,CAAA,KAAA,iBADxBD,mBAIO,KAAA,EAAA;AAAA;oBAFJ,GAAA,EAAK,CAAO,EAAA,KAAA,kBAAA,CAAA,KAAqB,GAAA,EAAA;AAAA,oBAClC,KAAM,EAAA,eAAA;AAAA;kBAGG,oBAAoB,CAAA,KAAA,iBAA/BA,mBAuFM,KAAA,EAAA;AAAA;oBAvF2B,KAAM,EAAA,mBAAA;AAAA;oBACrCC,kBA+EM,CAAA,KAAA,EAAA,EA/ED,KAAA,EAAM,oBAAkB,EAAA;AAAA,sBAC3BA,kBAiDM,CAAA,KAAA,EAAA,EAjDD,KAAA,EAAM,oBAAkB,EAAA;AAAA,oCAC3B,EAAAD,kBAAA,CAmCM,KAAA,EAAA;AAAA,0BAlCJ,KAAM,EAAA,4BAAA;AAAA,0BACN,KAAM,EAAA,IAAA;AAAA,0BACN,MAAO,EAAA,IAAA;AAAA,0BACP,OAAQ,EAAA,WAAA;AAAA,0BACR,IAAK,EAAA,MAAA;AAAA;0BAELC,mBAME,MAAA,EAAA;AAAA,4BALA,CAAE,EAAA,kJAAA;AAAA,4BACF,MAAO,EAAA,SAAA;AAAA,4BACP,cAAa,EAAA,SAAA;AAAA,4BACb,gBAAe,EAAA,OAAA;AAAA,4BACf,iBAAgB,EAAA,OAAA;AAAA;0BAElBA,mBAME,MAAA,EAAA;AAAA,4BALA,CAAE,EAAA,iJAAA;AAAA,4BACF,MAAO,EAAA,SAAA;AAAA,4BACP,cAAa,EAAA,SAAA;AAAA,4BACb,gBAAe,EAAA,OAAA;AAAA,4BACf,iBAAgB,EAAA,OAAA;AAAA;0BAElBA,mBAME,MAAA,EAAA;AAAA,4BALA,CAAE,EAAA,iJAAA;AAAA,4BACF,MAAO,EAAA,SAAA;AAAA,4BACP,cAAa,EAAA,SAAA;AAAA,4BACb,gBAAe,EAAA,OAAA;AAAA,4BACf,iBAAgB,EAAA,OAAA;AAAA;0BAElBA,mBAME,MAAA,EAAA;AAAA,4BALA,CAAE,EAAA,iJAAA;AAAA,4BACF,MAAO,EAAA,SAAA;AAAA,4BACP,cAAa,EAAA,SAAA;AAAA,4BACb,gBAAe,EAAA,OAAA;AAAA,4BACf,iBAAgB,EAAA,OAAA;AAAA;;wBAGpBA,mBAQO,UARD,OAAM,aAERG,EAAAA,EAAAA,gBAAAA,IAAAA,CAAAA,IAAAA,CAAK,gBAAW,mDAAmFA,KAAAA,IAAK,CAAA,WAAA,KAAW;wBAO3GA,KAAAA,IAAK,CAAA,WAAA,KAAW,4BAA5BJ,mBAEO,MAAA,EAAA;AAAA;0BAFuC,KAAM,EAAA,YAAA;AAAA,yBAAa,EAAA,gBAAA,GACxDI,eAAAA,CAAAA,CAAAA,IAAAA,CAAAA,KAAK,yBAAyB,UACvC,EAAA,CAAA;;kCAGF,EAAAJ,kBAAA,CAuBM,KAAA,EAAA;AAAA,wBAtBJ,KAAM,EAAA,SAAA;AAAA,wBACN,KAAM,EAAA,4BAAA;AAAA,wBACN,KAAM,EAAA,GAAA;AAAA,wBACN,MAAO,EAAA,GAAA;AAAA,wBACP,OAAQ,EAAA,SAAA;AAAA,wBACR,IAAK,EAAA,MAAA;AAAA,wBACJ,SAAK,CAAA,MAAA,KAAE,QAAQ,CAAA,KAAA,GAAA,CAAI,QAAQ,CAAA,KAAA;AAAA;uCAE5BC,mBAME,MAAA,EAAA;AAAA,0BAJA,CAAE,EAAA,+BAAA;AAAA,0BACF,MAAO,EAAA,SAAA;AAAA,0BACP,gBAAe,EAAA,OAAA;AAAA,0BACf,iBAAgB,EAAA,OAAA;AAAA;gCAJR,EAAA,QAAA,CAAQ,KAAA,CAAA;AAAA;uCAMlBA,mBAME,MAAA,EAAA;AAAA,0BAJA,CAAE,EAAA,yBAAA;AAAA,0BACF,MAAO,EAAA,SAAA;AAAA,0BACP,gBAAe,EAAA,OAAA;AAAA,0BACf,iBAAgB,EAAA,OAAA;AAAA;mCAJP,QAAA,CAAQ,KAAA,CAAA;AAAA;;;oBAWvBI,WAKa,CAAAC,UAAA,EAAA,EALD,IAAA,EAAK,sBAAoB,EAAA;AAAA,uCACnC,MAGO;AAAA,uCAHPL,mBAGO,KAAA,EAAA;AAAA,0BADJ,GAAA,EAAK,CAAO,EAAA,KAAA,mBAAA,CAAA,KAAsB,GAAA,EAAA;AAAA;gCAD3B,EAAA,QAAA,CAAQ,KAAA,CAAA;AAAA;;;;;kBAOd,WAAW,CAAA,KAAA,iBADnBD,mBAIO,KAAA,EAAA;AAAA;oBAFJ,GAAA,EAAK,CAAO,EAAA,KAAA,cAAA,CAAA,KAAiB,GAAA,EAAA;AAAA,oBAC9B,KAAM,EAAA,wBAAA;AAAA;kBAGKI,CAAAA,IAAAA,CAAAA,IAAAA,CAAK,YAAlBF,UAEO,CAAA,IAAA,CAAA,QAAA,kBAAA,EAAA;AAAA;oBAF+C,MAAME,IAAI,CAAA,IAAA;AAAA,oBAAG,OAAOG,IAAK,CAAA,KAAA;AAAA,qBAA/E,MAEO;AAAA,qBADLC,WAAA,EAAAC,WAAA,CAAwEC,uBAAxD,CAAA,aAAA,CAAa,KAAA,CAAA,EAAA;AAAA,sBAAG,OAAOH,IAAK,CAAA,KAAA;AAAA,sBAAG,MAAMH,IAAI,CAAA,IAAA;AAAA;;kBAIhDA,KAAAA,IAAK,CAAA,SAAA,iBAAhBJ,mBAmDM,KAAA,EAAA;AAAA;oBAnDqB,KAAM,EAAA,mBAAA;AAAA;gCAC/B,EAAAA,kBAAA,CAgDM,KAAA,EAAA;AAAA,sBA/CJ,KAAM,EAAA,cAAA;AAAA,sBACN,KAAM,EAAA,4BAAA;AAAA,sBACN,KAAM,EAAA,IAAA;AAAA,sBACN,MAAO,EAAA,IAAA;AAAA,sBACP,OAAQ,EAAA,WAAA;AAAA,sBACR,IAAK,EAAA,MAAA;AAAA;sBAELC,mBAwBI,GAAA,EAAA;AAAA,wBAvBF,WAAU,EAAA,0CAAA;AAAA,wBACV,uBAAsB,EAAA,MAAA;AAAA;wBAEtBA,kBAmBI,CAAA,GAAA,EAAA,EAlBF,SAAA,EAAU,uEAAqE,EAAA;AAAA,sCAE/E,EAAAD,kBAAA,CAegB,eAAA,EAAA;AAAA,4BAfD,CAAE,EAAA,UAAA;AAAA,4BAAW,CAAE,EAAA,UAAA;AAAA,4BAAW,KAAM,EAAA,SAAA;AAAA,4BAAU,MAAO,EAAA,SAAA;AAAA;4BAC9DC,mBAaO,KAAA,EAAA;AAAA,8BAZL,KAAM,EAAA,8BAAA;AAAA,8BACN,KAAA,EAAA,EAUC,YAAA,EAAA,iRAAA,EAAA,UAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,GAAA,EAAA;AAAA;;;;sBAKTA,mBAKE,MAAA,EAAA;AAAA,wBAJA,WAAU,EAAA,SAAA;AAAA,wBACV,WAAU,EAAA,SAAA;AAAA,wBACV,CAAE,EAAA,6eAAA;AAAA,wBACF,0BAAyB,EAAA,yaAAA;AAAA;sBAE3BA,kBAAA,CAQO,QAAA,IAAA,EAAA;AAAA,wBAPLA,kBAMW,CAAA,UAAA,EAAA,EAND,EAAA,EAAG,sCAAoC,EAAA;AAAA,0BAC/CA,mBAIE,MAAA,EAAA;AAAA,4BAHA,WAAU,EAAA,SAAA;AAAA,4BACV,WAAU,EAAA,SAAA;AAAA,4BACV,CAAE,EAAA,6eAAA;AAAA;;;;oBAKVA,mBAAwC,MAAlC,EAAA,EAAA,KAAM,EAAA,cAAA,IAAe,uBAAM,CAAA;AAAA;;;;2BAKzCI,YAWEM,WAAA,EAAA;AAAA,cATA,cAAa,EAAA,IAAA;AAAA,cACZ,OAAOJ,IAAK,CAAA,KAAA;AAAA,cACZ,cAAA,EAAcH,KAAI,IAAC,CAAA,UAAA;AAAA,cACnB,UAAA,EAAUA,KAAI,IAAC,CAAA,OAAA;AAAA,cACf,aAAA,EAAaA,KAAI,IAAC,CAAA,UAAA;AAAA,cAClB,MAAA;AAAA,cACA,OAAA;AAAA,cACA,MAAA;AAAA,cACA,SAAA;AAAA;cATQA,CAAAA,KAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAK,SAAS,CAAA;AAAA;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"AiMessage.vue2.mjs","sources":["../../../../../../../packages/components/touchchat/src/AiChat/AiMessage.vue"],"sourcesContent":["<template>\n\t<div class=\"touchchat-ai\">\n\t\t<!-- 头像区域 -->\n\t\t<div class=\"touchchat-ai-avatar\">\n\t\t\t<slot name=\"aiAvatar\">\n\t\t\t\t<img v-if=\"isShowAvatar\" :src=\"aiAvatarPath\" class=\"touchchat-ai-avatar-pic\" />\n\t\t\t</slot>\n\t\t</div>\n\n\t\t<!-- 内容区域 -->\n\t\t<div class=\"touchchat-ai-content\" :class=\"{ 'is-full': !item.isChating && item.componentName }\">\n\t\t\t<!-- 气泡 -->\n\t\t\t<div class=\"touchchat-ai-bubble\">\n\t\t\t\t<!-- 思考内容 -->\n\t\t\t\t<div v-if=\"thinkContentShow\" :ref=\"el => (thinkingContentRef = el as HTMLElement)\" class=\"touchchat-ai-think\"></div>\n\n\t\t\t\t<!-- 推理内容 -->\n\t\t\t\t<div v-if=\"reasoningContentShow\" class=\"touchchat-ai-think\">\n\t\t\t\t\t<div class=\"touchchat-ai-think-header\">\n\t\t\t\t\t\t<div class=\"touchchat-ai-think-state\">\n\t\t\t\t\t\t\t{{ item.thinkStatus === 'thinking' ? '深度思考中...' : item.thinkStatus === 'completed' ? '已深度思考' : '思考已停止' }}\n\t\t\t\t\t\t\t<template v-if=\"item.thinkStatus === 'completed'\">(用时{{ (item.thinkTime || 0) / 1000 }}秒)</template>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"touchchat-ai-think-toggle\" :class=\"collapse ? '' : 'is-expand'\" @click=\"collapse = !collapse\">\n\t\t\t\t\t\t\t<span class=\"touchchat-ai-think-toggle-icon\"></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<transition name=\"touchchat-ai-think-collpase\">\n\t\t\t\t\t\t<div v-show=\"collapse\" :ref=\"el => (reasoningContentRef = el as HTMLElement)\" class=\"touchchat-ai-think-content\"></div>\n\t\t\t\t\t</transition>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- 主内容 -->\n\t\t\t\t<div v-if=\"contentShow && scripts && scripts.length === 0\" :ref=\"el => (htmlContentRef = el as HTMLElement)\" class=\"touchchat-ai-bubble-text touchchat-markdown\"></div>\n\n\t\t\t\t<letter v-if=\"scripts && scripts.length > 0 && !item.componentName\" :data=\"item.content\" @complete=\"complete\"></letter>\n\n\t\t\t\t<slot v-if=\"!item.isChating\" name=\"aiMessageContent\" :item=\"item\" :index=\"index\">\n\t\t\t\t\t<component :is=\"componentName\" :index=\"index\" :item=\"item\" @complete=\"complete\" @toggle-sidebar=\"toggleSidebarClick\"></component>\n\t\t\t\t</slot>\n\n\t\t\t\t<!-- 新增加载状态区域 -->\n\t\t\t\t<div v-if=\"item.isChating\" class=\"touchchat-ai-loading\">\n\t\t\t\t\t<div class=\"touchchat-ai-loading-icon\"></div>\n\t\t\t\t\t<span class=\"touchchat-ai-loading-text\">加载中...</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<MessageActions v-show=\"!item.isChating && !scripts.length\" message-type=\"ai\" :index=\"index\" :is-show-like=\"item.isShowLike\" :is-liked=\"item.isLiked\" :is-disliked=\"item.isDisliked\" @copy=\"onCopy\" @retry=\"onRetry\" @like=\"onLike\" @dislike=\"onDislike\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\n// useSlots, Comment,\nimport { ref, nextTick, watch, computed, inject } from 'vue'\nimport type { ChatMessage } from './TouchChat.vue'\nimport aiAvatarBase from '../../img/aiAvatar.png'\nimport markdown from '../../utils/markdown.ts'\nimport FileView from '../../component/FileView.vue'\nimport ImageView from '../../component/ImageView.vue'\nimport LinkView from '../../component/LinkView.vue'\nimport CardView from '../../component/CardView.vue'\nimport MessageActions from './MessageActions.vue'\nimport Face from '../../component/AiRobot/face.vue'\nimport MeterialPrepare from '../../component/AiRobot/meterialPrepare.vue'\nimport Letter from '../../component/AiRobot/letter.vue'\n\n// 为组件映射表定义接口\ninterface ComponentMap {\n\t[key: string]: any // 允许任何字符串键\n\tFileView: typeof FileView\n\tImageView: typeof ImageView\n\tLinkView: typeof LinkView\n\tCardView: typeof CardView\n}\n\n// 创建组件映射表\nconst componentMap: ComponentMap = {\n\tFileView,\n\tImageView,\n\tLinkView,\n\tCardView,\n\tFace,\n\tMeterialPrepare\n}\n\nconst props = withDefaults(\n\tdefineProps<{\n\t\titem: ChatMessage\n\t\tindex: number\n\t}>(),\n\t{}\n)\n\nconst emits = defineEmits<{\n\t(e: 'copy', index: number): void\n\t(e: 'retry', index: number): void\n\t(e: 'like', index: number): void\n\t(e: 'dislike', index: number): void\n\t(e: 'contentRendered', element: HTMLElement): void\n\t(e: 'completeRendered'): void\n\t(e: 'toggle-sidebar', item: any, index: number): void\n}>()\n\nconst htmlContentRef = ref<HTMLElement | null>(null)\nconst thinkingContentRef = ref<HTMLElement | null>(null)\nconst reasoningContentRef = ref<HTMLElement | null>(null)\nconst collapse = ref(true)\nconst isShowAvatar = ref(true)\nconst aiAvatarPath = ref(aiAvatarBase)\nconst rootMap = inject<Record<string, any>>('rootMap', {}) // 指定类型并提供默认值 {}\nconst isAvatar = inject<boolean>('isAvatar', true)\nconst scripts = inject<any[]>('scripts', [])\n\nconst init = () => {\n\tisShowAvatar.value = isAvatar\n}\n\nconst componentName = computed(() => {\n\tconst slotMap = rootMap\n\n\t// 明确newMap的类型,允许字符串索引\n\tconst newMap: Record<string, any> = {\n\t\t...slotMap,\n\t\t...componentMap\n\t}\n\n\treturn newMap[props.item.componentName as string] || null\n})\n\nconst thinkContentShow = computed(() => {\n\treturn props.item.thinkContent\n\t// && !props.item.componentName;\n})\n\nconst reasoningContentShow = computed(() => {\n\treturn props.item.reasoningContent\n})\n\nconst contentShow = computed(() => {\n\treturn props.item.content\n})\n\nconst toggleSidebarClick = (item: ChatMessage, index: number) => {\n\temits('toggle-sidebar', item, index)\n}\n\n// 初始化渲染\nnextTick(() => {\n\trenderContent()\n})\n\n// 添加数据变化监听\nwatch(\n\t() => [props.item.content, props.item.thinkContent, props.item.reasoningContent],\n\t() => {\n\t\tnextTick(() => renderContent())\n\t},\n\t{ deep: true }\n)\n\nconst renderContent = () => {\n\tif (htmlContentRef.value) {\n\t\thtmlContentRef.value.innerHTML = props.item.content ? (markdown && markdown?.render(props.item.content, { isReasoning: false })) || '' : ''\n\t\temits('contentRendered', htmlContentRef.value)\n\t}\n\tif (thinkingContentRef.value) {\n\t\tthinkingContentRef.value.innerHTML = props.item.thinkContent ? (markdown && markdown?.render(props.item.thinkContent, { isReasoning: true })) || '' : ''\n\t\temits('contentRendered', thinkingContentRef.value)\n\t}\n\tif (reasoningContentRef.value) {\n\t\treasoningContentRef.value.innerHTML = props.item.reasoningContent ? (markdown && markdown?.render(props.item.reasoningContent, { isReasoning: true })) || '' : ''\n\t\temits('contentRendered', reasoningContentRef.value)\n\t}\n\tinit()\n}\n\nconst complete = () => {\n\temits('completeRendered')\n}\n\nconst onCopy = () => emits('copy', props.index)\nconst onRetry = () => emits('retry', props.index)\nconst onLike = () => emits('like', props.index)\nconst onDislike = () => emits('dislike', props.index)\n</script>\n<!-- <style lang=\"less\" scoped>\n@import '../../style/ChatView.less';\n@import '../../style/AiMessage.less';\n</style> -->\n"],"names":["FileView","ImageView","LinkView","CardView","Face","MeterialPrepare","aiAvatarBase","_createElementBlock","_createElementVNode","_renderSlot","_normalizeClass","item","_Fragment","_createTextVNode","_createVNode","_Transition","_unref","_createBlock","Letter","index","_openBlock","_resolveDynamicComponent","MessageActions"],"mappings":"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"}
|