tdesign-web-components 1.3.0-alpha.2 → 1.3.1-alpha.0
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/cjs/chat-message/chat-item.js +4 -2
- package/cjs/chat-message/chat-item.js.map +1 -1
- package/cjs/chat-message/content/attachment-content.d.ts +2 -2
- package/cjs/chat-message/content/attachment-content.js +21 -12
- package/cjs/chat-message/content/attachment-content.js.map +1 -1
- package/cjs/chat-message/type.d.ts +2 -0
- package/dist/TDesign Web Components.js +502 -491
- package/dist/TDesign Web Components.js.map +1 -1
- package/dist/TDesign Web Components.min.js +1 -1
- package/dist/TDesign Web Components.min.js.map +1 -1
- package/dist/stats-umd-network.html +1 -1
- package/dist/stats-umd-sunburst.html +1 -1
- package/dist/stats-umd.html +1 -1
- package/esm/chat-message/chat-item.js +4 -2
- package/esm/chat-message/chat-item.js.map +1 -1
- package/esm/chat-message/content/attachment-content.d.ts +2 -2
- package/esm/chat-message/content/attachment-content.js +21 -12
- package/esm/chat-message/content/attachment-content.js.map +1 -1
- package/esm/chat-message/type.d.ts +2 -0
- package/lib/chat-message/chat-item.js +4 -2
- package/lib/chat-message/chat-item.js.map +1 -1
- package/lib/chat-message/content/attachment-content.d.ts +2 -2
- package/lib/chat-message/content/attachment-content.js +21 -12
- package/lib/chat-message/content/attachment-content.js.map +1 -1
- package/lib/chat-message/type.d.ts +2 -0
- package/package.json +1 -1
|
@@ -293,10 +293,12 @@ exports["default"] = /*#__PURE__*/function (_Component) {
|
|
|
293
293
|
}
|
|
294
294
|
if (role === "user") {
|
|
295
295
|
if (chatEngine_utils_index.isAttachmentContent(content)) {
|
|
296
|
-
return
|
|
296
|
+
return /* @__PURE__ */omi.Component.h("slot", {
|
|
297
297
|
key: elementKey,
|
|
298
|
+
name: "".concat(content.type, "-").concat(index)
|
|
299
|
+
}, chatMessage_content_attachmentContent.renderAttachments(_objectSpread({
|
|
298
300
|
content: content.data
|
|
299
|
-
},
|
|
301
|
+
}, chatContentProps === null || chatContentProps === void 0 ? void 0 : chatContentProps.attachments)));
|
|
300
302
|
}
|
|
301
303
|
if (chatEngine_utils_index.isTextContent(content) || chatEngine_utils_index.isMarkdownContent(content)) {
|
|
302
304
|
return /* @__PURE__ */omi.Component.h("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-item.js","sources":["../../src/chat-message/chat-item.tsx"],"sourcesContent":["import './content/markdown-content';\nimport './content/reasoning-content';\nimport '../collapse';\nimport '../chat-loading';\nimport '../attachments';\nimport '../chat-action';\nimport '../image';\nimport 'tdesign-icons-web-components/esm/components/refresh';\nimport 'tdesign-icons-web-components/esm/components/copy';\nimport 'tdesign-icons-web-components/esm/components/thumb-up-filled';\nimport 'tdesign-icons-web-components/esm/components/thumb-down-filled';\nimport 'tdesign-icons-web-components/esm/components/thumb-up';\nimport 'tdesign-icons-web-components/esm/components/thumb-down';\nimport 'tdesign-icons-web-components/esm/components/share-1';\n\nimport { isString } from 'lodash-es';\nimport { Component, OmiProps, signal, tag } from 'omi';\n\nimport classname, { getClassPrefix } from '../_util/classname';\nimport { setExportparts } from '../_util/dom';\nimport { convertToLightDomNode } from '../_util/lightDom';\nimport { DefaultChatMessageActionsName } from '../chat-action/action';\nimport {\n isAttachmentContent,\n isImageContent,\n isMarkdownContent,\n isReasoningContent,\n isSearchContent,\n isSuggestionContent,\n isTextContent,\n isThinkingContent,\n isUserMessage,\n} from '../chat-engine';\nimport type { ChatMessagesData } from '../chat-engine/type';\nimport { renderAttachments } from './content/attachment-content';\nimport { renderReasoning } from './content/reasoning-content';\nimport { renderSearch } from './content/search-content';\nimport { renderSuggestion } from './content/suggestion-content';\nimport { renderThinking } from './content/thinking-content';\nimport type { TdChatMessageActionName, TdChatMessageProps } from './type';\n\nimport styles from './style/chat-item.less';\n\nconst className = `${getClassPrefix()}-chat__item`;\n\ntype ChatMessageProps = TdChatMessageProps;\n@tag('t-chat-item')\nexport default class ChatItem extends Component<ChatMessageProps> {\n static css = [styles];\n\n // 声明哪些prop是slot\n static slotProps = ['avatar', 'name'];\n\n static propTypes = {\n actions: [Array, Function, Boolean],\n name: [String, Object], // 支持传入String或ReactNode\n avatar: [String, Object], // 支持传入String或ReactNode\n datetime: String,\n message: Object,\n role: String,\n content: Array,\n status: String,\n id: String,\n placement: String,\n variant: String,\n chatContentProps: Object,\n handleActions: Object,\n animation: String,\n };\n\n static defaultProps = {\n actions: DefaultChatMessageActionsName,\n variant: 'text',\n placement: 'left',\n animation: 'skeleton',\n };\n\n searchExpand = signal(false);\n\n // 将外部传入的 props 转换为内部的 message 变量\n private getInternalMessage(): ChatMessagesData | null {\n const { message, role, content, status, id } = this.props;\n\n // 优先使用直接传入的属性,这里不要先解构message再覆盖属性,发现会覆盖undefined\n return {\n id: id || message?.id,\n role: role || message?.role,\n content: content || message?.content,\n status: status || message?.status,\n } as ChatMessagesData;\n }\n\n receiveProps(\n props: ChatMessageProps | OmiProps<ChatMessageProps, any>,\n oldProps: ChatMessageProps | OmiProps<ChatMessageProps, any>,\n ) {\n const newMsg = this.getInternalMessageFromProps(props);\n const oldMsg = this.getInternalMessageFromProps(oldProps);\n\n // 处理用户消息\n if (isUserMessage(newMsg) && isUserMessage(oldMsg) && newMsg?.content === oldMsg?.content) {\n return false;\n }\n\n return true;\n }\n\n // 从指定的 props 获取内部 message\n private getInternalMessageFromProps(\n props: ChatMessageProps | OmiProps<ChatMessageProps, any>,\n ): ChatMessagesData | null {\n const { message, role, content, status, id = '' } = props;\n\n // 优先使用直接传入的属性,这里不要先解构message再覆盖属性,发现会覆盖undefined\n return {\n id: id || message?.id,\n role: role || message?.role,\n content: content || message?.content,\n status: status || message?.status,\n } as ChatMessagesData;\n }\n\n ready(): void {\n setExportparts(this);\n\n // 监听代码复制事件\n this.addEventListener('code_copy', this.handleCodeCopy as EventListener);\n }\n\n uninstall(): void {\n // 清理事件监听\n this.removeEventListener('code_copy', this.handleCodeCopy as EventListener);\n }\n\n private handleCodeCopy = (event: CustomEvent) => {\n event.stopPropagation();\n const { code, lang } = event.detail;\n this.handleClickAction('codeCopy' as TdChatMessageActionName, { code, lang });\n };\n\n private renderMessageHeader() {\n const { name, datetime } = this.props;\n return (\n <slot name=\"header\">\n {!this.renderMessageWithStatus ? (\n <div class={`${className}__header`}>\n <span class={`${className}__name`}>\n <slot name=\"name\">{this.renderNameContent(name)}</slot>\n </span>\n <span class={`${className}__time`}>\n <slot name=\"datetime\">{datetime}</slot>\n </span>\n </div>\n ) : null}\n </slot>\n );\n }\n\n private renderNameContent(name: any) {\n // 对于非字符串类型(包括React元素),都使用slot\n return isString(name) ? name : null;\n }\n\n private renderAvatar() {\n const { avatar } = this.props;\n\n return (\n <div class={`${className}__avatar`}>\n <slot name=\"avatar\">{this.renderAvatarContent(avatar)}</slot>\n </div>\n );\n }\n\n private renderAvatarContent(avatar: any) {\n if (!avatar) {\n return null;\n }\n // 对于非字符串类型(包括React元素),都使用slot\n return isString(avatar) ? (\n <div className={`${className}__avatar-box`}>\n <img src={avatar} alt=\"avatar\" class={`${className}__avatar-image`} />\n </div>\n ) : null;\n }\n\n private handleClickAction = (action: Partial<TdChatMessageActionName>, data?: any) => {\n const internalMessage = this.getInternalMessage();\n const toData = {\n ...data,\n message: internalMessage,\n };\n if (this.props?.handleActions?.[action]) {\n this.props.handleActions[action](toData);\n }\n this.fire(\n 'chat_message_action',\n { action, data: toData },\n {\n composed: true,\n },\n );\n };\n\n get renderMessageWithStatus() {\n const internalMessage = this.getInternalMessage();\n if (!internalMessage) return null;\n\n const { status, content } = internalMessage;\n const { animation } = this.props;\n const emptyContent = !content || content.length === 0;\n\n if (status === 'pending' || (status === 'streaming' && emptyContent)) {\n return (\n <div class={`${className}-chat-loading`}>\n {convertToLightDomNode(\n <t-chat-loading className={`${className}-chat-loading-light`} animation={animation}></t-chat-loading>,\n )}\n </div>\n );\n }\n if (status === 'error' && (emptyContent || (content.length === 1 && content[0]?.type === 'text'))) {\n return <div className={`${className}-chat-error`}>{content?.[0]?.data || '请求出错'}</div>;\n }\n return null;\n }\n\n renderMessage() {\n const { chatContentProps } = this.props;\n const internalMessage = this.getInternalMessage();\n if (!internalMessage) return null;\n\n const { role, id } = internalMessage;\n return internalMessage?.content?.map((content, index) => {\n const elementKey = `${id}-${index}`;\n // 系统消息渲染\n if (role === 'system') {\n return (\n <div key={elementKey} className={`${getClassPrefix()}-chat__text--${role}`}>\n {content.data}\n </div>\n );\n }\n // 用户消息渲染\n if (role === 'user') {\n if (isAttachmentContent(content)) {\n return renderAttachments({ key: elementKey, content: content.data }, this);\n }\n if (isTextContent(content) || isMarkdownContent(content)) {\n return (\n <div key={elementKey} className={`${getClassPrefix()}-chat__text--${role}`}>\n {content.data}\n </div>\n );\n }\n return <slot key={elementKey} name={`${content?.slotName || `${content.type}-${index}`}`}></slot>;\n }\n\n // AI消息渲染\n if (role === 'assistant') {\n if (isSearchContent(content)) {\n return (\n <slot key={elementKey} name={`${content.type}-${index}`}>\n {renderSearch({\n key: elementKey,\n content: content.data,\n status: content.status,\n useCollapse: chatContentProps?.search?.useCollapse,\n handleSearchItemClick: (data) => this.handleClickAction('searchItem', data),\n handleSearchResultClick: (data) => this.handleClickAction('searchResult', data),\n ...content?.ext,\n })}\n </slot>\n );\n }\n\n if (isSuggestionContent(content)) {\n return (\n <slot key={elementKey} name={`${content.type}-${index}`}>\n {renderSuggestion({\n key: elementKey,\n content: content.data,\n handlePromptClick: (data) => this.handleClickAction('suggestion', data),\n })}\n </slot>\n );\n }\n if (isThinkingContent(content)) {\n // 思考\n return (\n <slot key={elementKey} name={`${content.type}-${index}`}>\n {renderThinking({\n key: elementKey,\n content: content.data,\n status: content.status,\n ...chatContentProps?.thinking,\n ...content?.ext,\n })}\n </slot>\n );\n }\n if (isReasoningContent(content)) {\n // 推理过程\n return (\n <slot key={elementKey} name={`${content.type}-${index}`}>\n {renderReasoning({\n key: elementKey,\n content: content.data,\n status: content.status,\n ...chatContentProps?.reasoning,\n ...content?.ext,\n })}\n </slot>\n );\n }\n if (isImageContent(content)) {\n // 图片\n const { url, name } = content.data;\n return (\n <div key={elementKey} className={`${className}__image`}>\n <img src={url} alt={name} width={200} height={200}></img>\n </div>\n );\n }\n if (isTextContent(content) || isMarkdownContent(content)) {\n // 正文回答\n return (\n <t-chat-md-content\n key={elementKey}\n className={`${className}__detail`}\n {...chatContentProps?.markdown}\n content={content.data}\n ></t-chat-md-content>\n );\n }\n // 自定义渲染slot\n return <slot key={elementKey} name={`${content?.slotName || `${content.type}-${index}`}`}></slot>;\n }\n\n return null;\n });\n }\n\n render(props: ChatMessageProps) {\n const { variant, placement } = props;\n const internalMessage = this.getInternalMessage();\n if (!internalMessage) return;\n\n const baseClass = `${className}__inner`;\n const roleClass = `${className}__role--${internalMessage?.role}`;\n const variantClass = variant ? `${className}--variant--${variant}` : '';\n const placementClass = placement;\n\n return (\n <div\n className={classname(baseClass, roleClass, variantClass, placementClass)}\n // 渲染出原生的header时要设置额外间隔,当用户slot自定义header时不管\n data-has-header={!this.renderMessageWithStatus && (!!props.name || !!props.datetime)}\n >\n {this.renderAvatar()}\n {this.renderMessageWithStatus}\n {!this.renderMessageWithStatus && (\n <div class={`${className}__main`}>\n {this.renderMessageHeader()}\n <slot name=\"content\" className={`${className}__content__slot`}>\n <div class={classname(`${className}__content`, `${className}__content--base`)}>\n {this.renderMessage()}\n </div>\n </slot>\n <slot name=\"actionbar\"></slot>\n </div>\n )}\n </div>\n );\n }\n}\n"],"names":["className","concat","getClassPrefix","ChatItem","_Component","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","_defineProperty","signal","event","stopPropagation","_event$detail","detail","code","lang","handleClickAction","action","data","_this$props","internalMessage","getInternalMessage","toData","_objectSpread","message","props","handleActions","fire","composed","_inherits","_createClass","key","value","_this$props2","role","content","status","id","receiveProps","oldProps","newMsg","getInternalMessageFromProps","oldMsg","isUserMessage","_props$id","ready","setExportparts","addEventListener","handleCodeCopy","uninstall","removeEventListener","renderMessageHeader","_this$props3","name","datetime","renderMessageWithStatus","Component","h","renderNameContent","part","isString","renderAvatar","avatar","renderAvatarContent","src","alt","get","_content$","animation","emptyContent","convertToLightDomNode","type","_content$2","renderMessage","_internalMessage$cont","_this2","chatContentProps","map","index","elementKey","isAttachmentContent","renderAttachments","isTextContent","isMarkdownContent","slotName","isSearchContent","_chatContentProps$sea","renderSearch","useCollapse","search","handleSearchItemClick","handleSearchResultClick","ext","isSuggestionContent","renderSuggestion","handlePromptClick","isThinkingContent","renderThinking","thinking","isReasoningContent","renderReasoning","reasoning","isImageContent","_content$data","url","width","height","markdown","render","variant","placement","baseClass","roleClass","variantClass","placementClass","classname","__publicField","styles","actions","Function","Boolean","String","Object","DefaultChatMessageActionsName","__decorateClass","tag"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chat-item.js","sources":["../../src/chat-message/chat-item.tsx"],"sourcesContent":["import './content/markdown-content';\nimport './content/reasoning-content';\nimport '../collapse';\nimport '../chat-loading';\nimport '../attachments';\nimport '../chat-action';\nimport '../image';\nimport 'tdesign-icons-web-components/esm/components/refresh';\nimport 'tdesign-icons-web-components/esm/components/copy';\nimport 'tdesign-icons-web-components/esm/components/thumb-up-filled';\nimport 'tdesign-icons-web-components/esm/components/thumb-down-filled';\nimport 'tdesign-icons-web-components/esm/components/thumb-up';\nimport 'tdesign-icons-web-components/esm/components/thumb-down';\nimport 'tdesign-icons-web-components/esm/components/share-1';\n\nimport { isString } from 'lodash-es';\nimport { Component, OmiProps, signal, tag } from 'omi';\n\nimport classname, { getClassPrefix } from '../_util/classname';\nimport { setExportparts } from '../_util/dom';\nimport { convertToLightDomNode } from '../_util/lightDom';\nimport { DefaultChatMessageActionsName } from '../chat-action/action';\nimport {\n isAttachmentContent,\n isImageContent,\n isMarkdownContent,\n isReasoningContent,\n isSearchContent,\n isSuggestionContent,\n isTextContent,\n isThinkingContent,\n isUserMessage,\n} from '../chat-engine';\nimport type { ChatMessagesData } from '../chat-engine/type';\nimport { renderAttachments } from './content/attachment-content';\nimport { renderReasoning } from './content/reasoning-content';\nimport { renderSearch } from './content/search-content';\nimport { renderSuggestion } from './content/suggestion-content';\nimport { renderThinking } from './content/thinking-content';\nimport type { TdChatMessageActionName, TdChatMessageProps } from './type';\n\nimport styles from './style/chat-item.less';\n\nconst className = `${getClassPrefix()}-chat__item`;\n\ntype ChatMessageProps = TdChatMessageProps;\n@tag('t-chat-item')\nexport default class ChatItem extends Component<ChatMessageProps> {\n static css = [styles];\n\n // 声明哪些prop是slot\n static slotProps = ['avatar', 'name'];\n\n static propTypes = {\n actions: [Array, Function, Boolean],\n name: [String, Object], // 支持传入String或ReactNode\n avatar: [String, Object], // 支持传入String或ReactNode\n datetime: String,\n message: Object,\n role: String,\n content: Array,\n status: String,\n id: String,\n placement: String,\n variant: String,\n chatContentProps: Object,\n handleActions: Object,\n animation: String,\n };\n\n static defaultProps = {\n actions: DefaultChatMessageActionsName,\n variant: 'text',\n placement: 'left',\n animation: 'skeleton',\n };\n\n searchExpand = signal(false);\n\n // 将外部传入的 props 转换为内部的 message 变量\n private getInternalMessage(): ChatMessagesData | null {\n const { message, role, content, status, id } = this.props;\n\n // 优先使用直接传入的属性,这里不要先解构message再覆盖属性,发现会覆盖undefined\n return {\n id: id || message?.id,\n role: role || message?.role,\n content: content || message?.content,\n status: status || message?.status,\n } as ChatMessagesData;\n }\n\n receiveProps(\n props: ChatMessageProps | OmiProps<ChatMessageProps, any>,\n oldProps: ChatMessageProps | OmiProps<ChatMessageProps, any>,\n ) {\n const newMsg = this.getInternalMessageFromProps(props);\n const oldMsg = this.getInternalMessageFromProps(oldProps);\n\n // 处理用户消息\n if (isUserMessage(newMsg) && isUserMessage(oldMsg) && newMsg?.content === oldMsg?.content) {\n return false;\n }\n\n return true;\n }\n\n // 从指定的 props 获取内部 message\n private getInternalMessageFromProps(\n props: ChatMessageProps | OmiProps<ChatMessageProps, any>,\n ): ChatMessagesData | null {\n const { message, role, content, status, id = '' } = props;\n\n // 优先使用直接传入的属性,这里不要先解构message再覆盖属性,发现会覆盖undefined\n return {\n id: id || message?.id,\n role: role || message?.role,\n content: content || message?.content,\n status: status || message?.status,\n } as ChatMessagesData;\n }\n\n ready(): void {\n setExportparts(this);\n\n // 监听代码复制事件\n this.addEventListener('code_copy', this.handleCodeCopy as EventListener);\n }\n\n uninstall(): void {\n // 清理事件监听\n this.removeEventListener('code_copy', this.handleCodeCopy as EventListener);\n }\n\n private handleCodeCopy = (event: CustomEvent) => {\n event.stopPropagation();\n const { code, lang } = event.detail;\n this.handleClickAction('codeCopy' as TdChatMessageActionName, { code, lang });\n };\n\n private renderMessageHeader() {\n const { name, datetime } = this.props;\n return (\n <slot name=\"header\">\n {!this.renderMessageWithStatus ? (\n <div class={`${className}__header`}>\n <span class={`${className}__name`}>\n <slot name=\"name\">{this.renderNameContent(name)}</slot>\n </span>\n <span class={`${className}__time`}>\n <slot name=\"datetime\">{datetime}</slot>\n </span>\n </div>\n ) : null}\n </slot>\n );\n }\n\n private renderNameContent(name: any) {\n // 对于非字符串类型(包括React元素),都使用slot\n return isString(name) ? name : null;\n }\n\n private renderAvatar() {\n const { avatar } = this.props;\n\n return (\n <div class={`${className}__avatar`}>\n <slot name=\"avatar\">{this.renderAvatarContent(avatar)}</slot>\n </div>\n );\n }\n\n private renderAvatarContent(avatar: any) {\n if (!avatar) {\n return null;\n }\n // 对于非字符串类型(包括React元素),都使用slot\n return isString(avatar) ? (\n <div className={`${className}__avatar-box`}>\n <img src={avatar} alt=\"avatar\" class={`${className}__avatar-image`} />\n </div>\n ) : null;\n }\n\n private handleClickAction = (action: Partial<TdChatMessageActionName>, data?: any) => {\n const internalMessage = this.getInternalMessage();\n const toData = {\n ...data,\n message: internalMessage,\n };\n if (this.props?.handleActions?.[action]) {\n this.props.handleActions[action](toData);\n }\n this.fire(\n 'chat_message_action',\n { action, data: toData },\n {\n composed: true,\n },\n );\n };\n\n get renderMessageWithStatus() {\n const internalMessage = this.getInternalMessage();\n if (!internalMessage) return null;\n\n const { status, content } = internalMessage;\n const { animation } = this.props;\n const emptyContent = !content || content.length === 0;\n\n if (status === 'pending' || (status === 'streaming' && emptyContent)) {\n return (\n <div class={`${className}-chat-loading`}>\n {convertToLightDomNode(\n <t-chat-loading className={`${className}-chat-loading-light`} animation={animation}></t-chat-loading>,\n )}\n </div>\n );\n }\n if (status === 'error' && (emptyContent || (content.length === 1 && content[0]?.type === 'text'))) {\n return <div className={`${className}-chat-error`}>{content?.[0]?.data || '请求出错'}</div>;\n }\n return null;\n }\n\n renderMessage() {\n const { chatContentProps } = this.props;\n const internalMessage = this.getInternalMessage();\n if (!internalMessage) return null;\n\n const { role, id } = internalMessage;\n return internalMessage?.content?.map((content, index) => {\n const elementKey = `${id}-${index}`;\n // 系统消息渲染\n if (role === 'system') {\n return (\n <div key={elementKey} className={`${getClassPrefix()}-chat__text--${role}`}>\n {content.data}\n </div>\n );\n }\n // 用户消息渲染\n if (role === 'user') {\n if (isAttachmentContent(content)) {\n return (\n <slot key={elementKey} name={`${content.type}-${index}`}>\n {renderAttachments({ content: content.data, ...chatContentProps?.attachments })}\n </slot>\n );\n }\n if (isTextContent(content) || isMarkdownContent(content)) {\n return (\n <div key={elementKey} className={`${getClassPrefix()}-chat__text--${role}`}>\n {content.data}\n </div>\n );\n }\n return <slot key={elementKey} name={`${content?.slotName || `${content.type}-${index}`}`}></slot>;\n }\n\n // AI消息渲染\n if (role === 'assistant') {\n if (isSearchContent(content)) {\n return (\n <slot key={elementKey} name={`${content.type}-${index}`}>\n {renderSearch({\n key: elementKey,\n content: content.data,\n status: content.status,\n useCollapse: chatContentProps?.search?.useCollapse,\n handleSearchItemClick: (data) => this.handleClickAction('searchItem', data),\n handleSearchResultClick: (data) => this.handleClickAction('searchResult', data),\n ...content?.ext,\n })}\n </slot>\n );\n }\n\n if (isSuggestionContent(content)) {\n return (\n <slot key={elementKey} name={`${content.type}-${index}`}>\n {renderSuggestion({\n key: elementKey,\n content: content.data,\n handlePromptClick: (data) => this.handleClickAction('suggestion', data),\n })}\n </slot>\n );\n }\n if (isThinkingContent(content)) {\n // 思考\n return (\n <slot key={elementKey} name={`${content.type}-${index}`}>\n {renderThinking({\n key: elementKey,\n content: content.data,\n status: content.status,\n ...chatContentProps?.thinking,\n ...content?.ext,\n })}\n </slot>\n );\n }\n if (isReasoningContent(content)) {\n // 推理过程\n return (\n <slot key={elementKey} name={`${content.type}-${index}`}>\n {renderReasoning({\n key: elementKey,\n content: content.data,\n status: content.status,\n ...chatContentProps?.reasoning,\n ...content?.ext,\n })}\n </slot>\n );\n }\n if (isImageContent(content)) {\n // 图片\n const { url, name } = content.data;\n return (\n <div key={elementKey} className={`${className}__image`}>\n <img src={url} alt={name} width={200} height={200}></img>\n </div>\n );\n }\n if (isTextContent(content) || isMarkdownContent(content)) {\n // 正文回答\n return (\n <t-chat-md-content\n key={elementKey}\n className={`${className}__detail`}\n {...chatContentProps?.markdown}\n content={content.data}\n ></t-chat-md-content>\n );\n }\n // 自定义渲染slot\n return <slot key={elementKey} name={`${content?.slotName || `${content.type}-${index}`}`}></slot>;\n }\n\n return null;\n });\n }\n\n render(props: ChatMessageProps) {\n const { variant, placement } = props;\n const internalMessage = this.getInternalMessage();\n if (!internalMessage) return;\n\n const baseClass = `${className}__inner`;\n const roleClass = `${className}__role--${internalMessage?.role}`;\n const variantClass = variant ? `${className}--variant--${variant}` : '';\n const placementClass = placement;\n\n return (\n <div\n className={classname(baseClass, roleClass, variantClass, placementClass)}\n // 渲染出原生的header时要设置额外间隔,当用户slot自定义header时不管\n data-has-header={!this.renderMessageWithStatus && (!!props.name || !!props.datetime)}\n >\n {this.renderAvatar()}\n {this.renderMessageWithStatus}\n {!this.renderMessageWithStatus && (\n <div class={`${className}__main`}>\n {this.renderMessageHeader()}\n <slot name=\"content\" className={`${className}__content__slot`}>\n <div class={classname(`${className}__content`, `${className}__content--base`)}>\n {this.renderMessage()}\n </div>\n </slot>\n <slot name=\"actionbar\"></slot>\n </div>\n )}\n </div>\n );\n }\n}\n"],"names":["className","concat","getClassPrefix","ChatItem","_Component","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","_defineProperty","signal","event","stopPropagation","_event$detail","detail","code","lang","handleClickAction","action","data","_this$props","internalMessage","getInternalMessage","toData","_objectSpread","message","props","handleActions","fire","composed","_inherits","_createClass","key","value","_this$props2","role","content","status","id","receiveProps","oldProps","newMsg","getInternalMessageFromProps","oldMsg","isUserMessage","_props$id","ready","setExportparts","addEventListener","handleCodeCopy","uninstall","removeEventListener","renderMessageHeader","_this$props3","name","datetime","renderMessageWithStatus","Component","h","renderNameContent","part","isString","renderAvatar","avatar","renderAvatarContent","src","alt","get","_content$","animation","emptyContent","convertToLightDomNode","type","_content$2","renderMessage","_internalMessage$cont","_this2","chatContentProps","map","index","elementKey","isAttachmentContent","renderAttachments","attachments","isTextContent","isMarkdownContent","slotName","isSearchContent","_chatContentProps$sea","renderSearch","useCollapse","search","handleSearchItemClick","handleSearchResultClick","ext","isSuggestionContent","renderSuggestion","handlePromptClick","isThinkingContent","renderThinking","thinking","isReasoningContent","renderReasoning","reasoning","isImageContent","_content$data","url","width","height","markdown","render","variant","placement","baseClass","roleClass","variantClass","placementClass","classname","__publicField","styles","actions","Function","Boolean","String","Object","DefaultChatMessageActionsName","__decorateClass","tag"],"mappings":"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"}
|
|
@@ -3,16 +3,16 @@ import { Component } from 'omi';
|
|
|
3
3
|
import { type AttachmentItem } from '../../chat-engine';
|
|
4
4
|
import { TdAttachmentItem } from '../../filecard';
|
|
5
5
|
export type TdChatAttachmentContentProps = {
|
|
6
|
-
key?: string;
|
|
7
6
|
content?: AttachmentItem[];
|
|
8
7
|
onFileClick?: (event: CustomEvent<TdAttachmentItem>) => void;
|
|
9
8
|
};
|
|
10
|
-
export declare const renderAttachments: ({
|
|
9
|
+
export declare const renderAttachments: ({ content, onFileClick }: TdChatAttachmentContentProps) => JSX.Element;
|
|
11
10
|
export default class AttachmentContentComponent extends Component<TdChatAttachmentContentProps> {
|
|
12
11
|
static css: any;
|
|
13
12
|
static propTypes: {
|
|
14
13
|
content: ObjectConstructor;
|
|
15
14
|
onFileClick: FunctionConstructor;
|
|
16
15
|
};
|
|
16
|
+
onFileClick: (event: any) => void;
|
|
17
17
|
render(props: any): JSX.Element;
|
|
18
18
|
}
|
|
@@ -10,6 +10,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
10
10
|
|
|
11
11
|
var createClass = require('../../_chunks/dep-2cbda8d4.js');
|
|
12
12
|
var inherits = require('../../_chunks/dep-732f8010.js');
|
|
13
|
+
var defineProperty = require('../../_chunks/dep-f5b25212.js');
|
|
13
14
|
var _typeof = require('../../_chunks/dep-b75e0233.js');
|
|
14
15
|
require('../../_chunks/dep-79709fde.js');
|
|
15
16
|
require('../../attachments/attachments.js');
|
|
@@ -18,7 +19,6 @@ var _util_classname = require('../../_util/classname.js');
|
|
|
18
19
|
var chatItem = require('../../_chunks/dep-1465e463.js');
|
|
19
20
|
require('../../_chunks/dep-ee0658df.js');
|
|
20
21
|
require('../../_chunks/dep-7e032778.js');
|
|
21
|
-
require('../../_chunks/dep-f5b25212.js');
|
|
22
22
|
require('../../_chunks/dep-4a9acad4.js');
|
|
23
23
|
require('../../filecard/filecard.js');
|
|
24
24
|
require('../../_chunks/dep-a1c50fba.js');
|
|
@@ -35,6 +35,8 @@ require('../../_chunks/dep-33071bd3.js');
|
|
|
35
35
|
require('../../_util/easing.js');
|
|
36
36
|
require('clsx');
|
|
37
37
|
|
|
38
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
39
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { defineProperty._defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
38
40
|
function _callSuper(t, o, e) { return o = inherits._getPrototypeOf(o), inherits._possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], inherits._getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
39
41
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
40
42
|
var __defProp = Object.defineProperty;
|
|
@@ -58,22 +60,17 @@ var __publicField = function __publicField(obj, key, value) {
|
|
|
58
60
|
return value;
|
|
59
61
|
};
|
|
60
62
|
var className = "".concat(_util_classname.getClassPrefix(), "-chat__item");
|
|
61
|
-
var renderAttachments = function renderAttachments(_ref
|
|
62
|
-
var
|
|
63
|
-
|
|
63
|
+
var renderAttachments = function renderAttachments(_ref) {
|
|
64
|
+
var content = _ref.content,
|
|
65
|
+
onFileClick = _ref.onFileClick;
|
|
64
66
|
return /* @__PURE__ */omi.Component.h("div", {
|
|
65
|
-
key: key,
|
|
66
67
|
className: "".concat(className, "__attachments"),
|
|
67
68
|
part: "".concat(className, "__attachments")
|
|
68
69
|
}, /* @__PURE__ */omi.Component.h("t-attachments", {
|
|
69
70
|
className: "".concat(className, "__attachments__host"),
|
|
70
71
|
items: content,
|
|
71
72
|
removable: false,
|
|
72
|
-
onFileClick:
|
|
73
|
-
self.fire("fileClick", e.detail, {
|
|
74
|
-
composed: true
|
|
75
|
-
});
|
|
76
|
-
},
|
|
73
|
+
onFileClick: onFileClick,
|
|
77
74
|
style: {
|
|
78
75
|
"--td-attachment-image-width": "160px",
|
|
79
76
|
"--td-attachment-image-height": "160px"
|
|
@@ -82,15 +79,27 @@ var renderAttachments = function renderAttachments(_ref, self) {
|
|
|
82
79
|
};
|
|
83
80
|
exports["default"] = /*#__PURE__*/function (_Component) {
|
|
84
81
|
function AttachmentContentComponent() {
|
|
82
|
+
var _this;
|
|
85
83
|
createClass._classCallCheck(this, AttachmentContentComponent);
|
|
86
|
-
|
|
84
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
85
|
+
args[_key] = arguments[_key];
|
|
86
|
+
}
|
|
87
|
+
_this = _callSuper(this, AttachmentContentComponent, [].concat(args));
|
|
88
|
+
defineProperty._defineProperty(_this, "onFileClick", function (event) {
|
|
89
|
+
_this.fire("fileClick", event.detail, {
|
|
90
|
+
composed: true
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
return _this;
|
|
87
94
|
}
|
|
88
95
|
inherits._inherits(AttachmentContentComponent, _Component);
|
|
89
96
|
return createClass._createClass(AttachmentContentComponent, [{
|
|
90
97
|
key: "render",
|
|
91
98
|
value: function render(props) {
|
|
92
99
|
if (!(props !== null && props !== void 0 && props.content)) return;
|
|
93
|
-
return renderAttachments(props,
|
|
100
|
+
return renderAttachments(_objectSpread(_objectSpread({}, props), {}, {
|
|
101
|
+
onFileClick: this.onFileClick
|
|
102
|
+
}));
|
|
94
103
|
}
|
|
95
104
|
}]);
|
|
96
105
|
}(omi.Component);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment-content.js","sources":["../../../src/chat-message/content/attachment-content.tsx"],"sourcesContent":["import '../../attachments';\n\nimport { Component, tag } from 'omi';\n\nimport { getClassPrefix } from '../../_util/classname';\nimport { type AttachmentItem } from '../../chat-engine';\nimport { TdAttachmentItem } from '../../filecard';\n\nimport styles from '../style/chat-item.less';\n\nconst className = `${getClassPrefix()}-chat__item`;\n\nexport type TdChatAttachmentContentProps = {\n
|
|
1
|
+
{"version":3,"file":"attachment-content.js","sources":["../../../src/chat-message/content/attachment-content.tsx"],"sourcesContent":["import '../../attachments';\n\nimport { Component, tag } from 'omi';\n\nimport { getClassPrefix } from '../../_util/classname';\nimport { type AttachmentItem } from '../../chat-engine';\nimport { TdAttachmentItem } from '../../filecard';\n\nimport styles from '../style/chat-item.less';\n\nconst className = `${getClassPrefix()}-chat__item`;\n\nexport type TdChatAttachmentContentProps = {\n content?: AttachmentItem[];\n onFileClick?: (event: CustomEvent<TdAttachmentItem>) => void;\n};\n\n// 纯函数渲染器\nexport const renderAttachments = ({ content, onFileClick }: TdChatAttachmentContentProps) => (\n <div className={`${className}__attachments`}>\n <t-attachments\n className={`${className}__attachments__host`}\n items={content}\n removable={false}\n onFileClick={onFileClick}\n style={{ '--td-attachment-image-width': '160px', '--td-attachment-image-height': '160px' }}\n />\n </div>\n);\n\n// Web Component版本\n@tag('t-chat-attachment-content')\nexport default class AttachmentContentComponent extends Component<TdChatAttachmentContentProps> {\n static css = styles;\n\n static propTypes = {\n content: Object,\n onFileClick: Function,\n };\n\n onFileClick = (event) => {\n this.fire('fileClick', event.detail, { composed: true });\n };\n\n render(props) {\n if (!props?.content) return;\n return renderAttachments({ ...props, onFileClick: this.onFileClick });\n }\n}\n"],"names":["className","concat","getClassPrefix","renderAttachments","_ref","content","onFileClick","Component","h","part","items","removable","style","AttachmentContentComponent","_Component","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","_defineProperty","event","fire","detail","composed","_inherits","_createClass","key","value","render","props","__publicField","styles","Object","Function","__decorateClass","tag"],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import type { TdChatActionsName } from '../chat-action';
|
|
|
2
2
|
import type { AIMessageContent, ChatContentType, ChatMessageRole, ChatMessagesData, ChatMessageStatus, UserMessageContent } from '../chat-engine/type';
|
|
3
3
|
import type { ChatLoadingAnimationType, TdChatLoadingProps } from '../chat-loading';
|
|
4
4
|
import type { TNode } from '../common';
|
|
5
|
+
import { TdChatAttachmentContentProps } from './content/attachment-content';
|
|
5
6
|
import type { TdChatMarkdownContentProps } from './content/markdown-content';
|
|
6
7
|
type TdChatContentSearchProps = {
|
|
7
8
|
useCollapse?: boolean;
|
|
@@ -28,6 +29,7 @@ export type TdChatContentProps = {
|
|
|
28
29
|
thinking?: TdChatContentThinkProps;
|
|
29
30
|
reasoning?: TdChatContentThinkProps;
|
|
30
31
|
suggestion?: TdChatContentSuggestionProps;
|
|
32
|
+
attachments?: TdChatAttachmentContentProps;
|
|
31
33
|
[key: string]: any;
|
|
32
34
|
} & Partial<Record<Exclude<ChatContentType, 'markdown' | 'search' | 'thinking' | 'suggestion'>, any>>;
|
|
33
35
|
export interface TdChatMessageProps {
|