@touchvue/chat 1.0.0-beta.5 → 1.0.0-beta.7
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/index.mjs +1 -1
- package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs +1 -1
- package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/component/ThoughtChain.vue.mjs +6 -0
- package/es/packages/components/touchchat/component/ThoughtChain.vue.mjs.map +1 -0
- package/es/packages/components/touchchat/component/ThoughtChain.vue2.mjs +37 -0
- package/es/packages/components/touchchat/component/ThoughtChain.vue2.mjs.map +1 -0
- package/es/packages/components/touchchat/index.mjs +3 -3
- package/es/packages/components/touchchat/index.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs +21 -21
- package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs +3 -3
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs +2 -0
- package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs +3 -4
- package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/index.vue2.mjs +3 -3
- package/es/packages/components/touchchat/src/index.vue2.mjs.map +1 -1
- package/global.d.ts +2 -2
- package/lib/package.json.js +1 -1
- package/lib/packages/components/index.js +2 -2
- package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js +1 -1
- package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/component/ThoughtChain.vue.js +10 -0
- package/lib/packages/components/touchchat/component/ThoughtChain.vue.js.map +1 -0
- package/lib/packages/components/touchchat/component/ThoughtChain.vue2.js +41 -0
- package/lib/packages/components/touchchat/component/ThoughtChain.vue2.js.map +1 -0
- package/lib/packages/components/touchchat/index.js +4 -4
- package/lib/packages/components/touchchat/index.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js +4 -4
- package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js +3 -3
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js +2 -0
- package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js +2 -3
- package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/index.vue2.js +3 -3
- package/lib/packages/components/touchchat/src/index.vue2.js.map +1 -1
- package/package.json +1 -1
- package/theme/components/index.css +68 -2
- package/theme/index.css +68 -2
- package/theme/skin/default.css +68 -2
- package/types/global.d.ts +2 -2
package/es/package.json.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, ref, inject, onMounted, openBlock, createElementBlock, createElementVNode, createTextVNode, toDisplayString, createCommentVNode } from 'vue';
|
|
2
2
|
|
|
3
|
-
const __default__ = defineComponent({ name: "
|
|
3
|
+
const __default__ = defineComponent({ name: "Touchletter" });
|
|
4
4
|
var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
5
5
|
...__default__,
|
|
6
6
|
props: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"letter.vue2.mjs","sources":["../../../../../../../packages/components/touchchat/component/AiRobot/letter.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({ name: '
|
|
1
|
+
{"version":3,"file":"letter.vue2.mjs","sources":["../../../../../../../packages/components/touchchat/component/AiRobot/letter.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({ name: 'Touchletter' });\n</script>\n<template>\n\t<div class=\"letter-container\">\n\t\t<div class=\"data-content\">\n\t\t\t{{ displayedText }}\n\t\t\t<span v-if=\"showCursor\" class=\"cursor\">|</span>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, onMounted, defineProps, defineEmits, inject, Ref } from 'vue'\n\n\n\n// 定义props和emits\nconst props = defineProps<{\n\tdata: string\n}>()\n\nconst emit = defineEmits<{\n\t(e: 'complete'): void\n}>()\n\n// 状态管理\nconst displayedText = ref('')\nconst showCursor = ref(false)\n// 正确注入Ref<boolean>类型\nconst isSwitchingHistory = inject<Ref<boolean>>('isSwitchingHistory', ref(false))\nlet typingInterval: number | null = null\n\n// 文字流实现\nconst startStreaming = () => {\n\tif (typingInterval) return\n\n\t// 访问.value以获取布尔值\n\tif (isSwitchingHistory.value) {\n\t\tdisplayedText.value = props.data\n\t\tshowCursor.value = false\n\t\temit('complete')\n\t\treturn\n\t}\n\n\t// 新增消息的文字流逻辑\n\tshowCursor.value = true\n\tdisplayedText.value = ''\n\tlet currentIndex = 0\n\tconst fullText = props.data\n\n\ttypingInterval = window.setInterval(() => {\n\t\tif (currentIndex < fullText.length) {\n\t\t\tdisplayedText.value += fullText[currentIndex]\n\t\t\tcurrentIndex++\n\t\t} else {\n\t\t\twindow.clearInterval(typingInterval!)\n\t\t\ttypingInterval = null\n\t\t\tshowCursor.value = false\n\t\t\temit('complete')\n\t\t}\n\t}, 50)\n}\n\n// 组件挂载时开始显示\nonMounted(() => {\n\tstartStreaming()\n})\n</script>\n\n<!-- <style lang=\"less\" scoped>\n@import '../style/Letter.less';\n</style> -->\n"],"names":["DO_defineComponent","_createElementBlock","_createElementVNode","_createTextVNode","_toDisplayString"],"mappings":";;AAEA,MAAA,WAA6B,GAAAA,eAAA,CAAmB,EAAE,IAAA,EAAM,eAAe,CAAA,CAAA;;;;;;;;AAiBvE,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAId,IAAA,MAAM,IAAO,GAAA,MAAA,CAAA;AAKb,IAAM,MAAA,aAAA,GAAgB,IAAI,EAAE,CAAA,CAAA;AAC5B,IAAM,MAAA,UAAA,GAAa,IAAI,KAAK,CAAA,CAAA;AAE5B,IAAA,MAAM,kBAAqB,GAAA,MAAA,CAAqB,oBAAsB,EAAA,GAAA,CAAI,KAAK,CAAC,CAAA,CAAA;AAChF,IAAA,IAAI,cAAgC,GAAA,IAAA,CAAA;AAGpC,IAAA,MAAM,iBAAiB,MAAM;AAC5B,MAAI,IAAA,cAAA;AAAgB,QAAA,OAAA;AAGpB,MAAA,IAAI,mBAAmB,KAAO,EAAA;AAC7B,QAAA,aAAA,CAAc,QAAQ,KAAM,CAAA,IAAA,CAAA;AAC5B,QAAA,UAAA,CAAW,KAAQ,GAAA,KAAA,CAAA;AACnB,QAAA,IAAA,CAAK,UAAU,CAAA,CAAA;AACf,QAAA,OAAA;AAAA,OACD;AAGA,MAAA,UAAA,CAAW,KAAQ,GAAA,IAAA,CAAA;AACnB,MAAA,aAAA,CAAc,KAAQ,GAAA,EAAA,CAAA;AACtB,MAAA,IAAI,YAAe,GAAA,CAAA,CAAA;AACnB,MAAA,MAAM,WAAW,KAAM,CAAA,IAAA,CAAA;AAEvB,MAAiB,cAAA,GAAA,MAAA,CAAO,YAAY,MAAM;AACzC,QAAI,IAAA,YAAA,GAAe,SAAS,MAAQ,EAAA;AACnC,UAAc,aAAA,CAAA,KAAA,IAAS,SAAS,YAAY,CAAA,CAAA;AAC5C,UAAA,YAAA,EAAA,CAAA;AAAA,SACM,MAAA;AACN,UAAA,MAAA,CAAO,cAAc,cAAe,CAAA,CAAA;AACpC,UAAiB,cAAA,GAAA,IAAA,CAAA;AACjB,UAAA,UAAA,CAAW,KAAQ,GAAA,KAAA,CAAA;AACnB,UAAA,IAAA,CAAK,UAAU,CAAA,CAAA;AAAA,SAChB;AAAA,SACE,EAAE,CAAA,CAAA;AAAA,KACN,CAAA;AAGA,IAAA,SAAA,CAAU,MAAM;AACf,MAAe,cAAA,EAAA,CAAA;AAAA,KACf,CAAA,CAAA;;wBA/DA,EAAAC,kBAAA,CAKM,OAAA,EALD,KAAA,EAAM,oBAAkB,EAAA;AAAA,QAC5BC,kBAGM,CAAA,KAAA,EAAA,EAHD,KAAA,EAAM,gBAAc,EAAA;AAAA,UACrBC,gBAAAC,eAAA,CAAA,aAAA,CAAA,KAAa,CAAA,GAAG,KACnB,CAAA,CAAA;AAAA,UAAY,UAAU,CAAA,KAAA,iBAAtBH,mBAA+C,MAAA,EAAA;AAAA;YAAvB,KAAM,EAAA,QAAA;AAAA,WAAS,EAAA,GAAC;;;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThoughtChain.vue.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { defineComponent, ref, openBlock, createElementBlock, Fragment, renderList, normalizeClass, createElementVNode, toDisplayString } from 'vue';
|
|
2
|
+
|
|
3
|
+
var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
4
|
+
__name: "ThoughtChain",
|
|
5
|
+
setup(__props) {
|
|
6
|
+
const stepItems = ref([
|
|
7
|
+
{ id: 1, status: "completed", content: "\u5DF2\u5B8C\u6210\u6B65\u9AA4", thinkContent: "\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57" },
|
|
8
|
+
{ id: 2, status: "completed", content: "\u5DF2\u5B8C\u6210\u6B65\u9AA4", thinkContent: "\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57" },
|
|
9
|
+
{ id: 3, status: "ongoing", content: "\u8FDB\u884C\u4E2D\u7684\u6B65\u9AA4", thinkContent: "\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57\u601D\u8003\u5185\u5BB9\u5B57" }
|
|
10
|
+
]);
|
|
11
|
+
return (_ctx, _cache) => {
|
|
12
|
+
return openBlock(), createElementBlock("div", { class: "step-container" }, [
|
|
13
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(stepItems.value, (item, index) => {
|
|
14
|
+
return openBlock(), createElementBlock("div", {
|
|
15
|
+
key: item.id,
|
|
16
|
+
class: normalizeClass(["step-item", item.status === "completed" ? "completed" : "ongoing"])
|
|
17
|
+
}, [
|
|
18
|
+
createElementVNode("div", { class: "step-marker" }, [
|
|
19
|
+
item.status === "completed" ? (openBlock(), createElementBlock("i", {
|
|
20
|
+
key: 0,
|
|
21
|
+
class: "check-icon"
|
|
22
|
+
}, "\u2713")) : (openBlock(), createElementBlock("span", { key: 1 }, toDisplayString(index + 1), 1))
|
|
23
|
+
]),
|
|
24
|
+
createElementVNode("div", { class: "step-connector" }),
|
|
25
|
+
createElementVNode("div", { class: "step-content" }, [
|
|
26
|
+
createElementVNode("h3", null, toDisplayString(item.content), 1),
|
|
27
|
+
createElementVNode("p", null, toDisplayString(item.thinkContent), 1)
|
|
28
|
+
])
|
|
29
|
+
], 2);
|
|
30
|
+
}), 128))
|
|
31
|
+
]);
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
export { _sfc_main as default };
|
|
37
|
+
//# sourceMappingURL=ThoughtChain.vue2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThoughtChain.vue2.mjs","sources":["../../../../../../packages/components/touchchat/component/ThoughtChain.vue"],"sourcesContent":["<template>\n\t<div class=\"step-container\">\n\t\t<!-- 已完成步骤 -->\n\t\t<div v-for=\"(item, index) in stepItems\" :key=\"item.id\" class=\"step-item\" :class=\"item.status === 'completed' ? 'completed' : 'ongoing'\">\n\t\t\t<div class=\"step-marker\">\n\t\t\t\t<i v-if=\"item.status === 'completed'\" class=\"check-icon\">✓</i>\n\t\t\t\t<span v-else>{{ index + 1 }}</span>\n\t\t\t</div>\n\t\t\t<!-- 添加连接线 -->\n\t\t\t<div class=\"step-connector\"></div>\n\t\t\t<div class=\"step-content\">\n\t\t\t\t<h3>{{ item.content }}</h3>\n\t\t\t\t<p>{{ item.thinkContent }}</p>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nconst stepItems = ref([\n\t{ id: 1, status: 'completed', content: '已完成步骤', thinkContent: '思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字' },\n\t{ id: 2, status: 'completed', content: '已完成步骤', thinkContent: '思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字' },\n\t{ id: 3, status: 'ongoing', content: '进行中的步骤', thinkContent: '思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字思考内容字' }\n])\n</script>\n"],"names":["_createElementBlock","_openBlock","_Fragment","_renderList","_normalizeClass","_createElementVNode","_toDisplayString"],"mappings":";;;;;AAoBA,IAAA,MAAM,YAAY,GAAI,CAAA;AAAA,MACrB,EAAE,IAAI,CAAG,EAAA,MAAA,EAAQ,aAAa,OAAS,EAAA,gCAAA,EAAS,cAAc,4yBAA0I,EAAA;AAAA,MACxM,EAAE,IAAI,CAAG,EAAA,MAAA,EAAQ,aAAa,OAAS,EAAA,gCAAA,EAAS,cAAc,4yBAA0I,EAAA;AAAA,MACxM,EAAE,IAAI,CAAG,EAAA,MAAA,EAAQ,WAAW,OAAS,EAAA,sCAAA,EAAU,cAAc,4yBAA0I,EAAA;AAAA,KACvM,CAAA,CAAA;;wBAvBA,EAAAA,kBAAA,CAcM,OAAA,EAdD,KAAA,EAAM,kBAAgB,EAAA;AAAA,SAE1BC,SAAA,CAAA,IAAA,CAAA,EAAAD,kBAWM,CAAAE,QAAA,EAXuB,IAAA,EAAAC,UAAA,CAAA,SAAA,CAAA,KAAA,EAAhB,CAAA,IAAA,EAAM,KAAK,KAAA;4BAAxB,EAAAH,kBAAA,CAWM,KAAA,EAAA;AAAA,YAXmC,KAAK,IAAK,CAAA,EAAA;AAAA,YAAI,KAAA,EAAMI,eAAA,CAAA,WAAA,EAAoB,KAAK,MAAM,KAAA,WAAA,GAAA,WAAA,GAAA,SAAA,CAAA,CAAA;AAAA;YAC3FC,kBAGM,CAAA,KAAA,EAAA,EAHD,KAAA,EAAM,eAAa,EAAA;AAAA,cACd,KAAK,MAAM,KAAA,WAAA,iBAApBL,mBAA8D,GAAA,EAAA;AAAA;gBAAxB,KAAM,EAAA,YAAA;AAAA,eAAa,EAAA,QAAC,CAC1D,KAAAC,SAAA,IAAAD,kBAAmC,CAAA,MAAA,8BAAnB,KAAK,GAAA,CAAA,GAAA,CAAA,CAAA,CAAA;AAAA;YAGtBK,kBAAkC,CAAA,KAAA,EAAA,EAA7B,KAAA,EAAM,kBAAgB,CAAA;AAAA,YAC3BA,kBAGM,CAAA,KAAA,EAAA,EAHD,KAAA,EAAM,gBAAc,EAAA;AAAA,cACxBA,mBAA2B,IAAA,EAAA,IAAA,EAAAC,gBAApB,IAAK,CAAA,OAAO,GAAA,CAAA,CAAA;AAAA,cACnBD,mBAA8B,GAAA,EAAA,IAAA,EAAAC,gBAAxB,IAAK,CAAA,YAAY,GAAA,CAAA,CAAA;AAAA;;;;;;;;;;"}
|
|
@@ -2,8 +2,8 @@ import _sfc_main from './src/index.vue2.mjs';
|
|
|
2
2
|
import _sfc_main$1 from './component/AiRobot/letter.vue2.mjs';
|
|
3
3
|
import { withInstall } from '../../utils/types.mjs';
|
|
4
4
|
|
|
5
|
-
const
|
|
6
|
-
const
|
|
5
|
+
const Touchchat = withInstall(_sfc_main);
|
|
6
|
+
const Touchletter = withInstall(_sfc_main$1);
|
|
7
7
|
|
|
8
|
-
export {
|
|
8
|
+
export { Touchchat, Touchletter };
|
|
9
9
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../../packages/components/touchchat/index.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../packages/components/touchchat/index.ts"],"sourcesContent":["import ToTouchChat from './src/index.vue'\nimport ToTouchLetter from '../touchchat/component/AiRobot/letter.vue'\n\nimport { SFCWithInstall, withInstall } from '@touchvue/utils'\n\nexport const Touchchat: SFCWithInstall<typeof ToTouchChat> = withInstall(ToTouchChat)\nexport const Touchletter: SFCWithInstall<typeof ToTouchLetter> = withInstall(ToTouchLetter)\n\nexport * from './src/index.vue'\nexport * from '../touchchat/component/AiRobot/letter.vue'\n"],"names":["ToTouchChat","ToTouchLetter"],"mappings":";;;;AAKa,MAAA,SAAA,GAAgD,YAAYA,SAAW,EAAA;AACvE,MAAA,WAAA,GAAoD,YAAYC,WAAa;;;;"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { defineComponent, ref, inject, computed, nextTick, watch, openBlock, createElementBlock, createElementVNode, renderSlot, createCommentVNode, normalizeClass, unref, createTextVNode, toDisplayString, Fragment, createVNode, Transition, withCtx,
|
|
1
|
+
import { defineComponent, ref, inject, computed, nextTick, watch, openBlock, createElementBlock, createElementVNode, renderSlot, createCommentVNode, normalizeClass, unref, createTextVNode, toDisplayString, Fragment, createVNode, Transition, withCtx, createBlock, resolveDynamicComponent, withDirectives, vShow } from 'vue';
|
|
2
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$
|
|
9
|
-
import _sfc_main$
|
|
10
|
-
import _sfc_main$
|
|
11
|
-
import _sfc_main$
|
|
4
|
+
import _sfc_main$4 from '../../component/FileView.vue2.mjs';
|
|
5
|
+
import _sfc_main$5 from '../../component/ImageView.vue2.mjs';
|
|
6
|
+
import _sfc_main$6 from '../../component/LinkView.vue2.mjs';
|
|
7
|
+
import _sfc_main$7 from '../../component/CardView.vue2.mjs';
|
|
8
|
+
import _sfc_main$3 from './MessageActions.vue2.mjs';
|
|
9
|
+
import _sfc_main$8 from '../../component/AiRobot/face.vue2.mjs';
|
|
10
|
+
import _sfc_main$9 from '../../component/AiRobot/meterialPrepare.vue2.mjs';
|
|
11
|
+
import _sfc_main$2 from '../../component/AiRobot/letter.vue2.mjs';
|
|
12
|
+
import _sfc_main$1 from '../../component/ThoughtChain.vue2.mjs';
|
|
12
13
|
|
|
13
14
|
var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
14
15
|
__name: "AiMessage",
|
|
@@ -19,12 +20,12 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
19
20
|
emits: ["copy", "retry", "like", "dislike", "contentRendered", "completeRendered", "toggle-sidebar"],
|
|
20
21
|
setup(__props, { emit: __emit }) {
|
|
21
22
|
const componentMap = {
|
|
22
|
-
FileView: _sfc_main$
|
|
23
|
-
ImageView: _sfc_main$
|
|
24
|
-
LinkView: _sfc_main$
|
|
25
|
-
CardView: _sfc_main$
|
|
26
|
-
Face: _sfc_main$
|
|
27
|
-
MeterialPrepare: _sfc_main$
|
|
23
|
+
FileView: _sfc_main$4,
|
|
24
|
+
ImageView: _sfc_main$5,
|
|
25
|
+
LinkView: _sfc_main$6,
|
|
26
|
+
CardView: _sfc_main$7,
|
|
27
|
+
Face: _sfc_main$8,
|
|
28
|
+
MeterialPrepare: _sfc_main$9
|
|
28
29
|
};
|
|
29
30
|
const props = __props;
|
|
30
31
|
const emits = __emit;
|
|
@@ -136,12 +137,11 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
136
137
|
]),
|
|
137
138
|
createVNode(Transition, { name: "touchchat-ai-think-collpase" }, {
|
|
138
139
|
default: withCtx(() => [
|
|
139
|
-
|
|
140
|
+
collapse.value && false ? (openBlock(), createElementBlock("div", {
|
|
141
|
+
key: 0,
|
|
140
142
|
ref: (el) => reasoningContentRef.value = el,
|
|
141
143
|
class: "touchchat-ai-think-content"
|
|
142
|
-
}, null, 512),
|
|
143
|
-
[vShow, collapse.value]
|
|
144
|
-
])
|
|
144
|
+
}, null, 512)) : collapse.value && true ? (openBlock(), createBlock(_sfc_main$1, { key: 1 })) : createCommentVNode("", true)
|
|
145
145
|
]),
|
|
146
146
|
_: 1
|
|
147
147
|
})
|
|
@@ -151,7 +151,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
151
151
|
ref: (el) => htmlContentRef.value = el,
|
|
152
152
|
class: "touchchat-ai-bubble-text touchchat-markdown"
|
|
153
153
|
}, null, 512)) : createCommentVNode("", true),
|
|
154
|
-
unref(scripts) && unref(scripts).length > 0 && !_ctx.item.componentName ? (openBlock(), createBlock(_sfc_main$
|
|
154
|
+
unref(scripts) && unref(scripts).length > 0 && !_ctx.item.componentName ? (openBlock(), createBlock(_sfc_main$2, {
|
|
155
155
|
key: 3,
|
|
156
156
|
data: _ctx.item.content,
|
|
157
157
|
onComplete: complete
|
|
@@ -180,7 +180,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
180
180
|
item: _ctx.item,
|
|
181
181
|
index: _ctx.index
|
|
182
182
|
}, () => [
|
|
183
|
-
withDirectives(createVNode(_sfc_main$
|
|
183
|
+
withDirectives(createVNode(_sfc_main$3, {
|
|
184
184
|
"message-type": "ai",
|
|
185
185
|
index: _ctx.index,
|
|
186
186
|
"is-show-like": _ctx.item.isShowLike,
|
|
@@ -1 +1 @@
|
|
|
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\" :class=\"noBubbleBorder && !item.isChating && item.componentName ? 'no-bobble-border' : ''\">\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<slot name=\"messageActions\" :item=\"item\" :index=\"index\">\n\t\t\t\t<MessageActions v-show=\"!item.isChating\" 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\t</slot>\n\t\t\t<!-- && !scripts.length -->\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', [])\nconst noBubbleBorder = inject<boolean>('noBubbleBorder', false)\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","_unref","_Fragment","_createTextVNode","_createVNode","_Transition","_createBlock","Letter","index","_openBlock","_resolveDynamicComponent","MessageActions"],"mappings":"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"}
|
|
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\" :class=\"noBubbleBorder && !item.isChating && item.componentName ? 'no-bobble-border' : ''\">\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<template v-if=\"collapse && false\">\n\t\t\t\t\t\t\t<div :ref=\"el => (reasoningContentRef = el as HTMLElement)\" class=\"touchchat-ai-think-content\"></div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template v-else-if=\"collapse && true\">\n\t\t\t\t\t\t\t<!-- 思维链 -->\n\t\t\t\t\t\t\t<thought-chain></thought-chain>\n\t\t\t\t\t\t</template>\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<slot name=\"messageActions\" :item=\"item\" :index=\"index\">\n\t\t\t\t<MessageActions v-show=\"!item.isChating\" 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\t</slot>\n\t\t\t<!-- && !scripts.length -->\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'\nimport ThoughtChain from '../../component/ThoughtChain.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', [])\nconst noBubbleBorder = inject<boolean>('noBubbleBorder', false)\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","_unref","_Fragment","_createTextVNode","_createVNode","_Transition","_createBlock","ThoughtChain","Letter","index","_openBlock","_resolveDynamicComponent","MessageActions"],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
10
10
|
emits: ["send", "stop", "update:enableDeepThinking", "update:inputValue"],
|
|
11
11
|
setup(__props, { emit: __emit }) {
|
|
12
12
|
const placeholder = inject("placeholder", "\u8BF7\u8F93\u5165...");
|
|
13
|
-
const
|
|
13
|
+
const thinkAble = inject("thinkAble", false);
|
|
14
14
|
const props = __props;
|
|
15
15
|
const emits = __emit;
|
|
16
16
|
const handleInputChange = (e) => {
|
|
@@ -34,7 +34,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
34
34
|
}, null, 40, ["value", "placeholder"])
|
|
35
35
|
]),
|
|
36
36
|
createElementVNode("div", {
|
|
37
|
-
class: normalizeClass(unref(
|
|
37
|
+
class: normalizeClass(unref(thinkAble) ? "touchchat-edit-submit is-thinkable" : "touchchat-edit-submit")
|
|
38
38
|
}, [
|
|
39
39
|
createElementVNode("div", { class: "touchchat-edit-submit-left" }, [
|
|
40
40
|
createElementVNode("button", {
|
|
@@ -42,7 +42,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
42
42
|
}, [
|
|
43
43
|
createElementVNode("div", { class: "touchchat-edit-attach-icon" })
|
|
44
44
|
], 2),
|
|
45
|
-
unref(
|
|
45
|
+
unref(thinkAble) ? (openBlock(), createElementBlock("button", {
|
|
46
46
|
key: 0,
|
|
47
47
|
class: normalizeClass(["touchchat-edit-think", { "is-on": _ctx.enableDeepThinking, "is-dis": _ctx.isChating }]),
|
|
48
48
|
onClick: handleDeepThinkingClick
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatInput.vue2.mjs","sources":["../../../../../../../packages/components/touchchat/src/AiChat/ChatInput.vue"],"sourcesContent":["<template>\n\t<div class=\"touchchat-edit\">\n\t\t<!-- 将v-model拆分为:value和@input -->\n\t\t<div class=\"touchchat-edit-input\">\n\t\t\t<textarea :value=\"inputValue\" :placeholder=\"placeholder ?? '请输入...'\" @input=\"handleInputChange\" @keyup.enter=\"handleSend\"></textarea>\n\t\t</div>\n\n\t\t<!-- 按钮与开关容器 -->\n\t\t<div :class=\"
|
|
1
|
+
{"version":3,"file":"ChatInput.vue2.mjs","sources":["../../../../../../../packages/components/touchchat/src/AiChat/ChatInput.vue"],"sourcesContent":["<template>\n\t<div class=\"touchchat-edit\">\n\t\t<!-- 将v-model拆分为:value和@input -->\n\t\t<div class=\"touchchat-edit-input\">\n\t\t\t<textarea :value=\"inputValue\" :placeholder=\"placeholder ?? '请输入...'\" @input=\"handleInputChange\" @keyup.enter=\"handleSend\"></textarea>\n\t\t</div>\n\n\t\t<!-- 按钮与开关容器 -->\n\t\t<div :class=\"thinkAble ? 'touchchat-edit-submit is-thinkable' : 'touchchat-edit-submit'\">\n\t\t\t<div class=\"touchchat-edit-submit-left\">\n\t\t\t\t<!-- 附件 -->\n\t\t\t\t<button class=\"touchchat-edit-attach\" :class=\"{ 'is-dis': isChating }\">\n\t\t\t\t\t<div class=\"touchchat-edit-attach-icon\"></div>\n\t\t\t\t</button>\n\n\t\t\t\t<!-- 深度思考开关 - 修改为按钮样式 -->\n\t\t\t\t<button v-if=\"thinkAble\" class=\"touchchat-edit-think\" :class=\"{ 'is-on': enableDeepThinking, 'is-dis': isChating }\" @click=\"handleDeepThinkingClick\">\n\t\t\t\t\t<div class=\"touchchat-edit-think-icon\"></div>\n\t\t\t\t\t<div class=\"touchchat-edit-think-text\">深度思考</div>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class=\"touchchat-edit-submit-right\">\n\t\t\t\t<!-- 发送按钮 -->\n\t\t\t\t<button v-if=\"!isChating\" class=\"touchchat-edit-send\" :disabled=\"!inputValue.trim()\" @click=\"handleSend\">\n\t\t\t\t\t<div class=\"touchchat-edit-send-icon\"></div>\n\t\t\t\t</button>\n\n\t\t\t\t<!-- 停止按钮 -->\n\t\t\t\t<button v-else class=\"touchchat-edit-stop\" @click=\"handleStop\">\n\t\t\t\t\t<div class=\"touchchat-edit-stop-icon\"></div>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject } from 'vue'\nconst placeholder = inject('placeholder', '请输入...')\nconst thinkAble = inject('thinkAble', false)\nconst props = defineProps<{\n\tinputValue: string\n\tisChating: boolean\n\tenableDeepThinking: boolean\n}>()\n\nconst emits = defineEmits<{\n\t(e: 'send'): void\n\t(e: 'stop'): void\n\t(e: 'update:enableDeepThinking', value: boolean): void\n\t(e: 'update:inputValue', value: string): void // 添加inputValue更新事件\n}>()\n\n// 处理输入框变化\nconst handleInputChange = (e: Event) => {\n\tconst value = (e.target as HTMLTextAreaElement).value\n\temits('update:inputValue', value)\n}\n\n// 处理深度思考按钮点击\nconst handleDeepThinkingClick = () => {\n\temits('update:enableDeepThinking', !props.enableDeepThinking)\n}\n\nconst handleSend = () => emits('send')\nconst handleStop = () => emits('stop')\n</script>\n"],"names":["_createElementBlock","_createElementVNode","inputValue","_unref","_normalizeClass","isChating","enableDeepThinking"],"mappings":"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"}
|
|
@@ -177,6 +177,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
177
177
|
}
|
|
178
178
|
};
|
|
179
179
|
const findMatchingScriptContent = (userInput) => {
|
|
180
|
+
console.log("findMatchingScriptContent", selectedScriptName.value);
|
|
180
181
|
if (!scripts || scripts.length === 0)
|
|
181
182
|
return null;
|
|
182
183
|
let currentScript = scripts.find((item) => item.name === selectedScriptName.value);
|
|
@@ -707,6 +708,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
707
708
|
renderContent(userMessage.content, "main", chatList.value.length - 1);
|
|
708
709
|
});
|
|
709
710
|
const result = findMatchingScriptContent(userInput);
|
|
711
|
+
console.log("result === handleSend", result);
|
|
710
712
|
if (result && result.responses.length > 0) {
|
|
711
713
|
currentScriptIndex.value = result.nextIndex;
|
|
712
714
|
const newAiMessages = [];
|