@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.
Files changed (46) hide show
  1. package/es/package.json.mjs +1 -1
  2. package/es/packages/components/index.mjs +1 -1
  3. package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs +1 -1
  4. package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs.map +1 -1
  5. package/es/packages/components/touchchat/component/ThoughtChain.vue.mjs +6 -0
  6. package/es/packages/components/touchchat/component/ThoughtChain.vue.mjs.map +1 -0
  7. package/es/packages/components/touchchat/component/ThoughtChain.vue2.mjs +37 -0
  8. package/es/packages/components/touchchat/component/ThoughtChain.vue2.mjs.map +1 -0
  9. package/es/packages/components/touchchat/index.mjs +3 -3
  10. package/es/packages/components/touchchat/index.mjs.map +1 -1
  11. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs +21 -21
  12. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs.map +1 -1
  13. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs +3 -3
  14. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs.map +1 -1
  15. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs +2 -0
  16. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs.map +1 -1
  17. package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs +3 -4
  18. package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs.map +1 -1
  19. package/es/packages/components/touchchat/src/index.vue2.mjs +3 -3
  20. package/es/packages/components/touchchat/src/index.vue2.mjs.map +1 -1
  21. package/global.d.ts +2 -2
  22. package/lib/package.json.js +1 -1
  23. package/lib/packages/components/index.js +2 -2
  24. package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js +1 -1
  25. package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js.map +1 -1
  26. package/lib/packages/components/touchchat/component/ThoughtChain.vue.js +10 -0
  27. package/lib/packages/components/touchchat/component/ThoughtChain.vue.js.map +1 -0
  28. package/lib/packages/components/touchchat/component/ThoughtChain.vue2.js +41 -0
  29. package/lib/packages/components/touchchat/component/ThoughtChain.vue2.js.map +1 -0
  30. package/lib/packages/components/touchchat/index.js +4 -4
  31. package/lib/packages/components/touchchat/index.js.map +1 -1
  32. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js +4 -4
  33. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js.map +1 -1
  34. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js +3 -3
  35. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js.map +1 -1
  36. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js +2 -0
  37. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js.map +1 -1
  38. package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js +2 -3
  39. package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js.map +1 -1
  40. package/lib/packages/components/touchchat/src/index.vue2.js +3 -3
  41. package/lib/packages/components/touchchat/src/index.vue2.js.map +1 -1
  42. package/package.json +1 -1
  43. package/theme/components/index.css +68 -2
  44. package/theme/index.css +68 -2
  45. package/theme/skin/default.css +68 -2
  46. package/types/global.d.ts +2 -2
@@ -1,5 +1,5 @@
1
1
  var name = "@touchvue/chat";
2
- var version = "1.0.0-beta.5";
2
+ var version = "1.0.0-beta.7";
3
3
  var description = "TouchVue UI Component Library";
4
4
  var main = "lib/index.js";
5
5
  var module = "es/index.mjs";
@@ -1,3 +1,3 @@
1
- export { ToTouchChat, ToTouchLetter } from './touchchat/index.mjs';
1
+ export { Touchchat, Touchletter } from './touchchat/index.mjs';
2
2
  export { TouchVueResolver } from './resolver.mjs';
3
3
  //# sourceMappingURL=index.mjs.map
@@ -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: "ToTouchLetter" });
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: 'ToTouchLetter' });\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,MAA6B,WAAA,GAAAA,eAAA,CAAmB,EAAE,IAAA,EAAM,iBAAiB,CAAA,CAAA;;;;;;;;AAiBzE,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;;;;;;;;;"}
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,6 @@
1
+ import _sfc_main from './ThoughtChain.vue2.mjs';
2
+
3
+
4
+
5
+ export { _sfc_main as default };
6
+ //# sourceMappingURL=ThoughtChain.vue.mjs.map
@@ -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 ToTouchChat = withInstall(_sfc_main);
6
- const ToTouchLetter = withInstall(_sfc_main$1);
5
+ const Touchchat = withInstall(_sfc_main);
6
+ const Touchletter = withInstall(_sfc_main$1);
7
7
 
8
- export { ToTouchChat, ToTouchLetter };
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 TouchChat from './src/index.vue'\nimport TouchLetter from '../touchchat/component/AiRobot/letter.vue'\n\nimport { SFCWithInstall, withInstall } from '@touchvue/utils'\n\nexport const ToTouchChat: SFCWithInstall<typeof TouchChat> = withInstall(TouchChat)\nexport const ToTouchLetter: SFCWithInstall<typeof TouchLetter> = withInstall(TouchLetter)\n\nexport * from './src/index.vue'\nexport * from '../touchchat/component/AiRobot/letter.vue'\n"],"names":["TouchChat","TouchLetter"],"mappings":";;;;AAKa,MAAA,WAAA,GAAgD,YAAYA,SAAS,EAAA;AACrE,MAAA,aAAA,GAAoD,YAAYC,WAAW;;;;"}
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, withDirectives, vShow, createBlock, resolveDynamicComponent } from 'vue';
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$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';
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$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
+ 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
- withDirectives(createElementVNode("div", {
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$1, {
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$2, {
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 isThinking = inject("isThinking", false);
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(isThinking) ? "touchchat-edit-submit is-thinkable" : "touchchat-edit-submit")
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(isThinking) ? (openBlock(), createElementBlock("button", {
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=\"isThinking ? '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=\"isThinking\" 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 isThinking = inject('isThinking', 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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"}
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 = [];