@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,381 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/components/XAdkSender/FileGallery.tsx
|
|
20
|
+
var FileGallery_exports = {};
|
|
21
|
+
__export(FileGallery_exports, {
|
|
22
|
+
default: () => FileGallery_default
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(FileGallery_exports);
|
|
25
|
+
var import_antd = require("antd");
|
|
26
|
+
var import_icons = require("@ant-design/icons");
|
|
27
|
+
var import_css = require("@emotion/css");
|
|
28
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
29
|
+
var isImageFile = (file) => {
|
|
30
|
+
if (!file.type)
|
|
31
|
+
return false;
|
|
32
|
+
return file.type.startsWith("image/");
|
|
33
|
+
};
|
|
34
|
+
var getFileExtension = (filename) => {
|
|
35
|
+
const ext = filename.split(".").pop();
|
|
36
|
+
return ext ? ext.toLowerCase() : "";
|
|
37
|
+
};
|
|
38
|
+
var getFileIcon = (file) => {
|
|
39
|
+
const ext = getFileExtension(file.name);
|
|
40
|
+
if (ext === "pdf") {
|
|
41
|
+
return { icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons.FilePdfOutlined, {}), color: "#ff4d4f" };
|
|
42
|
+
}
|
|
43
|
+
if (["doc", "docx"].includes(ext)) {
|
|
44
|
+
return { icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons.FileWordOutlined, {}), color: "#1677ff" };
|
|
45
|
+
}
|
|
46
|
+
if (["xls", "xlsx", "csv"].includes(ext)) {
|
|
47
|
+
return { icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons.FileExcelOutlined, {}), color: "#22b35e" };
|
|
48
|
+
}
|
|
49
|
+
if (["ppt", "pptx"].includes(ext)) {
|
|
50
|
+
return { icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons.FilePptOutlined, {}), color: "#ff6e31" };
|
|
51
|
+
}
|
|
52
|
+
if (isImageFile(file)) {
|
|
53
|
+
return { icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons.FileImageOutlined, {}), color: "#8c8c8c" };
|
|
54
|
+
}
|
|
55
|
+
return { icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons.FileOutlined, {}), color: "#8c8c8c" };
|
|
56
|
+
};
|
|
57
|
+
var formatFileSize = (bytes) => {
|
|
58
|
+
if (bytes < 1024)
|
|
59
|
+
return bytes + " B";
|
|
60
|
+
if (bytes < 1024 * 1024)
|
|
61
|
+
return (bytes / 1024).toFixed(1) + " KB";
|
|
62
|
+
return (bytes / (1024 * 1024)).toFixed(1) + " MB";
|
|
63
|
+
};
|
|
64
|
+
var styles = {
|
|
65
|
+
container: import_css.css`
|
|
66
|
+
padding: 12px 0;
|
|
67
|
+
display: flex;
|
|
68
|
+
flex-direction: column;
|
|
69
|
+
gap: 12px;
|
|
70
|
+
`,
|
|
71
|
+
// 图片九宫格容器
|
|
72
|
+
imageGrid: import_css.css`
|
|
73
|
+
display: grid;
|
|
74
|
+
gap: 8px;
|
|
75
|
+
width: fit-content;
|
|
76
|
+
min-width: 80px;
|
|
77
|
+
max-width: 100%;
|
|
78
|
+
/* 默认3列布局 */
|
|
79
|
+
grid-template-columns: repeat(3, 1fr);
|
|
80
|
+
|
|
81
|
+
/* 单张图 */
|
|
82
|
+
&[data-count="1"] {
|
|
83
|
+
grid-template-columns: 1fr;
|
|
84
|
+
min-width: 100px;
|
|
85
|
+
max-width: 200px;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/* 2张、4张 -> 2列 */
|
|
89
|
+
&[data-count="2"],
|
|
90
|
+
&[data-count="4"] {
|
|
91
|
+
grid-template-columns: repeat(2, 1fr);
|
|
92
|
+
min-width: 180px;
|
|
93
|
+
max-width: 240px;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* 3张、5-9张 -> 3列 */
|
|
97
|
+
&[data-count="3"],
|
|
98
|
+
&[data-count="5"],
|
|
99
|
+
&[data-count="6"],
|
|
100
|
+
&[data-count="7"],
|
|
101
|
+
&[data-count="8"],
|
|
102
|
+
&[data-count="9"] {
|
|
103
|
+
grid-template-columns: repeat(3, 1fr);
|
|
104
|
+
min-width: 260px;
|
|
105
|
+
max-width: 320px;
|
|
106
|
+
}
|
|
107
|
+
`,
|
|
108
|
+
imageItem: import_css.css`
|
|
109
|
+
position: relative;
|
|
110
|
+
width: 100%;
|
|
111
|
+
min-width: 80px;
|
|
112
|
+
padding-top: 100%; /* 1:1 正方形 */
|
|
113
|
+
height: 0;
|
|
114
|
+
overflow: hidden;
|
|
115
|
+
border-radius: 8px;
|
|
116
|
+
background-color: #f5f5f5;
|
|
117
|
+
border: 1px solid rgba(0, 0, 0, 0.06);
|
|
118
|
+
|
|
119
|
+
.ant-image {
|
|
120
|
+
position: absolute !important;
|
|
121
|
+
top: 0;
|
|
122
|
+
left: 0;
|
|
123
|
+
width: 100% !important;
|
|
124
|
+
height: 100% !important;
|
|
125
|
+
display: flex !important;
|
|
126
|
+
justify-content: center;
|
|
127
|
+
align-items: center;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
img {
|
|
131
|
+
width: 100% !important;
|
|
132
|
+
height: 100% !important;
|
|
133
|
+
object-fit: cover !important;
|
|
134
|
+
display: block !important;
|
|
135
|
+
}
|
|
136
|
+
`,
|
|
137
|
+
imageOverlay: import_css.css`
|
|
138
|
+
position: absolute;
|
|
139
|
+
top: 0;
|
|
140
|
+
left: 0;
|
|
141
|
+
right: 0;
|
|
142
|
+
bottom: 0;
|
|
143
|
+
background: rgba(0, 0, 0, 0.05);
|
|
144
|
+
display: flex;
|
|
145
|
+
align-items: center;
|
|
146
|
+
justify-content: center;
|
|
147
|
+
z-index: 10;
|
|
148
|
+
`,
|
|
149
|
+
removeBtn: import_css.css`
|
|
150
|
+
position: absolute;
|
|
151
|
+
top: 4px;
|
|
152
|
+
right: 4px;
|
|
153
|
+
width: 20px;
|
|
154
|
+
height: 20px;
|
|
155
|
+
border-radius: 50%;
|
|
156
|
+
background: rgba(0, 0, 0, 0.6);
|
|
157
|
+
color: #fff;
|
|
158
|
+
border: none;
|
|
159
|
+
display: flex;
|
|
160
|
+
align-items: center;
|
|
161
|
+
justify-content: center;
|
|
162
|
+
cursor: pointer;
|
|
163
|
+
z-index: 20;
|
|
164
|
+
padding: 0;
|
|
165
|
+
font-size: 10px;
|
|
166
|
+
transition: all 0.2s ease;
|
|
167
|
+
|
|
168
|
+
&:hover {
|
|
169
|
+
background: rgba(0, 0, 0, 0.8);
|
|
170
|
+
transform: scale(1.1);
|
|
171
|
+
}
|
|
172
|
+
`,
|
|
173
|
+
// 文件列表
|
|
174
|
+
fileList: import_css.css`
|
|
175
|
+
display: flex;
|
|
176
|
+
flex-wrap: wrap;
|
|
177
|
+
gap: 8px;
|
|
178
|
+
`,
|
|
179
|
+
fileCard: import_css.css`
|
|
180
|
+
position: relative;
|
|
181
|
+
display: flex;
|
|
182
|
+
align-items: center;
|
|
183
|
+
gap: 10px;
|
|
184
|
+
padding: 10px 12px;
|
|
185
|
+
background: #fafafa;
|
|
186
|
+
border: 1px solid #f0f0f0;
|
|
187
|
+
border-radius: 8px;
|
|
188
|
+
min-width: 200px;
|
|
189
|
+
max-width: 280px;
|
|
190
|
+
min-height: 64px;
|
|
191
|
+
transition: all 0.2s ease;
|
|
192
|
+
|
|
193
|
+
&:hover {
|
|
194
|
+
background: #f5f5f5;
|
|
195
|
+
border-color: #e0e0e0;
|
|
196
|
+
}
|
|
197
|
+
`,
|
|
198
|
+
// 图片缩略图容器
|
|
199
|
+
imageThumbnail: import_css.css`
|
|
200
|
+
position: relative;
|
|
201
|
+
width: 44px;
|
|
202
|
+
height: 44px;
|
|
203
|
+
flex-shrink: 0;
|
|
204
|
+
border-radius: 4px;
|
|
205
|
+
overflow: hidden;
|
|
206
|
+
background-color: #f5f5f5;
|
|
207
|
+
border: 1px solid rgba(0, 0, 0, 0.06);
|
|
208
|
+
|
|
209
|
+
.ant-image {
|
|
210
|
+
width: 100% !important;
|
|
211
|
+
height: 100% !important;
|
|
212
|
+
display: flex !important;
|
|
213
|
+
justify-content: center;
|
|
214
|
+
align-items: center;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
img {
|
|
218
|
+
width: 100% !important;
|
|
219
|
+
height: 100% !important;
|
|
220
|
+
object-fit: cover !important;
|
|
221
|
+
display: block !important;
|
|
222
|
+
}
|
|
223
|
+
`,
|
|
224
|
+
fileIcon: import_css.css`
|
|
225
|
+
font-size: 24px;
|
|
226
|
+
flex-shrink: 0;
|
|
227
|
+
width: 44px;
|
|
228
|
+
height: 44px;
|
|
229
|
+
display: flex;
|
|
230
|
+
align-items: center;
|
|
231
|
+
justify-content: center;
|
|
232
|
+
`,
|
|
233
|
+
fileInfo: import_css.css`
|
|
234
|
+
flex: 1;
|
|
235
|
+
min-width: 0;
|
|
236
|
+
overflow: hidden;
|
|
237
|
+
`,
|
|
238
|
+
fileName: import_css.css`
|
|
239
|
+
font-size: 13px;
|
|
240
|
+
font-weight: 500;
|
|
241
|
+
color: #262626;
|
|
242
|
+
margin-bottom: 4px;
|
|
243
|
+
overflow: hidden;
|
|
244
|
+
text-overflow: ellipsis;
|
|
245
|
+
white-space: nowrap;
|
|
246
|
+
`,
|
|
247
|
+
fileSize: import_css.css`
|
|
248
|
+
font-size: 11px;
|
|
249
|
+
color: #8c8c8c;
|
|
250
|
+
`,
|
|
251
|
+
progress: import_css.css`
|
|
252
|
+
margin-top: 4px;
|
|
253
|
+
|
|
254
|
+
.ant-progress-inner {
|
|
255
|
+
height: 4px !important;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.ant-progress-bg {
|
|
259
|
+
height: 4px !important;
|
|
260
|
+
}
|
|
261
|
+
`,
|
|
262
|
+
fileRemoveBtn: import_css.css`
|
|
263
|
+
position: absolute;
|
|
264
|
+
top: -6px;
|
|
265
|
+
right: -6px;
|
|
266
|
+
width: 18px;
|
|
267
|
+
height: 18px;
|
|
268
|
+
border-radius: 50%;
|
|
269
|
+
background: rgba(0, 0, 0, 0.75);
|
|
270
|
+
color: #fff;
|
|
271
|
+
border: none;
|
|
272
|
+
display: flex;
|
|
273
|
+
align-items: center;
|
|
274
|
+
justify-content: center;
|
|
275
|
+
cursor: pointer;
|
|
276
|
+
z-index: 1;
|
|
277
|
+
padding: 0;
|
|
278
|
+
font-size: 10px;
|
|
279
|
+
transition: all 0.2s ease;
|
|
280
|
+
|
|
281
|
+
&:hover {
|
|
282
|
+
background: rgba(0, 0, 0, 0.9);
|
|
283
|
+
transform: scale(1.1);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
&:disabled {
|
|
287
|
+
opacity: 0.5;
|
|
288
|
+
cursor: not-allowed;
|
|
289
|
+
}
|
|
290
|
+
`
|
|
291
|
+
};
|
|
292
|
+
var FileGallery = ({ files, onRemove }) => {
|
|
293
|
+
if (files.length === 0)
|
|
294
|
+
return null;
|
|
295
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: styles.container, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: styles.fileList, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Image.PreviewGroup, { children: files.map((file) => {
|
|
296
|
+
var _a, _b;
|
|
297
|
+
const isImage = isImageFile(file);
|
|
298
|
+
if (isImage) {
|
|
299
|
+
const url = ((_a = file.response) == null ? void 0 : _a.fileUrl) || ((_b = file.response) == null ? void 0 : _b.tempUrl) || file.tempUrl || (file.file ? URL.createObjectURL(file.file) : "");
|
|
300
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: styles.fileCard, children: [
|
|
301
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: styles.imageThumbnail, children: [
|
|
302
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
303
|
+
import_antd.Image,
|
|
304
|
+
{
|
|
305
|
+
src: url,
|
|
306
|
+
alt: file.name,
|
|
307
|
+
fallback: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mN8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==",
|
|
308
|
+
preview: {
|
|
309
|
+
src: url
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
),
|
|
313
|
+
file.status === "uploading" && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: styles.imageOverlay, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
314
|
+
import_antd.Progress,
|
|
315
|
+
{
|
|
316
|
+
type: "circle",
|
|
317
|
+
percent: file.progress,
|
|
318
|
+
size: 30,
|
|
319
|
+
strokeColor: "#1677ff"
|
|
320
|
+
}
|
|
321
|
+
) })
|
|
322
|
+
] }),
|
|
323
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: styles.fileInfo, children: [
|
|
324
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Tooltip, { title: file.name, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: styles.fileName, children: file.name.length > 15 ? `${file.name.substring(0, 15)}...` : file.name }) }),
|
|
325
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: styles.fileSize, children: formatFileSize(file.size) })
|
|
326
|
+
] }),
|
|
327
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
328
|
+
"button",
|
|
329
|
+
{
|
|
330
|
+
className: styles.fileRemoveBtn,
|
|
331
|
+
onClick: () => onRemove(file.id),
|
|
332
|
+
disabled: file.status === "uploading",
|
|
333
|
+
"aria-label": "删除文件",
|
|
334
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons.CloseOutlined, {})
|
|
335
|
+
}
|
|
336
|
+
)
|
|
337
|
+
] }, file.id);
|
|
338
|
+
} else {
|
|
339
|
+
const { icon, color } = getFileIcon(file);
|
|
340
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: styles.fileCard, children: [
|
|
341
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: styles.fileIcon, style: { color }, children: icon }),
|
|
342
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: styles.fileInfo, children: [
|
|
343
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Tooltip, { title: file.name, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: styles.fileName, children: file.name.length > 15 ? `${file.name.substring(0, 15)}...` : file.name }) }),
|
|
344
|
+
file.status === "uploading" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
345
|
+
import_antd.Progress,
|
|
346
|
+
{
|
|
347
|
+
percent: file.progress,
|
|
348
|
+
size: "small",
|
|
349
|
+
showInfo: false,
|
|
350
|
+
strokeColor: "#1677ff",
|
|
351
|
+
className: styles.progress
|
|
352
|
+
}
|
|
353
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: styles.fileSize, children: formatFileSize(file.size) }),
|
|
354
|
+
file.status === "error" && file.errorMessage && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
355
|
+
"div",
|
|
356
|
+
{
|
|
357
|
+
style: {
|
|
358
|
+
fontSize: "11px",
|
|
359
|
+
color: "#ff4d4f",
|
|
360
|
+
marginTop: "2px"
|
|
361
|
+
},
|
|
362
|
+
children: file.errorMessage
|
|
363
|
+
}
|
|
364
|
+
)
|
|
365
|
+
] }),
|
|
366
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
367
|
+
"button",
|
|
368
|
+
{
|
|
369
|
+
className: styles.fileRemoveBtn,
|
|
370
|
+
onClick: () => onRemove(file.id),
|
|
371
|
+
disabled: file.status === "uploading",
|
|
372
|
+
"aria-label": "删除文件",
|
|
373
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons.CloseOutlined, {})
|
|
374
|
+
}
|
|
375
|
+
)
|
|
376
|
+
] }, file.id);
|
|
377
|
+
}
|
|
378
|
+
}) }) }) });
|
|
379
|
+
};
|
|
380
|
+
var FileGallery_default = FileGallery;
|
|
381
|
+
//# sourceMappingURL=FileGallery.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/XAdkSender/FileGallery.tsx"],
|
|
4
|
+
"sourcesContent": ["import React from \"react\";\nimport { Image, Tooltip, Progress } from \"antd\";\nimport {\n FileOutlined,\n FilePdfOutlined,\n FileWordOutlined,\n FileExcelOutlined,\n FilePptOutlined,\n FileImageOutlined,\n CloseOutlined,\n} from \"@ant-design/icons\";\nimport { LocalFile } from \"../../types/XAdkSender\";\nimport { css } from \"@emotion/css\";\n\ninterface FileGalleryProps {\n files: LocalFile[];\n onRemove: (id: string) => void;\n}\n\n// 判断是否是图片文件\nconst isImageFile = (file: LocalFile): boolean => {\n if (!file.type) return false;\n return file.type.startsWith(\"image/\");\n};\n\n// 获取文件扩展名\nconst getFileExtension = (filename: string): string => {\n const ext = filename.split(\".\").pop();\n return ext ? ext.toLowerCase() : \"\";\n};\n\n// 获取文件图标和颜色\nconst getFileIcon = (\n file: LocalFile,\n): { icon: React.ReactNode; color: string } => {\n const ext = getFileExtension(file.name);\n\n // PDF\n if (ext === \"pdf\") {\n return { icon: <FilePdfOutlined />, color: \"#ff4d4f\" };\n }\n\n // Word\n if ([\"doc\", \"docx\"].includes(ext)) {\n return { icon: <FileWordOutlined />, color: \"#1677ff\" };\n }\n\n // Excel\n if ([\"xls\", \"xlsx\", \"csv\"].includes(ext)) {\n return { icon: <FileExcelOutlined />, color: \"#22b35e\" };\n }\n\n // PPT\n if ([\"ppt\", \"pptx\"].includes(ext)) {\n return { icon: <FilePptOutlined />, color: \"#ff6e31\" };\n }\n\n // 图片\n if (isImageFile(file)) {\n return { icon: <FileImageOutlined />, color: \"#8c8c8c\" };\n }\n\n // 默认\n return { icon: <FileOutlined />, color: \"#8c8c8c\" };\n};\n\n// 格式化文件大小\nconst formatFileSize = (bytes: number): string => {\n if (bytes < 1024) return bytes + \" B\";\n if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(1) + \" KB\";\n return (bytes / (1024 * 1024)).toFixed(1) + \" MB\";\n};\n\nconst styles = {\n container: css`\n padding: 12px 0;\n display: flex;\n flex-direction: column;\n gap: 12px;\n `,\n\n // 图片九宫格容器\n imageGrid: css`\n display: grid;\n gap: 8px;\n width: fit-content;\n min-width: 80px;\n max-width: 100%;\n /* 默认3列布局 */\n grid-template-columns: repeat(3, 1fr);\n\n /* 单张图 */\n &[data-count=\"1\"] {\n grid-template-columns: 1fr;\n min-width: 100px;\n max-width: 200px;\n }\n\n /* 2张、4张 -> 2列 */\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张、5-9张 -> 3列 */\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 `,\n\n imageItem: css`\n position: relative;\n width: 100%;\n min-width: 80px;\n padding-top: 100%; /* 1:1 正方形 */\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 `,\n\n imageOverlay: css`\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 `,\n\n removeBtn: css`\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 `,\n\n // 文件列表\n fileList: css`\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n `,\n\n fileCard: css`\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 `,\n\n // 图片缩略图容器\n imageThumbnail: css`\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 `,\n\n fileIcon: css`\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 `,\n\n fileInfo: css`\n flex: 1;\n min-width: 0;\n overflow: hidden;\n `,\n\n fileName: css`\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 `,\n\n fileSize: css`\n font-size: 11px;\n color: #8c8c8c;\n `,\n\n progress: css`\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 `,\n\n fileRemoveBtn: css`\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 `,\n};\n\nconst FileGallery: React.FC<FileGalleryProps> = ({ files, onRemove }) => {\n if (files.length === 0) return null;\n\n // 调试日志\n // if (process.env.NODE_ENV === \"development\") {\n // console.log(\n // \"[FileGallery] Rendering files:\",\n // files.map((f) => ({\n // id: f.id,\n // name: f.name,\n // type: f.type,\n // status: f.status,\n // hasFile: !!f.file,\n // response: f.response,\n // })),\n // );\n // }\n\n return (\n <div className={styles.container}>\n {/* 统一的文件列表 */}\n <div className={styles.fileList}>\n <Image.PreviewGroup>\n {files.map((file) => {\n const isImage = isImageFile(file);\n\n if (isImage) {\n // 图片卡片\n const url =\n file.response?.fileUrl ||\n file.response?.tempUrl ||\n file.tempUrl ||\n (file.file ? URL.createObjectURL(file.file) : \"\");\n\n // if (process.env.NODE_ENV === 'development') {\n // console.log('[FileGallery] Image URL for', file.name, ':', {\n // url,\n // 'response.fileUrl': file.response?.fileUrl,\n // 'response.tempUrl': file.response?.tempUrl,\n // 'tempUrl': file.tempUrl,\n // 'hasFile': !!file.file,\n // });\n // }\n\n return (\n <div key={file.id} className={styles.fileCard}>\n {/* 图片缩略图 */}\n <div className={styles.imageThumbnail}>\n <Image\n src={url}\n alt={file.name}\n fallback=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mN8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==\"\n preview={{\n src: url,\n }}\n />\n\n {/* 上传进度遮罩 */}\n {file.status === \"uploading\" && (\n <div className={styles.imageOverlay}>\n <Progress\n type=\"circle\"\n percent={file.progress}\n size={30}\n strokeColor=\"#1677ff\"\n />\n </div>\n )}\n </div>\n\n {/* 文件信息 */}\n <div className={styles.fileInfo}>\n <Tooltip title={file.name}>\n <div className={styles.fileName}>\n {file.name.length > 15\n ? `${file.name.substring(0, 15)}...`\n : file.name}\n </div>\n </Tooltip>\n <div className={styles.fileSize}>\n {formatFileSize(file.size)}\n </div>\n </div>\n\n {/* 删除按钮 */}\n <button\n className={styles.fileRemoveBtn}\n onClick={() => onRemove(file.id)}\n disabled={file.status === \"uploading\"}\n aria-label=\"删除文件\"\n >\n <CloseOutlined />\n </button>\n </div>\n );\n } else {\n // 文件卡片\n const { icon, color } = getFileIcon(file);\n\n return (\n <div key={file.id} className={styles.fileCard}>\n <div className={styles.fileIcon} style={{ color }}>\n {icon}\n </div>\n\n <div className={styles.fileInfo}>\n <Tooltip title={file.name}>\n <div className={styles.fileName}>\n {file.name.length > 15\n ? `${file.name.substring(0, 15)}...`\n : file.name}\n </div>\n </Tooltip>\n\n {file.status === \"uploading\" ? (\n <Progress\n percent={file.progress}\n size=\"small\"\n showInfo={false}\n strokeColor=\"#1677ff\"\n className={styles.progress}\n />\n ) : (\n <div className={styles.fileSize}>\n {formatFileSize(file.size)}\n </div>\n )}\n\n {file.status === \"error\" && file.errorMessage && (\n <div\n style={{\n fontSize: \"11px\",\n color: \"#ff4d4f\",\n marginTop: \"2px\",\n }}\n >\n {file.errorMessage}\n </div>\n )}\n </div>\n\n <button\n className={styles.fileRemoveBtn}\n onClick={() => onRemove(file.id)}\n disabled={file.status === \"uploading\"}\n aria-label=\"删除文件\"\n >\n <CloseOutlined />\n </button>\n </div>\n );\n }\n })}\n </Image.PreviewGroup>\n </div>\n </div>\n );\n};\n\nexport default FileGallery;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
1
2
|
var __defProp = Object.defineProperty;
|
|
2
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
4
6
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
7
|
var __export = (target, all) => {
|
|
6
8
|
for (var name in all)
|
|
@@ -14,6 +16,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
14
16
|
}
|
|
15
17
|
return to;
|
|
16
18
|
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
17
27
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
28
|
|
|
19
29
|
// src/components/XAdkSender/index.tsx
|
|
@@ -26,14 +36,13 @@ var import_react = require("react");
|
|
|
26
36
|
var import_antd = require("antd");
|
|
27
37
|
var import_icons = require("@ant-design/icons");
|
|
28
38
|
var import_styles = require("./styles");
|
|
39
|
+
var import_FileGallery = __toESM(require("./FileGallery"));
|
|
29
40
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
30
|
-
var FILE_ICONS = {
|
|
31
|
-
// ... 保持不变
|
|
32
|
-
};
|
|
33
41
|
var XAdkSender = ({
|
|
34
42
|
clearBtnShow = true,
|
|
35
43
|
allowUpload = false,
|
|
36
44
|
loading = false,
|
|
45
|
+
disabled = false,
|
|
37
46
|
uploadRequest = () => {
|
|
38
47
|
},
|
|
39
48
|
onClear,
|
|
@@ -43,7 +52,11 @@ var XAdkSender = ({
|
|
|
43
52
|
onFilesChange,
|
|
44
53
|
maxFileSize = 10,
|
|
45
54
|
allowedFileTypes = ["image/*", "application/pdf", "text/plain"],
|
|
46
|
-
maxFiles = 5
|
|
55
|
+
maxFiles = 5,
|
|
56
|
+
suffix,
|
|
57
|
+
header,
|
|
58
|
+
prefix,
|
|
59
|
+
footer
|
|
47
60
|
}) => {
|
|
48
61
|
const styles = (0, import_styles.useStyles)();
|
|
49
62
|
const [value, setValue] = (0, import_react.useState)("");
|
|
@@ -55,16 +68,6 @@ var XAdkSender = ({
|
|
|
55
68
|
const generateId = () => {
|
|
56
69
|
return Date.now().toString(36) + Math.random().toString(36).substr(2);
|
|
57
70
|
};
|
|
58
|
-
const getFileIcon = (fileType) => {
|
|
59
|
-
return FILE_ICONS[fileType] || FILE_ICONS.default;
|
|
60
|
-
};
|
|
61
|
-
const formatFileSize = (bytes) => {
|
|
62
|
-
if (bytes < 1024)
|
|
63
|
-
return bytes + " Bytes";
|
|
64
|
-
if (bytes < 1024 * 1024)
|
|
65
|
-
return (bytes / 1024).toFixed(1) + " KB";
|
|
66
|
-
return (bytes / (1024 * 1024)).toFixed(1) + " MB";
|
|
67
|
-
};
|
|
68
71
|
const checkFileType = (file) => {
|
|
69
72
|
if (!allowedFileTypes.length)
|
|
70
73
|
return true;
|
|
@@ -301,34 +304,80 @@ var XAdkSender = ({
|
|
|
301
304
|
const renderFileList = () => {
|
|
302
305
|
if (files.length === 0)
|
|
303
306
|
return null;
|
|
304
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
307
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
308
|
+
import_FileGallery.default,
|
|
309
|
+
{
|
|
310
|
+
files,
|
|
311
|
+
onRemove: handleRemoveFile
|
|
312
|
+
}
|
|
313
|
+
);
|
|
314
|
+
};
|
|
315
|
+
const containerClass = `${styles.container} ${isDragOver ? "drag-over" : ""}`;
|
|
316
|
+
const uploading = files.some((f) => f.status === "uploading");
|
|
317
|
+
const isDisabled = disabled || uploading || loading;
|
|
318
|
+
const SendButton = (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Tooltip, { title: loading ? "停止生成" : "发送消息", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
319
|
+
"button",
|
|
320
|
+
{
|
|
321
|
+
className: `${styles.iconButton} ${styles.sendButton} ${loading ? "stop" : ""}`,
|
|
322
|
+
onClick: loading ? onStop : handleSubmit,
|
|
323
|
+
disabled: uploading || disabled,
|
|
324
|
+
"aria-label": loading ? "停止生成" : "发送消息",
|
|
325
|
+
...props,
|
|
326
|
+
children: loading ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons.LoadingOutlined, {}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons.ArrowUpOutlined, {})
|
|
327
|
+
}
|
|
328
|
+
) });
|
|
329
|
+
const UploadButton = (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Tooltip, { title: "上传文件", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
330
|
+
"button",
|
|
331
|
+
{
|
|
332
|
+
className: `${styles.iconButton} ${styles.uploadButton}`,
|
|
333
|
+
onClick: triggerFileSelect,
|
|
334
|
+
disabled: isDisabled,
|
|
335
|
+
"aria-label": "上传文件",
|
|
336
|
+
...props,
|
|
337
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons.PaperClipOutlined, {})
|
|
338
|
+
}
|
|
339
|
+
) });
|
|
340
|
+
const ClearButton = (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
341
|
+
import_antd.Popconfirm,
|
|
342
|
+
{
|
|
343
|
+
title: "确定要清空聊天记录吗?",
|
|
344
|
+
onConfirm: onClear,
|
|
345
|
+
placement: "top",
|
|
346
|
+
okText: "确定",
|
|
347
|
+
cancelText: "取消",
|
|
348
|
+
disabled: isDisabled,
|
|
349
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
319
350
|
"button",
|
|
320
351
|
{
|
|
321
|
-
className: styles.
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons.
|
|
352
|
+
className: `${styles.iconButton} ${styles.clearButton}`,
|
|
353
|
+
disabled: isDisabled,
|
|
354
|
+
"aria-label": "清空聊天记录",
|
|
355
|
+
...props,
|
|
356
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons.ClearOutlined, {})
|
|
326
357
|
}
|
|
327
358
|
)
|
|
328
|
-
|
|
359
|
+
}
|
|
360
|
+
);
|
|
361
|
+
const actionsComponents = {
|
|
362
|
+
SendButton,
|
|
363
|
+
UploadButton,
|
|
364
|
+
ClearButton
|
|
329
365
|
};
|
|
330
|
-
const
|
|
331
|
-
|
|
366
|
+
const renderSlot = (slot, oriNode) => {
|
|
367
|
+
if (slot === false)
|
|
368
|
+
return null;
|
|
369
|
+
if (slot === void 0)
|
|
370
|
+
return oriNode;
|
|
371
|
+
if (typeof slot === "function") {
|
|
372
|
+
const result = slot(oriNode, { components: actionsComponents });
|
|
373
|
+
return result === false ? null : result;
|
|
374
|
+
}
|
|
375
|
+
return slot;
|
|
376
|
+
};
|
|
377
|
+
const defaultSuffix = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: styles.buttonGroup, children: [
|
|
378
|
+
allowUpload && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(UploadButton, {}),
|
|
379
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(SendButton, {})
|
|
380
|
+
] });
|
|
332
381
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
333
382
|
"div",
|
|
334
383
|
{
|
|
@@ -338,6 +387,7 @@ var XAdkSender = ({
|
|
|
338
387
|
onDragLeave: allowUpload ? handleDragLeave : void 0,
|
|
339
388
|
onDrop: allowUpload ? handleDrop : void 0,
|
|
340
389
|
children: [
|
|
390
|
+
renderSlot(header, false),
|
|
341
391
|
allowUpload && files.length > 0 && renderFileList(),
|
|
342
392
|
allowUpload && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
343
393
|
"input",
|
|
@@ -357,27 +407,9 @@ var XAdkSender = ({
|
|
|
357
407
|
),
|
|
358
408
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: styles.mainArea, children: [
|
|
359
409
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: styles.senderWrap, children: [
|
|
360
|
-
clearBtnShow && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
361
|
-
import_antd.Popconfirm,
|
|
362
|
-
{
|
|
363
|
-
title: "确定要清空聊天记录吗?",
|
|
364
|
-
onConfirm: onClear,
|
|
365
|
-
placement: "top",
|
|
366
|
-
okText: "确定",
|
|
367
|
-
cancelText: "取消",
|
|
368
|
-
disabled: uploading || loading,
|
|
369
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
370
|
-
"button",
|
|
371
|
-
{
|
|
372
|
-
className: `${styles.iconButton} ${styles.clearButton}`,
|
|
373
|
-
disabled: uploading || loading,
|
|
374
|
-
"aria-label": "清空聊天记录",
|
|
375
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons.ClearOutlined, {})
|
|
376
|
-
}
|
|
377
|
-
)
|
|
378
|
-
}
|
|
379
|
-
),
|
|
410
|
+
clearBtnShow && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ClearButton, {}),
|
|
380
411
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: styles.inputAndButtons, children: [
|
|
412
|
+
renderSlot(prefix, false),
|
|
381
413
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: styles.textAreaWrapper, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
382
414
|
import_antd.Input.TextArea,
|
|
383
415
|
{
|
|
@@ -386,7 +418,7 @@ var XAdkSender = ({
|
|
|
386
418
|
onChange: handleInputChange,
|
|
387
419
|
onKeyDown: handleKeyDown,
|
|
388
420
|
placeholder: "请输入消息...",
|
|
389
|
-
disabled:
|
|
421
|
+
disabled: isDisabled,
|
|
390
422
|
autoSize: { minRows: 1, maxRows: 4 },
|
|
391
423
|
style: {
|
|
392
424
|
border: "none",
|
|
@@ -396,31 +428,13 @@ var XAdkSender = ({
|
|
|
396
428
|
}
|
|
397
429
|
}
|
|
398
430
|
) }),
|
|
399
|
-
|
|
400
|
-
allowUpload && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Tooltip, { title: "上传文件", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
401
|
-
"button",
|
|
402
|
-
{
|
|
403
|
-
className: `${styles.iconButton} ${styles.uploadButton}`,
|
|
404
|
-
onClick: triggerFileSelect,
|
|
405
|
-
disabled: uploading || loading,
|
|
406
|
-
"aria-label": "上传文件",
|
|
407
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons.PaperClipOutlined, {})
|
|
408
|
-
}
|
|
409
|
-
) }),
|
|
410
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Tooltip, { title: loading ? "停止生成" : "发送消息", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
411
|
-
"button",
|
|
412
|
-
{
|
|
413
|
-
className: `${styles.iconButton} ${styles.sendButton} ${loading ? "stop" : ""}`,
|
|
414
|
-
onClick: loading ? onStop : handleSubmit,
|
|
415
|
-
disabled: uploading,
|
|
416
|
-
"aria-label": loading ? "停止生成" : "发送消息",
|
|
417
|
-
children: loading ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons.LoadingOutlined, {}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icons.ArrowUpOutlined, {})
|
|
418
|
-
}
|
|
419
|
-
) })
|
|
420
|
-
] })
|
|
431
|
+
renderSlot(suffix, defaultSuffix)
|
|
421
432
|
] })
|
|
422
433
|
] }),
|
|
423
|
-
|
|
434
|
+
renderSlot(
|
|
435
|
+
footer,
|
|
436
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: styles.tip, children: "内容由AI生成,无法确保真实准确,仅供参考" })
|
|
437
|
+
)
|
|
424
438
|
] })
|
|
425
439
|
]
|
|
426
440
|
}
|