@ai-group/chat-sdk 0.3.0 → 0.3.2

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.
@@ -91,7 +91,8 @@ var XAiChatbot = function XAiChatbot(props) {
91
91
  onSuggestMessageClick = mergedProps.onSuggestMessageClick,
92
92
  onSend = mergedProps.onSend,
93
93
  onClear = mergedProps.onClear,
94
- onStop = mergedProps.onStop;
94
+ onStop = mergedProps.onStop,
95
+ providerId = mergedProps.providerId;
95
96
 
96
97
  // 如果在 Provider 中,使用 Provider 的状态
97
98
  var messages = mergedProps.messages || propMessages || [];
@@ -118,6 +119,20 @@ var XAiChatbot = function XAiChatbot(props) {
118
119
  setClearPopoverVisible = _useState10[1]; // 气泡卡片显隐藏
119
120
  var styles = useStyles();
120
121
  var lastMessageId = useRef('');
122
+ var isScriptScrolling = useRef(false);
123
+ var chatId = providerId ? "za-chatbot-container-".concat(providerId) : 'za-chatbot-container';
124
+
125
+ // 滚动到最底部
126
+ var scrollToBottom = function scrollToBottom() {
127
+ isScriptScrolling.current = true;
128
+ setTimeout(function () {
129
+ var mainChatWrapper = document.getElementById(chatId);
130
+ if (mainChatWrapper) {
131
+ mainChatWrapper.scrollTop = mainChatWrapper === null || mainChatWrapper === void 0 ? void 0 : mainChatWrapper.scrollHeight;
132
+ }
133
+ isScriptScrolling.current = false;
134
+ }, 0);
135
+ };
121
136
 
122
137
  // 消息功能区组件
123
138
  var FooterActions = function FooterActions(_ref) {
@@ -294,6 +309,7 @@ var XAiChatbot = function XAiChatbot(props) {
294
309
  // 直接使用合并后的 onSend,自动处理 Provider 和独立模式
295
310
  onSend === null || onSend === void 0 || onSend('text', content);
296
311
  setContent(''); // 发送后清空输入框内容
312
+ scrollToBottom();
297
313
  }
298
314
  };
299
315
 
@@ -427,6 +443,7 @@ var XAiChatbot = function XAiChatbot(props) {
427
443
  children: [navbarShow && /*#__PURE__*/_jsx(NavBar, {}), /*#__PURE__*/_jsx("div", {
428
444
  className: styles.messageContainer,
429
445
  children: messages !== null && messages !== void 0 && messages.length ? /*#__PURE__*/_jsx(Bubble.List, {
446
+ id: chatId,
430
447
  roles: rolesObject,
431
448
  items: messages.map(function (msg) {
432
449
  var _ref4 = msg,
@@ -444,7 +461,8 @@ var XAiChatbot = function XAiChatbot(props) {
444
461
  if (role === MessageRole.assistant) {
445
462
  lastMessageId.current = id;
446
463
  }
447
- return {
464
+ // 会话内容
465
+ var bubbleContent = {
448
466
  key: id,
449
467
  role: role,
450
468
  loading: status === MessageStatus.init,
@@ -516,16 +534,19 @@ var XAiChatbot = function XAiChatbot(props) {
516
534
  }
517
535
  // 其他类型...
518
536
  return null;
519
- }(),
520
- footer: function footer() {
521
- return extra.noFooter ? null : role === MessageRole.assistant && status !== MessageStatus.failed && /*#__PURE__*/_jsx(_Fragment, {
537
+ }()
538
+ };
539
+ if (!extra.noFooter) {
540
+ bubbleContent.footer = function () {
541
+ return role === MessageRole.assistant && status !== MessageStatus.failed && /*#__PURE__*/_jsx(_Fragment, {
522
542
  children: /*#__PURE__*/_jsx(MessageFooter, {
523
543
  data: msg,
524
544
  lastMessage: lastMessageId.current === id
525
545
  })
526
546
  });
527
- }
528
- };
547
+ };
548
+ }
549
+ return bubbleContent;
529
550
  })
530
551
  }) : /*#__PURE__*/_jsx(EmptyState, {})
531
552
  }), /*#__PURE__*/_jsx("div", {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useRef","useState","useMemo","Button","Space","Spin","Tooltip","Popover","Bubble","Sender","Prompts","ArrowUpOutlined","ClearOutlined","UserOutlined","RedoOutlined","CopyOutlined","DeleteOutlined","clsx","MarkdownIt","reactHtmlParser","MarkdownGlobalStyle","MessageStatus","MessageRole","emptyIcon","groupIcon","arrowUp","arrowDown","useChatbotContext","useStyles","GlobalStyle","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","md","html","linkify","typographer","defaultRender","renderer","rules","link_open","tokens","idx","options","env","self","renderToken","aIndex","attrIndex","attrPush","attrs","relIndex","defaultActions","key","icon","tooltip","XAiChatbot","props","_useChatbotContext","mergedProps","_mergedProps$navbarSh","navbarShow","navbar","_mergedProps$renderNa","renderNavbar","_mergedProps$loading","loading","propLoading","messageTooltip","avatar","userAvatar","propMessages","messages","_mergedProps$text","text","_mergedProps$footerTi","footerTips","_mergedProps$emptySta","emptyStateImage","_mergedProps$emptySta2","emptyStateText","_mergedProps$messageA","messageActions","onMessagesActionsCallback","onSuggestMessageClick","onSend","onClear","onStop","_useState","_useState2","_slicedToArray","disabled","_setDisabled","_useState3","_useState4","content","setContent","_useState5","_useState6","mode","_setMode","_useState7","_useState8","fileUploading","setFileUploading","_useState9","_useState10","clearPopoverVisible","setClearPopoverVisible","styles","lastMessageId","FooterActions","_ref","data","_ref$lastMessage","lastMessage","className","flex","gap","children","map","action","index","title","cursor","onClick","MessageFooter","_ref2","_ref2$lastMessage","rolesObject","assistant","placement","bg","typing","step","interval","style","maxWidth","classNames","user","suggestion","visibility","variant","ActionHeader","_ref3","_first$extra","_ref3$thinks","thinks","renderActionHeader","_useState11","_useState12","expanded","setExpanded","length","onToggle","v","first","name","extra","actionHeaderWrapper","actionHeaderItem","src","alt","actionHeaderIcon","actionHeaderText","w","actionHeaderDetail","actionDetailTitle","flex1","pl","_action$extra","_action$extra2","_action$extra3","thinkIcon","expandIcon","thinkCost","cost","actionHeaderDetailItem","actionHeaderCost","concat","uniqueId","handleSend","trim","NavBar","subtitle","fileInputRef","handleStopGenerate","handleFileSelect","handleClear","cancelClear","confirmClear","clearConfirmContent","p","mb","mt","popoverFooter","size","type","danger","uploadButton","flexCenterGap2","iconZengjiaDisabled","iconZengjiaNormal","current","_fileInputRef$current","click","ref","onChange","display","accept","EmptyState","emptyWrapper","emptyImg","weight","textColor","id","wrapper","messageContainer","List","roles","items","msg","_ref4","role","status","_ref4$thinks","_ref4$extra","noFooter","init","header","_msg$content2","_msg$content","minWidth","render","htmlString","_msg$content3","bytes","vertical","onItemClick","info","description","footer","failed","chatFooter","trigger","open","onOpenChange","clearBtn","border","borderRadius","height","width","value","sendWrapper","placeholder","actions","_","_info$components","components","SendButton","LoadingButton","iconHuihuarenqun","divider","stopButton","sendButton","onSubmit","onCancel"],"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 Button,\n Space,\n Spin,\n Tooltip,\n Popover,\n GetProp,\n} from 'antd';\nimport {\n Bubble,\n Sender,\n Prompts,\n} from '@ant-design/x';\nimport {\n ArrowUpOutlined,\n ClearOutlined,\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 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 groupIcon from '@/assets/group.png';\nimport arrowUp from '@/assets/arrow-up.png';\nimport arrowDown from '@/assets/arrow-down.png';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { useStyles, GlobalStyle } from './styles';\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 thinks: any[];\n renderActionHeader?: (params: { thinks: any[]; expanded: boolean; onToggle: () => void }) => React.ReactNode;\n}\n\n// 默认消息功能区\nconst 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 // 使用新的 Hook 来处理 Provider 上下文\n const { mergedProps } = useChatbotContext(props);\n\n const {\n navbarShow = false,\n navbar,\n renderNavbar = null,\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 emptyStateImage = emptyIcon,\n emptyStateText = '我的智能体',\n messageActions = defaultActions,\n onMessagesActionsCallback,\n // 点击帮助消息\n onSuggestMessageClick,\n onSend,\n onClear,\n onStop,\n } = mergedProps;\n\n // 如果在 Provider 中,使用 Provider 的状态\n const messages = mergedProps.messages || propMessages || [];\n const loading = mergedProps.loading || propLoading;\n\n const [disabled, _setDisabled] = useState<boolean>(false); // 是否禁止输入\n const [content, setContent] = useState<string>(text); // 输入框文本\n const [mode, _setMode] = useState<string>(''); // todo 模式\n const [fileUploading, setFileUploading] = useState(false); // 文件上传进度条\n const [clearPopoverVisible, setClearPopoverVisible] = useState(false); // 气泡卡片显隐藏\n const styles = useStyles();\n const lastMessageId = useRef<string>('');\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 </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, 'roles'> = {\n assistant: {\n placement: 'start',\n avatar: { icon: avatar || <UserOutlined className={clsx(styles.bg('#fde3cf'), styles.userAvatar)} /> },\n typing: { step: 5, interval: 20 },\n style: {\n maxWidth: 600,\n },\n classNames: {\n content: 'assistant-content',\n },\n },\n user: {\n placement: 'end',\n avatar: { icon: userAvatar || <UserOutlined className={clsx(styles.bg('#87d068'), styles.userAvatar)} /> },\n classNames: {\n content: 'user-content',\n },\n },\n suggestion: {\n placement: 'start',\n avatar: { icon: <UserOutlined />, style: { visibility: 'hidden' } },\n variant: 'borderless',\n },\n };\n\n // ActionHeader 组件\n const ActionHeader: React.FC<ActionHeaderProps> = ({ thinks = [], renderActionHeader }) => {\n const [expanded, setExpanded] = useState(false);\n if (!thinks || thinks.length === 0) return null;\n if (renderActionHeader) {\n return renderActionHeader({ thinks, expanded, onToggle: () => setExpanded((v) => !v) });\n }\n // 默认渲染\n const first = thinks[0];\n const { name } = first;\n const icon = first?.icon || first?.extra?.icon;\n return (\n <div className={styles.actionHeaderWrapper}>\n { !expanded && (\n <div\n className={styles.actionHeaderItem}\n onClick={() => setExpanded((v) => !v)}\n >\n { icon && <img src={icon} alt=\"icon\" className={styles.actionHeaderIcon} /> }\n <span className={styles.actionHeaderText}>{name}</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={groupIcon} 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 {thinks.map((action, idx) => {\n const thinkIcon = 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 { thinkIcon && <img src={thinkIcon} 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 )}\n </div>\n );\n };\n\n // 触发发送\n const handleSend = () => {\n if (content.trim()) {\n // 直接使用合并后的 onSend,自动处理 Provider 和独立模式\n onSend?.('text', content);\n setContent(''); // 发送后清空输入框内容\n }\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 fileInputRef = useRef<HTMLInputElement>(null);\n\n // 停止生成\n const handleStopGenerate = () => {\n onStop?.();\n };\n\n // 选择文件\n const handleFileSelect = () => {};\n\n // 点击清除按钮\n const handleClear = () => {\n setClearPopoverVisible(true);\n };\n\n // 取消清除\n const cancelClear = () => {\n setClearPopoverVisible(false);\n };\n\n // 确认清除\n const confirmClear = () => {\n setContent('');\n onClear?.();\n setClearPopoverVisible(false);\n };\n\n // 清空按钮提示文案\n const clearConfirmContent = (\n <div className={styles.p('2px')}>\n <p className={clsx(styles.mb(14), styles.mt(0))}>确认清除所有聊天记录并重置会话!</p>\n <div className={styles.popoverFooter}>\n <Button size=\"small\" onClick={cancelClear}>\n 取消\n </Button>\n <Button size=\"small\" type=\"primary\" danger onClick={confirmClear}>\n 确认\n </Button>\n </div>\n </div>\n );\n\n // 自定义上传按钮\n const uploadButton = (\n <div className={styles.flexCenterGap2}>\n <Tooltip\n placement=\"top\"\n title={\n mode === 'single_agent_skill_mode' ? '工作流模式不支持上传文件' : '支持图片、文档等上传'\n }\n >\n {fileUploading\n ? (\n <Spin size=\"small\" />\n )\n : (\n <i\n className={\n mode === 'single_agent_skill_mode'\n ? styles.iconZengjiaDisabled\n : styles.iconZengjiaNormal\n }\n onClick={() => {\n if (mode !== 'single_agent_skill_mode' && fileInputRef.current) {\n fileInputRef.current?.click();\n }\n }}\n />\n )}\n <input\n type=\"file\"\n ref={fileInputRef}\n onChange={handleFileSelect}\n style={{ display: 'none' }}\n accept=\"*/*\"\n disabled={fileUploading || mode === 'single_agent_skill_mode'}\n />\n </Tooltip>\n </div>\n );\n\n // 空状态\n const EmptyState = useMemo(() => () => (\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 // 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 roles={rolesObject}\n items={messages.map((msg: any) => {\n const { id, role, status, type, thinks = [], extra = { noFooter: false } } = msg as Messages;\n // 最后一条 AI消息标识\n if (role === MessageRole.assistant) {\n lastMessageId.current = id;\n }\n return {\n key: id,\n role,\n loading: status === MessageStatus.init,\n header: (() => <ActionHeader thinks={thinks} />),\n content: (() => {\n // 文本消息\n if (type === 'TextMessage') {\n // 用户消息\n if (role === 'user') {\n return (\n <div\n className=\"markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {msg.content?.text}\n </div>\n );\n }\n // 输出html字符串\n const html = md.render(msg.content?.text || '');\n // 生成React节点\n const htmlString = reactHtmlParser(html);\n return (\n <>\n <div\n className=\"markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {htmlString}\n </div>\n </>\n );\n }\n // 图片类型\n if (type === 'ImageMessage') {\n return (\n <div style={{ minWidth: 0, maxWidth: 600 }}>\n <img src={msg.content?.bytes} alt=\"\" style={{ maxWidth: 680 }} />\n </div>\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, 'text');\n if (info.data.description) {\n onSend?.('text', info.data.description as string);\n }\n }}\n />\n );\n }\n // 其他类型...\n return null;\n })(),\n footer: (() => {\n return (\n extra.noFooter\n ? null\n : (\n role === MessageRole.assistant && status !== MessageStatus.failed && (\n <>\n <MessageFooter data={msg as Messages} lastMessage={lastMessageId.current === id} />\n </>\n )\n )\n );\n }),\n };\n })}\n />\n )\n : (\n <EmptyState />\n )\n }\n </div>\n <div className={styles.chatFooter}>\n <div className={clsx(styles.flex, styles.gap(8))}>\n {/* 清空按钮 */}\n <Popover\n content={clearConfirmContent}\n title=\"确认清空对话\"\n trigger=\"click\"\n open={clearPopoverVisible}\n onOpenChange={setClearPopoverVisible}\n >\n <div\n className={styles.clearBtn}\n style={{ border: '1px solid #E4E7EC', borderRadius: '50%', height: '35px', width: '35px' }}\n onClick={handleClear}\n >\n <ClearOutlined className={styles.text(16)} />\n </div>\n </Popover>\n {/* 普通文本输入 */}\n <Sender\n value={content}\n // submitType=\"shiftEnter\"\n className={styles.sendWrapper}\n placeholder=\"继续对话...\"\n disabled={disabled}\n loading={loading}\n actions={(_, info) => {\n const { SendButton, LoadingButton } = info.components;\n return (\n <Space size=\"small\">\n <div className={styles.w(20)} />\n\n {mode !== 'single_agent_skill_mode' && uploadButton}\n {mode === 'meta_agent_mode' && (\n <div\n className={styles.flexCenterGap2}\n style={{ visibility: 'hidden' }}\n >\n <i className={styles.iconHuihuarenqun} />\n </div>\n )}\n\n <div className={styles.divider} />\n\n {loading\n ? (\n <LoadingButton onClick={handleStopGenerate} className={styles.stopButton} />\n )\n : (\n <SendButton\n className={styles.sendButton}\n type=\"primary\"\n icon={<ArrowUpOutlined className={styles.text(20)} />}\n disabled={disabled}\n />\n )}\n </Space>\n );\n }}\n onChange={(v) => {\n setContent(v);\n }}\n onSubmit={handleSend}\n onCancel={() => {\n handleStopGenerate();\n }}\n />\n </div>\n </div>\n { footerTips && <div className={styles.footerTips}>{footerTips}</div>}\n </div>\n </>\n );\n};\n\nexport default XAiChatbot;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useRef","useState","useMemo","Button","Space","Spin","Tooltip","Popover","Bubble","Sender","Prompts","ArrowUpOutlined","ClearOutlined","UserOutlined","RedoOutlined","CopyOutlined","DeleteOutlined","clsx","MarkdownIt","reactHtmlParser","MarkdownGlobalStyle","MessageStatus","MessageRole","emptyIcon","groupIcon","arrowUp","arrowDown","useChatbotContext","useStyles","GlobalStyle","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","md","html","linkify","typographer","defaultRender","renderer","rules","link_open","tokens","idx","options","env","self","renderToken","aIndex","attrIndex","attrPush","attrs","relIndex","defaultActions","key","icon","tooltip","XAiChatbot","props","_useChatbotContext","mergedProps","_mergedProps$navbarSh","navbarShow","navbar","_mergedProps$renderNa","renderNavbar","_mergedProps$loading","loading","propLoading","messageTooltip","avatar","userAvatar","propMessages","messages","_mergedProps$text","text","_mergedProps$footerTi","footerTips","_mergedProps$emptySta","emptyStateImage","_mergedProps$emptySta2","emptyStateText","_mergedProps$messageA","messageActions","onMessagesActionsCallback","onSuggestMessageClick","onSend","onClear","onStop","providerId","_useState","_useState2","_slicedToArray","disabled","_setDisabled","_useState3","_useState4","content","setContent","_useState5","_useState6","mode","_setMode","_useState7","_useState8","fileUploading","setFileUploading","_useState9","_useState10","clearPopoverVisible","setClearPopoverVisible","styles","lastMessageId","isScriptScrolling","chatId","concat","scrollToBottom","current","setTimeout","mainChatWrapper","document","getElementById","scrollTop","scrollHeight","FooterActions","_ref","data","_ref$lastMessage","lastMessage","className","flex","gap","children","map","action","index","title","cursor","onClick","MessageFooter","_ref2","_ref2$lastMessage","rolesObject","assistant","placement","bg","typing","step","interval","style","maxWidth","classNames","user","suggestion","visibility","variant","ActionHeader","_ref3","_first$extra","_ref3$thinks","thinks","renderActionHeader","_useState11","_useState12","expanded","setExpanded","length","onToggle","v","first","name","extra","actionHeaderWrapper","actionHeaderItem","src","alt","actionHeaderIcon","actionHeaderText","w","actionHeaderDetail","actionDetailTitle","flex1","pl","_action$extra","_action$extra2","_action$extra3","thinkIcon","expandIcon","thinkCost","cost","actionHeaderDetailItem","actionHeaderCost","uniqueId","handleSend","trim","NavBar","subtitle","fileInputRef","handleStopGenerate","handleFileSelect","handleClear","cancelClear","confirmClear","clearConfirmContent","p","mb","mt","popoverFooter","size","type","danger","uploadButton","flexCenterGap2","iconZengjiaDisabled","iconZengjiaNormal","_fileInputRef$current","click","ref","onChange","display","accept","EmptyState","emptyWrapper","emptyImg","weight","textColor","id","wrapper","messageContainer","List","roles","items","msg","_ref4","role","status","_ref4$thinks","_ref4$extra","noFooter","bubbleContent","init","header","_msg$content2","_msg$content","minWidth","render","htmlString","_msg$content3","bytes","vertical","onItemClick","info","description","footer","failed","chatFooter","trigger","open","onOpenChange","clearBtn","border","borderRadius","height","width","value","sendWrapper","placeholder","actions","_","_info$components","components","SendButton","LoadingButton","iconHuihuarenqun","divider","stopButton","sendButton","onSubmit","onCancel"],"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 Button,\n Space,\n Spin,\n Tooltip,\n Popover,\n GetProp,\n} from 'antd';\nimport {\n Bubble,\n Sender,\n Prompts,\n} from '@ant-design/x';\nimport {\n ArrowUpOutlined,\n ClearOutlined,\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 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 groupIcon from '@/assets/group.png';\nimport arrowUp from '@/assets/arrow-up.png';\nimport arrowDown from '@/assets/arrow-down.png';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { useStyles, GlobalStyle } from './styles';\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 thinks: any[];\n renderActionHeader?: (params: { thinks: any[]; expanded: boolean; onToggle: () => void }) => React.ReactNode;\n}\n\n// 默认消息功能区\nconst 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 // 使用新的 Hook 来处理 Provider 上下文\n const { mergedProps } = useChatbotContext(props);\n\n const {\n navbarShow = false,\n navbar,\n renderNavbar = null,\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 emptyStateImage = emptyIcon,\n emptyStateText = '我的智能体',\n messageActions = defaultActions,\n onMessagesActionsCallback,\n // 点击帮助消息\n onSuggestMessageClick,\n onSend,\n onClear,\n onStop,\n providerId,\n } = mergedProps;\n\n // 如果在 Provider 中,使用 Provider 的状态\n const messages = mergedProps.messages || propMessages || [];\n const loading = mergedProps.loading || propLoading;\n\n const [disabled, _setDisabled] = useState<boolean>(false); // 是否禁止输入\n const [content, setContent] = useState<string>(text); // 输入框文本\n const [mode, _setMode] = useState<string>(''); // todo 模式\n const [fileUploading, setFileUploading] = useState(false); // 文件上传进度条\n const [clearPopoverVisible, setClearPopoverVisible] = useState(false); // 气泡卡片显隐藏\n const styles = useStyles();\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 </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, 'roles'> = {\n assistant: {\n placement: 'start',\n avatar: { icon: avatar || <UserOutlined className={clsx(styles.bg('#fde3cf'), styles.userAvatar)} /> },\n typing: { step: 5, interval: 20 },\n style: {\n maxWidth: 600,\n },\n classNames: {\n content: 'assistant-content',\n },\n },\n user: {\n placement: 'end',\n avatar: { icon: userAvatar || <UserOutlined className={clsx(styles.bg('#87d068'), styles.userAvatar)} /> },\n classNames: {\n content: 'user-content',\n },\n },\n suggestion: {\n placement: 'start',\n avatar: { icon: <UserOutlined />, style: { visibility: 'hidden' } },\n variant: 'borderless',\n },\n };\n\n // ActionHeader 组件\n const ActionHeader: React.FC<ActionHeaderProps> = ({ thinks = [], renderActionHeader }) => {\n const [expanded, setExpanded] = useState(false);\n if (!thinks || thinks.length === 0) return null;\n if (renderActionHeader) {\n return renderActionHeader({ thinks, expanded, onToggle: () => setExpanded((v) => !v) });\n }\n // 默认渲染\n const first = thinks[0];\n const { name } = first;\n const icon = first?.icon || first?.extra?.icon;\n return (\n <div className={styles.actionHeaderWrapper}>\n { !expanded && (\n <div\n className={styles.actionHeaderItem}\n onClick={() => setExpanded((v) => !v)}\n >\n { icon && <img src={icon} alt=\"icon\" className={styles.actionHeaderIcon} /> }\n <span className={styles.actionHeaderText}>{name}</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={groupIcon} 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 {thinks.map((action, idx) => {\n const thinkIcon = 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 { thinkIcon && <img src={thinkIcon} 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 )}\n </div>\n );\n };\n\n // 触发发送\n const handleSend = () => {\n if (content.trim()) {\n // 直接使用合并后的 onSend,自动处理 Provider 和独立模式\n onSend?.('text', content);\n setContent(''); // 发送后清空输入框内容\n scrollToBottom();\n }\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 fileInputRef = useRef<HTMLInputElement>(null);\n\n // 停止生成\n const handleStopGenerate = () => {\n onStop?.();\n };\n\n // 选择文件\n const handleFileSelect = () => {};\n\n // 点击清除按钮\n const handleClear = () => {\n setClearPopoverVisible(true);\n };\n\n // 取消清除\n const cancelClear = () => {\n setClearPopoverVisible(false);\n };\n\n // 确认清除\n const confirmClear = () => {\n setContent('');\n onClear?.();\n setClearPopoverVisible(false);\n };\n\n // 清空按钮提示文案\n const clearConfirmContent = (\n <div className={styles.p('2px')}>\n <p className={clsx(styles.mb(14), styles.mt(0))}>确认清除所有聊天记录并重置会话!</p>\n <div className={styles.popoverFooter}>\n <Button size=\"small\" onClick={cancelClear}>\n 取消\n </Button>\n <Button size=\"small\" type=\"primary\" danger onClick={confirmClear}>\n 确认\n </Button>\n </div>\n </div>\n );\n\n // 自定义上传按钮\n const uploadButton = (\n <div className={styles.flexCenterGap2}>\n <Tooltip\n placement=\"top\"\n title={\n mode === 'single_agent_skill_mode' ? '工作流模式不支持上传文件' : '支持图片、文档等上传'\n }\n >\n {fileUploading\n ? (\n <Spin size=\"small\" />\n )\n : (\n <i\n className={\n mode === 'single_agent_skill_mode'\n ? styles.iconZengjiaDisabled\n : styles.iconZengjiaNormal\n }\n onClick={() => {\n if (mode !== 'single_agent_skill_mode' && fileInputRef.current) {\n fileInputRef.current?.click();\n }\n }}\n />\n )}\n <input\n type=\"file\"\n ref={fileInputRef}\n onChange={handleFileSelect}\n style={{ display: 'none' }}\n accept=\"*/*\"\n disabled={fileUploading || mode === 'single_agent_skill_mode'}\n />\n </Tooltip>\n </div>\n );\n\n // 空状态\n const EmptyState = useMemo(() => () => (\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 // 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 roles={rolesObject}\n items={messages.map((msg: any) => {\n const { id, role, status, type, thinks = [], extra = { noFooter: false } } = 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: (() => <ActionHeader thinks={thinks} />),\n content: (() => {\n // 文本消息\n if (type === 'TextMessage') {\n // 用户消息\n if (role === 'user') {\n return (\n <div\n className=\"markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {msg.content?.text}\n </div>\n );\n }\n // 输出html字符串\n const html = md.render(msg.content?.text || '');\n // 生成React节点\n const htmlString = reactHtmlParser(html);\n return (\n <>\n <div\n className=\"markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {htmlString}\n </div>\n </>\n );\n }\n // 图片类型\n if (type === 'ImageMessage') {\n return (\n <div style={{ minWidth: 0, maxWidth: 600 }}>\n <img src={msg.content?.bytes} alt=\"\" style={{ maxWidth: 680 }} />\n </div>\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, 'text');\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 return (\n role === MessageRole.assistant && status !== MessageStatus.failed && (\n <>\n <MessageFooter data={msg as Messages} lastMessage={lastMessageId.current === id} />\n </>\n )\n );\n });\n }\n\n return bubbleContent;\n })}\n />\n )\n : (\n <EmptyState />\n )\n }\n </div>\n <div className={styles.chatFooter}>\n <div className={clsx(styles.flex, styles.gap(8))}>\n {/* 清空按钮 */}\n <Popover\n content={clearConfirmContent}\n title=\"确认清空对话\"\n trigger=\"click\"\n open={clearPopoverVisible}\n onOpenChange={setClearPopoverVisible}\n >\n <div\n className={styles.clearBtn}\n style={{ border: '1px solid #E4E7EC', borderRadius: '50%', height: '35px', width: '35px' }}\n onClick={handleClear}\n >\n <ClearOutlined className={styles.text(16)} />\n </div>\n </Popover>\n {/* 普通文本输入 */}\n <Sender\n value={content}\n // submitType=\"shiftEnter\"\n className={styles.sendWrapper}\n placeholder=\"继续对话...\"\n disabled={disabled}\n loading={loading}\n actions={(_, info) => {\n const { SendButton, LoadingButton } = info.components;\n return (\n <Space size=\"small\">\n <div className={styles.w(20)} />\n\n {mode !== 'single_agent_skill_mode' && uploadButton}\n {mode === 'meta_agent_mode' && (\n <div\n className={styles.flexCenterGap2}\n style={{ visibility: 'hidden' }}\n >\n <i className={styles.iconHuihuarenqun} />\n </div>\n )}\n\n <div className={styles.divider} />\n\n {loading\n ? (\n <LoadingButton onClick={handleStopGenerate} className={styles.stopButton} />\n )\n : (\n <SendButton\n className={styles.sendButton}\n type=\"primary\"\n icon={<ArrowUpOutlined className={styles.text(20)} />}\n disabled={disabled}\n />\n )}\n </Space>\n );\n }}\n onChange={(v) => {\n setContent(v);\n }}\n onSubmit={handleSend}\n onCancel={() => {\n handleStopGenerate();\n }}\n />\n </div>\n </div>\n { footerTips && <div className={styles.footerTips}>{footerTips}</div>}\n </div>\n </>\n );\n};\n\nexport default XAiChatbot;\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
- import { XAiProviderProps } from "../../types/XAiProvider";
3
- declare const XAiProvider: React.FC<XAiProviderProps>;
2
+ import { XAiProviderProps, XAiProviderHandle } from "../../types/XAiProvider";
3
+ declare const XAiProvider: React.ForwardRefExoticComponent<XAiProviderProps & React.RefAttributes<XAiProviderHandle>>;
4
4
  export default XAiProvider;
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { forwardRef, useImperativeHandle } from 'react';
2
2
  import { message, Divider } from 'antd';
3
3
  import { v4 as uuidV4 } from 'uuid';
4
4
  import copy from 'copy-to-clipboard';
@@ -8,7 +8,7 @@ import useAgentGenerator from "../../hooks/useAgentGenerator";
8
8
  import userIcon from "../../assets/user.png";
9
9
  import { jsxs as _jsxs } from "react/jsx-runtime";
10
10
  import { jsx as _jsx } from "react/jsx-runtime";
11
- var XAiProvider = function XAiProvider(_ref) {
11
+ var XAiProvider = /*#__PURE__*/forwardRef(function (_ref, ref) {
12
12
  var url = _ref.url,
13
13
  token = _ref.token,
14
14
  config = _ref.config,
@@ -36,6 +36,21 @@ var XAiProvider = function XAiProvider(_ref) {
36
36
  var _ref2 = appInfo || {},
37
37
  appName = _ref2.appName,
38
38
  icon = _ref2.icon;
39
+ useImperativeHandle(ref, function () {
40
+ return {
41
+ chat: chat,
42
+ stopChat: stopChat,
43
+ reChat: reChat,
44
+ getAppInfo: function getAppInfo() {
45
+ return appInfo;
46
+ },
47
+ getMessages: function getMessages() {
48
+ return messages;
49
+ },
50
+ setMessages: setMessages,
51
+ setCurrentSession: setCurrentSession
52
+ };
53
+ }, [appInfo, messages, chat, stopChat, reChat, setMessages, setCurrentSession]);
39
54
 
40
55
  // 发送消息
41
56
  var handleSendMessage = function handleSendMessage(_type, content) {
@@ -141,6 +156,6 @@ var XAiProvider = function XAiProvider(_ref) {
141
156
  children: children
142
157
  })
143
158
  });
144
- };
159
+ });
145
160
  export default XAiProvider;
146
161
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","message","Divider","v4","uuidV4","copy","XProvider","XAiContext","useAgentGenerator","userIcon","jsxs","_jsxs","jsx","_jsx","XAiProvider","_ref","url","token","config","_ref$providerId","providerId","onSuccess","onError","children","_useAgentGenerator","appInfo","chat","stopChat","reChat","messages","loading","setCurrentSession","setMessages","_ref2","appName","icon","handleSendMessage","_type","content","handleClearMessage","handleActions","index","actionData","_ref3","id","_content$text","text","success","prev","filter","item","type","handleSuggestMessageClick","_item","m","ToolTip","messageData","finalResult","think","find","actionName","_ref4","extra","cost","tokenCount","style","display","alignItems","fontSize","color","flex","paddingRight","undefined","Provider","value","avatar","src","alt","userAvatar","emptyStateImage","emptyStateText","footerTips","error","messageTooltip","onSend","onClear","onStop","onSuggestMessageClick","onMessagesActionsCallback","isInProvider"],"sources":["../../../../src/components/XAiProvider/index.tsx"],"sourcesContent":["import React from 'react';\nimport { message, Divider } from 'antd';\nimport { v4 as uuidV4 } from 'uuid';\nimport copy from 'copy-to-clipboard';\nimport { XProvider } from '@ant-design/x';\nimport { XAiContext } from '@/context/AiProviderContext';\nimport { XAiProviderProps } from '@/types/XAiProvider';\nimport useAgentGenerator from '@/hooks/useAgentGenerator';\nimport userIcon from '@/assets/user.png';\n\nconst XAiProvider: React.FC<XAiProviderProps> = ({\n url,\n token,\n config,\n providerId = 'defaultId',\n onSuccess,\n onError,\n children,\n}: XAiProviderProps) => {\n // 使用 useAgentGenerator Hook 管理消息状态\n const { appInfo, chat, stopChat, reChat, messages, loading, setCurrentSession, setMessages } = useAgentGenerator({ url, token, config, onError, onSuccess });\n\n const { appName, icon } = appInfo || {};\n\n // 发送消息\n const handleSendMessage = (_type: string, content: string) => {\n chat(content);\n };\n\n // 清空消息\n const handleClearMessage = () => {\n stopChat();\n setMessages([]);\n setCurrentSession(uuidV4());\n };\n\n // 工具栏按钮点击\n const handleActions = (index: number, actionData: any) => {\n const { content, id } = actionData || {};\n const { text = '' } = content;\n switch (index) {\n case 0:\n reChat();\n break;\n case 1:\n copy(text);\n message.success('复制成功');\n break;\n case 2:\n // 删除该条消息及建议类消息\n setMessages((prev) => prev.filter((item) => item.id !== id && item.type !== 'SuggestionMessage'));\n message.success('删除成功');\n break;\n }\n };\n\n // 建议消息点击\n const handleSuggestMessageClick = (_item: any, id: string) => {\n setMessages((prev: any[]) => prev.filter((m: any) => m.id !== id));\n };\n\n const ToolTip = (messageData: any) => {\n const finalResult = (messageData?.think || []).find((item: any) => item.actionName === 'FINISHED');\n if (!finalResult) return null;\n const { cost, token: tokenCount } = finalResult.extra || {};\n if (!cost && !token) return null;\n return (\n <div style={{ display: 'flex', alignItems: 'center', fontSize: '12px', color: '#949494', flex: 1, paddingRight: '40px' }}>\n { (cost !== undefined && cost !== null) && <div>{cost}s</div> }\n { tokenCount && <Divider type=\"vertical\" /> }\n { tokenCount && <div>{ tokenCount } tokens</div> }\n </div>\n );\n };\n\n return (\n <XProvider>\n <XAiContext.Provider value={{\n avatar: <img src={icon} alt=\"智能体头像\" />,\n userAvatar: <img src={userIcon} alt=\"用户头像\" />,\n emptyStateImage: icon,\n emptyStateText: appName,\n footerTips: '内容由AI生成,无法确保真实准确,仅供参考',\n providerId,\n token,\n messages,\n loading,\n error: null,\n messageTooltip: ToolTip,\n onSend: handleSendMessage,\n onClear: handleClearMessage,\n onStop: stopChat,\n onSuggestMessageClick: handleSuggestMessageClick,\n onMessagesActionsCallback: handleActions,\n isInProvider: true,\n }}\n >\n {children}\n </XAiContext.Provider>\n </XProvider>\n );\n};\n\nexport default XAiProvider;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","forwardRef","useImperativeHandle","message","Divider","v4","uuidV4","copy","XProvider","XAiContext","useAgentGenerator","userIcon","jsxs","_jsxs","jsx","_jsx","XAiProvider","_ref","ref","url","token","config","_ref$providerId","providerId","onSuccess","onError","children","_useAgentGenerator","appInfo","chat","stopChat","reChat","messages","loading","setCurrentSession","setMessages","_ref2","appName","icon","getAppInfo","getMessages","handleSendMessage","_type","content","handleClearMessage","handleActions","index","actionData","_ref3","id","_content$text","text","success","prev","filter","item","type","handleSuggestMessageClick","_item","m","ToolTip","messageData","finalResult","think","find","actionName","_ref4","extra","cost","tokenCount","style","display","alignItems","fontSize","color","flex","paddingRight","undefined","Provider","value","avatar","src","alt","userAvatar","emptyStateImage","emptyStateText","footerTips","error","messageTooltip","onSend","onClear","onStop","onSuggestMessageClick","onMessagesActionsCallback","isInProvider"],"sources":["../../../../src/components/XAiProvider/index.tsx"],"sourcesContent":["import React, { forwardRef, useImperativeHandle } from 'react';\nimport { message, Divider } from 'antd';\nimport { v4 as uuidV4 } from 'uuid';\nimport copy from 'copy-to-clipboard';\nimport { XProvider } from '@ant-design/x';\nimport { XAiContext } from '@/context/AiProviderContext';\nimport { XAiProviderProps, XAiProviderHandle } from '@/types/XAiProvider';\nimport useAgentGenerator from '@/hooks/useAgentGenerator';\nimport userIcon from '@/assets/user.png';\n\nconst XAiProvider = forwardRef<XAiProviderHandle, XAiProviderProps>(({\n url,\n token,\n config,\n providerId = 'defaultId',\n onSuccess,\n onError,\n children,\n}, ref) => {\n // 使用 useAgentGenerator Hook 管理消息状态\n const { appInfo, chat, stopChat, reChat, messages, loading, setCurrentSession, setMessages } = useAgentGenerator({ url, token, config, onError, onSuccess });\n\n const { appName, icon } = appInfo || {};\n\n useImperativeHandle(ref, () => ({\n chat,\n stopChat,\n reChat,\n getAppInfo: () => appInfo,\n getMessages: () => messages,\n setMessages,\n setCurrentSession,\n }), [appInfo, messages, chat, stopChat, reChat, setMessages, setCurrentSession]);\n\n // 发送消息\n const handleSendMessage = (_type: string, content: string) => {\n chat(content);\n };\n\n // 清空消息\n const handleClearMessage = () => {\n stopChat();\n setMessages([]);\n setCurrentSession(uuidV4());\n };\n\n // 工具栏按钮点击\n const handleActions = (index: number, actionData: any) => {\n const { content, id } = actionData || {};\n const { text = '' } = content;\n switch (index) {\n case 0:\n reChat();\n break;\n case 1:\n copy(text);\n message.success('复制成功');\n break;\n case 2:\n // 删除该条消息及建议类消息\n setMessages((prev) => prev.filter((item) => item.id !== id && item.type !== 'SuggestionMessage'));\n message.success('删除成功');\n break;\n }\n };\n\n // 建议消息点击\n const handleSuggestMessageClick = (_item: any, id: string) => {\n setMessages((prev: any[]) => prev.filter((m: any) => m.id !== id));\n };\n\n const ToolTip = (messageData: any) => {\n const finalResult = (messageData?.think || []).find((item: any) => item.actionName === 'FINISHED');\n if (!finalResult) return null;\n const { cost, token: tokenCount } = finalResult.extra || {};\n if (!cost && !token) return null;\n return (\n <div style={{ display: 'flex', alignItems: 'center', fontSize: '12px', color: '#949494', flex: 1, paddingRight: '40px' }}>\n { (cost !== undefined && cost !== null) && <div>{cost}s</div> }\n { tokenCount && <Divider type=\"vertical\" /> }\n { tokenCount && <div>{ tokenCount } tokens</div> }\n </div>\n );\n };\n\n return (\n <XProvider>\n <XAiContext.Provider value={{\n avatar: <img src={icon} alt=\"智能体头像\" />,\n userAvatar: <img src={userIcon} alt=\"用户头像\" />,\n emptyStateImage: icon,\n emptyStateText: appName,\n footerTips: '内容由AI生成,无法确保真实准确,仅供参考',\n providerId,\n token,\n messages,\n loading,\n error: null,\n messageTooltip: ToolTip,\n onSend: handleSendMessage,\n onClear: handleClearMessage,\n onStop: stopChat,\n onSuggestMessageClick: handleSuggestMessageClick,\n onMessagesActionsCallback: handleActions,\n isInProvider: true,\n }}\n >\n {children}\n </XAiContext.Provider>\n </XProvider>\n );\n});\n\nexport default XAiProvider;\n"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import React, { ReactNode } from 'react';
2
2
  import { AiClient } from 'src/client/base';
3
3
  import type { ChatbotMessageFields } from './XAiChatbot';
4
+ import { Messages } from "./XAiMessage";
4
5
  export type ThemeType = 'default';
5
6
  export declare enum ErrorCode {
6
7
  APP_NOT_ENABLE = "APP_NOT_ENABLE",
@@ -12,6 +13,14 @@ export interface Error {
12
13
  code: ErrorCode;
13
14
  message: string;
14
15
  }
16
+ export interface XAiProviderHandle {
17
+ chat: (content: string) => void;
18
+ stopChat: () => void;
19
+ reChat: () => void;
20
+ getAppInfo: () => any;
21
+ getMessages: () => Messages[];
22
+ setCurrentSession: (id: string) => void;
23
+ }
15
24
  export interface XAiProviderProps {
16
25
  /** AI 服务地址 */
17
26
  url: string;
@@ -1 +1 @@
1
- {"version":3,"names":["React","ErrorCode","XAiContext","createContext"],"sources":["../../../src/types/XAiProvider.ts"],"sourcesContent":["// context/ProviderContext.ts\nimport React, { ReactNode } from 'react';\nimport { AiClient } from 'src/client/base';\nimport type { ChatbotMessageFields } from './XAiChatbot';\n\nexport type ThemeType = 'default';\n\nexport enum ErrorCode {\n APP_NOT_ENABLE = 'APP_NOT_ENABLE',\n APP_DELETED = 'APP_DELETED',\n APP_NOT_FOUND = 'APP_NOT_FOUND',\n API_ERROR = 'API_ERROR',\n}\n\nexport interface Error {\n code: ErrorCode;\n message: string;\n}\n\nexport interface XAiProviderProps {\n /** AI 服务地址 */\n url: string;\n /** 认证 token */\n token: string;\n /** 配置信息 */\n config?: any;\n /** Provider 唯一标识,用于区分多个 Provider 实例 */\n providerId?: string;\n /** Token 刷新回调 */\n onRefreshToken?: () => Promise<string>;\n /** 应用无法正常渲染回调 */\n onError?: (error: Error) => void;\n /** 应用正常渲染回调 */\n onSuccess?: (appInfo: any) => void;\n /** 子组件 */\n children: ReactNode;\n}\n\nexport interface XAiSDKProps extends XAiProviderProps {\n theme?: ThemeType;\n componentProps?: {\n id?: string;\n [key: string]: any; // 支持任意 CSS 属性\n };\n}\n\nexport interface XAiContextType extends Required<ChatbotMessageFields> {\n client: AiClient | null;\n token: string;\n loading: boolean;\n error: string | null;\n // ...其它全局配置\n}\n\nexport const XAiContext = React.createContext<XAiContextType | null>(null);\n"],"mappings":"AAAA;AACA,OAAOA,KAAK,MAAqB,OAAO;AAMxC,WAAYC,SAAS,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA;AA+CrB,OAAO,IAAMC,UAAU,gBAAGF,KAAK,CAACG,aAAa,CAAwB,IAAI,CAAC"}
1
+ {"version":3,"names":["React","ErrorCode","XAiContext","createContext"],"sources":["../../../src/types/XAiProvider.ts"],"sourcesContent":["// context/ProviderContext.ts\nimport React, { ReactNode } from 'react';\nimport { AiClient } from 'src/client/base';\nimport type { ChatbotMessageFields } from './XAiChatbot';\nimport { Messages } from '@/types/XAiMessage';\n\nexport type ThemeType = 'default';\n\nexport enum ErrorCode {\n APP_NOT_ENABLE = 'APP_NOT_ENABLE',\n APP_DELETED = 'APP_DELETED',\n APP_NOT_FOUND = 'APP_NOT_FOUND',\n API_ERROR = 'API_ERROR',\n}\n\nexport interface Error {\n code: ErrorCode;\n message: string;\n}\n\nexport interface XAiProviderHandle {\n chat: (content: string) => void;\n stopChat: () => void;\n reChat: () => void;\n getAppInfo: () => any;\n getMessages: () => Messages[];\n setCurrentSession: (id: string) => void;\n}\n\nexport interface XAiProviderProps {\n /** AI 服务地址 */\n url: string;\n /** 认证 token */\n token: string;\n /** 配置信息 */\n config?: any;\n /** Provider 唯一标识,用于区分多个 Provider 实例 */\n providerId?: string;\n /** Token 刷新回调 */\n onRefreshToken?: () => Promise<string>;\n /** 应用无法正常渲染回调 */\n onError?: (error: Error) => void;\n /** 应用正常渲染回调 */\n onSuccess?: (appInfo: any) => void;\n /** 子组件 */\n children: ReactNode;\n}\n\nexport interface XAiSDKProps extends XAiProviderProps {\n theme?: ThemeType;\n componentProps?: {\n id?: string;\n [key: string]: any; // 支持任意 CSS 属性\n };\n}\n\nexport interface XAiContextType extends Required<ChatbotMessageFields> {\n client: AiClient | null;\n token: string;\n loading: boolean;\n error: string | null;\n // ...其它全局配置\n}\n\nexport const XAiContext = React.createContext<XAiContextType | null>(null);\n"],"mappings":"AAAA;AACA,OAAOA,KAAK,MAAqB,OAAO;AAOxC,WAAYC,SAAS,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA;AAwDrB,OAAO,IAAMC,UAAU,gBAAGF,KAAK,CAACG,aAAa,CAAwB,IAAI,CAAC"}
@@ -1,8 +1,10 @@
1
- import { XAiSDKProps } from "../types/XAiProvider";
1
+ import React from 'react';
2
+ import { XAiSDKProps, XAiProviderHandle } from "../types/XAiProvider";
2
3
  declare class XAiWebSDK {
3
4
  container: HTMLElement;
4
5
  props: XAiSDKProps;
5
6
  root: any;
7
+ providerRef: React.RefObject<XAiProviderHandle | null>;
6
8
  onError?: (error: any) => void;
7
9
  onSuccess?: (appInfo: any) => void;
8
10
  constructor(container: HTMLElement, props: XAiSDKProps);
@@ -10,5 +12,12 @@ declare class XAiWebSDK {
10
12
  unmount(): void;
11
13
  static initChatbot(props: XAiSDKProps): XAiWebSDK;
12
14
  static create(props: XAiSDKProps): XAiWebSDK;
15
+ getData(): {
16
+ appInfo: any;
17
+ messages: import("../types").Messages[] | undefined;
18
+ };
19
+ chat(text: string): void;
20
+ stop(): void;
21
+ reChat(): void;
13
22
  }
14
23
  export default XAiWebSDK;
@@ -4,7 +4,7 @@ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
4
4
  import _createClass from "@babel/runtime/helpers/esm/createClass";
5
5
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
6
6
  var _excluded = ["id"];
7
- import React from 'react';
7
+ import React, { createRef } from 'react';
8
8
  import ReactDOM from 'react-dom/client';
9
9
  import XAiProvider from "../components/XAiProvider";
10
10
  import XAiChatbot from "../components/XAiChatbot";
@@ -15,6 +15,7 @@ var XAiWebSDK = /*#__PURE__*/function () {
15
15
  _defineProperty(this, "container", void 0);
16
16
  _defineProperty(this, "props", void 0);
17
17
  _defineProperty(this, "root", void 0);
18
+ _defineProperty(this, "providerRef", /*#__PURE__*/createRef());
18
19
  _defineProperty(this, "onError", void 0);
19
20
  _defineProperty(this, "onSuccess", void 0);
20
21
  this.container = container;
@@ -28,7 +29,9 @@ var XAiWebSDK = /*#__PURE__*/function () {
28
29
  value: function mount() {
29
30
  if (ReactDOM.createRoot) {
30
31
  this.root = ReactDOM.createRoot(this.container);
31
- this.root.render( /*#__PURE__*/_jsx(XAiProvider, _objectSpread(_objectSpread({}, this.props), {}, {
32
+ this.root.render( /*#__PURE__*/_jsx(XAiProvider, _objectSpread(_objectSpread({
33
+ ref: this.providerRef
34
+ }, this.props), {}, {
32
35
  children: /*#__PURE__*/_jsx("div", {
33
36
  style: {
34
37
  width: '100%',
@@ -39,7 +42,9 @@ var XAiWebSDK = /*#__PURE__*/function () {
39
42
  })));
40
43
  } else {
41
44
  // @ts-ignore
42
- ReactDOM.render( /*#__PURE__*/_jsx(XAiProvider, _objectSpread(_objectSpread({}, this.props), {}, {
45
+ ReactDOM.render( /*#__PURE__*/_jsx(XAiProvider, _objectSpread(_objectSpread({
46
+ ref: this.providerRef
47
+ }, this.props), {}, {
43
48
  children: /*#__PURE__*/_jsx("div", {
44
49
  style: {
45
50
  width: '100%',
@@ -59,6 +64,35 @@ var XAiWebSDK = /*#__PURE__*/function () {
59
64
  }
60
65
 
61
66
  // 支持 Coze 风格的语法:new XAiWebSDK.initChatbot()
67
+ }, {
68
+ key: "getData",
69
+ value:
70
+ // ————对外暴露的方法————
71
+ function getData() {
72
+ var _this$providerRef$cur, _this$providerRef$cur2;
73
+ return {
74
+ appInfo: (_this$providerRef$cur = this.providerRef.current) === null || _this$providerRef$cur === void 0 ? void 0 : _this$providerRef$cur.getAppInfo(),
75
+ messages: (_this$providerRef$cur2 = this.providerRef.current) === null || _this$providerRef$cur2 === void 0 ? void 0 : _this$providerRef$cur2.getMessages()
76
+ };
77
+ }
78
+ }, {
79
+ key: "chat",
80
+ value: function chat(text) {
81
+ var _this$providerRef$cur3;
82
+ (_this$providerRef$cur3 = this.providerRef.current) === null || _this$providerRef$cur3 === void 0 || _this$providerRef$cur3.chat(text);
83
+ }
84
+ }, {
85
+ key: "stop",
86
+ value: function stop() {
87
+ var _this$providerRef$cur4;
88
+ (_this$providerRef$cur4 = this.providerRef.current) === null || _this$providerRef$cur4 === void 0 || _this$providerRef$cur4.stopChat();
89
+ }
90
+ }, {
91
+ key: "reChat",
92
+ value: function reChat() {
93
+ var _this$providerRef$cur5;
94
+ (_this$providerRef$cur5 = this.providerRef.current) === null || _this$providerRef$cur5 === void 0 || _this$providerRef$cur5.reChat();
95
+ }
62
96
  }], [{
63
97
  key: "initChatbot",
64
98
  value: function initChatbot(props) {
@@ -1 +1 @@
1
- {"version":3,"names":["React","ReactDOM","XAiProvider","XAiChatbot","jsx","_jsx","XAiWebSDK","container","props","_classCallCheck","_defineProperty","onError","onSuccess","mount","_createClass","key","value","createRoot","root","render","_objectSpread","children","style","width","height","unmount","initChatbot","_props$componentProps","componentProps","id","existingContainer","document","getElementById","createElement","_props$componentProps2","styleProps","_objectWithoutProperties","_excluded","Object","assign","parentNode","body","appendChild","create","window"],"sources":["../../../src/utils/umdEntry.tsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport { XAiSDKProps } from '@/types/XAiProvider';\nimport XAiProvider from '@/components/XAiProvider';\nimport XAiChatbot from '../components/XAiChatbot';\n\nclass XAiWebSDK {\n container: HTMLElement;\n\n props: XAiSDKProps;\n\n root: any;\n\n onError?: (error: any) => void;\n\n onSuccess?: (appInfo: any) => void;\n\n constructor(container: HTMLElement, props: XAiSDKProps) {\n this.container = container;\n this.props = props;\n this.onError = props.onError;\n this.onSuccess = props.onSuccess;\n this.mount();\n }\n\n mount() {\n if (ReactDOM.createRoot) {\n this.root = ReactDOM.createRoot(this.container);\n this.root.render(\n <XAiProvider {...this.props}>\n <div style={{ width: '100%', height: '100%' }}>\n <XAiChatbot />\n </div>\n </XAiProvider>,\n );\n } else {\n // @ts-ignore\n ReactDOM.render(\n <XAiProvider {...this.props}>\n <div style={{ width: '100%', height: '100%' }}>\n <XAiChatbot />\n </div>\n </XAiProvider>,\n this.container,\n );\n }\n }\n\n unmount() {\n if (this.root && this.root.unmount) {\n this.root.unmount();\n }\n }\n\n // 支持 Coze 风格的语法:new XAiWebSDK.initChatbot()\n static initChatbot(props: XAiSDKProps): XAiWebSDK {\n let container: HTMLElement;\n\n // 检查是否有指定的 componentProps.id\n if (props.componentProps?.id) {\n const existingContainer = document.getElementById(props.componentProps.id);\n if (existingContainer) {\n container = existingContainer;\n } else {\n // 如果指定的 ID 不存在,创建新元素\n container = document.createElement('div');\n container.id = props.componentProps.id;\n }\n } else {\n // 没有指定 ID,创建默认容器\n container = document.createElement('div');\n container.id = 'xai-chatbot-container';\n }\n\n // 设置容器样式 - 将除了 id 以外的所有属性都应用到容器\n if (props.componentProps) {\n const { id, ...styleProps } = props.componentProps;\n Object.assign(container.style, styleProps);\n }\n\n // 如果容器不在 DOM 中,添加到 body\n if (!container.parentNode) {\n document.body.appendChild(container);\n }\n\n return new XAiWebSDK(container, props);\n }\n\n // 兼容旧版本的静态方法\n static create(props: XAiSDKProps): XAiWebSDK {\n return this.initChatbot(props);\n }\n}\n\n// 兼容 window 方式,也支持 new\n// @ts-ignore\nwindow.XAiWebSDK = XAiWebSDK;\n\n// 支持 ESModule/UMD 直接 import\nexport default XAiWebSDK;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","createRef","ReactDOM","XAiProvider","XAiChatbot","jsx","_jsx","XAiWebSDK","container","props","_classCallCheck","_defineProperty","onError","onSuccess","mount","_createClass","key","value","createRoot","root","render","_objectSpread","ref","providerRef","children","style","width","height","unmount","getData","_this$providerRef$cur","_this$providerRef$cur2","appInfo","current","getAppInfo","messages","getMessages","chat","text","_this$providerRef$cur3","stop","_this$providerRef$cur4","stopChat","reChat","_this$providerRef$cur5","initChatbot","_props$componentProps","componentProps","id","existingContainer","document","getElementById","createElement","_props$componentProps2","styleProps","_objectWithoutProperties","_excluded","Object","assign","parentNode","body","appendChild","create","window"],"sources":["../../../src/utils/umdEntry.tsx"],"sourcesContent":["import React, { createRef } from 'react';\nimport ReactDOM from 'react-dom/client';\nimport { XAiSDKProps, XAiProviderHandle } from '@/types/XAiProvider';\nimport XAiProvider from '@/components/XAiProvider';\nimport XAiChatbot from '../components/XAiChatbot';\n\nclass XAiWebSDK {\n container: HTMLElement;\n\n props: XAiSDKProps;\n\n root: any;\n\n providerRef = createRef<XAiProviderHandle>();\n\n onError?: (error: any) => void;\n\n onSuccess?: (appInfo: any) => void;\n\n constructor(container: HTMLElement, props: XAiSDKProps) {\n this.container = container;\n this.props = props;\n this.onError = props.onError;\n this.onSuccess = props.onSuccess;\n this.mount();\n }\n\n mount() {\n if (ReactDOM.createRoot) {\n this.root = ReactDOM.createRoot(this.container);\n this.root.render(\n <XAiProvider ref={this.providerRef} {...this.props}>\n <div style={{ width: '100%', height: '100%' }}>\n <XAiChatbot />\n </div>\n </XAiProvider>,\n );\n } else {\n // @ts-ignore\n ReactDOM.render(\n <XAiProvider ref={this.providerRef} {...this.props}>\n <div style={{ width: '100%', height: '100%' }}>\n <XAiChatbot />\n </div>\n </XAiProvider>,\n this.container,\n );\n }\n }\n\n unmount() {\n if (this.root && this.root.unmount) {\n this.root.unmount();\n }\n }\n\n // 支持 Coze 风格的语法:new XAiWebSDK.initChatbot()\n static initChatbot(props: XAiSDKProps): XAiWebSDK {\n let container: HTMLElement;\n\n // 检查是否有指定的 componentProps.id\n if (props.componentProps?.id) {\n const existingContainer = document.getElementById(props.componentProps.id);\n if (existingContainer) {\n container = existingContainer;\n } else {\n // 如果指定的 ID 不存在,创建新元素\n container = document.createElement('div');\n container.id = props.componentProps.id;\n }\n } else {\n // 没有指定 ID,创建默认容器\n container = document.createElement('div');\n container.id = 'xai-chatbot-container';\n }\n\n // 设置容器样式 - 将除了 id 以外的所有属性都应用到容器\n if (props.componentProps) {\n const { id, ...styleProps } = props.componentProps;\n Object.assign(container.style, styleProps);\n }\n\n // 如果容器不在 DOM 中,添加到 body\n if (!container.parentNode) {\n document.body.appendChild(container);\n }\n\n return new XAiWebSDK(container, props);\n }\n\n // 兼容旧版本的静态方法\n static create(props: XAiSDKProps): XAiWebSDK {\n return this.initChatbot(props);\n }\n\n // ————对外暴露的方法————\n getData() {\n return {\n appInfo: this.providerRef.current?.getAppInfo(),\n messages: this.providerRef.current?.getMessages(),\n };\n }\n\n chat(text: string) {\n this.providerRef.current?.chat(text);\n }\n\n stop() {\n this.providerRef.current?.stopChat();\n }\n\n reChat() {\n this.providerRef.current?.reChat();\n }\n}\n\n// 兼容 window 方式,也支持 new\n// @ts-ignore\nwindow.XAiWebSDK = XAiWebSDK;\n\n// 支持 ESModule/UMD 直接 import\nexport default XAiWebSDK;\n"],"mappings":"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"}