@ai-group/chat-sdk 2.1.13 → 3.0.1-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/XAdkChatbot/XAdkChatbot.stories.d.ts +9 -2
- package/dist/cjs/components/XAdkChatbot/XAdkChatbot.stories.js +564 -10
- package/dist/cjs/components/XAdkChatbot/XAdkChatbot.stories.js.map +2 -2
- package/dist/cjs/components/XAdkChatbot/components/FileGallery/index.d.ts +12 -0
- package/dist/cjs/components/XAdkChatbot/components/FileGallery/index.js +92 -0
- package/dist/cjs/components/XAdkChatbot/components/FileGallery/index.js.map +7 -0
- package/dist/cjs/components/XAdkChatbot/components/FileGallery/styles.d.ts +44 -0
- package/dist/cjs/components/XAdkChatbot/components/FileGallery/styles.js +137 -0
- package/dist/cjs/components/XAdkChatbot/components/FileGallery/styles.js.map +7 -0
- package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/index.d.ts +1 -1
- package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/index.js +41 -5
- package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/index.js.map +2 -2
- package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/styles.d.ts +1 -0
- package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/styles.js +14 -3
- package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/styles.js.map +2 -2
- package/dist/cjs/components/XAdkChatbot/index.d.ts +11 -1
- package/dist/cjs/components/XAdkChatbot/index.js +294 -108
- package/dist/cjs/components/XAdkChatbot/index.js.map +3 -3
- package/dist/cjs/components/XAdkChatbot/styles.d.ts +10 -0
- package/dist/cjs/components/XAdkChatbot/styles.js +67 -3
- package/dist/cjs/components/XAdkChatbot/styles.js.map +2 -2
- package/dist/cjs/components/XAdkProvider/XAdkProvider.stories.d.ts +10 -0
- package/dist/cjs/components/XAdkProvider/XAdkProvider.stories.js +394 -0
- package/dist/cjs/components/XAdkProvider/XAdkProvider.stories.js.map +7 -0
- package/dist/cjs/components/XAdkProvider/compound/Chatbot.d.ts +30 -0
- package/dist/cjs/components/XAdkProvider/compound/Chatbot.js +64 -0
- package/dist/cjs/components/XAdkProvider/compound/Chatbot.js.map +7 -0
- package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.d.ts +26 -0
- package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.js +199 -0
- package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.js.map +7 -0
- package/dist/cjs/components/XAdkProvider/compound/DislikeFeedBack.d.ts +8 -0
- package/dist/cjs/components/XAdkProvider/compound/DislikeFeedBack.js +117 -0
- package/dist/cjs/components/XAdkProvider/compound/DislikeFeedBack.js.map +7 -0
- package/dist/cjs/components/XAdkProvider/compound/FeedbackTags.d.ts +7 -0
- package/dist/cjs/components/XAdkProvider/compound/FeedbackTags.js +64 -0
- package/dist/cjs/components/XAdkProvider/compound/FeedbackTags.js.map +7 -0
- package/dist/cjs/components/XAdkProvider/compound/Header.d.ts +25 -0
- package/dist/cjs/components/XAdkProvider/compound/Header.js +70 -0
- package/dist/cjs/components/XAdkProvider/compound/Header.js.map +7 -0
- package/dist/cjs/components/XAdkProvider/compound/Messages.d.ts +17 -0
- package/dist/cjs/components/XAdkProvider/compound/Messages.js +70 -0
- package/dist/cjs/components/XAdkProvider/compound/Messages.js.map +7 -0
- package/dist/cjs/components/XAdkProvider/compound/Sender.d.ts +27 -0
- package/dist/cjs/components/XAdkProvider/compound/Sender.js +55 -0
- package/dist/cjs/components/XAdkProvider/compound/Sender.js.map +7 -0
- package/dist/cjs/components/XAdkProvider/compound/Sidebar.d.ts +24 -0
- package/dist/cjs/components/XAdkProvider/compound/Sidebar.js +151 -0
- package/dist/cjs/components/XAdkProvider/compound/Sidebar.js.map +7 -0
- package/dist/cjs/components/XAdkProvider/compound/Welcome.d.ts +6 -0
- package/dist/cjs/components/XAdkProvider/compound/Welcome.js +60 -0
- package/dist/cjs/components/XAdkProvider/compound/Welcome.js.map +7 -0
- package/dist/cjs/components/XAdkProvider/compound/index.d.ts +17 -0
- package/dist/cjs/components/XAdkProvider/compound/index.js +55 -0
- package/dist/cjs/components/XAdkProvider/compound/index.js.map +7 -0
- package/dist/cjs/components/XAdkProvider/compound/styles.d.ts +36 -0
- package/dist/cjs/components/XAdkProvider/compound/styles.js +49 -0
- package/dist/cjs/components/XAdkProvider/compound/styles.js.map +7 -0
- package/dist/cjs/components/XAdkProvider/context/ChatActionContext.d.ts +30 -0
- package/dist/cjs/components/XAdkProvider/context/ChatActionContext.js +40 -0
- package/dist/cjs/components/XAdkProvider/context/ChatActionContext.js.map +7 -0
- package/dist/cjs/components/XAdkProvider/context/ChatStateContext.d.ts +35 -0
- package/dist/cjs/components/XAdkProvider/context/ChatStateContext.js +42 -0
- package/dist/cjs/components/XAdkProvider/context/ChatStateContext.js.map +7 -0
- package/dist/cjs/components/XAdkProvider/context/SessionContext.d.ts +29 -0
- package/dist/cjs/components/XAdkProvider/context/SessionContext.js +40 -0
- package/dist/cjs/components/XAdkProvider/context/SessionContext.js.map +7 -0
- package/dist/cjs/components/XAdkProvider/context/index.d.ts +7 -0
- package/dist/cjs/components/XAdkProvider/context/index.js +28 -0
- package/dist/cjs/components/XAdkProvider/context/index.js.map +7 -0
- package/dist/cjs/components/XAdkProvider/index.d.ts +55 -0
- package/dist/cjs/components/XAdkProvider/index.js +221 -0
- package/dist/cjs/components/XAdkProvider/index.js.map +7 -0
- package/dist/cjs/components/{XAdkWebProvider → XAdkProvider}/styles.js +2 -1
- package/dist/cjs/components/XAdkProvider/styles.js.map +7 -0
- package/dist/cjs/components/XAdkSender/FileGallery.d.ts +8 -0
- package/dist/cjs/components/XAdkSender/FileGallery.js +381 -0
- package/dist/cjs/components/XAdkSender/FileGallery.js.map +7 -0
- package/dist/cjs/components/XAdkSender/index.js +95 -81
- package/dist/cjs/components/XAdkSender/index.js.map +3 -3
- package/dist/cjs/components/XAdkSender/styles.d.ts +0 -9
- package/dist/cjs/components/XAdkSender/styles.js +21 -150
- package/dist/cjs/components/XAdkSender/styles.js.map +2 -2
- package/dist/cjs/components/XAiConversations/index.js +1 -1
- package/dist/cjs/components/XAiConversations/index.js.map +2 -2
- package/dist/cjs/components/XAiConversations/styles.js +5 -0
- package/dist/cjs/components/XAiConversations/styles.js.map +2 -2
- package/dist/cjs/components/XAiThoughtChain/XAiThoughtChain.stories.d.ts +6 -0
- package/dist/cjs/components/XAiThoughtChain/XAiThoughtChain.stories.js +180 -0
- package/dist/cjs/components/XAiThoughtChain/XAiThoughtChain.stories.js.map +7 -0
- package/dist/cjs/components/XAiThoughtChain/index.d.ts +4 -0
- package/dist/cjs/components/XAiThoughtChain/index.js +155 -0
- package/dist/cjs/components/XAiThoughtChain/index.js.map +7 -0
- package/dist/cjs/components/XAiThoughtChain/styles.d.ts +60 -0
- package/dist/cjs/components/XAiThoughtChain/styles.js +195 -0
- package/dist/cjs/components/XAiThoughtChain/styles.js.map +7 -0
- package/dist/cjs/hooks/useADKChat.d.ts +9 -3
- package/dist/cjs/hooks/useADKChat.js +246 -182
- package/dist/cjs/hooks/useADKChat.js.map +2 -2
- package/dist/cjs/index.d.ts +25 -9
- package/dist/cjs/index.js +37 -0
- package/dist/cjs/index.js.map +3 -3
- package/dist/cjs/styles/common.js +1 -1
- package/dist/cjs/styles/common.js.map +2 -2
- package/dist/cjs/types/ChatHook.d.ts +81 -0
- package/dist/cjs/types/ChatHook.js +18 -0
- package/dist/cjs/types/ChatHook.js.map +7 -0
- package/dist/cjs/types/XAdkChatbot.d.ts +80 -15
- package/dist/cjs/types/XAdkChatbot.js.map +1 -1
- package/dist/cjs/types/XAdkProvider.d.ts +10 -27
- package/dist/cjs/types/XAdkProvider.js.map +2 -2
- package/dist/cjs/types/XAdkSender.d.ts +18 -0
- package/dist/cjs/types/XAdkSender.js.map +1 -1
- package/dist/cjs/types/XAiConversations.d.ts +4 -2
- package/dist/cjs/types/XAiConversations.js.map +1 -1
- package/dist/cjs/types/XAiThoughtChain.d.ts +25 -0
- package/dist/cjs/types/XAiThoughtChain.js +18 -0
- package/dist/cjs/types/XAiThoughtChain.js.map +7 -0
- package/dist/cjs/types/index.d.ts +9 -8
- package/dist/cjs/types/index.js +2 -0
- package/dist/cjs/types/index.js.map +2 -2
- package/dist/cjs/utils/index.d.ts +2 -0
- package/dist/cjs/utils/index.js +11 -1
- package/dist/cjs/utils/index.js.map +2 -2
- package/dist/cjs/utils/parseAgentMessage.d.ts +81 -0
- package/dist/cjs/utils/parseAgentMessage.js +180 -0
- package/dist/cjs/utils/parseAgentMessage.js.map +7 -0
- package/dist/cjs/utils/umdEntry.d.ts +91 -0
- package/dist/cjs/utils/umdEntry.js +108 -6
- package/dist/cjs/utils/umdEntry.js.map +3 -3
- package/dist/esm/components/XAdkChatbot/XAdkChatbot.stories.d.ts +9 -2
- package/dist/esm/components/XAdkChatbot/XAdkChatbot.stories.js +485 -8
- package/dist/esm/components/XAdkChatbot/XAdkChatbot.stories.js.map +1 -1
- package/dist/esm/components/XAdkChatbot/components/FileGallery/index.d.ts +12 -0
- package/dist/esm/components/XAdkChatbot/components/FileGallery/index.js +104 -0
- package/dist/esm/components/XAdkChatbot/components/FileGallery/index.js.map +1 -0
- package/dist/esm/components/XAdkChatbot/components/FileGallery/styles.d.ts +44 -0
- package/dist/esm/components/XAdkChatbot/components/FileGallery/styles.js +20 -0
- package/dist/esm/components/XAdkChatbot/components/FileGallery/styles.js.map +1 -0
- package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/index.d.ts +1 -1
- package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/index.js +17 -15
- package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/index.js.map +1 -1
- package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/styles.d.ts +1 -0
- package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/styles.js +7 -6
- package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/styles.js.map +1 -1
- package/dist/esm/components/XAdkChatbot/index.d.ts +11 -1
- package/dist/esm/components/XAdkChatbot/index.js +392 -174
- package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
- package/dist/esm/components/XAdkChatbot/styles.d.ts +10 -0
- package/dist/esm/components/XAdkChatbot/styles.js +23 -12
- package/dist/esm/components/XAdkChatbot/styles.js.map +1 -1
- package/dist/esm/components/XAdkProvider/XAdkProvider.stories.d.ts +10 -0
- package/dist/esm/components/XAdkProvider/XAdkProvider.stories.js +338 -0
- package/dist/esm/components/XAdkProvider/XAdkProvider.stories.js.map +1 -0
- package/dist/esm/components/XAdkProvider/compound/Chatbot.d.ts +30 -0
- package/dist/esm/components/XAdkProvider/compound/Chatbot.js +47 -0
- package/dist/esm/components/XAdkProvider/compound/Chatbot.js.map +1 -0
- package/dist/esm/components/XAdkProvider/compound/DefaultLayout.d.ts +26 -0
- package/dist/esm/components/XAdkProvider/compound/DefaultLayout.js +142 -0
- package/dist/esm/components/XAdkProvider/compound/DefaultLayout.js.map +1 -0
- package/dist/esm/components/XAdkProvider/compound/DislikeFeedBack.d.ts +8 -0
- package/dist/esm/components/XAdkProvider/compound/DislikeFeedBack.js +122 -0
- package/dist/esm/components/XAdkProvider/compound/DislikeFeedBack.js.map +1 -0
- package/dist/esm/components/XAdkProvider/compound/FeedbackTags.d.ts +7 -0
- package/dist/esm/components/XAdkProvider/compound/FeedbackTags.js +34 -0
- package/dist/esm/components/XAdkProvider/compound/FeedbackTags.js.map +1 -0
- package/dist/esm/components/XAdkProvider/compound/Header.d.ts +25 -0
- package/dist/esm/components/XAdkProvider/compound/Header.js +79 -0
- package/dist/esm/components/XAdkProvider/compound/Header.js.map +1 -0
- package/dist/esm/components/XAdkProvider/compound/Messages.d.ts +17 -0
- package/dist/esm/components/XAdkProvider/compound/Messages.js +53 -0
- package/dist/esm/components/XAdkProvider/compound/Messages.js.map +1 -0
- package/dist/esm/components/XAdkProvider/compound/Sender.d.ts +27 -0
- package/dist/esm/components/XAdkProvider/compound/Sender.js +41 -0
- package/dist/esm/components/XAdkProvider/compound/Sender.js.map +1 -0
- package/dist/esm/components/XAdkProvider/compound/Sidebar.d.ts +24 -0
- package/dist/esm/components/XAdkProvider/compound/Sidebar.js +142 -0
- package/dist/esm/components/XAdkProvider/compound/Sidebar.js.map +1 -0
- package/dist/esm/components/XAdkProvider/compound/Welcome.d.ts +6 -0
- package/dist/esm/components/XAdkProvider/compound/Welcome.js +36 -0
- package/dist/esm/components/XAdkProvider/compound/Welcome.js.map +1 -0
- package/dist/esm/components/XAdkProvider/compound/index.d.ts +17 -0
- package/dist/esm/components/XAdkProvider/compound/index.js +13 -0
- package/dist/esm/components/XAdkProvider/compound/index.js.map +1 -0
- package/dist/esm/components/XAdkProvider/compound/styles.d.ts +36 -0
- package/dist/esm/components/XAdkProvider/compound/styles.js +10 -0
- package/dist/esm/components/XAdkProvider/compound/styles.js.map +1 -0
- package/dist/esm/components/XAdkProvider/context/ChatActionContext.d.ts +30 -0
- package/dist/esm/components/XAdkProvider/context/ChatActionContext.js +23 -0
- package/dist/esm/components/XAdkProvider/context/ChatActionContext.js.map +1 -0
- package/dist/esm/components/XAdkProvider/context/ChatStateContext.d.ts +35 -0
- package/dist/esm/components/XAdkProvider/context/ChatStateContext.js +23 -0
- package/dist/esm/components/XAdkProvider/context/ChatStateContext.js.map +1 -0
- package/dist/esm/components/XAdkProvider/context/SessionContext.d.ts +29 -0
- package/dist/esm/components/XAdkProvider/context/SessionContext.js +22 -0
- package/dist/esm/components/XAdkProvider/context/SessionContext.js.map +1 -0
- package/dist/esm/components/XAdkProvider/context/index.d.ts +7 -0
- package/dist/esm/components/XAdkProvider/context/index.js +9 -0
- package/dist/esm/components/XAdkProvider/context/index.js.map +1 -0
- package/dist/esm/components/XAdkProvider/index.d.ts +55 -0
- package/dist/esm/components/XAdkProvider/index.js +220 -0
- package/dist/esm/components/XAdkProvider/index.js.map +1 -0
- package/dist/esm/components/{XAdkWebProvider → XAdkProvider}/styles.js +2 -2
- package/dist/esm/components/XAdkProvider/styles.js.map +1 -0
- package/dist/esm/components/XAdkSender/FileGallery.d.ts +8 -0
- package/dist/esm/components/XAdkSender/FileGallery.js +236 -0
- package/dist/esm/components/XAdkSender/FileGallery.js.map +1 -0
- package/dist/esm/components/XAdkSender/index.js +92 -109
- package/dist/esm/components/XAdkSender/index.js.map +1 -1
- package/dist/esm/components/XAdkSender/styles.d.ts +0 -9
- package/dist/esm/components/XAdkSender/styles.js +14 -31
- package/dist/esm/components/XAdkSender/styles.js.map +1 -1
- package/dist/esm/components/XAiConversations/index.js +1 -1
- package/dist/esm/components/XAiConversations/index.js.map +1 -1
- package/dist/esm/components/XAiConversations/styles.js +2 -2
- package/dist/esm/components/XAiConversations/styles.js.map +1 -1
- package/dist/esm/components/XAiThoughtChain/XAiThoughtChain.stories.d.ts +6 -0
- package/dist/esm/components/XAiThoughtChain/XAiThoughtChain.stories.js +159 -0
- package/dist/esm/components/XAiThoughtChain/XAiThoughtChain.stories.js.map +1 -0
- package/dist/esm/components/XAiThoughtChain/index.d.ts +4 -0
- package/dist/esm/components/XAiThoughtChain/index.js +180 -0
- package/dist/esm/components/XAiThoughtChain/index.js.map +1 -0
- package/dist/esm/components/XAiThoughtChain/styles.d.ts +60 -0
- package/dist/esm/components/XAiThoughtChain/styles.js +40 -0
- package/dist/esm/components/XAiThoughtChain/styles.js.map +1 -0
- package/dist/esm/hooks/useADKChat.d.ts +9 -3
- package/dist/esm/hooks/useADKChat.js +75 -54
- package/dist/esm/hooks/useADKChat.js.map +1 -1
- package/dist/esm/index.d.ts +25 -9
- package/dist/esm/index.js +28 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/styles/common.js +11 -11
- package/dist/esm/styles/common.js.map +1 -1
- package/dist/esm/types/ChatHook.d.ts +81 -0
- package/dist/esm/types/ChatHook.js +2 -0
- package/dist/esm/types/ChatHook.js.map +1 -0
- package/dist/esm/types/XAdkChatbot.d.ts +80 -15
- package/dist/esm/types/XAdkChatbot.js.map +1 -1
- package/dist/esm/types/XAdkProvider.d.ts +10 -27
- package/dist/esm/types/XAdkProvider.js.map +1 -1
- package/dist/esm/types/XAdkSender.d.ts +18 -0
- package/dist/esm/types/XAdkSender.js.map +1 -1
- package/dist/esm/types/XAiConversations.d.ts +4 -2
- package/dist/esm/types/XAiConversations.js.map +1 -1
- package/dist/esm/types/XAiThoughtChain.d.ts +25 -0
- package/dist/esm/types/XAiThoughtChain.js +2 -0
- package/dist/esm/types/XAiThoughtChain.js.map +1 -0
- package/dist/esm/types/index.d.ts +9 -8
- package/dist/esm/types/index.js +1 -0
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/utils/index.d.ts +2 -0
- package/dist/esm/utils/index.js +7 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/parseAgentMessage.d.ts +81 -0
- package/dist/esm/utils/parseAgentMessage.js +286 -0
- package/dist/esm/utils/parseAgentMessage.js.map +1 -0
- package/dist/esm/utils/umdEntry.d.ts +91 -0
- package/dist/esm/utils/umdEntry.js +154 -16
- package/dist/esm/utils/umdEntry.js.map +1 -1
- package/dist/umd/chat-sdk.min.css +1 -1
- package/dist/umd/chat-sdk.min.js +1 -1
- package/package.json +20 -11
- package/dist/cjs/components/XAdkWebProvider/XAdkWebProvider.stories.d.ts +0 -7
- package/dist/cjs/components/XAdkWebProvider/XAdkWebProvider.stories.js +0 -160
- package/dist/cjs/components/XAdkWebProvider/XAdkWebProvider.stories.js.map +0 -7
- package/dist/cjs/components/XAdkWebProvider/index.d.ts +0 -4
- package/dist/cjs/components/XAdkWebProvider/index.js +0 -372
- package/dist/cjs/components/XAdkWebProvider/index.js.map +0 -7
- package/dist/cjs/components/XAdkWebProvider/styles.js.map +0 -7
- package/dist/esm/components/XAdkWebProvider/XAdkWebProvider.stories.d.ts +0 -7
- package/dist/esm/components/XAdkWebProvider/XAdkWebProvider.stories.js +0 -158
- package/dist/esm/components/XAdkWebProvider/XAdkWebProvider.stories.js.map +0 -1
- package/dist/esm/components/XAdkWebProvider/index.d.ts +0 -4
- package/dist/esm/components/XAdkWebProvider/index.js +0 -480
- package/dist/esm/components/XAdkWebProvider/index.js.map +0 -1
- package/dist/esm/components/XAdkWebProvider/styles.js.map +0 -1
- /package/dist/cjs/components/{XAdkWebProvider → XAdkProvider}/styles.d.ts +0 -0
- /package/dist/esm/components/{XAdkWebProvider → XAdkProvider}/styles.d.ts +0 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { SessionData } from "../../../types";
|
|
3
|
+
/**
|
|
4
|
+
* 会话管理 Context
|
|
5
|
+
* 管理会话列表和会话操作
|
|
6
|
+
*/
|
|
7
|
+
export interface SessionContextType {
|
|
8
|
+
/** 会话列表 */
|
|
9
|
+
sessionList: SessionData[];
|
|
10
|
+
/** 会话分页信息 */
|
|
11
|
+
sessionPagination: {
|
|
12
|
+
total: number;
|
|
13
|
+
pageNum: number;
|
|
14
|
+
pageSize: number;
|
|
15
|
+
};
|
|
16
|
+
/** 删除会话 */
|
|
17
|
+
deleteSession: (sessionId: string) => void;
|
|
18
|
+
/** 更新会话标题 */
|
|
19
|
+
updateSession: (sessionId: string, title: string) => void;
|
|
20
|
+
/** 设置当前会话详情 */
|
|
21
|
+
setCurrentSessionDetail: (sessionId: string) => void;
|
|
22
|
+
}
|
|
23
|
+
export declare const SessionContext: import("react").Context<SessionContextType | null>;
|
|
24
|
+
/**
|
|
25
|
+
* 使用会话管理 Hook
|
|
26
|
+
* @returns SessionContextType
|
|
27
|
+
* @throws Error 如果在 XAdkProvider 外部使用
|
|
28
|
+
*/
|
|
29
|
+
export declare const useSession: () => SessionContextType;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { createContext, useContext } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 会话管理 Context
|
|
5
|
+
* 管理会话列表和会话操作
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export var SessionContext = /*#__PURE__*/createContext(null);
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* 使用会话管理 Hook
|
|
12
|
+
* @returns SessionContextType
|
|
13
|
+
* @throws Error 如果在 XAdkProvider 外部使用
|
|
14
|
+
*/
|
|
15
|
+
export var useSession = function useSession() {
|
|
16
|
+
var context = useContext(SessionContext);
|
|
17
|
+
if (!context) {
|
|
18
|
+
throw new Error('useSession must be used within XAdkProvider');
|
|
19
|
+
}
|
|
20
|
+
return context;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=SessionContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createContext","useContext","SessionContext","useSession","context","Error"],"sources":["../../../../../src/components/XAdkProvider/context/SessionContext.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { SessionData } from '@/types';\n\n/**\n * 会话管理 Context\n * 管理会话列表和会话操作\n */\nexport interface SessionContextType {\n /** 会话列表 */\n sessionList: SessionData[];\n /** 会话分页信息 */\n sessionPagination: {\n total: number;\n pageNum: number;\n pageSize: number;\n };\n /** 删除会话 */\n deleteSession: (sessionId: string) => void;\n /** 更新会话标题 */\n updateSession: (sessionId: string, title: string) => void;\n /** 设置当前会话详情 */\n setCurrentSessionDetail: (sessionId: string) => void;\n}\n\nexport const SessionContext = createContext<SessionContextType | null>(null);\n\n/**\n * 使用会话管理 Hook\n * @returns SessionContextType\n * @throws Error 如果在 XAdkProvider 外部使用\n */\nexport const useSession = () => {\n const context = useContext(SessionContext);\n if (!context) {\n throw new Error('useSession must be used within XAdkProvider');\n }\n return context;\n};\n"],"mappings":"AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;;AAGjD;AACA;AACA;AACA;;AAkBA,OAAO,IAAMC,cAAc,gBAAGF,aAAa,CAA4B,IAAI,CAAC;;AAE5E;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMG,UAAU,GAAG,SAAbA,UAAUA,CAAA,EAAS;EAC9B,IAAMC,OAAO,GAAGH,UAAU,CAACC,cAAc,CAAC;EAC1C,IAAI,CAACE,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,6CAA6C,CAAC;EAChE;EACA,OAAOD,OAAO;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../../../src/components/XAdkProvider/context/index.ts"],"sourcesContent":["/**\n * XAdkProvider Context 导出\n * 提供拆分的 Context 和对应的 Hooks\n */\n\nexport * from './ChatStateContext';\nexport * from './ChatActionContext';\nexport * from './SessionContext';\n"],"mappings":"AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { XAdkProviderProps, XAdkProviderHandle } from "../../types/XAdkProvider";
|
|
3
|
+
import type { ChatHookResult } from "../../types/ChatHook";
|
|
4
|
+
/**
|
|
5
|
+
* XAdkProvider Props (扩展版)
|
|
6
|
+
*
|
|
7
|
+
* 支持两种使用方式:
|
|
8
|
+
* 1. 标准协议: 提供 url/token/config,使用内置 useADKChat
|
|
9
|
+
* 2. 自定义协议: 提供 chatData,使用自己的 Hook
|
|
10
|
+
*/
|
|
11
|
+
export interface XAdkProviderPropsExtended extends Omit<XAdkProviderProps, "url" | "token" | "config"> {
|
|
12
|
+
/**
|
|
13
|
+
* 选项 A: 使用标准协议 (内置 useADKChat)
|
|
14
|
+
*/
|
|
15
|
+
url: string;
|
|
16
|
+
token: string;
|
|
17
|
+
config?: any;
|
|
18
|
+
/**
|
|
19
|
+
* 选项 B: 使用自定义 Hook 数据
|
|
20
|
+
* 如果提供此参数,将忽略 url/token/config
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* // GraphQL 协议
|
|
24
|
+
* const chatData = useMyGraphQLChat({ endpoint: '...' });
|
|
25
|
+
* <XAdkProvider chatData={chatData}>
|
|
26
|
+
* <XAdkProvider.DefaultLayout />
|
|
27
|
+
* </XAdkProvider>
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* // WebSocket 协议
|
|
31
|
+
* const chatData = useWebSocketChat({ url: 'ws://...' });
|
|
32
|
+
* <XAdkProvider chatData={chatData}>
|
|
33
|
+
* <XAdkProvider.DefaultLayout />
|
|
34
|
+
* </XAdkProvider>
|
|
35
|
+
*/
|
|
36
|
+
chatData?: ChatHookResult;
|
|
37
|
+
children: React.ReactNode;
|
|
38
|
+
}
|
|
39
|
+
import Header from "./compound/Header";
|
|
40
|
+
import Sidebar from "./compound/Sidebar";
|
|
41
|
+
import Messages from "./compound/Messages";
|
|
42
|
+
import Sender from "./compound/Sender";
|
|
43
|
+
import Chatbot from "./compound/Chatbot";
|
|
44
|
+
import Welcome from "./compound/Welcome";
|
|
45
|
+
import DefaultLayout from "./compound/DefaultLayout";
|
|
46
|
+
declare const XAdkProvider: React.ForwardRefExoticComponent<XAdkProviderPropsExtended & React.RefAttributes<XAdkProviderHandle>> & {
|
|
47
|
+
Header: typeof Header;
|
|
48
|
+
Sidebar: typeof Sidebar;
|
|
49
|
+
Messages: typeof Messages;
|
|
50
|
+
Sender: typeof Sender;
|
|
51
|
+
Chatbot: typeof Chatbot;
|
|
52
|
+
Welcome: typeof Welcome;
|
|
53
|
+
DefaultLayout: typeof DefaultLayout;
|
|
54
|
+
};
|
|
55
|
+
export default XAdkProvider;
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import React, { forwardRef, useImperativeHandle, useMemo } from "react";
|
|
2
|
+
import { ConfigProvider } from "antd";
|
|
3
|
+
import { XProvider } from "@ant-design/x";
|
|
4
|
+
import { ChatStateContext } from "./context/ChatStateContext";
|
|
5
|
+
import { ChatActionContext } from "./context/ChatActionContext";
|
|
6
|
+
import { SessionContext } from "./context/SessionContext";
|
|
7
|
+
import useADKChat from "../../hooks/useADKChat";
|
|
8
|
+
import { primaryBlue } from "../../styles/common";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* XAdkProvider Props (扩展版)
|
|
12
|
+
*
|
|
13
|
+
* 支持两种使用方式:
|
|
14
|
+
* 1. 标准协议: 提供 url/token/config,使用内置 useADKChat
|
|
15
|
+
* 2. 自定义协议: 提供 chatData,使用自己的 Hook
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* XAdkProvider - AI 聊天 SDK 核心 Provider
|
|
20
|
+
*
|
|
21
|
+
* 采用 Compound Components 架构:
|
|
22
|
+
* - 只负责数据和状态管理
|
|
23
|
+
* - 不包含 UI 布局
|
|
24
|
+
* - 通过 Context 向子组件提供数据
|
|
25
|
+
* - 支持完全自定义的组件组合
|
|
26
|
+
* - 支持协议解耦,可使用自定义 Hook
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* // 基础用法 - 标准协议
|
|
30
|
+
* <XAdkProvider url="..." token="..." config={...}>
|
|
31
|
+
* <XAdkProvider.Chatbot />
|
|
32
|
+
* </XAdkProvider>
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* // 自定义协议 - GraphQL
|
|
36
|
+
* function App() {
|
|
37
|
+
* const chatData = useMyGraphQLChat({ endpoint: '...' });
|
|
38
|
+
* return (
|
|
39
|
+
* <XAdkProvider chatData={chatData}>
|
|
40
|
+
* <XAdkProvider.DefaultLayout />
|
|
41
|
+
* </XAdkProvider>
|
|
42
|
+
* );
|
|
43
|
+
* }
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* // 自定义布局
|
|
47
|
+
* <XAdkProvider url="..." token="...">
|
|
48
|
+
* <div style={{ display: 'flex' }}>
|
|
49
|
+
* <XAdkProvider.Sidebar />
|
|
50
|
+
* <div>
|
|
51
|
+
* <XAdkProvider.Messages />
|
|
52
|
+
* <XAdkProvider.Sender />
|
|
53
|
+
* </div>
|
|
54
|
+
* </div>
|
|
55
|
+
* </XAdkProvider>
|
|
56
|
+
*/
|
|
57
|
+
var XAdkProviderComponent = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
58
|
+
var url = _ref.url,
|
|
59
|
+
token = _ref.token,
|
|
60
|
+
config = _ref.config,
|
|
61
|
+
chatData = _ref.chatData,
|
|
62
|
+
_ref$providerId = _ref.providerId,
|
|
63
|
+
providerId = _ref$providerId === void 0 ? "defaultId" : _ref$providerId,
|
|
64
|
+
onSuccess = _ref.onSuccess,
|
|
65
|
+
onError = _ref.onError,
|
|
66
|
+
onMessage = _ref.onMessage,
|
|
67
|
+
onStream = _ref.onStream,
|
|
68
|
+
children = _ref.children;
|
|
69
|
+
// 内置 Hook 数据 (仅在没有提供 chatData 时调用)
|
|
70
|
+
var internalData = useADKChat({
|
|
71
|
+
url: url || "",
|
|
72
|
+
token: token || "",
|
|
73
|
+
config: config || {},
|
|
74
|
+
onError: onError,
|
|
75
|
+
onSuccess: onSuccess,
|
|
76
|
+
onMessage: onMessage,
|
|
77
|
+
onStream: onStream,
|
|
78
|
+
// 仅在提供了 url 和 token 时才初始化
|
|
79
|
+
enabled: !chatData && !!url && !!token
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
// 使用外部数据或内部数据
|
|
83
|
+
var data = chatData || internalData;
|
|
84
|
+
|
|
85
|
+
// 解构数据
|
|
86
|
+
var appInfo = data.appInfo,
|
|
87
|
+
startChat = data.startChat,
|
|
88
|
+
stopChat = data.stopChat,
|
|
89
|
+
reChat = data.reChat,
|
|
90
|
+
clearChat = data.clearChat,
|
|
91
|
+
suggestChat = data.suggestChat,
|
|
92
|
+
confirmFnCall = data.confirmFnCall,
|
|
93
|
+
deleteSession = data.deleteSession,
|
|
94
|
+
updateSession = data.updateSession,
|
|
95
|
+
currentSessionId = data.currentSessionId,
|
|
96
|
+
sessionPagination = data.sessionPagination,
|
|
97
|
+
sessionList = data.sessionList,
|
|
98
|
+
messages = data.messages,
|
|
99
|
+
loading = data.loading,
|
|
100
|
+
prologue = data.prologue,
|
|
101
|
+
suggestions = data.suggestions,
|
|
102
|
+
initialized = data.initialized,
|
|
103
|
+
setCurrentSessionDetail = data.setCurrentSessionDetail,
|
|
104
|
+
setMessages = data.setMessages;
|
|
105
|
+
|
|
106
|
+
// 暴露 API 给 ref
|
|
107
|
+
useImperativeHandle(ref, function () {
|
|
108
|
+
return {
|
|
109
|
+
startChat: startChat,
|
|
110
|
+
stopChat: stopChat,
|
|
111
|
+
reChat: reChat,
|
|
112
|
+
clearChat: clearChat,
|
|
113
|
+
suggestChat: suggestChat,
|
|
114
|
+
deleteSession: deleteSession,
|
|
115
|
+
updateSession: updateSession,
|
|
116
|
+
getAppInfo: function getAppInfo() {
|
|
117
|
+
return appInfo;
|
|
118
|
+
},
|
|
119
|
+
getMessages: function getMessages() {
|
|
120
|
+
return messages;
|
|
121
|
+
},
|
|
122
|
+
getSessions: function getSessions() {
|
|
123
|
+
return sessionList;
|
|
124
|
+
},
|
|
125
|
+
setMessages: setMessages,
|
|
126
|
+
setCurrentSessionDetail: setCurrentSessionDetail
|
|
127
|
+
};
|
|
128
|
+
}, [appInfo, messages, sessionList, startChat, stopChat, reChat, clearChat, suggestChat, deleteSession, updateSession, setMessages, setCurrentSessionDetail]);
|
|
129
|
+
|
|
130
|
+
// 状态 Context Value - 使用 useMemo 避免不必要的 rerender
|
|
131
|
+
var chatStateValue = useMemo(function () {
|
|
132
|
+
return {
|
|
133
|
+
messages: messages,
|
|
134
|
+
loading: loading,
|
|
135
|
+
currentSessionId: currentSessionId,
|
|
136
|
+
prologue: prologue,
|
|
137
|
+
suggestions: suggestions,
|
|
138
|
+
appInfo: appInfo,
|
|
139
|
+
initialized: initialized,
|
|
140
|
+
url: url,
|
|
141
|
+
token: token
|
|
142
|
+
};
|
|
143
|
+
}, [messages, loading, currentSessionId, prologue, suggestions, appInfo, initialized]);
|
|
144
|
+
|
|
145
|
+
// 动作 Context Value - 函数引用稳定,不需要每次都创建新对象
|
|
146
|
+
var chatActionValue = useMemo(function () {
|
|
147
|
+
return {
|
|
148
|
+
chat: startChat,
|
|
149
|
+
stopChat: stopChat,
|
|
150
|
+
clearChat: clearChat,
|
|
151
|
+
reChat: reChat,
|
|
152
|
+
suggestChat: suggestChat,
|
|
153
|
+
confirmFnCall: confirmFnCall,
|
|
154
|
+
setMessages: setMessages
|
|
155
|
+
};
|
|
156
|
+
}, [startChat, stopChat, clearChat, reChat, suggestChat, confirmFnCall, setMessages]);
|
|
157
|
+
|
|
158
|
+
// 会话 Context Value
|
|
159
|
+
var sessionValue = useMemo(function () {
|
|
160
|
+
return {
|
|
161
|
+
sessionList: sessionList,
|
|
162
|
+
sessionPagination: sessionPagination,
|
|
163
|
+
deleteSession: deleteSession,
|
|
164
|
+
updateSession: updateSession,
|
|
165
|
+
setCurrentSessionDetail: setCurrentSessionDetail
|
|
166
|
+
};
|
|
167
|
+
}, [sessionList, sessionPagination, deleteSession, updateSession, setCurrentSessionDetail]);
|
|
168
|
+
return /*#__PURE__*/_jsx(ConfigProvider, {
|
|
169
|
+
theme: {
|
|
170
|
+
token: {
|
|
171
|
+
colorPrimary: (appInfo === null || appInfo === void 0 ? void 0 : appInfo.appTheme) || primaryBlue
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
children: /*#__PURE__*/_jsx(XProvider, {
|
|
175
|
+
children: /*#__PURE__*/_jsx(ChatStateContext.Provider, {
|
|
176
|
+
value: chatStateValue,
|
|
177
|
+
children: /*#__PURE__*/_jsx(ChatActionContext.Provider, {
|
|
178
|
+
value: chatActionValue,
|
|
179
|
+
children: /*#__PURE__*/_jsx(SessionContext.Provider, {
|
|
180
|
+
value: sessionValue,
|
|
181
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
182
|
+
style: {
|
|
183
|
+
display: "flex",
|
|
184
|
+
height: "100%",
|
|
185
|
+
width: "100%",
|
|
186
|
+
position: "relative"
|
|
187
|
+
},
|
|
188
|
+
children: children
|
|
189
|
+
})
|
|
190
|
+
})
|
|
191
|
+
})
|
|
192
|
+
})
|
|
193
|
+
})
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
XAdkProviderComponent.displayName = "XAdkProvider";
|
|
197
|
+
|
|
198
|
+
// 导入 Compound Components
|
|
199
|
+
import Header from "./compound/Header";
|
|
200
|
+
import Sidebar from "./compound/Sidebar";
|
|
201
|
+
import Messages from "./compound/Messages";
|
|
202
|
+
import Sender from "./compound/Sender";
|
|
203
|
+
import Chatbot from "./compound/Chatbot";
|
|
204
|
+
import Welcome from "./compound/Welcome";
|
|
205
|
+
import DefaultLayout from "./compound/DefaultLayout";
|
|
206
|
+
|
|
207
|
+
// 导出时会挂载 Compound Components
|
|
208
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
209
|
+
var XAdkProvider = XAdkProviderComponent;
|
|
210
|
+
|
|
211
|
+
// 挂载 Compound Components
|
|
212
|
+
XAdkProvider.Header = Header;
|
|
213
|
+
XAdkProvider.Sidebar = Sidebar;
|
|
214
|
+
XAdkProvider.Messages = Messages;
|
|
215
|
+
XAdkProvider.Sender = Sender;
|
|
216
|
+
XAdkProvider.Chatbot = Chatbot;
|
|
217
|
+
XAdkProvider.DefaultLayout = DefaultLayout;
|
|
218
|
+
XAdkProvider.Welcome = Welcome;
|
|
219
|
+
export default XAdkProvider;
|
|
220
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","forwardRef","useImperativeHandle","useMemo","ConfigProvider","XProvider","ChatStateContext","ChatActionContext","SessionContext","useADKChat","primaryBlue","XAdkProviderComponent","_ref","ref","url","token","config","chatData","_ref$providerId","providerId","onSuccess","onError","onMessage","onStream","children","internalData","enabled","data","appInfo","startChat","stopChat","reChat","clearChat","suggestChat","confirmFnCall","deleteSession","updateSession","currentSessionId","sessionPagination","sessionList","messages","loading","prologue","suggestions","initialized","setCurrentSessionDetail","setMessages","getAppInfo","getMessages","getSessions","chatStateValue","chatActionValue","chat","sessionValue","_jsx","theme","colorPrimary","appTheme","Provider","value","style","display","height","width","position","displayName","Header","Sidebar","Messages","Sender","Chatbot","Welcome","DefaultLayout","jsx","XAdkProvider"],"sources":["../../../../src/components/XAdkProvider/index.tsx"],"sourcesContent":["import React, { forwardRef, useImperativeHandle, useMemo } from \"react\";\nimport { ConfigProvider } from \"antd\";\nimport { XProvider } from \"@ant-design/x\";\nimport { ChatStateContext } from \"./context/ChatStateContext\";\nimport { ChatActionContext } from \"./context/ChatActionContext\";\nimport { SessionContext } from \"./context/SessionContext\";\nimport useADKChat from \"@/hooks/useADKChat\";\nimport { primaryBlue } from \"@/styles/common\";\nimport type {\n XAdkProviderProps,\n XAdkProviderHandle,\n} from \"@/types/XAdkProvider\";\nimport type { ChatHookResult } from \"@/types/ChatHook\";\n\n/**\n * XAdkProvider Props (扩展版)\n *\n * 支持两种使用方式:\n * 1. 标准协议: 提供 url/token/config,使用内置 useADKChat\n * 2. 自定义协议: 提供 chatData,使用自己的 Hook\n */\nexport interface XAdkProviderPropsExtended extends Omit<\n XAdkProviderProps,\n \"url\" | \"token\" | \"config\"\n> {\n /**\n * 选项 A: 使用标准协议 (内置 useADKChat)\n */\n url: string;\n token: string;\n config?: any;\n\n /**\n * 选项 B: 使用自定义 Hook 数据\n * 如果提供此参数,将忽略 url/token/config\n *\n * @example\n * // GraphQL 协议\n * const chatData = useMyGraphQLChat({ endpoint: '...' });\n * <XAdkProvider chatData={chatData}>\n * <XAdkProvider.DefaultLayout />\n * </XAdkProvider>\n *\n * @example\n * // WebSocket 协议\n * const chatData = useWebSocketChat({ url: 'ws://...' });\n * <XAdkProvider chatData={chatData}>\n * <XAdkProvider.DefaultLayout />\n * </XAdkProvider>\n */\n chatData?: ChatHookResult;\n\n children: React.ReactNode;\n}\n\n/**\n * XAdkProvider - AI 聊天 SDK 核心 Provider\n *\n * 采用 Compound Components 架构:\n * - 只负责数据和状态管理\n * - 不包含 UI 布局\n * - 通过 Context 向子组件提供数据\n * - 支持完全自定义的组件组合\n * - 支持协议解耦,可使用自定义 Hook\n *\n * @example\n * // 基础用法 - 标准协议\n * <XAdkProvider url=\"...\" token=\"...\" config={...}>\n * <XAdkProvider.Chatbot />\n * </XAdkProvider>\n *\n * @example\n * // 自定义协议 - GraphQL\n * function App() {\n * const chatData = useMyGraphQLChat({ endpoint: '...' });\n * return (\n * <XAdkProvider chatData={chatData}>\n * <XAdkProvider.DefaultLayout />\n * </XAdkProvider>\n * );\n * }\n *\n * @example\n * // 自定义布局\n * <XAdkProvider url=\"...\" token=\"...\">\n * <div style={{ display: 'flex' }}>\n * <XAdkProvider.Sidebar />\n * <div>\n * <XAdkProvider.Messages />\n * <XAdkProvider.Sender />\n * </div>\n * </div>\n * </XAdkProvider>\n */\nconst XAdkProviderComponent = forwardRef<\n XAdkProviderHandle,\n XAdkProviderPropsExtended\n>(\n (\n {\n url,\n token,\n config,\n chatData, // 自定义 Hook 数据\n providerId = \"defaultId\",\n onSuccess,\n onError,\n onMessage,\n onStream,\n children,\n },\n ref,\n ) => {\n // 内置 Hook 数据 (仅在没有提供 chatData 时调用)\n const internalData = useADKChat({\n url: url || \"\",\n token: token || \"\",\n config: config || {},\n onError,\n onSuccess,\n onMessage,\n onStream,\n // 仅在提供了 url 和 token 时才初始化\n enabled: !chatData && !!url && !!token,\n });\n\n // 使用外部数据或内部数据\n const data = chatData || internalData;\n\n // 解构数据\n const {\n appInfo,\n startChat,\n stopChat,\n reChat,\n clearChat,\n suggestChat,\n confirmFnCall,\n deleteSession,\n updateSession,\n currentSessionId,\n sessionPagination,\n sessionList,\n messages,\n loading,\n prologue,\n suggestions,\n initialized,\n setCurrentSessionDetail,\n setMessages,\n } = data;\n\n // 暴露 API 给 ref\n useImperativeHandle(\n ref,\n () => ({\n startChat,\n stopChat,\n reChat,\n clearChat,\n suggestChat,\n deleteSession,\n updateSession,\n getAppInfo: () => appInfo,\n getMessages: () => messages,\n getSessions: () => sessionList,\n setMessages,\n setCurrentSessionDetail,\n }),\n [\n appInfo,\n messages,\n sessionList,\n startChat,\n stopChat,\n reChat,\n clearChat,\n suggestChat,\n deleteSession,\n updateSession,\n setMessages,\n setCurrentSessionDetail,\n ],\n );\n\n // 状态 Context Value - 使用 useMemo 避免不必要的 rerender\n const chatStateValue = useMemo(\n () => ({\n messages,\n loading,\n currentSessionId,\n prologue,\n suggestions,\n appInfo,\n initialized,\n url,\n token,\n }),\n [\n messages,\n loading,\n currentSessionId,\n prologue,\n suggestions,\n appInfo,\n initialized,\n ],\n );\n\n // 动作 Context Value - 函数引用稳定,不需要每次都创建新对象\n const chatActionValue = useMemo(\n () => ({\n chat: startChat,\n stopChat,\n clearChat,\n reChat,\n suggestChat,\n confirmFnCall,\n setMessages,\n }),\n [\n startChat,\n stopChat,\n clearChat,\n reChat,\n suggestChat,\n confirmFnCall,\n setMessages,\n ],\n );\n\n // 会话 Context Value\n const sessionValue = useMemo(\n () => ({\n sessionList,\n sessionPagination,\n deleteSession,\n updateSession,\n setCurrentSessionDetail,\n }),\n [\n sessionList,\n sessionPagination,\n deleteSession,\n updateSession,\n setCurrentSessionDetail,\n ],\n );\n\n return (\n <ConfigProvider\n theme={{\n token: {\n colorPrimary: appInfo?.appTheme || primaryBlue,\n },\n }}\n >\n <XProvider>\n <ChatStateContext.Provider value={chatStateValue}>\n <ChatActionContext.Provider value={chatActionValue}>\n <SessionContext.Provider value={sessionValue}>\n <div\n style={{\n display: \"flex\",\n height: \"100%\",\n width: \"100%\",\n position: \"relative\",\n }}\n >\n {children}\n </div>\n </SessionContext.Provider>\n </ChatActionContext.Provider>\n </ChatStateContext.Provider>\n </XProvider>\n </ConfigProvider>\n );\n },\n);\n\nXAdkProviderComponent.displayName = \"XAdkProvider\";\n\n// 导入 Compound Components\nimport Header from \"./compound/Header\";\nimport Sidebar from \"./compound/Sidebar\";\nimport Messages from \"./compound/Messages\";\nimport Sender from \"./compound/Sender\";\nimport Chatbot from \"./compound/Chatbot\";\nimport Welcome from \"./compound/Welcome\";\nimport DefaultLayout from \"./compound/DefaultLayout\";\n\n// 导出时会挂载 Compound Components\nconst XAdkProvider = XAdkProviderComponent as typeof XAdkProviderComponent & {\n Header: typeof Header;\n Sidebar: typeof Sidebar;\n Messages: typeof Messages;\n Sender: typeof Sender;\n Chatbot: typeof Chatbot;\n Welcome: typeof Welcome;\n DefaultLayout: typeof DefaultLayout;\n};\n\n// 挂载 Compound Components\nXAdkProvider.Header = Header;\nXAdkProvider.Sidebar = Sidebar;\nXAdkProvider.Messages = Messages;\nXAdkProvider.Sender = Sender;\nXAdkProvider.Chatbot = Chatbot;\nXAdkProvider.DefaultLayout = DefaultLayout;\nXAdkProvider.Welcome = Welcome;\n\nexport default XAdkProvider;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,mBAAmB,EAAEC,OAAO,QAAQ,OAAO;AACvE,SAASC,cAAc,QAAQ,MAAM;AACrC,SAASC,SAAS,QAAQ,eAAe;AACzC,SAASC,gBAAgB;AACzB,SAASC,iBAAiB;AAC1B,SAASC,cAAc;AACvB,OAAOC,UAAU;AACjB,SAASC,WAAW;;AAOpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAmCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,qBAAqB,gBAAGV,UAAU,CAItC,UAAAW,IAAA,EAaEC,GAAG,EACA;EAAA,IAZDC,GAAG,GAAAF,IAAA,CAAHE,GAAG;IACHC,KAAK,GAAAH,IAAA,CAALG,KAAK;IACLC,MAAM,GAAAJ,IAAA,CAANI,MAAM;IACNC,QAAQ,GAAAL,IAAA,CAARK,QAAQ;IAAAC,eAAA,GAAAN,IAAA,CACRO,UAAU;IAAVA,UAAU,GAAAD,eAAA,cAAG,WAAW,GAAAA,eAAA;IACxBE,SAAS,GAAAR,IAAA,CAATQ,SAAS;IACTC,OAAO,GAAAT,IAAA,CAAPS,OAAO;IACPC,SAAS,GAAAV,IAAA,CAATU,SAAS;IACTC,QAAQ,GAAAX,IAAA,CAARW,QAAQ;IACRC,QAAQ,GAAAZ,IAAA,CAARY,QAAQ;EAIV;EACA,IAAMC,YAAY,GAAGhB,UAAU,CAAC;IAC9BK,GAAG,EAAEA,GAAG,IAAI,EAAE;IACdC,KAAK,EAAEA,KAAK,IAAI,EAAE;IAClBC,MAAM,EAAEA,MAAM,IAAI,CAAC,CAAC;IACpBK,OAAO,EAAPA,OAAO;IACPD,SAAS,EAATA,SAAS;IACTE,SAAS,EAATA,SAAS;IACTC,QAAQ,EAARA,QAAQ;IACR;IACAG,OAAO,EAAE,CAACT,QAAQ,IAAI,CAAC,CAACH,GAAG,IAAI,CAAC,CAACC;EACnC,CAAC,CAAC;;EAEF;EACA,IAAMY,IAAI,GAAGV,QAAQ,IAAIQ,YAAY;;EAErC;EACA,IACEG,OAAO,GAmBLD,IAAI,CAnBNC,OAAO;IACPC,SAAS,GAkBPF,IAAI,CAlBNE,SAAS;IACTC,QAAQ,GAiBNH,IAAI,CAjBNG,QAAQ;IACRC,MAAM,GAgBJJ,IAAI,CAhBNI,MAAM;IACNC,SAAS,GAePL,IAAI,CAfNK,SAAS;IACTC,WAAW,GAcTN,IAAI,CAdNM,WAAW;IACXC,aAAa,GAaXP,IAAI,CAbNO,aAAa;IACbC,aAAa,GAYXR,IAAI,CAZNQ,aAAa;IACbC,aAAa,GAWXT,IAAI,CAXNS,aAAa;IACbC,gBAAgB,GAUdV,IAAI,CAVNU,gBAAgB;IAChBC,iBAAiB,GASfX,IAAI,CATNW,iBAAiB;IACjBC,WAAW,GAQTZ,IAAI,CARNY,WAAW;IACXC,QAAQ,GAONb,IAAI,CAPNa,QAAQ;IACRC,OAAO,GAMLd,IAAI,CANNc,OAAO;IACPC,QAAQ,GAKNf,IAAI,CALNe,QAAQ;IACRC,WAAW,GAIThB,IAAI,CAJNgB,WAAW;IACXC,WAAW,GAGTjB,IAAI,CAHNiB,WAAW;IACXC,uBAAuB,GAErBlB,IAAI,CAFNkB,uBAAuB;IACvBC,WAAW,GACTnB,IAAI,CADNmB,WAAW;;EAGb;EACA5C,mBAAmB,CACjBW,GAAG,EACH;IAAA,OAAO;MACLgB,SAAS,EAATA,SAAS;MACTC,QAAQ,EAARA,QAAQ;MACRC,MAAM,EAANA,MAAM;MACNC,SAAS,EAATA,SAAS;MACTC,WAAW,EAAXA,WAAW;MACXE,aAAa,EAAbA,aAAa;MACbC,aAAa,EAAbA,aAAa;MACbW,UAAU,EAAE,SAAAA,WAAA;QAAA,OAAMnB,OAAO;MAAA;MACzBoB,WAAW,EAAE,SAAAA,YAAA;QAAA,OAAMR,QAAQ;MAAA;MAC3BS,WAAW,EAAE,SAAAA,YAAA;QAAA,OAAMV,WAAW;MAAA;MAC9BO,WAAW,EAAXA,WAAW;MACXD,uBAAuB,EAAvBA;IACF,CAAC;EAAA,CAAC,EACF,CACEjB,OAAO,EACPY,QAAQ,EACRD,WAAW,EACXV,SAAS,EACTC,QAAQ,EACRC,MAAM,EACNC,SAAS,EACTC,WAAW,EACXE,aAAa,EACbC,aAAa,EACbU,WAAW,EACXD,uBAAuB,CAE3B,CAAC;;EAED;EACA,IAAMK,cAAc,GAAG/C,OAAO,CAC5B;IAAA,OAAO;MACLqC,QAAQ,EAARA,QAAQ;MACRC,OAAO,EAAPA,OAAO;MACPJ,gBAAgB,EAAhBA,gBAAgB;MAChBK,QAAQ,EAARA,QAAQ;MACRC,WAAW,EAAXA,WAAW;MACXf,OAAO,EAAPA,OAAO;MACPgB,WAAW,EAAXA,WAAW;MACX9B,GAAG,EAAHA,GAAG;MACHC,KAAK,EAALA;IACF,CAAC;EAAA,CAAC,EACF,CACEyB,QAAQ,EACRC,OAAO,EACPJ,gBAAgB,EAChBK,QAAQ,EACRC,WAAW,EACXf,OAAO,EACPgB,WAAW,CAEf,CAAC;;EAED;EACA,IAAMO,eAAe,GAAGhD,OAAO,CAC7B;IAAA,OAAO;MACLiD,IAAI,EAAEvB,SAAS;MACfC,QAAQ,EAARA,QAAQ;MACRE,SAAS,EAATA,SAAS;MACTD,MAAM,EAANA,MAAM;MACNE,WAAW,EAAXA,WAAW;MACXC,aAAa,EAAbA,aAAa;MACbY,WAAW,EAAXA;IACF,CAAC;EAAA,CAAC,EACF,CACEjB,SAAS,EACTC,QAAQ,EACRE,SAAS,EACTD,MAAM,EACNE,WAAW,EACXC,aAAa,EACbY,WAAW,CAEf,CAAC;;EAED;EACA,IAAMO,YAAY,GAAGlD,OAAO,CAC1B;IAAA,OAAO;MACLoC,WAAW,EAAXA,WAAW;MACXD,iBAAiB,EAAjBA,iBAAiB;MACjBH,aAAa,EAAbA,aAAa;MACbC,aAAa,EAAbA,aAAa;MACbS,uBAAuB,EAAvBA;IACF,CAAC;EAAA,CAAC,EACF,CACEN,WAAW,EACXD,iBAAiB,EACjBH,aAAa,EACbC,aAAa,EACbS,uBAAuB,CAE3B,CAAC;EAED,oBACES,IAAA,CAAClD,cAAc;IACbmD,KAAK,EAAE;MACLxC,KAAK,EAAE;QACLyC,YAAY,EAAE,CAAA5B,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE6B,QAAQ,KAAI/C;MACrC;IACF,CAAE;IAAAc,QAAA,eAEF8B,IAAA,CAACjD,SAAS;MAAAmB,QAAA,eACR8B,IAAA,CAAChD,gBAAgB,CAACoD,QAAQ;QAACC,KAAK,EAAET,cAAe;QAAA1B,QAAA,eAC/C8B,IAAA,CAAC/C,iBAAiB,CAACmD,QAAQ;UAACC,KAAK,EAAER,eAAgB;UAAA3B,QAAA,eACjD8B,IAAA,CAAC9C,cAAc,CAACkD,QAAQ;YAACC,KAAK,EAAEN,YAAa;YAAA7B,QAAA,eAC3C8B,IAAA;cACEM,KAAK,EAAE;gBACLC,OAAO,EAAE,MAAM;gBACfC,MAAM,EAAE,MAAM;gBACdC,KAAK,EAAE,MAAM;gBACbC,QAAQ,EAAE;cACZ,CAAE;cAAAxC,QAAA,EAEDA;YAAQ,CACN;UAAC,CACiB;QAAC,CACA;MAAC,CACJ;IAAC,CACnB;EAAC,CACE,CAAC;AAErB,CACF,CAAC;AAEDb,qBAAqB,CAACsD,WAAW,GAAG,cAAc;;AAElD;AACA,OAAOC,MAAM;AACb,OAAOC,OAAO;AACd,OAAOC,QAAQ;AACf,OAAOC,MAAM;AACb,OAAOC,OAAO;AACd,OAAOC,OAAO;AACd,OAAOC,aAAa;;AAEpB;AAAA,SAAAC,GAAA,IAAAnB,IAAA;AACA,IAAMoB,YAAY,GAAG/D,qBAQpB;;AAED;AACA+D,YAAY,CAACR,MAAM,GAAGA,MAAM;AAC5BQ,YAAY,CAACP,OAAO,GAAGA,OAAO;AAC9BO,YAAY,CAACN,QAAQ,GAAGA,QAAQ;AAChCM,YAAY,CAACL,MAAM,GAAGA,MAAM;AAC5BK,YAAY,CAACJ,OAAO,GAAGA,OAAO;AAC9BI,YAAY,CAACF,aAAa,GAAGA,aAAa;AAC1CE,YAAY,CAACH,OAAO,GAAGA,OAAO;AAE9B,eAAeG,YAAY"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
|
|
2
2
|
var _templateObject, _templateObject2, _templateObject3;
|
|
3
|
-
import { css } from
|
|
3
|
+
import { css } from "@emotion/css";
|
|
4
4
|
import { withBasicStyles } from "../../styles/common";
|
|
5
5
|
export var useStyles = withBasicStyles(function () {
|
|
6
6
|
return {
|
|
7
7
|
providerWrapper: css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: flex;\n height: 100%;\n position: relative;\n overflow: hidden;\n "]))),
|
|
8
|
-
chatbotWrapper: css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n flex: 1;\n display: flex;\n justify-content: center;\n "]))),
|
|
8
|
+
chatbotWrapper: css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n flex: 1;\n display: flex;\n justify-content: center;\n flex-direction: column;\n "]))),
|
|
9
9
|
// 居中显示
|
|
10
10
|
content: css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n flex: 1;\n justify-content: center;\n max-width: 800px;\n "])))
|
|
11
11
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["css","withBasicStyles","useStyles","providerWrapper","_templateObject","_taggedTemplateLiteral","chatbotWrapper","_templateObject2","content","_templateObject3"],"sources":["../../../../src/components/XAdkProvider/styles.tsx"],"sourcesContent":["import { css } from \"@emotion/css\";\nimport { withBasicStyles } from \"@/styles/common\";\n\nexport const useStyles = withBasicStyles(() => ({\n providerWrapper: css`\n display: flex;\n height: 100%;\n position: relative;\n overflow: hidden;\n `,\n\n chatbotWrapper: css`\n flex: 1;\n display: flex;\n justify-content: center;\n flex-direction: column;\n `,\n\n // 居中显示\n content: css`\n flex: 1;\n justify-content: center;\n max-width: 800px;\n `,\n}));\n"],"mappings":";;AAAA,SAASA,GAAG,QAAQ,cAAc;AAClC,SAASC,eAAe;AAExB,OAAO,IAAMC,SAAS,GAAGD,eAAe,CAAC;EAAA,OAAO;IAC9CE,eAAe,EAAEH,GAAG,CAAAI,eAAA,KAAAA,eAAA,GAAAC,sBAAA,mGAKnB;IAEDC,cAAc,EAAEN,GAAG,CAAAO,gBAAA,KAAAA,gBAAA,GAAAF,sBAAA,yGAKlB;IAED;IACAG,OAAO,EAAER,GAAG,CAAAS,gBAAA,KAAAA,gBAAA,GAAAJ,sBAAA;EAKd,CAAC;AAAA,CAAC,CAAC"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
|
|
2
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14;
|
|
3
|
+
import React from "react";
|
|
4
|
+
import { Image, Tooltip, Progress } from "antd";
|
|
5
|
+
import { FileOutlined, FilePdfOutlined, FileWordOutlined, FileExcelOutlined, FilePptOutlined, FileImageOutlined, CloseOutlined } from "@ant-design/icons";
|
|
6
|
+
import { css } from "@emotion/css";
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
// 判断是否是图片文件
|
|
10
|
+
var isImageFile = function isImageFile(file) {
|
|
11
|
+
if (!file.type) return false;
|
|
12
|
+
return file.type.startsWith("image/");
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
// 获取文件扩展名
|
|
16
|
+
var getFileExtension = function getFileExtension(filename) {
|
|
17
|
+
var ext = filename.split(".").pop();
|
|
18
|
+
return ext ? ext.toLowerCase() : "";
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
// 获取文件图标和颜色
|
|
22
|
+
var getFileIcon = function getFileIcon(file) {
|
|
23
|
+
var ext = getFileExtension(file.name);
|
|
24
|
+
|
|
25
|
+
// PDF
|
|
26
|
+
if (ext === "pdf") {
|
|
27
|
+
return {
|
|
28
|
+
icon: /*#__PURE__*/_jsx(FilePdfOutlined, {}),
|
|
29
|
+
color: "#ff4d4f"
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Word
|
|
34
|
+
if (["doc", "docx"].includes(ext)) {
|
|
35
|
+
return {
|
|
36
|
+
icon: /*#__PURE__*/_jsx(FileWordOutlined, {}),
|
|
37
|
+
color: "#1677ff"
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Excel
|
|
42
|
+
if (["xls", "xlsx", "csv"].includes(ext)) {
|
|
43
|
+
return {
|
|
44
|
+
icon: /*#__PURE__*/_jsx(FileExcelOutlined, {}),
|
|
45
|
+
color: "#22b35e"
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// PPT
|
|
50
|
+
if (["ppt", "pptx"].includes(ext)) {
|
|
51
|
+
return {
|
|
52
|
+
icon: /*#__PURE__*/_jsx(FilePptOutlined, {}),
|
|
53
|
+
color: "#ff6e31"
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// 图片
|
|
58
|
+
if (isImageFile(file)) {
|
|
59
|
+
return {
|
|
60
|
+
icon: /*#__PURE__*/_jsx(FileImageOutlined, {}),
|
|
61
|
+
color: "#8c8c8c"
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// 默认
|
|
66
|
+
return {
|
|
67
|
+
icon: /*#__PURE__*/_jsx(FileOutlined, {}),
|
|
68
|
+
color: "#8c8c8c"
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// 格式化文件大小
|
|
73
|
+
var formatFileSize = function formatFileSize(bytes) {
|
|
74
|
+
if (bytes < 1024) return bytes + " B";
|
|
75
|
+
if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(1) + " KB";
|
|
76
|
+
return (bytes / (1024 * 1024)).toFixed(1) + " MB";
|
|
77
|
+
};
|
|
78
|
+
var styles = {
|
|
79
|
+
container: css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n padding: 12px 0;\n display: flex;\n flex-direction: column;\n gap: 12px;\n "]))),
|
|
80
|
+
// 图片九宫格容器
|
|
81
|
+
imageGrid: css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: grid;\n gap: 8px;\n width: fit-content;\n min-width: 80px;\n max-width: 100%;\n /* \u9ED8\u8BA43\u5217\u5E03\u5C40 */\n grid-template-columns: repeat(3, 1fr);\n\n /* \u5355\u5F20\u56FE */\n &[data-count=\"1\"] {\n grid-template-columns: 1fr;\n min-width: 100px;\n max-width: 200px;\n }\n\n /* 2\u5F20\u30014\u5F20 -> 2\u5217 */\n &[data-count=\"2\"],\n &[data-count=\"4\"] {\n grid-template-columns: repeat(2, 1fr);\n min-width: 180px;\n max-width: 240px;\n }\n\n /* 3\u5F20\u30015-9\u5F20 -> 3\u5217 */\n &[data-count=\"3\"],\n &[data-count=\"5\"],\n &[data-count=\"6\"],\n &[data-count=\"7\"],\n &[data-count=\"8\"],\n &[data-count=\"9\"] {\n grid-template-columns: repeat(3, 1fr);\n min-width: 260px;\n max-width: 320px;\n }\n "]))),
|
|
82
|
+
imageItem: css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n position: relative;\n width: 100%;\n min-width: 80px;\n padding-top: 100%; /* 1:1 \u6B63\u65B9\u5F62 */\n height: 0;\n overflow: hidden;\n border-radius: 8px;\n background-color: #f5f5f5;\n border: 1px solid rgba(0, 0, 0, 0.06);\n\n .ant-image {\n position: absolute !important;\n top: 0;\n left: 0;\n width: 100% !important;\n height: 100% !important;\n display: flex !important;\n justify-content: center;\n align-items: center;\n }\n\n img {\n width: 100% !important;\n height: 100% !important;\n object-fit: cover !important;\n display: block !important;\n }\n "]))),
|
|
83
|
+
imageOverlay: css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.05);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10;\n "]))),
|
|
84
|
+
removeBtn: css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n position: absolute;\n top: 4px;\n right: 4px;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.6);\n color: #fff;\n border: none;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 20;\n padding: 0;\n font-size: 10px;\n transition: all 0.2s ease;\n\n &:hover {\n background: rgba(0, 0, 0, 0.8);\n transform: scale(1.1);\n }\n "]))),
|
|
85
|
+
// 文件列表
|
|
86
|
+
fileList: css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n "]))),
|
|
87
|
+
fileCard: css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n position: relative;\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n background: #fafafa;\n border: 1px solid #f0f0f0;\n border-radius: 8px;\n min-width: 200px;\n max-width: 280px;\n min-height: 64px;\n transition: all 0.2s ease;\n\n &:hover {\n background: #f5f5f5;\n border-color: #e0e0e0;\n }\n "]))),
|
|
88
|
+
// 图片缩略图容器
|
|
89
|
+
imageThumbnail: css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n position: relative;\n width: 44px;\n height: 44px;\n flex-shrink: 0;\n border-radius: 4px;\n overflow: hidden;\n background-color: #f5f5f5;\n border: 1px solid rgba(0, 0, 0, 0.06);\n\n .ant-image {\n width: 100% !important;\n height: 100% !important;\n display: flex !important;\n justify-content: center;\n align-items: center;\n }\n\n img {\n width: 100% !important;\n height: 100% !important;\n object-fit: cover !important;\n display: block !important;\n }\n "]))),
|
|
90
|
+
fileIcon: css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n font-size: 24px;\n flex-shrink: 0;\n width: 44px;\n height: 44px;\n display: flex;\n align-items: center;\n justify-content: center;\n "]))),
|
|
91
|
+
fileInfo: css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n flex: 1;\n min-width: 0;\n overflow: hidden;\n "]))),
|
|
92
|
+
fileName: css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n font-size: 13px;\n font-weight: 500;\n color: #262626;\n margin-bottom: 4px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n "]))),
|
|
93
|
+
fileSize: css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n font-size: 11px;\n color: #8c8c8c;\n "]))),
|
|
94
|
+
progress: css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n margin-top: 4px;\n\n .ant-progress-inner {\n height: 4px !important;\n }\n\n .ant-progress-bg {\n height: 4px !important;\n }\n "]))),
|
|
95
|
+
fileRemoveBtn: css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n position: absolute;\n top: -6px;\n right: -6px;\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.75);\n color: #fff;\n border: none;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 1;\n padding: 0;\n font-size: 10px;\n transition: all 0.2s ease;\n\n &:hover {\n background: rgba(0, 0, 0, 0.9);\n transform: scale(1.1);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n "])))
|
|
96
|
+
};
|
|
97
|
+
var FileGallery = function FileGallery(_ref) {
|
|
98
|
+
var files = _ref.files,
|
|
99
|
+
onRemove = _ref.onRemove;
|
|
100
|
+
if (files.length === 0) return null;
|
|
101
|
+
|
|
102
|
+
// 调试日志
|
|
103
|
+
// if (process.env.NODE_ENV === "development") {
|
|
104
|
+
// console.log(
|
|
105
|
+
// "[FileGallery] Rendering files:",
|
|
106
|
+
// files.map((f) => ({
|
|
107
|
+
// id: f.id,
|
|
108
|
+
// name: f.name,
|
|
109
|
+
// type: f.type,
|
|
110
|
+
// status: f.status,
|
|
111
|
+
// hasFile: !!f.file,
|
|
112
|
+
// response: f.response,
|
|
113
|
+
// })),
|
|
114
|
+
// );
|
|
115
|
+
// }
|
|
116
|
+
|
|
117
|
+
return /*#__PURE__*/_jsx("div", {
|
|
118
|
+
className: styles.container,
|
|
119
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
120
|
+
className: styles.fileList,
|
|
121
|
+
children: /*#__PURE__*/_jsx(Image.PreviewGroup, {
|
|
122
|
+
children: files.map(function (file) {
|
|
123
|
+
var isImage = isImageFile(file);
|
|
124
|
+
if (isImage) {
|
|
125
|
+
var _file$response, _file$response2;
|
|
126
|
+
// 图片卡片
|
|
127
|
+
var url = ((_file$response = file.response) === null || _file$response === void 0 ? void 0 : _file$response.fileUrl) || ((_file$response2 = file.response) === null || _file$response2 === void 0 ? void 0 : _file$response2.tempUrl) || file.tempUrl || (file.file ? URL.createObjectURL(file.file) : "");
|
|
128
|
+
|
|
129
|
+
// if (process.env.NODE_ENV === 'development') {
|
|
130
|
+
// console.log('[FileGallery] Image URL for', file.name, ':', {
|
|
131
|
+
// url,
|
|
132
|
+
// 'response.fileUrl': file.response?.fileUrl,
|
|
133
|
+
// 'response.tempUrl': file.response?.tempUrl,
|
|
134
|
+
// 'tempUrl': file.tempUrl,
|
|
135
|
+
// 'hasFile': !!file.file,
|
|
136
|
+
// });
|
|
137
|
+
// }
|
|
138
|
+
|
|
139
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
140
|
+
className: styles.fileCard,
|
|
141
|
+
children: [/*#__PURE__*/_jsxs("div", {
|
|
142
|
+
className: styles.imageThumbnail,
|
|
143
|
+
children: [/*#__PURE__*/_jsx(Image, {
|
|
144
|
+
src: url,
|
|
145
|
+
alt: file.name,
|
|
146
|
+
fallback: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mN8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==",
|
|
147
|
+
preview: {
|
|
148
|
+
src: url
|
|
149
|
+
}
|
|
150
|
+
}), file.status === "uploading" && /*#__PURE__*/_jsx("div", {
|
|
151
|
+
className: styles.imageOverlay,
|
|
152
|
+
children: /*#__PURE__*/_jsx(Progress, {
|
|
153
|
+
type: "circle",
|
|
154
|
+
percent: file.progress,
|
|
155
|
+
size: 30,
|
|
156
|
+
strokeColor: "#1677ff"
|
|
157
|
+
})
|
|
158
|
+
})]
|
|
159
|
+
}), /*#__PURE__*/_jsxs("div", {
|
|
160
|
+
className: styles.fileInfo,
|
|
161
|
+
children: [/*#__PURE__*/_jsx(Tooltip, {
|
|
162
|
+
title: file.name,
|
|
163
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
164
|
+
className: styles.fileName,
|
|
165
|
+
children: file.name.length > 15 ? "".concat(file.name.substring(0, 15), "...") : file.name
|
|
166
|
+
})
|
|
167
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
168
|
+
className: styles.fileSize,
|
|
169
|
+
children: formatFileSize(file.size)
|
|
170
|
+
})]
|
|
171
|
+
}), /*#__PURE__*/_jsx("button", {
|
|
172
|
+
className: styles.fileRemoveBtn,
|
|
173
|
+
onClick: function onClick() {
|
|
174
|
+
return onRemove(file.id);
|
|
175
|
+
},
|
|
176
|
+
disabled: file.status === "uploading",
|
|
177
|
+
"aria-label": "\u5220\u9664\u6587\u4EF6",
|
|
178
|
+
children: /*#__PURE__*/_jsx(CloseOutlined, {})
|
|
179
|
+
})]
|
|
180
|
+
}, file.id);
|
|
181
|
+
} else {
|
|
182
|
+
// 文件卡片
|
|
183
|
+
var _getFileIcon = getFileIcon(file),
|
|
184
|
+
icon = _getFileIcon.icon,
|
|
185
|
+
color = _getFileIcon.color;
|
|
186
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
187
|
+
className: styles.fileCard,
|
|
188
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
189
|
+
className: styles.fileIcon,
|
|
190
|
+
style: {
|
|
191
|
+
color: color
|
|
192
|
+
},
|
|
193
|
+
children: icon
|
|
194
|
+
}), /*#__PURE__*/_jsxs("div", {
|
|
195
|
+
className: styles.fileInfo,
|
|
196
|
+
children: [/*#__PURE__*/_jsx(Tooltip, {
|
|
197
|
+
title: file.name,
|
|
198
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
199
|
+
className: styles.fileName,
|
|
200
|
+
children: file.name.length > 15 ? "".concat(file.name.substring(0, 15), "...") : file.name
|
|
201
|
+
})
|
|
202
|
+
}), file.status === "uploading" ? /*#__PURE__*/_jsx(Progress, {
|
|
203
|
+
percent: file.progress,
|
|
204
|
+
size: "small",
|
|
205
|
+
showInfo: false,
|
|
206
|
+
strokeColor: "#1677ff",
|
|
207
|
+
className: styles.progress
|
|
208
|
+
}) : /*#__PURE__*/_jsx("div", {
|
|
209
|
+
className: styles.fileSize,
|
|
210
|
+
children: formatFileSize(file.size)
|
|
211
|
+
}), file.status === "error" && file.errorMessage && /*#__PURE__*/_jsx("div", {
|
|
212
|
+
style: {
|
|
213
|
+
fontSize: "11px",
|
|
214
|
+
color: "#ff4d4f",
|
|
215
|
+
marginTop: "2px"
|
|
216
|
+
},
|
|
217
|
+
children: file.errorMessage
|
|
218
|
+
})]
|
|
219
|
+
}), /*#__PURE__*/_jsx("button", {
|
|
220
|
+
className: styles.fileRemoveBtn,
|
|
221
|
+
onClick: function onClick() {
|
|
222
|
+
return onRemove(file.id);
|
|
223
|
+
},
|
|
224
|
+
disabled: file.status === "uploading",
|
|
225
|
+
"aria-label": "\u5220\u9664\u6587\u4EF6",
|
|
226
|
+
children: /*#__PURE__*/_jsx(CloseOutlined, {})
|
|
227
|
+
})]
|
|
228
|
+
}, file.id);
|
|
229
|
+
}
|
|
230
|
+
})
|
|
231
|
+
})
|
|
232
|
+
})
|
|
233
|
+
});
|
|
234
|
+
};
|
|
235
|
+
export default FileGallery;
|
|
236
|
+
//# sourceMappingURL=FileGallery.js.map
|