@touchvue/chat 1.0.0-beta.35 → 1.0.0-beta.37

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.
@@ -182,6 +182,14 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
182
182
  update: (index, message) => {
183
183
  var _a;
184
184
  (_a = deepSeekRef.value) == null ? void 0 : _a.update(index, message);
185
+ },
186
+ changeChat: (index) => {
187
+ var _a;
188
+ (_a = deepSeekRef.value) == null ? void 0 : _a.changeChat(index);
189
+ },
190
+ clearChat: () => {
191
+ var _a;
192
+ (_a = deepSeekRef.value) == null ? void 0 : _a.clearChat();
185
193
  }
186
194
  });
187
195
  return (_ctx, _cache) => {
@@ -189,7 +197,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
189
197
  Fragment,
190
198
  null,
191
199
  [
192
- createCommentVNode(" <div>1.0.0-beta.2026031001</div> "),
200
+ createCommentVNode(" <div>1.0.0-beta.2026031202</div> "),
193
201
  createVNode(DeepSeek, {
194
202
  ref_key: "deepSeekRef",
195
203
  ref: deepSeekRef,
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue2.mjs","sources":["../../../../../../packages/components/touchchat/src/index.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({ name: 'Touchchat' });\n</script>\n<template>\n\t<!-- <div>1.0.0-beta.2026031001</div> -->\n\t<DeepSeek ref=\"deepSeekRef\" :style=\"elementStyle\" :class=\"elementClass\">\n\t\t<!-- msg -->\n\t\t<template #aimsg=\"{ item, index }\">\n\t\t\t<slot name=\"aimsg\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<template #msg=\"{ item, index }\">\n\t\t\t<slot name=\"msg\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<template #aiAvatar>\n\t\t\t<slot name=\"aiAvatar\" />\n\t\t</template>\n\t\t<template #userAvatar>\n\t\t\t<slot name=\"userAvatar\" />\n\t\t</template>\n\t\t<template #welcome>\n\t\t\t<slot name=\"welcome\" />\n\t\t</template>\n\t\t<!-- edit -->\n\t\t<template #edit>\n\t\t\t<slot name=\"edit\" />\n\t\t</template>\n\t\t<!-- top -->\n\t\t<template #top>\n\t\t\t<slot name=\"top\" />\n\t\t</template>\n\t\t<template #shortcut>\n\t\t\t<slot name=\"shortcut\" />\n\t\t</template>\n\t\t<!-- extend -->\n\t\t<template #extend=\"{ item, index }\">\n\t\t\t<slot name=\"extend\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<!-- fn -->\n\t\t<template #fn=\"{ item, index }\">\n\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<template #extendsFn=\"{ item, index }\">\n\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t</DeepSeek>\n</template>\n<script setup lang=\"ts\">\nimport { ChatMessage, ModuleItem } from './AiChat/TouchChat.vue'\nimport type { AgentConfig, SubAgent } from '../src/types/a2a'\nimport DeepSeek from './AiChat/TouchHistory.vue'\nimport { provide, ref, computed, watch } from 'vue'\n\n\n\nconst emits = defineEmits<{\n\t(e: 'send', value: string, fileList?: any[]): void\n\t(e: 'afterSend', result: any): void\n\t(e: 'like', index: number, isLike: boolean): void\n\t(e: 'dislike', index: number, isDislike: boolean): void\n\t(e: 'side-bottom'): void\n\t(e: 'change', id: string): void\n\t(e: 'historyRemove', id: string): void\n\t(e: 'remove', item: ChatMessage, index: number): void\n\t(e: 'bottom'): void\n\t(e: 'stop', item: ChatMessage, index: number): void\n\t(e: 'modelChange', item: ModuleItem, index: number): void\n}>()\n\nconst sendVal = ref('')\n\ninterface ScriptItem {\n\tid?: string\n\tname: string\n\tsubTitle?: string\n\tcontent: Array<{\n\t\tuser: string\n\t\tdata?: string\n\t\talias?: string[]\n\t\ttype?: string\n\t}>\n}\n\ninterface HistoryItem {\n\tid?: string\n\ttime?: string\n\ttitle?: string\n}\n\ninterface MessageItem {\n\tchatId: string\n\tuser: string\n\ttype: string\n\tcontent: string\n\t[props: string]: any\n}\n\n// interface ModuleItem {\n// \tname: string\n// \tconfig: {\n// \t\taction: string\n// \t\theaders: () => object\n// \t\tbody: () => object\n// \t\trespoKey: () => object\n// \t}\n// }\ntype Modules = (string | ModuleItem)[]\ntype ResultArray = AgentConfig[] | SubAgent[]\n\nconst props = withDefaults(\n\tdefineProps<{\n\t\tmode?: string\n\t\tscripts?: ScriptItem[]\n\t\twidth?: number | string\n\t\theight?: number | string\n\t\tcomponents?: { [key: string]: any } // components\n\t\tavatar?: boolean // avatar\n\t\tplaceholder?: string\n\t\tunmatchText?: string // unmatchText\n\t\ttitle?: string\n\t\tlayout?: string // layout=\"side, think, upload, chain,realtime\"\n\t\tbeforeSend?: () => { result: boolean; componentName?: string }\n\t\thistoryList?: HistoryItem[] // historyList\n\t\thistoryDetail?: MessageItem[] // historyDetail\n\t\tagents?: {\n\t\t\tid: string\n\t\t\tname: string\n\t\t\tintro: string\n\t\t}[] // agents\n\t\tmodules?: Modules // modules\n\t\tspeed?: number // speed\n\t\tallowedTypes?: string[] // allowedTypes\n\t\tisAgent?: boolean // isAgent 是否是智能体\n\t\tagentConfigList?: ResultArray // agentConfigList 智能体配置列表\n\t}>(),\n\t{\n\t\tmode: '',\n\t\tscripts: () => [],\n\t\twidth: '',\n\t\theight: '',\n\t\tcomponents: () => ({}),\n\t\tavatar: true,\n\t\tplaceholder: 'hi,我是touchchat,快来和我聊天吧~',\n\t\tunmatchText: '您的消息未匹配到任何内容',\n\t\ttitle: 'TouchChat',\n\t\tlayout: 'side, clear, think, upload, screen, voice,realtime', //chain 思考链\n\t\t// side 侧边栏(历史记录),think 深度思考,upload 上传文件,chain 思考链\n\t\tbeforeSend: () => ({ result: true, componentName: '' }),\n\t\thistoryList: () => [],\n\t\thistoryDetail: () => [],\n\t\tagents: () => [],\n\t\tmodules: () => [],\n\t\tspeed: 10,\n\t\tallowedTypes: () => [],\n\t\tisAgent: false, // isAgent 是否是智能体\n\t\tagentConfigList: () => []\n\t}\n)\n\nprovide('components', props.components)\nprovide('avatar', props.avatar)\nprovide('placeholder', props.placeholder)\nprovide('unmatchText', props.unmatchText)\nprovide('title', props.title)\nprovide('layout', props.layout)\nprovide('beforeSend', props.beforeSend)\nprovide('scripts', props.scripts)\nprovide('speed', props.speed)\nprovide('allowedTypes', props.allowedTypes)\nconst historyListComputed = computed(() => props.historyList)\nconst providedHistoryList = ref(props.historyList)\nwatch(\n\thistoryListComputed,\n\tnewVal => {\n\t\tprovidedHistoryList.value = newVal\n\t},\n\t{ immediate: true }\n)\nprovide('historyList', providedHistoryList)\nconst historyDetailComputed = computed(() => props.historyDetail)\nconst providedHistoryDetail = ref(props.historyDetail)\nwatch(\n\thistoryDetailComputed,\n\tnewVal => {\n\t\tprovidedHistoryDetail.value = newVal\n\t},\n\t{ immediate: true }\n)\nprovide('historyDetail', providedHistoryDetail)\nprovide('agents', props.agents)\nconst iModules = ref(props.modules)\nwatch(\n\t() => props.modules,\n\tnewVal => {\n\t\tiModules.value = newVal\n\t\tconsole.log('modules === index.vue === 191', newVal)\n\t},\n\t{ immediate: true }\n)\nprovide('modules', iModules)\n\nconst iIsAgent = ref(props.isAgent)\nwatch(\n\t() => props.isAgent,\n\tnewVal => {\n\t\tiIsAgent.value = newVal\n\t},\n\t{ immediate: true }\n)\nprovide('isAgent', iIsAgent)\n\nconst iAgentConfigList = ref(props.agentConfigList)\nwatch(\n\t() => props.agentConfigList,\n\tnewVal => {\n\t\tconsole.log('agentConfigList === index.vue', newVal)\n\t\t// provide('agentConfigList', newVal)\n\t\tiAgentConfigList.value = newVal\n\t},\n\t{ immediate: true }\n)\nprovide('agentConfigList', iAgentConfigList)\n\n// 新增:提供处理点赞事件的函数\nprovide('like', (index: number, isLike: boolean) => {\n\t// 这里可以实现具体的点赞逻辑\n\temits('like', index, isLike) // like\n\t// 可以添加实际的业务逻辑,如调用API等\n})\n\n// 新增:提供处理点赞事件的函数 dislike\nprovide('dislike', (index: number, isUnlike: boolean) => {\n\t// 这里可以实现具体的点赞逻辑\n\temits('dislike', index, isUnlike) // dislike\n\t// 可以添加实际的业务逻辑,如调用API等\n})\n\nprovide('send', (value: string, fileList?: any[]) => {\n\t// send\n\t// 这里可以实现具体的点赞逻辑\n\tsendVal.value = value\n\temits('send', value, fileList)\n\t// 可以添加实际的业务逻辑,如调用API等\n})\n\nprovide('sideBottom', () => {\n\tconsole.log('sideBottom === 触底事件') // bottom\n\temits('side-bottom')\n})\n\nprovide('change', (id: string) => {\n\tconsole.log('change === 激活事件', id) // change\n\temits('change', id)\n})\n\nprovide('historyRemove', (id: string) => {\n\t//remove\n\tconsole.log('historyRemove === 删除事件', id)\n\temits('historyRemove', id)\n})\n\nprovide('afterSend', (content: any) => {\n\t// afterSend\n\t// console.log('afterSend === 发送消息事件', content)\n\temits('afterSend', content)\n})\n\nprovide('remove', (item: ChatMessage, index: number) => {\n\t// afterSend\n\tconsole.log('remove === 详情删除', item, index)\n\temits('remove', item, index)\n})\n\nprovide('bottom', () => {\n\tconsole.log('bottom === 详情触底')\n\temits('bottom')\n})\n\nprovide('stop', (item: ChatMessage, index: number) => {\n\tconsole.log('stop === 用户终止事件')\n\temits('stop', item, index)\n})\n\nprovide('modelChange', (item: ModuleItem, index: number) => {\n\tconsole.log('modelChange === 模型切换事件', item, index)\n\temits('modelChange', item, index)\n})\n\n// const rootRef = ref(null)\nconst deepSeekRef = ref<InstanceType<typeof DeepSeek> | null>(null)\n\nconst elementClass = computed(() => {\n\tconst classList = []\n\tif (props.mode) {\n\t\tclassList.push(`touchchat-${props.mode}`)\n\t}\n\treturn classList.join(' ')\n})\n\n// 修改elementStyle计算属性,移除对scripts.length的检查\nconst elementStyle = computed(() => {\n\tlet width = ''\n\tlet height = ''\n\n\tif (props.width) {\n\t\tif (typeof props.width === 'string') {\n\t\t\twidth = props.width ?? '100%'\n\t\t} else {\n\t\t\twidth = `${props.width}em`\n\t\t}\n\t}\n\n\tif (props.height) {\n\t\tif (typeof props.height === 'string') {\n\t\t\theight = props.height ?? '100%'\n\t\t} else {\n\t\t\theight = `${props.height}em`\n\t\t}\n\t}\n\n\treturn {\n\t\twidth,\n\t\theight\n\t}\n})\ndefineExpose({\n\tsend: (value: string, fileList?: any[], auto?: boolean, type?: string) => {\n\t\tdeepSeekRef.value?.send(value, fileList, auto, type) //send\n\t},\n\tcloseExtend: () => {\n\t\tdeepSeekRef.value?.closeExtend() // closeExtend\n\t},\n\tcreate: () => {\n\t\tdeepSeekRef.value?.create() // reset\n\t},\n\tretry: (index: number) => {\n\t\tdeepSeekRef.value?.retry(index)\n\t},\n\tupdate: (index: number, message: object) => {\n\t\tdeepSeekRef.value?.update(index, message)\n\t}\n})\n</script>\n"],"names":["DO_defineComponent","_createCommentVNode","_createVNode","_withCtx","_renderSlot"],"mappings":"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"}
1
+ {"version":3,"file":"index.vue2.mjs","sources":["../../../../../../packages/components/touchchat/src/index.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({ name: 'Touchchat' });\n</script>\n<template>\n\t<!-- <div>1.0.0-beta.2026031202</div> -->\n\t<DeepSeek ref=\"deepSeekRef\" :style=\"elementStyle\" :class=\"elementClass\">\n\t\t<!-- msg -->\n\t\t<template #aimsg=\"{ item, index }\">\n\t\t\t<slot name=\"aimsg\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<template #msg=\"{ item, index }\">\n\t\t\t<slot name=\"msg\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<template #aiAvatar>\n\t\t\t<slot name=\"aiAvatar\" />\n\t\t</template>\n\t\t<template #userAvatar>\n\t\t\t<slot name=\"userAvatar\" />\n\t\t</template>\n\t\t<template #welcome>\n\t\t\t<slot name=\"welcome\" />\n\t\t</template>\n\t\t<!-- edit -->\n\t\t<template #edit>\n\t\t\t<slot name=\"edit\" />\n\t\t</template>\n\t\t<!-- top -->\n\t\t<template #top>\n\t\t\t<slot name=\"top\" />\n\t\t</template>\n\t\t<template #shortcut>\n\t\t\t<slot name=\"shortcut\" />\n\t\t</template>\n\t\t<!-- extend -->\n\t\t<template #extend=\"{ item, index }\">\n\t\t\t<slot name=\"extend\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<!-- fn -->\n\t\t<template #fn=\"{ item, index }\">\n\t\t\t<slot name=\"fn\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t\t<template #extendsFn=\"{ item, index }\">\n\t\t\t<slot name=\"extendsFn\" :item=\"item\" :index=\"index\" />\n\t\t</template>\n\t</DeepSeek>\n</template>\n<script setup lang=\"ts\">\nimport { ChatMessage, ModuleItem } from './AiChat/TouchChat.vue'\nimport type { AgentConfig, SubAgent } from '../src/types/a2a'\nimport DeepSeek from './AiChat/TouchHistory.vue'\nimport { provide, ref, computed, watch } from 'vue'\n\n\n\nconst emits = defineEmits<{\n\t(e: 'send', value: string, fileList?: any[]): void\n\t(e: 'afterSend', result: any): void\n\t(e: 'like', index: number, isLike: boolean): void\n\t(e: 'dislike', index: number, isDislike: boolean): void\n\t(e: 'side-bottom'): void\n\t(e: 'change', id: string): void\n\t(e: 'historyRemove', id: string): void\n\t(e: 'remove', item: ChatMessage, index: number): void\n\t(e: 'bottom'): void\n\t(e: 'stop', item: ChatMessage, index: number): void\n\t(e: 'modelChange', item: ModuleItem, index: number): void\n}>()\n\nconst sendVal = ref('')\n\ninterface ScriptItem {\n\tid?: string\n\tname: string\n\tsubTitle?: string\n\tcontent: Array<{\n\t\tuser: string\n\t\tdata?: string\n\t\talias?: string[]\n\t\ttype?: string\n\t}>\n}\n\ninterface HistoryItem {\n\tid?: string\n\ttime?: string\n\ttitle?: string\n}\n\ninterface MessageItem {\n\tchatId: string\n\tuser: string\n\ttype: string\n\tcontent: string\n\t[props: string]: any\n}\n\n// interface ModuleItem {\n// \tname: string\n// \tconfig: {\n// \t\taction: string\n// \t\theaders: () => object\n// \t\tbody: () => object\n// \t\trespoKey: () => object\n// \t}\n// }\ntype Modules = (string | ModuleItem)[]\ntype ResultArray = AgentConfig[] | SubAgent[]\n\nconst props = withDefaults(\n\tdefineProps<{\n\t\tmode?: string\n\t\tscripts?: ScriptItem[]\n\t\twidth?: number | string\n\t\theight?: number | string\n\t\tcomponents?: { [key: string]: any } // components\n\t\tavatar?: boolean // avatar\n\t\tplaceholder?: string\n\t\tunmatchText?: string // unmatchText\n\t\ttitle?: string\n\t\tlayout?: string // layout=\"side, think, upload, chain,realtime\"\n\t\tbeforeSend?: () => { result: boolean; componentName?: string }\n\t\thistoryList?: HistoryItem[] // historyList\n\t\thistoryDetail?: MessageItem[] // historyDetail\n\t\tagents?: {\n\t\t\tid: string\n\t\t\tname: string\n\t\t\tintro: string\n\t\t}[] // agents\n\t\tmodules?: Modules // modules\n\t\tspeed?: number // speed\n\t\tallowedTypes?: string[] // allowedTypes\n\t\tisAgent?: boolean // isAgent 是否是智能体\n\t\tagentConfigList?: ResultArray // agentConfigList 智能体配置列表\n\t}>(),\n\t{\n\t\tmode: '',\n\t\tscripts: () => [],\n\t\twidth: '',\n\t\theight: '',\n\t\tcomponents: () => ({}),\n\t\tavatar: true,\n\t\tplaceholder: 'hi,我是touchchat,快来和我聊天吧~',\n\t\tunmatchText: '您的消息未匹配到任何内容',\n\t\ttitle: 'TouchChat',\n\t\tlayout: 'side, clear, think, upload, screen, voice,realtime', //chain 思考链\n\t\t// side 侧边栏(历史记录),think 深度思考,upload 上传文件,chain 思考链\n\t\tbeforeSend: () => ({ result: true, componentName: '' }),\n\t\thistoryList: () => [],\n\t\thistoryDetail: () => [],\n\t\tagents: () => [],\n\t\tmodules: () => [],\n\t\tspeed: 10,\n\t\tallowedTypes: () => [],\n\t\tisAgent: false, // isAgent 是否是智能体\n\t\tagentConfigList: () => []\n\t}\n)\n\nprovide('components', props.components)\nprovide('avatar', props.avatar)\nprovide('placeholder', props.placeholder)\nprovide('unmatchText', props.unmatchText)\nprovide('title', props.title)\nprovide('layout', props.layout)\nprovide('beforeSend', props.beforeSend)\nprovide('scripts', props.scripts)\nprovide('speed', props.speed)\nprovide('allowedTypes', props.allowedTypes)\nconst historyListComputed = computed(() => props.historyList)\nconst providedHistoryList = ref(props.historyList)\nwatch(\n\thistoryListComputed,\n\tnewVal => {\n\t\tprovidedHistoryList.value = newVal\n\t},\n\t{ immediate: true }\n)\nprovide('historyList', providedHistoryList)\nconst historyDetailComputed = computed(() => props.historyDetail)\nconst providedHistoryDetail = ref(props.historyDetail)\nwatch(\n\thistoryDetailComputed,\n\tnewVal => {\n\t\tprovidedHistoryDetail.value = newVal\n\t},\n\t{ immediate: true }\n)\nprovide('historyDetail', providedHistoryDetail)\nprovide('agents', props.agents)\nconst iModules = ref(props.modules)\nwatch(\n\t() => props.modules,\n\tnewVal => {\n\t\tiModules.value = newVal\n\t\tconsole.log('modules === index.vue === 191', newVal)\n\t},\n\t{ immediate: true }\n)\nprovide('modules', iModules)\n\nconst iIsAgent = ref(props.isAgent)\nwatch(\n\t() => props.isAgent,\n\tnewVal => {\n\t\tiIsAgent.value = newVal\n\t},\n\t{ immediate: true }\n)\nprovide('isAgent', iIsAgent)\n\nconst iAgentConfigList = ref(props.agentConfigList)\nwatch(\n\t() => props.agentConfigList,\n\tnewVal => {\n\t\tconsole.log('agentConfigList === index.vue', newVal)\n\t\t// provide('agentConfigList', newVal)\n\t\tiAgentConfigList.value = newVal\n\t},\n\t{ immediate: true }\n)\nprovide('agentConfigList', iAgentConfigList)\n\n// 新增:提供处理点赞事件的函数\nprovide('like', (index: number, isLike: boolean) => {\n\t// 这里可以实现具体的点赞逻辑\n\temits('like', index, isLike) // like\n\t// 可以添加实际的业务逻辑,如调用API等\n})\n\n// 新增:提供处理点赞事件的函数 dislike\nprovide('dislike', (index: number, isUnlike: boolean) => {\n\t// 这里可以实现具体的点赞逻辑\n\temits('dislike', index, isUnlike) // dislike\n\t// 可以添加实际的业务逻辑,如调用API等\n})\n\nprovide('send', (value: string, fileList?: any[]) => {\n\t// send\n\t// 这里可以实现具体的点赞逻辑\n\tsendVal.value = value\n\temits('send', value, fileList)\n\t// 可以添加实际的业务逻辑,如调用API等\n})\n\nprovide('sideBottom', () => {\n\tconsole.log('sideBottom === 触底事件') // bottom\n\temits('side-bottom')\n})\n\nprovide('change', (id: string) => {\n\tconsole.log('change === 激活事件', id) // change\n\temits('change', id)\n})\n\nprovide('historyRemove', (id: string) => {\n\t//remove\n\tconsole.log('historyRemove === 删除事件', id)\n\temits('historyRemove', id)\n})\n\nprovide('afterSend', (content: any) => {\n\t// afterSend\n\t// console.log('afterSend === 发送消息事件', content)\n\temits('afterSend', content)\n})\n\nprovide('remove', (item: ChatMessage, index: number) => {\n\t// afterSend\n\tconsole.log('remove === 详情删除', item, index)\n\temits('remove', item, index)\n})\n\nprovide('bottom', () => {\n\tconsole.log('bottom === 详情触底')\n\temits('bottom')\n})\n\nprovide('stop', (item: ChatMessage, index: number) => {\n\tconsole.log('stop === 用户终止事件')\n\temits('stop', item, index)\n})\n\nprovide('modelChange', (item: ModuleItem, index: number) => {\n\tconsole.log('modelChange === 模型切换事件', item, index)\n\temits('modelChange', item, index)\n})\n\n// const rootRef = ref(null)\nconst deepSeekRef = ref<InstanceType<typeof DeepSeek> | null>(null)\n\nconst elementClass = computed(() => {\n\tconst classList = []\n\tif (props.mode) {\n\t\tclassList.push(`touchchat-${props.mode}`)\n\t}\n\treturn classList.join(' ')\n})\n\n// 修改elementStyle计算属性,移除对scripts.length的检查\nconst elementStyle = computed(() => {\n\tlet width = ''\n\tlet height = ''\n\n\tif (props.width) {\n\t\tif (typeof props.width === 'string') {\n\t\t\twidth = props.width ?? '100%'\n\t\t} else {\n\t\t\twidth = `${props.width}em`\n\t\t}\n\t}\n\n\tif (props.height) {\n\t\tif (typeof props.height === 'string') {\n\t\t\theight = props.height ?? '100%'\n\t\t} else {\n\t\t\theight = `${props.height}em`\n\t\t}\n\t}\n\n\treturn {\n\t\twidth,\n\t\theight\n\t}\n})\ndefineExpose({\n\tsend: (value: string, fileList?: any[], auto?: boolean, type?: string) => {\n\t\tdeepSeekRef.value?.send(value, fileList, auto, type) //send\n\t},\n\tcloseExtend: () => {\n\t\tdeepSeekRef.value?.closeExtend() // closeExtend\n\t},\n\tcreate: () => {\n\t\tdeepSeekRef.value?.create() // reset\n\t},\n\tretry: (index: number) => {\n\t\tdeepSeekRef.value?.retry(index)\n\t},\n\tupdate: (index: number, message: object) => {\n\t\tdeepSeekRef.value?.update(index, message)\n\t},\n\tchangeChat: (index: number) => {\n\t\tdeepSeekRef.value?.changeChat(index)\n\t},\n\tclearChat: () => {\n\t\tdeepSeekRef.value?.clearChat()\n\t}\n})\n</script>\n"],"names":["DO_defineComponent","_createCommentVNode","_createVNode","_withCtx","_renderSlot"],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var name = "@touchvue/chat";
6
- var version = "1.0.0-beta.35";
6
+ var version = "1.0.0-beta.37";
7
7
  var description = "TouchVue UI Component Library";
8
8
  var main = "lib/index.js";
9
9
  var module$1 = "es/index.mjs";
@@ -118,6 +118,8 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
118
118
  isDeleteDialogVisible.value = false;
119
119
  };
120
120
  const groupedChatHistory = vue.computed(() => {
121
+ if (props.chatHistory.length === 0)
122
+ return [];
121
123
  const filterHistory = props.chatHistory.filter((item) => item.type === "");
122
124
  const sortedChats = [...filterHistory].sort((a, b) => new Date(b.time).getTime() - new Date(a.time).getTime());
123
125
  const groups = {};
@@ -1 +1 @@
1
- {"version":3,"file":"HistoryList.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/HistoryList.vue"],"sourcesContent":["<template>\n\t<div ref=\"historyListRef\" class=\"touchchat-history\" :class=\"{ 'is-robot': isRobot }\" @scroll=\"handleScroll\">\n\t\t<!-- 动态时间分组 -->\n\t\t<div v-for=\"group in groupedChatHistory\" :key=\"group.groupKey\" class=\"touchchat-history-group\">\n\t\t\t<!-- 分组标题 -->\n\t\t\t<div class=\"touchchat-history-title\">\n\t\t\t\t<div class=\"touchchat-history-title-icon\"></div>\n\t\t\t\t<div class=\"touchchat-history-title-text\">\n\t\t\t\t\t{{ group.groupName }}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<!-- 分组内对话项 -->\n\t\t\t<div class=\"touchchat-history-content\">\n\t\t\t\t<div v-for=\"item in group.items\" :key=\"item.id\" :ref=\"el => setHistoryItemRef(item.id, el as HTMLElement)\" :class=\"[item.id === activeChat ? 'is-on' : '', 'touchchat-history-item']\" @click=\"handleSelectChat(item.id)\">\n\t\t\t\t\t<div :ref=\"el => setTooltipContainerRef(item.id, el as HTMLElement)\" class=\"touchchat-history-item-text\" style=\"flex: 1\">\n\t\t\t\t\t\t<template v-if=\"editingId === item.id\">\n\t\t\t\t\t\t\t<div class=\"touchchat-history-input\">\n\t\t\t\t\t\t\t\t<input :ref=\"el => setEditInputRef(item.id, el as HTMLInputElement)\" v-model=\"editTitle\" @blur=\"handleRenameComplete(item.id)\" @keyup.enter=\"handleRenameComplete(item.id)\" @click.stop />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t\t{{ item.title || '新对话' }}\n\t\t\t\t\t\t\t<div v-if=\"shouldShowTooltip(item.id, item.title)\" ref=\"tooltipRef\" class=\"touchchat-tooltip\">\n\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<!-- 菜单显示状态 - 添加条件判断隐藏操作按钮 -->\n\t\t\t\t\t<div v-if=\"editingId !== item.id\" class=\"touchchat-history-fn\">\n\t\t\t\t\t\t<button class=\"touchchat-history-more\" @click.stop=\"handleToggleActionMenu(item.id)\">\n\t\t\t\t\t\t\t<div class=\"touchchat-history-more-icon\"></div>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<div v-if=\"state.actionMenuVisible[item.id]\" :ref=\"el => (actionMenus[item.id] = el as HTMLElement)\" class=\"touchchat-history-float\" @mouseenter=\"preventMenuClose\" @mouseleave=\"delayedCloseMenu(item.id)\">\n\t\t\t\t\t\t\t<div class=\"touchchat-history-rename\" @click.stop=\"handleStartRename(item.id)\">\n\t\t\t\t\t\t\t\t<span class=\"touchchat-history-rename-icon\"></span>\n\t\t\t\t\t\t\t\t<span class=\"touchchat-history-rename-text\">重命名</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"touchchat-history-remove\" @click.stop=\"handleMenuAction('delete', item.id)\">\n\t\t\t\t\t\t\t\t<span class=\"touchchat-history-remove-icon\"></span>\n\t\t\t\t\t\t\t\t<span class=\"touchchat-history-remove-text\">删除</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div v-if=\"isDeleteDialogVisible\" class=\"delete-dialog-overlay\">\n\t\t\t<div class=\"delete-dialog\">\n\t\t\t\t<div class=\"delete-dialog-title\">永久删除对话</div>\n\t\t\t\t<div class=\"delete-dialog-content\">删除后,该对话将不可恢复。确认删除吗?</div>\n\t\t\t\t<div class=\"delete-dialog-actions\">\n\t\t\t\t\t<button class=\"delete-dialog-cancel\" @click=\"handleCancelDelete\">取消</button>\n\t\t\t\t\t<button class=\"delete-dialog-confirm\" @click=\"handleConfirmDelete\">确认</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, reactive, nextTick, computed, watch, inject } from 'vue'\n\n// 类型定义\ninterface ChatMessage {\n\tchatId?: string\n\tuser: string\n\ttype: string\n\tcontent: string\n\tisShowAvatar?: boolean\n\tavatar?: string\n\tisChating?: boolean\n\tthinkContent?: string\n\treasoningContent?: string\n}\n\ninterface HistoryItem {\n\tid: string\n\ttitle: string\n\ttime: Date\n\ttype: string\n\tmessages?: ChatMessage[]\n}\n\ninterface GroupedChat {\n\tgroupKey: string\n\tgroupName: string\n\titems: HistoryItem[]\n}\n\n// Props\nconst props = defineProps<{\n\tactiveChat: string\n\tchatHistory: HistoryItem[]\n}>()\n\nconst isDeleteDialogVisible = ref(false)\nconst deletingId = ref('')\n\nconst isRobot = inject('scripts', []).length > 0\n\n// Emits\nconst emit = defineEmits<{\n\t(e: 'select-chat', id: string): void\n\t(e: 'rename-chat', id: string, newTitle: string): void\n\t(e: 'delete-chat', id: string): void\n}>()\n\n// 内部状态\nconst actionMenus = ref<Record<string, HTMLElement | null>>({})\nconst tooltipContainerRefs = ref<Record<string, HTMLElement | null>>({})\nconst editingId = ref<string | null>(null)\nconst editTitle = ref('')\nconst editInputRefs = ref<Record<string, HTMLInputElement | null>>({}) // 修改为对象存储多个引用\n\n// 设置输入框引用\nconst setEditInputRef = (id: string, el: HTMLInputElement | null) => {\n\teditInputRefs.value[id] = el\n}\n\nconst setTooltipContainerRef = (id: string, el: HTMLElement | null) => {\n\ttooltipContainerRefs.value[id] = el\n}\n\nconst state = reactive<{\n\tactionMenuVisible: Record<string, boolean>\n}>({\n\tactionMenuVisible: {}\n})\n\nconst sideBottom = inject<() => void>('sideBottom', () => {\n\tconsole.warn('未提供bottom函数')\n})\n\n// 开始重命名\nlet scrollTimeout: ReturnType<typeof setTimeout> | null = null\nconst handleScroll = (event: Event) => {\n\tif (scrollTimeout) {\n\t\tclearTimeout(scrollTimeout)\n\t}\n\tscrollTimeout = setTimeout(() => {\n\t\tconst container = event.target as HTMLElement\n\t\tconst { scrollTop, scrollHeight, clientHeight } = container\n\t\tconst isBottom = scrollHeight - scrollTop <= clientHeight + 10 // 10px 缓冲\n\t\tif (isBottom) {\n\t\t\tsideBottom()\n\t\t}\n\t}, 200)\n}\n\nconst handleStartRename = (id: string) => {\n\tconst item = props.chatHistory.find(item => item.id === id)\n\tif (item) {\n\t\teditingId.value = id\n\t\teditTitle.value = item.title || ''\n\t\tstate.actionMenuVisible[id] = false\n\t\tnextTick(() => {\n\t\t\teditInputRefs.value[id]?.focus()\n\t\t})\n\t}\n}\n\n// 完成重命名\nconst handleRenameComplete = (id: string) => {\n\tif (editingId.value === id) {\n\t\tconst trimmedTitle = editTitle.value.trim()\n\t\tif (trimmedTitle) {\n\t\t\temit('rename-chat', id, trimmedTitle)\n\t\t}\n\t\teditingId.value = null\n\t}\n}\n\n// 时间分组辅助函数\nconst getGroupKey = (date: Date): string => {\n\tconst now = new Date()\n\tconst today = new Date(now.getFullYear(), now.getMonth(), now.getDate())\n\tconst yesterday = new Date(today)\n\tyesterday.setDate(yesterday.getDate() - 1)\n\tconst sevenDaysAgo = new Date(today)\n\tsevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7)\n\tconst thirtyDaysAgo = new Date(today)\n\tthirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30)\n\n\tconst targetDate = new Date(date)\n\tconst targetDateNormalized = new Date(targetDate.getFullYear(), targetDate.getMonth(), targetDate.getDate())\n\n\tif (targetDateNormalized >= today) return 'today'\n\tif (targetDateNormalized >= yesterday) return 'yesterday'\n\tif (targetDate >= sevenDaysAgo) return 'sevenDays'\n\tif (targetDate >= thirtyDaysAgo) return 'thirtyDays'\n\treturn `${targetDate.getFullYear()}-${String(targetDate.getMonth() + 1).padStart(2, '0')}`\n}\n\n// 格式化分组名称\nconst formatGroupName = (key: string): string => {\n\tswitch (key) {\n\t\tcase 'today':\n\t\t\treturn '今天'\n\t\tcase 'yesterday':\n\t\t\treturn '昨天'\n\t\tcase 'sevenDays':\n\t\t\treturn '7天内'\n\t\tcase 'thirtyDays':\n\t\t\treturn '30天内'\n\t\tdefault:\n\t\t\treturn key\n\t}\n}\n\nconst handleMenuAction = (action: string, id: string) => {\n\tif (action === 'delete') {\n\t\tdeletingId.value = id\n\t\tisDeleteDialogVisible.value = true\n\t}\n}\n\nconst handleConfirmDelete = () => {\n\temit('delete-chat', deletingId.value)\n\tisDeleteDialogVisible.value = false\n}\n\nconst handleCancelDelete = () => {\n\tisDeleteDialogVisible.value = false\n}\n\n// 按时间分组的计算属性\nconst groupedChatHistory = computed<GroupedChat[]>(() => {\n\tconst filterHistory = props.chatHistory.filter(item => item.type === '')\n\t// 复制并排序对话(最新的在前)\n\tconst sortedChats = [...filterHistory].sort((a, b) => new Date(b.time).getTime() - new Date(a.time).getTime())\n\n\t// 分组处理\n\tconst groups: Record<string, HistoryItem[]> = {}\n\tsortedChats.forEach(chat => {\n\t\tconst key = getGroupKey(new Date(chat.time))\n\t\tif (!groups[key]) groups[key] = []\n\t\tgroups[key].push(chat)\n\t})\n\n\t// 转换为有序数组\n\treturn Object.entries(groups)\n\t\t.map(([key, items]) => ({\n\t\t\tgroupKey: key,\n\t\t\tgroupName: formatGroupName(key),\n\t\t\titems\n\t\t}))\n\t\t.sort((a, b) => {\n\t\t\t// 自定义排序确保分组顺序正确\n\t\t\tconst order: Record<string, number> = {\n\t\t\t\ttoday: 0,\n\t\t\t\tyesterday: 1,\n\t\t\t\tsevenDays: 2,\n\t\t\t\tthirtyDays: 3\n\t\t\t}\n\t\t\treturn (order[a.groupKey] ?? 100) - (order[b.groupKey] ?? 100) || b.groupKey.localeCompare(a.groupKey)\n\t\t})\n})\n\n// 修改缓存类型定义\ninterface TooltipCacheItem {\n\tvalue: boolean\n\ttimestamp: number\n}\n\n// 使用Map存储每个ID的测量结果,避免重复计算\nconst tooltipMeasurementCache = new Map<string, TooltipCacheItem>()\n\nconst clearTooltipCache = () => {\n\ttooltipMeasurementCache.clear()\n}\n\nwatch(() => props.chatHistory, clearTooltipCache)\n\n// 改进shouldShowTooltip函数\nconst shouldShowTooltip = (id: string, title: string) => {\n\tif (!title || editingId.value === id) return false\n\n\t// 获取容器元素\n\tconst containerEl = tooltipContainerRefs.value[id]\n\tif (!containerEl) {\n\t\treturn false\n\t}\n\n\t// 强制重新计算布局\n\tcontainerEl.getBoundingClientRect()\n\t// 获取容器的实际宽度(包括padding和border)\n\tconst containerStyle = window.getComputedStyle(containerEl)\n\tconst containerWidth = containerEl.offsetWidth\n\tconst containerPaddingX = parseFloat(containerStyle.paddingLeft) + parseFloat(containerStyle.paddingRight)\n\tconst containerBorderX = parseFloat(containerStyle.borderLeftWidth) + parseFloat(containerStyle.borderRightWidth)\n\t// 内容区域宽度 = 总宽度 - padding - border\n\tconst contentWidth = containerWidth - containerPaddingX - containerBorderX\n\n\t// 如果容器宽度为0,不缓存结果,返回false\n\tif (containerWidth === 0) {\n\t\treturn false\n\t}\n\n\t// 检查缓存,但添加时间戳以支持定期更新\n\tconst now = Date.now()\n\tconst cacheKey = `${id}_${containerWidth}_${contentWidth}` // 改进缓存键\n\tif (tooltipMeasurementCache.has(cacheKey)) {\n\t\tconst cached = tooltipMeasurementCache.get(cacheKey)\n\t\t// 如果缓存项存在且未过期(5秒)\n\t\tif (cached && now - cached.timestamp < 5000) {\n\t\t\treturn cached.value\n\t\t}\n\t}\n\n\t// 创建临时元素测量文本宽度\n\tconst tempElement = document.createElement('span')\n\ttempElement.className = 'history-title'\n\ttempElement.textContent = title\n\n\t// 复制实际元素的样式\n\tconst historyTitleEl = containerEl.querySelector('.history-title')\n\tif (historyTitleEl) {\n\t\tconst titleStyle = window.getComputedStyle(historyTitleEl)\n\t\t// 复制所有相关样式\n\t\ttempElement.style.fontSize = titleStyle.fontSize\n\t\ttempElement.style.fontFamily = titleStyle.fontFamily\n\t\ttempElement.style.fontWeight = titleStyle.fontWeight\n\t\ttempElement.style.letterSpacing = titleStyle.letterSpacing\n\t\ttempElement.style.wordSpacing = titleStyle.wordSpacing\n\t\ttempElement.style.textTransform = titleStyle.textTransform\n\t}\n\n\ttempElement.style.visibility = 'hidden'\n\ttempElement.style.position = 'absolute'\n\ttempElement.style.whiteSpace = 'nowrap'\n\tdocument.body.appendChild(tempElement)\n\n\t// 强制重绘\n\ttempElement.getBoundingClientRect()\n\tconst textWidth = tempElement.offsetWidth\n\n\tdocument.body.removeChild(tempElement)\n\n\t// 添加5px阈值,避免边框等因素导致的误差\n\tconst shouldShow = textWidth > contentWidth + 5\n\n\t// 缓存结果,包含时间戳\n\ttooltipMeasurementCache.set(cacheKey, {\n\t\tvalue: shouldShow,\n\t\ttimestamp: now\n\t})\n\n\treturn shouldShow\n}\n\n// 事件处理\nconst handleSelectChat = (id: string) => {\n\tif (editingId.value === null) {\n\t\temit('select-chat', id)\n\t\tresetAllMenus()\n\t}\n}\n\nconst resetAllMenus = () => {\n\tObject.keys(state.actionMenuVisible).forEach(key => {\n\t\tstate.actionMenuVisible[key] = false\n\t})\n}\n\nconst handleToggleActionMenu = (id: string, event?: MouseEvent) => {\n\tif (editingId.value === null) {\n\t\tevent?.stopPropagation()\n\t\tprops.chatHistory.forEach(item => {\n\t\t\titem.id !== id && (state.actionMenuVisible[item.id] = false)\n\t\t})\n\t\tstate.actionMenuVisible[id] = !state.actionMenuVisible[id]\n\n\t\t// 添加动态定位逻辑\n\t\tif (state.actionMenuVisible[id]) {\n\t\t\tpositionActionMenu(id)\n\t\t}\n\t}\n}\n\n// 添加对history-group容器的引用\nconst historyListRef = ref<HTMLUListElement | null>(null)\n\n// 添加对历史记录项的引用\nconst historyItemRefs = ref<Record<string, HTMLElement | null>>({})\n\nconst setHistoryItemRef = (id: string, el: HTMLElement | null) => {\n\thistoryItemRefs.value[id] = el\n}\n\n// 添加菜单定位函数\nconst positionActionMenu = (id: string) => {\n\tnextTick(() => {\n\t\tconst menuEl = actionMenus.value[id]\n\t\tconst historyItemEl = historyItemRefs.value[id]\n\t\tif (!menuEl || !historyItemEl || !historyListRef.value) return\n\n\t\t// 重置样式\n\t\tmenuEl.style.top = ''\n\t\tmenuEl.style.bottom = ''\n\t\tmenuEl.style.transform = ''\n\t\tmenuEl.style.marginTop = ''\n\t\tmenuEl.style.position = 'absolute'\n\n\t\tconst menuHeight = menuEl.offsetHeight\n\t\tconst historyItemRect = historyItemEl.getBoundingClientRect()\n\t\tconst listRect = historyListRef.value.getBoundingClientRect()\n\t\tconst buttonEl = menuEl.previousElementSibling as HTMLElement\n\n\t\t// 计算历史记录项底部到列表容器底部的距离\n\t\tconst distanceToBottom = listRect.bottom - historyItemRect.bottom\n\n\t\t// 如果距离小于菜单高度,则显示在上方\n\t\tif (distanceToBottom < menuHeight) {\n\t\t\tif (buttonEl) {\n\t\t\t\t// const buttonRect = buttonEl.getBoundingClientRect();\n\t\t\t\t// 直接设置菜单顶部位置为按钮顶部减去菜单高度\n\t\t\t\tmenuEl.style.top = `${-menuHeight}px`\n\t\t\t\tmenuEl.style.bottom = 'auto'\n\t\t\t\tmenuEl.style.transform = 'none'\n\t\t\t}\n\t\t} else {\n\t\t\t// 否则显示在下方\n\t\t\tmenuEl.style.top = '100%'\n\t\t\tmenuEl.style.bottom = 'auto'\n\t\t\tmenuEl.style.transform = 'translateY(0)'\n\t\t}\n\t})\n}\n\n// 添加菜单关闭延迟逻辑\nlet menuCloseTimer: number | null = null\n\nconst preventMenuClose = () => {\n\tif (menuCloseTimer) {\n\t\tclearTimeout(menuCloseTimer)\n\t\tmenuCloseTimer = null\n\t}\n}\n\nconst delayedCloseMenu = (id: string) => {\n\tpreventMenuClose()\n\tmenuCloseTimer = window.setTimeout(() => {\n\t\tstate.actionMenuVisible[id] = false\n\t}, 200)\n}\n</script>\n"],"names":["ref","inject","reactive","item","nextTick","computed","watch","_createElementBlock","_normalizeClass","_createCommentVNode","_Fragment","_renderList","_createElementVNode","_toDisplayString","_openBlock","_withKeys","_withModifiers"],"mappings":"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"}
1
+ {"version":3,"file":"HistoryList.vue2.js","sources":["../../../../../../../packages/components/touchchat/src/AiChat/HistoryList.vue"],"sourcesContent":["<template>\n\t<div ref=\"historyListRef\" class=\"touchchat-history\" :class=\"{ 'is-robot': isRobot }\" @scroll=\"handleScroll\">\n\t\t<!-- 动态时间分组 -->\n\t\t<div v-for=\"group in groupedChatHistory\" :key=\"group.groupKey\" class=\"touchchat-history-group\">\n\t\t\t<!-- 分组标题 -->\n\t\t\t<div class=\"touchchat-history-title\">\n\t\t\t\t<div class=\"touchchat-history-title-icon\"></div>\n\t\t\t\t<div class=\"touchchat-history-title-text\">\n\t\t\t\t\t{{ group.groupName }}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<!-- 分组内对话项 -->\n\t\t\t<div class=\"touchchat-history-content\">\n\t\t\t\t<div v-for=\"item in group.items\" :key=\"item.id\" :ref=\"el => setHistoryItemRef(item.id, el as HTMLElement)\" :class=\"[item.id === activeChat ? 'is-on' : '', 'touchchat-history-item']\" @click=\"handleSelectChat(item.id)\">\n\t\t\t\t\t<div :ref=\"el => setTooltipContainerRef(item.id, el as HTMLElement)\" class=\"touchchat-history-item-text\" style=\"flex: 1\">\n\t\t\t\t\t\t<template v-if=\"editingId === item.id\">\n\t\t\t\t\t\t\t<div class=\"touchchat-history-input\">\n\t\t\t\t\t\t\t\t<input :ref=\"el => setEditInputRef(item.id, el as HTMLInputElement)\" v-model=\"editTitle\" @blur=\"handleRenameComplete(item.id)\" @keyup.enter=\"handleRenameComplete(item.id)\" @click.stop />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t\t{{ item.title || '新对话' }}\n\t\t\t\t\t\t\t<div v-if=\"shouldShowTooltip(item.id, item.title)\" ref=\"tooltipRef\" class=\"touchchat-tooltip\">\n\t\t\t\t\t\t\t\t{{ item.title }}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<!-- 菜单显示状态 - 添加条件判断隐藏操作按钮 -->\n\t\t\t\t\t<div v-if=\"editingId !== item.id\" class=\"touchchat-history-fn\">\n\t\t\t\t\t\t<button class=\"touchchat-history-more\" @click.stop=\"handleToggleActionMenu(item.id)\">\n\t\t\t\t\t\t\t<div class=\"touchchat-history-more-icon\"></div>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<div v-if=\"state.actionMenuVisible[item.id]\" :ref=\"el => (actionMenus[item.id] = el as HTMLElement)\" class=\"touchchat-history-float\" @mouseenter=\"preventMenuClose\" @mouseleave=\"delayedCloseMenu(item.id)\">\n\t\t\t\t\t\t\t<div class=\"touchchat-history-rename\" @click.stop=\"handleStartRename(item.id)\">\n\t\t\t\t\t\t\t\t<span class=\"touchchat-history-rename-icon\"></span>\n\t\t\t\t\t\t\t\t<span class=\"touchchat-history-rename-text\">重命名</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"touchchat-history-remove\" @click.stop=\"handleMenuAction('delete', item.id)\">\n\t\t\t\t\t\t\t\t<span class=\"touchchat-history-remove-icon\"></span>\n\t\t\t\t\t\t\t\t<span class=\"touchchat-history-remove-text\">删除</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div v-if=\"isDeleteDialogVisible\" class=\"delete-dialog-overlay\">\n\t\t\t<div class=\"delete-dialog\">\n\t\t\t\t<div class=\"delete-dialog-title\">永久删除对话</div>\n\t\t\t\t<div class=\"delete-dialog-content\">删除后,该对话将不可恢复。确认删除吗?</div>\n\t\t\t\t<div class=\"delete-dialog-actions\">\n\t\t\t\t\t<button class=\"delete-dialog-cancel\" @click=\"handleCancelDelete\">取消</button>\n\t\t\t\t\t<button class=\"delete-dialog-confirm\" @click=\"handleConfirmDelete\">确认</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, reactive, nextTick, computed, watch, inject } from 'vue'\n\n// 类型定义\ninterface ChatMessage {\n\tchatId?: string\n\tuser: string\n\ttype: string\n\tcontent: string\n\tisShowAvatar?: boolean\n\tavatar?: string\n\tisChating?: boolean\n\tthinkContent?: string\n\treasoningContent?: string\n}\n\ninterface HistoryItem {\n\tid: string\n\ttitle: string\n\ttime: Date\n\ttype: string\n\tmessages?: ChatMessage[]\n}\n\ninterface GroupedChat {\n\tgroupKey: string\n\tgroupName: string\n\titems: HistoryItem[]\n}\n\n// Props\nconst props = defineProps<{\n\tactiveChat: string\n\tchatHistory: HistoryItem[]\n}>()\n\nconst isDeleteDialogVisible = ref(false)\nconst deletingId = ref('')\n\nconst isRobot = inject('scripts', []).length > 0\n\n// Emits\nconst emit = defineEmits<{\n\t(e: 'select-chat', id: string): void\n\t(e: 'rename-chat', id: string, newTitle: string): void\n\t(e: 'delete-chat', id: string): void\n}>()\n\n// 内部状态\nconst actionMenus = ref<Record<string, HTMLElement | null>>({})\nconst tooltipContainerRefs = ref<Record<string, HTMLElement | null>>({})\nconst editingId = ref<string | null>(null)\nconst editTitle = ref('')\nconst editInputRefs = ref<Record<string, HTMLInputElement | null>>({}) // 修改为对象存储多个引用\n\n// 设置输入框引用\nconst setEditInputRef = (id: string, el: HTMLInputElement | null) => {\n\teditInputRefs.value[id] = el\n}\n\nconst setTooltipContainerRef = (id: string, el: HTMLElement | null) => {\n\ttooltipContainerRefs.value[id] = el\n}\n\nconst state = reactive<{\n\tactionMenuVisible: Record<string, boolean>\n}>({\n\tactionMenuVisible: {}\n})\n\nconst sideBottom = inject<() => void>('sideBottom', () => {\n\tconsole.warn('未提供bottom函数')\n})\n\n// 开始重命名\nlet scrollTimeout: ReturnType<typeof setTimeout> | null = null\nconst handleScroll = (event: Event) => {\n\tif (scrollTimeout) {\n\t\tclearTimeout(scrollTimeout)\n\t}\n\tscrollTimeout = setTimeout(() => {\n\t\tconst container = event.target as HTMLElement\n\t\tconst { scrollTop, scrollHeight, clientHeight } = container\n\t\tconst isBottom = scrollHeight - scrollTop <= clientHeight + 10 // 10px 缓冲\n\t\tif (isBottom) {\n\t\t\tsideBottom()\n\t\t}\n\t}, 200)\n}\n\nconst handleStartRename = (id: string) => {\n\tconst item = props.chatHistory.find(item => item.id === id)\n\tif (item) {\n\t\teditingId.value = id\n\t\teditTitle.value = item.title || ''\n\t\tstate.actionMenuVisible[id] = false\n\t\tnextTick(() => {\n\t\t\teditInputRefs.value[id]?.focus()\n\t\t})\n\t}\n}\n\n// 完成重命名\nconst handleRenameComplete = (id: string) => {\n\tif (editingId.value === id) {\n\t\tconst trimmedTitle = editTitle.value.trim()\n\t\tif (trimmedTitle) {\n\t\t\temit('rename-chat', id, trimmedTitle)\n\t\t}\n\t\teditingId.value = null\n\t}\n}\n\n// 时间分组辅助函数\nconst getGroupKey = (date: Date): string => {\n\tconst now = new Date()\n\tconst today = new Date(now.getFullYear(), now.getMonth(), now.getDate())\n\tconst yesterday = new Date(today)\n\tyesterday.setDate(yesterday.getDate() - 1)\n\tconst sevenDaysAgo = new Date(today)\n\tsevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7)\n\tconst thirtyDaysAgo = new Date(today)\n\tthirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30)\n\n\tconst targetDate = new Date(date)\n\tconst targetDateNormalized = new Date(targetDate.getFullYear(), targetDate.getMonth(), targetDate.getDate())\n\n\tif (targetDateNormalized >= today) return 'today'\n\tif (targetDateNormalized >= yesterday) return 'yesterday'\n\tif (targetDate >= sevenDaysAgo) return 'sevenDays'\n\tif (targetDate >= thirtyDaysAgo) return 'thirtyDays'\n\treturn `${targetDate.getFullYear()}-${String(targetDate.getMonth() + 1).padStart(2, '0')}`\n}\n\n// 格式化分组名称\nconst formatGroupName = (key: string): string => {\n\tswitch (key) {\n\t\tcase 'today':\n\t\t\treturn '今天'\n\t\tcase 'yesterday':\n\t\t\treturn '昨天'\n\t\tcase 'sevenDays':\n\t\t\treturn '7天内'\n\t\tcase 'thirtyDays':\n\t\t\treturn '30天内'\n\t\tdefault:\n\t\t\treturn key\n\t}\n}\n\nconst handleMenuAction = (action: string, id: string) => {\n\tif (action === 'delete') {\n\t\tdeletingId.value = id\n\t\tisDeleteDialogVisible.value = true\n\t}\n}\n\nconst handleConfirmDelete = () => {\n\temit('delete-chat', deletingId.value)\n\tisDeleteDialogVisible.value = false\n}\n\nconst handleCancelDelete = () => {\n\tisDeleteDialogVisible.value = false\n}\n\n// 按时间分组的计算属性\nconst groupedChatHistory = computed<GroupedChat[]>(() => {\n\tif (props.chatHistory.length === 0) return []\n\tconst filterHistory = props.chatHistory.filter(item => item.type === '')\n\t// 复制并排序对话(最新的在前)\n\tconst sortedChats = [...filterHistory].sort((a, b) => new Date(b.time).getTime() - new Date(a.time).getTime())\n\n\t// 分组处理\n\tconst groups: Record<string, HistoryItem[]> = {}\n\tsortedChats.forEach(chat => {\n\t\tconst key = getGroupKey(new Date(chat.time))\n\t\tif (!groups[key]) groups[key] = []\n\t\tgroups[key].push(chat)\n\t})\n\n\t// 转换为有序数组\n\treturn Object.entries(groups)\n\t\t.map(([key, items]) => ({\n\t\t\tgroupKey: key,\n\t\t\tgroupName: formatGroupName(key),\n\t\t\titems\n\t\t}))\n\t\t.sort((a, b) => {\n\t\t\t// 自定义排序确保分组顺序正确\n\t\t\tconst order: Record<string, number> = {\n\t\t\t\ttoday: 0,\n\t\t\t\tyesterday: 1,\n\t\t\t\tsevenDays: 2,\n\t\t\t\tthirtyDays: 3\n\t\t\t}\n\t\t\treturn (order[a.groupKey] ?? 100) - (order[b.groupKey] ?? 100) || b.groupKey.localeCompare(a.groupKey)\n\t\t})\n})\n\n// 修改缓存类型定义\ninterface TooltipCacheItem {\n\tvalue: boolean\n\ttimestamp: number\n}\n\n// 使用Map存储每个ID的测量结果,避免重复计算\nconst tooltipMeasurementCache = new Map<string, TooltipCacheItem>()\n\nconst clearTooltipCache = () => {\n\ttooltipMeasurementCache.clear()\n}\n\nwatch(() => props.chatHistory, clearTooltipCache)\n\n// 改进shouldShowTooltip函数\nconst shouldShowTooltip = (id: string, title: string) => {\n\tif (!title || editingId.value === id) return false\n\n\t// 获取容器元素\n\tconst containerEl = tooltipContainerRefs.value[id]\n\tif (!containerEl) {\n\t\treturn false\n\t}\n\n\t// 强制重新计算布局\n\tcontainerEl.getBoundingClientRect()\n\t// 获取容器的实际宽度(包括padding和border)\n\tconst containerStyle = window.getComputedStyle(containerEl)\n\tconst containerWidth = containerEl.offsetWidth\n\tconst containerPaddingX = parseFloat(containerStyle.paddingLeft) + parseFloat(containerStyle.paddingRight)\n\tconst containerBorderX = parseFloat(containerStyle.borderLeftWidth) + parseFloat(containerStyle.borderRightWidth)\n\t// 内容区域宽度 = 总宽度 - padding - border\n\tconst contentWidth = containerWidth - containerPaddingX - containerBorderX\n\n\t// 如果容器宽度为0,不缓存结果,返回false\n\tif (containerWidth === 0) {\n\t\treturn false\n\t}\n\n\t// 检查缓存,但添加时间戳以支持定期更新\n\tconst now = Date.now()\n\tconst cacheKey = `${id}_${containerWidth}_${contentWidth}` // 改进缓存键\n\tif (tooltipMeasurementCache.has(cacheKey)) {\n\t\tconst cached = tooltipMeasurementCache.get(cacheKey)\n\t\t// 如果缓存项存在且未过期(5秒)\n\t\tif (cached && now - cached.timestamp < 5000) {\n\t\t\treturn cached.value\n\t\t}\n\t}\n\n\t// 创建临时元素测量文本宽度\n\tconst tempElement = document.createElement('span')\n\ttempElement.className = 'history-title'\n\ttempElement.textContent = title\n\n\t// 复制实际元素的样式\n\tconst historyTitleEl = containerEl.querySelector('.history-title')\n\tif (historyTitleEl) {\n\t\tconst titleStyle = window.getComputedStyle(historyTitleEl)\n\t\t// 复制所有相关样式\n\t\ttempElement.style.fontSize = titleStyle.fontSize\n\t\ttempElement.style.fontFamily = titleStyle.fontFamily\n\t\ttempElement.style.fontWeight = titleStyle.fontWeight\n\t\ttempElement.style.letterSpacing = titleStyle.letterSpacing\n\t\ttempElement.style.wordSpacing = titleStyle.wordSpacing\n\t\ttempElement.style.textTransform = titleStyle.textTransform\n\t}\n\n\ttempElement.style.visibility = 'hidden'\n\ttempElement.style.position = 'absolute'\n\ttempElement.style.whiteSpace = 'nowrap'\n\tdocument.body.appendChild(tempElement)\n\n\t// 强制重绘\n\ttempElement.getBoundingClientRect()\n\tconst textWidth = tempElement.offsetWidth\n\n\tdocument.body.removeChild(tempElement)\n\n\t// 添加5px阈值,避免边框等因素导致的误差\n\tconst shouldShow = textWidth > contentWidth + 5\n\n\t// 缓存结果,包含时间戳\n\ttooltipMeasurementCache.set(cacheKey, {\n\t\tvalue: shouldShow,\n\t\ttimestamp: now\n\t})\n\n\treturn shouldShow\n}\n\n// 事件处理\nconst handleSelectChat = (id: string) => {\n\tif (editingId.value === null) {\n\t\temit('select-chat', id)\n\t\tresetAllMenus()\n\t}\n}\n\nconst resetAllMenus = () => {\n\tObject.keys(state.actionMenuVisible).forEach(key => {\n\t\tstate.actionMenuVisible[key] = false\n\t})\n}\n\nconst handleToggleActionMenu = (id: string, event?: MouseEvent) => {\n\tif (editingId.value === null) {\n\t\tevent?.stopPropagation()\n\t\tprops.chatHistory.forEach(item => {\n\t\t\titem.id !== id && (state.actionMenuVisible[item.id] = false)\n\t\t})\n\t\tstate.actionMenuVisible[id] = !state.actionMenuVisible[id]\n\n\t\t// 添加动态定位逻辑\n\t\tif (state.actionMenuVisible[id]) {\n\t\t\tpositionActionMenu(id)\n\t\t}\n\t}\n}\n\n// 添加对history-group容器的引用\nconst historyListRef = ref<HTMLUListElement | null>(null)\n\n// 添加对历史记录项的引用\nconst historyItemRefs = ref<Record<string, HTMLElement | null>>({})\n\nconst setHistoryItemRef = (id: string, el: HTMLElement | null) => {\n\thistoryItemRefs.value[id] = el\n}\n\n// 添加菜单定位函数\nconst positionActionMenu = (id: string) => {\n\tnextTick(() => {\n\t\tconst menuEl = actionMenus.value[id]\n\t\tconst historyItemEl = historyItemRefs.value[id]\n\t\tif (!menuEl || !historyItemEl || !historyListRef.value) return\n\n\t\t// 重置样式\n\t\tmenuEl.style.top = ''\n\t\tmenuEl.style.bottom = ''\n\t\tmenuEl.style.transform = ''\n\t\tmenuEl.style.marginTop = ''\n\t\tmenuEl.style.position = 'absolute'\n\n\t\tconst menuHeight = menuEl.offsetHeight\n\t\tconst historyItemRect = historyItemEl.getBoundingClientRect()\n\t\tconst listRect = historyListRef.value.getBoundingClientRect()\n\t\tconst buttonEl = menuEl.previousElementSibling as HTMLElement\n\n\t\t// 计算历史记录项底部到列表容器底部的距离\n\t\tconst distanceToBottom = listRect.bottom - historyItemRect.bottom\n\n\t\t// 如果距离小于菜单高度,则显示在上方\n\t\tif (distanceToBottom < menuHeight) {\n\t\t\tif (buttonEl) {\n\t\t\t\t// const buttonRect = buttonEl.getBoundingClientRect();\n\t\t\t\t// 直接设置菜单顶部位置为按钮顶部减去菜单高度\n\t\t\t\tmenuEl.style.top = `${-menuHeight}px`\n\t\t\t\tmenuEl.style.bottom = 'auto'\n\t\t\t\tmenuEl.style.transform = 'none'\n\t\t\t}\n\t\t} else {\n\t\t\t// 否则显示在下方\n\t\t\tmenuEl.style.top = '100%'\n\t\t\tmenuEl.style.bottom = 'auto'\n\t\t\tmenuEl.style.transform = 'translateY(0)'\n\t\t}\n\t})\n}\n\n// 添加菜单关闭延迟逻辑\nlet menuCloseTimer: number | null = null\n\nconst preventMenuClose = () => {\n\tif (menuCloseTimer) {\n\t\tclearTimeout(menuCloseTimer)\n\t\tmenuCloseTimer = null\n\t}\n}\n\nconst delayedCloseMenu = (id: string) => {\n\tpreventMenuClose()\n\tmenuCloseTimer = window.setTimeout(() => {\n\t\tstate.actionMenuVisible[id] = false\n\t}, 200)\n}\n</script>\n"],"names":["ref","inject","reactive","item","nextTick","computed","watch","_createElementBlock","_normalizeClass","_createCommentVNode","_Fragment","_renderList","_createElementVNode","_toDisplayString","_openBlock","_withKeys","_withModifiers"],"mappings":"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"}
@@ -702,9 +702,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
702
702
  });
703
703
  };
704
704
  vue.onMounted(async () => {
705
- if (isMounted.value) {
706
- init();
707
- }
705
+ init();
708
706
  isMounted.value = true;
709
707
  availableAgents.value.forEach((agent) => {
710
708
  a2aService.a2aService.registerAgent(agent);