@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.
Files changed (277) hide show
  1. package/dist/cjs/components/XAdkChatbot/XAdkChatbot.stories.d.ts +9 -2
  2. package/dist/cjs/components/XAdkChatbot/XAdkChatbot.stories.js +564 -10
  3. package/dist/cjs/components/XAdkChatbot/XAdkChatbot.stories.js.map +2 -2
  4. package/dist/cjs/components/XAdkChatbot/components/FileGallery/index.d.ts +12 -0
  5. package/dist/cjs/components/XAdkChatbot/components/FileGallery/index.js +92 -0
  6. package/dist/cjs/components/XAdkChatbot/components/FileGallery/index.js.map +7 -0
  7. package/dist/cjs/components/XAdkChatbot/components/FileGallery/styles.d.ts +44 -0
  8. package/dist/cjs/components/XAdkChatbot/components/FileGallery/styles.js +137 -0
  9. package/dist/cjs/components/XAdkChatbot/components/FileGallery/styles.js.map +7 -0
  10. package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/index.d.ts +1 -1
  11. package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/index.js +41 -5
  12. package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/index.js.map +2 -2
  13. package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/styles.d.ts +1 -0
  14. package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/styles.js +14 -3
  15. package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/styles.js.map +2 -2
  16. package/dist/cjs/components/XAdkChatbot/index.d.ts +11 -1
  17. package/dist/cjs/components/XAdkChatbot/index.js +294 -108
  18. package/dist/cjs/components/XAdkChatbot/index.js.map +3 -3
  19. package/dist/cjs/components/XAdkChatbot/styles.d.ts +10 -0
  20. package/dist/cjs/components/XAdkChatbot/styles.js +67 -3
  21. package/dist/cjs/components/XAdkChatbot/styles.js.map +2 -2
  22. package/dist/cjs/components/XAdkProvider/XAdkProvider.stories.d.ts +10 -0
  23. package/dist/cjs/components/XAdkProvider/XAdkProvider.stories.js +394 -0
  24. package/dist/cjs/components/XAdkProvider/XAdkProvider.stories.js.map +7 -0
  25. package/dist/cjs/components/XAdkProvider/compound/Chatbot.d.ts +30 -0
  26. package/dist/cjs/components/XAdkProvider/compound/Chatbot.js +64 -0
  27. package/dist/cjs/components/XAdkProvider/compound/Chatbot.js.map +7 -0
  28. package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.d.ts +26 -0
  29. package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.js +199 -0
  30. package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.js.map +7 -0
  31. package/dist/cjs/components/XAdkProvider/compound/DislikeFeedBack.d.ts +8 -0
  32. package/dist/cjs/components/XAdkProvider/compound/DislikeFeedBack.js +117 -0
  33. package/dist/cjs/components/XAdkProvider/compound/DislikeFeedBack.js.map +7 -0
  34. package/dist/cjs/components/XAdkProvider/compound/FeedbackTags.d.ts +7 -0
  35. package/dist/cjs/components/XAdkProvider/compound/FeedbackTags.js +64 -0
  36. package/dist/cjs/components/XAdkProvider/compound/FeedbackTags.js.map +7 -0
  37. package/dist/cjs/components/XAdkProvider/compound/Header.d.ts +25 -0
  38. package/dist/cjs/components/XAdkProvider/compound/Header.js +70 -0
  39. package/dist/cjs/components/XAdkProvider/compound/Header.js.map +7 -0
  40. package/dist/cjs/components/XAdkProvider/compound/Messages.d.ts +17 -0
  41. package/dist/cjs/components/XAdkProvider/compound/Messages.js +70 -0
  42. package/dist/cjs/components/XAdkProvider/compound/Messages.js.map +7 -0
  43. package/dist/cjs/components/XAdkProvider/compound/Sender.d.ts +27 -0
  44. package/dist/cjs/components/XAdkProvider/compound/Sender.js +55 -0
  45. package/dist/cjs/components/XAdkProvider/compound/Sender.js.map +7 -0
  46. package/dist/cjs/components/XAdkProvider/compound/Sidebar.d.ts +24 -0
  47. package/dist/cjs/components/XAdkProvider/compound/Sidebar.js +151 -0
  48. package/dist/cjs/components/XAdkProvider/compound/Sidebar.js.map +7 -0
  49. package/dist/cjs/components/XAdkProvider/compound/Welcome.d.ts +6 -0
  50. package/dist/cjs/components/XAdkProvider/compound/Welcome.js +60 -0
  51. package/dist/cjs/components/XAdkProvider/compound/Welcome.js.map +7 -0
  52. package/dist/cjs/components/XAdkProvider/compound/index.d.ts +17 -0
  53. package/dist/cjs/components/XAdkProvider/compound/index.js +55 -0
  54. package/dist/cjs/components/XAdkProvider/compound/index.js.map +7 -0
  55. package/dist/cjs/components/XAdkProvider/compound/styles.d.ts +36 -0
  56. package/dist/cjs/components/XAdkProvider/compound/styles.js +49 -0
  57. package/dist/cjs/components/XAdkProvider/compound/styles.js.map +7 -0
  58. package/dist/cjs/components/XAdkProvider/context/ChatActionContext.d.ts +30 -0
  59. package/dist/cjs/components/XAdkProvider/context/ChatActionContext.js +40 -0
  60. package/dist/cjs/components/XAdkProvider/context/ChatActionContext.js.map +7 -0
  61. package/dist/cjs/components/XAdkProvider/context/ChatStateContext.d.ts +35 -0
  62. package/dist/cjs/components/XAdkProvider/context/ChatStateContext.js +42 -0
  63. package/dist/cjs/components/XAdkProvider/context/ChatStateContext.js.map +7 -0
  64. package/dist/cjs/components/XAdkProvider/context/SessionContext.d.ts +29 -0
  65. package/dist/cjs/components/XAdkProvider/context/SessionContext.js +40 -0
  66. package/dist/cjs/components/XAdkProvider/context/SessionContext.js.map +7 -0
  67. package/dist/cjs/components/XAdkProvider/context/index.d.ts +7 -0
  68. package/dist/cjs/components/XAdkProvider/context/index.js +28 -0
  69. package/dist/cjs/components/XAdkProvider/context/index.js.map +7 -0
  70. package/dist/cjs/components/XAdkProvider/index.d.ts +55 -0
  71. package/dist/cjs/components/XAdkProvider/index.js +221 -0
  72. package/dist/cjs/components/XAdkProvider/index.js.map +7 -0
  73. package/dist/cjs/components/{XAdkWebProvider → XAdkProvider}/styles.js +2 -1
  74. package/dist/cjs/components/XAdkProvider/styles.js.map +7 -0
  75. package/dist/cjs/components/XAdkSender/FileGallery.d.ts +8 -0
  76. package/dist/cjs/components/XAdkSender/FileGallery.js +381 -0
  77. package/dist/cjs/components/XAdkSender/FileGallery.js.map +7 -0
  78. package/dist/cjs/components/XAdkSender/index.js +95 -81
  79. package/dist/cjs/components/XAdkSender/index.js.map +3 -3
  80. package/dist/cjs/components/XAdkSender/styles.d.ts +0 -9
  81. package/dist/cjs/components/XAdkSender/styles.js +21 -150
  82. package/dist/cjs/components/XAdkSender/styles.js.map +2 -2
  83. package/dist/cjs/components/XAiConversations/index.js +1 -1
  84. package/dist/cjs/components/XAiConversations/index.js.map +2 -2
  85. package/dist/cjs/components/XAiConversations/styles.js +5 -0
  86. package/dist/cjs/components/XAiConversations/styles.js.map +2 -2
  87. package/dist/cjs/components/XAiThoughtChain/XAiThoughtChain.stories.d.ts +6 -0
  88. package/dist/cjs/components/XAiThoughtChain/XAiThoughtChain.stories.js +180 -0
  89. package/dist/cjs/components/XAiThoughtChain/XAiThoughtChain.stories.js.map +7 -0
  90. package/dist/cjs/components/XAiThoughtChain/index.d.ts +4 -0
  91. package/dist/cjs/components/XAiThoughtChain/index.js +155 -0
  92. package/dist/cjs/components/XAiThoughtChain/index.js.map +7 -0
  93. package/dist/cjs/components/XAiThoughtChain/styles.d.ts +60 -0
  94. package/dist/cjs/components/XAiThoughtChain/styles.js +195 -0
  95. package/dist/cjs/components/XAiThoughtChain/styles.js.map +7 -0
  96. package/dist/cjs/hooks/useADKChat.d.ts +9 -3
  97. package/dist/cjs/hooks/useADKChat.js +246 -182
  98. package/dist/cjs/hooks/useADKChat.js.map +2 -2
  99. package/dist/cjs/index.d.ts +25 -9
  100. package/dist/cjs/index.js +37 -0
  101. package/dist/cjs/index.js.map +3 -3
  102. package/dist/cjs/styles/common.js +1 -1
  103. package/dist/cjs/styles/common.js.map +2 -2
  104. package/dist/cjs/types/ChatHook.d.ts +81 -0
  105. package/dist/cjs/types/ChatHook.js +18 -0
  106. package/dist/cjs/types/ChatHook.js.map +7 -0
  107. package/dist/cjs/types/XAdkChatbot.d.ts +80 -15
  108. package/dist/cjs/types/XAdkChatbot.js.map +1 -1
  109. package/dist/cjs/types/XAdkProvider.d.ts +10 -27
  110. package/dist/cjs/types/XAdkProvider.js.map +2 -2
  111. package/dist/cjs/types/XAdkSender.d.ts +18 -0
  112. package/dist/cjs/types/XAdkSender.js.map +1 -1
  113. package/dist/cjs/types/XAiConversations.d.ts +4 -2
  114. package/dist/cjs/types/XAiConversations.js.map +1 -1
  115. package/dist/cjs/types/XAiThoughtChain.d.ts +25 -0
  116. package/dist/cjs/types/XAiThoughtChain.js +18 -0
  117. package/dist/cjs/types/XAiThoughtChain.js.map +7 -0
  118. package/dist/cjs/types/index.d.ts +9 -8
  119. package/dist/cjs/types/index.js +2 -0
  120. package/dist/cjs/types/index.js.map +2 -2
  121. package/dist/cjs/utils/index.d.ts +2 -0
  122. package/dist/cjs/utils/index.js +11 -1
  123. package/dist/cjs/utils/index.js.map +2 -2
  124. package/dist/cjs/utils/parseAgentMessage.d.ts +81 -0
  125. package/dist/cjs/utils/parseAgentMessage.js +180 -0
  126. package/dist/cjs/utils/parseAgentMessage.js.map +7 -0
  127. package/dist/cjs/utils/umdEntry.d.ts +91 -0
  128. package/dist/cjs/utils/umdEntry.js +108 -6
  129. package/dist/cjs/utils/umdEntry.js.map +3 -3
  130. package/dist/esm/components/XAdkChatbot/XAdkChatbot.stories.d.ts +9 -2
  131. package/dist/esm/components/XAdkChatbot/XAdkChatbot.stories.js +485 -8
  132. package/dist/esm/components/XAdkChatbot/XAdkChatbot.stories.js.map +1 -1
  133. package/dist/esm/components/XAdkChatbot/components/FileGallery/index.d.ts +12 -0
  134. package/dist/esm/components/XAdkChatbot/components/FileGallery/index.js +104 -0
  135. package/dist/esm/components/XAdkChatbot/components/FileGallery/index.js.map +1 -0
  136. package/dist/esm/components/XAdkChatbot/components/FileGallery/styles.d.ts +44 -0
  137. package/dist/esm/components/XAdkChatbot/components/FileGallery/styles.js +20 -0
  138. package/dist/esm/components/XAdkChatbot/components/FileGallery/styles.js.map +1 -0
  139. package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/index.d.ts +1 -1
  140. package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/index.js +17 -15
  141. package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/index.js.map +1 -1
  142. package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/styles.d.ts +1 -0
  143. package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/styles.js +7 -6
  144. package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/styles.js.map +1 -1
  145. package/dist/esm/components/XAdkChatbot/index.d.ts +11 -1
  146. package/dist/esm/components/XAdkChatbot/index.js +392 -174
  147. package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
  148. package/dist/esm/components/XAdkChatbot/styles.d.ts +10 -0
  149. package/dist/esm/components/XAdkChatbot/styles.js +23 -12
  150. package/dist/esm/components/XAdkChatbot/styles.js.map +1 -1
  151. package/dist/esm/components/XAdkProvider/XAdkProvider.stories.d.ts +10 -0
  152. package/dist/esm/components/XAdkProvider/XAdkProvider.stories.js +338 -0
  153. package/dist/esm/components/XAdkProvider/XAdkProvider.stories.js.map +1 -0
  154. package/dist/esm/components/XAdkProvider/compound/Chatbot.d.ts +30 -0
  155. package/dist/esm/components/XAdkProvider/compound/Chatbot.js +47 -0
  156. package/dist/esm/components/XAdkProvider/compound/Chatbot.js.map +1 -0
  157. package/dist/esm/components/XAdkProvider/compound/DefaultLayout.d.ts +26 -0
  158. package/dist/esm/components/XAdkProvider/compound/DefaultLayout.js +142 -0
  159. package/dist/esm/components/XAdkProvider/compound/DefaultLayout.js.map +1 -0
  160. package/dist/esm/components/XAdkProvider/compound/DislikeFeedBack.d.ts +8 -0
  161. package/dist/esm/components/XAdkProvider/compound/DislikeFeedBack.js +122 -0
  162. package/dist/esm/components/XAdkProvider/compound/DislikeFeedBack.js.map +1 -0
  163. package/dist/esm/components/XAdkProvider/compound/FeedbackTags.d.ts +7 -0
  164. package/dist/esm/components/XAdkProvider/compound/FeedbackTags.js +34 -0
  165. package/dist/esm/components/XAdkProvider/compound/FeedbackTags.js.map +1 -0
  166. package/dist/esm/components/XAdkProvider/compound/Header.d.ts +25 -0
  167. package/dist/esm/components/XAdkProvider/compound/Header.js +79 -0
  168. package/dist/esm/components/XAdkProvider/compound/Header.js.map +1 -0
  169. package/dist/esm/components/XAdkProvider/compound/Messages.d.ts +17 -0
  170. package/dist/esm/components/XAdkProvider/compound/Messages.js +53 -0
  171. package/dist/esm/components/XAdkProvider/compound/Messages.js.map +1 -0
  172. package/dist/esm/components/XAdkProvider/compound/Sender.d.ts +27 -0
  173. package/dist/esm/components/XAdkProvider/compound/Sender.js +41 -0
  174. package/dist/esm/components/XAdkProvider/compound/Sender.js.map +1 -0
  175. package/dist/esm/components/XAdkProvider/compound/Sidebar.d.ts +24 -0
  176. package/dist/esm/components/XAdkProvider/compound/Sidebar.js +142 -0
  177. package/dist/esm/components/XAdkProvider/compound/Sidebar.js.map +1 -0
  178. package/dist/esm/components/XAdkProvider/compound/Welcome.d.ts +6 -0
  179. package/dist/esm/components/XAdkProvider/compound/Welcome.js +36 -0
  180. package/dist/esm/components/XAdkProvider/compound/Welcome.js.map +1 -0
  181. package/dist/esm/components/XAdkProvider/compound/index.d.ts +17 -0
  182. package/dist/esm/components/XAdkProvider/compound/index.js +13 -0
  183. package/dist/esm/components/XAdkProvider/compound/index.js.map +1 -0
  184. package/dist/esm/components/XAdkProvider/compound/styles.d.ts +36 -0
  185. package/dist/esm/components/XAdkProvider/compound/styles.js +10 -0
  186. package/dist/esm/components/XAdkProvider/compound/styles.js.map +1 -0
  187. package/dist/esm/components/XAdkProvider/context/ChatActionContext.d.ts +30 -0
  188. package/dist/esm/components/XAdkProvider/context/ChatActionContext.js +23 -0
  189. package/dist/esm/components/XAdkProvider/context/ChatActionContext.js.map +1 -0
  190. package/dist/esm/components/XAdkProvider/context/ChatStateContext.d.ts +35 -0
  191. package/dist/esm/components/XAdkProvider/context/ChatStateContext.js +23 -0
  192. package/dist/esm/components/XAdkProvider/context/ChatStateContext.js.map +1 -0
  193. package/dist/esm/components/XAdkProvider/context/SessionContext.d.ts +29 -0
  194. package/dist/esm/components/XAdkProvider/context/SessionContext.js +22 -0
  195. package/dist/esm/components/XAdkProvider/context/SessionContext.js.map +1 -0
  196. package/dist/esm/components/XAdkProvider/context/index.d.ts +7 -0
  197. package/dist/esm/components/XAdkProvider/context/index.js +9 -0
  198. package/dist/esm/components/XAdkProvider/context/index.js.map +1 -0
  199. package/dist/esm/components/XAdkProvider/index.d.ts +55 -0
  200. package/dist/esm/components/XAdkProvider/index.js +220 -0
  201. package/dist/esm/components/XAdkProvider/index.js.map +1 -0
  202. package/dist/esm/components/{XAdkWebProvider → XAdkProvider}/styles.js +2 -2
  203. package/dist/esm/components/XAdkProvider/styles.js.map +1 -0
  204. package/dist/esm/components/XAdkSender/FileGallery.d.ts +8 -0
  205. package/dist/esm/components/XAdkSender/FileGallery.js +236 -0
  206. package/dist/esm/components/XAdkSender/FileGallery.js.map +1 -0
  207. package/dist/esm/components/XAdkSender/index.js +92 -109
  208. package/dist/esm/components/XAdkSender/index.js.map +1 -1
  209. package/dist/esm/components/XAdkSender/styles.d.ts +0 -9
  210. package/dist/esm/components/XAdkSender/styles.js +14 -31
  211. package/dist/esm/components/XAdkSender/styles.js.map +1 -1
  212. package/dist/esm/components/XAiConversations/index.js +1 -1
  213. package/dist/esm/components/XAiConversations/index.js.map +1 -1
  214. package/dist/esm/components/XAiConversations/styles.js +2 -2
  215. package/dist/esm/components/XAiConversations/styles.js.map +1 -1
  216. package/dist/esm/components/XAiThoughtChain/XAiThoughtChain.stories.d.ts +6 -0
  217. package/dist/esm/components/XAiThoughtChain/XAiThoughtChain.stories.js +159 -0
  218. package/dist/esm/components/XAiThoughtChain/XAiThoughtChain.stories.js.map +1 -0
  219. package/dist/esm/components/XAiThoughtChain/index.d.ts +4 -0
  220. package/dist/esm/components/XAiThoughtChain/index.js +180 -0
  221. package/dist/esm/components/XAiThoughtChain/index.js.map +1 -0
  222. package/dist/esm/components/XAiThoughtChain/styles.d.ts +60 -0
  223. package/dist/esm/components/XAiThoughtChain/styles.js +40 -0
  224. package/dist/esm/components/XAiThoughtChain/styles.js.map +1 -0
  225. package/dist/esm/hooks/useADKChat.d.ts +9 -3
  226. package/dist/esm/hooks/useADKChat.js +75 -54
  227. package/dist/esm/hooks/useADKChat.js.map +1 -1
  228. package/dist/esm/index.d.ts +25 -9
  229. package/dist/esm/index.js +28 -2
  230. package/dist/esm/index.js.map +1 -1
  231. package/dist/esm/styles/common.js +11 -11
  232. package/dist/esm/styles/common.js.map +1 -1
  233. package/dist/esm/types/ChatHook.d.ts +81 -0
  234. package/dist/esm/types/ChatHook.js +2 -0
  235. package/dist/esm/types/ChatHook.js.map +1 -0
  236. package/dist/esm/types/XAdkChatbot.d.ts +80 -15
  237. package/dist/esm/types/XAdkChatbot.js.map +1 -1
  238. package/dist/esm/types/XAdkProvider.d.ts +10 -27
  239. package/dist/esm/types/XAdkProvider.js.map +1 -1
  240. package/dist/esm/types/XAdkSender.d.ts +18 -0
  241. package/dist/esm/types/XAdkSender.js.map +1 -1
  242. package/dist/esm/types/XAiConversations.d.ts +4 -2
  243. package/dist/esm/types/XAiConversations.js.map +1 -1
  244. package/dist/esm/types/XAiThoughtChain.d.ts +25 -0
  245. package/dist/esm/types/XAiThoughtChain.js +2 -0
  246. package/dist/esm/types/XAiThoughtChain.js.map +1 -0
  247. package/dist/esm/types/index.d.ts +9 -8
  248. package/dist/esm/types/index.js +1 -0
  249. package/dist/esm/types/index.js.map +1 -1
  250. package/dist/esm/utils/index.d.ts +2 -0
  251. package/dist/esm/utils/index.js +7 -0
  252. package/dist/esm/utils/index.js.map +1 -1
  253. package/dist/esm/utils/parseAgentMessage.d.ts +81 -0
  254. package/dist/esm/utils/parseAgentMessage.js +286 -0
  255. package/dist/esm/utils/parseAgentMessage.js.map +1 -0
  256. package/dist/esm/utils/umdEntry.d.ts +91 -0
  257. package/dist/esm/utils/umdEntry.js +154 -16
  258. package/dist/esm/utils/umdEntry.js.map +1 -1
  259. package/dist/umd/chat-sdk.min.css +1 -1
  260. package/dist/umd/chat-sdk.min.js +1 -1
  261. package/package.json +20 -11
  262. package/dist/cjs/components/XAdkWebProvider/XAdkWebProvider.stories.d.ts +0 -7
  263. package/dist/cjs/components/XAdkWebProvider/XAdkWebProvider.stories.js +0 -160
  264. package/dist/cjs/components/XAdkWebProvider/XAdkWebProvider.stories.js.map +0 -7
  265. package/dist/cjs/components/XAdkWebProvider/index.d.ts +0 -4
  266. package/dist/cjs/components/XAdkWebProvider/index.js +0 -372
  267. package/dist/cjs/components/XAdkWebProvider/index.js.map +0 -7
  268. package/dist/cjs/components/XAdkWebProvider/styles.js.map +0 -7
  269. package/dist/esm/components/XAdkWebProvider/XAdkWebProvider.stories.d.ts +0 -7
  270. package/dist/esm/components/XAdkWebProvider/XAdkWebProvider.stories.js +0 -158
  271. package/dist/esm/components/XAdkWebProvider/XAdkWebProvider.stories.js.map +0 -1
  272. package/dist/esm/components/XAdkWebProvider/index.d.ts +0 -4
  273. package/dist/esm/components/XAdkWebProvider/index.js +0 -480
  274. package/dist/esm/components/XAdkWebProvider/index.js.map +0 -1
  275. package/dist/esm/components/XAdkWebProvider/styles.js.map +0 -1
  276. /package/dist/cjs/components/{XAdkWebProvider → XAdkProvider}/styles.d.ts +0 -0
  277. /package/dist/esm/components/{XAdkWebProvider → XAdkProvider}/styles.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Image","Tooltip","Progress","FileOutlined","FilePdfOutlined","FileWordOutlined","FileExcelOutlined","FilePptOutlined","FileImageOutlined","CloseOutlined","css","jsx","_jsx","jsxs","_jsxs","isImageFile","file","type","startsWith","getFileExtension","filename","ext","split","pop","toLowerCase","getFileIcon","name","icon","color","includes","formatFileSize","bytes","toFixed","styles","container","_templateObject","_taggedTemplateLiteral","imageGrid","_templateObject2","imageItem","_templateObject3","imageOverlay","_templateObject4","removeBtn","_templateObject5","fileList","_templateObject6","fileCard","_templateObject7","imageThumbnail","_templateObject8","fileIcon","_templateObject9","fileInfo","_templateObject10","fileName","_templateObject11","fileSize","_templateObject12","progress","_templateObject13","fileRemoveBtn","_templateObject14","FileGallery","_ref","files","onRemove","length","className","children","PreviewGroup","map","isImage","_file$response","_file$response2","url","response","fileUrl","tempUrl","URL","createObjectURL","src","alt","fallback","preview","status","percent","size","strokeColor","title","concat","substring","onClick","id","disabled","_getFileIcon","style","showInfo","errorMessage","fontSize","marginTop"],"sources":["../../../../src/components/XAdkSender/FileGallery.tsx"],"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"],"mappings":"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"}
@@ -5,16 +5,12 @@ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
5
5
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
6
6
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
7
7
  import React, { useState, useRef, useCallback } from 'react';
8
- import { Popconfirm, message, Progress, Tooltip, Input, Modal } from 'antd';
9
- import { ClearOutlined, LoadingOutlined, ArrowUpOutlined, PaperClipOutlined, CloseOutlined } from '@ant-design/icons';
8
+ import { Popconfirm, message, Tooltip, Input, Modal } from 'antd';
9
+ import { ClearOutlined, LoadingOutlined, ArrowUpOutlined, PaperClipOutlined } from '@ant-design/icons';
10
10
  import { useStyles } from "./styles";
11
-
12
- // 文件类型图标映射
11
+ import FileGallery from "./FileGallery";
13
12
  import { jsx as _jsx } from "react/jsx-runtime";
14
13
  import { jsxs as _jsxs } from "react/jsx-runtime";
15
- var FILE_ICONS = {
16
- // ... 保持不变
17
- };
18
14
  var XAdkSender = function XAdkSender(_ref) {
19
15
  var _ref$clearBtnShow = _ref.clearBtnShow,
20
16
  clearBtnShow = _ref$clearBtnShow === void 0 ? true : _ref$clearBtnShow,
@@ -22,6 +18,8 @@ var XAdkSender = function XAdkSender(_ref) {
22
18
  allowUpload = _ref$allowUpload === void 0 ? false : _ref$allowUpload,
23
19
  _ref$loading = _ref.loading,
24
20
  loading = _ref$loading === void 0 ? false : _ref$loading,
21
+ _ref$disabled = _ref.disabled,
22
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
25
23
  _ref$uploadRequest = _ref.uploadRequest,
26
24
  uploadRequest = _ref$uploadRequest === void 0 ? function () {} : _ref$uploadRequest,
27
25
  onClear = _ref.onClear,
@@ -34,7 +32,11 @@ var XAdkSender = function XAdkSender(_ref) {
34
32
  _ref$allowedFileTypes = _ref.allowedFileTypes,
35
33
  allowedFileTypes = _ref$allowedFileTypes === void 0 ? ['image/*', 'application/pdf', 'text/plain'] : _ref$allowedFileTypes,
36
34
  _ref$maxFiles = _ref.maxFiles,
37
- maxFiles = _ref$maxFiles === void 0 ? 5 : _ref$maxFiles;
35
+ maxFiles = _ref$maxFiles === void 0 ? 5 : _ref$maxFiles,
36
+ suffix = _ref.suffix,
37
+ header = _ref.header,
38
+ prefix = _ref.prefix,
39
+ footer = _ref.footer;
38
40
  var styles = useStyles();
39
41
  var _useState = useState(''),
40
42
  _useState2 = _slicedToArray(_useState, 2),
@@ -57,18 +59,6 @@ var XAdkSender = function XAdkSender(_ref) {
57
59
  return Date.now().toString(36) + Math.random().toString(36).substr(2);
58
60
  };
59
61
 
60
- // 获取文件图标
61
- var getFileIcon = function getFileIcon(fileType) {
62
- return FILE_ICONS[fileType] || FILE_ICONS.default;
63
- };
64
-
65
- // 格式化文件大小
66
- var formatFileSize = function formatFileSize(bytes) {
67
- if (bytes < 1024) return bytes + ' Bytes';
68
- if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(1) + ' KB';
69
- return (bytes / (1024 * 1024)).toFixed(1) + ' MB';
70
- };
71
-
72
62
  // 检查文件类型
73
63
  var checkFileType = function checkFileType(file) {
74
64
  if (!allowedFileTypes.length) return true;
@@ -441,68 +431,95 @@ var XAdkSender = function XAdkSender(_ref) {
441
431
  }
442
432
  };
443
433
 
444
- // 渲染文件列表
434
+ // 渲染文件列表 - 使用新的 FileGallery 组件
445
435
  var renderFileList = function renderFileList() {
446
436
  if (files.length === 0) return null;
447
- return /*#__PURE__*/_jsx("div", {
448
- className: styles.fileListArea,
449
- children: /*#__PURE__*/_jsx("div", {
450
- className: styles.fileList,
451
- children: files.map(function (file) {
452
- return /*#__PURE__*/_jsxs("div", {
453
- className: styles.fileCard,
454
- children: [/*#__PURE__*/_jsx("div", {
455
- className: styles.fileIcon,
456
- children: getFileIcon(file.type)
457
- }), /*#__PURE__*/_jsxs("div", {
458
- className: styles.fileInfo,
459
- children: [/*#__PURE__*/_jsx("div", {
460
- className: styles.fileName,
461
- children: /*#__PURE__*/_jsx(Tooltip, {
462
- title: file.name,
463
- children: file.name.length > 15 ? "".concat(file.name.substring(0, 15), "...") : file.name
464
- })
465
- }), file.status === 'uploading' ? /*#__PURE__*/_jsx("div", {
466
- className: styles.uploadProgress,
467
- children: /*#__PURE__*/_jsx(Progress, {
468
- percent: file.progress,
469
- size: "small",
470
- showInfo: false,
471
- strokeColor: "#1890ff"
472
- })
473
- }) : /*#__PURE__*/_jsx("div", {
474
- className: styles.fileSize,
475
- children: formatFileSize(file.size)
476
- })]
477
- }), /*#__PURE__*/_jsx("button", {
478
- className: styles.fileRemoveBtn,
479
- onClick: function onClick() {
480
- return handleRemoveFile(file.id);
481
- },
482
- disabled: file.status === 'uploading',
483
- "aria-label": "\u5220\u9664\u6587\u4EF6",
484
- children: /*#__PURE__*/_jsx(CloseOutlined, {
485
- style: {
486
- fontSize: 8
487
- }
488
- })
489
- })]
490
- }, file.id);
491
- })
492
- })
437
+ return /*#__PURE__*/_jsx(FileGallery, {
438
+ files: files,
439
+ onRemove: handleRemoveFile
493
440
  });
494
441
  };
495
442
  var containerClass = "".concat(styles.container, " ").concat(isDragOver ? 'drag-over' : '');
496
443
  var uploading = files.some(function (f) {
497
444
  return f.status === 'uploading';
498
445
  });
446
+ var isDisabled = disabled || uploading || loading;
447
+
448
+ // 定义按钮组件
449
+ var SendButton = function SendButton(props) {
450
+ return /*#__PURE__*/_jsx(Tooltip, {
451
+ title: loading ? "停止生成" : "发送消息",
452
+ children: /*#__PURE__*/_jsx("button", _objectSpread(_objectSpread({
453
+ className: "".concat(styles.iconButton, " ").concat(styles.sendButton, " ").concat(loading ? 'stop' : ''),
454
+ onClick: loading ? onStop : handleSubmit,
455
+ disabled: uploading || disabled,
456
+ "aria-label": loading ? "停止生成" : "发送消息"
457
+ }, props), {}, {
458
+ children: loading ? /*#__PURE__*/_jsx(LoadingOutlined, {}) : /*#__PURE__*/_jsx(ArrowUpOutlined, {})
459
+ }))
460
+ });
461
+ };
462
+ var UploadButton = function UploadButton(props) {
463
+ return /*#__PURE__*/_jsx(Tooltip, {
464
+ title: "\u4E0A\u4F20\u6587\u4EF6",
465
+ children: /*#__PURE__*/_jsx("button", _objectSpread(_objectSpread({
466
+ className: "".concat(styles.iconButton, " ").concat(styles.uploadButton),
467
+ onClick: triggerFileSelect,
468
+ disabled: isDisabled,
469
+ "aria-label": "\u4E0A\u4F20\u6587\u4EF6"
470
+ }, props), {}, {
471
+ children: /*#__PURE__*/_jsx(PaperClipOutlined, {})
472
+ }))
473
+ });
474
+ };
475
+ var ClearButton = function ClearButton(props) {
476
+ return /*#__PURE__*/_jsx(Popconfirm, {
477
+ title: "\u786E\u5B9A\u8981\u6E05\u7A7A\u804A\u5929\u8BB0\u5F55\u5417?",
478
+ onConfirm: onClear,
479
+ placement: "top",
480
+ okText: "\u786E\u5B9A",
481
+ cancelText: "\u53D6\u6D88",
482
+ disabled: isDisabled,
483
+ children: /*#__PURE__*/_jsx("button", _objectSpread(_objectSpread({
484
+ className: "".concat(styles.iconButton, " ").concat(styles.clearButton),
485
+ disabled: isDisabled,
486
+ "aria-label": "\u6E05\u7A7A\u804A\u5929\u8BB0\u5F55"
487
+ }, props), {}, {
488
+ children: /*#__PURE__*/_jsx(ClearOutlined, {})
489
+ }))
490
+ });
491
+ };
492
+ var actionsComponents = {
493
+ SendButton: SendButton,
494
+ UploadButton: UploadButton,
495
+ ClearButton: ClearButton
496
+ };
497
+
498
+ // 渲染插槽内容
499
+ var renderSlot = function renderSlot(slot, oriNode) {
500
+ if (slot === false) return null;
501
+ if (slot === undefined) return oriNode;
502
+ if (typeof slot === 'function') {
503
+ var result = slot(oriNode, {
504
+ components: actionsComponents
505
+ });
506
+ return result === false ? null : result;
507
+ }
508
+ return slot;
509
+ };
510
+
511
+ // 默认的后缀内容(操作按钮组)
512
+ var defaultSuffix = /*#__PURE__*/_jsxs("div", {
513
+ className: styles.buttonGroup,
514
+ children: [allowUpload && /*#__PURE__*/_jsx(UploadButton, {}), /*#__PURE__*/_jsx(SendButton, {})]
515
+ });
499
516
  return /*#__PURE__*/_jsxs("div", {
500
517
  ref: containerRef,
501
518
  className: containerClass,
502
519
  onDragOver: allowUpload ? handleDragOver : undefined,
503
520
  onDragLeave: allowUpload ? handleDragLeave : undefined,
504
521
  onDrop: allowUpload ? handleDrop : undefined,
505
- children: [allowUpload && files.length > 0 && renderFileList(), allowUpload && /*#__PURE__*/_jsx("input", {
522
+ children: [renderSlot(header, false), allowUpload && files.length > 0 && renderFileList(), allowUpload && /*#__PURE__*/_jsx("input", {
506
523
  ref: fileInputRef,
507
524
  type: "file",
508
525
  multiple: true,
@@ -520,22 +537,9 @@ var XAdkSender = function XAdkSender(_ref) {
520
537
  className: styles.mainArea,
521
538
  children: [/*#__PURE__*/_jsxs("div", {
522
539
  className: styles.senderWrap,
523
- children: [clearBtnShow && /*#__PURE__*/_jsx(Popconfirm, {
524
- title: "\u786E\u5B9A\u8981\u6E05\u7A7A\u804A\u5929\u8BB0\u5F55\u5417\uFF1F",
525
- onConfirm: onClear,
526
- placement: "top",
527
- okText: "\u786E\u5B9A",
528
- cancelText: "\u53D6\u6D88",
529
- disabled: uploading || loading,
530
- children: /*#__PURE__*/_jsx("button", {
531
- className: "".concat(styles.iconButton, " ").concat(styles.clearButton),
532
- disabled: uploading || loading,
533
- "aria-label": "\u6E05\u7A7A\u804A\u5929\u8BB0\u5F55",
534
- children: /*#__PURE__*/_jsx(ClearOutlined, {})
535
- })
536
- }), /*#__PURE__*/_jsxs("div", {
540
+ children: [clearBtnShow && /*#__PURE__*/_jsx(ClearButton, {}), /*#__PURE__*/_jsxs("div", {
537
541
  className: styles.inputAndButtons,
538
- children: [/*#__PURE__*/_jsx("div", {
542
+ children: [renderSlot(prefix, false), /*#__PURE__*/_jsx("div", {
539
543
  className: styles.textAreaWrapper,
540
544
  children: /*#__PURE__*/_jsx(Input.TextArea, {
541
545
  className: styles.textArea,
@@ -543,7 +547,7 @@ var XAdkSender = function XAdkSender(_ref) {
543
547
  onChange: handleInputChange,
544
548
  onKeyDown: handleKeyDown,
545
549
  placeholder: "\u8BF7\u8F93\u5165\u6D88\u606F...",
546
- disabled: uploading || loading,
550
+ disabled: isDisabled,
547
551
  autoSize: {
548
552
  minRows: 1,
549
553
  maxRows: 4
@@ -555,33 +559,12 @@ var XAdkSender = function XAdkSender(_ref) {
555
559
  padding: 0
556
560
  }
557
561
  })
558
- }), /*#__PURE__*/_jsxs("div", {
559
- className: styles.buttonGroup,
560
- children: [allowUpload && /*#__PURE__*/_jsx(Tooltip, {
561
- title: "\u4E0A\u4F20\u6587\u4EF6",
562
- children: /*#__PURE__*/_jsx("button", {
563
- className: "".concat(styles.iconButton, " ").concat(styles.uploadButton),
564
- onClick: triggerFileSelect,
565
- disabled: uploading || loading,
566
- "aria-label": "\u4E0A\u4F20\u6587\u4EF6",
567
- children: /*#__PURE__*/_jsx(PaperClipOutlined, {})
568
- })
569
- }), /*#__PURE__*/_jsx(Tooltip, {
570
- title: loading ? "停止生成" : "发送消息",
571
- children: /*#__PURE__*/_jsx("button", {
572
- className: "".concat(styles.iconButton, " ").concat(styles.sendButton, " ").concat(loading ? 'stop' : ''),
573
- onClick: loading ? onStop : handleSubmit,
574
- disabled: uploading,
575
- "aria-label": loading ? "停止生成" : "发送消息",
576
- children: loading ? /*#__PURE__*/_jsx(LoadingOutlined, {}) : /*#__PURE__*/_jsx(ArrowUpOutlined, {})
577
- })
578
- })]
579
- })]
562
+ }), renderSlot(suffix, defaultSuffix)]
580
563
  })]
581
- }), /*#__PURE__*/_jsx("div", {
564
+ }), renderSlot(footer, /*#__PURE__*/_jsx("div", {
582
565
  className: styles.tip,
583
- children: "\u5185\u5BB9\u7531AI\u751F\u6210\uFF0C\u65E0\u6CD5\u786E\u4FDD\u771F\u5B9E\u51C6\u786E\uFF0C\u4EC5\u4F9B\u53C2\u8003"
584
- })]
566
+ children: "\u5185\u5BB9\u7531AI\u751F\u6210,\u65E0\u6CD5\u786E\u4FDD\u771F\u5B9E\u51C6\u786E,\u4EC5\u4F9B\u53C2\u8003"
567
+ }))]
585
568
  })]
586
569
  });
587
570
  };
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","useRef","useCallback","Popconfirm","message","Progress","Tooltip","Input","Modal","ClearOutlined","LoadingOutlined","ArrowUpOutlined","PaperClipOutlined","CloseOutlined","useStyles","jsx","_jsx","jsxs","_jsxs","FILE_ICONS","XAdkSender","_ref","_ref$clearBtnShow","clearBtnShow","_ref$allowUpload","allowUpload","_ref$loading","loading","_ref$uploadRequest","uploadRequest","onClear","onChange","onSubmit","onStop","onFilesChange","_ref$maxFileSize","maxFileSize","_ref$allowedFileTypes","allowedFileTypes","_ref$maxFiles","maxFiles","styles","_useState","_useState2","_slicedToArray","value","setValue","_useState3","_useState4","files","setFiles","_useState5","_useState6","isDragOver","setIsDragOver","containerRef","fileInputRef","uploadRef","generateId","Date","now","toString","Math","random","substr","getFileIcon","fileType","default","formatFileSize","bytes","toFixed","checkFileType","file","length","some","type","includes","mainType","split","startsWith","checkFileSize","maxSize","size","validateFile","valid","concat","getFileExtension","filename","ext","pop","toLowerCase","handleFileSelect","selectedFiles","fileArray","Array","from","validFiles","forEach","validation","push","id","uid","name","progress","status","response","error","prev","_toConsumableArray","uploadFiles","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","fileList","_iterator","_step","_loop","wrap","_callee$","_context2","next","_createForOfIteratorHelper","localFile","_loop$","_context","map","f","_objectSpread","onProgress","e","percent","onSuccess","onError","errorMessage","t0","console","Error","stop","s","n","done","delegateYield","t1","finish","_x","apply","arguments","simulateUpload","_ref3","_callee2","uploadFilesList","_callee2$","_context3","interval","setInterval","clearInterval","setTimeout","mockResponse","code","data","fileId","floor","tempUrl","fileName","_x2","handleRemoveFile","filter","triggerFileSelect","current","click","handleDragOver","preventDefault","stopPropagation","handleDragLeave","handleDrop","dataTransfer","handleSubmit","trim","warning","successFiles","uploadingFiles","confirm","title","content","okText","cancelText","onOk","formattedFiles","formatFilesForServer","text","onCancel","info","_file$response","responseData","url","mimeType","handleInputChange","newValue","target","handleKeyDown","key","shiftKey","renderFileList","className","fileListArea","children","fileCard","fileIcon","fileInfo","substring","uploadProgress","showInfo","strokeColor","fileSize","fileRemoveBtn","onClick","disabled","style","fontSize","containerClass","container","uploading","ref","onDragOver","undefined","onDragLeave","onDrop","multiple","accept","join","display","mainArea","senderWrap","onConfirm","placement","iconButton","clearButton","inputAndButtons","textAreaWrapper","TextArea","textArea","onKeyDown","placeholder","autoSize","minRows","maxRows","border","boxShadow","outline","padding","buttonGroup","uploadButton","sendButton","tip"],"sources":["../../../../src/components/XAdkSender/index.tsx"],"sourcesContent":["import React, { useState, useRef, useCallback } from 'react';\nimport {\n Popconfirm, \n message, \n Progress,\n Tooltip,\n Input,\n Modal,\n} from 'antd';\nimport { \n ClearOutlined, \n LoadingOutlined, \n ArrowUpOutlined,\n PaperClipOutlined,\n CloseOutlined,\n} from '@ant-design/icons';\nimport { XAdkSenderProps, ServerFile, LocalFile } from '../../types/XAdkSender';\nimport { useStyles } from './styles';\n\n// 文件类型图标映射\nconst FILE_ICONS: Record<string, React.ReactNode> = {\n // ... 保持不变\n};\n\nconst XAdkSender: React.FC<XAdkSenderProps> = ({ \n clearBtnShow = true,\n allowUpload = false,\n loading = false,\n uploadRequest = () => {},\n onClear,\n onChange,\n onSubmit,\n onStop,\n onFilesChange,\n maxFileSize = 10,\n allowedFileTypes = ['image/*', 'application/pdf', 'text/plain'],\n maxFiles = 5\n}) => {\n const styles = useStyles();\n const [value, setValue] = useState<string>('');\n const [files, setFiles] = useState<LocalFile[]>([]);\n const [isDragOver, setIsDragOver] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n const uploadRef = useRef<any>(null);\n \n // 生成唯一ID\n const generateId = () => {\n return Date.now().toString(36) + Math.random().toString(36).substr(2);\n };\n \n // 获取文件图标\n const getFileIcon = (fileType: string) => {\n return FILE_ICONS[fileType] || FILE_ICONS.default;\n };\n \n // 格式化文件大小\n const formatFileSize = (bytes: number): string => {\n if (bytes < 1024) return bytes + ' Bytes';\n if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(1) + ' KB';\n return (bytes / (1024 * 1024)).toFixed(1) + ' MB';\n };\n \n // 检查文件类型\n const checkFileType = (file: File): boolean => {\n if (!allowedFileTypes.length) return true;\n \n return allowedFileTypes.some(type => {\n if (type.includes('/*')) {\n const mainType = type.split('/')[0];\n return file.type.startsWith(mainType);\n }\n return file.type === type;\n });\n };\n \n // 检查文件大小\n const checkFileSize = (file: File): boolean => {\n const maxSize = maxFileSize * 1024 * 1024;\n return file.size <= maxSize;\n };\n \n // 验证文件\n const validateFile = (file: File): { valid: boolean; message?: string } => {\n if (files.length >= maxFiles) {\n return { valid: false, message: `最多只能上传 ${maxFiles} 个文件` };\n }\n \n if (!checkFileSize(file)) {\n return { valid: false, message: `文件大小不能超过 ${maxFileSize}MB` };\n }\n \n if (!checkFileType(file)) {\n return { valid: false, message: '不支持的文件类型' };\n }\n \n return { valid: true };\n };\n\n // 获取文件扩展名\n const getFileExtension = (filename: string): string => {\n const ext = filename.split('.').pop();\n return ext ? ext.toLowerCase() : '';\n };\n\n // 处理文件选择\n const handleFileSelect = useCallback((selectedFiles: File[]) => {\n const fileArray = Array.from(selectedFiles);\n const validFiles: LocalFile[] = [];\n \n fileArray.forEach(file => {\n const validation = validateFile(file);\n if (validation.valid) {\n validFiles.push({\n id: generateId(),\n uid: generateId(),\n name: file.name,\n size: file.size,\n type: file.type,\n file,\n progress: 0,\n status: 'pending',\n response: null\n });\n } else {\n message.error(validation.message);\n }\n });\n \n if (validFiles.length > 0) {\n setFiles(prev => [...prev, ...validFiles]);\n uploadFiles(validFiles);\n }\n }, [files.length, maxFiles, maxFileSize, allowedFileTypes]);\n\n // 上传文件\n const uploadFiles = async (fileList: LocalFile[]) => {\n for (const localFile of fileList) {\n // 开始上传\n setFiles(prev => prev.map(f => \n f.id === localFile.id ? { ...f, status: 'uploading' } : f\n ));\n \n try {\n await uploadRequest({\n file: localFile.file,\n onProgress: (e) => {\n setFiles(prev => prev.map(f => \n f.id === localFile.id ? { ...f, progress: e.percent } : f\n ));\n },\n onSuccess: (response) => {\n setFiles(prev => prev.map(f => \n f.id === localFile.id ? { \n ...f, \n status: 'success', \n progress: 100,\n response \n } : f\n ));\n },\n onError: (error) => {\n setFiles(prev => prev.map(f => \n f.id === localFile.id ? { \n ...f, \n status: 'error',\n errorMessage: error.message || '上传失败'\n } : f\n ));\n message.error(`${localFile.name} 上传失败: ${error.message || '未知错误'}`);\n }\n });\n } catch (error) {\n console.error('上传处理错误:', error);\n setFiles(prev => prev.map(f => \n f.id === localFile.id ? { \n ...f, \n status: 'error',\n errorMessage: error instanceof Error ? error.message : '上传处理失败'\n } : f\n ));\n message.error(`${localFile.name} 上传失败`);\n }\n }\n };\n\n // 模拟上传过程\n const simulateUpload = async (uploadFilesList: LocalFile[]) => {\n uploadFilesList.forEach(localFile => {\n let progress = 0;\n const interval = setInterval(() => {\n progress += 10;\n setFiles(prev => prev.map(f => \n f.id === localFile.id ? { ...f, progress } : f\n ));\n \n if (progress >= 100) {\n clearInterval(interval);\n setTimeout(() => {\n // 模拟服务器响应\n const mockResponse = {\n code: 200,\n data: {\n fileId: Math.floor(Math.random() * 1000) + 1,\n tempUrl: `https://example.com/uploads/${localFile.name}`,\n fileName: localFile.name,\n fileType: getFileExtension(localFile.name)\n }\n };\n \n setFiles(prev => prev.map(f => \n f.id === localFile.id ? { \n ...f, \n status: 'success', \n progress: 100,\n response: mockResponse\n } : f\n ));\n }, 300);\n }\n }, 100);\n });\n };\n \n // 删除文件\n const handleRemoveFile = (id: string) => {\n setFiles(prev => prev.filter(file => file.id !== id));\n };\n \n // 触发文件选择\n const triggerFileSelect = () => {\n if (fileInputRef.current) {\n fileInputRef.current.click();\n }\n };\n \n // 处理拖拽事件\n const handleDragOver = useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (allowUpload) {\n setIsDragOver(true);\n }\n }, [allowUpload]);\n \n const handleDragLeave = useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (allowUpload) {\n setIsDragOver(false);\n }\n }, [allowUpload]);\n \n const handleDrop = useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragOver(false);\n \n if (allowUpload && e.dataTransfer.files && e.dataTransfer.files.length > 0) {\n handleFileSelect(Array.from(e.dataTransfer.files));\n }\n }, [allowUpload, handleFileSelect]);\n \n // 处理提交\n const handleSubmit = () => {\n if (!value.trim() && files.length === 0) {\n message.warning('请输入消息或选择文件');\n return;\n }\n\n const successFiles = files.filter(file => file.status === 'success');\n const uploadingFiles = files.filter(file => file.status === 'uploading');\n \n if (uploadingFiles.length > 0) {\n Modal.confirm({\n title: '文件上传中',\n content: `还有 ${uploadingFiles.length} 个文件正在上传,是否继续发送?`,\n okText: '发送已完成的',\n cancelText: '等待全部完成',\n onOk: () => {\n const formattedFiles = formatFilesForServer(successFiles);\n if (onSubmit) {\n onSubmit({ \n text: value, \n files: formattedFiles \n });\n }\n\n setValue('');\n setFiles(prev => prev.filter(f => f.status !== 'success'));\n },\n onCancel: () => {\n message.info('请等待文件上传完成后再发送');\n },\n });\n } else {\n const formattedFiles = formatFilesForServer(successFiles);\n \n if (onSubmit) {\n onSubmit({ \n text: value, \n files: formattedFiles \n });\n }\n \n setValue('');\n setFiles(prev => prev.filter(f => f.status !== 'success'));\n }\n };\n\n // 格式化文件列表为服务端格式\n const formatFilesForServer = (fileList: LocalFile[]): ServerFile[] => {\n return fileList\n .filter(file => file.status === 'success' && file.response?.data)\n .map(file => {\n const responseData = file.response.data;\n \n return {\n fileName: file.name,\n fileId: responseData.fileId || responseData.id || 0,\n tempUrl: responseData.tempUrl || responseData.url || '',\n type: responseData.fileType || getFileExtension(file.name),\n mimeType: file.type\n };\n });\n };\n \n // 处理输入框变化\n const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n setValue(newValue);\n onChange?.(newValue);\n };\n \n // 处理回车键\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n handleSubmit();\n }\n };\n \n // 渲染文件列表\n const renderFileList = () => {\n if (files.length === 0) return null;\n \n return (\n <div className={styles.fileListArea}>\n <div className={styles.fileList}>\n {files.map(file => (\n <div key={file.id} className={styles.fileCard}>\n <div className={styles.fileIcon}>\n {getFileIcon(file.type)}\n </div>\n <div className={styles.fileInfo}>\n <div className={styles.fileName}>\n <Tooltip title={file.name}>\n {file.name.length > 15 ? `${file.name.substring(0, 15)}...` : file.name}\n </Tooltip>\n </div>\n \n {file.status === 'uploading' ? (\n <div className={styles.uploadProgress}>\n <Progress \n percent={file.progress} \n size=\"small\" \n showInfo={false}\n strokeColor=\"#1890ff\"\n />\n </div>\n ) : (\n <div className={styles.fileSize}>\n {formatFileSize(file.size)}\n </div>\n )}\n </div>\n <button\n className={styles.fileRemoveBtn}\n onClick={() => handleRemoveFile(file.id)}\n disabled={file.status === 'uploading'}\n aria-label=\"删除文件\"\n >\n <CloseOutlined style={{ fontSize: 8 }} />\n </button>\n </div>\n ))}\n </div>\n </div>\n );\n };\n \n const containerClass = `${styles.container} ${isDragOver ? 'drag-over' : ''}`;\n const uploading = files.some(f => f.status === 'uploading');\n \n return (\n <div \n ref={containerRef}\n className={containerClass}\n onDragOver={allowUpload ? handleDragOver : undefined}\n onDragLeave={allowUpload ? handleDragLeave : undefined}\n onDrop={allowUpload ? handleDrop : undefined}\n >\n {allowUpload && files.length > 0 && renderFileList()}\n \n {/* 隐藏的原生 file input */}\n {allowUpload && (\n <input\n ref={fileInputRef}\n type=\"file\"\n multiple\n accept={allowedFileTypes.join(',')}\n style={{ display: 'none' }}\n onChange={(e) => {\n if (e.target.files) {\n handleFileSelect(Array.from(e.target.files));\n e.target.value = '';\n }\n }}\n />\n )}\n \n <div className={styles.mainArea}>\n <div className={styles.senderWrap}>\n {clearBtnShow && (\n <Popconfirm\n title=\"确定要清空聊天记录吗?\"\n onConfirm={onClear}\n placement=\"top\"\n okText=\"确定\"\n cancelText=\"取消\"\n disabled={uploading || loading}\n >\n <button\n className={`${styles.iconButton} ${styles.clearButton}`}\n disabled={uploading || loading}\n aria-label=\"清空聊天记录\"\n >\n <ClearOutlined />\n </button>\n </Popconfirm>\n )}\n \n <div className={styles.inputAndButtons}>\n <div className={styles.textAreaWrapper}>\n <Input.TextArea\n className={styles.textArea}\n value={value}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder=\"请输入消息...\"\n disabled={uploading || loading}\n autoSize={{ minRows: 1, maxRows: 4 }}\n style={{\n border: 'none',\n boxShadow: 'none',\n outline: 'none',\n padding: 0,\n }}\n />\n </div>\n \n <div className={styles.buttonGroup}>\n {allowUpload && (\n <Tooltip title=\"上传文件\">\n <button\n className={`${styles.iconButton} ${styles.uploadButton}`}\n onClick={triggerFileSelect}\n disabled={uploading || loading}\n aria-label=\"上传文件\"\n >\n <PaperClipOutlined />\n </button>\n </Tooltip>\n )}\n \n <Tooltip title={loading ? \"停止生成\" : \"发送消息\"}>\n <button\n className={`${styles.iconButton} ${styles.sendButton} ${loading ? 'stop' : ''}`}\n onClick={loading ? onStop : handleSubmit}\n disabled={uploading}\n aria-label={loading ? \"停止生成\" : \"发送消息\"}\n >\n {loading ? <LoadingOutlined /> : <ArrowUpOutlined />}\n </button>\n </Tooltip>\n </div>\n </div>\n </div>\n \n <div className={styles.tip}>\n 内容由AI生成,无法确保真实准确,仅供参考\n </div>\n </div>\n </div>\n );\n};\n\nexport default XAdkSender;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useState","useRef","useCallback","Popconfirm","message","Tooltip","Input","Modal","ClearOutlined","LoadingOutlined","ArrowUpOutlined","PaperClipOutlined","useStyles","FileGallery","jsx","_jsx","jsxs","_jsxs","XAdkSender","_ref","_ref$clearBtnShow","clearBtnShow","_ref$allowUpload","allowUpload","_ref$loading","loading","_ref$disabled","disabled","_ref$uploadRequest","uploadRequest","onClear","onChange","onSubmit","onStop","onFilesChange","_ref$maxFileSize","maxFileSize","_ref$allowedFileTypes","allowedFileTypes","_ref$maxFiles","maxFiles","suffix","header","prefix","footer","styles","_useState","_useState2","_slicedToArray","value","setValue","_useState3","_useState4","files","setFiles","_useState5","_useState6","isDragOver","setIsDragOver","containerRef","fileInputRef","uploadRef","generateId","Date","now","toString","Math","random","substr","checkFileType","file","length","some","type","includes","mainType","split","startsWith","checkFileSize","maxSize","size","validateFile","valid","concat","getFileExtension","filename","ext","pop","toLowerCase","handleFileSelect","selectedFiles","fileArray","Array","from","validFiles","forEach","validation","push","id","uid","name","progress","status","response","error","prev","_toConsumableArray","uploadFiles","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","fileList","_iterator","_step","_loop","wrap","_callee$","_context2","next","_createForOfIteratorHelper","localFile","_loop$","_context","map","f","_objectSpread","onProgress","e","percent","onSuccess","onError","errorMessage","t0","console","Error","stop","s","n","done","delegateYield","t1","finish","_x","apply","arguments","simulateUpload","_ref3","_callee2","uploadFilesList","_callee2$","_context3","interval","setInterval","clearInterval","setTimeout","mockResponse","code","data","fileId","floor","tempUrl","fileName","fileType","_x2","handleRemoveFile","filter","triggerFileSelect","current","click","handleDragOver","preventDefault","stopPropagation","handleDragLeave","handleDrop","dataTransfer","handleSubmit","trim","warning","successFiles","uploadingFiles","confirm","title","content","okText","cancelText","onOk","formattedFiles","formatFilesForServer","text","onCancel","info","_file$response","responseData","url","mimeType","handleInputChange","newValue","target","handleKeyDown","key","shiftKey","renderFileList","onRemove","containerClass","container","uploading","isDisabled","SendButton","props","children","className","iconButton","sendButton","onClick","UploadButton","uploadButton","ClearButton","onConfirm","placement","clearButton","actionsComponents","renderSlot","slot","oriNode","undefined","result","components","defaultSuffix","buttonGroup","ref","onDragOver","onDragLeave","onDrop","multiple","accept","join","style","display","mainArea","senderWrap","inputAndButtons","textAreaWrapper","TextArea","textArea","onKeyDown","placeholder","autoSize","minRows","maxRows","border","boxShadow","outline","padding","tip"],"sources":["../../../../src/components/XAdkSender/index.tsx"],"sourcesContent":["import React, { useState, useRef, useCallback } from 'react';\nimport {\n Popconfirm, \n message, \n Progress,\n Tooltip,\n Input,\n Modal,\n} from 'antd';\nimport { \n ClearOutlined, \n LoadingOutlined, \n ArrowUpOutlined,\n PaperClipOutlined,\n CloseOutlined,\n} from '@ant-design/icons';\nimport { XAdkSenderProps, ServerFile, LocalFile, ActionsComponents } from '../../types/XAdkSender';\nimport { useStyles } from './styles';\nimport FileGallery from './FileGallery';\n\n\nconst XAdkSender: React.FC<XAdkSenderProps> = ({\n clearBtnShow = true,\n allowUpload = false,\n loading = false,\n disabled = false,\n uploadRequest = () => {},\n onClear,\n onChange,\n onSubmit,\n onStop,\n onFilesChange,\n maxFileSize = 10,\n allowedFileTypes = ['image/*', 'application/pdf', 'text/plain'],\n maxFiles = 5,\n suffix,\n header,\n prefix,\n footer,\n}) => {\n const styles = useStyles();\n const [value, setValue] = useState<string>('');\n const [files, setFiles] = useState<LocalFile[]>([]);\n const [isDragOver, setIsDragOver] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n const uploadRef = useRef<any>(null);\n \n // 生成唯一ID\n const generateId = () => {\n return Date.now().toString(36) + Math.random().toString(36).substr(2);\n };\n \n \n // 检查文件类型\n const checkFileType = (file: File): boolean => {\n if (!allowedFileTypes.length) return true;\n \n return allowedFileTypes.some(type => {\n if (type.includes('/*')) {\n const mainType = type.split('/')[0];\n return file.type.startsWith(mainType);\n }\n return file.type === type;\n });\n };\n \n // 检查文件大小\n const checkFileSize = (file: File): boolean => {\n const maxSize = maxFileSize * 1024 * 1024;\n return file.size <= maxSize;\n };\n \n // 验证文件\n const validateFile = (file: File): { valid: boolean; message?: string } => {\n if (files.length >= maxFiles) {\n return { valid: false, message: `最多只能上传 ${maxFiles} 个文件` };\n }\n \n if (!checkFileSize(file)) {\n return { valid: false, message: `文件大小不能超过 ${maxFileSize}MB` };\n }\n \n if (!checkFileType(file)) {\n return { valid: false, message: '不支持的文件类型' };\n }\n \n return { valid: true };\n };\n\n // 获取文件扩展名\n const getFileExtension = (filename: string): string => {\n const ext = filename.split('.').pop();\n return ext ? ext.toLowerCase() : '';\n };\n\n // 处理文件选择\n const handleFileSelect = useCallback((selectedFiles: File[]) => {\n const fileArray = Array.from(selectedFiles);\n const validFiles: LocalFile[] = [];\n \n fileArray.forEach(file => {\n const validation = validateFile(file);\n if (validation.valid) {\n validFiles.push({\n id: generateId(),\n uid: generateId(),\n name: file.name,\n size: file.size,\n type: file.type,\n file,\n progress: 0,\n status: 'pending',\n response: null\n });\n } else {\n message.error(validation.message);\n }\n });\n \n if (validFiles.length > 0) {\n setFiles(prev => [...prev, ...validFiles]);\n uploadFiles(validFiles);\n }\n }, [files.length, maxFiles, maxFileSize, allowedFileTypes]);\n\n // 上传文件\n const uploadFiles = async (fileList: LocalFile[]) => {\n for (const localFile of fileList) {\n // 开始上传\n setFiles(prev => prev.map(f => \n f.id === localFile.id ? { ...f, status: 'uploading' } : f\n ));\n \n try {\n await uploadRequest({\n file: localFile.file,\n onProgress: (e) => {\n setFiles(prev => prev.map(f => \n f.id === localFile.id ? { ...f, progress: e.percent } : f\n ));\n },\n onSuccess: (response) => {\n setFiles(prev => prev.map(f => \n f.id === localFile.id ? { \n ...f, \n status: 'success', \n progress: 100,\n response \n } : f\n ));\n },\n onError: (error) => {\n setFiles(prev => prev.map(f => \n f.id === localFile.id ? { \n ...f, \n status: 'error',\n errorMessage: error.message || '上传失败'\n } : f\n ));\n message.error(`${localFile.name} 上传失败: ${error.message || '未知错误'}`);\n }\n });\n } catch (error) {\n console.error('上传处理错误:', error);\n setFiles(prev => prev.map(f => \n f.id === localFile.id ? { \n ...f, \n status: 'error',\n errorMessage: error instanceof Error ? error.message : '上传处理失败'\n } : f\n ));\n message.error(`${localFile.name} 上传失败`);\n }\n }\n };\n\n // 模拟上传过程\n const simulateUpload = async (uploadFilesList: LocalFile[]) => {\n uploadFilesList.forEach(localFile => {\n let progress = 0;\n const interval = setInterval(() => {\n progress += 10;\n setFiles(prev => prev.map(f => \n f.id === localFile.id ? { ...f, progress } : f\n ));\n \n if (progress >= 100) {\n clearInterval(interval);\n setTimeout(() => {\n // 模拟服务器响应\n const mockResponse = {\n code: 200,\n data: {\n fileId: Math.floor(Math.random() * 1000) + 1,\n tempUrl: `https://example.com/uploads/${localFile.name}`,\n fileName: localFile.name,\n fileType: getFileExtension(localFile.name)\n }\n };\n \n setFiles(prev => prev.map(f => \n f.id === localFile.id ? { \n ...f, \n status: 'success', \n progress: 100,\n response: mockResponse\n } : f\n ));\n }, 300);\n }\n }, 100);\n });\n };\n \n // 删除文件\n const handleRemoveFile = (id: string) => {\n setFiles(prev => prev.filter(file => file.id !== id));\n };\n \n // 触发文件选择\n const triggerFileSelect = () => {\n if (fileInputRef.current) {\n fileInputRef.current.click();\n }\n };\n \n // 处理拖拽事件\n const handleDragOver = useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (allowUpload) {\n setIsDragOver(true);\n }\n }, [allowUpload]);\n \n const handleDragLeave = useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (allowUpload) {\n setIsDragOver(false);\n }\n }, [allowUpload]);\n \n const handleDrop = useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragOver(false);\n \n if (allowUpload && e.dataTransfer.files && e.dataTransfer.files.length > 0) {\n handleFileSelect(Array.from(e.dataTransfer.files));\n }\n }, [allowUpload, handleFileSelect]);\n \n // 处理提交\n const handleSubmit = () => {\n if (!value.trim() && files.length === 0) {\n message.warning('请输入消息或选择文件');\n return;\n }\n\n const successFiles = files.filter(file => file.status === 'success');\n const uploadingFiles = files.filter(file => file.status === 'uploading');\n \n if (uploadingFiles.length > 0) {\n Modal.confirm({\n title: '文件上传中',\n content: `还有 ${uploadingFiles.length} 个文件正在上传,是否继续发送?`,\n okText: '发送已完成的',\n cancelText: '等待全部完成',\n onOk: () => {\n const formattedFiles = formatFilesForServer(successFiles);\n if (onSubmit) {\n onSubmit({ \n text: value, \n files: formattedFiles \n });\n }\n\n setValue('');\n setFiles(prev => prev.filter(f => f.status !== 'success'));\n },\n onCancel: () => {\n message.info('请等待文件上传完成后再发送');\n },\n });\n } else {\n const formattedFiles = formatFilesForServer(successFiles);\n \n if (onSubmit) {\n onSubmit({ \n text: value, \n files: formattedFiles \n });\n }\n \n setValue('');\n setFiles(prev => prev.filter(f => f.status !== 'success'));\n }\n };\n\n // 格式化文件列表为服务端格式\n const formatFilesForServer = (fileList: LocalFile[]): ServerFile[] => {\n return fileList\n .filter(file => file.status === 'success' && file.response?.data)\n .map(file => {\n const responseData = file.response.data;\n \n return {\n fileName: file.name,\n fileId: responseData.fileId || responseData.id || 0,\n tempUrl: responseData.tempUrl || responseData.url || '',\n type: responseData.fileType || getFileExtension(file.name),\n mimeType: file.type\n };\n });\n };\n \n // 处理输入框变化\n const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n setValue(newValue);\n onChange?.(newValue);\n };\n \n // 处理回车键\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n handleSubmit();\n }\n };\n \n // 渲染文件列表 - 使用新的 FileGallery 组件\n const renderFileList = () => {\n if (files.length === 0) return null;\n\n return (\n <FileGallery\n files={files}\n onRemove={handleRemoveFile}\n />\n );\n };\n \n const containerClass = `${styles.container} ${isDragOver ? 'drag-over' : ''}`;\n const uploading = files.some(f => f.status === 'uploading');\n const isDisabled = disabled || uploading || loading;\n\n // 定义按钮组件\n const SendButton = (props: any) => (\n <Tooltip title={loading ? \"停止生成\" : \"发送消息\"}>\n <button\n className={`${styles.iconButton} ${styles.sendButton} ${loading ? 'stop' : ''}`}\n onClick={loading ? onStop : handleSubmit}\n disabled={uploading || disabled}\n aria-label={loading ? \"停止生成\" : \"发送消息\"}\n {...props}\n >\n {loading ? <LoadingOutlined /> : <ArrowUpOutlined />}\n </button>\n </Tooltip>\n );\n\n const UploadButton = (props: any) => (\n <Tooltip title=\"上传文件\">\n <button\n className={`${styles.iconButton} ${styles.uploadButton}`}\n onClick={triggerFileSelect}\n disabled={isDisabled}\n aria-label=\"上传文件\"\n {...props}\n >\n <PaperClipOutlined />\n </button>\n </Tooltip>\n );\n\n const ClearButton = (props: any) => (\n <Popconfirm\n title=\"确定要清空聊天记录吗?\"\n onConfirm={onClear}\n placement=\"top\"\n okText=\"确定\"\n cancelText=\"取消\"\n disabled={isDisabled}\n >\n <button\n className={`${styles.iconButton} ${styles.clearButton}`}\n disabled={isDisabled}\n aria-label=\"清空聊天记录\"\n {...props}\n >\n <ClearOutlined />\n </button>\n </Popconfirm>\n );\n\n const actionsComponents: ActionsComponents = {\n SendButton,\n UploadButton,\n ClearButton,\n };\n\n // 渲染插槽内容\n const renderSlot = (\n slot: React.ReactNode | false | ((oriNode: React.ReactNode, info: { components: ActionsComponents }) => React.ReactNode | false) | undefined,\n oriNode: React.ReactNode\n ): React.ReactNode | null => {\n if (slot === false) return null;\n if (slot === undefined) return oriNode;\n if (typeof slot === 'function') {\n const result = slot(oriNode, { components: actionsComponents });\n return result === false ? null : result;\n }\n return slot;\n };\n\n // 默认的后缀内容(操作按钮组)\n const defaultSuffix = (\n <div className={styles.buttonGroup}>\n {allowUpload && <UploadButton />}\n <SendButton />\n </div>\n );\n\n return (\n <div\n ref={containerRef}\n className={containerClass}\n onDragOver={allowUpload ? handleDragOver : undefined}\n onDragLeave={allowUpload ? handleDragLeave : undefined}\n onDrop={allowUpload ? handleDrop : undefined}\n >\n {/* 头部插槽 */}\n {renderSlot(header, false)}\n\n {allowUpload && files.length > 0 && renderFileList()}\n\n {/* 隐藏的原生 file input */}\n {allowUpload && (\n <input\n ref={fileInputRef}\n type=\"file\"\n multiple\n accept={allowedFileTypes.join(',')}\n style={{ display: 'none' }}\n onChange={(e) => {\n if (e.target.files) {\n handleFileSelect(Array.from(e.target.files));\n e.target.value = '';\n }\n }}\n />\n )}\n\n <div className={styles.mainArea}>\n <div className={styles.senderWrap}>\n {/* 清除按钮 */}\n {clearBtnShow && <ClearButton />}\n\n <div className={styles.inputAndButtons}>\n {/* 前缀插槽 */}\n {renderSlot(prefix, false)}\n\n <div className={styles.textAreaWrapper}>\n <Input.TextArea\n className={styles.textArea}\n value={value}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder=\"请输入消息...\"\n disabled={isDisabled}\n autoSize={{ minRows: 1, maxRows: 4 }}\n style={{\n border: 'none',\n boxShadow: 'none',\n outline: 'none',\n padding: 0,\n }}\n />\n </div>\n\n {/* 后缀插槽(默认显示操作按钮) */}\n {renderSlot(suffix, defaultSuffix)}\n </div>\n </div>\n\n {/* 底部插槽(默认显示提示文字) */}\n {renderSlot(\n footer,\n <div className={styles.tip}>\n 内容由AI生成,无法确保真实准确,仅供参考\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default XAdkSender;\n"],"mappings":"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"}
@@ -1,14 +1,5 @@
1
1
  export declare const useStyles: () => {
2
2
  container: string;
3
- fileListArea: string;
4
- fileList: string;
5
- fileCard: string;
6
- fileSize: string;
7
- uploadProgress: string;
8
- fileIcon: string;
9
- fileInfo: string;
10
- fileName: string;
11
- fileRemoveBtn: string;
12
3
  mainArea: string;
13
4
  senderWrap: string;
14
5
  inputAndButtons: string;
@@ -1,50 +1,33 @@
1
1
  import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
2
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21;
3
- import { css } from '@emotion/css';
2
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12;
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
  // 容器样式 - 最外层边框
8
- container: css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n background: #fff;\n position: relative;\n overflow: hidden;\n padding: 10px 15px;\n overflow: visible;\n border: 2px solid transparent;\n transition: all 0.3s ease;\n \n &.drag-over {\n border: 2px dashed #000;\n background: rgba(0, 0, 0, 0.02);\n }\n "]))),
9
- // 文件列表区域
10
- fileListArea: css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n padding: 12px 16px 0 16px;\n max-height: 150px;\n overflow-y: auto;\n \n &::-webkit-scrollbar {\n width: 4px;\n }\n \n &::-webkit-scrollbar-track {\n background: #f5f5f5;\n border-radius: 2px;\n }\n \n &::-webkit-scrollbar-thumb {\n background: #d9d9d9;\n border-radius: 2px;\n }\n \n &::-webkit-scrollbar-thumb:hover {\n background: #bfbfbf;\n }\n "]))),
11
- // 文件列表
12
- fileList: css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-bottom: 12px;\n "]))),
13
- // 文件卡片
14
- fileCard: css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n position: relative;\n display: flex;\n align-items: center;\n padding: 8px 12px;\n height: 64px;\n box-sizing: border-box;\n background: #fafafa;\n border: 1px solid #f0f0f0;\n border-radius: 8px;\n min-width: 0;\n flex: 0 0 auto;\n max-width: 200px;\n \n &:hover {\n background: #f5f5f5;\n }\n "]))),
15
- fileSize: css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n font-size: 11px;\n color: #8c8c8c;\n line-height: 1.4;\n height: 16px;\n display: flex;\n align-items: center;\n "]))),
16
- // 进度条容器
17
- uploadProgress: css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n height: 16px;\n display: flex;\n align-items: center;\n \n .ant-progress {\n width: 100%;\n margin: 0;\n }\n \n .ant-progress-inner {\n height: 4px !important;\n }\n \n .ant-progress-bg {\n height: 4px !important;\n }\n "]))),
18
- // 文件图标
19
- fileIcon: css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n font-size: 18px;\n color: #1890ff;\n margin-right: 10px;\n flex-shrink: 0;\n "]))),
20
- // 文件信息
21
- fileInfo: css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n flex: 1;\n min-width: 0;\n overflow: hidden;\n "]))),
22
- // 文件名
23
- fileName: css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n font-size: 12px;\n font-weight: 500;\n color: #262626;\n margin-bottom: 2px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n line-height: 1.4;\n "]))),
24
- // 文件删除按钮 - 黑底白字
25
- fileRemoveBtn: css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n position: absolute;\n top: -4px;\n right: -4px;\n width: 16px;\n height: 16px;\n min-width: 16px;\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: 8px;\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 &:active {\n transform: scale(0.95);\n }\n "]))),
8
+ container: css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n background: #fff;\n position: relative;\n overflow: hidden;\n padding: 10px 15px;\n overflow: visible;\n border: 2px solid transparent;\n transition: all 0.3s ease;\n\n &.drag-over {\n border: 2px dashed #000;\n background: rgba(0, 0, 0, 0.02);\n }\n "]))),
26
9
  // 主内容区域
27
- mainArea: css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n //\n "]))),
10
+ mainArea: css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n //\n "]))),
28
11
  // 发送区域
29
- senderWrap: css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n gap: 12px;\n background: var(--yb-input-bg-color);\n border: .5px solid var(--widget-line, rgba(0, 0, 0, .08));\n border-radius: 20px;\n box-sizing: border-box;\n caret-color: var(--yb-input-caret-color);\n flex: auto;\n font-size: 14px;\n gap: 6px;\n line-height: 22px;\n padding: 7px 12px 7px 7px;\n position: relative;\n transition-duration: .2s;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, box-shadow;\n transition-timing-function: linear;\n box-shadow: 0 6px 30px 0 rgba(0,0,0,.08);\n "]))),
12
+ senderWrap: css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n gap: 12px;\n background: var(--yb-input-bg-color);\n border: 0.5px solid var(--widget-line, rgba(0, 0, 0, 0.08));\n border-radius: 20px;\n box-sizing: border-box;\n caret-color: var(--yb-input-caret-color);\n flex: auto;\n font-size: 14px;\n gap: 6px;\n line-height: 22px;\n padding: 7px 12px 7px 7px;\n position: relative;\n transition-duration: 0.2s;\n transition-property:\n color, background-color, border-color, text-decoration-color, fill,\n stroke, box-shadow;\n transition-timing-function: linear;\n box-shadow: 0 6px 30px 0 rgba(0, 0, 0, 0.08);\n "]))),
30
13
  // 输入框和按钮容器
31
- inputAndButtons: css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n flex: 1;\n display: flex;\n align-items: flex-end;\n gap: 8px;\n "]))),
14
+ inputAndButtons: css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n flex: 1;\n display: flex;\n align-items: flex-end;\n gap: 8px;\n "]))),
32
15
  // 文本输入框容器
33
- textAreaWrapper: css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n flex: 1;\n display: flex;\n align-items: center;\n background: #fff;\n padding: 0 16px;\n min-height: 44px;\n \n /* \u79FB\u9664\u6240\u6709\u84DD\u8272\u6548\u679C */\n &:focus-within {\n border-color: #d9d9d9;\n box-shadow: none;\n }\n \n .ant-input:disabled {\n background: transparent !important;\n }\n \n &::placeholder {\n color: #bfbfbf;\n }\n "]))),
16
+ textAreaWrapper: css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n flex: 1;\n display: flex;\n align-items: center;\n background: #fff;\n padding: 0 16px;\n min-height: 44px;\n\n /* \u79FB\u9664\u6240\u6709\u84DD\u8272\u6548\u679C */\n &:focus-within {\n border-color: #d9d9d9;\n box-shadow: none;\n }\n\n .ant-input:disabled {\n background: transparent !important;\n }\n\n &::placeholder {\n color: #bfbfbf;\n }\n "]))),
34
17
  // 文本输入框
35
- textArea: css(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral(["\n flex: 1;\n border: none;\n background: transparent;\n font-size: 14px;\n line-height: 1.5;\n padding: 12px 0;\n outline: none;\n color: #262626;\n "]))),
18
+ textArea: css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n flex: 1;\n border: none;\n background: transparent;\n font-size: 14px;\n line-height: 1.5;\n padding: 12px 0;\n outline: none;\n color: #262626;\n "]))),
36
19
  // 按钮组
37
- buttonGroup: css(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral(["\n display: flex;\n gap: 8px;\n align-items: center;\n height: 44px;\n "]))),
20
+ buttonGroup: css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n display: flex;\n gap: 8px;\n align-items: center;\n height: 44px;\n "]))),
38
21
  // 按钮统一样式
39
- iconButton: css(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral(["\n width: 36px;\n height: 36px;\n min-width: 36px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n \n &:hover {\n transform: translateY(-1px);\n }\n \n &:active {\n transform: translateY(0);\n }\n "]))),
22
+ iconButton: css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n width: 36px;\n height: 36px;\n min-width: 36px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n\n &:hover {\n transform: translateY(-1px);\n }\n\n &:active {\n transform: translateY(0);\n }\n "]))),
40
23
  // 清空按钮
41
- clearButton: css(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral(["\n border: 1px solid #f0f0f0;\n background: #fff;\n color: #8c8c8c;\n \n &:hover {\n border-color: #d9d9d9;\n color: #262626;\n background: #fafafa;\n }\n \n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n "]))),
24
+ clearButton: css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n border: 1px solid #f0f0f0;\n background: #fff;\n color: #8c8c8c;\n\n &:hover {\n border-color: #d9d9d9;\n color: #262626;\n background: #fafafa;\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n "]))),
42
25
  // 上传按钮
43
- uploadButton: css(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral(["\n border: 1px solid #f0f0f0;\n background: #fff;\n \n &:hover {\n //\n }\n \n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n border-color: #f0f0f0;\n background: #fafafa;\n }\n "]))),
26
+ uploadButton: css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n border: 1px solid #f0f0f0;\n background: #fff;\n\n &:hover {\n //\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n border-color: #f0f0f0;\n background: #fafafa;\n }\n "]))),
44
27
  // 发送按钮
45
- sendButton: css(_templateObject20 || (_templateObject20 = _taggedTemplateLiteral(["\n background: #000;\n border: none;\n color: #fff;\n \n &:hover:not(:disabled) {\n background: #333; /* \u60AC\u505C\u72B6\u6001 */\n }\n \n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n background: #cccccc;\n color: #fff;\n }\n \n &.stop {\n //\n \n &:hover:not(:disabled) {\n //\n }\n \n &:disabled {\n background: #cccccc; /* \u7981\u7528\u72B6\u6001\u4E5F\u4FDD\u6301\u6DE1\u7070\u8272 */\n }\n }\n "]))),
28
+ sendButton: css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n background: #000;\n border: none;\n color: #fff;\n\n &:hover:not(:disabled) {\n background: #333; /* \u60AC\u505C\u72B6\u6001 */\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n background: #cccccc;\n color: #fff;\n }\n\n &.stop {\n //\n\n &:hover:not(:disabled) {\n //\n }\n\n &:disabled {\n background: #cccccc; /* \u7981\u7528\u72B6\u6001\u4E5F\u4FDD\u6301\u6DE1\u7070\u8272 */\n }\n }\n "]))),
46
29
  // 底部提示
47
- tip: css(_templateObject21 || (_templateObject21 = _taggedTemplateLiteral(["\n margin: 12px 0;\n text-align: center;\n font-size: 12px;\n color: #8c8c8c;\n "])))
30
+ tip: css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n margin: 12px 0;\n text-align: center;\n font-size: 12px;\n color: #8c8c8c;\n "])))
48
31
  };
49
32
  });
50
33
  //# sourceMappingURL=styles.js.map