@ai-group/chat-sdk 2.0.4 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/client/base.d.ts +2 -2
- package/dist/cjs/client/base.js.map +1 -1
- package/dist/cjs/components/DislikeFeedback.js +16 -1
- package/dist/cjs/components/DislikeFeedback.js.map +2 -2
- package/dist/cjs/components/XAdkChatbot/XAdkChatbot.stories.d.ts +6 -0
- package/dist/cjs/components/{XAiWebSDKWrapper.js → XAdkChatbot/XAdkChatbot.stories.js} +29 -40
- package/dist/cjs/components/XAdkChatbot/XAdkChatbot.stories.js.map +7 -0
- package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/index.d.ts +9 -0
- package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/index.js +158 -0
- package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/index.js.map +7 -0
- package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/styles.d.ts +40 -0
- package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/styles.js +59 -0
- package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/styles.js.map +7 -0
- package/dist/cjs/components/XAdkChatbot/components/MarkdownRender/index.d.ts +6 -0
- package/dist/cjs/components/XAdkChatbot/components/MarkdownRender/index.js +95 -0
- package/dist/cjs/components/XAdkChatbot/components/MarkdownRender/index.js.map +7 -0
- package/dist/cjs/components/XAdkChatbot/components/ThinkRender/index.d.ts +8 -0
- package/dist/cjs/components/XAdkChatbot/components/ThinkRender/index.js +49 -0
- package/dist/cjs/components/XAdkChatbot/components/ThinkRender/index.js.map +7 -0
- package/dist/cjs/components/XAdkChatbot/index.d.ts +4 -0
- package/dist/cjs/components/XAdkChatbot/index.js +232 -0
- package/dist/cjs/components/XAdkChatbot/index.js.map +7 -0
- package/dist/cjs/components/XAdkChatbot/styles.d.ts +51 -0
- package/dist/cjs/components/XAdkChatbot/styles.js +160 -0
- package/dist/cjs/components/XAdkChatbot/styles.js.map +7 -0
- package/dist/cjs/components/XAdkWebProvider/XAdkWebProvider.stories.d.ts +7 -0
- package/dist/cjs/components/XAdkWebProvider/XAdkWebProvider.stories.js +144 -0
- package/dist/cjs/components/XAdkWebProvider/XAdkWebProvider.stories.js.map +7 -0
- package/dist/cjs/components/XAdkWebProvider/index.d.ts +4 -0
- package/dist/cjs/components/XAdkWebProvider/index.js +349 -0
- package/dist/cjs/components/XAdkWebProvider/index.js.map +7 -0
- package/dist/cjs/components/XAdkWebProvider/styles.d.ts +37 -0
- package/dist/cjs/components/XAdkWebProvider/styles.js +44 -0
- package/dist/cjs/components/XAdkWebProvider/styles.js.map +7 -0
- package/dist/cjs/components/XAiChatbot/index.js +15 -13
- package/dist/cjs/components/XAiChatbot/index.js.map +2 -2
- package/dist/cjs/components/XAiConversations/XAiConversations.stories.js +1 -0
- package/dist/cjs/components/XAiConversations/XAiConversations.stories.js.map +2 -2
- package/dist/cjs/components/XAiJsonView/index.d.ts +8 -0
- package/dist/cjs/components/XAiJsonView/index.js +81 -0
- package/dist/cjs/components/XAiJsonView/index.js.map +7 -0
- package/dist/cjs/components/XAiJsonView/styles.d.ts +39 -0
- package/dist/cjs/components/XAiJsonView/styles.js +58 -0
- package/dist/cjs/components/XAiJsonView/styles.js.map +7 -0
- package/dist/cjs/components/XAiProvider/XAiProvider.stories.js +1 -1
- package/dist/cjs/components/XAiProvider/XAiProvider.stories.js.map +1 -1
- package/dist/cjs/components/XAiSender/index.js +23 -17
- package/dist/cjs/components/XAiSender/index.js.map +2 -2
- package/dist/cjs/context/AiProviderContext.d.ts +3 -2
- package/dist/cjs/context/AiProviderContext.js.map +1 -1
- package/dist/cjs/hooks/useADKChat.d.ts +38 -0
- package/dist/cjs/hooks/useADKChat.js +595 -0
- package/dist/cjs/hooks/useADKChat.js.map +7 -0
- package/dist/cjs/hooks/useAgentGenerator.js +6 -6
- package/dist/cjs/hooks/useAgentGenerator.js.map +2 -2
- package/dist/cjs/hooks/useEventStreamRequest.js +6 -3
- package/dist/cjs/hooks/useEventStreamRequest.js.map +2 -2
- package/dist/cjs/index.d.ts +1 -2
- package/dist/cjs/index.js +0 -3
- package/dist/cjs/index.js.map +3 -3
- package/dist/cjs/services/api.d.ts +36 -19
- package/dist/cjs/services/api.js +7 -7
- package/dist/cjs/services/api.js.map +2 -2
- package/dist/cjs/types/XAdkChatbot.d.ts +197 -0
- package/dist/cjs/types/XAdkChatbot.js +18 -0
- package/dist/cjs/types/XAdkChatbot.js.map +7 -0
- package/dist/cjs/types/XAdkProvider.d.ts +117 -0
- package/dist/cjs/types/XAdkProvider.js +18 -0
- package/dist/cjs/types/XAdkProvider.js.map +7 -0
- package/dist/cjs/types/XAiChatbot.d.ts +2 -2
- package/dist/cjs/types/XAiChatbot.js.map +1 -1
- package/dist/cjs/types/XAiConversations.d.ts +2 -2
- package/dist/cjs/types/XAiConversations.js.map +1 -1
- package/dist/cjs/types/index.d.ts +1 -0
- package/dist/cjs/types/index.js +3 -1
- package/dist/cjs/types/index.js.map +2 -2
- package/dist/cjs/utils/providerManager.d.ts +7 -6
- package/dist/cjs/utils/providerManager.js.map +2 -2
- package/dist/cjs/utils/umdEntry.d.ts +6 -8
- package/dist/cjs/utils/umdEntry.js +4 -18
- package/dist/cjs/utils/umdEntry.js.map +3 -3
- package/dist/esm/client/base.d.ts +2 -2
- package/dist/esm/client/base.js.map +1 -1
- package/dist/esm/components/DislikeFeedback.js +18 -5
- package/dist/esm/components/DislikeFeedback.js.map +1 -1
- package/dist/esm/components/XAdkChatbot/XAdkChatbot.stories.d.ts +6 -0
- package/dist/esm/components/XAdkChatbot/XAdkChatbot.stories.js +21 -0
- package/dist/esm/components/XAdkChatbot/XAdkChatbot.stories.js.map +1 -0
- package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/index.d.ts +9 -0
- package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/index.js +183 -0
- package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/index.js.map +1 -0
- package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/styles.d.ts +40 -0
- package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/styles.js +14 -0
- package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/styles.js.map +1 -0
- package/dist/esm/components/XAdkChatbot/components/MarkdownRender/index.d.ts +6 -0
- package/dist/esm/components/XAdkChatbot/components/MarkdownRender/index.js +70 -0
- package/dist/esm/components/XAdkChatbot/components/MarkdownRender/index.js.map +1 -0
- package/dist/esm/components/XAdkChatbot/components/ThinkRender/index.d.ts +8 -0
- package/dist/esm/components/XAdkChatbot/components/ThinkRender/index.js +32 -0
- package/dist/esm/components/XAdkChatbot/components/ThinkRender/index.js.map +1 -0
- package/dist/esm/components/XAdkChatbot/index.d.ts +4 -0
- package/dist/esm/components/XAdkChatbot/index.js +280 -0
- package/dist/esm/components/XAdkChatbot/index.js.map +1 -0
- package/dist/esm/components/XAdkChatbot/styles.d.ts +51 -0
- package/dist/esm/components/XAdkChatbot/styles.js +25 -0
- package/dist/esm/components/XAdkChatbot/styles.js.map +1 -0
- package/dist/esm/components/XAdkWebProvider/XAdkWebProvider.stories.d.ts +7 -0
- package/dist/esm/components/XAdkWebProvider/XAdkWebProvider.stories.js +148 -0
- package/dist/esm/components/XAdkWebProvider/XAdkWebProvider.stories.js.map +1 -0
- package/dist/esm/components/XAdkWebProvider/index.d.ts +4 -0
- package/dist/esm/components/XAdkWebProvider/index.js +447 -0
- package/dist/esm/components/XAdkWebProvider/index.js.map +1 -0
- package/dist/esm/components/XAdkWebProvider/styles.d.ts +37 -0
- package/dist/esm/components/XAdkWebProvider/styles.js +11 -0
- package/dist/esm/components/XAdkWebProvider/styles.js.map +1 -0
- package/dist/esm/components/XAiChatbot/index.js +19 -23
- package/dist/esm/components/XAiChatbot/index.js.map +1 -1
- package/dist/esm/components/XAiConversations/XAiConversations.stories.js +3 -3
- package/dist/esm/components/XAiConversations/XAiConversations.stories.js.map +1 -1
- package/dist/esm/components/XAiJsonView/index.d.ts +8 -0
- package/dist/esm/components/XAiJsonView/index.js +44 -0
- package/dist/esm/components/XAiJsonView/index.js.map +1 -0
- package/dist/esm/components/XAiJsonView/styles.d.ts +39 -0
- package/dist/esm/components/XAiJsonView/styles.js +19 -0
- package/dist/esm/components/XAiJsonView/styles.js.map +1 -0
- package/dist/esm/components/XAiProvider/XAiProvider.stories.js +1 -1
- package/dist/esm/components/XAiProvider/XAiProvider.stories.js.map +1 -1
- package/dist/esm/components/XAiSender/index.js +2 -2
- package/dist/esm/components/XAiSender/index.js.map +1 -1
- package/dist/esm/context/AiProviderContext.d.ts +3 -2
- package/dist/esm/context/AiProviderContext.js.map +1 -1
- package/dist/esm/hooks/useADKChat.d.ts +38 -0
- package/dist/esm/hooks/useADKChat.js +855 -0
- package/dist/esm/hooks/useADKChat.js.map +1 -0
- package/dist/esm/hooks/useAgentGenerator.js +10 -10
- package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
- package/dist/esm/hooks/useEventStreamRequest.js +5 -2
- package/dist/esm/hooks/useEventStreamRequest.js.map +1 -1
- package/dist/esm/index.d.ts +1 -2
- package/dist/esm/index.js +1 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/services/api.d.ts +36 -19
- package/dist/esm/services/api.js +8 -8
- package/dist/esm/services/api.js.map +1 -1
- package/dist/esm/types/XAdkChatbot.d.ts +197 -0
- package/dist/esm/types/XAdkChatbot.js +2 -0
- package/dist/esm/types/XAdkChatbot.js.map +1 -0
- package/dist/esm/types/XAdkProvider.d.ts +117 -0
- package/dist/esm/types/XAdkProvider.js +2 -0
- package/dist/esm/types/XAdkProvider.js.map +1 -0
- package/dist/esm/types/XAiChatbot.d.ts +2 -2
- package/dist/esm/types/XAiChatbot.js.map +1 -1
- package/dist/esm/types/XAiConversations.d.ts +2 -2
- package/dist/esm/types/XAiConversations.js.map +1 -1
- package/dist/esm/types/index.d.ts +1 -0
- package/dist/esm/types/index.js +1 -0
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/utils/providerManager.d.ts +7 -6
- package/dist/esm/utils/providerManager.js.map +1 -1
- package/dist/esm/utils/umdEntry.d.ts +6 -8
- package/dist/esm/utils/umdEntry.js +8 -37
- package/dist/esm/utils/umdEntry.js.map +1 -1
- package/dist/umd/chat-sdk.min.css +1 -0
- package/dist/umd/chat-sdk.min.js +1 -1
- package/dist/umd/static/KaTeX_AMS-Regular.1608a09b.woff +0 -0
- package/dist/umd/static/KaTeX_AMS-Regular.4aafdb68.ttf +0 -0
- package/dist/umd/static/KaTeX_AMS-Regular.a79f1c31.woff2 +0 -0
- package/dist/umd/static/KaTeX_Caligraphic-Bold.b6770918.woff +0 -0
- package/dist/umd/static/KaTeX_Caligraphic-Bold.cce5b8ec.ttf +0 -0
- package/dist/umd/static/KaTeX_Caligraphic-Bold.ec17d132.woff2 +0 -0
- package/dist/umd/static/KaTeX_Caligraphic-Regular.07ef19e7.ttf +0 -0
- package/dist/umd/static/KaTeX_Caligraphic-Regular.55fac258.woff2 +0 -0
- package/dist/umd/static/KaTeX_Caligraphic-Regular.dad44a7f.woff +0 -0
- package/dist/umd/static/KaTeX_Fraktur-Bold.9f256b85.woff +0 -0
- package/dist/umd/static/KaTeX_Fraktur-Bold.b18f59e1.ttf +0 -0
- package/dist/umd/static/KaTeX_Fraktur-Bold.d42a5579.woff2 +0 -0
- package/dist/umd/static/KaTeX_Fraktur-Regular.7c187121.woff +0 -0
- package/dist/umd/static/KaTeX_Fraktur-Regular.d3c882a6.woff2 +0 -0
- package/dist/umd/static/KaTeX_Fraktur-Regular.ed38e79f.ttf +0 -0
- package/dist/umd/static/KaTeX_Main-Bold.b74a1a8b.ttf +0 -0
- package/dist/umd/static/KaTeX_Main-Bold.c3fb5ac2.woff2 +0 -0
- package/dist/umd/static/KaTeX_Main-Bold.d181c465.woff +0 -0
- package/dist/umd/static/KaTeX_Main-BoldItalic.6f2bb1df.woff2 +0 -0
- package/dist/umd/static/KaTeX_Main-BoldItalic.70d8b0a5.ttf +0 -0
- package/dist/umd/static/KaTeX_Main-BoldItalic.e3f82f9d.woff +0 -0
- package/dist/umd/static/KaTeX_Main-Italic.47373d1e.ttf +0 -0
- package/dist/umd/static/KaTeX_Main-Italic.8916142b.woff2 +0 -0
- package/dist/umd/static/KaTeX_Main-Italic.9024d815.woff +0 -0
- package/dist/umd/static/KaTeX_Main-Regular.0462f03b.woff2 +0 -0
- package/dist/umd/static/KaTeX_Main-Regular.7f51fe03.woff +0 -0
- package/dist/umd/static/KaTeX_Main-Regular.b7f8fe9b.ttf +0 -0
- package/dist/umd/static/KaTeX_Math-BoldItalic.572d331f.woff2 +0 -0
- package/dist/umd/static/KaTeX_Math-BoldItalic.a879cf83.ttf +0 -0
- package/dist/umd/static/KaTeX_Math-BoldItalic.f1035d8d.woff +0 -0
- package/dist/umd/static/KaTeX_Math-Italic.5295ba48.woff +0 -0
- package/dist/umd/static/KaTeX_Math-Italic.939bc644.ttf +0 -0
- package/dist/umd/static/KaTeX_Math-Italic.f28c23ac.woff2 +0 -0
- package/dist/umd/static/KaTeX_SansSerif-Bold.8c5b5494.woff2 +0 -0
- package/dist/umd/static/KaTeX_SansSerif-Bold.94e1e8dc.ttf +0 -0
- package/dist/umd/static/KaTeX_SansSerif-Bold.bf59d231.woff +0 -0
- package/dist/umd/static/KaTeX_SansSerif-Italic.3b1e59b3.woff2 +0 -0
- package/dist/umd/static/KaTeX_SansSerif-Italic.7c9bc82b.woff +0 -0
- package/dist/umd/static/KaTeX_SansSerif-Italic.b4c20c84.ttf +0 -0
- package/dist/umd/static/KaTeX_SansSerif-Regular.74048478.woff +0 -0
- package/dist/umd/static/KaTeX_SansSerif-Regular.ba21ed5f.woff2 +0 -0
- package/dist/umd/static/KaTeX_SansSerif-Regular.d4d7ba48.ttf +0 -0
- package/dist/umd/static/KaTeX_Script-Regular.03e9641d.woff2 +0 -0
- package/dist/umd/static/KaTeX_Script-Regular.07505710.woff +0 -0
- package/dist/umd/static/KaTeX_Script-Regular.fe9cbbe1.ttf +0 -0
- package/dist/umd/static/KaTeX_Size1-Regular.e1e279cb.woff +0 -0
- package/dist/umd/static/KaTeX_Size1-Regular.eae34984.woff2 +0 -0
- package/dist/umd/static/KaTeX_Size1-Regular.fabc004a.ttf +0 -0
- package/dist/umd/static/KaTeX_Size2-Regular.57727022.woff +0 -0
- package/dist/umd/static/KaTeX_Size2-Regular.5916a24f.woff2 +0 -0
- package/dist/umd/static/KaTeX_Size2-Regular.d6b476ec.ttf +0 -0
- package/dist/umd/static/KaTeX_Size3-Regular.9acaf01c.woff +0 -0
- package/dist/umd/static/KaTeX_Size3-Regular.a144ef58.ttf +0 -0
- package/dist/umd/static/KaTeX_Size3-Regular.b4230e7e.woff2 +0 -0
- package/dist/umd/static/KaTeX_Size4-Regular.10d95fd3.woff2 +0 -0
- package/dist/umd/static/KaTeX_Size4-Regular.7a996c9d.woff +0 -0
- package/dist/umd/static/KaTeX_Size4-Regular.fbccdabe.ttf +0 -0
- package/dist/umd/static/KaTeX_Typewriter-Regular.6258592b.woff +0 -0
- package/dist/umd/static/KaTeX_Typewriter-Regular.a8709e36.woff2 +0 -0
- package/dist/umd/static/KaTeX_Typewriter-Regular.d97aaf4a.ttf +0 -0
- package/package.json +26 -19
- package/dist/cjs/components/XAiWebSDKWrapper.d.ts +0 -9
- package/dist/cjs/components/XAiWebSDKWrapper.js.map +0 -7
- package/dist/esm/components/XAiWebSDKWrapper.d.ts +0 -9
- package/dist/esm/components/XAiWebSDKWrapper.js +0 -45
- package/dist/esm/components/XAiWebSDKWrapper.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useRef","useState","useMemo","Tooltip","Flex","Bubble","Prompts","Attachments","UserOutlined","RedoOutlined","CopyOutlined","DeleteOutlined","clsx","MarkdownIt","reactHtmlParser","MarkdownGlobalStyle","MessageStatus","MessageRole","emptyIcon","arrowUp","arrowDown","thinkIcon","groupIcon","arrowDownBlue","useChatbotContext","useStyles","GlobalStyle","XAiSender","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","md","html","linkify","typographer","defaultRender","renderer","rules","link_open","tokens","idx","options","env","self","renderToken","aIndex","attrIndex","attrPush","attrs","relIndex","ActionHeader","_ref","_last$extra","_ref$execute","execute","_ref$thinks","thinks","styles","_useState","_useState2","_slicedToArray","expanded","setExpanded","_useState3","_useState4","executeExpanded","setExecuteExpanded","length","last","name","icon","extra","className","actionHeaderWrapper","children","actionTitle","onClick","v","src","alt","actionHeaderIcon","flex1","w","actionHeaderDetail","actionDetailTitle","pl","actionDetailContent","style","whiteSpace","executeHiddenWrapper","h","executeWrapper","executeTitle","executeHeaderIcon","executeContent","map","action","_action$extra","_action$extra2","_action$extra3","thinkIcon2","expandIcon","thinkCost","cost","actionHeaderDetailItem","actionHeaderCost","concat","uniqueId","defaultActions","key","tooltip","XAiChatbot","props","_useChatbotContext","mergedProps","_ref2","_ref2$navbarShow","navbarShow","navbar","_ref2$renderNavbar","renderNavbar","_ref2$clearBtnShow","clearBtnShow","_ref2$inputShow","inputShow","_ref2$loading","loading","propLoading","messageTooltip","avatar","userAvatar","propMessages","messages","_ref2$text","text","_ref2$footerTips","footerTips","_ref2$empty","empty","_ref2$emptyStateImage","emptyStateImage","_ref2$emptyStateText","emptyStateText","_ref2$messageActions","messageActions","onMessagesActionsCallback","onSuggestMessageClick","onSend","onClear","onStop","providerId","messageTop","enableUpload","uploadRequest","_useState5","_useState6","content","setContent","_useState7","_useState8","files","setFiles","lastMessageId","isScriptScrolling","chatId","scrollToBottom","current","setTimeout","mainChatWrapper","document","getElementById","scrollTop","scrollHeight","FooterActions","_ref3","data","_ref3$lastMessage","lastMessage","flex","gap","index","_action$render","title","cursor","render","call","MessageFooter","_ref4","_ref4$lastMessage","rolesObject","assistant","placement","bg","typing","step","interval","maxWidth","classNames","user","suggestion","visibility","variant","handleSend","obj","handleChange","str","handleStop","NavBar","subtitle","confirmClear","EmptyState","emptyWrapper","emptyImg","weight","textColor","id","wrapper","messageContainer","List","roles","messageList","items","msg","_ref5","role","status","type","_ref5$execute","_ref5$thinks","_ref5$extra","noFooter","stepContent","bubbleContent","init","header","_msg$content2","_msg$content","minWidth","htmlString","item","html2","stepHtmlString","stepLine","vertical","onItemClick","info","description","footer","_msg$content3","msgFiles","wrap","justify","f","FileCard","uid","fileId","fileName","url","fileUrl","size","fileSize","failed","value","onChangeFiles","onChange","onSubmit"],"sources":["../../../../src/components/XAiChatbot/index.tsx"],"sourcesContent":["// 文件: components/XAiChatbot/index.tsx\n\nimport React, {\n useRef,\n useState,\n useMemo,\n} from 'react';\nimport {\n Tooltip,\n GetProp,\n Flex,\n} from 'antd';\nimport {\n Bubble,\n Prompts,\n Attachments,\n} from '@ant-design/x';\nimport {\n UserOutlined,\n RedoOutlined,\n CopyOutlined,\n DeleteOutlined,\n} from '@ant-design/icons';\nimport clsx from 'clsx';\nimport MarkdownIt from 'markdown-it';\nimport reactHtmlParser from 'react-html-parser';\nimport type { Attachment } from '@ant-design/x/es/attachments';\nimport MarkdownGlobalStyle from '@/styles/markdown';\nimport {\n MessageStatus,\n MessageRole,\n Messages,\n} from '@/types/XAiMessage';\nimport {\n XAiChatbotProps,\n ActionItem,\n} from '@/types/XAiChatbot';\nimport emptyIcon from '@/assets/empty.png';\nimport arrowUp from '@/assets/arrow-up.png';\nimport arrowDown from '@/assets/arrow-down.png';\nimport thinkIcon from '@/assets/think.png';\nimport groupIcon from '@/assets/group.png';\nimport arrowDownBlue from '@/assets/arrow-down-blue.png';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { useStyles, GlobalStyle } from './styles';\nimport XAiSender from '../XAiSender';\nimport type { SendContent } from '@/types';\n\nconst md = new MarkdownIt({\n html: true,\n linkify: true,\n typographer: true,\n});\n\n// 自定义 link_open 渲染规则\nconst defaultRender = md.renderer.rules.link_open || ((tokens, idx, options, env, self) => {\n return self.renderToken(tokens, idx, options);\n});\n\n// a 标签打开规则\nmd.renderer.rules.link_open = (tokens, idx, options, env, self) => {\n // 添加 target=\"_blank\"\n const aIndex = tokens[idx].attrIndex('target');\n if (aIndex < 0) {\n tokens[idx].attrPush(['target', '_blank']);\n } else {\n tokens[idx].attrs![aIndex][1] = '_blank';\n }\n // 添加 rel=\"noopener noreferrer\"\n const relIndex = tokens[idx].attrIndex('rel');\n if (relIndex < 0) {\n tokens[idx].attrPush(['rel', 'noopener noreferrer']);\n } else {\n tokens[idx].attrs![relIndex][1] = 'noopener noreferrer';\n }\n return defaultRender(tokens, idx, options, env, self);\n};\n\nexport interface ActionHeaderProps {\n execute: any[];\n thinks: string;\n}\n\n// ActionHeader 组件\nexport const ActionHeader: React.FC<ActionHeaderProps> = ({ execute = [], thinks = '' }) => {\n const styles = useStyles();\n const [expanded, setExpanded] = useState(true);\n const [executeExpanded, setExecuteExpanded] = useState(false);\n\n // 关键修复:只要有思考内容或执行过程就显示,不要同时要求两者都有\n if (!thinks && (!execute || execute.length === 0)) return null;\n\n const last = execute[execute.length - 1] || {};\n const { name } = last;\n const icon = last?.icon || last?.extra?.icon;\n\n return (\n <div className={styles.actionHeaderWrapper}>\n {!expanded && (\n <div className={styles.actionTitle} onClick={() => setExpanded((v) => !v)}>\n <img src={thinkIcon} alt=\"icon\" className={styles.actionHeaderIcon} />\n <span className={styles.flex1}>运行过程</span>\n <img alt=\"展开icon\" src={arrowDown} className={styles.w('16px')} />\n </div>\n )}\n {expanded && (\n <div className={styles.actionHeaderDetail}>\n <div className={styles.actionDetailTitle} onClick={() => setExpanded((v) => !v)}>\n <img src={thinkIcon} alt=\"\" className={clsx(styles.w(14))} />\n <div className={clsx(styles.flex1, styles.pl(10))}>隐藏运行过程</div>\n <img alt=\"收起icon\" src={arrowUp} className={styles.w('16px')} />\n </div>\n\n {thinks && (\n <div className={styles.actionDetailContent} style={{ whiteSpace: 'pre-line' }}>\n {thinks}\n </div>\n )}\n\n {execute && execute.length > 0 && (\n <>\n {!executeExpanded && (\n <div className={styles.executeHiddenWrapper} onClick={() => setExecuteExpanded((v) => !v)}>\n {icon && <img src={icon} alt=\"icon\" className={styles.h(15)} />}\n <span className={styles.flex1}>{name}</span>\n <img alt=\"工具icon\" src={arrowDownBlue} className={styles.w('16px')} />\n </div>\n )}\n {executeExpanded && (\n <div className={styles.executeWrapper}>\n <div className={styles.executeTitle} onClick={() => setExecuteExpanded((v) => !v)}>\n <img src={groupIcon} alt=\"icon\" className={styles.executeHeaderIcon} />\n <span className={styles.flex1}>隐藏运行详情</span>\n <img alt=\"展开详情icon\" src={arrowUp} className={styles.w('16px')} />\n </div>\n <div className={styles.executeContent}>\n {execute.map((action: any, idx: number) => {\n const thinkIcon2 = action?.expandIcon || action?.extra?.expandIcon || action?.extra?.icon || action?.icon;\n const thinkCost = action?.cost || action?.extra?.cost;\n return (\n <div key={action.uniqueId || idx} className={styles.actionHeaderDetailItem}>\n {thinkIcon2 && <img src={thinkIcon2} alt=\"icon\" className={styles.actionHeaderIcon} />}\n <span>{action?.name}</span>\n <span className={styles.actionHeaderCost}>{thinkCost ? `${thinkCost}s` : ''}</span>\n </div>\n );\n })}\n </div>\n </div>\n )}\n </>\n )}\n </div>\n )}\n </div>\n );\n};\n\n// 默认消息功能区\nexport const defaultActions: ActionItem[] = [\n {\n key: 'redo',\n icon: <RedoOutlined />,\n tooltip: '重新生成',\n },\n {\n key: 'copy',\n icon: <CopyOutlined />,\n tooltip: '复制',\n },\n {\n key: 'delete',\n icon: <DeleteOutlined />,\n tooltip: '删除',\n },\n];\n\nconst XAiChatbot: React.FC<XAiChatbotProps> = (props) => {\n const styles = useStyles();\n // 使用新的 Hook 来处理 Provider 上下文\n const { mergedProps } = useChatbotContext(props);\n\n const {\n navbarShow = false,\n navbar,\n renderNavbar = null,\n clearBtnShow = true,\n inputShow = true,\n // renderMessageContent,\n // quickReplies = [],\n // quickRepliesVisible = true,\n // onQuickReplyClick,\n loading: propLoading = false,\n messageTooltip,\n avatar,\n userAvatar,\n messages: propMessages,\n text = '',\n footerTips = '',\n empty = null,\n emptyStateImage = emptyIcon,\n emptyStateText = '我的智能体',\n messageActions = defaultActions,\n onMessagesActionsCallback,\n // 点击帮助消息\n onSuggestMessageClick,\n onSend,\n onClear,\n onStop,\n providerId,\n // 消息顶部\n messageTop,\n enableUpload,\n uploadRequest,\n } = mergedProps as XAiChatbotProps;\n\n // 如果在 Provider 中,使用 Provider 的状态\n const messages = mergedProps.messages || propMessages || [];\n const loading = mergedProps.loading || propLoading;\n\n const [content, setContent] = useState<string>(text); // 输入框文本\n const [files, setFiles] = useState<Attachment[]>([]);\n const lastMessageId = useRef<string>('');\n const isScriptScrolling = useRef<boolean>(false);\n const chatId = providerId ? `za-chatbot-container-${providerId}` : 'za-chatbot-container';\n\n // 滚动到最底部\n const scrollToBottom = () => {\n isScriptScrolling.current = true;\n setTimeout(() => {\n const mainChatWrapper = document.getElementById(chatId);\n if (mainChatWrapper) {\n mainChatWrapper.scrollTop = mainChatWrapper?.scrollHeight;\n }\n isScriptScrolling.current = false;\n }, 0);\n };\n\n // 消息功能区组件\n const FooterActions: React.FC<{ data: Messages; lastMessage: boolean }> = ({ data, lastMessage = false }) => (\n <div className={clsx(styles.flex, styles.gap(13))}>\n {messageActions.map((action: ActionItem, index: number) => {\n if (!lastMessage && action.key === 'redo') return null;\n return (\n <Tooltip key={action.key} title={action.tooltip}>\n <span className={styles.cursor('pointer')} onClick={() => onMessagesActionsCallback?.(index, data)}>\n {action.icon}\n {action.render?.(index, data)}\n </span>\n </Tooltip>\n );\n })}\n </div>\n );\n\n // 消息底部区域\n const MessageFooter: React.FC<{ data: Messages; lastMessage: boolean }> = ({ data, lastMessage = false }) => (\n <>\n {messageTooltip?.(data)}\n <FooterActions data={data} lastMessage={lastMessage} />\n </>\n );\n\n // 聊天角色\n const rolesObject: GetProp<typeof Bubble.List, '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 // 触发发送\n const handleSend = (obj: SendContent) => {\n // 直接使用合并后的 onSend,自动处理 Provider 和独立模式\n onSend?.(obj);\n setContent(''); // 发送后清空输入框内容\n setFiles([]); // 发送后清空文件\n scrollToBottom();\n };\n\n // 输出内容\n const handleChange = (str: string) => {\n setContent(str);\n };\n\n // 停止生成\n const handleStop = () => {\n onStop?.();\n };\n\n // 导航栏\n const NavBar: React.FC = () => {\n if (renderNavbar) {\n return renderNavbar();\n } if (navbar?.title) {\n return (\n <header className={styles.navbar}>\n {navbar.avatar && <img src={navbar.avatar} className={styles.avatar} alt=\"\" />}\n <div>\n <div className={styles.title}>{navbar.title}</div>\n <div className={styles.subtitle}>{navbar.subtitle}</div>\n </div>\n </header>\n );\n }\n return <></>;\n };\n\n // 确认清除\n const confirmClear = () => {\n onClear?.();\n };\n\n // 空状态\n const EmptyState = useMemo(() => () => (\n empty || (\n <div className={styles.emptyWrapper}>\n <img src={emptyStateImage} alt=\"空状态图标\" className={styles.emptyImg} />\n <div className={clsx(styles.text(16), styles.weight(600), styles.textColor('#343434'))}>{emptyStateText}</div>\n </div>\n )\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ), [emptyStateImage, emptyStateText]);\n\n return (\n <>\n <GlobalStyle />\n <MarkdownGlobalStyle />\n <div id=\"x-ai-chatbot\" className={styles.wrapper}>\n { navbarShow && <NavBar /> }\n {/** 消息容器 */}\n <div className={styles.messageContainer}>\n {/* 消息列表主体 */}\n {\n messages?.length\n ? (\n <Bubble.List\n id={chatId}\n roles={rolesObject}\n className={styles.messageList}\n items={messages.map((msg: any) => {\n const { id, role, status, type, execute = [], thinks = '', extra = { noFooter: false }, stepContent } = msg as Messages;\n // 最后一条 AI消息标识\n if (role === MessageRole.assistant) {\n lastMessageId.current = id;\n }\n // 会话内容\n const bubbleContent: any = {\n key: id,\n role,\n loading: status === MessageStatus.init,\n header: (() => messageTop\n || (\n <ActionHeader\n execute={execute}\n thinks={thinks}\n />\n )),\n content: (() => {\n // 文本消息\n if (type === 'TextMessage') {\n // 用户消息\n if (role === 'user') {\n return (\n <div\n className=\"ai-markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {msg.content?.text}\n </div>\n );\n }\n\n // 输出html字符串\n const html = md.render(msg.content?.text || '');\n // 生成React节点\n const htmlString = reactHtmlParser(html);\n return (\n <>\n {/* 输出阶段性回答内容 */}\n {stepContent?.length && stepContent.map((item) => {\n // 输出html字符串\n const html2 = md.render(item.content || '');\n // 生成React节点\n const stepHtmlString = reactHtmlParser(html2);\n return (\n <div\n key={item.id}\n className=\"ai-markdown-body step-content\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n <div>\n {stepHtmlString}\n </div>\n <div className={styles.stepLine} />\n </div>\n );\n })}\n {/** 输出最终回答内容 */}\n <div\n className=\"ai-markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {htmlString}\n </div>\n </>\n );\n }\n // 提示类型\n if (type === 'SuggestionMessage') {\n return (\n <Prompts\n vertical\n items={msg.content as any}\n onItemClick={(info) => {\n onSuggestMessageClick?.(info.data, id);\n if (info.data.description) {\n onSend?.({ text: info.data.description as string });\n }\n }}\n />\n );\n }\n // 其他类型...\n return null;\n })(),\n };\n\n if (!extra.noFooter) {\n bubbleContent.footer = (() => {\n const msgFiles = msg.content?.files || [];\n if (role === MessageRole.user && msgFiles.length) {\n return (\n <Flex gap={8} wrap justify=\"flex-end\" style={{ maxWidth: 600 }}>\n {msgFiles.map((f: any) => (\n <Attachments.FileCard\n key={f.fileId}\n item={{\n uid: f.fileId,\n name: f.fileName,\n url: f.fileUrl,\n size: f.fileSize,\n }}\n />\n ))}\n </Flex>\n );\n }\n if (role === MessageRole.assistant && status !== MessageStatus.failed) {\n return <MessageFooter data={msg as Messages} lastMessage={lastMessageId.current === id} />;\n }\n });\n }\n\n return bubbleContent;\n })}\n />\n )\n : (\n <EmptyState />\n )\n }\n </div>\n {/* 输入框 */}\n { inputShow && (\n <XAiSender\n value={content}\n loading={loading}\n footerTips={footerTips}\n clearBtnShow={clearBtnShow}\n enableUpload={enableUpload}\n files={files}\n onChangeFiles={setFiles}\n uploadRequest={uploadRequest}\n onChange={handleChange}\n onSubmit={handleSend}\n onStop={handleStop}\n onClear={confirmClear}\n />\n ) }\n </div>\n </>\n );\n};\n\nexport default XAiChatbot;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useRef","useState","useMemo","Tooltip","Flex","Bubble","Prompts","FileCard","UserOutlined","RedoOutlined","CopyOutlined","DeleteOutlined","clsx","MarkdownIt","reactHtmlParser","MarkdownGlobalStyle","MessageStatus","MessageRole","emptyIcon","arrowUp","arrowDown","thinkIcon","groupIcon","arrowDownBlue","useChatbotContext","useStyles","GlobalStyle","XAiSender","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","md","html","linkify","typographer","defaultRender","renderer","rules","link_open","tokens","idx","options","env","self","renderToken","aIndex","attrIndex","attrPush","attrs","relIndex","ActionHeader","_ref","_last$extra","_ref$execute","execute","_ref$thinks","thinks","styles","_useState","_useState2","_slicedToArray","expanded","setExpanded","_useState3","_useState4","executeExpanded","setExecuteExpanded","length","last","name","icon","extra","className","actionHeaderWrapper","children","actionTitle","onClick","v","src","alt","actionHeaderIcon","flex1","w","actionHeaderDetail","actionDetailTitle","pl","actionDetailContent","style","whiteSpace","executeHiddenWrapper","h","executeWrapper","executeTitle","executeHeaderIcon","executeContent","map","action","_action$extra","_action$extra2","_action$extra3","thinkIcon2","expandIcon","thinkCost","cost","actionHeaderDetailItem","actionHeaderCost","concat","uniqueId","defaultActions","key","tooltip","XAiChatbot","props","_useChatbotContext","mergedProps","_ref2","_ref2$navbarShow","navbarShow","navbar","_ref2$renderNavbar","renderNavbar","_ref2$clearBtnShow","clearBtnShow","_ref2$inputShow","inputShow","_ref2$loading","loading","propLoading","messageTooltip","avatar","userAvatar","propMessages","messages","_ref2$text","text","_ref2$footerTips","footerTips","_ref2$empty","empty","_ref2$emptyStateImage","emptyStateImage","_ref2$emptyStateText","emptyStateText","_ref2$messageActions","messageActions","onMessagesActionsCallback","onSuggestMessageClick","onSend","onClear","onStop","providerId","messageTop","enableUpload","uploadRequest","_useState5","_useState6","content","setContent","_useState7","_useState8","files","setFiles","lastMessageId","isScriptScrolling","chatId","scrollToBottom","current","setTimeout","mainChatWrapper","document","getElementById","scrollTop","scrollHeight","FooterActions","_ref3","data","_ref3$lastMessage","lastMessage","flex","gap","index","_action$render","title","cursor","render","call","MessageFooter","_ref4","_ref4$lastMessage","rolesObject","assistant","placement","bg","typing","step","interval","effect","maxWidth","classNames","user","suggestion","variant","handleSend","obj","handleChange","str","handleStop","NavBar","subtitle","confirmClear","EmptyState","emptyWrapper","emptyImg","weight","textColor","id","wrapper","messageContainer","List","role","messageList","items","msg","_ref5","status","type","_ref5$execute","_ref5$thinks","_ref5$extra","noFooter","stepContent","bubbleContent","init","header","_msg$content2","_msg$content","minWidth","htmlString","item","html2","stepHtmlString","stepLine","vertical","onItemClick","info","description","footer","_msg$content3","msgFiles","wrap","justify","f","fileName","size","fileSize","fileId","failed","value","onChangeFiles","onChange","onSubmit"],"sources":["../../../../src/components/XAiChatbot/index.tsx"],"sourcesContent":["// 文件: components/XAiChatbot/index.tsx\n\nimport React, {\n useRef,\n useState,\n useMemo,\n} from 'react';\nimport {\n Tooltip,\n GetProp,\n Flex,\n} from 'antd';\nimport {\n Bubble,\n Prompts,\n Attachments,\n FileCard\n} from '@ant-design/x';\nimport {\n UserOutlined,\n RedoOutlined,\n CopyOutlined,\n DeleteOutlined,\n} from '@ant-design/icons';\nimport clsx from 'clsx';\nimport MarkdownIt from 'markdown-it';\nimport reactHtmlParser from 'react-html-parser';\nimport type { Attachment } from '@ant-design/x/es/attachments';\nimport MarkdownGlobalStyle from '@/styles/markdown';\nimport {\n MessageStatus,\n MessageRole,\n Messages,\n} from '@/types/XAiMessage';\nimport {\n XAiChatbotProps,\n ActionItem,\n} from '@/types/XAiChatbot';\nimport emptyIcon from '@/assets/empty.png';\nimport arrowUp from '@/assets/arrow-up.png';\nimport arrowDown from '@/assets/arrow-down.png';\nimport thinkIcon from '@/assets/think.png';\nimport groupIcon from '@/assets/group.png';\nimport arrowDownBlue from '@/assets/arrow-down-blue.png';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { useStyles, GlobalStyle } from './styles';\nimport XAiSender from '../XAiSender';\nimport type { SendContent } from '@/types';\n\nconst md = new MarkdownIt({\n html: true,\n linkify: true,\n typographer: true,\n});\n\n// 自定义 link_open 渲染规则\nconst defaultRender = md.renderer.rules.link_open || ((tokens, idx, options, env, self) => {\n return self.renderToken(tokens, idx, options);\n});\n\n// a 标签打开规则\nmd.renderer.rules.link_open = (tokens, idx, options, env, self) => {\n // 添加 target=\"_blank\"\n const aIndex = tokens[idx].attrIndex('target');\n if (aIndex < 0) {\n tokens[idx].attrPush(['target', '_blank']);\n } else {\n tokens[idx].attrs![aIndex][1] = '_blank';\n }\n // 添加 rel=\"noopener noreferrer\"\n const relIndex = tokens[idx].attrIndex('rel');\n if (relIndex < 0) {\n tokens[idx].attrPush(['rel', 'noopener noreferrer']);\n } else {\n tokens[idx].attrs![relIndex][1] = 'noopener noreferrer';\n }\n return defaultRender(tokens, idx, options, env, self);\n};\n\nexport interface ActionHeaderProps {\n execute: any[];\n thinks: string;\n}\n\n// ActionHeader 组件\nexport const ActionHeader: React.FC<ActionHeaderProps> = ({ execute = [], thinks = '' }) => {\n const styles = useStyles();\n const [expanded, setExpanded] = useState(true);\n const [executeExpanded, setExecuteExpanded] = useState(false);\n\n // 关键修复:只要有思考内容或执行过程就显示,不要同时要求两者都有\n if (!thinks && (!execute || execute.length === 0)) return null;\n\n const last = execute[execute.length - 1] || {};\n const { name } = last;\n const icon = last?.icon || last?.extra?.icon;\n\n return (\n <div className={styles.actionHeaderWrapper}>\n {!expanded && (\n <div className={styles.actionTitle} onClick={() => setExpanded((v) => !v)}>\n <img src={thinkIcon} alt=\"icon\" className={styles.actionHeaderIcon} />\n <span className={styles.flex1}>运行过程</span>\n <img alt=\"展开icon\" src={arrowDown} className={styles.w('16px')} />\n </div>\n )}\n {expanded && (\n <div className={styles.actionHeaderDetail}>\n <div className={styles.actionDetailTitle} onClick={() => setExpanded((v) => !v)}>\n <img src={thinkIcon} alt=\"\" className={clsx(styles.w(14))} />\n <div className={clsx(styles.flex1, styles.pl(10))}>隐藏运行过程</div>\n <img alt=\"收起icon\" src={arrowUp} className={styles.w('16px')} />\n </div>\n\n {thinks && (\n <div className={styles.actionDetailContent} style={{ whiteSpace: 'pre-line' }}>\n {thinks}\n </div>\n )}\n\n {execute && execute.length > 0 && (\n <>\n {!executeExpanded && (\n <div className={styles.executeHiddenWrapper} onClick={() => setExecuteExpanded((v) => !v)}>\n {icon && <img src={icon} alt=\"icon\" className={styles.h(15)} />}\n <span className={styles.flex1}>{name}</span>\n <img alt=\"工具icon\" src={arrowDownBlue} className={styles.w('16px')} />\n </div>\n )}\n {executeExpanded && (\n <div className={styles.executeWrapper}>\n <div className={styles.executeTitle} onClick={() => setExecuteExpanded((v) => !v)}>\n <img src={groupIcon} alt=\"icon\" className={styles.executeHeaderIcon} />\n <span className={styles.flex1}>隐藏运行详情</span>\n <img alt=\"展开详情icon\" src={arrowUp} className={styles.w('16px')} />\n </div>\n <div className={styles.executeContent}>\n {execute.map((action: any, idx: number) => {\n const thinkIcon2 = action?.expandIcon || action?.extra?.expandIcon || action?.extra?.icon || action?.icon;\n const thinkCost = action?.cost || action?.extra?.cost;\n return (\n <div key={action.uniqueId || idx} className={styles.actionHeaderDetailItem}>\n {thinkIcon2 && <img src={thinkIcon2} alt=\"icon\" className={styles.actionHeaderIcon} />}\n <span>{action?.name}</span>\n <span className={styles.actionHeaderCost}>{thinkCost ? `${thinkCost}s` : ''}</span>\n </div>\n );\n })}\n </div>\n </div>\n )}\n </>\n )}\n </div>\n )}\n </div>\n );\n};\n\n// 默认消息功能区\nexport const defaultActions: ActionItem[] = [\n {\n key: 'redo',\n icon: <RedoOutlined />,\n tooltip: '重新生成',\n },\n {\n key: 'copy',\n icon: <CopyOutlined />,\n tooltip: '复制',\n },\n {\n key: 'delete',\n icon: <DeleteOutlined />,\n tooltip: '删除',\n },\n];\n\nconst XAiChatbot: React.FC<XAiChatbotProps> = (props) => {\n const styles = useStyles();\n // 使用新的 Hook 来处理 Provider 上下文\n const { mergedProps } = useChatbotContext(props);\n\n const {\n navbarShow = false,\n navbar,\n renderNavbar = null,\n clearBtnShow = true,\n inputShow = true,\n // renderMessageContent,\n // quickReplies = [],\n // quickRepliesVisible = true,\n // onQuickReplyClick,\n loading: propLoading = false,\n messageTooltip,\n avatar,\n userAvatar,\n messages: propMessages,\n text = '',\n footerTips = '',\n empty = null,\n emptyStateImage = emptyIcon,\n emptyStateText = '我的智能体',\n messageActions = defaultActions,\n onMessagesActionsCallback,\n // 点击帮助消息\n onSuggestMessageClick,\n onSend,\n onClear,\n onStop,\n providerId,\n // 消息顶部\n messageTop,\n enableUpload,\n uploadRequest,\n } = mergedProps as XAiChatbotProps;\n\n // 如果在 Provider 中,使用 Provider 的状态\n const messages = mergedProps.messages || propMessages || [];\n const loading = mergedProps.loading || propLoading;\n\n const [content, setContent] = useState<string>(text); // 输入框文本\n const [files, setFiles] = useState<Attachment[]>([]);\n const lastMessageId = useRef<string>('');\n const isScriptScrolling = useRef<boolean>(false);\n const chatId = providerId ? `za-chatbot-container-${providerId}` : 'za-chatbot-container';\n\n // 滚动到最底部\n const scrollToBottom = () => {\n isScriptScrolling.current = true;\n setTimeout(() => {\n const mainChatWrapper = document.getElementById(chatId);\n if (mainChatWrapper) {\n mainChatWrapper.scrollTop = mainChatWrapper?.scrollHeight;\n }\n isScriptScrolling.current = false;\n }, 0);\n };\n\n // 消息功能区组件\n const FooterActions: React.FC<{ data: Messages; lastMessage: boolean }> = ({ data, lastMessage = false }) => (\n <div className={clsx(styles.flex, styles.gap(13))}>\n {messageActions.map((action: ActionItem, index: number) => {\n if (!lastMessage && action.key === 'redo') return null;\n return (\n <Tooltip key={action.key} title={action.tooltip}>\n <span className={styles.cursor('pointer')} onClick={() => onMessagesActionsCallback?.(index, data)}>\n {action.icon}\n {action.render?.(index, data)}\n </span>\n </Tooltip>\n );\n })}\n </div>\n );\n\n // 消息底部区域\n const MessageFooter: React.FC<{ data: Messages; lastMessage: boolean }> = ({ data, lastMessage = false }) => (\n <>\n {messageTooltip?.(data)}\n <FooterActions data={data} lastMessage={lastMessage} />\n </>\n );\n\n // 聊天角色\n const rolesObject: GetProp<typeof Bubble.List, 'role'> = {\n assistant: {\n placement: 'start',\n avatar: () => {\n return avatar || <UserOutlined className={clsx(styles.bg('#fde3cf'), styles.userAvatar)} />;\n },\n typing: { step: 5, interval: 20, effect: 'typing' },\n style: {\n maxWidth: 600,\n },\n classNames: {\n content: 'assistant-content',\n },\n },\n user: {\n placement: 'end',\n avatar: () => {\n return userAvatar || <UserOutlined className={clsx(styles.bg('#87d068'), styles.userAvatar)} />;\n },\n classNames: {\n content: 'user-content',\n },\n },\n suggestion: {\n placement: 'start',\n avatar: () => {\n return avatar || <UserOutlined className={clsx(styles.bg('#fde3cf'), styles.userAvatar)} />;\n },\n variant: 'borderless',\n },\n };\n\n // 触发发送\n const handleSend = (obj: SendContent) => {\n // 直接使用合并后的 onSend,自动处理 Provider 和独立模式\n onSend?.(obj);\n setContent(''); // 发送后清空输入框内容\n setFiles([]); // 发送后清空文件\n scrollToBottom();\n };\n\n // 输出内容\n const handleChange = (str: string) => {\n setContent(str);\n };\n\n // 停止生成\n const handleStop = () => {\n onStop?.();\n };\n\n // 导航栏\n const NavBar: React.FC = () => {\n if (renderNavbar) {\n return renderNavbar();\n } if (navbar?.title) {\n return (\n <header className={styles.navbar}>\n {navbar.avatar && <img src={navbar.avatar} className={styles.avatar} alt=\"\" />}\n <div>\n <div className={styles.title}>{navbar.title}</div>\n <div className={styles.subtitle}>{navbar.subtitle}</div>\n </div>\n </header>\n );\n }\n return <></>;\n };\n\n // 确认清除\n const confirmClear = () => {\n onClear?.();\n };\n\n // 空状态\n const EmptyState = useMemo(() => () => (\n empty || (\n <div className={styles.emptyWrapper}>\n <img src={emptyStateImage} alt=\"空状态图标\" className={styles.emptyImg} />\n <div className={clsx(styles.text(16), styles.weight(600), styles.textColor('#343434'))}>{emptyStateText}</div>\n </div>\n )\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ), [emptyStateImage, emptyStateText]);\n\n return (\n <>\n <GlobalStyle />\n <MarkdownGlobalStyle />\n <div id=\"x-ai-chatbot\" className={styles.wrapper}>\n { navbarShow && <NavBar /> }\n {/** 消息容器 */}\n <div className={styles.messageContainer}>\n {/* 消息列表主体 */}\n {\n messages?.length\n ? (\n <Bubble.List\n id={chatId}\n role={rolesObject}\n className={styles.messageList}\n items={messages.map((msg: any) => {\n const { id, role, status, type, execute = [], thinks = '', extra = { noFooter: false }, stepContent } = msg as Messages;\n // 最后一条 AI消息标识\n if (role === MessageRole.assistant) {\n lastMessageId.current = id;\n }\n // 会话内容\n const bubbleContent: any = {\n key: id,\n role,\n loading: status === MessageStatus.init,\n header: (() => messageTop\n || (\n <ActionHeader\n execute={execute}\n thinks={thinks}\n />\n )),\n content: (() => {\n // 文本消息\n if (type === 'TextMessage') {\n // 用户消息\n if (role === 'user') {\n return (\n <div\n className=\"ai-markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {msg.content?.text}\n </div>\n );\n }\n\n // 输出html字符串\n const html = md.render(msg.content?.text || '');\n // 生成React节点\n const htmlString = reactHtmlParser(html);\n return (\n <>\n {/* 输出阶段性回答内容 */}\n {stepContent?.length && stepContent.map((item) => {\n // 输出html字符串\n const html2 = md.render(item.content || '');\n // 生成React节点\n const stepHtmlString = reactHtmlParser(html2);\n return (\n <div\n key={item.id}\n className=\"ai-markdown-body step-content\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n <div>\n {stepHtmlString}\n </div>\n <div className={styles.stepLine} />\n </div>\n );\n })}\n {/** 输出最终回答内容 */}\n <div\n className=\"ai-markdown-body\"\n style={{\n minWidth: 0,\n maxWidth: 600,\n }}\n >\n {htmlString}\n </div>\n </>\n );\n }\n // 提示类型\n if (type === 'SuggestionMessage') {\n return (\n <Prompts\n vertical\n items={msg.content as any}\n onItemClick={(info) => {\n onSuggestMessageClick?.(info?.data, id);\n if (info.data.description) {\n onSend?.({ text: info.data.description as string });\n }\n }}\n />\n );\n }\n // 其他类型...\n return null;\n })(),\n };\n\n if (!extra.noFooter) {\n bubbleContent.footer = (() => {\n const msgFiles = msg.content?.files || [];\n if (role === MessageRole.user && msgFiles.length) {\n return (\n <Flex gap={8} wrap justify=\"flex-end\" style={{ maxWidth: 600 }}>\n {msgFiles.map((f: any) => (\n <FileCard\n key={f.fileId}\n name={f.fileName}\n size={f.fileSize}\n />\n ))}\n </Flex>\n );\n }\n if (role === MessageRole.assistant && status !== MessageStatus.failed) {\n return <MessageFooter data={msg as Messages} lastMessage={lastMessageId.current === id} />;\n }\n });\n }\n\n return bubbleContent;\n })}\n />\n )\n : (\n <EmptyState />\n )\n }\n </div>\n {/* 输入框 */}\n { inputShow && (\n <XAiSender\n value={content}\n loading={loading}\n footerTips={footerTips}\n clearBtnShow={clearBtnShow}\n enableUpload={enableUpload}\n files={files}\n onChangeFiles={setFiles}\n uploadRequest={uploadRequest}\n onChange={handleChange}\n onSubmit={handleSend}\n onStop={handleStop}\n onClear={confirmClear}\n />\n ) }\n </div>\n </>\n );\n};\n\nexport default XAiChatbot;\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
2
|
import XAiConversations from '.';
|
|
3
3
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
4
|
var meta = {
|
|
@@ -30,9 +30,9 @@ var BasicUsageStory = function BasicUsageStory(args) {
|
|
|
30
30
|
alignItems: 'center',
|
|
31
31
|
paddingInline: '50px'
|
|
32
32
|
},
|
|
33
|
-
children: /*#__PURE__*/_jsx(XAiConversations, {
|
|
33
|
+
children: /*#__PURE__*/_jsx(XAiConversations, _objectSpread(_objectSpread({}, args), {}, {
|
|
34
34
|
sessionList: items
|
|
35
|
-
})
|
|
35
|
+
}))
|
|
36
36
|
});
|
|
37
37
|
};
|
|
38
38
|
export var 基础用法 = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["XAiConversations","jsx","_jsx","meta","title","component","parameters","layout","tags","argTypes","BasicUsageStory","args","items","Array","from","length","map","_","index","key","concat","label","disabled","style","backgroundColor","minHeight","minWidth","display","alignItems","paddingInline","children","_objectSpread","sessionList","基础用法","render"],"sources":["../../../../src/components/XAiConversations/XAiConversations.stories.tsx"],"sourcesContent":["import type { ConversationsProps } from '@ant-design/x';\nimport { type GetProp } from 'antd';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport XAiConversations from '.';\n\nconst meta: Meta<typeof XAiConversations> = {\n title: 'AI组件/XAiConversations 对话记录管理',\n component: XAiConversations,\n parameters: {\n layout: 'centered',\n },\n tags: ['autodocs'],\n argTypes: {\n },\n};\n\nexport default meta;\n type Story = StoryObj<typeof meta>;\n\nconst BasicUsageStory = (args: any) => {\n const items: GetProp<ConversationsProps, 'items'> = Array.from({ length: 4 }).map((_, index) => ({\n key: `item${index + 1}`,\n label: `聊天记录 ${index + 1}`,\n disabled: index === 3,\n }));\n\n return (\n <div style={{\n backgroundColor: 'rgb(240, 242, 245)',\n minHeight: '300px',\n minWidth: '700px',\n display: 'flex',\n alignItems: 'center',\n paddingInline: '50px',\n }}\n >\n <XAiConversations\n {...args}\n sessionList={items}\n />\n </div>\n );\n};\n\nexport const 基础用法: Story = {\n render: BasicUsageStory,\n args: {\n },\n};\n"],"mappings":";AAGA,OAAOA,gBAAgB,MAAM,GAAG;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEjC,IAAMC,IAAmC,GAAG;EAC1CC,KAAK,EAAE,8BAA8B;EACrCC,SAAS,EAAEL,gBAAgB;EAC3BM,UAAU,EAAE;IACVC,MAAM,EAAE;EACV,CAAC;EACDC,IAAI,EAAE,CAAC,UAAU,CAAC;EAClBC,QAAQ,EAAE,CACV;AACF,CAAC;AAED,eAAeN,IAAI;AAGnB,IAAMO,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,IAAS,EAAK;EACrC,IAAMC,KAA2C,GAAGC,KAAK,CAACC,IAAI,CAAC;IAAEC,MAAM,EAAE;EAAE,CAAC,CAAC,CAACC,GAAG,CAAC,UAACC,CAAC,EAAEC,KAAK;IAAA,OAAM;MAC/FC,GAAG,SAAAC,MAAA,CAASF,KAAK,GAAG,CAAC,CAAE;MACvBG,KAAK,8BAAAD,MAAA,CAAUF,KAAK,GAAG,CAAC,CAAE;MAC1BI,QAAQ,EAAEJ,KAAK,KAAK;IACtB,CAAC;EAAA,CAAC,CAAC;EAEH,oBACEhB,IAAA;IAAKqB,KAAK,EAAE;MACVC,eAAe,EAAE,oBAAoB;MACrCC,SAAS,EAAE,OAAO;MAClBC,QAAQ,EAAE,OAAO;MACjBC,OAAO,EAAE,MAAM;MACfC,UAAU,EAAE,QAAQ;MACpBC,aAAa,EAAE;IACjB,CAAE;IAAAC,QAAA,eAEA5B,IAAA,CAACF,gBAAgB,EAAA+B,aAAA,CAAAA,aAAA,KACXpB,IAAI;MACRqB,WAAW,EAAEpB;IAAM,EACpB;EAAC,CACC,CAAC;AAEV,CAAC;AAED,OAAO,IAAMqB,IAAW,GAAG;EACzBC,MAAM,EAAExB,eAAe;EACvBC,IAAI,EAAE,CACN;AACF,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import ReactCodeMirror from '@uiw/react-codemirror';
|
|
2
|
+
import { EditorView } from '@codemirror/view';
|
|
3
|
+
import { json } from '@codemirror/lang-json';
|
|
4
|
+
import { markdown } from '@codemirror/lang-markdown';
|
|
5
|
+
import { languages } from '@codemirror/language-data';
|
|
6
|
+
import { githubLight } from '@uiw/codemirror-theme-github';
|
|
7
|
+
import { useStyles, GlobalStyle } from "./styles";
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
10
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
+
var formatValue = function formatValue(v) {
|
|
12
|
+
if (!v) return '';
|
|
13
|
+
try {
|
|
14
|
+
var obj = JSON.parse(v);
|
|
15
|
+
return JSON.stringify(obj, null, 2);
|
|
16
|
+
} catch (error) {
|
|
17
|
+
return v;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
var JsonView = function JsonView(_ref) {
|
|
21
|
+
var value = _ref.value,
|
|
22
|
+
height = _ref.height,
|
|
23
|
+
_ref$lineNumbers = _ref.lineNumbers,
|
|
24
|
+
lineNumbers = _ref$lineNumbers === void 0 ? true : _ref$lineNumbers;
|
|
25
|
+
var styles = useStyles();
|
|
26
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
27
|
+
children: [/*#__PURE__*/_jsx(ReactCodeMirror, {
|
|
28
|
+
lang: "json",
|
|
29
|
+
readOnly: true,
|
|
30
|
+
className: styles.view,
|
|
31
|
+
theme: githubLight,
|
|
32
|
+
value: formatValue(value),
|
|
33
|
+
height: height || '160px',
|
|
34
|
+
extensions: [json(), EditorView.lineWrapping, markdown({
|
|
35
|
+
codeLanguages: languages
|
|
36
|
+
})],
|
|
37
|
+
basicSetup: {
|
|
38
|
+
lineNumbers: lineNumbers
|
|
39
|
+
}
|
|
40
|
+
}), /*#__PURE__*/_jsx(GlobalStyle, {})]
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
export default JsonView;
|
|
44
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ReactCodeMirror","EditorView","json","markdown","languages","githubLight","useStyles","GlobalStyle","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","formatValue","v","obj","JSON","parse","stringify","error","JsonView","_ref","value","height","_ref$lineNumbers","lineNumbers","styles","children","lang","readOnly","className","view","theme","extensions","lineWrapping","codeLanguages","basicSetup"],"sources":["../../../../src/components/XAiJsonView/index.tsx"],"sourcesContent":["import ReactCodeMirror from '@uiw/react-codemirror';\nimport { EditorView } from '@codemirror/view';\nimport { json } from '@codemirror/lang-json';\nimport { markdown } from '@codemirror/lang-markdown';\nimport { languages } from '@codemirror/language-data';\nimport { githubLight } from '@uiw/codemirror-theme-github';\nimport { useStyles, GlobalStyle } from './styles';\n\nconst formatValue = (v: string) => {\n if (!v) return '';\n try {\n const obj = JSON.parse(v);\n return JSON.stringify(obj, null, 2);\n } catch (error) {\n return v;\n }\n};\n\nexport interface JsonViewProps {\n value: string;\n lineNumbers?: boolean;\n height?: string;\n}\n\nconst JsonView: React.FC<JsonViewProps> = ({ value, height, lineNumbers = true }) => {\n const styles = useStyles();\n\n return (\n <>\n <ReactCodeMirror\n lang=\"json\"\n readOnly\n className={styles.view}\n theme={githubLight}\n value={formatValue(value)}\n height={height || '160px'}\n extensions={[\n json(),\n EditorView.lineWrapping,\n markdown({\n codeLanguages: languages,\n }),\n ]}\n basicSetup={{\n lineNumbers,\n }}\n />\n <GlobalStyle />\n </>\n );\n};\n\nexport default JsonView;\n"],"mappings":"AAAA,OAAOA,eAAe,MAAM,uBAAuB;AACnD,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,IAAI,QAAQ,uBAAuB;AAC5C,SAASC,QAAQ,QAAQ,2BAA2B;AACpD,SAASC,SAAS,QAAQ,2BAA2B;AACrD,SAASC,WAAW,QAAQ,8BAA8B;AAC1D,SAASC,SAAS,EAAEC,WAAW;AAAmB,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAElD,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIC,CAAS,EAAK;EACjC,IAAI,CAACA,CAAC,EAAE,OAAO,EAAE;EACjB,IAAI;IACF,IAAMC,GAAG,GAAGC,IAAI,CAACC,KAAK,CAACH,CAAC,CAAC;IACzB,OAAOE,IAAI,CAACE,SAAS,CAACH,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;EACrC,CAAC,CAAC,OAAOI,KAAK,EAAE;IACd,OAAOL,CAAC;EACV;AACF,CAAC;AAQD,IAAMM,QAAiC,GAAG,SAApCA,QAAiCA,CAAAC,IAAA,EAA8C;EAAA,IAAxCC,KAAK,GAAAD,IAAA,CAALC,KAAK;IAAEC,MAAM,GAAAF,IAAA,CAANE,MAAM;IAAAC,gBAAA,GAAAH,IAAA,CAAEI,WAAW;IAAXA,WAAW,GAAAD,gBAAA,cAAG,IAAI,GAAAA,gBAAA;EAC5E,IAAME,MAAM,GAAGrB,SAAS,CAAC,CAAC;EAE1B,oBACEO,KAAA,CAAAF,SAAA;IAAAiB,QAAA,gBACEnB,IAAA,CAACT,eAAe;MACd6B,IAAI,EAAC,MAAM;MACXC,QAAQ;MACRC,SAAS,EAAEJ,MAAM,CAACK,IAAK;MACvBC,KAAK,EAAE5B,WAAY;MACnBkB,KAAK,EAAET,WAAW,CAACS,KAAK,CAAE;MAC1BC,MAAM,EAAEA,MAAM,IAAI,OAAQ;MAC1BU,UAAU,EAAE,CACVhC,IAAI,CAAC,CAAC,EACND,UAAU,CAACkC,YAAY,EACvBhC,QAAQ,CAAC;QACPiC,aAAa,EAAEhC;MACjB,CAAC,CAAC,CACF;MACFiC,UAAU,EAAE;QACVX,WAAW,EAAXA;MACF;IAAE,CACH,CAAC,eACFjB,IAAA,CAACF,WAAW,IAAE,CAAC;EAAA,CACf,CAAC;AAEP,CAAC;AAED,eAAec,QAAQ"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare const useStyles: () => {
|
|
3
|
+
view: string;
|
|
4
|
+
} & {
|
|
5
|
+
w: (width: string | number) => string;
|
|
6
|
+
h: (height: string | number) => string;
|
|
7
|
+
p: (padding: string) => string;
|
|
8
|
+
pb: (padding: string | number) => string;
|
|
9
|
+
pt: (padding: string | number) => string;
|
|
10
|
+
pl: (padding: string | number) => string;
|
|
11
|
+
pr: (padding: string | number) => string;
|
|
12
|
+
m: (margin: string) => string;
|
|
13
|
+
mb: (margin: string | number) => string;
|
|
14
|
+
mt: (margin: string | number) => string;
|
|
15
|
+
ml: (margin: string | number) => string;
|
|
16
|
+
mr: (margin: string | number) => string;
|
|
17
|
+
text: (size: string | number) => string;
|
|
18
|
+
weight: (size: number) => string;
|
|
19
|
+
textColor: (c: string) => string;
|
|
20
|
+
bg: (c: string) => string;
|
|
21
|
+
rs: (radius: string | number) => string;
|
|
22
|
+
gap: (g: string | number) => string;
|
|
23
|
+
flex: string;
|
|
24
|
+
flexCenter: string;
|
|
25
|
+
flexBetween: string;
|
|
26
|
+
flexColumn: string;
|
|
27
|
+
flex1: string;
|
|
28
|
+
cursor: (type: string) => string;
|
|
29
|
+
border: (color: string, width?: string) => string;
|
|
30
|
+
boxShadow: (shadow: string) => string;
|
|
31
|
+
transition: (property?: string, duration?: string) => string;
|
|
32
|
+
overflow: (type: string) => string;
|
|
33
|
+
position: (type: string) => string;
|
|
34
|
+
zIndex: (index: number) => string;
|
|
35
|
+
flexCenterGap2: string;
|
|
36
|
+
flexCenterGap4: string;
|
|
37
|
+
};
|
|
38
|
+
export declare const GlobalStyle: React.FC;
|
|
39
|
+
export default useStyles;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
|
|
2
|
+
var _templateObject, _templateObject2;
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { css } from '@emotion/css';
|
|
5
|
+
import { css as globalCss, Global } from '@emotion/react';
|
|
6
|
+
import { withBasicStyles } from "../../styles/common";
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
export var useStyles = withBasicStyles(function () {
|
|
9
|
+
return {
|
|
10
|
+
view: css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n /* view container */\n "])))
|
|
11
|
+
};
|
|
12
|
+
});
|
|
13
|
+
export var GlobalStyle = function GlobalStyle() {
|
|
14
|
+
return /*#__PURE__*/_jsx(Global, {
|
|
15
|
+
styles: globalCss(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n .cm-editor {\n background: #fff;\n border-radius: 8px;\n border: 1px solid #d9d9d9;\n }\n\n .cm-scroller {\n border-radius: 8px;\n }\n "])))
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
export default useStyles;
|
|
19
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","css","globalCss","Global","withBasicStyles","jsx","_jsx","useStyles","view","_templateObject","_taggedTemplateLiteral","GlobalStyle","styles","_templateObject2"],"sources":["../../../../src/components/XAiJsonView/styles.tsx"],"sourcesContent":["import React from 'react';\nimport { css } from '@emotion/css';\nimport { css as globalCss, Global } from '@emotion/react';\nimport { withBasicStyles } from '@/styles/common';\n\nexport const useStyles = withBasicStyles(() => ({\n view: css`\n /* view container */\n `,\n}));\n\nexport const GlobalStyle: React.FC = () => (\n <Global\n styles={globalCss`\n .cm-editor {\n background: #fff;\n border-radius: 8px;\n border: 1px solid #d9d9d9;\n }\n\n .cm-scroller {\n border-radius: 8px;\n }\n `}\n />\n);\n\nexport default useStyles;\n"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,GAAG,QAAQ,cAAc;AAClC,SAASA,GAAG,IAAIC,SAAS,EAAEC,MAAM,QAAQ,gBAAgB;AACzD,SAASC,eAAe;AAA0B,SAAAC,GAAA,IAAAC,IAAA;AAElD,OAAO,IAAMC,SAAS,GAAGH,eAAe,CAAC;EAAA,OAAO;IAC9CI,IAAI,EAAEP,GAAG,CAAAQ,eAAA,KAAAA,eAAA,GAAAC,sBAAA;EAGX,CAAC;AAAA,CAAC,CAAC;AAEH,OAAO,IAAMC,WAAqB,GAAG,SAAxBA,WAAqBA,CAAA;EAAA,oBAChCL,IAAA,CAACH,MAAM;IACLS,MAAM,EAAEV,SAAS,CAAAW,gBAAA,KAAAA,gBAAA,GAAAH,sBAAA;EAUf,CACH,CAAC;AAAA,CACH;AAED,eAAeH,SAAS"}
|
|
@@ -195,7 +195,7 @@ export var 携带历史记录示例 = {
|
|
|
195
195
|
},
|
|
196
196
|
args: {
|
|
197
197
|
url: 'https://m-poc-dev.zaxline.com',
|
|
198
|
-
token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.
|
|
198
|
+
token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVjRTT0htSm8zWmVhNFJOdWc3WFgyQT09Iiwic2NvcGUiOlsicmN4anBibU44VVgxVVRRbTU0b0ZNTEtwIl0sImV4cCI6MTc2NTI3ODg4NiwianRpIjoiNFRTcWdfV3NJOHlqSEdZUmRRVEtuT0dPbjU4IiwiY2xpZW50X2lkIjoicmN4anBibU44VVgxVVRRbTU0b0ZNTEtwIn0.duUIEPpHmyMwaZYtvM5BlAs1e1ZEco_DaD2NI-Ht2m0OE8khQBe284vRSPxgvxKm7aHOcAo_Kla9DE0YBPUxKeN1c0qgRepIacLB7AvTWFZtb59OjdGMfMHQbbZiuy4wu5W81dVoOpZWCjIkOomCtvCsIZpUQY7vdIZBCB9sygmwTJ7S_9oF10iUtK90AdZHX-_9jdlKNJC-Fulg9ab88Z33rnmW8jhhqpEkYYzGnccXNQuomxswMo_MgyplV_B9wpfs90tEnPWC623dcdfJHcRJZBtC-NU6RomkPLewdz3dEM-LaWBkP6FMI60C0VQW-fvwWkWC1GKBrUeaXzbgWg',
|
|
199
199
|
config: {
|
|
200
200
|
appNo: 'rcxjpbmN8UX1UTQm54oFMLKp',
|
|
201
201
|
chatProps: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Button","XAiProvider","XAiChatbot","XAiConversations","jsx","_jsx","jsxs","_jsxs","meta","title","component","parameters","layout","docs","description","tags","argTypes","config","table","type","summary","detail","category","decorators","Story","style","padding","children","单聊天窗口实例","render","args","providerRef","useRef","handleSendMessage","_providerRef$current","current","chat","text","console","log","display","flexDirection","gap","marginRight","justifyContent","onClick","maxWidth","height","_objectSpread","ref","onError","providerError","onMessage","data","navbarShow","navbar","subtitle","avatar","url","token","appNo","providerId","多容器示例","width","携带历史记录示例","overflow","flex","chatProps","clearBtnShow"],"sources":["../../../../src/components/XAiProvider/XAiProvider.stories.tsx"],"sourcesContent":["import React from 'react';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport { Button } from 'antd';\nimport XAiProvider from './index';\nimport XAiChatbot from '../XAiChatbot';\nimport XAiConversations from '../XAiConversations';\n\nconst meta: Meta<typeof XAiProvider> = {\n title: 'AI组件/XAiProvider AI容器',\n component: XAiProvider,\n parameters: {\n layout: 'centered',\n docs: {\n description: {\n component: 'AI 聊天机器人容器组件,提供全局上下文和消息管理功能。',\n },\n },\n },\n tags: ['autodocs'],\n argTypes: {\n config: {\n description: '配置信息',\n table: {\n type: {\n summary: 'XAiProviderConfig',\n detail: `{\n appNo?: string; // 应用唯一编号\n }`,\n },\n category: '配置选项',\n },\n },\n },\n // 添加装饰器,确保组件有必要的上下文\n decorators: [\n (Story) => (\n <div style={{ padding: '20px' }}>\n <Story />\n </div>\n ),\n ],\n};\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n// 使用 Provider 的 XAiChatbot\nexport const 单聊天窗口实例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n const handleSendMessage = () => {\n if (providerRef.current?.chat) {\n providerRef.current.chat({ text: '你好,AI!' });\n } else {\n console.log('XAiProvider ref 未准备好或 chat 方法不存在');\n }\n };\n\n return (\n <div style={{ display: 'flex' }}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '12px', marginRight: '24px', justifyContent: 'center' }}>\n <Button type=\"primary\" onClick={handleSendMessage}>发送消息</Button>\n </div>\n <div style={{ maxWidth: '800px', height: '600px' }}>\n <XAiProvider\n ref={providerRef}\n {...args}\n onError={(providerError) => console.log(providerError)}\n onMessage={(data) => console.log(data)}\n >\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理消息',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n </div>\n );\n },\n args: {\n url: 'https://m-poc-dev.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVjRTT0htSm8zWmVhNFJOdWc3WFgyQT09Iiwic2NvcGUiOlsiZ2JWemZPVjhTa1oxdGRMT3BYNWZyVXpMIl0sImV4cCI6MTc2NDY3MTc2MSwianRpIjoiRl9Zb0JBXzhIN01XempDZUxQenEzNTBXRnNrIiwiY2xpZW50X2lkIjoiZ2JWemZPVjhTa1oxdGRMT3BYNWZyVXpMIn0.mtGBQfwNtIkhcOumsOvzMj2BdYUxAPwZ9GcvNLuCNGVzFkqkLkfy_LALjYR2B-RaNj11_Cx7DcewtmLceG31KfnCiFY24BD_CbwoahdFh40SYRTFnjDf8XQI22E63h5NxTuldPx0itYLUPaUO6NAubnRON40eQPGZKygM0i72ULsQQAyRpJLYAaTjUxyPIW3JmMzQmYiRx641JeAYAup4-ZNw-Fqmd-8_xK3kN-a832xM-M_eqXgn8yMttn0uFv95lxPdJ1_-mp2zx8N4TBCYVkHo3u_PjM65S3_p4u1dFGXBDAsxtVMgmVGeUvubTLFuDM153rz9MZ7aOuu_c8K7w',\n config: {\n appNo: 'PGlA63A1Gt9oZpxa6YCWMciH',\n },\n providerId: 'demo-provider',\n },\n};\n\n// 多个 Provider 示例\nexport const 多容器示例: Story = {\n render: (args) => (\n <div style={{ display: 'flex', gap: '20px' }}>\n <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider {...args} providerId=\"provider-1\">\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 1',\n subtitle: '第一个聊天机器人',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n\n <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider {...args} providerId=\"provider-2\">\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 2',\n subtitle: '第二个聊天机器人',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n </div>\n ),\n args: {\n url: 'https://api.example.com/ai',\n token: 'your-token-here',\n },\n};\n\n// 使用 Provider 的 XAiChatbot\nexport const 携带历史记录示例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n return (\n <div style={{ width: '1080px', height: '600px', overflow: 'hidden' }}>\n <XAiProvider\n ref={providerRef}\n {...args}\n onError={(providerError) => console.log(providerError)}\n onMessage={(data) => console.log(data)}\n >\n <XAiConversations />\n <div style={{ flex: 1, display: 'flex', justifyContent: 'center' }}>\n <XAiChatbot\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理消息',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </div>\n </XAiProvider>\n </div>\n );\n },\n args: {\n url: 'https://m-poc-dev.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVjRTT0htSm8zWmVhNFJOdWc3WFgyQT09Iiwic2NvcGUiOlsicmN4anBibU44VVgxVVRRbTU0b0ZNTEtwIl0sImV4cCI6MTc2NDkzNjIzNywianRpIjoiTTU3ZjVhWHU0MVJENTN6dFJlU2pXaUZTTXJzIiwiY2xpZW50X2lkIjoicmN4anBibU44VVgxVVRRbTU0b0ZNTEtwIn0.Qnfq9ndj-Wd3Z-XX5fTPL2QyzVPWb3QQ8mmWVD5LfcKsEb9KQ8qwA1DBuC_6bhqT2CrWEHr9VbrwhES5a2Hh63hqtQYaAnZ4hqigutkKiR_wB-vrnhfrnupiXrrO0oYRCCLAvIsZS0KCqq2U3MGBVGPqciofUbjCrROgSXXDpNmosJKR8HBAmM8dWElCSuTGm3J0T3f0nb_4AYq10ssl8Pfy7b7HnDNIccDj-IuBKfqKrQR0Uk6CkOcgc1tUVZdcvqGzZos7ms7yPsfrq9lJ4-mx8Z-OyCsDrXJU-VpUCLZmLGWfWPKAR3FDc3KnyCZAAWkzVwjLZG9vBmzsOW6Unw',\n config: {\n appNo: 'rcxjpbmN8UX1UTQm54oFMLKp',\n chatProps: {\n clearBtnShow: false,\n },\n },\n providerId: 'demo-provider',\n },\n};\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,MAAM,QAAQ,MAAM;AAC7B,OAAOC,WAAW;AAClB,OAAOC,UAAU;AACjB,OAAOC,gBAAgB;AAA4B,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAEnD,IAAMC,IAA8B,GAAG;EACrCC,KAAK,EAAE,uBAAuB;EAC9BC,SAAS,EAAET,WAAW;EACtBU,UAAU,EAAE;IACVC,MAAM,EAAE,UAAU;IAClBC,IAAI,EAAE;MACJC,WAAW,EAAE;QACXJ,SAAS,EAAE;MACb;IACF;EACF,CAAC;EACDK,IAAI,EAAE,CAAC,UAAU,CAAC;EAClBC,QAAQ,EAAE;IACRC,MAAM,EAAE;MACNH,WAAW,EAAE,MAAM;MACnBI,KAAK,EAAE;QACLC,IAAI,EAAE;UACJC,OAAO,EAAE,mBAAmB;UAC5BC,MAAM;QAGR,CAAC;QACDC,QAAQ,EAAE;MACZ;IACF;EACF,CAAC;EACD;EACAC,UAAU,EAAE,CACV,UAACC,KAAK;IAAA,oBACJnB,IAAA;MAAKoB,KAAK,EAAE;QAAEC,OAAO,EAAE;MAAO,CAAE;MAAAC,QAAA,eAC9BtB,IAAA,CAACmB,KAAK,IAAE;IAAC,CACN,CAAC;EAAA,CACP;AAEL,CAAC;AAED,eAAehB,IAAI;AAGnB;AACA,OAAO,IAAMoB,OAAc,GAAG;EAC5BC,MAAM,EAAE,SAAAA,OAACC,IAAI,EAAK;IAChB,IAAMC,WAAW,GAAGhC,KAAK,CAACiC,MAAM,CAAM,IAAI,CAAC;IAE3C,IAAMC,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAA,EAAS;MAAA,IAAAC,oBAAA;MAC9B,KAAAA,oBAAA,GAAIH,WAAW,CAACI,OAAO,cAAAD,oBAAA,eAAnBA,oBAAA,CAAqBE,IAAI,EAAE;QAC7BL,WAAW,CAACI,OAAO,CAACC,IAAI,CAAC;UAAEC,IAAI,EAAE;QAAS,CAAC,CAAC;MAC9C,CAAC,MAAM;QACLC,OAAO,CAACC,GAAG,CAAC,kCAAkC,CAAC;MACjD;IACF,CAAC;IAED,oBACEhC,KAAA;MAAKkB,KAAK,EAAE;QAAEe,OAAO,EAAE;MAAO,CAAE;MAAAb,QAAA,gBAC9BtB,IAAA;QAAKoB,KAAK,EAAE;UAAEe,OAAO,EAAE,MAAM;UAAEC,aAAa,EAAE,QAAQ;UAAEC,GAAG,EAAE,MAAM;UAAEC,WAAW,EAAE,MAAM;UAAEC,cAAc,EAAE;QAAS,CAAE;QAAAjB,QAAA,eACnHtB,IAAA,CAACL,MAAM;UAACmB,IAAI,EAAC,SAAS;UAAC0B,OAAO,EAAEZ,iBAAkB;UAAAN,QAAA,EAAC;QAAI,CAAQ;MAAC,CAC7D,CAAC,eACNtB,IAAA;QAAKoB,KAAK,EAAE;UAAEqB,QAAQ,EAAE,OAAO;UAAEC,MAAM,EAAE;QAAQ,CAAE;QAAApB,QAAA,eACjDtB,IAAA,CAACJ,WAAW,EAAA+C,aAAA,CAAAA,aAAA;UACVC,GAAG,EAAElB;QAAY,GACbD,IAAI;UACRoB,OAAO,EAAE,SAAAA,QAACC,aAAa;YAAA,OAAKb,OAAO,CAACC,GAAG,CAACY,aAAa,CAAC;UAAA,CAAC;UACvDC,SAAS,EAAE,SAAAA,UAACC,IAAI;YAAA,OAAKf,OAAO,CAACC,GAAG,CAACc,IAAI,CAAC;UAAA,CAAC;UAAA1B,QAAA,eAEvCtB,IAAA,CAACH,UAAU;YACToD,UAAU;YACVC,MAAM,EAAE;cACN9C,KAAK,EAAE,gBAAgB;cACvB+C,QAAQ,EAAE,iBAAiB;cAC3BC,MAAM,EAAE;YACV;UAAE,CACH;QAAC,EACS;MAAC,CACX,CAAC;IAAA,CACH,CAAC;EAEV,CAAC;EACD3B,IAAI,EAAE;IACJ4B,GAAG,EAAE,+BAA+B;IACpCC,KAAK,EAAE,6lBAA6lB;IACpmB1C,MAAM,EAAE;MACN2C,KAAK,EAAE;IACT,CAAC;IACDC,UAAU,EAAE;EACd;AACF,CAAC;;AAED;AACA,OAAO,IAAMC,KAAY,GAAG;EAC1BjC,MAAM,EAAE,SAAAA,OAACC,IAAI;IAAA,oBACXvB,KAAA;MAAKkB,KAAK,EAAE;QAAEe,OAAO,EAAE,MAAM;QAAEE,GAAG,EAAE;MAAO,CAAE;MAAAf,QAAA,gBAC3CtB,IAAA;QAAKoB,KAAK,EAAE;UAAEsC,KAAK,EAAE,OAAO;UAAEhB,MAAM,EAAE;QAAQ,CAAE;QAAApB,QAAA,eAC9CtB,IAAA,CAACJ,WAAW,EAAA+C,aAAA,CAAAA,aAAA,KAAKlB,IAAI;UAAE+B,UAAU,EAAC,YAAY;UAAAlC,QAAA,eAC5CtB,IAAA,CAACH,UAAU;YACToD,UAAU;YACVC,MAAM,EAAE;cACN9C,KAAK,EAAE,YAAY;cACnB+C,QAAQ,EAAE,UAAU;cACpBC,MAAM,EAAE;YACV;UAAE,CACH;QAAC,EACS;MAAC,CACX,CAAC,eAENpD,IAAA;QAAKoB,KAAK,EAAE;UAAEsC,KAAK,EAAE,OAAO;UAAEhB,MAAM,EAAE;QAAQ,CAAE;QAAApB,QAAA,eAC9CtB,IAAA,CAACJ,WAAW,EAAA+C,aAAA,CAAAA,aAAA,KAAKlB,IAAI;UAAE+B,UAAU,EAAC,YAAY;UAAAlC,QAAA,eAC5CtB,IAAA,CAACH,UAAU;YACToD,UAAU;YACVC,MAAM,EAAE;cACN9C,KAAK,EAAE,YAAY;cACnB+C,QAAQ,EAAE,UAAU;cACpBC,MAAM,EAAE;YACV;UAAE,CACH;QAAC,EACS;MAAC,CACX,CAAC;IAAA,CACH,CAAC;EAAA,CACP;EACD3B,IAAI,EAAE;IACJ4B,GAAG,EAAE,4BAA4B;IACjCC,KAAK,EAAE;EACT;AACF,CAAC;;AAED;AACA,OAAO,IAAMK,QAAe,GAAG;EAC7BnC,MAAM,EAAE,SAAAA,OAACC,IAAI,EAAK;IAChB,IAAMC,WAAW,GAAGhC,KAAK,CAACiC,MAAM,CAAM,IAAI,CAAC;IAE3C,oBACE3B,IAAA;MAAKoB,KAAK,EAAE;QAAEsC,KAAK,EAAE,QAAQ;QAAEhB,MAAM,EAAE,OAAO;QAAEkB,QAAQ,EAAE;MAAS,CAAE;MAAAtC,QAAA,eACnEpB,KAAA,CAACN,WAAW,EAAA+C,aAAA,CAAAA,aAAA;QACVC,GAAG,EAAElB;MAAY,GACbD,IAAI;QACRoB,OAAO,EAAE,SAAAA,QAACC,aAAa;UAAA,OAAKb,OAAO,CAACC,GAAG,CAACY,aAAa,CAAC;QAAA,CAAC;QACvDC,SAAS,EAAE,SAAAA,UAACC,IAAI;UAAA,OAAKf,OAAO,CAACC,GAAG,CAACc,IAAI,CAAC;QAAA,CAAC;QAAA1B,QAAA,gBAEvCtB,IAAA,CAACF,gBAAgB,IAAE,CAAC,eACpBE,IAAA;UAAKoB,KAAK,EAAE;YAAEyC,IAAI,EAAE,CAAC;YAAE1B,OAAO,EAAE,MAAM;YAAEI,cAAc,EAAE;UAAS,CAAE;UAAAjB,QAAA,eACjEtB,IAAA,CAACH,UAAU;YACTqD,MAAM,EAAE;cACN9C,KAAK,EAAE,gBAAgB;cACvB+C,QAAQ,EAAE,iBAAiB;cAC3BC,MAAM,EAAE;YACV;UAAE,CACH;QAAC,CACC,CAAC;MAAA,EACK;IAAC,CACX,CAAC;EAEV,CAAC;EACD3B,IAAI,EAAE;IACJ4B,GAAG,EAAE,+BAA+B;IACpCC,KAAK,EAAE,6lBAA6lB;IACpmB1C,MAAM,EAAE;MACN2C,KAAK,EAAE,0BAA0B;MACjCO,SAAS,EAAE;QACTC,YAAY,EAAE;MAChB;IACF,CAAC;IACDP,UAAU,EAAE;EACd;AACF,CAAC"}
|
|
1
|
+
{"version":3,"names":["React","Button","XAiProvider","XAiChatbot","XAiConversations","jsx","_jsx","jsxs","_jsxs","meta","title","component","parameters","layout","docs","description","tags","argTypes","config","table","type","summary","detail","category","decorators","Story","style","padding","children","单聊天窗口实例","render","args","providerRef","useRef","handleSendMessage","_providerRef$current","current","chat","text","console","log","display","flexDirection","gap","marginRight","justifyContent","onClick","maxWidth","height","_objectSpread","ref","onError","providerError","onMessage","data","navbarShow","navbar","subtitle","avatar","url","token","appNo","providerId","多容器示例","width","携带历史记录示例","overflow","flex","chatProps","clearBtnShow"],"sources":["../../../../src/components/XAiProvider/XAiProvider.stories.tsx"],"sourcesContent":["import React from 'react';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport { Button } from 'antd';\nimport XAiProvider from './index';\nimport XAiChatbot from '../XAiChatbot';\nimport XAiConversations from '../XAiConversations';\n\nconst meta: Meta<typeof XAiProvider> = {\n title: 'AI组件/XAiProvider AI容器',\n component: XAiProvider,\n parameters: {\n layout: 'centered',\n docs: {\n description: {\n component: 'AI 聊天机器人容器组件,提供全局上下文和消息管理功能。',\n },\n },\n },\n tags: ['autodocs'],\n argTypes: {\n config: {\n description: '配置信息',\n table: {\n type: {\n summary: 'XAiProviderConfig',\n detail: `{\n appNo?: string; // 应用唯一编号\n }`,\n },\n category: '配置选项',\n },\n },\n },\n // 添加装饰器,确保组件有必要的上下文\n decorators: [\n (Story) => (\n <div style={{ padding: '20px' }}>\n <Story />\n </div>\n ),\n ],\n};\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n// 使用 Provider 的 XAiChatbot\nexport const 单聊天窗口实例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n const handleSendMessage = () => {\n if (providerRef.current?.chat) {\n providerRef.current.chat({ text: '你好,AI!' });\n } else {\n console.log('XAiProvider ref 未准备好或 chat 方法不存在');\n }\n };\n\n return (\n <div style={{ display: 'flex' }}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '12px', marginRight: '24px', justifyContent: 'center' }}>\n <Button type=\"primary\" onClick={handleSendMessage}>发送消息</Button>\n </div>\n <div style={{ maxWidth: '800px', height: '600px' }}>\n <XAiProvider\n ref={providerRef}\n {...args}\n onError={(providerError) => console.log(providerError)}\n onMessage={(data) => console.log(data)}\n >\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理消息',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n </div>\n );\n },\n args: {\n url: 'https://m-poc-dev.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVjRTT0htSm8zWmVhNFJOdWc3WFgyQT09Iiwic2NvcGUiOlsiZ2JWemZPVjhTa1oxdGRMT3BYNWZyVXpMIl0sImV4cCI6MTc2NDY3MTc2MSwianRpIjoiRl9Zb0JBXzhIN01XempDZUxQenEzNTBXRnNrIiwiY2xpZW50X2lkIjoiZ2JWemZPVjhTa1oxdGRMT3BYNWZyVXpMIn0.mtGBQfwNtIkhcOumsOvzMj2BdYUxAPwZ9GcvNLuCNGVzFkqkLkfy_LALjYR2B-RaNj11_Cx7DcewtmLceG31KfnCiFY24BD_CbwoahdFh40SYRTFnjDf8XQI22E63h5NxTuldPx0itYLUPaUO6NAubnRON40eQPGZKygM0i72ULsQQAyRpJLYAaTjUxyPIW3JmMzQmYiRx641JeAYAup4-ZNw-Fqmd-8_xK3kN-a832xM-M_eqXgn8yMttn0uFv95lxPdJ1_-mp2zx8N4TBCYVkHo3u_PjM65S3_p4u1dFGXBDAsxtVMgmVGeUvubTLFuDM153rz9MZ7aOuu_c8K7w',\n config: {\n appNo: 'PGlA63A1Gt9oZpxa6YCWMciH',\n },\n providerId: 'demo-provider',\n },\n};\n\n// 多个 Provider 示例\nexport const 多容器示例: Story = {\n render: (args) => (\n <div style={{ display: 'flex', gap: '20px' }}>\n <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider {...args} providerId=\"provider-1\">\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 1',\n subtitle: '第一个聊天机器人',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n\n <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider {...args} providerId=\"provider-2\">\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 2',\n subtitle: '第二个聊天机器人',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n </div>\n ),\n args: {\n url: 'https://api.example.com/ai',\n token: 'your-token-here',\n },\n};\n\n// 使用 Provider 的 XAiChatbot\nexport const 携带历史记录示例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n return (\n <div style={{ width: '1080px', height: '600px', overflow: 'hidden' }}>\n <XAiProvider\n ref={providerRef}\n {...args}\n onError={(providerError) => console.log(providerError)}\n onMessage={(data) => console.log(data)}\n >\n <XAiConversations />\n <div style={{ flex: 1, display: 'flex', justifyContent: 'center' }}>\n <XAiChatbot\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理消息',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </div>\n </XAiProvider>\n </div>\n );\n },\n args: {\n url: 'https://m-poc-dev.zaxline.com',\n token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVjRTT0htSm8zWmVhNFJOdWc3WFgyQT09Iiwic2NvcGUiOlsicmN4anBibU44VVgxVVRRbTU0b0ZNTEtwIl0sImV4cCI6MTc2NTI3ODg4NiwianRpIjoiNFRTcWdfV3NJOHlqSEdZUmRRVEtuT0dPbjU4IiwiY2xpZW50X2lkIjoicmN4anBibU44VVgxVVRRbTU0b0ZNTEtwIn0.duUIEPpHmyMwaZYtvM5BlAs1e1ZEco_DaD2NI-Ht2m0OE8khQBe284vRSPxgvxKm7aHOcAo_Kla9DE0YBPUxKeN1c0qgRepIacLB7AvTWFZtb59OjdGMfMHQbbZiuy4wu5W81dVoOpZWCjIkOomCtvCsIZpUQY7vdIZBCB9sygmwTJ7S_9oF10iUtK90AdZHX-_9jdlKNJC-Fulg9ab88Z33rnmW8jhhqpEkYYzGnccXNQuomxswMo_MgyplV_B9wpfs90tEnPWC623dcdfJHcRJZBtC-NU6RomkPLewdz3dEM-LaWBkP6FMI60C0VQW-fvwWkWC1GKBrUeaXzbgWg',\n config: {\n appNo: 'rcxjpbmN8UX1UTQm54oFMLKp',\n chatProps: {\n clearBtnShow: false,\n },\n },\n providerId: 'demo-provider',\n },\n};\n"],"mappings":"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"}
|
|
@@ -209,8 +209,8 @@ var XAiSender = function XAiSender(props) {
|
|
|
209
209
|
}
|
|
210
210
|
})
|
|
211
211
|
}),
|
|
212
|
-
|
|
213
|
-
var _info$components = info.components,
|
|
212
|
+
footer: function footer(_origNode, info) {
|
|
213
|
+
var _info$components = info === null || info === void 0 ? void 0 : info.components,
|
|
214
214
|
SendButton = _info$components.SendButton,
|
|
215
215
|
LoadingButton = _info$components.LoadingButton;
|
|
216
216
|
return /*#__PURE__*/_jsxs(Space, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useRef","useState","Attachments","Sender","Button","message","Popover","Space","Tooltip","ArrowUpOutlined","ClearOutlined","PlusCircleOutlined","clsx","useChatbotContext","useStyles","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","XAiSender","props","_useChatbotContext","mergedProps","_ref","footerTips","clearBtnShow","value","onChange","onClear","onStop","onSubmit","files","enableUpload","onChangeFiles","uploadRequest","_ref$loading","loading","propLoading","disabled","resetProps","_objectWithoutProperties","_excluded","senderRef","attachmentsRef","_useState","_useState2","_slicedToArray","clearPopoverVisible","setClearPopoverVisible","styles","uploading","some","file","status","handleSend","warning","hasText","trim","hasFiles","length","text","fileInputRef","handleClear","cancelClear","confirmClear","clearConfirmContent","className","p","children","mb","mt","popoverFooter","size","onClick","type","danger","uploadButton","flexCenterGap2","placement","title","color","variant","shape","icon","style","fontSize","current","_fileInputRef$current","click","ref","multiple","e","fileList","target","i","_attachmentsRef$curre","upload","display","accept","chatFooter","flex","gap","content","trigger","open","onOpenChange","clearBtn","border","borderRadius","height","width","_objectSpread","sendWrapper","placeholder","header","Header","closable","forceRender","padding","customRequest","items","imageProps","preview","mask","_ref2","getDropContainer","_senderRef$current","nativeElement","actions","_","info","_info$components","components","SendButton","LoadingButton","divider","stopButton","sendButton","v","onCancel"],"sources":["../../../../src/components/XAiSender/index.tsx"],"sourcesContent":["// 文件: components/XAiSender/index.tsx\nimport React, {\n useRef,\n useState,\n} from 'react';\nimport {\n Attachments,\n Sender,\n} from '@ant-design/x';\nimport {\n Button,\n GetRef,\n message,\n Popover,\n Space,\n Tooltip,\n} from 'antd';\nimport {\n ArrowUpOutlined,\n ClearOutlined,\n PlusCircleOutlined,\n} from '@ant-design/icons';\nimport clsx from 'clsx';\nimport { AttachmentsRef } from '@ant-design/x/es/attachments';\nimport {\n XAiSenderProps,\n} from '@/types';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { useStyles } from './styles';\n\nconst XAiSender: React.FC<XAiSenderProps> = (props) => {\n // 使用新的 Hook 来处理 Provider 上下文\n const { mergedProps } = useChatbotContext(props);\n const {\n footerTips,\n clearBtnShow,\n value,\n onChange,\n onClear,\n onStop,\n onSubmit,\n files,\n enableUpload,\n onChangeFiles,\n uploadRequest,\n loading: propLoading = false,\n disabled,\n ...resetProps\n } = mergedProps as XAiSenderProps;\n const senderRef = useRef<GetRef<typeof Sender>>(null);\n const attachmentsRef = useRef<AttachmentsRef>(null);\n\n // 如果在 Provider 中,使用 Provider 的状态\n const loading = mergedProps.loading || propLoading;\n const [clearPopoverVisible, setClearPopoverVisible] = useState(false); // 气泡卡片显隐藏\n const styles = useStyles();\n const uploading = files?.some((file) => file.status === 'uploading');\n\n // 触发发送\n const handleSend = () => {\n if (uploading) {\n message.warning('文件正在上传中');\n return;\n }\n const hasText = value && value.trim();\n const hasFiles = files?.length;\n if (hasText || hasFiles) {\n // 直接使用合并后的 onSend,自动处理 Provider 和独立模式\n onSubmit?.({\n text: value,\n files,\n });\n }\n };\n\n // 文件上传按钮引用\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n // 点击清除按钮\n const handleClear = () => {\n setClearPopoverVisible(true);\n };\n\n // 取消清除\n const cancelClear = () => {\n setClearPopoverVisible(false);\n };\n\n // 确认清除\n const confirmClear = () => {\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 >\n <Button\n color=\"default\"\n variant=\"text\"\n shape=\"circle\"\n size=\"small\"\n icon={<PlusCircleOutlined style={{ fontSize: 20, color: '#949494' }} />}\n onClick={() => {\n if (fileInputRef.current) {\n fileInputRef.current?.click();\n }\n }}\n />\n <input\n type=\"file\"\n ref={fileInputRef}\n multiple\n onChange={(e) => {\n const fileList = e.target.files || [];\n if (!fileList.length) return;\n for (let i = 0; i < fileList.length; i++) {\n const file = fileList[i];\n attachmentsRef.current?.upload(file);\n }\n e.target.value = '';\n }}\n style={{ display: 'none' }}\n accept=\"*/*\"\n />\n </Tooltip>\n </div>\n );\n\n return (\n <>\n <div className={styles.chatFooter}>\n <div className={clsx(styles.flex, styles.gap(8))}>\n {/* 清空按钮 */}\n {clearBtnShow && (\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 {/* 普通文本输入 */}\n <Sender\n {...resetProps}\n value={value}\n className={styles.sendWrapper}\n placeholder=\"继续对话...\"\n disabled={disabled || uploading}\n loading={loading}\n ref={senderRef}\n header={enableUpload && (\n <Sender.Header\n closable={false}\n forceRender\n open={!!files?.length}\n styles={{\n content: { padding: 0 },\n }}\n >\n <Attachments\n ref={attachmentsRef}\n customRequest={uploadRequest}\n multiple\n items={files}\n imageProps={{\n preview: {\n mask: true,\n },\n }}\n onChange={({ fileList }) => {\n onChangeFiles?.(fileList);\n }}\n getDropContainer={() => senderRef.current?.nativeElement}\n />\n </Sender.Header>\n )}\n actions={(_, info) => {\n const { SendButton, LoadingButton } = info.components;\n return (\n <Space size=\"small\">\n {enableUpload && (\n <>\n {uploadButton}\n <div className={styles.divider} />\n </>\n )}\n {loading\n ? (\n <LoadingButton onClick={() => onStop?.()} 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 onChange?.(v);\n }}\n onSubmit={handleSend}\n onCancel={() => {\n onStop?.();\n }}\n />\n </div>\n </div>\n { footerTips && <div className={styles.footerTips}>{footerTips}</div>}\n </>\n );\n};\n\nexport default XAiSender;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useRef","useState","Attachments","Sender","Button","message","Popover","Space","Tooltip","ArrowUpOutlined","ClearOutlined","PlusCircleOutlined","clsx","useChatbotContext","useStyles","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","XAiSender","props","_useChatbotContext","mergedProps","_ref","footerTips","clearBtnShow","value","onChange","onClear","onStop","onSubmit","files","enableUpload","onChangeFiles","uploadRequest","_ref$loading","loading","propLoading","disabled","resetProps","_objectWithoutProperties","_excluded","senderRef","attachmentsRef","_useState","_useState2","_slicedToArray","clearPopoverVisible","setClearPopoverVisible","styles","uploading","some","file","status","handleSend","warning","hasText","trim","hasFiles","length","text","fileInputRef","handleClear","cancelClear","confirmClear","clearConfirmContent","className","p","children","mb","mt","popoverFooter","size","onClick","type","danger","uploadButton","flexCenterGap2","placement","title","color","variant","shape","icon","style","fontSize","current","_fileInputRef$current","click","ref","multiple","e","fileList","target","i","_attachmentsRef$curre","upload","display","accept","chatFooter","flex","gap","content","trigger","open","onOpenChange","clearBtn","border","borderRadius","height","width","_objectSpread","sendWrapper","placeholder","header","Header","closable","forceRender","padding","customRequest","items","imageProps","preview","mask","_ref2","getDropContainer","_senderRef$current","nativeElement","footer","_origNode","info","_info$components","components","SendButton","LoadingButton","divider","stopButton","sendButton","v","onCancel"],"sources":["../../../../src/components/XAiSender/index.tsx"],"sourcesContent":["// 文件: components/XAiSender/index.tsx\nimport React, {\n useRef,\n useState,\n} from 'react';\nimport {\n Attachments,\n Sender,\n type AttachmentsProps\n} from '@ant-design/x';\nimport {\n Button,\n GetRef,\n message,\n Popover,\n Space,\n Tooltip,\n} from 'antd';\nimport {\n ArrowUpOutlined,\n ClearOutlined,\n PlusCircleOutlined,\n} from '@ant-design/icons';\nimport clsx from 'clsx';\nimport { AttachmentsRef } from '@ant-design/x/es/attachments';\nimport {\n XAiSenderProps,\n} from '@/types';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { useStyles } from './styles';\n\nconst XAiSender: React.FC<XAiSenderProps> = (props) => {\n // 使用新的 Hook 来处理 Provider 上下文\n const { mergedProps } = useChatbotContext(props);\n const {\n footerTips,\n clearBtnShow,\n value,\n onChange,\n onClear,\n onStop,\n onSubmit,\n files,\n enableUpload,\n onChangeFiles,\n uploadRequest,\n loading: propLoading = false,\n disabled,\n ...resetProps\n } = mergedProps as XAiSenderProps;\n const senderRef = useRef<GetRef<typeof Sender>>(null);\n const attachmentsRef = useRef<AttachmentsRef>(null);\n\n // 如果在 Provider 中,使用 Provider 的状态\n const loading = mergedProps.loading || propLoading;\n const [clearPopoverVisible, setClearPopoverVisible] = useState(false); // 气泡卡片显隐藏\n const styles = useStyles();\n const uploading = files?.some((file) => file.status === 'uploading');\n\n // 触发发送\n const handleSend = () => {\n if (uploading) {\n message.warning('文件正在上传中');\n return;\n }\n const hasText = value && value.trim();\n const hasFiles = files?.length;\n if (hasText || hasFiles) {\n // 直接使用合并后的 onSend,自动处理 Provider 和独立模式\n onSubmit?.({\n text: value,\n files,\n });\n }\n };\n\n // 文件上传按钮引用\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n // 点击清除按钮\n const handleClear = () => {\n setClearPopoverVisible(true);\n };\n\n // 取消清除\n const cancelClear = () => {\n setClearPopoverVisible(false);\n };\n\n // 确认清除\n const confirmClear = () => {\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 >\n <Button\n color=\"default\"\n variant=\"text\"\n shape=\"circle\"\n size=\"small\"\n icon={<PlusCircleOutlined style={{ fontSize: 20, color: '#949494' }} />}\n onClick={() => {\n if (fileInputRef.current) {\n fileInputRef.current?.click();\n }\n }}\n />\n <input\n type=\"file\"\n ref={fileInputRef}\n multiple\n onChange={(e) => {\n const fileList = e.target.files || [];\n if (!fileList.length) return;\n for (let i = 0; i < fileList.length; i++) {\n const file = fileList[i];\n attachmentsRef.current?.upload(file);\n }\n e.target.value = '';\n }}\n style={{ display: 'none' }}\n accept=\"*/*\"\n />\n </Tooltip>\n </div>\n );\n\n return (\n <>\n <div className={styles.chatFooter}>\n <div className={clsx(styles.flex, styles.gap(8))}>\n {/* 清空按钮 */}\n {clearBtnShow && (\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 {/* 普通文本输入 */}\n <Sender\n {...resetProps}\n value={value}\n className={styles.sendWrapper}\n placeholder=\"继续对话...\"\n disabled={disabled || uploading}\n loading={loading}\n ref={senderRef}\n header={enableUpload && (\n <Sender.Header\n closable={false}\n forceRender\n open={!!files?.length}\n styles={{\n content: { padding: 0 },\n }}\n >\n <Attachments\n {...({\n ref: attachmentsRef,\n customRequest: uploadRequest,\n multiple: true,\n items: files,\n imageProps: {\n preview: { mask: true }\n },\n onChange: ({ fileList }) => {\n onChangeFiles?.(fileList);\n },\n getDropContainer: () => senderRef.current?.nativeElement,\n } as AttachmentsProps)}\n />\n </Sender.Header>\n )}\n footer={(_origNode, info) => {\n const { SendButton, LoadingButton } = info?.components;\n return (\n <Space size=\"small\">\n {enableUpload && (\n <>\n {uploadButton}\n <div className={styles.divider} />\n </>\n )}\n {loading\n ? (\n <LoadingButton\n onClick={() => onStop?.()}\n className={styles.stopButton}\n />\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 onChange?.(v);\n }}\n onSubmit={handleSend}\n onCancel={() => {\n onStop?.();\n }}\n />\n </div>\n </div>\n { footerTips && <div className={styles.footerTips}>{footerTips}</div>}\n </>\n );\n};\n\nexport default XAiSender;\n"],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import type { XAiChatbotProps, XAiConversationsProps } from "../types";
|
|
3
|
-
export interface XAiContextType extends Omit<XAiChatbotProps, 'onScroll'>, Omit<XAiConversationsProps, 'onScroll'> {
|
|
2
|
+
import type { XAiChatbotProps, XAiConversationsProps, Messages } from "../types";
|
|
3
|
+
export interface XAiContextType extends Omit<XAiChatbotProps, 'onScroll' | 'messages'>, Omit<XAiConversationsProps, 'onScroll'> {
|
|
4
4
|
onScroll?: (event: React.UIEvent<HTMLDivElement>) => void;
|
|
5
|
+
messages: Messages[];
|
|
5
6
|
providerId?: string;
|
|
6
7
|
token: string;
|
|
7
8
|
error: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createContext","useContext","defaultContextValue","providerId","undefined","token","messages","loading","error","emptyStateImage","emptyStateText","isInProvider","XAiContext","_unused","fallback","useXAi","context","_unused2","useXAiProviders","_unused3"],"sources":["../../../src/context/AiProviderContext.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { XAiChatbotProps, XAiConversationsProps } from '@/types';\n
|
|
1
|
+
{"version":3,"names":["createContext","useContext","defaultContextValue","providerId","undefined","token","messages","loading","error","emptyStateImage","emptyStateText","isInProvider","XAiContext","_unused","fallback","useXAi","context","_unused2","useXAiProviders","_unused3"],"sources":["../../../src/context/AiProviderContext.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { XAiChatbotProps, XAiConversationsProps, Messages } from '@/types';\n// 定义 context 的类型\n// 解决 onScroll 冲突,显式声明 onScroll 类型\nexport interface XAiContextType extends Omit<XAiChatbotProps, 'onScroll' | 'messages'>, Omit<XAiConversationsProps, 'onScroll'> {\n onScroll?: (event: React.UIEvent<HTMLDivElement>) => void;\n messages: Messages[];\n providerId?: string;\n token: string;\n error: string | null;\n // 加载更多 session\n loadMoreSessions?: () => void;\n // 标识是否在真实的 Provider 中\n isInProvider?: boolean;\n}\n\n// 默认 context 值\nconst defaultContextValue: XAiContextType = {\n providerId: undefined,\n token: '',\n messages: [],\n loading: false,\n error: null,\n emptyStateImage: '',\n emptyStateText: '',\n\n isInProvider: false,\n};\n\n// 安全地创建 context,避免 React 为 null 的情况\nconst XAiContext: React.Context<XAiContextType> = (() => {\n try {\n return createContext<XAiContextType>(defaultContextValue);\n } catch {\n // 如果 React 不可用,创建一个 fallback\n // eslint-disable-next-line\n const fallback: React.Context<XAiContextType> = {} as React.Context<XAiContextType>;\n return fallback;\n }\n})();\n\nexport { XAiContext };\n\n// 改进的 useXAi hook\nexport const useXAi = () => {\n try {\n const context = useContext(XAiContext);\n\n // 如果没有在 Provider 中,返回 undefined\n if (!context?.isInProvider) {\n return undefined;\n }\n\n return context;\n } catch {\n // 如果 useContext 失败,返回 undefined\n return undefined;\n }\n};\n\n// 获取所有可用的 Provider ID\nexport const useXAiProviders = () => {\n try {\n const context = useContext(XAiContext);\n\n // 如果没有在 Provider 中,返回空数组\n if (!context?.isInProvider) {\n return [];\n }\n\n // 返回当前 Provider 的 ID(如果有的话)\n return context.providerId ? [context.providerId] : [];\n } catch {\n return [];\n }\n};\n"],"mappings":"AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;;AAEjD;AACA;;AAaA;AACA,IAAMC,mBAAmC,GAAG;EAC1CC,UAAU,EAAEC,SAAS;EACrBC,KAAK,EAAE,EAAE;EACTC,QAAQ,EAAE,EAAE;EACZC,OAAO,EAAE,KAAK;EACdC,KAAK,EAAE,IAAI;EACXC,eAAe,EAAE,EAAE;EACnBC,cAAc,EAAE,EAAE;EAElBC,YAAY,EAAE;AAChB,CAAC;;AAED;AACA,IAAMC,UAAyC,GAAI,YAAM;EACvD,IAAI;IACF,oBAAOZ,aAAa,CAAiBE,mBAAmB,CAAC;EAC3D,CAAC,CAAC,OAAAW,OAAA,EAAM;IACN;IACA;IACA,IAAMC,QAAuC,GAAG,CAAC,CAAkC;IACnF,OAAOA,QAAQ;EACjB;AACF,CAAC,CAAE,CAAC;AAEJ,SAASF,UAAU;;AAEnB;AACA,OAAO,IAAMG,MAAM,GAAG,SAATA,MAAMA,CAAA,EAAS;EAC1B,IAAI;IACF,IAAMC,OAAO,GAAGf,UAAU,CAACW,UAAU,CAAC;;IAEtC;IACA,IAAI,EAACI,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEL,YAAY,GAAE;MAC1B,OAAOP,SAAS;IAClB;IAEA,OAAOY,OAAO;EAChB,CAAC,CAAC,OAAAC,QAAA,EAAM;IACN;IACA,OAAOb,SAAS;EAClB;AACF,CAAC;;AAED;AACA,OAAO,IAAMc,eAAe,GAAG,SAAlBA,eAAeA,CAAA,EAAS;EACnC,IAAI;IACF,IAAMF,OAAO,GAAGf,UAAU,CAACW,UAAU,CAAC;;IAEtC;IACA,IAAI,EAACI,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEL,YAAY,GAAE;MAC1B,OAAO,EAAE;IACX;;IAEA;IACA,OAAOK,OAAO,CAACb,UAAU,GAAG,CAACa,OAAO,CAACb,UAAU,CAAC,GAAG,EAAE;EACvD,CAAC,CAAC,OAAAgB,QAAA,EAAM;IACN,OAAO,EAAE;EACX;AACF,CAAC"}
|