@touchvue/chat 1.0.0-beta.13 → 1.0.0-beta.14
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/component/ImageFile.vue2.mjs +19 -4
- package/es/packages/components/touchchat/component/ImageFile.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs +5 -2
- package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs +44 -7
- package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs.map +1 -1
- package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs.map +1 -1
- package/lib/package.json.js +1 -1
- package/lib/packages/components/touchchat/component/ImageFile.vue2.js +18 -3
- package/lib/packages/components/touchchat/component/ImageFile.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js +5 -2
- package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js +44 -7
- package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js.map +1 -1
- package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js.map +1 -1
- package/package.json +1 -1
- package/theme/components/index.css +20 -0
- package/theme/index.css +20 -0
- package/theme/skin/default.css +20 -0
package/es/package.json.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, ref, computed, watch, openBlock, createElementBlock, createElementVNode, createCommentVNode, toDisplayString } from 'vue';
|
|
1
|
+
import { defineComponent, ref, computed, watch, openBlock, createElementBlock, createElementVNode, createCommentVNode, toDisplayString, withDirectives, vShow } from 'vue';
|
|
2
2
|
|
|
3
3
|
var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
4
4
|
__name: "ImageFile",
|
|
@@ -16,6 +16,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
16
16
|
var _a;
|
|
17
17
|
return (_a = props.item.uploadProgress) != null ? _a : 0;
|
|
18
18
|
});
|
|
19
|
+
const showPreview = ref(false);
|
|
19
20
|
watch(progress, (newVal) => {
|
|
20
21
|
if (newVal === 100 || newVal === 0) {
|
|
21
22
|
showLoading.value = false;
|
|
@@ -24,13 +25,14 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
24
25
|
}
|
|
25
26
|
});
|
|
26
27
|
return (_ctx, _cache) => {
|
|
27
|
-
var _a;
|
|
28
|
+
var _a, _b;
|
|
28
29
|
return openBlock(), createElementBlock("div", { class: "image-file" }, [
|
|
29
30
|
createElementVNode("div", { class: "image-file-content" }, [
|
|
30
31
|
createElementVNode("img", {
|
|
31
32
|
src: (_a = _ctx.item.base64) != null ? _a : "../img/link.png",
|
|
32
|
-
alt: "\u56FE\u7247"
|
|
33
|
-
|
|
33
|
+
alt: "\u56FE\u7247",
|
|
34
|
+
onClick: ($event) => showPreview.value = true
|
|
35
|
+
}, null, 8, ["src", "onClick"]),
|
|
34
36
|
!(showLoading.value || showError.value) && _ctx.hasColse ? (openBlock(), createElementBlock("div", {
|
|
35
37
|
key: 0,
|
|
36
38
|
class: "image-file-colse",
|
|
@@ -130,6 +132,19 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
130
132
|
])),
|
|
131
133
|
createElementVNode("p", { class: "img-file-error" }, "\u9519\u8BEF")
|
|
132
134
|
])) : createCommentVNode("v-if", true)
|
|
135
|
+
]),
|
|
136
|
+
withDirectives(createElementVNode("div", {
|
|
137
|
+
class: "image-preview-modal",
|
|
138
|
+
onClick: ($event) => showPreview.value = false
|
|
139
|
+
}, [
|
|
140
|
+
createElementVNode("div", { class: "image-preview-content" }, [
|
|
141
|
+
createElementVNode("img", {
|
|
142
|
+
src: (_b = _ctx.item.base64) != null ? _b : "../img/link.png",
|
|
143
|
+
alt: "\u9884\u89C8\u56FE\u7247"
|
|
144
|
+
}, null, 8, ["src"])
|
|
145
|
+
])
|
|
146
|
+
], 8, ["onClick"]), [
|
|
147
|
+
[vShow, showPreview.value]
|
|
133
148
|
])
|
|
134
149
|
]);
|
|
135
150
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageFile.vue2.mjs","sources":["../../../../../../packages/components/touchchat/component/ImageFile.vue"],"sourcesContent":["<template>\n\t<div class=\"image-file\">\n\t\t<div class=\"image-file-content\">\n\t\t\t<img :src=\"item.base64 ?? '../img/link.png'\" alt=\"图片\" />\n\t\t\t<div v-if=\"!(showLoading || showError) && hasColse\" class=\"image-file-colse\" @click=\"emits('colse', item.id)\">\n\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"5\" height=\"6\" viewBox=\"0 0 5 6\" fill=\"none\">\n\t\t\t\t\t<path d=\"M4.42492 5.31718L4.97489 4.76721L3.05002 2.84233L4.97493 0.917422L4.42496 0.36745L2.50005 2.29236L0.575118 0.367432L0.0251465 0.917403L1.95008 2.84233L0.0251875 4.76722L0.575159 5.3172L2.50005 3.39231L4.42492 5.31718Z\" fill=\"white\" />\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t\t<div v-if=\"showLoading\" class=\"img-file-loading\">\n\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\">\n\t\t\t\t\t<g clip-path=\"url(#paint0_angular_2715_440_clip_path)\" data-figma-skip-parse=\"true\">\n\t\t\t\t\t\t<g transform=\"matrix(0.0100142 0.00182077 -0.00182077 0.0100142 12 12.8423)\">\n\t\t\t\t\t\t\t<foreignObject x=\"-1427.97\" y=\"-1427.97\" width=\"2855.94\" height=\"2855.94\">\n\t\t\t\t\t\t\t\t<div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"background: conic-gradient(from 90deg, rgba(255, 255, 255, 1) 0deg, rgba(255, 255, 255, 0) 84.375deg, rgba(255, 255, 255, 1) 360deg); height: 100%; width: 100%; opacity: 1\"></div>\n\t\t\t\t\t\t\t</foreignObject>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t</g>\n\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 5.54499C7.96981 5.54499 4.7027 8.8121 4.7027 12.8423C4.7027 16.8725 7.96981 20.1396 12 20.1396C12.7463 20.1396 13.3514 20.7446 13.3514 21.4909C13.3514 22.2373 12.7463 22.8423 12 22.8423C6.47715 22.8423 2 18.3651 2 12.8423C2 7.31944 6.47715 2.84229 12 2.84229C17.5228 2.84229 22 7.31944 22 12.8423C22 13.5886 21.395 14.1936 20.6486 14.1936C19.9023 14.1936 19.2973 13.5886 19.2973 12.8423C19.2973 8.8121 16.0302 5.54499 12 5.54499Z\" 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\":1.0,\"g\":1.0,\"b\":1.0,\"a\":1.0},\"position\":1.0}],\"stopsVar\":[],\"transform\":{\"m00\":20.028446197509766,\"m01\":-3.6415407657623291,\"m02\":3.8065481185913086,\"m10\":3.6415374279022217,\"m11\":20.028463363647461,\"m12\":1.0072842836380005},\"opacity\":1.0,\"blendMode\":\"NORMAL\",\"visible\":true}' />\n\t\t\t\t\t<defs>\n\t\t\t\t\t\t<clipPath id=\"paint0_angular_2715_440_clip_path\">\n\t\t\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 5.54499C7.96981 5.54499 4.7027 8.8121 4.7027 12.8423C4.7027 16.8725 7.96981 20.1396 12 20.1396C12.7463 20.1396 13.3514 20.7446 13.3514 21.4909C13.3514 22.2373 12.7463 22.8423 12 22.8423C6.47715 22.8423 2 18.3651 2 12.8423C2 7.31944 6.47715 2.84229 12 2.84229C17.5228 2.84229 22 7.31944 22 12.8423C22 13.5886 21.395 14.1936 20.6486 14.1936C19.9023 14.1936 19.2973 13.5886 19.2973 12.8423C19.2973 8.8121 16.0302 5.54499 12 5.54499Z\" />\n\t\t\t\t\t\t</clipPath>\n\t\t\t\t\t</defs>\n\t\t\t\t</svg>\n\t\t\t\t<p class=\"img-file-title\">{{ progress }}%</p>\n\t\t\t</div>\n\t\t\t<div v-if=\"showError\" class=\"img-file-loading\">\n\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"13\" viewBox=\"0 0 14 13\" fill=\"none\">\n\t\t\t\t\t<path d=\"M10.8891 10.7314C9.89379 11.7267 8.51879 12.3423 7 12.3423C3.96244 12.3423 1.5 9.87984 1.5 6.84229C1.5 3.80473 3.96244 1.34229 7 1.34229C8.51879 1.34229 9.89379 1.95789 10.8891 2.9532C11.3957 3.45982 12.5 4.7034 12.5 4.7034\" stroke=\"#F93920\" stroke-width=\"1.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n\t\t\t\t\t<path d=\"M12.5 1.95374V4.70374H9.75\" stroke=\"#F93920\" stroke-width=\"1.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n\t\t\t\t</svg>\n\t\t\t\t<p class=\"img-file-error\">错误</p>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n<script setup lang=\"ts\">\nimport { ref, watch, defineProps, computed, defineEmits } from 'vue'\nconst props = defineProps<{\n\titem: {\n\t\tfile?: File\n\t\tisUploading: boolean\n\t\tuploadProgress: number\n\t\tuploadSuccess: boolean\n\t\tuploadError: boolean\n\t\tfileSize: string\n\t\tfileType: string\n\t\tname: string\n\t\tid: string\n\t\tbase64?: string\n\t}\n\thasColse: boolean\n}>()\nconst emits = defineEmits(['colse'])\nconst showLoading = ref(false)\nconst showError = ref(false)\nconst progress = computed(() => {\n\treturn props.item.uploadProgress ?? 0\n})\n\nwatch(progress, newVal => {\n\tif (newVal === 100 || newVal === 0) {\n\t\tshowLoading.value = false\n\t} else {\n\t\tshowLoading.value = true\n\t}\n})\n</script>\n"],"names":["_createElementBlock","_createElementVNode","item","hasColse","_toDisplayString"],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ImageFile.vue2.mjs","sources":["../../../../../../packages/components/touchchat/component/ImageFile.vue"],"sourcesContent":["<template>\n\t<div class=\"image-file\">\n\t\t<div class=\"image-file-content\">\n\t\t\t<img :src=\"item.base64 ?? '../img/link.png'\" alt=\"图片\" @click=\"showPreview = true\" />\n\t\t\t<div v-if=\"!(showLoading || showError) && hasColse\" class=\"image-file-colse\" @click=\"emits('colse', item.id)\">\n\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"5\" height=\"6\" viewBox=\"0 0 5 6\" fill=\"none\">\n\t\t\t\t\t<path d=\"M4.42492 5.31718L4.97489 4.76721L3.05002 2.84233L4.97493 0.917422L4.42496 0.36745L2.50005 2.29236L0.575118 0.367432L0.0251465 0.917403L1.95008 2.84233L0.0251875 4.76722L0.575159 5.3172L2.50005 3.39231L4.42492 5.31718Z\" fill=\"white\" />\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t\t<div v-if=\"showLoading\" class=\"img-file-loading\">\n\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\">\n\t\t\t\t\t<g clip-path=\"url(#paint0_angular_2715_440_clip_path)\" data-figma-skip-parse=\"true\">\n\t\t\t\t\t\t<g transform=\"matrix(0.0100142 0.00182077 -0.00182077 0.0100142 12 12.8423)\">\n\t\t\t\t\t\t\t<foreignObject x=\"-1427.97\" y=\"-1427.97\" width=\"2855.94\" height=\"2855.94\">\n\t\t\t\t\t\t\t\t<div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"background: conic-gradient(from 90deg, rgba(255, 255, 255, 1) 0deg, rgba(255, 255, 255, 0) 84.375deg, rgba(255, 255, 255, 1) 360deg); height: 100%; width: 100%; opacity: 1\"></div>\n\t\t\t\t\t\t\t</foreignObject>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t</g>\n\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 5.54499C7.96981 5.54499 4.7027 8.8121 4.7027 12.8423C4.7027 16.8725 7.96981 20.1396 12 20.1396C12.7463 20.1396 13.3514 20.7446 13.3514 21.4909C13.3514 22.2373 12.7463 22.8423 12 22.8423C6.47715 22.8423 2 18.3651 2 12.8423C2 7.31944 6.47715 2.84229 12 2.84229C17.5228 2.84229 22 7.31944 22 12.8423C22 13.5886 21.395 14.1936 20.6486 14.1936C19.9023 14.1936 19.2973 13.5886 19.2973 12.8423C19.2973 8.8121 16.0302 5.54499 12 5.54499Z\" 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\":1.0,\"g\":1.0,\"b\":1.0,\"a\":1.0},\"position\":1.0}],\"stopsVar\":[],\"transform\":{\"m00\":20.028446197509766,\"m01\":-3.6415407657623291,\"m02\":3.8065481185913086,\"m10\":3.6415374279022217,\"m11\":20.028463363647461,\"m12\":1.0072842836380005},\"opacity\":1.0,\"blendMode\":\"NORMAL\",\"visible\":true}' />\n\t\t\t\t\t<defs>\n\t\t\t\t\t\t<clipPath id=\"paint0_angular_2715_440_clip_path\">\n\t\t\t\t\t\t\t<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 5.54499C7.96981 5.54499 4.7027 8.8121 4.7027 12.8423C4.7027 16.8725 7.96981 20.1396 12 20.1396C12.7463 20.1396 13.3514 20.7446 13.3514 21.4909C13.3514 22.2373 12.7463 22.8423 12 22.8423C6.47715 22.8423 2 18.3651 2 12.8423C2 7.31944 6.47715 2.84229 12 2.84229C17.5228 2.84229 22 7.31944 22 12.8423C22 13.5886 21.395 14.1936 20.6486 14.1936C19.9023 14.1936 19.2973 13.5886 19.2973 12.8423C19.2973 8.8121 16.0302 5.54499 12 5.54499Z\" />\n\t\t\t\t\t\t</clipPath>\n\t\t\t\t\t</defs>\n\t\t\t\t</svg>\n\t\t\t\t<p class=\"img-file-title\">{{ progress }}%</p>\n\t\t\t</div>\n\t\t\t<div v-if=\"showError\" class=\"img-file-loading\">\n\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"13\" viewBox=\"0 0 14 13\" fill=\"none\">\n\t\t\t\t\t<path d=\"M10.8891 10.7314C9.89379 11.7267 8.51879 12.3423 7 12.3423C3.96244 12.3423 1.5 9.87984 1.5 6.84229C1.5 3.80473 3.96244 1.34229 7 1.34229C8.51879 1.34229 9.89379 1.95789 10.8891 2.9532C11.3957 3.45982 12.5 4.7034 12.5 4.7034\" stroke=\"#F93920\" stroke-width=\"1.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n\t\t\t\t\t<path d=\"M12.5 1.95374V4.70374H9.75\" stroke=\"#F93920\" stroke-width=\"1.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n\t\t\t\t</svg>\n\t\t\t\t<p class=\"img-file-error\">错误</p>\n\t\t\t</div>\n\t\t</div>\n\t\t<div v-show=\"showPreview\" class=\"image-preview-modal\" @click=\"showPreview = false\">\n\t\t\t<div class=\"image-preview-content\">\n\t\t\t\t<img :src=\"item.base64 ?? '../img/link.png'\" alt=\"预览图片\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n<script setup lang=\"ts\">\nimport { ref, watch, defineProps, computed, defineEmits } from 'vue'\nconst props = defineProps<{\n\titem: {\n\t\tfile?: File\n\t\tisUploading: boolean\n\t\tuploadProgress: number\n\t\tuploadSuccess: boolean\n\t\tuploadError: boolean\n\t\tfileSize: string\n\t\tfileType: string\n\t\tname: string\n\t\tid: string\n\t\tbase64?: string\n\t}\n\thasColse: boolean\n}>()\nconst emits = defineEmits(['colse'])\nconst showLoading = ref(false)\nconst showError = ref(false)\nconst progress = computed(() => {\n\treturn props.item.uploadProgress ?? 0\n})\nconst showPreview = ref(false)\n\nwatch(progress, newVal => {\n\tif (newVal === 100 || newVal === 0) {\n\t\tshowLoading.value = false\n\t} else {\n\t\tshowLoading.value = true\n\t}\n})\n</script>\n"],"names":["_createElementBlock","_createElementVNode","item","hasColse","_toDisplayString"],"mappings":"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"}
|
|
@@ -123,7 +123,9 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
123
123
|
if (finallyModules.value.length > 0) {
|
|
124
124
|
selectVal.value = finallyModules.value[0].name;
|
|
125
125
|
selectInfo.value = finallyModules.value[0];
|
|
126
|
-
|
|
126
|
+
if (selectInfo.value) {
|
|
127
|
+
emits("moduleInfo", selectInfo.value);
|
|
128
|
+
}
|
|
127
129
|
}
|
|
128
130
|
});
|
|
129
131
|
return (_ctx, _cache) => {
|
|
@@ -136,12 +138,13 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
136
138
|
onColse: handleColse
|
|
137
139
|
}, null, 8, ["file-list"]),
|
|
138
140
|
createElementVNode("div", { class: "touchchat-edit-input" }, [
|
|
141
|
+
createCommentVNode(' @paste="handlePaste" '),
|
|
139
142
|
createElementVNode("textarea", {
|
|
140
143
|
value: _ctx.inputValue,
|
|
141
144
|
placeholder: (_a = unref(placeholder)) != null ? _a : "\u8BF7\u8F93\u5165...",
|
|
142
145
|
onInput: handleInputChange,
|
|
143
146
|
onKeyup: withKeys(handleSend, ["enter"])
|
|
144
|
-
},
|
|
147
|
+
}, " ", 40, ["value", "placeholder"])
|
|
145
148
|
]),
|
|
146
149
|
createCommentVNode(" \u6309\u94AE\u4E0E\u5F00\u5173\u5BB9\u5668 "),
|
|
147
150
|
createElementVNode(
|
|
@@ -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<!-- :file-progress=\"fileProgress\" -->\n\t\t<FileContent :file-list=\"fileList\" :has-colse=\"true\" @colse=\"handleColse\" />\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<!-- 附件 @click=\"showMarkLaryer = true\" @progress-fn=\"progressFn\" -->\n\t\t\t\t<upload-view v-if=\"uploadAble\" ref=\"uploadViewRef\" @file=\"updateFile\">\n\t\t\t\t\t<button v-if=\"uploadAble\" class=\"touchchat-edit-attach\" :class=\"{ 'is-dis': isChating }\">\n\t\t\t\t\t\t<div class=\"touchchat-edit-attach-icon\"></div>\n\t\t\t\t\t\t<div class=\"touchchat-edit-attach-tip\">\n\t\t\t\t\t\t\t<p>文件数量:最多10个</p>\n\t\t\t\t\t\t\t<p>文件类型:pdf,txt,csv,docx,xlsx,xls,pptx,ppt,md,mobi,epub,png,jpeg,jpg</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</button>\n\t\t\t\t</upload-view>\n\n\t\t\t\t<select v-if=\"finallyModules.length > 1\" id=\"deepseek\" v-model=\"selectVal\" name=\"deepseek\">\n\t\t\t\t\t<option v-for=\"dpItem in finallyModules\" :key=\"dpItem.name\" :value=\"dpItem.name\">{{ dpItem.name }}</option>\n\t\t\t\t</select>\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() && !fileList.length\" @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\t<MarkLayer :show-mark-laryer=\"showMarkLaryer\" @colse-mark-layer=\"showMarkLaryer = false\" />\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, inject, nextTick, computed, watch, onMounted } from 'vue'\nimport MarkLayer from '../../component/MarkLayer.vue'\nimport FileContent from '../../component/FileContent.vue'\nimport UploadView from '../../component/UploadView.vue'\n\ninterface FileItem {\n\tfile?: File\n\tisUploading: boolean\n\tuploadProgress: number\n\tuploadSuccess: boolean\n\tuploadError: boolean\n\tfileSize: string\n\tfileType: string\n\tname: string\n\tid: string\n}\n\n// 定义 body 返回值的类型\ninterface BodyConfig {\n\tmodel: string\n\tmessages: Array<{\n\t\trole: string\n\t\tcontent: string\n\t}>\n\tstream: boolean\n}\n\n// 定义 respoKey 返回值的类型\ninterface RespoKeyConfig {\n\tcategory: string\n\tcontentCategory: string\n\tcontent: string\n\tall: string\n\tallCategory: string\n}\n\ninterface ModuleItem {\n\tname: string\n\tconfig: {\n\t\taction: string\n\t\theaders: () => object\n\t\tbody: () => BodyConfig // 修改为具体类型\n\t\trespoKey: () => RespoKeyConfig // 修改为具体类型\n\t}\n}\n\nconst props = defineProps<{\n\tinputValue: string\n\tisChating: boolean\n\tenableDeepThinking: boolean\n}>()\n\nconst placeholder = inject('placeholder', '请输入...')\nconst layout = inject<string>('layout', 'side, think, upload, chain')\nconst modules = inject<(string | ModuleItem)[]>('modules', [])\nconst thinkAble = layout.includes('think')\nconst uploadAble = layout.includes('upload')\nconst showMarkLaryer = ref<boolean>(false)\nconst fileList = ref<FileItem[]>([])\n// const fileData = ref<FileItem[]>([])\nconst optionalModules = ref<ModuleItem[]>([\n\t{\n\t\tname: 'deepseek-v3',\n\t\tconfig: {\n\t\t\taction: 'https://api.apiyi.com/v1/chat/completions',\n\t\t\theaders: () => ({\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAuthorization: 'Bearer sk-fe9MtODvds8wpzz05f3417Fe3e9641C1926e6fC588425dEd'\n\t\t\t}),\n\t\t\tbody: () => ({\n\t\t\t\tmodel: 'deepseek-v3',\n\t\t\t\tmessages: [\n\t\t\t\t\t{\n\t\t\t\t\t\trole: 'user',\n\t\t\t\t\t\tcontent: props.inputValue // 使用传入的用户内容参数\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tstream: true\n\t\t\t}),\n\t\t\trespoKey: () => ({\n\t\t\t\tcategory: 'category',\n\t\t\t\tcontentCategory: 'task_stream_content',\n\t\t\t\tcontent: 'content',\n\t\t\t\tall: 'message',\n\t\t\t\tallCategory: 'answer'\n\t\t\t})\n\t\t}\n\t}\n])\nconst uploadViewRef = ref<InstanceType<typeof UploadView>>()\nconst selectVal = ref('')\nconst selectInfo = ref<ModuleItem>()\n\nconst emits = defineEmits<{\n\t(e: 'send', list: FileItem[]): void\n\t(e: 'stop'): void\n\t(e: 'update:enableDeepThinking', value: boolean): void\n\t(e: 'update:inputValue', value: string): void // 添加inputValue更新事件\n\t(e: 'moduleInfo', info: ModuleItem): void\n}>()\n\nwatch(\n\t() => selectVal.value,\n\t() => {\n\t\tif (finallyModules.value.length > 0) {\n\t\t\tselectInfo.value = finallyModules.value.find(item => item.name === selectVal.value)\n\t\t\tif (selectInfo.value) {\n\t\t\t\temits('moduleInfo', selectInfo.value)\n\t\t\t}\n\t\t}\n\t},\n\t{ deep: true }\n)\n\nconst finallyModules = computed(() => {\n\tif (!modules.length) {\n\t\treturn optionalModules.value\n\t}\n\treturn modules.flatMap(module => {\n\t\tif (typeof module === 'string') {\n\t\t\t// 若 module 是字符串,在 optionalModules 中查找 name 匹配的项\n\t\t\tconst matchedModule = optionalModules.value.find(optModule => optModule.name === module)\n\t\t\tif (matchedModule) {\n\t\t\t\t// 对匹配到的模块也更新 content 值\n\t\t\t\tconst updatedModule = { ...matchedModule }\n\t\t\t\tconst body = updatedModule.config.body()\n\t\t\t\tbody.messages[0].content = props.inputValue\n\t\t\t\tbody.model = props.enableDeepThinking ? 'deepseek-reasoner' : 'deepseek-v3'\n\t\t\t\tupdatedModule.config.body = () => body\n\t\t\t\treturn [updatedModule]\n\t\t\t}\n\t\t\treturn []\n\t\t} else {\n\t\t\tconst body = module.config.body()\n\t\t\tbody.messages[0].content = props.inputValue\n\t\t\tbody.model = props.enableDeepThinking ? 'deepseek-reasoner' : 'deepseek-v3'\n\t\t\t// 重新定义 body 方法,返回更新后的 body\n\t\t\tmodule.config.body = () => body\n\t\t\treturn [module]\n\t\t}\n\t})\n})\n\nconst handleColse = (id: string) => {\n\tconst index = fileList.value.findIndex(item => item.id === id)\n\tif (index !== -1) {\n\t\tfileList.value.splice(index, 1)\n\t}\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\t// enableDeepThinking.value ? 'deepseek-reasoner' : 'deepseek-v3'\n\temits('update:enableDeepThinking', !props.enableDeepThinking)\n}\n\nconst updateFile = (file: FileItem[]) => {\n\t// console.log('file === chat-input === 86', file)\n\tif (file.length > 0) {\n\t\t// fileList.value.map(item => {\n\t\t// \titem.uploadProgress = 0\n\t\t// })\n\t\tfileList.value = file\n\t\t// fileData.value = file\n\t}\n}\n\nconst handleSend = () => {\n\t// emits('send', fileData.value)\n\temits('send', fileList.value)\n\tnextTick(() => {\n\t\tfileList.value = []\n\t\tif (uploadViewRef.value) {\n\t\t\tuploadViewRef.value.resetFile()\n\t\t}\n\t})\n}\nconst handleStop = () => emits('stop')\nonMounted(() => {\n\tif (finallyModules.value.length > 0) {\n\t\tselectVal.value = finallyModules.value[0].name\n\t\tselectInfo.value = finallyModules.value[0]\n\t\temits('moduleInfo', selectInfo.value)\n\t}\n})\n</script>\n"],"names":["_createElementBlock","_createCommentVNode","_createVNode","_createElementVNode","inputValue","_unref","_createBlock","_normalizeClass","isChating","_Fragment","_renderList","_toDisplayString","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<!-- :file-progress=\"fileProgress\" -->\n\t\t<FileContent :file-list=\"fileList\" :has-colse=\"true\" @colse=\"handleColse\" />\n\t\t<div class=\"touchchat-edit-input\">\n\t\t\t<!-- @paste=\"handlePaste\" -->\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<!-- 附件 @click=\"showMarkLaryer = true\" @progress-fn=\"progressFn\" -->\n\t\t\t\t<upload-view v-if=\"uploadAble\" ref=\"uploadViewRef\" @file=\"updateFile\">\n\t\t\t\t\t<button v-if=\"uploadAble\" class=\"touchchat-edit-attach\" :class=\"{ 'is-dis': isChating }\">\n\t\t\t\t\t\t<div class=\"touchchat-edit-attach-icon\"></div>\n\t\t\t\t\t\t<div class=\"touchchat-edit-attach-tip\">\n\t\t\t\t\t\t\t<p>文件数量:最多10个</p>\n\t\t\t\t\t\t\t<p>文件类型:pdf,txt,csv,docx,xlsx,xls,pptx,ppt,md,mobi,epub,png,jpeg,jpg</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</button>\n\t\t\t\t</upload-view>\n\n\t\t\t\t<select v-if=\"finallyModules.length > 1\" id=\"deepseek\" v-model=\"selectVal\" name=\"deepseek\">\n\t\t\t\t\t<option v-for=\"dpItem in finallyModules\" :key=\"dpItem.name\" :value=\"dpItem.name\">{{ dpItem.name }}</option>\n\t\t\t\t</select>\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() && !fileList.length\" @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\t<MarkLayer :show-mark-laryer=\"showMarkLaryer\" @colse-mark-layer=\"showMarkLaryer = false\" />\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, inject, nextTick, computed, watch, onMounted } from 'vue'\nimport MarkLayer from '../../component/MarkLayer.vue'\nimport FileContent from '../../component/FileContent.vue'\nimport UploadView from '../../component/UploadView.vue'\n\ninterface FileItem {\n\tfile?: File\n\tisUploading: boolean\n\tuploadProgress: number\n\tuploadSuccess: boolean\n\tuploadError: boolean\n\tfileSize: string\n\tfileType: string\n\tname: string\n\tid: string\n}\n\n// 定义 body 返回值的类型\ninterface BodyConfig {\n\tmodel: string\n\tmessages: Array<{\n\t\trole: string\n\t\tcontent: string\n\t}>\n\tstream: boolean\n}\n\n// 定义 respoKey 返回值的类型\ninterface RespoKeyConfig {\n\tcategory: string\n\tcontentCategory: string\n\tcontent: string\n\tall: string\n\tallCategory: string\n}\n\ninterface ModuleItem {\n\tname: string\n\tconfig: {\n\t\taction: string\n\t\theaders: () => object\n\t\tbody: () => BodyConfig // 修改为具体类型\n\t\trespoKey: () => RespoKeyConfig // 修改为具体类型\n\t}\n}\n\nconst props = defineProps<{\n\tinputValue: string\n\tisChating: boolean\n\tenableDeepThinking: boolean\n}>()\n\nconst placeholder = inject('placeholder', '请输入...')\nconst layout = inject<string>('layout', 'side, think, upload, chain')\nconst modules = inject<(string | ModuleItem)[]>('modules', [])\nconst thinkAble = layout.includes('think')\nconst uploadAble = layout.includes('upload')\nconst showMarkLaryer = ref<boolean>(false)\nconst fileList = ref<FileItem[]>([])\n// const fileData = ref<FileItem[]>([])\nconst optionalModules = ref<ModuleItem[]>([\n\t{\n\t\tname: 'deepseek-v3',\n\t\tconfig: {\n\t\t\taction: 'https://api.apiyi.com/v1/chat/completions',\n\t\t\theaders: () => ({\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\tAuthorization: 'Bearer sk-fe9MtODvds8wpzz05f3417Fe3e9641C1926e6fC588425dEd'\n\t\t\t}),\n\t\t\tbody: () => ({\n\t\t\t\tmodel: 'deepseek-v3',\n\t\t\t\tmessages: [\n\t\t\t\t\t{\n\t\t\t\t\t\trole: 'user',\n\t\t\t\t\t\tcontent: props.inputValue // 使用传入的用户内容参数\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tstream: true\n\t\t\t}),\n\t\t\trespoKey: () => ({\n\t\t\t\tcategory: 'category',\n\t\t\t\tcontentCategory: 'task_stream_content',\n\t\t\t\tcontent: 'content',\n\t\t\t\tall: 'message',\n\t\t\t\tallCategory: 'answer'\n\t\t\t})\n\t\t}\n\t}\n])\nconst uploadViewRef = ref<InstanceType<typeof UploadView>>()\nconst selectVal = ref('')\nconst selectInfo = ref<ModuleItem>()\n\nconst emits = defineEmits<{\n\t(e: 'send', list: FileItem[]): void\n\t(e: 'stop'): void\n\t(e: 'update:enableDeepThinking', value: boolean): void\n\t(e: 'update:inputValue', value: string): void // 添加inputValue更新事件\n\t(e: 'moduleInfo', info: ModuleItem): void\n}>()\n\nwatch(\n\t() => selectVal.value,\n\t() => {\n\t\tif (finallyModules.value.length > 0) {\n\t\t\tselectInfo.value = finallyModules.value.find((item: any) => item.name === selectVal.value)\n\t\t\tif (selectInfo.value) {\n\t\t\t\temits('moduleInfo', selectInfo.value)\n\t\t\t}\n\t\t}\n\t},\n\t{ deep: true }\n)\n\nconst finallyModules = computed(() => {\n\tif (!modules.length) {\n\t\treturn optionalModules.value\n\t}\n\treturn modules.flatMap((module: any) => {\n\t\tif (typeof module === 'string') {\n\t\t\t// 若 module 是字符串,在 optionalModules 中查找 name 匹配的项\n\t\t\tconst matchedModule = optionalModules.value.find((optModule: any) => optModule.name === module)\n\t\t\tif (matchedModule) {\n\t\t\t\t// 对匹配到的模块也更新 content 值\n\t\t\t\tconst updatedModule = { ...matchedModule }\n\t\t\t\tconst body = updatedModule.config.body()\n\t\t\t\tbody.messages[0].content = props.inputValue\n\t\t\t\tbody.model = props.enableDeepThinking ? 'deepseek-reasoner' : 'deepseek-v3'\n\t\t\t\tupdatedModule.config.body = () => body\n\t\t\t\treturn [updatedModule]\n\t\t\t}\n\t\t\treturn []\n\t\t} else {\n\t\t\tconst body = module.config.body()\n\t\t\tbody.messages[0].content = props.inputValue\n\t\t\tbody.model = props.enableDeepThinking ? 'deepseek-reasoner' : 'deepseek-v3'\n\t\t\t// 重新定义 body 方法,返回更新后的 body\n\t\t\tmodule.config.body = () => body\n\t\t\treturn [module]\n\t\t}\n\t})\n})\n\n// const handlePaste = (event: any) => {\n// \t// 阻止默认粘贴行为(若需要自定义处理)\n// \t// event.preventDefault();\n\n// \tconst clipboardData = event.clipboardData || window.clipboardData\n// \tconst items = clipboardData.items\n\n// \tlet isImage = false\n// \tfor (let i = 0; i < items.length; i++) {\n// \t\tif (items[i].type.indexOf('image/') !== -1) {\n// \t\t\tisImage = true\n// \t\t\tbreak\n// \t\t}\n// \t}\n\n// \tif (isImage) {\n// \t\tconsole.log('检测到粘贴的是图片')\n// \t\t// 可在此处添加处理图片的逻辑,如读取图片文件、上传等\n// \t} else {\n// \t\tconsole.log('粘贴的不是图片')\n// \t}\n// }\n\nconst handleColse = (id: string) => {\n\tconst index = fileList.value.findIndex((item: any) => item.id === id)\n\tif (index !== -1) {\n\t\tfileList.value.splice(index, 1)\n\t}\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\t// enableDeepThinking.value ? 'deepseek-reasoner' : 'deepseek-v3'\n\temits('update:enableDeepThinking', !props.enableDeepThinking)\n}\n\nconst updateFile = (file: FileItem[]) => {\n\t// console.log('file === chat-input === 86', file)\n\tif (file.length > 0) {\n\t\t// fileList.value.map(item => {\n\t\t// \titem.uploadProgress = 0\n\t\t// })\n\t\tfileList.value = file\n\t\t// fileData.value = file\n\t}\n}\n\nconst handleSend = () => {\n\t// emits('send', fileData.value)\n\temits('send', fileList.value)\n\tnextTick(() => {\n\t\tfileList.value = []\n\t\tif (uploadViewRef.value) {\n\t\t\tuploadViewRef.value.resetFile()\n\t\t}\n\t})\n}\nconst handleStop = () => emits('stop')\nonMounted(() => {\n\tif (finallyModules.value.length > 0) {\n\t\tselectVal.value = finallyModules.value[0].name\n\t\tselectInfo.value = finallyModules.value[0]\n\t\tif (selectInfo.value) {\n\t\t\temits('moduleInfo', selectInfo.value)\n\t\t}\n\t}\n})\n</script>\n"],"names":["_createElementBlock","_createCommentVNode","_createVNode","_createElementVNode","inputValue","_unref","_createBlock","_normalizeClass","isChating","_Fragment","_renderList","_toDisplayString","enableDeepThinking"],"mappings":"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"}
|
|
@@ -897,17 +897,54 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
897
897
|
});
|
|
898
898
|
const handleMessageAction = (action, index) => {
|
|
899
899
|
const message = chatList.value[index];
|
|
900
|
+
console.log("message === 1100", message);
|
|
900
901
|
if (!message)
|
|
901
902
|
return;
|
|
902
903
|
switch (action) {
|
|
903
|
-
case MessageAction.COPY:
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
904
|
+
case MessageAction.COPY: {
|
|
905
|
+
const textContent = message.content;
|
|
906
|
+
const imgContent = message.files;
|
|
907
|
+
const imgElements = new DOMParser().parseFromString(imgContent, "text/html").querySelectorAll("img");
|
|
908
|
+
if (imgElements.length > 0) {
|
|
909
|
+
const imagePromises = Array.from(imgElements).map(async (img) => {
|
|
910
|
+
const src = img.getAttribute("src");
|
|
911
|
+
if (!src)
|
|
912
|
+
return null;
|
|
913
|
+
try {
|
|
914
|
+
const response = await fetch(src);
|
|
915
|
+
const blob = await response.blob();
|
|
916
|
+
return new ClipboardItem({ [blob.type]: blob });
|
|
917
|
+
} catch (error) {
|
|
918
|
+
console.error("\u83B7\u53D6\u56FE\u7247\u5931\u8D25:", error);
|
|
919
|
+
return null;
|
|
920
|
+
}
|
|
921
|
+
});
|
|
922
|
+
Promise.all(imagePromises).then((clipboardItems) => {
|
|
923
|
+
const validItems = clipboardItems.filter((item) => item !== null);
|
|
924
|
+
if (textContent.trim()) {
|
|
925
|
+
const textItem = new ClipboardItem({ "text/plain": new Blob([textContent], { type: "text/plain" }) });
|
|
926
|
+
validItems.unshift(textItem);
|
|
927
|
+
}
|
|
928
|
+
if (validItems.length > 0) {
|
|
929
|
+
return navigator.clipboard.write(validItems);
|
|
930
|
+
}
|
|
931
|
+
return Promise.reject(new Error("\u6CA1\u6709\u53EF\u590D\u5236\u7684\u5185\u5BB9"));
|
|
932
|
+
}).then(() => {
|
|
933
|
+
showToast("\u590D\u5236\u6210\u529F", "info");
|
|
934
|
+
}).catch((err) => {
|
|
935
|
+
console.error("\u590D\u5236\u5931\u8D25:", err);
|
|
936
|
+
showToast("\u590D\u5236\u5931\u8D25", "error");
|
|
937
|
+
});
|
|
938
|
+
} else {
|
|
939
|
+
navigator.clipboard.writeText(textContent).then(() => {
|
|
940
|
+
showToast("\u590D\u5236\u6210\u529F", "info");
|
|
941
|
+
}).catch((err) => {
|
|
942
|
+
console.error("\u590D\u5236\u5931\u8D25:", err);
|
|
943
|
+
showToast("\u590D\u5236\u5931\u8D25", "error");
|
|
944
|
+
});
|
|
945
|
+
}
|
|
910
946
|
break;
|
|
947
|
+
}
|
|
911
948
|
case MessageAction.EDIT:
|
|
912
949
|
message.isEditing = true;
|
|
913
950
|
message.editContent = message.content;
|