@ai-group/chat-sdk 3.5.3 → 3.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/cjs/components/XAdkChatbot/index.js +18 -0
  2. package/dist/cjs/components/XAdkChatbot/index.js.map +2 -2
  3. package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.js +10 -13
  4. package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.js.map +2 -2
  5. package/dist/cjs/components/XAdkProvider/compound/styles.d.ts +0 -1
  6. package/dist/cjs/components/XAdkProvider/compound/styles.js +0 -10
  7. package/dist/cjs/components/XAdkProvider/compound/styles.js.map +2 -2
  8. package/dist/cjs/components/XAdkSender/index.js +2 -1
  9. package/dist/cjs/components/XAdkSender/index.js.map +2 -2
  10. package/dist/cjs/components/XAdkSender/styles.js +18 -1
  11. package/dist/cjs/components/XAdkSender/styles.js.map +2 -2
  12. package/dist/cjs/components/XAiChatbot/index.d.ts +1 -1
  13. package/dist/cjs/components/XAiChatbot/index.js +183 -50
  14. package/dist/cjs/components/XAiChatbot/index.js.map +2 -2
  15. package/dist/cjs/types/XAdkSender.d.ts +2 -0
  16. package/dist/cjs/types/XAdkSender.js.map +1 -1
  17. package/dist/esm/components/XAdkChatbot/index.js +22 -0
  18. package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
  19. package/dist/esm/components/XAdkProvider/compound/DefaultLayout.js +3 -5
  20. package/dist/esm/components/XAdkProvider/compound/DefaultLayout.js.map +1 -1
  21. package/dist/esm/components/XAdkProvider/compound/styles.d.ts +0 -1
  22. package/dist/esm/components/XAdkProvider/compound/styles.js +2 -3
  23. package/dist/esm/components/XAdkProvider/compound/styles.js.map +1 -1
  24. package/dist/esm/components/XAdkSender/index.js +3 -1
  25. package/dist/esm/components/XAdkSender/index.js.map +1 -1
  26. package/dist/esm/components/XAdkSender/styles.js +2 -2
  27. package/dist/esm/components/XAdkSender/styles.js.map +1 -1
  28. package/dist/esm/components/XAiChatbot/index.d.ts +1 -1
  29. package/dist/esm/components/XAiChatbot/index.js +56 -56
  30. package/dist/esm/components/XAiChatbot/index.js.map +1 -1
  31. package/dist/esm/types/XAdkSender.d.ts +2 -0
  32. package/dist/esm/types/XAdkSender.js.map +1 -1
  33. package/dist/umd/chat-sdk.min.js +1 -1
  34. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["React","useRef","useState","useMemo","Tooltip","Flex","Bubble","Prompts","FileCard","UserOutlined","RedoOutlined","CopyOutlined","DeleteOutlined","clsx","MarkdownIt","reactHtmlParser","MarkdownGlobalStyle","MessageStatus","MessageRole","emptyIcon","arrowUp","arrowDown","thinkIcon","groupIcon","arrowDownBlue","useChatbotContext","useStyles","GlobalStyle","XAiSender","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","md","html","linkify","typographer","defaultRender","renderer","rules","link_open","tokens","idx","options","env","self","renderToken","aIndex","attrIndex","attrPush","attrs","relIndex","ActionHeader","_ref","_last$extra","_ref$execute","execute","_ref$thinks","thinks","styles","_useState","_useState2","_slicedToArray","expanded","setExpanded","_useState3","_useState4","executeExpanded","setExecuteExpanded","length","last","name","icon","extra","className","actionHeaderWrapper","children","actionTitle","onClick","v","src","alt","actionHeaderIcon","flex1","w","actionHeaderDetail","actionDetailTitle","pl","actionDetailContent","style","whiteSpace","executeHiddenWrapper","h","executeWrapper","executeTitle","executeHeaderIcon","executeContent","map","action","_action$extra","_action$extra2","_action$extra3","thinkIcon2","expandIcon","thinkCost","cost","actionHeaderDetailItem","actionHeaderCost","concat","uniqueId","defaultActions","key","tooltip","XAiChatbot","props","_useChatbotContext","mergedProps","_ref2","_ref2$navbarShow","navbarShow","navbar","_ref2$renderNavbar","renderNavbar","_ref2$clearBtnShow","clearBtnShow","_ref2$inputShow","inputShow","_ref2$loading","loading","propLoading","messageTooltip","avatar","userAvatar","propMessages","messages","_ref2$text","text","_ref2$footerTips","footerTips","_ref2$empty","empty","_ref2$emptyStateImage","emptyStateImage","_ref2$emptyStateText","emptyStateText","_ref2$messageActions","messageActions","onMessagesActionsCallback","onSuggestMessageClick","onSend","onClear","onStop","providerId","messageTop","enableUpload","uploadRequest","_useState5","_useState6","content","setContent","_useState7","_useState8","files","setFiles","lastMessageId","isScriptScrolling","chatId","scrollToBottom","current","setTimeout","mainChatWrapper","document","getElementById","scrollTop","scrollHeight","FooterActions","_ref3","data","_ref3$lastMessage","lastMessage","flex","gap","index","_action$render","title","cursor","render","call","MessageFooter","_ref4","_ref4$lastMessage","rolesObject","assistant","placement","bg","typing","step","interval","effect","maxWidth","classNames","user","suggestion","variant","handleSend","obj","handleChange","str","handleStop","NavBar","subtitle","confirmClear","EmptyState","emptyWrapper","emptyImg","weight","textColor","id","wrapper","messageContainer","List","role","messageList","items","msg","_ref5","status","type","_ref5$execute","_ref5$thinks","_ref5$extra","noFooter","stepContent","bubbleContent","init","header","_msg$content2","_msg$content","minWidth","htmlString","item","html2","stepHtmlString","stepLine","vertical","onItemClick","info","description","footer","_msg$content3","msgFiles","wrap","justify","f","_objectSpread","file","fileType","width","height","fileName","size","fileSize","fileUrl","fileId","failed","value","onChangeFiles","onChange","onSubmit"],"sources":["../../../../src/components/XAiChatbot/index.tsx"],"sourcesContent":["// 文件: components/XAiChatbot/index.tsx\n\nimport React, {\n useRef,\n useState,\n useMemo,\n} from 'react';\nimport {\n Tooltip,\n GetProp,\n Flex,\n} from 'antd';\nimport {\n Bubble,\n Prompts,\n Attachments,\n FileCard\n} from '@ant-design/x';\nimport {\n UserOutlined,\n RedoOutlined,\n CopyOutlined,\n DeleteOutlined,\n} from '@ant-design/icons';\nimport clsx from 'clsx';\nimport MarkdownIt from 'markdown-it';\nimport reactHtmlParser from 'react-html-parser';\nimport type { Attachment } from '@ant-design/x/es/attachments';\nimport MarkdownGlobalStyle from '@/styles/markdown';\nimport {\n MessageStatus,\n MessageRole,\n Messages,\n} from '@/types/XAiMessage';\nimport {\n XAiChatbotProps,\n ActionItem,\n} from '@/types/XAiChatbot';\nimport emptyIcon from '@/assets/empty.png';\nimport arrowUp from '@/assets/arrow-up.png';\nimport arrowDown from '@/assets/arrow-down.png';\nimport thinkIcon from '@/assets/think.png';\nimport groupIcon from '@/assets/group.png';\nimport arrowDownBlue from '@/assets/arrow-down-blue.png';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { useStyles, GlobalStyle } from './styles';\nimport XAiSender from '../XAiSender';\nimport type { SendContent } from '@/types';\n\nconst md = new MarkdownIt({\n html: true,\n linkify: true,\n typographer: true,\n});\n\n// 自定义 link_open 渲染规则\nconst defaultRender = md.renderer.rules.link_open || ((tokens, idx, options, env, self) => {\n return self.renderToken(tokens, idx, options);\n});\n\n// a 标签打开规则\nmd.renderer.rules.link_open = (tokens, idx, options, env, self) => {\n // 添加 target=\"_blank\"\n const aIndex = tokens[idx].attrIndex('target');\n if (aIndex < 0) {\n tokens[idx].attrPush(['target', '_blank']);\n } else {\n tokens[idx].attrs![aIndex][1] = '_blank';\n }\n // 添加 rel=\"noopener noreferrer\"\n const relIndex = tokens[idx].attrIndex('rel');\n if (relIndex < 0) {\n tokens[idx].attrPush(['rel', 'noopener noreferrer']);\n } else {\n tokens[idx].attrs![relIndex][1] = 'noopener noreferrer';\n }\n return defaultRender(tokens, idx, options, env, self);\n};\n\nexport interface ActionHeaderProps {\n execute: any[];\n thinks: string;\n}\n\n// ActionHeader 组件\nexport const ActionHeader: React.FC<ActionHeaderProps> = ({ execute = [], thinks = '' }) => {\n const styles = useStyles();\n const [expanded, setExpanded] = useState(true);\n const [executeExpanded, setExecuteExpanded] = useState(false);\n\n // 关键修复:只要有思考内容或执行过程就显示,不要同时要求两者都有\n if (!thinks && (!execute || execute.length === 0)) return null;\n\n const last = execute[execute.length - 1] || {};\n const { name } = last;\n const icon = last?.icon || last?.extra?.icon;\n\n return (\n <div className={styles.actionHeaderWrapper}>\n {!expanded && (\n <div className={styles.actionTitle} onClick={() => setExpanded((v) => !v)}>\n <img src={thinkIcon} alt=\"icon\" className={styles.actionHeaderIcon} />\n <span className={styles.flex1}>运行过程</span>\n <img alt=\"展开icon\" src={arrowDown} className={styles.w('16px')} />\n </div>\n )}\n {expanded && (\n <div className={styles.actionHeaderDetail}>\n <div className={styles.actionDetailTitle} onClick={() => setExpanded((v) => !v)}>\n <img src={thinkIcon} alt=\"\" className={clsx(styles.w(14))} />\n <div className={clsx(styles.flex1, styles.pl(10))}>隐藏运行过程</div>\n <img alt=\"收起icon\" src={arrowUp} className={styles.w('16px')} />\n </div>\n\n {thinks && (\n <div className={styles.actionDetailContent} style={{ whiteSpace: 'pre-line' }}>\n {thinks}\n </div>\n )}\n\n {execute && execute.length > 0 && (\n <>\n {!executeExpanded && (\n <div className={styles.executeHiddenWrapper} onClick={() => setExecuteExpanded((v) => !v)}>\n {icon && <img src={icon} alt=\"icon\" className={styles.h(15)} />}\n <span className={styles.flex1}>{name}</span>\n <img alt=\"工具icon\" src={arrowDownBlue} className={styles.w('16px')} />\n </div>\n )}\n {executeExpanded && (\n <div className={styles.executeWrapper}>\n <div className={styles.executeTitle} onClick={() => setExecuteExpanded((v) => !v)}>\n <img src={groupIcon} alt=\"icon\" className={styles.executeHeaderIcon} />\n <span className={styles.flex1}>隐藏运行详情</span>\n <img alt=\"展开详情icon\" src={arrowUp} className={styles.w('16px')} />\n </div>\n <div className={styles.executeContent}>\n {execute.map((action: any, idx: number) => {\n const thinkIcon2 = action?.expandIcon || action?.extra?.expandIcon || action?.extra?.icon || action?.icon;\n const thinkCost = action?.cost || action?.extra?.cost;\n return (\n <div key={action.uniqueId || idx} className={styles.actionHeaderDetailItem}>\n {thinkIcon2 && <img src={thinkIcon2} alt=\"icon\" className={styles.actionHeaderIcon} />}\n <span>{action?.name}</span>\n <span className={styles.actionHeaderCost}>{thinkCost ? `${thinkCost}s` : ''}</span>\n </div>\n );\n })}\n </div>\n </div>\n )}\n </>\n )}\n </div>\n )}\n </div>\n );\n};\n\n// 默认消息功能区\nexport const defaultActions: ActionItem[] = [\n {\n key: 'redo',\n icon: <RedoOutlined />,\n tooltip: '重新生成',\n },\n {\n key: 'copy',\n icon: <CopyOutlined />,\n tooltip: '复制',\n },\n {\n key: 'delete',\n icon: <DeleteOutlined />,\n tooltip: '删除',\n },\n];\n\nconst XAiChatbot: React.FC<XAiChatbotProps> = (props) => {\n const styles = useStyles();\n // 使用新的 Hook 来处理 Provider 上下文\n const { mergedProps } = useChatbotContext(props);\n\n const {\n navbarShow = false,\n navbar,\n renderNavbar = null,\n clearBtnShow = true,\n inputShow = true,\n // renderMessageContent,\n // quickReplies = [],\n // quickRepliesVisible = true,\n // onQuickReplyClick,\n loading: propLoading = false,\n messageTooltip,\n avatar,\n userAvatar,\n messages: propMessages,\n text = '',\n footerTips = '',\n empty = null,\n emptyStateImage = emptyIcon,\n emptyStateText = '我的智能体',\n messageActions = defaultActions,\n onMessagesActionsCallback,\n // 点击帮助消息\n onSuggestMessageClick,\n onSend,\n onClear,\n onStop,\n providerId,\n // 消息顶部\n messageTop,\n enableUpload,\n uploadRequest,\n } = mergedProps as XAiChatbotProps;\n\n // 如果在 Provider 中,使用 Provider 的状态\n const messages = mergedProps.messages || propMessages || [];\n const loading = mergedProps.loading || propLoading;\n\n const [content, setContent] = useState<string>(text); // 输入框文本\n const [files, setFiles] = useState<Attachment[]>([]);\n const lastMessageId = useRef<string>('');\n const isScriptScrolling = useRef<boolean>(false);\n const chatId = providerId ? `za-chatbot-container-${providerId}` : 'za-chatbot-container';\n\n // 滚动到最底部\n const scrollToBottom = () => {\n isScriptScrolling.current = true;\n setTimeout(() => {\n const mainChatWrapper = document.getElementById(chatId);\n if (mainChatWrapper) {\n mainChatWrapper.scrollTop = mainChatWrapper?.scrollHeight;\n }\n isScriptScrolling.current = false;\n }, 0);\n };\n\n // 消息功能区组件\n const FooterActions: React.FC<{ data: Messages; lastMessage: boolean }> = ({ data, lastMessage = false }) => (\n <div className={clsx(styles.flex, styles.gap(13))}>\n {messageActions.map((action: ActionItem, index: number) => {\n if (!lastMessage && action.key === 'redo') return null;\n return (\n <Tooltip key={action.key} title={action.tooltip}>\n <span className={styles.cursor('pointer')} onClick={() => onMessagesActionsCallback?.(index, data)}>\n {action.icon}\n {action.render?.(index, data)}\n </span>\n </Tooltip>\n );\n })}\n </div>\n );\n\n // 消息底部区域\n const MessageFooter: React.FC<{ data: Messages; lastMessage: boolean }> = ({ data, lastMessage = false }) => (\n <>\n {messageTooltip?.(data)}\n <FooterActions data={data} lastMessage={lastMessage} />\n </>\n );\n\n // 聊天角色\n const rolesObject: GetProp<typeof Bubble.List, 'role'> = {\n assistant: {\n placement: 'start',\n avatar: () => {\n return avatar || <UserOutlined className={clsx(styles.bg('#fde3cf'), styles.userAvatar)} />;\n },\n typing: { step: 5, interval: 20, effect: 'typing' },\n style: {\n maxWidth: 600,\n },\n classNames: {\n content: 'assistant-content',\n },\n },\n user: {\n placement: 'end',\n avatar: () => {\n return userAvatar || <UserOutlined className={clsx(styles.bg('#87d068'), styles.userAvatar)} />;\n },\n classNames: {\n content: 'user-content',\n },\n },\n suggestion: {\n placement: 'start',\n avatar: () => {\n return avatar || <UserOutlined className={clsx(styles.bg('#fde3cf'), styles.userAvatar)} />;\n },\n variant: 'borderless',\n },\n };\n\n // 触发发送\n const handleSend = (obj: SendContent) => {\n // 直接使用合并后的 onSend,自动处理 Provider 和独立模式\n onSend?.(obj);\n setContent(''); // 发送后清空输入框内容\n setFiles([]); // 发送后清空文件\n scrollToBottom();\n };\n\n // 输出内容\n const handleChange = (str: string) => {\n setContent(str);\n };\n\n // 停止生成\n const handleStop = () => {\n onStop?.();\n };\n\n // 导航栏\n const NavBar: React.FC = () => {\n if (renderNavbar) {\n return renderNavbar();\n } if (navbar?.title) {\n return (\n <header className={styles.navbar}>\n {navbar.avatar && <img src={navbar.avatar} className={styles.avatar} alt=\"\" />}\n <div>\n <div className={styles.title}>{navbar.title}</div>\n <div className={styles.subtitle}>{navbar.subtitle}</div>\n </div>\n </header>\n );\n }\n return <></>;\n };\n\n // 确认清除\n const confirmClear = () => {\n onClear?.();\n };\n\n // 空状态\n const EmptyState = useMemo(() => () => (\n empty || (\n <div className={styles.emptyWrapper}>\n <img src={emptyStateImage} alt=\"空状态图标\" className={styles.emptyImg} />\n <div className={clsx(styles.text(16), styles.weight(600), styles.textColor('#343434'))}>{emptyStateText}</div>\n </div>\n )\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ), [emptyStateImage, emptyStateText]);\n\n return (\n <>\n <GlobalStyle />\n <MarkdownGlobalStyle />\n <div id=\"x-ai-chatbot\" className={styles.wrapper}>\n { navbarShow && <NavBar /> }\n {/** 消息容器 */}\n <div className={styles.messageContainer}>\n {/* 消息列表主体 */}\n {\n messages?.length\n ? (\n <Bubble.List\n id={chatId}\n role={rolesObject}\n className={styles.messageList}\n items={messages.map((msg: any) => {\n const { id, role, status, type, execute = [], thinks = '', extra = { noFooter: false }, stepContent } = msg as Messages;\n // 最后一条 AI消息标识\n if (role === MessageRole.assistant) {\n lastMessageId.current = id;\n }\n // 会话内容\n const bubbleContent: any = {\n key: id,\n role,\n loading: status === MessageStatus.init,\n header: (() => messageTop\n || (\n <ActionHeader\n execute={execute}\n thinks={thinks}\n />\n )),\n content: (() => {\n // 文本消息\n if (type === 'TextMessage') {\n // 用户消息\n if (role === 'user') {\n return (\n <div\n className=\"ai-markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {msg.content?.text}\n </div>\n );\n }\n\n // 输出html字符串\n const html = md.render(msg.content?.text || '');\n // 生成React节点\n const htmlString = reactHtmlParser(html);\n return (\n <>\n {/* 输出阶段性回答内容 */}\n {stepContent?.length && stepContent.map((item) => {\n // 输出html字符串\n const html2 = md.render(item.content || '');\n // 生成React节点\n const stepHtmlString = reactHtmlParser(html2);\n return (\n <div\n key={item.id}\n className=\"ai-markdown-body step-content\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n <div>\n {stepHtmlString}\n </div>\n <div className={styles.stepLine} />\n </div>\n );\n })}\n {/** 输出最终回答内容 */}\n <div\n className=\"ai-markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {htmlString}\n </div>\n </>\n );\n }\n // 提示类型\n if (type === 'SuggestionMessage') {\n return (\n <Prompts\n vertical\n items={msg.content as any}\n onItemClick={(info) => {\n onSuggestMessageClick?.(info?.data, id);\n if (info.data.description) {\n onSend?.({ text: info.data.description as string });\n }\n }}\n />\n );\n }\n // 其他类型...\n return null;\n })(),\n };\n\n if (!extra.noFooter) {\n bubbleContent.footer = (() => {\n const msgFiles = msg.content?.files || [];\n if (role === MessageRole.user && msgFiles.length) {\n return (\n <Flex gap={8} wrap justify=\"flex-end\">\n {msgFiles.map((f: any) => (\n <FileCard\n styles={{\n file: f?.fileType === 'image' ? {\n width: 100,\n height: 100,\n } : {},\n }}\n key={f.fileId}\n {...f}\n name={f.fileName}\n size={f.fileSize}\n type={f.fileType}\n src={f.fileUrl}\n />\n ))}\n </Flex>\n );\n }\n if (role === MessageRole.assistant && status !== MessageStatus.failed) {\n return <MessageFooter data={msg as Messages} lastMessage={lastMessageId.current === id} />;\n }\n });\n }\n\n return bubbleContent;\n })}\n />\n )\n : (\n <EmptyState />\n )\n }\n </div>\n {/* 输入框 */}\n { inputShow && (\n <XAiSender\n value={content}\n loading={loading}\n footerTips={footerTips}\n clearBtnShow={clearBtnShow}\n enableUpload={enableUpload}\n files={files}\n onChangeFiles={setFiles}\n uploadRequest={uploadRequest}\n onChange={handleChange}\n onSubmit={handleSend}\n onStop={handleStop}\n onClear={confirmClear}\n />\n ) }\n </div>\n </>\n );\n};\n\nexport default XAiChatbot;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useRef","useState","useMemo","Tooltip","Flex","Bubble","Prompts","FileCard","UserOutlined","RedoOutlined","CopyOutlined","DeleteOutlined","clsx","MarkdownIt","reactHtmlParser","MarkdownGlobalStyle","MessageStatus","MessageRole","emptyIcon","arrowUp","arrowDown","thinkIcon","groupIcon","arrowDownBlue","useChatbotContext","useStyles","GlobalStyle","XAiSender","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","md","html","linkify","typographer","defaultRender","renderer","rules","link_open","tokens","idx","options","env","self","renderToken","aIndex","attrIndex","attrPush","attrs","relIndex","ActionHeader","_ref","_last$extra","_ref$execute","execute","_ref$thinks","thinks","styles","_useState","_useState2","_slicedToArray","expanded","setExpanded","_useState3","_useState4","executeExpanded","setExecuteExpanded","length","last","name","icon","extra","className","actionHeaderWrapper","children","actionTitle","onClick","v","src","alt","actionHeaderIcon","flex1","w","actionHeaderDetail","actionDetailTitle","pl","actionDetailContent","style","whiteSpace","executeHiddenWrapper","h","executeWrapper","executeTitle","executeHeaderIcon","executeContent","map","action","_action$extra","_action$extra2","_action$extra3","thinkIcon2","expandIcon","thinkCost","cost","actionHeaderDetailItem","actionHeaderCost","concat","uniqueId","defaultActions","key","tooltip","XAiChatbot","props","_useChatbotContext","mergedProps","_ref2","_ref2$navbarShow","navbarShow","navbar","_ref2$renderNavbar","renderNavbar","_ref2$clearBtnShow","clearBtnShow","_ref2$inputShow","inputShow","_ref2$loading","loading","propLoading","messageTooltip","avatar","userAvatar","propMessages","messages","_ref2$text","text","_ref2$footerTips","footerTips","_ref2$empty","empty","_ref2$emptyStateImage","emptyStateImage","_ref2$emptyStateText","emptyStateText","_ref2$messageActions","messageActions","onMessagesActionsCallback","onSuggestMessageClick","onSend","onClear","onStop","providerId","messageTop","enableUpload","uploadRequest","_useState5","_useState6","content","setContent","_useState7","_useState8","files","setFiles","lastMessageId","isScriptScrolling","chatId","scrollToBottom","current","setTimeout","mainChatWrapper","document","getElementById","scrollTop","scrollHeight","FooterActions","_ref3","data","_ref3$lastMessage","lastMessage","flex","gap","index","_action$render","title","cursor","render","call","MessageFooter","_ref4","_ref4$lastMessage","rolesObject","assistant","placement","bg","typing","step","interval","effect","maxWidth","classNames","user","suggestion","variant","handleSend","obj","handleChange","str","handleStop","NavBar","subtitle","confirmClear","EmptyState","emptyWrapper","emptyImg","weight","textColor","id","wrapper","messageContainer","List","role","messageList","items","msg","_ref5","status","type","_ref5$execute","_ref5$thinks","_ref5$extra","noFooter","stepContent","bubbleContent","init","header","_msg$content2","_msg$content","minWidth","htmlString","item","html2","stepHtmlString","stepLine","vertical","onItemClick","info","description","footer","_msg$content3","msgFiles","wrap","justify","f","_objectSpread","file","fileType","width","height","fileName","size","fileSize","fileUrl","fileId","failed","value","onChangeFiles","onChange","onSubmit"],"sources":["../../../../src/components/XAiChatbot/index.tsx"],"sourcesContent":["// 文件: components/XAiChatbot/index.tsx\n\nimport React, { useRef, useState, useMemo } from \"react\";\nimport { Tooltip, GetProp, Flex } from \"antd\";\nimport { Bubble, Prompts, FileCard } from \"@ant-design/x\";\nimport {\n UserOutlined,\n RedoOutlined,\n CopyOutlined,\n DeleteOutlined,\n} from \"@ant-design/icons\";\nimport clsx from \"clsx\";\nimport MarkdownIt from \"markdown-it\";\nimport reactHtmlParser from \"react-html-parser\";\nimport type { Attachment } from \"@ant-design/x/es/attachments\";\nimport MarkdownGlobalStyle from \"@/styles/markdown\";\nimport { MessageStatus, MessageRole, Messages } from \"@/types/XAiMessage\";\nimport { XAiChatbotProps, ActionItem } from \"@/types/XAiChatbot\";\nimport emptyIcon from \"@/assets/empty.png\";\nimport arrowUp from \"@/assets/arrow-up.png\";\nimport arrowDown from \"@/assets/arrow-down.png\";\nimport thinkIcon from \"@/assets/think.png\";\nimport groupIcon from \"@/assets/group.png\";\nimport arrowDownBlue from \"@/assets/arrow-down-blue.png\";\nimport { useChatbotContext } from \"@/hooks/useProviderContext\";\nimport { useStyles, GlobalStyle } from \"./styles\";\nimport XAiSender from \"../XAiSender\";\nimport type { SendContent } from \"@/types\";\n\nconst md = new MarkdownIt({\n html: true,\n linkify: true,\n typographer: true,\n});\n\n// 自定义 link_open 渲染规则\nconst defaultRender =\n md.renderer.rules.link_open ||\n ((tokens, idx, options, env, self) => {\n return self.renderToken(tokens, idx, options);\n });\n\n// a 标签打开规则\nmd.renderer.rules.link_open = (tokens, idx, options, env, self) => {\n // 添加 target=\"_blank\"\n const aIndex = tokens[idx].attrIndex(\"target\");\n if (aIndex < 0) {\n tokens[idx].attrPush([\"target\", \"_blank\"]);\n } else {\n tokens[idx].attrs![aIndex][1] = \"_blank\";\n }\n // 添加 rel=\"noopener noreferrer\"\n const relIndex = tokens[idx].attrIndex(\"rel\");\n if (relIndex < 0) {\n tokens[idx].attrPush([\"rel\", \"noopener noreferrer\"]);\n } else {\n tokens[idx].attrs![relIndex][1] = \"noopener noreferrer\";\n }\n return defaultRender(tokens, idx, options, env, self);\n};\n\nexport interface ActionHeaderProps {\n execute: any[];\n thinks: string;\n}\n\n// ActionHeader 组件\nexport const ActionHeader: React.FC<ActionHeaderProps> = ({\n execute = [],\n thinks = \"\",\n}) => {\n const styles = useStyles();\n const [expanded, setExpanded] = useState(true);\n const [executeExpanded, setExecuteExpanded] = useState(false);\n\n // 关键修复:只要有思考内容或执行过程就显示,不要同时要求两者都有\n if (!thinks && (!execute || execute.length === 0)) return null;\n\n const last = execute[execute.length - 1] || {};\n const { name } = last;\n const icon = last?.icon || last?.extra?.icon;\n\n return (\n <div className={styles.actionHeaderWrapper}>\n {!expanded && (\n <div\n className={styles.actionTitle}\n onClick={() => setExpanded((v) => !v)}\n >\n <img src={thinkIcon} alt=\"icon\" className={styles.actionHeaderIcon} />\n <span className={styles.flex1}>运行过程</span>\n <img alt=\"展开icon\" src={arrowDown} className={styles.w(\"16px\")} />\n </div>\n )}\n {expanded && (\n <div className={styles.actionHeaderDetail}>\n <div\n className={styles.actionDetailTitle}\n onClick={() => setExpanded((v) => !v)}\n >\n <img src={thinkIcon} alt=\"\" className={clsx(styles.w(14))} />\n <div className={clsx(styles.flex1, styles.pl(10))}>\n 隐藏运行过程\n </div>\n <img alt=\"收起icon\" src={arrowUp} className={styles.w(\"16px\")} />\n </div>\n\n {thinks && (\n <div\n className={styles.actionDetailContent}\n style={{ whiteSpace: \"pre-line\" }}\n >\n {thinks}\n </div>\n )}\n\n {execute && execute.length > 0 && (\n <>\n {!executeExpanded && (\n <div\n className={styles.executeHiddenWrapper}\n onClick={() => setExecuteExpanded((v) => !v)}\n >\n {icon && (\n <img src={icon} alt=\"icon\" className={styles.h(15)} />\n )}\n <span className={styles.flex1}>{name}</span>\n <img\n alt=\"工具icon\"\n src={arrowDownBlue}\n className={styles.w(\"16px\")}\n />\n </div>\n )}\n {executeExpanded && (\n <div className={styles.executeWrapper}>\n <div\n className={styles.executeTitle}\n onClick={() => setExecuteExpanded((v) => !v)}\n >\n <img\n src={groupIcon}\n alt=\"icon\"\n className={styles.executeHeaderIcon}\n />\n <span className={styles.flex1}>隐藏运行详情</span>\n <img\n alt=\"展开详情icon\"\n src={arrowUp}\n className={styles.w(\"16px\")}\n />\n </div>\n <div className={styles.executeContent}>\n {execute.map((action: any, idx: number) => {\n const thinkIcon2 =\n action?.expandIcon ||\n action?.extra?.expandIcon ||\n action?.extra?.icon ||\n action?.icon;\n const thinkCost = action?.cost || action?.extra?.cost;\n return (\n <div\n key={action.uniqueId || idx}\n className={styles.actionHeaderDetailItem}\n >\n {thinkIcon2 && (\n <img\n src={thinkIcon2}\n alt=\"icon\"\n className={styles.actionHeaderIcon}\n />\n )}\n <span>{action?.name}</span>\n <span className={styles.actionHeaderCost}>\n {thinkCost ? `${thinkCost}s` : \"\"}\n </span>\n </div>\n );\n })}\n </div>\n </div>\n )}\n </>\n )}\n </div>\n )}\n </div>\n );\n};\n\n// 默认消息功能区\nexport const defaultActions: ActionItem[] = [\n {\n key: \"redo\",\n icon: <RedoOutlined />,\n tooltip: \"重新生成\",\n },\n {\n key: \"copy\",\n icon: <CopyOutlined />,\n tooltip: \"复制\",\n },\n {\n key: \"delete\",\n icon: <DeleteOutlined />,\n tooltip: \"删除\",\n },\n];\n\nconst XAiChatbot: React.FC<XAiChatbotProps> = (props) => {\n const styles = useStyles();\n // 使用新的 Hook 来处理 Provider 上下文\n const { mergedProps } = useChatbotContext(props);\n\n const {\n navbarShow = false,\n navbar,\n renderNavbar = null,\n clearBtnShow = true,\n inputShow = true,\n // renderMessageContent,\n // quickReplies = [],\n // quickRepliesVisible = true,\n // onQuickReplyClick,\n loading: propLoading = false,\n messageTooltip,\n avatar,\n userAvatar,\n messages: propMessages,\n text = \"\",\n footerTips = \"\",\n empty = null,\n emptyStateImage = emptyIcon,\n emptyStateText = \"我的智能体\",\n messageActions = defaultActions,\n onMessagesActionsCallback,\n // 点击帮助消息\n onSuggestMessageClick,\n onSend,\n onClear,\n onStop,\n providerId,\n // 消息顶部\n messageTop,\n enableUpload,\n uploadRequest,\n } = mergedProps as XAiChatbotProps;\n\n // 如果在 Provider 中,使用 Provider 的状态\n const messages = mergedProps.messages || propMessages || [];\n const loading = mergedProps.loading || propLoading;\n\n const [content, setContent] = useState<string>(text); // 输入框文本\n const [files, setFiles] = useState<Attachment[]>([]);\n const lastMessageId = useRef<string>(\"\");\n const isScriptScrolling = useRef<boolean>(false);\n const chatId = providerId\n ? `za-chatbot-container-${providerId}`\n : \"za-chatbot-container\";\n\n // 滚动到最底部\n const scrollToBottom = () => {\n isScriptScrolling.current = true;\n setTimeout(() => {\n const mainChatWrapper = document.getElementById(chatId);\n if (mainChatWrapper) {\n mainChatWrapper.scrollTop = mainChatWrapper?.scrollHeight;\n }\n isScriptScrolling.current = false;\n }, 0);\n };\n\n // 消息功能区组件\n const FooterActions: React.FC<{ data: Messages; lastMessage: boolean }> = ({\n data,\n lastMessage = false,\n }) => (\n <div className={clsx(styles.flex, styles.gap(13))}>\n {messageActions.map((action: ActionItem, index: number) => {\n if (!lastMessage && action.key === \"redo\") return null;\n return (\n <Tooltip key={action.key} title={action.tooltip}>\n <span\n className={styles.cursor(\"pointer\")}\n onClick={() => onMessagesActionsCallback?.(index, data)}\n >\n {action.icon}\n {action.render?.(index, data)}\n </span>\n </Tooltip>\n );\n })}\n </div>\n );\n\n // 消息底部区域\n const MessageFooter: React.FC<{ data: Messages; lastMessage: boolean }> = ({\n data,\n lastMessage = false,\n }) => (\n <>\n {messageTooltip?.(data)}\n <FooterActions data={data} lastMessage={lastMessage} />\n </>\n );\n\n // 聊天角色\n const rolesObject: GetProp<typeof Bubble.List, \"role\"> = {\n assistant: {\n placement: \"start\",\n avatar: () => {\n return (\n avatar || (\n <UserOutlined\n className={clsx(styles.bg(\"#fde3cf\"), styles.userAvatar)}\n />\n )\n );\n },\n typing: { step: 5, interval: 20, effect: \"typing\" },\n style: {\n maxWidth: 600,\n },\n classNames: {\n content: \"assistant-content\",\n },\n },\n user: {\n placement: \"end\",\n avatar: () => {\n return (\n userAvatar || (\n <UserOutlined\n className={clsx(styles.bg(\"#87d068\"), styles.userAvatar)}\n />\n )\n );\n },\n classNames: {\n content: \"user-content\",\n },\n },\n suggestion: {\n placement: \"start\",\n avatar: () => {\n return (\n avatar || (\n <UserOutlined\n className={clsx(styles.bg(\"#fde3cf\"), styles.userAvatar)}\n />\n )\n );\n },\n variant: \"borderless\",\n },\n };\n\n // 触发发送\n const handleSend = (obj: SendContent) => {\n // 直接使用合并后的 onSend,自动处理 Provider 和独立模式\n onSend?.(obj);\n setContent(\"\"); // 发送后清空输入框内容\n setFiles([]); // 发送后清空文件\n scrollToBottom();\n };\n\n // 输出内容\n const handleChange = (str: string) => {\n setContent(str);\n };\n\n // 停止生成\n const handleStop = () => {\n onStop?.();\n };\n\n // 导航栏\n const NavBar: React.FC = () => {\n if (renderNavbar) {\n return renderNavbar();\n }\n if (navbar?.title) {\n return (\n <header className={styles.navbar}>\n {navbar.avatar && (\n <img src={navbar.avatar} className={styles.avatar} alt=\"\" />\n )}\n <div>\n <div className={styles.title}>{navbar.title}</div>\n <div className={styles.subtitle}>{navbar.subtitle}</div>\n </div>\n </header>\n );\n }\n return <></>;\n };\n\n // 确认清除\n const confirmClear = () => {\n onClear?.();\n };\n\n // 空状态\n const EmptyState = useMemo(\n () => () =>\n empty || (\n <div className={styles.emptyWrapper}>\n <img\n src={emptyStateImage}\n alt=\"空状态图标\"\n className={styles.emptyImg}\n />\n <div\n className={clsx(\n styles.text(16),\n styles.weight(600),\n styles.textColor(\"#343434\"),\n )}\n >\n {emptyStateText}\n </div>\n </div>\n ),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [emptyStateImage, emptyStateText],\n );\n\n return (\n <>\n <GlobalStyle />\n <MarkdownGlobalStyle />\n <div id=\"x-ai-chatbot\" className={styles.wrapper}>\n {navbarShow && <NavBar />}\n {/** 消息容器 */}\n <div className={styles.messageContainer}>\n {/* 消息列表主体 */}\n {messages?.length ? (\n <Bubble.List\n id={chatId}\n role={rolesObject}\n className={styles.messageList}\n items={messages.map((msg: any) => {\n const {\n id,\n role,\n status,\n type,\n execute = [],\n thinks = \"\",\n extra = { noFooter: false },\n stepContent,\n } = msg as Messages;\n // 最后一条 AI消息标识\n if (role === MessageRole.assistant) {\n lastMessageId.current = id;\n }\n // 会话内容\n const bubbleContent: any = {\n key: id,\n role,\n loading: status === MessageStatus.init,\n header: () =>\n messageTop || (\n <ActionHeader execute={execute} thinks={thinks} />\n ),\n content: (() => {\n // 文本消息\n if (type === \"TextMessage\") {\n // 用户消息\n if (role === \"user\") {\n return (\n <div\n className=\"ai-markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {msg.content?.text}\n </div>\n );\n }\n\n // 输出html字符串\n const html = md.render(msg.content?.text || \"\");\n // 生成React节点\n const htmlString = reactHtmlParser(html);\n return (\n <>\n {/* 输出阶段性回答内容 */}\n {stepContent?.length &&\n stepContent.map((item) => {\n // 输出html字符串\n const html2 = md.render(item.content || \"\");\n // 生成React节点\n const stepHtmlString = reactHtmlParser(html2);\n return (\n <div\n key={item.id}\n className=\"ai-markdown-body step-content\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n <div>{stepHtmlString}</div>\n <div className={styles.stepLine} />\n </div>\n );\n })}\n {/** 输出最终回答内容 */}\n <div\n className=\"ai-markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {htmlString}\n </div>\n </>\n );\n }\n // 提示类型\n if (type === \"SuggestionMessage\") {\n return (\n <Prompts\n vertical\n items={msg.content as any}\n onItemClick={(info) => {\n onSuggestMessageClick?.(info?.data, id);\n if (info.data.description) {\n onSend?.({\n text: info.data.description as string,\n });\n }\n }}\n />\n );\n }\n // 其他类型...\n return null;\n })(),\n };\n\n if (!extra.noFooter) {\n bubbleContent.footer = () => {\n const msgFiles = msg.content?.files || [];\n if (role === MessageRole.user && msgFiles.length) {\n return (\n <Flex gap={8} wrap justify=\"flex-end\">\n {msgFiles.map((f: any) => (\n <FileCard\n styles={{\n file:\n f?.fileType === \"image\"\n ? {\n width: 100,\n height: 100,\n }\n : {},\n }}\n key={f.fileId}\n {...f}\n name={f.fileName}\n size={f.fileSize}\n type={f.fileType}\n src={f.fileUrl}\n />\n ))}\n </Flex>\n );\n }\n if (\n role === MessageRole.assistant &&\n status !== MessageStatus.failed\n ) {\n return (\n <MessageFooter\n data={msg as Messages}\n lastMessage={lastMessageId.current === id}\n />\n );\n }\n };\n }\n\n return bubbleContent;\n })}\n />\n ) : (\n <EmptyState />\n )}\n </div>\n {/* 输入框 */}\n {inputShow && (\n <XAiSender\n value={content}\n loading={loading}\n footerTips={footerTips}\n clearBtnShow={clearBtnShow}\n enableUpload={enableUpload}\n files={files}\n onChangeFiles={setFiles}\n uploadRequest={uploadRequest}\n onChange={handleChange}\n onSubmit={handleSend}\n onStop={handleStop}\n onClear={confirmClear}\n />\n )}\n </div>\n </>\n );\n};\n\nexport default XAiChatbot;\n"],"mappings":"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"}
@@ -74,6 +74,8 @@ export interface SenderUIProps {
74
74
  allowUpload?: boolean;
75
75
  /** 是否启用 Sender 自身的拖拽上传,设为 false 时由外层(如 DefaultLayout)管理拖拽 */
76
76
  draggable?: boolean;
77
+ /** 是否显示输入框顶部渐变遮罩(通过 ::before 伪元素实现),默认开启 */
78
+ showMask?: boolean;
77
79
  loading?: boolean;
78
80
  disabled?: boolean;
79
81
  /** 受控:输入框的值 */
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../src/types/XAdkSender.ts"],"sourcesContent":["// types/XAdkSender.ts\nimport React from \"react\";\n\nexport interface UploadFileResult {\n fileName?: string;\n fileId?: string | number;\n tempUrl?: string;\n url?: string;\n fileUrl?: string;\n fileType?: string;\n fileSize?: number;\n mimeType?: string;\n [key: string]: any;\n}\n\nexport interface UploadSuccessResponse {\n data?: UploadFileResult | UploadFileResult[];\n [key: string]: any;\n}\n\ninterface uploadRequestProps {\n (options: {\n file: File;\n onProgress?: (e: { percent: number }) => void;\n onSuccess?: (\n response: UploadFileResult | UploadFileResult[] | UploadSuccessResponse,\n ) => void;\n onError?: (error: Error) => void;\n }): Promise<void> | void;\n}\n\nexport type UploadRequestFn = uploadRequestProps;\n\nexport interface ServerFile {\n fileName: string;\n fileId: string | number;\n tempUrl: string;\n type: string;\n size?: number;\n mimeType: string;\n raw?: UploadFileResult;\n}\n\nexport interface LocalFile {\n id: string;\n uid: string;\n name: string;\n file: File;\n size: number;\n type: string;\n progress: number;\n status: \"pending\" | \"uploading\" | \"success\" | \"error\";\n // 服务器返回字段\n fileId?: string | number;\n tempUrl?: string;\n response?: any;\n errorMessage?: string; // 上传错误信息\n}\n\nexport type FileValidator = (\n file: File,\n context: { files: LocalFile[] },\n) => string | null;\n\nexport interface ActionsComponents {\n SendButton: React.ComponentType<any>;\n UploadButton: React.ComponentType<any>;\n ClearButton: React.ComponentType<any>;\n}\n\nexport type SlotRenderFunction = (\n oriNode: React.ReactNode,\n info: { components: ActionsComponents },\n) => React.ReactNode | false;\n\n// 上传相关\nexport interface UploaderCoreProps {\n uploadRequest?: uploadRequestProps;\n\n maxFileSize?: number;\n allowedFileTypes?: string[];\n maxFiles?: number;\n\n validators?: FileValidator[];\n\n // 数据层回调\n onFilesChange?: (files: LocalFile[]) => void;\n onUploadSuccess?: (file: LocalFile) => void;\n onUploadError?: (file: LocalFile, error: Error) => void;\n}\n\n// UI 相关\nexport interface SenderUIProps {\n clearBtnShow?: boolean;\n allowUpload?: boolean;\n /** 是否启用 Sender 自身的拖拽上传,设为 false 时由外层(如 DefaultLayout)管理拖拽 */\n draggable?: boolean;\n loading?: boolean;\n disabled?: boolean; // 只读状态\n /** 受控:输入框的值 */\n value?: string;\n /** 非受控:输入框默认值 */\n defaultValue?: string;\n onClear?: () => void;\n onChange?: (value: string) => void;\n onSubmit?: (data: { text: string; files: ServerFile[] }) => void;\n onStop?: () => void;\n\n /** 自定义发送按钮渲染 */\n sendButtonRender?: (info: {\n loading: boolean;\n disabled: boolean;\n /** 当前是否可以发送(文本非空或有已上传的文件) */\n canSend: boolean;\n onSend: () => void;\n onStop?: () => void;\n }) => React.ReactNode;\n\n // UI插槽功能\n /** 后缀内容,默认展示操作按钮,设为 false 时不显示 */\n suffix?: React.ReactNode | false | SlotRenderFunction;\n /** 头部面板 */\n header?: React.ReactNode | false | SlotRenderFunction;\n /** 前缀内容 */\n prefix?: React.ReactNode | false | SlotRenderFunction;\n /** 底部内容 */\n footer?: React.ReactNode | false | SlotRenderFunction;\n}\n\nexport type XAdkSenderProps = SenderUIProps & UploaderCoreProps;\n\nexport interface XAdkSenderHandle {\n addFiles: (files: File[]) => void;\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["../../../src/types/XAdkSender.ts"],"sourcesContent":["// types/XAdkSender.ts\nimport React from \"react\";\n\nexport interface UploadFileResult {\n fileName?: string;\n fileId?: string | number;\n tempUrl?: string;\n url?: string;\n fileUrl?: string;\n fileType?: string;\n fileSize?: number;\n mimeType?: string;\n [key: string]: any;\n}\n\nexport interface UploadSuccessResponse {\n data?: UploadFileResult | UploadFileResult[];\n [key: string]: any;\n}\n\ninterface uploadRequestProps {\n (options: {\n file: File;\n onProgress?: (e: { percent: number }) => void;\n onSuccess?: (\n response: UploadFileResult | UploadFileResult[] | UploadSuccessResponse,\n ) => void;\n onError?: (error: Error) => void;\n }): Promise<void> | void;\n}\n\nexport type UploadRequestFn = uploadRequestProps;\n\nexport interface ServerFile {\n fileName: string;\n fileId: string | number;\n tempUrl: string;\n type: string;\n size?: number;\n mimeType: string;\n raw?: UploadFileResult;\n}\n\nexport interface LocalFile {\n id: string;\n uid: string;\n name: string;\n file: File;\n size: number;\n type: string;\n progress: number;\n status: \"pending\" | \"uploading\" | \"success\" | \"error\";\n // 服务器返回字段\n fileId?: string | number;\n tempUrl?: string;\n response?: any;\n errorMessage?: string; // 上传错误信息\n}\n\nexport type FileValidator = (\n file: File,\n context: { files: LocalFile[] },\n) => string | null;\n\nexport interface ActionsComponents {\n SendButton: React.ComponentType<any>;\n UploadButton: React.ComponentType<any>;\n ClearButton: React.ComponentType<any>;\n}\n\nexport type SlotRenderFunction = (\n oriNode: React.ReactNode,\n info: { components: ActionsComponents },\n) => React.ReactNode | false;\n\n// 上传相关\nexport interface UploaderCoreProps {\n uploadRequest?: uploadRequestProps;\n\n maxFileSize?: number;\n allowedFileTypes?: string[];\n maxFiles?: number;\n\n validators?: FileValidator[];\n\n // 数据层回调\n onFilesChange?: (files: LocalFile[]) => void;\n onUploadSuccess?: (file: LocalFile) => void;\n onUploadError?: (file: LocalFile, error: Error) => void;\n}\n\n// UI 相关\nexport interface SenderUIProps {\n clearBtnShow?: boolean;\n allowUpload?: boolean;\n /** 是否启用 Sender 自身的拖拽上传,设为 false 时由外层(如 DefaultLayout)管理拖拽 */\n draggable?: boolean;\n /** 是否显示输入框顶部渐变遮罩(通过 ::before 伪元素实现),默认开启 */\n showMask?: boolean;\n loading?: boolean;\n disabled?: boolean; // 只读状态\n /** 受控:输入框的值 */\n value?: string;\n /** 非受控:输入框默认值 */\n defaultValue?: string;\n onClear?: () => void;\n onChange?: (value: string) => void;\n onSubmit?: (data: { text: string; files: ServerFile[] }) => void;\n onStop?: () => void;\n\n /** 自定义发送按钮渲染 */\n sendButtonRender?: (info: {\n loading: boolean;\n disabled: boolean;\n /** 当前是否可以发送(文本非空或有已上传的文件) */\n canSend: boolean;\n onSend: () => void;\n onStop?: () => void;\n }) => React.ReactNode;\n\n // UI插槽功能\n /** 后缀内容,默认展示操作按钮,设为 false 时不显示 */\n suffix?: React.ReactNode | false | SlotRenderFunction;\n /** 头部面板 */\n header?: React.ReactNode | false | SlotRenderFunction;\n /** 前缀内容 */\n prefix?: React.ReactNode | false | SlotRenderFunction;\n /** 底部内容 */\n footer?: React.ReactNode | false | SlotRenderFunction;\n}\n\nexport type XAdkSenderProps = SenderUIProps & UploaderCoreProps;\n\nexport interface XAdkSenderHandle {\n addFiles: (files: File[]) => void;\n}\n"],"mappings":""}