@ai-group/chat-sdk 3.4.5 → 3.5.0-alpha1

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 (44) hide show
  1. package/dist/cjs/components/FolderTree/styles.js +2 -1
  2. package/dist/cjs/components/FolderTree/styles.js.map +2 -2
  3. package/dist/cjs/components/XAdkChatbot/index.d.ts +2 -2
  4. package/dist/cjs/components/XAdkChatbot/index.js +433 -389
  5. package/dist/cjs/components/XAdkChatbot/index.js.map +2 -2
  6. package/dist/cjs/components/XAdkSender/index.js +22 -3
  7. package/dist/cjs/components/XAdkSender/index.js.map +2 -2
  8. package/dist/cjs/components/XAdkThoughtChain/styles.d.ts +0 -1
  9. package/dist/cjs/components/XAdkThoughtChain/styles.js +0 -9
  10. package/dist/cjs/components/XAdkThoughtChain/styles.js.map +2 -2
  11. package/dist/cjs/hooks/useADKChat.js +2 -0
  12. package/dist/cjs/hooks/useADKChat.js.map +2 -2
  13. package/dist/cjs/presets/xGroupAdk.js +0 -1
  14. package/dist/cjs/presets/xGroupAdk.js.map +2 -2
  15. package/dist/cjs/types/XAdkChatbot.d.ts +12 -0
  16. package/dist/cjs/types/XAdkChatbot.js.map +1 -1
  17. package/dist/cjs/types/XAdkSender.d.ts +6 -0
  18. package/dist/cjs/types/XAdkSender.js.map +1 -1
  19. package/dist/cjs/utils/umdEntry.d.ts +25 -1
  20. package/dist/cjs/utils/umdEntry.js +126 -41
  21. package/dist/cjs/utils/umdEntry.js.map +3 -3
  22. package/dist/esm/components/FolderTree/styles.js +1 -1
  23. package/dist/esm/components/FolderTree/styles.js.map +1 -1
  24. package/dist/esm/components/XAdkChatbot/index.d.ts +2 -2
  25. package/dist/esm/components/XAdkChatbot/index.js +69 -14
  26. package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
  27. package/dist/esm/components/XAdkSender/index.js +28 -5
  28. package/dist/esm/components/XAdkSender/index.js.map +1 -1
  29. package/dist/esm/components/XAdkThoughtChain/styles.d.ts +0 -1
  30. package/dist/esm/components/XAdkThoughtChain/styles.js +19 -20
  31. package/dist/esm/components/XAdkThoughtChain/styles.js.map +1 -1
  32. package/dist/esm/hooks/useADKChat.js +10 -6
  33. package/dist/esm/hooks/useADKChat.js.map +1 -1
  34. package/dist/esm/presets/xGroupAdk.js +0 -1
  35. package/dist/esm/presets/xGroupAdk.js.map +1 -1
  36. package/dist/esm/types/XAdkChatbot.d.ts +12 -0
  37. package/dist/esm/types/XAdkChatbot.js.map +1 -1
  38. package/dist/esm/types/XAdkSender.d.ts +6 -0
  39. package/dist/esm/types/XAdkSender.js.map +1 -1
  40. package/dist/esm/utils/umdEntry.d.ts +25 -1
  41. package/dist/esm/utils/umdEntry.js +162 -70
  42. package/dist/esm/utils/umdEntry.js.map +1 -1
  43. package/dist/umd/chat-sdk.min.js +1 -1
  44. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["React","useMemo","useCallback","useEffect","useRef","Button","Flex","Tooltip","message","antdMessage","clsx","SwapRightOutlined","ReloadOutlined","CopyOutlined","InfoCircleOutlined","copy","useStyles","MarkdownRender","FunctionCallRender","FileGallery","XAdkThoughtChain","parseAgentMessage","mergeChatStrategies","defaultToolKindResolver","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","scrollThreshold","XAdkChatbot","_ref","_mergedStrategies$par","_ref$loading","loading","prologue","suggestions","messages","showFnCallDetail","onConfirm","onSuggest","showRetry","showCopy","showLog","onRetry","onCopy","onShowLog","actions","actionsExtra","className","style","_ref$enableGrouping","enableGrouping","_ref$enableProcessPar","enableProcessParsing","parseOptions","_ref$initialized","initialized","onFileClick","renderFunctionCall","toolKindResolver","strategies","preset","styles","listRef","lastScrollTopRef","userHasScrolledRef","messagesEndRef","prevInitializedRef","mergedStrategies","resolveToolKind","name","msg","_ref2","_toolKindResolver","_mergedStrategies$res","call","parseProcessMessage","length","current","timer","setTimeout","_messagesEndRef$curre","scrollIntoView","behavior","clearTimeout","_messagesEndRef$curre2","handleScroll","el","currentTop","scrollTop","isAtBottom","Math","abs","scrollHeight","clientHeight","listElement","addEventListener","removeEventListener","chatGroups","map","_msg$isLike","id","role","msgs","invocationId","allFiles","fileData","isLike","groups","forEach","isRealUserQuery","functionResponse","functionCall","lastGroup","isLastGroupAgent","push","_msg$isLike2","concat","g","reduce","acc","m","_toConsumableArray","renderBotGroup","group","isLastGroup","botMsg","children","i","text","_renderFunctionCall","_msg$functionCall","showDetail","kind","renderApproval","renderHandoff","mergedToolMap","Map","callId","has","set","_objectSpread","_mergedToolMap$get","get","tool","args","nodes","currentProcessItems","processedToolIds","Set","flushProcessItems","type","items","key","mergedMsg","content","add","parts","part","partIdx","includes","titleMap","planning","replanning","reasoning","action_log","process_text","title","trim","lastNode","fullTextToCopy","filter","join","lastBotMsg","hasProcess","some","n","isGroupLoading","actionProps","isLastBotMsg","actionExtraNode","node","idx","defaultOpen","fileSection","fileHeader","display","flexWrap","gap","file","index","onClick","metaFooter","actionIcons","success","timestamp","renderUserGroup","userMsg","userContainer","align","marginBottom","card","renderSuggestions","suggestionWrapper","item","suggestion","suggestContent","icon","iconPosition","whiteSpace","height","wordWrap","textAlign","padding","lineHeight","wrapper","list","ref"],"sources":["../../../../src/components/XAdkChatbot/index.tsx"],"sourcesContent":["import React, { useMemo, useCallback, useEffect, useRef } from \"react\";\nimport { Button, Flex, Tooltip, message as antdMessage } from \"antd\";\nimport clsx from \"clsx\";\nimport {\n SwapRightOutlined,\n ReloadOutlined,\n CopyOutlined,\n InfoCircleOutlined,\n CheckCircleFilled,\n} from \"@ant-design/icons\";\nimport copy from \"copy-to-clipboard\";\nimport { useStyles } from \"./styles\";\nimport MarkdownRender from \"./components/MarkdownRender\";\nimport FunctionCallRender from \"./components/FunctionCallRender\";\nimport FileGallery from \"../FileGallery\";\nimport XAdkThoughtChain from \"@/components/XAdkThoughtChain\";\nimport { parseAgentMessage } from \"@/utils\";\nimport { mergeChatStrategies } from \"@/presets/xGroupAdk\";\nimport type { IMessage, XAdkChatbotProps, ChatGroup } from \"@/types\";\nimport type { ThoughtChainItemType } from \"@/types/XAdkThoughtChain\";\nimport { defaultToolKindResolver } from \"@/types/FunctionCallRender\";\n\nconst scrollThreshold = 10;\n\n/**\n * XAdkChatbot - 增强版聊天组件\n *\n * 新增功能:\n * - ✅ 自动消息分组 (enableGrouping)\n * - ✅ 自动解析思维链 (enableProcessParsing)\n * - ✅ 文件展示 (FileGallery)\n * - ✅ 操作栏 (重试/复制/日志)\n * - ✅ 欢迎页面 (agentName/agentIcon/description)\n */\nconst XAdkChatbot: React.FC<XAdkChatbotProps> = ({\n loading = false,\n prologue,\n suggestions,\n messages,\n showFnCallDetail,\n onConfirm,\n onSuggest,\n showRetry,\n showCopy,\n showLog,\n onRetry,\n onCopy,\n onShowLog,\n actions,\n actionsExtra,\n className,\n style,\n // welcome = null,\n enableGrouping = true,\n enableProcessParsing = true,\n parseOptions,\n initialized = false,\n onFileClick,\n renderFunctionCall,\n toolKindResolver,\n strategies,\n preset,\n}) => {\n const styles = useStyles();\n const listRef = useRef<HTMLDivElement>(null);\n const lastScrollTopRef = useRef(0);\n const userHasScrolledRef = useRef(false);\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const prevInitializedRef = useRef(false);\n const mergedStrategies = useMemo(\n () => mergeChatStrategies(preset, strategies),\n [preset, strategies],\n );\n const resolveToolKind = useCallback(\n (name?: string, msg?: IMessage) =>\n toolKindResolver?.(name) ??\n mergedStrategies.resolveToolKind?.({ name, msg }) ??\n defaultToolKindResolver(name),\n [toolKindResolver, mergedStrategies],\n );\n const parseProcessMessage =\n mergedStrategies.parseProcessMessage ?? parseAgentMessage;\n\n // 初始化完成时滚动到底部\n useEffect(() => {\n if (!initialized) return;\n if (!messages.length) return;\n if (prevInitializedRef.current) return; // 只在第一次 initialized+messages 就绪时触发\n prevInitializedRef.current = true;\n // 推迟到浏览器完成 paint 后执行,确保 DOM 高度已撑开\n const timer = setTimeout(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"auto\" });\n }, 0);\n return () => clearTimeout(timer);\n }, [initialized, messages]);\n\n // 流式输出时滚动到底部\n useEffect(() => {\n if (!loading) return;\n if (userHasScrolledRef.current) return;\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [loading, messages]);\n\n // 处理滚动事件\n const handleScroll = useCallback(() => {\n const el = listRef.current;\n if (!el) return;\n const currentTop = el.scrollTop;\n\n if (currentTop < lastScrollTopRef.current) {\n userHasScrolledRef.current = true;\n }\n\n const isAtBottom =\n Math.abs(el.scrollHeight - currentTop - el.clientHeight) <=\n scrollThreshold;\n if (isAtBottom) {\n userHasScrolledRef.current = false;\n }\n\n lastScrollTopRef.current = currentTop;\n }, []);\n\n useEffect(() => {\n const listElement = listRef.current;\n if (!listElement) return;\n\n listElement.addEventListener(\"scroll\", handleScroll);\n return () => {\n listElement.removeEventListener(\"scroll\", handleScroll);\n };\n }, [handleScroll]);\n\n // ========== 消息分组逻辑 ==========\n const chatGroups = useMemo(() => {\n if (!enableGrouping) {\n // 不分组,每条消息独立\n return messages.map((msg) => ({\n id: msg.id,\n role: msg.role,\n msgs: [msg],\n invocationId: msg.invocationId,\n allFiles: msg.fileData || [],\n isLike: msg.isLike ?? 0,\n }));\n }\n\n const groups: ChatGroup[] = [];\n messages.forEach((msg) => {\n // 过滤 followup 消息\n if ((msg as any).role === \"followup\") return;\n\n const isRealUserQuery =\n msg.role === \"user\" && !msg.functionResponse && !msg.functionCall;\n const lastGroup = groups[groups.length - 1];\n const isLastGroupAgent = lastGroup?.role === \"bot\";\n\n if (isLastGroupAgent && !isRealUserQuery) {\n // 合并到上一个 bot 分组\n lastGroup.msgs.push(msg);\n if (msg.invocationId) lastGroup.invocationId = msg.invocationId;\n // 更新 isLike: 取最新的非0值,或保持当前值\n if (msg.isLike && msg.isLike !== 0) {\n lastGroup.isLike = msg.isLike;\n }\n } else {\n // 创建新分组\n groups.push({\n id: msg.id || `group-${groups.length}`,\n role: isRealUserQuery ? \"user\" : \"bot\",\n msgs: [msg],\n invocationId: msg.invocationId,\n allFiles: [],\n isLike: msg.isLike ?? 0,\n });\n }\n });\n\n // 合并文件\n groups.forEach((g) => {\n g.allFiles = g.msgs.reduce(\n (acc, m) => [...acc, ...(m.fileData || [])],\n [] as any[],\n );\n });\n\n return groups;\n }, [messages, enableGrouping]);\n\n // ========== 渲染 Bot 消息组 ==========\n const renderBotGroup = useCallback(\n (\n group: ChatGroup,\n isLastGroup: boolean,\n renderFunctionCall?: XAdkChatbotProps[\"renderFunctionCall\"],\n ) => {\n const { msgs, allFiles } = group;\n\n if (!enableProcessParsing) {\n // 不解析 process,简单渲染\n return (\n <div key={group.id} className={styles.botMsg}>\n {msgs.map((msg, i) => {\n if (msg.text) {\n return (\n <MarkdownRender\n key={`${msg.id}-${i}`}\n text={msg.text}\n onFileClick={onFileClick}\n />\n );\n }\n if (msg.functionCall) {\n return (\n renderFunctionCall?.(msg) ?? (\n <FunctionCallRender\n key={`${msg.id}-${i}`}\n msg={msg}\n showDetail={showFnCallDetail}\n onConfirm={onConfirm}\n kind={resolveToolKind(msg.functionCall?.name, msg)}\n renderApproval={mergedStrategies.renderApproval}\n renderHandoff={mergedStrategies.renderHandoff}\n />\n )\n );\n }\n return null;\n })}\n </div>\n );\n }\n\n // ========== 解析 Process 内容 ==========\n\n // 1. 合并工具调用\n const mergedToolMap = new Map<string, IMessage>();\n msgs.forEach((msg) => {\n if (msg.functionCall) {\n const callId = msg.functionCall.id || \"\";\n if (!mergedToolMap.has(callId)) {\n mergedToolMap.set(callId, { ...msg });\n } else {\n mergedToolMap.set(callId, {\n ...(mergedToolMap.get(callId) ?? {}),\n ...msg,\n });\n }\n } else if (msg.functionResponse) {\n const callId = msg.functionResponse.id || \"\";\n if (mergedToolMap.has(callId)) {\n const tool = mergedToolMap.get(callId);\n if (tool) tool.functionResponse = msg.functionResponse;\n } else {\n mergedToolMap.set(callId, {\n ...msg,\n functionCall: {\n id: callId,\n name: msg.functionResponse.name || \"Unknown\",\n args: {},\n },\n });\n }\n }\n });\n\n // 2. 解析文本消息中的 process 内容\n type RenderNode =\n | { type: \"text\"; content: string; key: string }\n | { type: \"process\"; items: ThoughtChainItemType[]; key: string };\n\n const nodes: RenderNode[] = [];\n let currentProcessItems: ThoughtChainItemType[] = [];\n const processedToolIds = new Set<string>();\n\n const flushProcessItems = () => {\n if (currentProcessItems.length > 0) {\n nodes.push({\n type: \"process\",\n items: [...currentProcessItems],\n key: `process-${nodes.length}`,\n });\n currentProcessItems = [];\n }\n };\n\n msgs.forEach((msg) => {\n // 处理工具调用\n if (msg.functionCall) {\n const callId = msg.functionCall.id || \"\";\n if (!processedToolIds.has(callId)) {\n const mergedMsg = mergedToolMap.get(callId);\n if (mergedMsg) {\n currentProcessItems.push({\n type: \"tool\",\n key: `tool-${callId}`,\n content: \"\",\n msg: mergedMsg,\n });\n processedToolIds.add(callId);\n }\n }\n }\n // 处理文本消息\n else if (msg.text && !msg.functionResponse) {\n const parts = parseProcessMessage(msg.text, parseOptions as any);\n\n parts.forEach((part, partIdx) => {\n // process 内容放入 currentProcessItems\n if (\n [\n \"planning\",\n \"replanning\",\n \"reasoning\",\n \"action_log\",\n \"process_text\",\n ].includes(part.type)\n ) {\n const titleMap: Record<string, string> = {\n planning: \"任务规划\",\n replanning: \"重新规划\",\n reasoning: \"推理分析\",\n action_log: \"行动记录\",\n process_text: \"过程分析\",\n };\n\n currentProcessItems.push({\n type: \"text\",\n key: `${msg.id}-${partIdx}`,\n content: part.content,\n title: titleMap[part.type] || \"分析\",\n });\n }\n // 普通文本内容\n else {\n flushProcessItems();\n if (part.content.trim()) {\n const lastNode = nodes[nodes.length - 1];\n if (lastNode?.type === \"text\") {\n // 合并到上一个文本节点\n lastNode.content += \"\\n\\n\" + part.content;\n } else {\n nodes.push({\n type: \"text\",\n content: part.content,\n key: `text-${msg.id}-${partIdx}`,\n });\n }\n }\n }\n });\n }\n });\n\n // 最后flush一次\n flushProcessItems();\n\n // 3. 准备操作栏数据\n const fullTextToCopy = msgs\n .filter((m) => !m.functionCall && !m.functionResponse)\n .map((m) => m.text || \"\")\n .join(\"\");\n\n const lastBotMsg = msgs[msgs.length - 1];\n const hasProcess = nodes.some((n) => n.type === \"process\");\n const isGroupLoading = loading && isLastGroup;\n const actionProps = { message: group, isLastBotMsg: isLastGroup };\n const actionExtraNode = actionsExtra?.(actionProps);\n\n // 4. 渲染\n return (\n <div key={group.id} className={styles.botMsg}>\n {nodes.map((node, idx) => {\n if (node.type === \"process\") {\n return (\n <XAdkThoughtChain\n key={node.key}\n loading={isGroupLoading}\n title=\"思维链已完成\"\n items={node.items}\n showFnCallDetail={showFnCallDetail}\n onConfirm={onConfirm}\n defaultOpen={isGroupLoading}\n renderFunctionCall={renderFunctionCall}\n toolKindResolver={(name) => resolveToolKind(name)}\n strategies={mergedStrategies}\n />\n );\n }\n\n // 文本节点\n // const showBadge =\n // hasProcess && nodes.findIndex((n) => n.type === \"text\") === idx;\n return (\n <div key={node.key}>\n {/* {showBadge && (\n <div className={styles.successBadge}>\n <CheckCircleFilled /> 已完成所有规划任务\n </div>\n )} */}\n <MarkdownRender text={node.content} onFileClick={onFileClick} />\n </div>\n );\n })}\n\n {/* 文件展示 */}\n {allFiles.length > 0 && (\n <div className={styles.fileSection}>\n <div className={styles.fileHeader}>\n <span>生成文件 ({allFiles.length})</span>\n </div>\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"8px\" }}>\n {allFiles.map((file, index) => (\n <FileGallery key={index} file={file} onClick={onFileClick} />\n ))}\n </div>\n </div>\n )}\n\n {/* 操作栏 */}\n {!isGroupLoading &&\n (actions ||\n showRetry ||\n showCopy ||\n showLog ||\n actionExtraNode) && (\n <div className={styles.metaFooter}>\n {actions ? (\n actions(actionProps)\n ) : (\n <Flex gap={16} className={styles.actionIcons}>\n {showRetry && isLastGroup && (\n <Tooltip title=\"重新生成\">\n <ReloadOutlined onClick={onRetry} />\n </Tooltip>\n )}\n {showCopy && (\n <Tooltip title=\"复制内容\">\n <CopyOutlined\n onClick={() => {\n copy(fullTextToCopy);\n antdMessage.success(\"复制成功\");\n onCopy?.(fullTextToCopy);\n }}\n />\n </Tooltip>\n )}\n {showLog && lastBotMsg?.invocationId && (\n <Tooltip title=\"查看日志\">\n <InfoCircleOutlined\n onClick={() =>\n onShowLog?.(\n lastBotMsg.invocationId!,\n lastBotMsg.timestamp,\n )\n }\n />\n </Tooltip>\n )}\n </Flex>\n )}\n {actionExtraNode}\n </div>\n )}\n </div>\n );\n },\n [\n enableProcessParsing,\n parseOptions,\n parseProcessMessage,\n showFnCallDetail,\n onConfirm,\n loading,\n showRetry,\n showCopy,\n showLog,\n onRetry,\n onCopy,\n onShowLog,\n actions,\n actionsExtra,\n onFileClick,\n styles,\n resolveToolKind,\n mergedStrategies,\n ],\n );\n\n // ========== 渲染用户消息组 ==========\n const renderUserGroup = useCallback(\n (group: ChatGroup) => {\n return (\n <div key={group.id} className={styles.userMsg}>\n {group.msgs.map((m, i) => (\n <div key={m.id || i} className={styles.userContainer}>\n {/* 文件展示 */}\n {m.fileData && m.fileData.length > 0 && (\n <>\n {m.fileData.map((file, index) => (\n <FileGallery\n key={index}\n file={file}\n align=\"left\"\n style={{ marginBottom: \"16px\" }}\n onClick={onFileClick}\n />\n ))}\n </>\n )}\n {/* 文本展示 */}\n {m.text && <div className={styles.card}>{m.text}</div>}\n </div>\n ))}\n </div>\n );\n },\n [styles, onFileClick],\n );\n\n // ========== 欢迎页面 ==========\n // const isEmpty =\n // messages.length === 0 &&\n // !prologue &&\n // (!suggestions || suggestions.length === 0);\n\n // const renderWelcome = () => {\n // if (!isEmpty) return null;\n\n // return (\n // <>\n // {welcome ?? (\n // <div className={styles.welcomeWrapper}>\n // {agentIcon && (\n // <img src={agentIcon} alt=\"icon\" className={styles.welcomeIcon} />\n // )}\n // {agentName && (\n // <div className={styles.welcomeTitle}>{agentName}</div>\n // )}\n // {description && (\n // <div className={styles.welcomeDesc}>{description}</div>\n // )}\n // </div>\n // )}\n // </>\n // );\n // };\n\n // ========== 渲染建议问题 ==========\n const renderSuggestions = () => {\n if (!suggestions || suggestions.length === 0) return null;\n\n return (\n <div className={styles.suggestionWrapper}>\n {suggestions.map((item) => (\n <div key={item} className={styles.suggestion}>\n <div className={styles.suggestContent}>\n <Button\n type=\"text\"\n icon={<SwapRightOutlined />}\n iconPosition=\"end\"\n onClick={() => {\n if (!item) return;\n onSuggest?.(item);\n }}\n style={{\n whiteSpace: \"normal\",\n height: \"auto\",\n wordWrap: \"break-word\",\n textAlign: \"left\",\n padding: \"4px 15px\",\n lineHeight: \"1.5\",\n }}\n >\n {item}\n </Button>\n </div>\n </div>\n ))}\n </div>\n );\n };\n\n return (\n <div className={clsx(styles.wrapper, className)} style={style}>\n <div className={styles.list} ref={listRef}>\n {/* 开场白 */}\n {prologue && (\n <div className={styles.prologue}>\n <MarkdownRender text={prologue} onFileClick={onFileClick} />\n </div>\n )}\n\n {/* 欢迎页面 */}\n {/* {renderWelcome()} */}\n\n {/* 消息列表 */}\n {chatGroups.map((group, idx) =>\n group.role === \"user\"\n ? renderUserGroup(group)\n : renderBotGroup(\n group,\n idx === chatGroups.length - 1,\n renderFunctionCall,\n ),\n )}\n\n {/* 建议问题 */}\n {renderSuggestions()}\n\n <div ref={messagesEndRef} />\n </div>\n </div>\n );\n};\n\nexport default XAdkChatbot;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useMemo","useCallback","useEffect","useRef","useImperativeHandle","forwardRef","Button","Flex","Tooltip","message","antdMessage","clsx","SwapRightOutlined","ReloadOutlined","CopyOutlined","InfoCircleOutlined","copy","useStyles","MarkdownRender","FunctionCallRender","FileGallery","XAdkThoughtChain","parseAgentMessage","mergeChatStrategies","defaultToolKindResolver","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","scrollThreshold","XAdkChatbot","_ref","ref","_mergedStrategies$par","_ref$loading","loading","prologue","suggestions","messages","showFnCallDetail","onConfirm","onSuggest","showRetry","showCopy","showLog","onRetry","onCopy","onShowLog","actions","actionsExtra","className","style","_ref$enableGrouping","enableGrouping","_ref$enableProcessPar","enableProcessParsing","parseOptions","_ref$initialized","initialized","sessionId","onFileClick","renderFunctionCall","toolKindResolver","strategies","preset","styles","listRef","lastScrollTopRef","userHasScrolledRef","messagesEndRef","prevInitializedRef","prevSessionIdRef","scrollToBottom","_messagesEndRef$curre","behavior","arguments","length","undefined","current","scrollIntoView","mergedStrategies","resolveToolKind","name","msg","_ref2","_toolKindResolver","_mergedStrategies$res","call","parseProcessMessage","el","stableTimer","doScroll","_messagesEndRef$curre2","observer","MutationObserver","clearTimeout","setTimeout","observe","childList","subtree","characterData","maxTimer","disconnect","_messagesEndRef$curre3","handleScroll","currentTop","scrollTop","isAtBottom","Math","abs","scrollHeight","clientHeight","listElement","addEventListener","removeEventListener","chatGroups","map","_msg$isLike","id","role","msgs","invocationId","allFiles","fileData","isLike","groups","forEach","isRealUserQuery","functionResponse","functionCall","lastGroup","isLastGroupAgent","push","_msg$isLike2","concat","g","reduce","acc","m","_toConsumableArray","renderBotGroup","group","isLastGroup","botMsg","children","i","text","_renderFunctionCall","_msg$functionCall","showDetail","kind","renderApproval","renderHandoff","mergedToolMap","Map","callId","has","set","_objectSpread","_mergedToolMap$get","get","tool","args","nodes","currentProcessItems","processedToolIds","Set","flushProcessItems","type","items","key","mergedMsg","content","add","parts","part","partIdx","includes","titleMap","planning","replanning","reasoning","action_log","process_text","title","trim","lastNode","fullTextToCopy","filter","join","lastBotMsg","hasProcess","some","n","isGroupLoading","actionProps","isLastBotMsg","actionExtraNode","lastProcessIdx","findLastIndex","node","idx","isLastProcess","defaultOpen","fileSection","fileHeader","display","flexWrap","gap","file","index","onClick","metaFooter","actionIcons","success","timestamp","renderUserGroup","userMsg","userContainer","align","marginBottom","card","renderSuggestions","suggestionWrapper","item","suggestion","suggestContent","icon","iconPosition","whiteSpace","height","wordWrap","textAlign","padding","lineHeight","wrapper","list","displayName"],"sources":["../../../../src/components/XAdkChatbot/index.tsx"],"sourcesContent":["import React, {\n useMemo,\n useCallback,\n useEffect,\n useRef,\n useImperativeHandle,\n forwardRef,\n} from \"react\";\nimport { Button, Flex, Tooltip, message as antdMessage } from \"antd\";\nimport clsx from \"clsx\";\nimport {\n SwapRightOutlined,\n ReloadOutlined,\n CopyOutlined,\n InfoCircleOutlined,\n CheckCircleFilled,\n} from \"@ant-design/icons\";\nimport copy from \"copy-to-clipboard\";\nimport { useStyles } from \"./styles\";\nimport MarkdownRender from \"./components/MarkdownRender\";\nimport FunctionCallRender from \"./components/FunctionCallRender\";\nimport FileGallery from \"../FileGallery\";\nimport XAdkThoughtChain from \"@/components/XAdkThoughtChain\";\nimport { parseAgentMessage } from \"@/utils\";\nimport { mergeChatStrategies } from \"@/presets/xGroupAdk\";\nimport type {\n IMessage,\n XAdkChatbotProps,\n XAdkChatbotHandle,\n ChatGroup,\n} from \"@/types\";\nimport type { ThoughtChainItemType } from \"@/types/XAdkThoughtChain\";\nimport { defaultToolKindResolver } from \"@/types/FunctionCallRender\";\n\nconst scrollThreshold = 10;\n\n/**\n * XAdkChatbot - 增强版聊天组件\n *\n * 新增功能:\n * - ✅ 自动消息分组 (enableGrouping)\n * - ✅ 自动解析思维链 (enableProcessParsing)\n * - ✅ 文件展示 (FileGallery)\n * - ✅ 操作栏 (重试/复制/日志)\n * - ✅ 欢迎页面 (agentName/agentIcon/description)\n */\nconst XAdkChatbot = forwardRef<XAdkChatbotHandle, XAdkChatbotProps>(\n (\n {\n loading = false,\n prologue,\n suggestions,\n messages,\n showFnCallDetail,\n onConfirm,\n onSuggest,\n showRetry,\n showCopy,\n showLog,\n onRetry,\n onCopy,\n onShowLog,\n actions,\n actionsExtra,\n className,\n style,\n // welcome = null,\n enableGrouping = true,\n enableProcessParsing = true,\n parseOptions,\n initialized = false,\n sessionId,\n onFileClick,\n renderFunctionCall,\n toolKindResolver,\n strategies,\n preset,\n },\n ref,\n ) => {\n const styles = useStyles();\n const listRef = useRef<HTMLDivElement>(null);\n const lastScrollTopRef = useRef(0);\n const userHasScrolledRef = useRef(false);\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const prevInitializedRef = useRef(false);\n const prevSessionIdRef = useRef(sessionId);\n\n // 暴露命令式 API\n const scrollToBottom = useCallback(\n (behavior: ScrollBehavior = \"auto\") => {\n messagesEndRef.current?.scrollIntoView({ behavior });\n },\n [],\n );\n useImperativeHandle(ref, () => ({ scrollToBottom }), [scrollToBottom]);\n const mergedStrategies = useMemo(\n () => mergeChatStrategies(preset, strategies),\n [preset, strategies],\n );\n const resolveToolKind = useCallback(\n (name?: string, msg?: IMessage) =>\n toolKindResolver?.(name) ??\n mergedStrategies.resolveToolKind?.({ name, msg }) ??\n defaultToolKindResolver(name),\n [toolKindResolver, mergedStrategies],\n );\n const parseProcessMessage =\n mergedStrategies.parseProcessMessage ?? parseAgentMessage;\n\n // 初始化完成时滚动到底部\n useEffect(() => {\n if (!initialized) return;\n if (!messages.length) return;\n if (prevInitializedRef.current) return;\n prevInitializedRef.current = true;\n\n const el = listRef.current;\n if (!el) return;\n\n // 用 MutationObserver 监听 DOM 子树变化,等内容渲染稳定后置底\n // 每次 DOM 变化都重新计时,确保所有异步渲染(Markdown、代码高亮、思维链等)完成后再滚动\n let stableTimer: ReturnType<typeof setTimeout>;\n const doScroll = () => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"auto\" });\n };\n\n const observer = new MutationObserver(() => {\n clearTimeout(stableTimer);\n stableTimer = setTimeout(doScroll, 80);\n });\n\n observer.observe(el, { childList: true, subtree: true, characterData: true });\n\n // 立即执行一次,处理内容已经就绪的情况\n doScroll();\n // 兜底:最多等 500ms 后强制滚动并断开观察\n const maxTimer = setTimeout(() => {\n observer.disconnect();\n doScroll();\n }, 500);\n\n return () => {\n clearTimeout(stableTimer);\n clearTimeout(maxTimer);\n observer.disconnect();\n };\n }, [initialized, messages]);\n\n // 会话切换时重置滚动状态,允许重新触发初始化置底\n useEffect(() => {\n if (sessionId === undefined) return; // 未传 sessionId 不处理\n if (prevSessionIdRef.current === sessionId) return; // 同一会话不处理\n prevSessionIdRef.current = sessionId;\n prevInitializedRef.current = false;\n userHasScrolledRef.current = false;\n }, [sessionId]);\n\n // 流式输出时滚动到底部\n useEffect(() => {\n if (!loading) return;\n if (userHasScrolledRef.current) return;\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [loading, messages]);\n\n // 处理滚动事件\n const handleScroll = useCallback(() => {\n const el = listRef.current;\n if (!el) return;\n const currentTop = el.scrollTop;\n\n if (currentTop < lastScrollTopRef.current) {\n userHasScrolledRef.current = true;\n }\n\n const isAtBottom =\n Math.abs(el.scrollHeight - currentTop - el.clientHeight) <=\n scrollThreshold;\n if (isAtBottom) {\n userHasScrolledRef.current = false;\n }\n\n lastScrollTopRef.current = currentTop;\n }, []);\n\n useEffect(() => {\n const listElement = listRef.current;\n if (!listElement) return;\n\n listElement.addEventListener(\"scroll\", handleScroll);\n return () => {\n listElement.removeEventListener(\"scroll\", handleScroll);\n };\n }, [handleScroll]);\n\n // ========== 消息分组逻辑 ==========\n const chatGroups = useMemo(() => {\n if (!enableGrouping) {\n // 不分组,每条消息独立\n return messages.map((msg) => ({\n id: msg.id,\n role: msg.role,\n msgs: [msg],\n invocationId: msg.invocationId,\n allFiles: msg.fileData || [],\n isLike: msg.isLike ?? 0,\n }));\n }\n\n const groups: ChatGroup[] = [];\n messages.forEach((msg) => {\n // 过滤 followup 消息\n if ((msg as any).role === \"followup\") return;\n\n const isRealUserQuery =\n msg.role === \"user\" && !msg.functionResponse && !msg.functionCall;\n const lastGroup = groups[groups.length - 1];\n const isLastGroupAgent = lastGroup?.role === \"bot\";\n\n if (isLastGroupAgent && !isRealUserQuery) {\n // 合并到上一个 bot 分组\n lastGroup.msgs.push(msg);\n if (msg.invocationId) lastGroup.invocationId = msg.invocationId;\n // 更新 isLike: 取最新的非0值,或保持当前值\n if (msg.isLike && msg.isLike !== 0) {\n lastGroup.isLike = msg.isLike;\n }\n } else {\n // 创建新分组\n groups.push({\n id: msg.id || `group-${groups.length}`,\n role: isRealUserQuery ? \"user\" : \"bot\",\n msgs: [msg],\n invocationId: msg.invocationId,\n allFiles: [],\n isLike: msg.isLike ?? 0,\n });\n }\n });\n\n // 合并文件\n groups.forEach((g) => {\n g.allFiles = g.msgs.reduce(\n (acc, m) => [...acc, ...(m.fileData || [])],\n [] as any[],\n );\n });\n\n return groups;\n }, [messages, enableGrouping]);\n\n // ========== 渲染 Bot 消息组 ==========\n const renderBotGroup = useCallback(\n (\n group: ChatGroup,\n isLastGroup: boolean,\n renderFunctionCall?: XAdkChatbotProps[\"renderFunctionCall\"],\n ) => {\n const { msgs, allFiles } = group;\n\n if (!enableProcessParsing) {\n // 不解析 process,简单渲染\n return (\n <div key={group.id} className={styles.botMsg}>\n {msgs.map((msg, i) => {\n if (msg.text) {\n return (\n <MarkdownRender\n key={`${msg.id}-${i}`}\n text={msg.text}\n onFileClick={onFileClick}\n />\n );\n }\n if (msg.functionCall) {\n return (\n renderFunctionCall?.(msg) ?? (\n <FunctionCallRender\n key={`${msg.id}-${i}`}\n msg={msg}\n showDetail={showFnCallDetail}\n onConfirm={onConfirm}\n kind={resolveToolKind(msg.functionCall?.name, msg)}\n renderApproval={mergedStrategies.renderApproval}\n renderHandoff={mergedStrategies.renderHandoff}\n />\n )\n );\n }\n return null;\n })}\n </div>\n );\n }\n\n // ========== 解析 Process 内容 ==========\n\n // 1. 合并工具调用\n const mergedToolMap = new Map<string, IMessage>();\n msgs.forEach((msg) => {\n if (msg.functionCall) {\n const callId = msg.functionCall.id || \"\";\n if (!mergedToolMap.has(callId)) {\n mergedToolMap.set(callId, { ...msg });\n } else {\n mergedToolMap.set(callId, {\n ...(mergedToolMap.get(callId) ?? {}),\n ...msg,\n });\n }\n } else if (msg.functionResponse) {\n const callId = msg.functionResponse.id || \"\";\n if (mergedToolMap.has(callId)) {\n const tool = mergedToolMap.get(callId);\n if (tool) tool.functionResponse = msg.functionResponse;\n } else {\n mergedToolMap.set(callId, {\n ...msg,\n functionCall: {\n id: callId,\n name: msg.functionResponse.name || \"Unknown\",\n args: {},\n },\n });\n }\n }\n });\n\n // 2. 解析文本消息中的 process 内容\n type RenderNode =\n | { type: \"text\"; content: string; key: string }\n | { type: \"process\"; items: ThoughtChainItemType[]; key: string };\n\n const nodes: RenderNode[] = [];\n let currentProcessItems: ThoughtChainItemType[] = [];\n const processedToolIds = new Set<string>();\n\n const flushProcessItems = () => {\n if (currentProcessItems.length > 0) {\n nodes.push({\n type: \"process\",\n items: [...currentProcessItems],\n key: `process-${nodes.length}`,\n });\n currentProcessItems = [];\n }\n };\n\n msgs.forEach((msg) => {\n // 处理工具调用\n if (msg.functionCall) {\n const callId = msg.functionCall.id || \"\";\n if (!processedToolIds.has(callId)) {\n const mergedMsg = mergedToolMap.get(callId);\n if (mergedMsg) {\n currentProcessItems.push({\n type: \"tool\",\n key: `tool-${callId}`,\n content: \"\",\n msg: mergedMsg,\n });\n processedToolIds.add(callId);\n }\n }\n }\n // 处理文本消息\n else if (msg.text && !msg.functionResponse) {\n const parts = parseProcessMessage(msg.text, parseOptions as any);\n\n parts.forEach((part, partIdx) => {\n // process 内容放入 currentProcessItems\n if (\n [\n \"planning\",\n \"replanning\",\n \"reasoning\",\n \"action_log\",\n \"process_text\",\n ].includes(part.type)\n ) {\n const titleMap: Record<string, string> = {\n planning: \"任务规划\",\n replanning: \"重新规划\",\n reasoning: \"推理分析\",\n action_log: \"行动记录\",\n process_text: \"过程分析\",\n };\n\n currentProcessItems.push({\n type: \"text\",\n key: `${msg.id}-${partIdx}`,\n content: part.content,\n title: titleMap[part.type] || \"分析\",\n });\n }\n // 普通文本内容\n else {\n flushProcessItems();\n if (part.content.trim()) {\n const lastNode = nodes[nodes.length - 1];\n if (lastNode?.type === \"text\") {\n // 合并到上一个文本节点\n lastNode.content += \"\\n\\n\" + part.content;\n } else {\n nodes.push({\n type: \"text\",\n content: part.content,\n key: `text-${msg.id}-${partIdx}`,\n });\n }\n }\n }\n });\n }\n });\n\n // 最后flush一次\n flushProcessItems();\n\n // 3. 准备操作栏数据\n const fullTextToCopy = msgs\n .filter((m) => !m.functionCall && !m.functionResponse)\n .map((m) => m.text || \"\")\n .join(\"\");\n\n const lastBotMsg = msgs[msgs.length - 1];\n const hasProcess = nodes.some((n) => n.type === \"process\");\n const isGroupLoading = loading && isLastGroup;\n const actionProps = { message: group, isLastBotMsg: isLastGroup };\n const actionExtraNode = actionsExtra?.(actionProps);\n\n // 4. 渲染\n const lastProcessIdx = nodes.findLastIndex(\n (n) => n.type === \"process\",\n );\n return (\n <div key={group.id} className={styles.botMsg}>\n {nodes.map((node, idx) => {\n if (node.type === \"process\") {\n // 只有最后一个 process node 跟随 loading 状态,已完成的思维链不应显示 loading\n const isLastProcess = idx === lastProcessIdx;\n return (\n <XAdkThoughtChain\n key={node.key}\n loading={isLastProcess && isGroupLoading}\n title=\"思维链已完成\"\n items={node.items}\n showFnCallDetail={showFnCallDetail}\n onConfirm={onConfirm}\n defaultOpen={isLastProcess && isGroupLoading}\n renderFunctionCall={renderFunctionCall}\n toolKindResolver={(name) => resolveToolKind(name)}\n strategies={mergedStrategies}\n />\n );\n }\n\n // 文本节点\n // const showBadge =\n // hasProcess && nodes.findIndex((n) => n.type === \"text\") === idx;\n return (\n <div key={node.key}>\n {/* {showBadge && (\n <div className={styles.successBadge}>\n <CheckCircleFilled /> 已完成所有规划任务\n </div>\n )} */}\n <MarkdownRender text={node.content} onFileClick={onFileClick} />\n </div>\n );\n })}\n\n {/* 文件展示 */}\n {allFiles.length > 0 && (\n <div className={styles.fileSection}>\n <div className={styles.fileHeader}>\n <span>生成文件 ({allFiles.length})</span>\n </div>\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: \"8px\" }}>\n {allFiles.map((file, index) => (\n <FileGallery key={index} file={file} onClick={onFileClick} />\n ))}\n </div>\n </div>\n )}\n\n {/* 操作栏 */}\n {!isGroupLoading &&\n (actions ||\n showRetry ||\n showCopy ||\n showLog ||\n actionExtraNode) && (\n <div className={styles.metaFooter}>\n {actions ? (\n actions(actionProps)\n ) : (\n <Flex gap={16} className={styles.actionIcons}>\n {showRetry && isLastGroup && (\n <Tooltip title=\"重新生成\">\n <ReloadOutlined onClick={onRetry} />\n </Tooltip>\n )}\n {showCopy && (\n <Tooltip title=\"复制内容\">\n <CopyOutlined\n onClick={() => {\n copy(fullTextToCopy);\n antdMessage.success(\"复制成功\");\n onCopy?.(fullTextToCopy);\n }}\n />\n </Tooltip>\n )}\n {showLog && lastBotMsg?.invocationId && (\n <Tooltip title=\"查看日志\">\n <InfoCircleOutlined\n onClick={() =>\n onShowLog?.(\n lastBotMsg.invocationId!,\n lastBotMsg.timestamp,\n )\n }\n />\n </Tooltip>\n )}\n </Flex>\n )}\n {actionExtraNode}\n </div>\n )}\n </div>\n );\n },\n [\n enableProcessParsing,\n parseOptions,\n parseProcessMessage,\n showFnCallDetail,\n onConfirm,\n loading,\n showRetry,\n showCopy,\n showLog,\n onRetry,\n onCopy,\n onShowLog,\n actions,\n actionsExtra,\n onFileClick,\n styles,\n resolveToolKind,\n mergedStrategies,\n ],\n );\n\n // ========== 渲染用户消息组 ==========\n const renderUserGroup = useCallback(\n (group: ChatGroup) => {\n return (\n <div key={group.id} className={styles.userMsg}>\n {group.msgs.map((m, i) => (\n <div key={m.id || i} className={styles.userContainer}>\n {/* 文件展示 */}\n {m.fileData && m.fileData.length > 0 && (\n <>\n {m.fileData.map((file, index) => (\n <FileGallery\n key={index}\n file={file}\n align=\"left\"\n style={{ marginBottom: \"16px\" }}\n onClick={onFileClick}\n />\n ))}\n </>\n )}\n {/* 文本展示 */}\n {m.text && <div className={styles.card}>{m.text}</div>}\n </div>\n ))}\n </div>\n );\n },\n [styles, onFileClick],\n );\n\n // ========== 欢迎页面 ==========\n // const isEmpty =\n // messages.length === 0 &&\n // !prologue &&\n // (!suggestions || suggestions.length === 0);\n\n // const renderWelcome = () => {\n // if (!isEmpty) return null;\n\n // return (\n // <>\n // {welcome ?? (\n // <div className={styles.welcomeWrapper}>\n // {agentIcon && (\n // <img src={agentIcon} alt=\"icon\" className={styles.welcomeIcon} />\n // )}\n // {agentName && (\n // <div className={styles.welcomeTitle}>{agentName}</div>\n // )}\n // {description && (\n // <div className={styles.welcomeDesc}>{description}</div>\n // )}\n // </div>\n // )}\n // </>\n // );\n // };\n\n // ========== 渲染建议问题 ==========\n const renderSuggestions = () => {\n if (!suggestions || suggestions.length === 0) return null;\n\n return (\n <div className={styles.suggestionWrapper}>\n {suggestions.map((item) => (\n <div key={item} className={styles.suggestion}>\n <div className={styles.suggestContent}>\n <Button\n type=\"text\"\n icon={<SwapRightOutlined />}\n iconPosition=\"end\"\n onClick={() => {\n if (!item) return;\n onSuggest?.(item);\n }}\n style={{\n whiteSpace: \"normal\",\n height: \"auto\",\n wordWrap: \"break-word\",\n textAlign: \"left\",\n padding: \"4px 15px\",\n lineHeight: \"1.5\",\n }}\n >\n {item}\n </Button>\n </div>\n </div>\n ))}\n </div>\n );\n };\n\n return (\n <div className={clsx(styles.wrapper, className)} style={style}>\n <div className={styles.list} ref={listRef}>\n {/* 开场白 */}\n {prologue && (\n <div className={styles.prologue}>\n <MarkdownRender text={prologue} onFileClick={onFileClick} />\n </div>\n )}\n\n {/* 欢迎页面 */}\n {/* {renderWelcome()} */}\n\n {/* 消息列表 */}\n {chatGroups.map((group, idx) =>\n group.role === \"user\"\n ? renderUserGroup(group)\n : renderBotGroup(\n group,\n idx === chatGroups.length - 1,\n renderFunctionCall,\n ),\n )}\n\n {/* 建议问题 */}\n {renderSuggestions()}\n\n <div ref={messagesEndRef} />\n </div>\n </div>\n );\n },\n);\n\nXAdkChatbot.displayName = \"XAdkChatbot\";\n\nexport default XAdkChatbot;\n"],"mappings":"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"}
@@ -21,6 +21,9 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
21
21
  loading = _ref$loading === void 0 ? false : _ref$loading,
22
22
  _ref$disabled = _ref.disabled,
23
23
  disabled = _ref$disabled === void 0 ? false : _ref$disabled,
24
+ controlledValue = _ref.value,
25
+ _ref$defaultValue = _ref.defaultValue,
26
+ defaultValue = _ref$defaultValue === void 0 ? "" : _ref$defaultValue,
24
27
  _ref$uploadRequest = _ref.uploadRequest,
25
28
  uploadRequest = _ref$uploadRequest === void 0 ? function () {} : _ref$uploadRequest,
26
29
  onClear = _ref.onClear,
@@ -44,10 +47,18 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
44
47
  prefix = _ref.prefix,
45
48
  footer = _ref.footer;
46
49
  var styles = useStyles();
47
- var _useState = useState(""),
50
+ var isControlled = controlledValue !== undefined;
51
+ var _useState = useState(defaultValue),
48
52
  _useState2 = _slicedToArray(_useState, 2),
49
- value = _useState2[0],
50
- setValue = _useState2[1];
53
+ internalValue = _useState2[0],
54
+ setInternalValue = _useState2[1];
55
+ var value = isControlled ? controlledValue : internalValue;
56
+ var setValue = function setValue(newValue) {
57
+ if (!isControlled) {
58
+ setInternalValue(newValue);
59
+ }
60
+ onChange === null || onChange === void 0 || onChange(newValue);
61
+ };
51
62
  var _useState3 = useState([]),
52
63
  _useState4 = _slicedToArray(_useState3, 2),
53
64
  files = _useState4[0],
@@ -450,7 +461,6 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
450
461
  var handleInputChange = function handleInputChange(e) {
451
462
  var newValue = e.target.value;
452
463
  setValue(newValue);
453
- onChange === null || onChange === void 0 || onChange(newValue);
454
464
  };
455
465
 
456
466
  // 处理回车键
@@ -485,14 +495,21 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
485
495
  return f.status === "uploading";
486
496
  });
487
497
  var isDisabled = disabled || uploading || loading;
498
+ var hasContent = value.trim().length > 0;
499
+ var hasFiles = files.some(function (f) {
500
+ return f.status === "success";
501
+ });
502
+ var canSend = hasContent || hasFiles;
488
503
 
489
504
  // 定义按钮组件(供外部 slot 函数通过 actionsComponents 使用)
505
+ // 注意:sendButtonRender 的结果直接内联到 defaultSuffix 中,避免组件引用变化导致闪烁
490
506
  var SendButton = function SendButton(props) {
491
507
  if (sendButtonRender) {
492
508
  return /*#__PURE__*/_jsx(_Fragment, {
493
509
  children: sendButtonRender({
494
510
  loading: loading,
495
511
  disabled: uploading || disabled,
512
+ canSend: canSend,
496
513
  onSend: handleSubmit,
497
514
  onStop: onStop
498
515
  })
@@ -573,7 +590,13 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
573
590
  "aria-label": "\u4E0A\u4F20\u6587\u4EF6",
574
591
  children: /*#__PURE__*/_jsx(PaperClipOutlined, {})
575
592
  })
576
- }), /*#__PURE__*/_jsx(Tooltip, {
593
+ }), sendButtonRender ? sendButtonRender({
594
+ loading: loading,
595
+ disabled: uploading || disabled,
596
+ canSend: canSend,
597
+ onSend: handleSubmit,
598
+ onStop: onStop
599
+ }) : /*#__PURE__*/_jsx(Tooltip, {
577
600
  title: loading ? "停止生成" : "发送消息",
578
601
  children: /*#__PURE__*/_jsx("button", {
579
602
  className: "".concat(styles.iconButton, " ").concat(styles.sendButton, " ").concat(loading ? "stop" : ""),
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","useRef","useCallback","forwardRef","useImperativeHandle","Popconfirm","message","Tooltip","Input","Modal","ClearOutlined","LoadingOutlined","ArrowUpOutlined","PaperClipOutlined","useStyles","FileGallery","getExt","XAdkSender","_ref","ref","_ref$clearBtnShow","clearBtnShow","_ref$allowUpload","allowUpload","_ref$draggable","draggable","_ref$loading","loading","_ref$disabled","disabled","_ref$uploadRequest","uploadRequest","onClear","onChange","onSubmit","onStop","onFilesChange","onUploadSuccess","onUploadError","_ref$maxFileSize","maxFileSize","_ref$validators","validators","customValidators","_ref$allowedFileTypes","allowedFileTypes","_ref$maxFiles","maxFiles","Infinity","sendButtonRender","suffix","header","prefix","footer","styles","_useState","_useState2","_slicedToArray","value","setValue","_useState3","_useState4","files","setFiles","_useState5","_useState6","isDragOver","setIsDragOver","containerRef","fileInputRef","generateId","Date","now","toString","Math","random","substr","normalizeUploadResponse","response","_response$data","_ref2","data","Array","isArray","checkFileType","file","length","ext","some","type","includes","endsWith","startsWith","split","slice","checkFileSize","maxSize","size","isDuplicateFile","f","name","builtInValidators","_file","_ref3","concat","_ref4","allValidators","_toConsumableArray","validateFile","_iterator","_createForOfIteratorHelper","_step","s","n","done","validator","error","valid","err","e","handleFileSelect","selectedFiles","fileArray","from","validFiles","forEach","validation","push","id","uid","progress","status","prev","next","uploadFiles","addFiles","rawFiles","_ref5","_asyncToGenerator","_regeneratorRuntime","mark","_callee","fileList","_iterator2","_step2","_loop","wrap","_callee$","_context2","localFile","_loop$","_context","map","_objectSpread","onProgress","percent","onSuccess","responseData","fileId","tempUrl","fileUrl","url","onError","errorMessage","t0","console","Error","stop","delegateYield","t1","finish","_x","apply","arguments","handleRemoveFile","filter","triggerFileSelect","current","click","handleDragOver","preventDefault","stopPropagation","handleDragLeave","handleDrop","dataTransfer","handleSubmit","trim","warning","successFiles","uploadingFiles","confirm","title","content","okText","cancelText","onOk","formattedFiles","formatFilesForServer","text","onCancel","info","fileName","fileType","fileSize","mimeType","raw","handleInputChange","newValue","target","handleKeyDown","key","shiftKey","renderFileList","_jsx","style","display","flexWrap","gap","padding","children","removable","onRemove","containerClass","container","uploading","isDisabled","SendButton","props","_Fragment","onSend","className","iconButton","sendButton","onClick","spin","UploadButton","uploadButton","ClearButton","onConfirm","placement","clearButton","actionsComponents","renderSlot","slot","oriNode","undefined","result","components","defaultSuffix","_jsxs","buttonGroup","onDragOver","onDragLeave","onDrop","multiple","accept","join","mainArea","senderWrap","inputAndButtons","textAreaWrapper","TextArea","textArea","onKeyDown","placeholder","autoSize","minRows","maxRows","border","boxShadow","outline","tip","displayName","XAdkSenderSwitch","jsx","Fragment","jsxs","CompoundSender","Switch"],"sources":["../../../../src/components/XAdkSender/index.tsx"],"sourcesContent":["import React, { useState, useRef, useCallback, forwardRef, useImperativeHandle } from \"react\";\nimport { Popconfirm, message, Tooltip, Input, Modal } from \"antd\";\nimport {\n ClearOutlined,\n LoadingOutlined,\n ArrowUpOutlined,\n PaperClipOutlined,\n} from \"@ant-design/icons\";\nimport {\n XAdkSenderProps,\n XAdkSenderHandle,\n ServerFile,\n LocalFile,\n ActionsComponents,\n FileValidator,\n UploadFileResult,\n} from \"@/types\";\nimport { useStyles } from \"./styles\";\nimport FileGallery from \"../FileGallery\";\nimport { getExt } from \"@/utils/file\";\n\nconst XAdkSender = forwardRef<XAdkSenderHandle, XAdkSenderProps>(({\n clearBtnShow = true,\n allowUpload = false,\n draggable = true,\n loading = false,\n disabled = false,\n uploadRequest = () => {},\n onClear,\n onChange,\n onSubmit,\n onStop,\n onFilesChange,\n onUploadSuccess,\n onUploadError,\n maxFileSize = 10,\n validators: customValidators = [],\n // allowedFileTypes = [\n // \"image/*\",\n // \"audio/*\",\n // \"video/*\",\n // \"application/pdf\",\n // \"text/plain\",\n // \".doc\",\n // \".docx\",\n // \".xls\",\n // \".xlsx\",\n // \".ppt\",\n // \".pptx\",\n // \"\",\n // ],\n allowedFileTypes = [],\n maxFiles = Infinity,\n sendButtonRender,\n suffix,\n header,\n prefix,\n footer,\n}, ref) => {\n const styles = useStyles();\n const [value, setValue] = useState<string>(\"\");\n const [files, setFiles] = useState<LocalFile[]>([]);\n const [isDragOver, setIsDragOver] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n // 生成唯一ID\n const generateId = () => {\n return Date.now().toString(36) + Math.random().toString(36).substr(2);\n };\n\n const normalizeUploadResponse = (response: any): UploadFileResult => {\n const data = response?.data ?? response;\n return (Array.isArray(data) ? data[0] : data) ?? {};\n };\n\n // 检查文件类型\n const checkFileType = (file: File): boolean => {\n if (allowedFileTypes?.length > 0) {\n const ext = getExt(file);\n\n return allowedFileTypes.some((type) => {\n // 1️⃣ MIME 校验\n if (type.includes(\"/\")) {\n if (type.endsWith(\"/*\")) {\n return file.type.startsWith(type.split(\"/\")[0]);\n }\n return file.type === type;\n }\n\n if (type.startsWith(\".\")) {\n return ext === type.slice(1);\n }\n\n return false;\n });\n }\n return true;\n };\n\n // 检查文件大小\n const checkFileSize = (file: File): boolean => {\n const maxSize = maxFileSize * 1024 * 1024;\n return file.size <= maxSize;\n };\n\n // 重复文件检测\n const isDuplicateFile = (file: File, files: LocalFile[]) => {\n return files.some((f) => f.name === file.name && f.size === file.size);\n };\n\n // 内置校验器集合\n const builtInValidators: FileValidator[] = [\n // 数量校验(修复批量 bug)\n (_file, { files }) => {\n if (files.length >= maxFiles) {\n return `最多只能上传 ${maxFiles} 个文件`;\n }\n return null;\n },\n\n // 大小校验\n (file) => {\n const maxSize = maxFileSize * 1024 * 1024;\n if (file.size > maxSize) {\n return `文件大小不能超过 ${maxFileSize}MB`;\n }\n return null;\n },\n\n // 类型校验\n (file) => {\n if (!checkFileType(file)) {\n return \"不支持的文件类型\";\n }\n return null;\n },\n\n // ⭐ 新增:去重校验\n (file, { files }) => {\n if (isDuplicateFile(file, files)) {\n return \"文件已存在\";\n }\n return null;\n },\n ];\n\n const allValidators = [...builtInValidators, ...customValidators];\n\n // 验证文件\n const validateFile = (file: File): { valid: boolean; message?: string } => {\n for (const validator of allValidators) {\n const error = validator(file, { files });\n if (error) {\n return { valid: false, message: error };\n }\n }\n return { valid: true };\n };\n\n // 处理文件选择\n const handleFileSelect = useCallback(\n (selectedFiles: File[]) => {\n const fileArray = Array.from(selectedFiles);\n\n if (files.length + fileArray.length > maxFiles) {\n message.error(`最多只能上传 ${maxFiles} 个文件`);\n return;\n }\n\n const validFiles: LocalFile[] = [];\n\n fileArray.forEach((file) => {\n const validation = validateFile(file);\n\n if (validation.valid) {\n validFiles.push({\n id: generateId(),\n uid: generateId(),\n name: file.name,\n size: file.size,\n type: file.type,\n file,\n progress: 0,\n status: \"pending\",\n response: null,\n });\n } else {\n message.error(validation.message);\n }\n });\n\n if (validFiles.length > 0) {\n setFiles((prev) => {\n const next = [...prev, ...validFiles];\n onFilesChange?.(next);\n return next;\n });\n uploadFiles(validFiles);\n }\n },\n [files, maxFiles, maxFileSize, allowedFileTypes],\n );\n\n // 暴露 addFiles 方法供外层(如 DefaultLayout 拖拽上传)调用\n useImperativeHandle(ref, () => ({\n addFiles: (rawFiles: File[]) => {\n handleFileSelect(rawFiles);\n },\n }), [handleFileSelect]);\n\n // 上传文件\n const uploadFiles = async (fileList: LocalFile[]) => {\n for (const localFile of fileList) {\n // 开始上传\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id ? { ...f, status: \"uploading\" } : f,\n ),\n );\n\n try {\n await uploadRequest({\n file: localFile.file,\n onProgress: (e) => {\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id ? { ...f, progress: e.percent } : f,\n ),\n );\n },\n onSuccess: (response) => {\n const responseData = normalizeUploadResponse(response);\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"success\",\n progress: 100,\n response,\n fileId: responseData.fileId || responseData.id,\n tempUrl:\n responseData.tempUrl ||\n responseData.fileUrl ||\n responseData.url,\n }\n : f,\n ),\n );\n\n onUploadSuccess?.({\n ...localFile,\n status: \"success\",\n response,\n fileId: responseData.fileId || responseData.id,\n tempUrl:\n responseData.tempUrl || responseData.fileUrl || responseData.url,\n });\n },\n onError: (error) => {\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"error\",\n errorMessage: error.message,\n }\n : f,\n ),\n );\n onUploadError?.(localFile, error);\n },\n });\n } catch (error) {\n console.error(\"上传处理错误:\", error);\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"error\",\n errorMessage:\n error instanceof Error ? error.message : \"上传处理失败\",\n }\n : f,\n ),\n );\n message.error(`${localFile.name} 上传失败`);\n }\n }\n };\n\n // 删除文件\n const handleRemoveFile = (id: string) => {\n setFiles((prev) => {\n const next = prev.filter((file) => file.id !== id);\n\n onFilesChange?.(next);\n\n return next;\n });\n };\n\n // 触发文件选择\n const triggerFileSelect = () => {\n if (fileInputRef.current) {\n fileInputRef.current.click();\n }\n };\n\n // 处理拖拽事件\n const handleDragOver = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (allowUpload) {\n setIsDragOver(true);\n }\n },\n [allowUpload],\n );\n\n const handleDragLeave = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (allowUpload) {\n setIsDragOver(false);\n }\n },\n [allowUpload],\n );\n\n const handleDrop = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragOver(false);\n\n if (\n allowUpload &&\n e.dataTransfer.files &&\n e.dataTransfer.files.length > 0\n ) {\n handleFileSelect(Array.from(e.dataTransfer.files));\n }\n },\n [allowUpload, handleFileSelect],\n );\n\n // 处理提交\n const handleSubmit = () => {\n if (!value.trim() && files.length === 0) {\n message.warning(\"请输入消息或选择文件\");\n return;\n }\n\n const successFiles = files.filter((file) => file.status === \"success\");\n const uploadingFiles = files.filter((file) => file.status === \"uploading\");\n\n if (uploadingFiles.length > 0) {\n Modal.confirm({\n title: \"文件上传中\",\n content: `还有 ${uploadingFiles.length} 个文件正在上传,是否继续发送?`,\n okText: \"发送已完成的\",\n cancelText: \"等待全部完成\",\n onOk: () => {\n const formattedFiles = formatFilesForServer(successFiles);\n if (onSubmit) {\n onSubmit({\n text: value,\n files: formattedFiles,\n });\n }\n\n setValue(\"\");\n setFiles((prev) => prev.filter((f) => f.status !== \"success\"));\n },\n onCancel: () => {\n message.info(\"请等待文件上传完成后再发送\");\n },\n });\n } else {\n const formattedFiles = formatFilesForServer(successFiles);\n\n if (onSubmit) {\n onSubmit({\n text: value,\n files: formattedFiles,\n });\n }\n\n setValue(\"\");\n setFiles((prev) => prev.filter((f) => f.status !== \"success\"));\n }\n };\n\n // 格式化文件列表为服务端格式\n const formatFilesForServer = (fileList: LocalFile[]): ServerFile[] => {\n return fileList\n .filter((file) => file.status === \"success\" && file.response)\n .map((file) => {\n const responseData = normalizeUploadResponse(file.response);\n\n return {\n fileName: responseData.fileName || file.name,\n fileId: responseData.fileId || responseData.id || \"\",\n tempUrl:\n responseData.tempUrl || responseData.fileUrl || responseData.url || \"\",\n type: responseData.fileType || responseData.type || getExt(file),\n size: responseData.fileSize || responseData.size || file.size,\n mimeType: responseData.mimeType || file.type,\n raw: {\n ...responseData,\n },\n };\n });\n };\n\n // 处理输入框变化\n const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n setValue(newValue);\n onChange?.(newValue);\n };\n\n // 处理回车键\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleSubmit();\n }\n };\n\n // 渲染文件列表 - 使用新的 FileGallery 组件\n const renderFileList = () => {\n if (files.length === 0) return null;\n\n return (\n <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"8px\",\n padding: \"12px 0\",\n }}\n >\n {files.map((file) => (\n <FileGallery\n key={file.id}\n file={file}\n removable\n onRemove={handleRemoveFile}\n />\n ))}\n </div>\n );\n };\n\n const containerClass = `${styles.container} ${isDragOver ? \"drag-over\" : \"\"}`;\n const uploading = files.some((f) => f.status === \"uploading\");\n const isDisabled = disabled || uploading || loading;\n\n // 定义按钮组件(供外部 slot 函数通过 actionsComponents 使用)\n const SendButton = (props: any) => {\n if (sendButtonRender) {\n return (\n <>\n {sendButtonRender({\n loading,\n disabled: uploading || disabled,\n onSend: handleSubmit,\n onStop,\n })}\n </>\n );\n }\n return (\n <Tooltip title={loading ? \"停止生成\" : \"发送消息\"}>\n <button\n className={`${styles.iconButton} ${styles.sendButton} ${loading ? \"stop\" : \"\"}`}\n onClick={loading ? onStop : handleSubmit}\n disabled={uploading || disabled}\n aria-label={loading ? \"停止生成\" : \"发送消息\"}\n {...props}\n >\n {loading ? <LoadingOutlined spin /> : <ArrowUpOutlined />}\n </button>\n </Tooltip>\n );\n };\n\n const UploadButton = (props: any) => (\n <Tooltip title=\"上传文件\">\n <button\n className={`${styles.iconButton} ${styles.uploadButton}`}\n onClick={triggerFileSelect}\n disabled={isDisabled}\n aria-label=\"上传文件\"\n {...props}\n >\n <PaperClipOutlined />\n </button>\n </Tooltip>\n );\n\n const ClearButton = (props: any) => (\n <Popconfirm\n title=\"确定要清空聊天记录吗?\"\n onConfirm={onClear}\n placement=\"top\"\n okText=\"确定\"\n cancelText=\"取消\"\n disabled={isDisabled}\n >\n <button\n className={`${styles.iconButton} ${styles.clearButton}`}\n disabled={isDisabled}\n aria-label=\"清空聊天记录\"\n {...props}\n >\n <ClearOutlined />\n </button>\n </Popconfirm>\n );\n\n const actionsComponents: ActionsComponents = {\n SendButton,\n UploadButton,\n ClearButton,\n };\n\n // 渲染插槽内容\n const renderSlot = (\n slot:\n | React.ReactNode\n | false\n | ((\n oriNode: React.ReactNode,\n info: { components: ActionsComponents },\n ) => React.ReactNode | false)\n | undefined,\n oriNode: React.ReactNode,\n ): React.ReactNode | null => {\n if (slot === false) return null;\n if (slot === undefined) return oriNode;\n if (typeof slot === \"function\") {\n const result = slot(oriNode, { components: actionsComponents });\n return result === false ? null : result;\n }\n return slot;\n };\n\n // 默认的后缀内容(操作按钮组) - 直接内联渲染避免组件引用变化导致 unmount/remount\n const defaultSuffix = (\n <div className={styles.buttonGroup}>\n {allowUpload && (\n <Tooltip title=\"上传文件\">\n <button\n className={`${styles.iconButton} ${styles.uploadButton}`}\n onClick={triggerFileSelect}\n disabled={isDisabled}\n aria-label=\"上传文件\"\n >\n <PaperClipOutlined />\n </button>\n </Tooltip>\n )}\n <Tooltip title={loading ? \"停止生成\" : \"发送消息\"}>\n <button\n className={`${styles.iconButton} ${styles.sendButton} ${loading ? \"stop\" : \"\"}`}\n onClick={loading ? onStop : handleSubmit}\n disabled={uploading || disabled}\n aria-label={loading ? \"停止生成\" : \"发送消息\"}\n >\n {loading ? <LoadingOutlined spin /> : <ArrowUpOutlined />}\n </button>\n </Tooltip>\n </div>\n );\n\n return (\n <div\n ref={containerRef}\n className={containerClass}\n onDragOver={allowUpload && draggable ? handleDragOver : undefined}\n onDragLeave={allowUpload && draggable ? handleDragLeave : undefined}\n onDrop={allowUpload && draggable ? handleDrop : undefined}\n >\n {/* 头部插槽 */}\n {renderSlot(header, false)}\n\n {allowUpload && files.length > 0 && renderFileList()}\n\n {/* 隐藏的原生 file input */}\n {allowUpload && (\n <input\n ref={fileInputRef}\n type=\"file\"\n multiple\n accept={allowedFileTypes.join(\",\")}\n style={{ display: \"none\" }}\n onChange={(e) => {\n if (e.target.files) {\n handleFileSelect(Array.from(e.target.files));\n e.target.value = \"\";\n }\n }}\n />\n )}\n\n <div className={styles.mainArea}>\n <div className={styles.senderWrap}>\n <div className={styles.inputAndButtons}>\n {/* 清除按钮 */}\n {clearBtnShow && <ClearButton />}\n {/* 前缀插槽 */}\n {renderSlot(prefix, false)}\n\n <div className={styles.textAreaWrapper}>\n <Input.TextArea\n className={styles.textArea}\n value={value}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder=\"请输入消息...\"\n disabled={isDisabled}\n autoSize={{ minRows: 1, maxRows: 4 }}\n style={{\n border: \"none\",\n boxShadow: \"none\",\n outline: \"none\",\n padding: 0,\n }}\n />\n </div>\n\n {/* 后缀插槽(默认显示操作按钮) */}\n {renderSlot(suffix, defaultSuffix)}\n </div>\n\n {/* 底部插槽(默认显示提示文字) */}\n {renderSlot(\n footer,\n <div className={styles.tip}>\n 内容由AI生成,无法确保真实准确,仅供参考\n </div>,\n )}\n </div>\n </div>\n </div>\n );\n});\n\nXAdkSender.displayName = 'XAdkSender';\n\nimport XAdkSenderSwitch from \"./Switch\";\n\ntype XAdkSenderComponent = typeof XAdkSender & {\n Switch: typeof XAdkSenderSwitch;\n};\n\nconst CompoundSender = XAdkSender as XAdkSenderComponent;\nCompoundSender.Switch = XAdkSenderSwitch;\n\nexport default CompoundSender;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useState","useRef","useCallback","forwardRef","useImperativeHandle","Popconfirm","message","Tooltip","Input","Modal","ClearOutlined","LoadingOutlined","ArrowUpOutlined","PaperClipOutlined","useStyles","FileGallery","getExt","XAdkSender","_ref","ref","_ref$clearBtnShow","clearBtnShow","_ref$allowUpload","allowUpload","_ref$draggable","draggable","_ref$loading","loading","_ref$disabled","disabled","controlledValue","value","_ref$defaultValue","defaultValue","_ref$uploadRequest","uploadRequest","onClear","onChange","onSubmit","onStop","onFilesChange","onUploadSuccess","onUploadError","_ref$maxFileSize","maxFileSize","_ref$validators","validators","customValidators","_ref$allowedFileTypes","allowedFileTypes","_ref$maxFiles","maxFiles","Infinity","sendButtonRender","suffix","header","prefix","footer","styles","isControlled","undefined","_useState","_useState2","_slicedToArray","internalValue","setInternalValue","setValue","newValue","_useState3","_useState4","files","setFiles","_useState5","_useState6","isDragOver","setIsDragOver","containerRef","fileInputRef","generateId","Date","now","toString","Math","random","substr","normalizeUploadResponse","response","_response$data","_ref2","data","Array","isArray","checkFileType","file","length","ext","some","type","includes","endsWith","startsWith","split","slice","checkFileSize","maxSize","size","isDuplicateFile","f","name","builtInValidators","_file","_ref3","concat","_ref4","allValidators","_toConsumableArray","validateFile","_iterator","_createForOfIteratorHelper","_step","s","n","done","validator","error","valid","err","e","handleFileSelect","selectedFiles","fileArray","from","validFiles","forEach","validation","push","id","uid","progress","status","prev","next","uploadFiles","addFiles","rawFiles","_ref5","_asyncToGenerator","_regeneratorRuntime","mark","_callee","fileList","_iterator2","_step2","_loop","wrap","_callee$","_context2","localFile","_loop$","_context","map","_objectSpread","onProgress","percent","onSuccess","responseData","fileId","tempUrl","fileUrl","url","onError","errorMessage","t0","console","Error","stop","delegateYield","t1","finish","_x","apply","arguments","handleRemoveFile","filter","triggerFileSelect","current","click","handleDragOver","preventDefault","stopPropagation","handleDragLeave","handleDrop","dataTransfer","handleSubmit","trim","warning","successFiles","uploadingFiles","confirm","title","content","okText","cancelText","onOk","formattedFiles","formatFilesForServer","text","onCancel","info","fileName","fileType","fileSize","mimeType","raw","handleInputChange","target","handleKeyDown","key","shiftKey","renderFileList","_jsx","style","display","flexWrap","gap","padding","children","removable","onRemove","containerClass","container","uploading","isDisabled","hasContent","hasFiles","canSend","SendButton","props","_Fragment","onSend","className","iconButton","sendButton","onClick","spin","UploadButton","uploadButton","ClearButton","onConfirm","placement","clearButton","actionsComponents","renderSlot","slot","oriNode","result","components","defaultSuffix","_jsxs","buttonGroup","onDragOver","onDragLeave","onDrop","multiple","accept","join","mainArea","senderWrap","inputAndButtons","textAreaWrapper","TextArea","textArea","onKeyDown","placeholder","autoSize","minRows","maxRows","border","boxShadow","outline","tip","displayName","XAdkSenderSwitch","jsx","Fragment","jsxs","CompoundSender","Switch"],"sources":["../../../../src/components/XAdkSender/index.tsx"],"sourcesContent":["import React, { useState, useRef, useCallback, forwardRef, useImperativeHandle } from \"react\";\nimport { Popconfirm, message, Tooltip, Input, Modal } from \"antd\";\nimport {\n ClearOutlined,\n LoadingOutlined,\n ArrowUpOutlined,\n PaperClipOutlined,\n} from \"@ant-design/icons\";\nimport {\n XAdkSenderProps,\n XAdkSenderHandle,\n ServerFile,\n LocalFile,\n ActionsComponents,\n FileValidator,\n UploadFileResult,\n} from \"@/types\";\nimport { useStyles } from \"./styles\";\nimport FileGallery from \"../FileGallery\";\nimport { getExt } from \"@/utils/file\";\n\nconst XAdkSender = forwardRef<XAdkSenderHandle, XAdkSenderProps>(({\n clearBtnShow = true,\n allowUpload = false,\n draggable = true,\n loading = false,\n disabled = false,\n value: controlledValue,\n defaultValue = \"\",\n uploadRequest = () => {},\n onClear,\n onChange,\n onSubmit,\n onStop,\n onFilesChange,\n onUploadSuccess,\n onUploadError,\n maxFileSize = 10,\n validators: customValidators = [],\n // allowedFileTypes = [\n // \"image/*\",\n // \"audio/*\",\n // \"video/*\",\n // \"application/pdf\",\n // \"text/plain\",\n // \".doc\",\n // \".docx\",\n // \".xls\",\n // \".xlsx\",\n // \".ppt\",\n // \".pptx\",\n // \"\",\n // ],\n allowedFileTypes = [],\n maxFiles = Infinity,\n sendButtonRender,\n suffix,\n header,\n prefix,\n footer,\n}, ref) => {\n const styles = useStyles();\n const isControlled = controlledValue !== undefined;\n const [internalValue, setInternalValue] = useState<string>(defaultValue);\n const value = isControlled ? controlledValue : internalValue;\n const setValue = (newValue: string) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n };\n const [files, setFiles] = useState<LocalFile[]>([]);\n const [isDragOver, setIsDragOver] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n // 生成唯一ID\n const generateId = () => {\n return Date.now().toString(36) + Math.random().toString(36).substr(2);\n };\n\n const normalizeUploadResponse = (response: any): UploadFileResult => {\n const data = response?.data ?? response;\n return (Array.isArray(data) ? data[0] : data) ?? {};\n };\n\n // 检查文件类型\n const checkFileType = (file: File): boolean => {\n if (allowedFileTypes?.length > 0) {\n const ext = getExt(file);\n\n return allowedFileTypes.some((type) => {\n // 1️⃣ MIME 校验\n if (type.includes(\"/\")) {\n if (type.endsWith(\"/*\")) {\n return file.type.startsWith(type.split(\"/\")[0]);\n }\n return file.type === type;\n }\n\n if (type.startsWith(\".\")) {\n return ext === type.slice(1);\n }\n\n return false;\n });\n }\n return true;\n };\n\n // 检查文件大小\n const checkFileSize = (file: File): boolean => {\n const maxSize = maxFileSize * 1024 * 1024;\n return file.size <= maxSize;\n };\n\n // 重复文件检测\n const isDuplicateFile = (file: File, files: LocalFile[]) => {\n return files.some((f) => f.name === file.name && f.size === file.size);\n };\n\n // 内置校验器集合\n const builtInValidators: FileValidator[] = [\n // 数量校验(修复批量 bug)\n (_file, { files }) => {\n if (files.length >= maxFiles) {\n return `最多只能上传 ${maxFiles} 个文件`;\n }\n return null;\n },\n\n // 大小校验\n (file) => {\n const maxSize = maxFileSize * 1024 * 1024;\n if (file.size > maxSize) {\n return `文件大小不能超过 ${maxFileSize}MB`;\n }\n return null;\n },\n\n // 类型校验\n (file) => {\n if (!checkFileType(file)) {\n return \"不支持的文件类型\";\n }\n return null;\n },\n\n // ⭐ 新增:去重校验\n (file, { files }) => {\n if (isDuplicateFile(file, files)) {\n return \"文件已存在\";\n }\n return null;\n },\n ];\n\n const allValidators = [...builtInValidators, ...customValidators];\n\n // 验证文件\n const validateFile = (file: File): { valid: boolean; message?: string } => {\n for (const validator of allValidators) {\n const error = validator(file, { files });\n if (error) {\n return { valid: false, message: error };\n }\n }\n return { valid: true };\n };\n\n // 处理文件选择\n const handleFileSelect = useCallback(\n (selectedFiles: File[]) => {\n const fileArray = Array.from(selectedFiles);\n\n if (files.length + fileArray.length > maxFiles) {\n message.error(`最多只能上传 ${maxFiles} 个文件`);\n return;\n }\n\n const validFiles: LocalFile[] = [];\n\n fileArray.forEach((file) => {\n const validation = validateFile(file);\n\n if (validation.valid) {\n validFiles.push({\n id: generateId(),\n uid: generateId(),\n name: file.name,\n size: file.size,\n type: file.type,\n file,\n progress: 0,\n status: \"pending\",\n response: null,\n });\n } else {\n message.error(validation.message);\n }\n });\n\n if (validFiles.length > 0) {\n setFiles((prev) => {\n const next = [...prev, ...validFiles];\n onFilesChange?.(next);\n return next;\n });\n uploadFiles(validFiles);\n }\n },\n [files, maxFiles, maxFileSize, allowedFileTypes],\n );\n\n // 暴露 addFiles 方法供外层(如 DefaultLayout 拖拽上传)调用\n useImperativeHandle(ref, () => ({\n addFiles: (rawFiles: File[]) => {\n handleFileSelect(rawFiles);\n },\n }), [handleFileSelect]);\n\n // 上传文件\n const uploadFiles = async (fileList: LocalFile[]) => {\n for (const localFile of fileList) {\n // 开始上传\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id ? { ...f, status: \"uploading\" } : f,\n ),\n );\n\n try {\n await uploadRequest({\n file: localFile.file,\n onProgress: (e) => {\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id ? { ...f, progress: e.percent } : f,\n ),\n );\n },\n onSuccess: (response) => {\n const responseData = normalizeUploadResponse(response);\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"success\",\n progress: 100,\n response,\n fileId: responseData.fileId || responseData.id,\n tempUrl:\n responseData.tempUrl ||\n responseData.fileUrl ||\n responseData.url,\n }\n : f,\n ),\n );\n\n onUploadSuccess?.({\n ...localFile,\n status: \"success\",\n response,\n fileId: responseData.fileId || responseData.id,\n tempUrl:\n responseData.tempUrl || responseData.fileUrl || responseData.url,\n });\n },\n onError: (error) => {\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"error\",\n errorMessage: error.message,\n }\n : f,\n ),\n );\n onUploadError?.(localFile, error);\n },\n });\n } catch (error) {\n console.error(\"上传处理错误:\", error);\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"error\",\n errorMessage:\n error instanceof Error ? error.message : \"上传处理失败\",\n }\n : f,\n ),\n );\n message.error(`${localFile.name} 上传失败`);\n }\n }\n };\n\n // 删除文件\n const handleRemoveFile = (id: string) => {\n setFiles((prev) => {\n const next = prev.filter((file) => file.id !== id);\n\n onFilesChange?.(next);\n\n return next;\n });\n };\n\n // 触发文件选择\n const triggerFileSelect = () => {\n if (fileInputRef.current) {\n fileInputRef.current.click();\n }\n };\n\n // 处理拖拽事件\n const handleDragOver = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (allowUpload) {\n setIsDragOver(true);\n }\n },\n [allowUpload],\n );\n\n const handleDragLeave = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (allowUpload) {\n setIsDragOver(false);\n }\n },\n [allowUpload],\n );\n\n const handleDrop = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragOver(false);\n\n if (\n allowUpload &&\n e.dataTransfer.files &&\n e.dataTransfer.files.length > 0\n ) {\n handleFileSelect(Array.from(e.dataTransfer.files));\n }\n },\n [allowUpload, handleFileSelect],\n );\n\n // 处理提交\n const handleSubmit = () => {\n if (!value.trim() && files.length === 0) {\n message.warning(\"请输入消息或选择文件\");\n return;\n }\n\n const successFiles = files.filter((file) => file.status === \"success\");\n const uploadingFiles = files.filter((file) => file.status === \"uploading\");\n\n if (uploadingFiles.length > 0) {\n Modal.confirm({\n title: \"文件上传中\",\n content: `还有 ${uploadingFiles.length} 个文件正在上传,是否继续发送?`,\n okText: \"发送已完成的\",\n cancelText: \"等待全部完成\",\n onOk: () => {\n const formattedFiles = formatFilesForServer(successFiles);\n if (onSubmit) {\n onSubmit({\n text: value,\n files: formattedFiles,\n });\n }\n\n setValue(\"\");\n setFiles((prev) => prev.filter((f) => f.status !== \"success\"));\n },\n onCancel: () => {\n message.info(\"请等待文件上传完成后再发送\");\n },\n });\n } else {\n const formattedFiles = formatFilesForServer(successFiles);\n\n if (onSubmit) {\n onSubmit({\n text: value,\n files: formattedFiles,\n });\n }\n\n setValue(\"\");\n setFiles((prev) => prev.filter((f) => f.status !== \"success\"));\n }\n };\n\n // 格式化文件列表为服务端格式\n const formatFilesForServer = (fileList: LocalFile[]): ServerFile[] => {\n return fileList\n .filter((file) => file.status === \"success\" && file.response)\n .map((file) => {\n const responseData = normalizeUploadResponse(file.response);\n\n return {\n fileName: responseData.fileName || file.name,\n fileId: responseData.fileId || responseData.id || \"\",\n tempUrl:\n responseData.tempUrl || responseData.fileUrl || responseData.url || \"\",\n type: responseData.fileType || responseData.type || getExt(file),\n size: responseData.fileSize || responseData.size || file.size,\n mimeType: responseData.mimeType || file.type,\n raw: {\n ...responseData,\n },\n };\n });\n };\n\n // 处理输入框变化\n const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n setValue(newValue);\n };\n\n // 处理回车键\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleSubmit();\n }\n };\n\n // 渲染文件列表 - 使用新的 FileGallery 组件\n const renderFileList = () => {\n if (files.length === 0) return null;\n\n return (\n <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"8px\",\n padding: \"12px 0\",\n }}\n >\n {files.map((file) => (\n <FileGallery\n key={file.id}\n file={file}\n removable\n onRemove={handleRemoveFile}\n />\n ))}\n </div>\n );\n };\n\n const containerClass = `${styles.container} ${isDragOver ? \"drag-over\" : \"\"}`;\n const uploading = files.some((f) => f.status === \"uploading\");\n const isDisabled = disabled || uploading || loading;\n const hasContent = value.trim().length > 0;\n const hasFiles = files.some((f) => f.status === \"success\");\n const canSend = hasContent || hasFiles;\n\n // 定义按钮组件(供外部 slot 函数通过 actionsComponents 使用)\n // 注意:sendButtonRender 的结果直接内联到 defaultSuffix 中,避免组件引用变化导致闪烁\n const SendButton = (props: any) => {\n if (sendButtonRender) {\n return (\n <>\n {sendButtonRender({\n loading,\n disabled: uploading || disabled,\n canSend,\n onSend: handleSubmit,\n onStop,\n })}\n </>\n );\n }\n return (\n <Tooltip title={loading ? \"停止生成\" : \"发送消息\"}>\n <button\n className={`${styles.iconButton} ${styles.sendButton} ${loading ? \"stop\" : \"\"}`}\n onClick={loading ? onStop : handleSubmit}\n disabled={uploading || disabled}\n aria-label={loading ? \"停止生成\" : \"发送消息\"}\n {...props}\n >\n {loading ? <LoadingOutlined spin /> : <ArrowUpOutlined />}\n </button>\n </Tooltip>\n );\n };\n\n const UploadButton = (props: any) => (\n <Tooltip title=\"上传文件\">\n <button\n className={`${styles.iconButton} ${styles.uploadButton}`}\n onClick={triggerFileSelect}\n disabled={isDisabled}\n aria-label=\"上传文件\"\n {...props}\n >\n <PaperClipOutlined />\n </button>\n </Tooltip>\n );\n\n const ClearButton = (props: any) => (\n <Popconfirm\n title=\"确定要清空聊天记录吗?\"\n onConfirm={onClear}\n placement=\"top\"\n okText=\"确定\"\n cancelText=\"取消\"\n disabled={isDisabled}\n >\n <button\n className={`${styles.iconButton} ${styles.clearButton}`}\n disabled={isDisabled}\n aria-label=\"清空聊天记录\"\n {...props}\n >\n <ClearOutlined />\n </button>\n </Popconfirm>\n );\n\n const actionsComponents: ActionsComponents = {\n SendButton,\n UploadButton,\n ClearButton,\n };\n\n // 渲染插槽内容\n const renderSlot = (\n slot:\n | React.ReactNode\n | false\n | ((\n oriNode: React.ReactNode,\n info: { components: ActionsComponents },\n ) => React.ReactNode | false)\n | undefined,\n oriNode: React.ReactNode,\n ): React.ReactNode | null => {\n if (slot === false) return null;\n if (slot === undefined) return oriNode;\n if (typeof slot === \"function\") {\n const result = slot(oriNode, { components: actionsComponents });\n return result === false ? null : result;\n }\n return slot;\n };\n\n // 默认的后缀内容(操作按钮组) - 直接内联渲染避免组件引用变化导致 unmount/remount\n const defaultSuffix = (\n <div className={styles.buttonGroup}>\n {allowUpload && (\n <Tooltip title=\"上传文件\">\n <button\n className={`${styles.iconButton} ${styles.uploadButton}`}\n onClick={triggerFileSelect}\n disabled={isDisabled}\n aria-label=\"上传文件\"\n >\n <PaperClipOutlined />\n </button>\n </Tooltip>\n )}\n {sendButtonRender ? (\n sendButtonRender({\n loading,\n disabled: uploading || disabled,\n canSend,\n onSend: handleSubmit,\n onStop,\n })\n ) : (\n <Tooltip title={loading ? \"停止生成\" : \"发送消息\"}>\n <button\n className={`${styles.iconButton} ${styles.sendButton} ${loading ? \"stop\" : \"\"}`}\n onClick={loading ? onStop : handleSubmit}\n disabled={uploading || disabled}\n aria-label={loading ? \"停止生成\" : \"发送消息\"}\n >\n {loading ? <LoadingOutlined spin /> : <ArrowUpOutlined />}\n </button>\n </Tooltip>\n )}\n </div>\n );\n\n return (\n <div\n ref={containerRef}\n className={containerClass}\n onDragOver={allowUpload && draggable ? handleDragOver : undefined}\n onDragLeave={allowUpload && draggable ? handleDragLeave : undefined}\n onDrop={allowUpload && draggable ? handleDrop : undefined}\n >\n {/* 头部插槽 */}\n {renderSlot(header, false)}\n\n {allowUpload && files.length > 0 && renderFileList()}\n\n {/* 隐藏的原生 file input */}\n {allowUpload && (\n <input\n ref={fileInputRef}\n type=\"file\"\n multiple\n accept={allowedFileTypes.join(\",\")}\n style={{ display: \"none\" }}\n onChange={(e) => {\n if (e.target.files) {\n handleFileSelect(Array.from(e.target.files));\n e.target.value = \"\";\n }\n }}\n />\n )}\n\n <div className={styles.mainArea}>\n <div className={styles.senderWrap}>\n <div className={styles.inputAndButtons}>\n {/* 清除按钮 */}\n {clearBtnShow && <ClearButton />}\n {/* 前缀插槽 */}\n {renderSlot(prefix, false)}\n\n <div className={styles.textAreaWrapper}>\n <Input.TextArea\n className={styles.textArea}\n value={value}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder=\"请输入消息...\"\n disabled={isDisabled}\n autoSize={{ minRows: 1, maxRows: 4 }}\n style={{\n border: \"none\",\n boxShadow: \"none\",\n outline: \"none\",\n padding: 0,\n }}\n />\n </div>\n\n {/* 后缀插槽(默认显示操作按钮) */}\n {renderSlot(suffix, defaultSuffix)}\n </div>\n\n {/* 底部插槽(默认显示提示文字) */}\n {renderSlot(\n footer,\n <div className={styles.tip}>\n 内容由AI生成,无法确保真实准确,仅供参考\n </div>,\n )}\n </div>\n </div>\n </div>\n );\n});\n\nXAdkSender.displayName = 'XAdkSender';\n\nimport XAdkSenderSwitch from \"./Switch\";\n\ntype XAdkSenderComponent = typeof XAdkSender & {\n Switch: typeof XAdkSenderSwitch;\n};\n\nconst CompoundSender = XAdkSender as XAdkSenderComponent;\nCompoundSender.Switch = XAdkSenderSwitch;\n\nexport default CompoundSender;\n"],"mappings":"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"}
@@ -6,7 +6,6 @@ export declare const useStyles: () => {
6
6
  statusIcon: string;
7
7
  headerTitle: string;
8
8
  headerRight: string;
9
- stepCount: string;
10
9
  thinkingBody: string;
11
10
  timeline: string;
12
11
  timelineItem: string;
@@ -1,5 +1,5 @@
1
1
  import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
2
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26, _templateObject27;
2
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26;
3
3
  /* eslint-disable import/prefer-default-export */
4
4
  import { css, keyframes } from "@emotion/css";
5
5
  import { withBasicStyles } from "../../styles/common";
@@ -15,28 +15,27 @@ export var useStyles = withBasicStyles(function () {
15
15
  statusIcon: css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n font-size: 14px;\n display: flex;\n align-items: center;\n "]))),
16
16
  headerTitle: css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n font-size: 13px;\n color: #8194ad;\n font-weight: 500;\n "]))),
17
17
  headerRight: css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([""]))),
18
- stepCount: css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n font-size: 12px;\n color: #8194ad;\n background: #fff;\n padding: 2px 6px;\n border-radius: 4px;\n border: 1px solid #e0e0e0;\n "]))),
19
- thinkingBody: css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n background: #fff;\n padding: 0 16px;\n animation: fadeIn 0.2s ease-in-out;\n "]))),
18
+ thinkingBody: css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n padding: 0 16px;\n animation: fadeIn 0.2s ease-in-out;\n "]))),
20
19
  /* --- Timeline --- */
21
20
 
22
- timeline: css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n width: 100%;\n "]))),
23
- timelineItem: css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n display: flex;\n gap: 12px;\n position: relative;\n "]))),
24
- timelineLeft: css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 20px;\n flex-shrink: 0;\n "]))),
25
- timelineIcon: css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n color: #8194ad;\n font-size: 16px;\n margin-top: 6px;\n "]))),
26
- timelineIconTool: css(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral(["\n color: #faad14;\n font-size: 16px;\n margin-top: 6px;\n "]))),
27
- timelineConnector: css(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral(["\n flex: 1;\n width: 1px;\n background-color: #e5e5e5;\n margin: 4px 0;\n min-height: 12px;\n "]))),
21
+ timeline: css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n width: 100%;\n "]))),
22
+ timelineItem: css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n display: flex;\n gap: 12px;\n position: relative;\n "]))),
23
+ timelineLeft: css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 20px;\n flex-shrink: 0;\n "]))),
24
+ timelineIcon: css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n color: #8194ad;\n font-size: 16px;\n margin-top: 6px;\n "]))),
25
+ timelineIconTool: css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n color: #faad14;\n font-size: 16px;\n margin-top: 6px;\n "]))),
26
+ timelineConnector: css(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral(["\n flex: 1;\n width: 1px;\n background-color: #e5e5e5;\n margin: 4px 0;\n min-height: 12px;\n "]))),
28
27
  /* Hide connector on last item */
29
- timelineItemLastConnector: css(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral(["\n display: none;\n "]))),
30
- timelineRight: css(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral(["\n flex: 1;\n padding-bottom: 8px;\n min-width: 0;\n "]))),
31
- collapsibleHeader: css(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral(["\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 5px 8px;\n margin: 0 -8px 4px -8px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n user-select: none;\n\n &:hover {\n background: #f5f5f5;\n }\n "]))),
32
- titleText: css(_templateObject20 || (_templateObject20 = _taggedTemplateLiteral(["\n font-size: 13px;\n font-weight: 600;\n color: #8194ad;\n "]))),
33
- toolTitleGroup: css(_templateObject21 || (_templateObject21 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n gap: 8px;\n overflow: hidden;\n "]))),
34
- toolName: css(_templateObject22 || (_templateObject22 = _taggedTemplateLiteral(["\n font-size: 13px;\n font-weight: 600;\n color: #8194ad;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n "]))),
35
- toolStatusTag: css(_templateObject23 || (_templateObject23 = _taggedTemplateLiteral(["\n font-size: 11px;\n color: #52c41a;\n background: #f6ffed;\n border: 1px solid #b7eb8f;\n padding: 0 6px;\n border-radius: 4px;\n flex-shrink: 0;\n "]))),
36
- arrowIcon: css(_templateObject24 || (_templateObject24 = _taggedTemplateLiteral(["\n font-size: 10px;\n color: #bbb;\n margin-left: 8px;\n "]))),
37
- stepContent: css(_templateObject25 || (_templateObject25 = _taggedTemplateLiteral(["\n font-size: 13px;\n color: #8194ad;\n line-height: 1.6;\n padding-left: 4px;\n "]))),
38
- statusInfo: css(_templateObject26 || (_templateObject26 = _taggedTemplateLiteral(["\n font-size: 12px;\n color: #8194ad;\n margin-bottom: 4px;\n font-style: italic;\n "]))),
39
- blink: css(_templateObject27 || (_templateObject27 = _taggedTemplateLiteral(["\n color: #8194ad;\n background-image: linear-gradient(\n 90deg,\n transparent,\n rgba(0, 0, 0, 0.88),\n transparent\n );\n background-clip: text;\n -webkit-background-clip: text;\n background-size: 50%;\n background-repeat: no-repeat;\n animation-name: ", ";\n animation-duration: 1s;\n animation-iteration-count: infinite;\n animation-timing-function: linear;\n animation-fill-mode: forwards;\n "])), blinkAnimation)
28
+ timelineItemLastConnector: css(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral(["\n display: none;\n "]))),
29
+ timelineRight: css(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral(["\n flex: 1;\n padding-bottom: 8px;\n min-width: 0;\n "]))),
30
+ collapsibleHeader: css(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral(["\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 5px 8px;\n margin: 0 -8px 4px -8px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n user-select: none;\n\n &:hover {\n background: #f5f5f5;\n }\n "]))),
31
+ titleText: css(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral(["\n font-size: 13px;\n font-weight: 600;\n color: #8194ad;\n "]))),
32
+ toolTitleGroup: css(_templateObject20 || (_templateObject20 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n gap: 8px;\n overflow: hidden;\n "]))),
33
+ toolName: css(_templateObject21 || (_templateObject21 = _taggedTemplateLiteral(["\n font-size: 13px;\n font-weight: 600;\n color: #8194ad;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n "]))),
34
+ toolStatusTag: css(_templateObject22 || (_templateObject22 = _taggedTemplateLiteral(["\n font-size: 11px;\n color: #52c41a;\n background: #f6ffed;\n border: 1px solid #b7eb8f;\n padding: 0 6px;\n border-radius: 4px;\n flex-shrink: 0;\n "]))),
35
+ arrowIcon: css(_templateObject23 || (_templateObject23 = _taggedTemplateLiteral(["\n font-size: 10px;\n color: #bbb;\n margin-left: 8px;\n "]))),
36
+ stepContent: css(_templateObject24 || (_templateObject24 = _taggedTemplateLiteral(["\n font-size: 13px;\n color: #8194ad;\n line-height: 1.6;\n padding-left: 4px;\n "]))),
37
+ statusInfo: css(_templateObject25 || (_templateObject25 = _taggedTemplateLiteral(["\n font-size: 12px;\n color: #8194ad;\n margin-bottom: 4px;\n font-style: italic;\n "]))),
38
+ blink: css(_templateObject26 || (_templateObject26 = _taggedTemplateLiteral(["\n color: #8194ad;\n background-image: linear-gradient(\n 90deg,\n transparent,\n rgba(0, 0, 0, 0.88),\n transparent\n );\n background-clip: text;\n -webkit-background-clip: text;\n background-size: 50%;\n background-repeat: no-repeat;\n animation-name: ", ";\n animation-duration: 1s;\n animation-iteration-count: infinite;\n animation-timing-function: linear;\n animation-fill-mode: forwards;\n "])), blinkAnimation)
40
39
  };
41
40
  });
42
41
  //# sourceMappingURL=styles.js.map