@tencentcloud/chat-uikit-react 0.0.3 → 1.0.1

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 (316) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/cjs/_virtual/_commonjsHelpers.js +1 -0
  3. package/dist/cjs/_virtual/tim-js.js +1 -0
  4. package/dist/cjs/components/Checkbox/index.d.ts +16 -0
  5. package/dist/cjs/components/ConversationCreate/ConversationCreatGroupDetail.js +1 -1
  6. package/dist/cjs/components/ConversationCreate/ConversationCreate.js +1 -1
  7. package/dist/cjs/components/ConversationCreate/ConversationCreateUserSelectList.js +1 -1
  8. package/dist/cjs/components/ConversationCreate/hooks/useConversationCreate.js +1 -1
  9. package/dist/cjs/components/ConversationPreview/ConversationPreview.js +1 -1
  10. package/dist/cjs/components/ConversationPreview/ConversationPreviewContent.js +1 -1
  11. package/dist/cjs/components/ConversationPreview/utils.js +1 -1
  12. package/dist/cjs/components/ConversationSearch/ConversationSearchResult.js +1 -1
  13. package/dist/cjs/components/DivWithEdit/DivWithEdit.d.ts +16 -0
  14. package/dist/cjs/components/EmptyStateIndicator/EmptyStateIndicator.d.ts +5 -1
  15. package/dist/cjs/components/Icon/Icon.d.ts +14 -0
  16. package/dist/cjs/components/Icon/config.js +1 -1
  17. package/dist/cjs/components/Icon/images/like.png.js +1 -0
  18. package/dist/cjs/components/Icon/images/liked.png.js +1 -0
  19. package/dist/cjs/components/Icon/images/living.png.js +1 -0
  20. package/dist/cjs/components/Icon/images/member.png.js +1 -0
  21. package/dist/cjs/components/Icon/images/owner.png.js +1 -0
  22. package/dist/cjs/components/Icon/images/send.png.js +1 -0
  23. package/dist/cjs/components/Icon/images/union.png.js +1 -0
  24. package/dist/cjs/components/Icon/images/unlike.png.js +1 -0
  25. package/dist/cjs/components/Icon/images/unliked.png.js +1 -0
  26. package/dist/cjs/components/Icon/images/ununion.png.js +1 -0
  27. package/dist/cjs/components/Icon/images/unvector.png.js +1 -0
  28. package/dist/cjs/components/Icon/images/vector.png.js +1 -0
  29. package/dist/cjs/components/Icon/images/voice.png.js +1 -0
  30. package/dist/cjs/components/Icon/type.d.ts +47 -0
  31. package/dist/cjs/components/Icon/type.js +1 -1
  32. package/dist/cjs/components/Input/Input.d.ts +7 -1
  33. package/dist/cjs/components/Model/index.d.ts +9 -0
  34. package/dist/cjs/components/Plugins/index.d.ts +17 -0
  35. package/dist/cjs/components/Plugins/index.js +1 -1
  36. package/dist/cjs/components/Popup/index.d.ts +12 -0
  37. package/dist/cjs/components/Switch/Switch.d.ts +16 -0
  38. package/dist/cjs/components/TUIChat/TUIChat.d.ts +8 -2
  39. package/dist/cjs/components/TUIChat/TUIChat.js +1 -1
  40. package/dist/cjs/components/TUIChat/TUIChatState.js +1 -1
  41. package/dist/cjs/components/TUIChat/hooks/useCreateMessage.d.ts +29 -1
  42. package/dist/cjs/components/TUIChat/hooks/useCreateMessage.js +1 -1
  43. package/dist/cjs/components/TUIChat/hooks/useCreateTUIChatStateContext.js +1 -1
  44. package/dist/cjs/components/TUIChat/hooks/useHandleMessage.js +1 -1
  45. package/dist/cjs/components/TUIChat/hooks/useHandleMessageList.js +1 -1
  46. package/dist/cjs/components/TUIChat/hooks/useMessageReceviedListener.js +1 -1
  47. package/dist/cjs/components/TUIChat/unitls.js +1 -1
  48. package/dist/cjs/components/TUIChatHeader/TUIChatHeader.d.ts +2 -0
  49. package/dist/cjs/components/TUIChatHeader/TUIChatHeader.js +1 -1
  50. package/dist/cjs/components/TUIChatHeader/TUIChatHeaderDefault.d.ts +7 -3
  51. package/dist/cjs/components/TUIChatHeader/TUIChatHeaderDefault.js +1 -1
  52. package/dist/cjs/components/TUIConversation/TUIConversation.js +1 -1
  53. package/dist/cjs/components/TUIConversationList/TUIConversationList.js +1 -1
  54. package/dist/cjs/components/TUIConversationList/hooks/useConversationList.js +1 -1
  55. package/dist/cjs/components/TUIConversationList/hooks/useConversationUpdate.js +1 -1
  56. package/dist/cjs/components/TUIKit/TUIKit.d.ts +2 -1
  57. package/dist/cjs/components/TUIKit/TUIKit.js +1 -1
  58. package/dist/cjs/components/TUIKit/hooks/useTUIKit.d.ts +2 -1
  59. package/dist/cjs/components/TUIKit/hooks/useTUIKit.js +1 -1
  60. package/dist/cjs/components/TUIManage/TUIManage.js +1 -1
  61. package/dist/cjs/components/TUIMessage/MessageAudio.js +1 -1
  62. package/dist/cjs/components/TUIMessage/MessageAvatar.js +1 -0
  63. package/dist/cjs/components/TUIMessage/MessageBubble.js +1 -1
  64. package/dist/cjs/components/TUIMessage/MessageContext.d.ts +3 -1
  65. package/dist/cjs/components/TUIMessage/MessageContext.js +1 -1
  66. package/dist/cjs/components/TUIMessage/MessageCustom.js +1 -1
  67. package/dist/cjs/components/TUIMessage/MessageFile.js +1 -1
  68. package/dist/cjs/components/TUIMessage/MessageImage.js +1 -1
  69. package/dist/cjs/components/TUIMessage/MessageMerger.js +1 -1
  70. package/dist/cjs/components/TUIMessage/MessageName.js +1 -0
  71. package/dist/cjs/components/TUIMessage/MessagePlugins.d.ts +24 -0
  72. package/dist/cjs/components/TUIMessage/MessagePlugins.js +1 -1
  73. package/dist/cjs/components/TUIMessage/MessageProgress.js +1 -0
  74. package/dist/cjs/components/TUIMessage/MessageRevoke.js +1 -1
  75. package/dist/cjs/components/TUIMessage/MessageStatus.js +1 -1
  76. package/dist/cjs/components/TUIMessage/MessageSystem.js +1 -1
  77. package/dist/cjs/components/TUIMessage/MessageText.js +1 -1
  78. package/dist/cjs/components/TUIMessage/MessageTip.js +1 -1
  79. package/dist/cjs/components/TUIMessage/TUIMessage.d.ts +23 -3
  80. package/dist/cjs/components/TUIMessage/TUIMessage.js +1 -1
  81. package/dist/cjs/components/TUIMessage/TUIMessageDefault.js +1 -1
  82. package/dist/cjs/components/TUIMessage/hooks/useMessageContextHandler.js +1 -1
  83. package/dist/cjs/components/TUIMessage/hooks/useMessageHandler.js +1 -1
  84. package/dist/cjs/components/TUIMessage/hooks/useMessagePluginElement.js +1 -1
  85. package/dist/cjs/components/TUIMessage/hooks/useMessageReply.js +1 -1
  86. package/dist/cjs/components/TUIMessage/utils/index.js +1 -1
  87. package/dist/cjs/components/TUIMessageInput/EmojiPicker.js +1 -1
  88. package/dist/cjs/components/TUIMessageInput/InputPluginsDefalut.js +1 -1
  89. package/dist/cjs/components/TUIMessageInput/InputQuoteDefalut.js +1 -1
  90. package/dist/cjs/components/TUIMessageInput/TUIForward.js +1 -1
  91. package/dist/cjs/components/TUIMessageInput/TUIMessageInput.d.ts +18 -7
  92. package/dist/cjs/components/TUIMessageInput/TUIMessageInput.js +1 -1
  93. package/dist/cjs/components/TUIMessageInput/TUIMessageInputDefault.js +1 -1
  94. package/dist/cjs/components/TUIMessageInput/Transmitter.js +1 -0
  95. package/dist/cjs/components/TUIMessageInput/hooks/useCreateMessageInputContext.js +1 -1
  96. package/dist/cjs/components/TUIMessageInput/hooks/useEmojiPicker.js +1 -1
  97. package/dist/cjs/components/TUIMessageInput/hooks/useHandleForwardMessage.js +1 -1
  98. package/dist/cjs/components/TUIMessageInput/hooks/useHandleQuoteMessage.js +1 -1
  99. package/dist/cjs/components/TUIMessageInput/hooks/useMessageInputState.js +1 -1
  100. package/dist/cjs/components/TUIMessageInput/hooks/useMessageInputText.js +1 -1
  101. package/dist/cjs/components/TUIMessageInput/hooks/useUploadPicker.js +1 -1
  102. package/dist/cjs/components/TUIMessageList/TUIMessageList.d.ts +3 -1
  103. package/dist/cjs/components/TUIMessageList/TUIMessageList.js +1 -1
  104. package/dist/cjs/components/TUIMessageList/hooks/useMessageListElement.js +1 -1
  105. package/dist/cjs/components/TUIProfile/TUIProfile.js +1 -1
  106. package/dist/cjs/components/TUIProfile/TUIProfileDefault.js +1 -1
  107. package/dist/cjs/components/TUIProfile/hooks/useMyProfile.js +1 -1
  108. package/dist/cjs/components/Toast/index.d.ts +11 -0
  109. package/dist/cjs/components/untils.js +1 -1
  110. package/dist/cjs/constants.js +1 -1
  111. package/dist/cjs/context/ComponentContext.d.ts +1 -1
  112. package/dist/cjs/context/TUIChatActionContext.d.ts +11 -2
  113. package/dist/cjs/context/TUIChatStateContext.d.ts +10 -0
  114. package/dist/cjs/context/TUIConversationContext.js +1 -1
  115. package/dist/cjs/context/TUIMessageContext.d.ts +22 -1
  116. package/dist/cjs/context/TUIMessageContext.js +1 -1
  117. package/dist/cjs/context/TUIMessageInputContext.d.ts +4 -5
  118. package/dist/cjs/hooks/useConversation.js +1 -1
  119. package/dist/cjs/index.css +1 -1
  120. package/dist/cjs/index.d.css +342 -8
  121. package/dist/cjs/index.d.ts +18 -4
  122. package/dist/cjs/index.js +1 -1
  123. package/dist/esm/_virtual/_commonjsHelpers.js +1 -0
  124. package/dist/esm/_virtual/tim-js.js +1 -0
  125. package/dist/esm/components/Checkbox/index.d.ts +16 -0
  126. package/dist/esm/components/ConversationCreate/ConversationCreatGroupDetail.js +1 -1
  127. package/dist/esm/components/ConversationCreate/ConversationCreate.js +1 -1
  128. package/dist/esm/components/ConversationCreate/ConversationCreateUserSelectList.js +1 -1
  129. package/dist/esm/components/ConversationCreate/hooks/useConversationCreate.js +1 -1
  130. package/dist/esm/components/ConversationPreview/ConversationPreview.js +1 -1
  131. package/dist/esm/components/ConversationPreview/ConversationPreviewContent.js +1 -1
  132. package/dist/esm/components/ConversationPreview/utils.js +1 -1
  133. package/dist/esm/components/ConversationSearch/ConversationSearchResult.js +1 -1
  134. package/dist/esm/components/DivWithEdit/DivWithEdit.d.ts +16 -0
  135. package/dist/esm/components/EmptyStateIndicator/EmptyStateIndicator.d.ts +5 -1
  136. package/dist/esm/components/Icon/Icon.d.ts +14 -0
  137. package/dist/esm/components/Icon/config.js +1 -1
  138. package/dist/esm/components/Icon/images/like.png.js +1 -0
  139. package/dist/esm/components/Icon/images/liked.png.js +1 -0
  140. package/dist/esm/components/Icon/images/living.png.js +1 -0
  141. package/dist/esm/components/Icon/images/member.png.js +1 -0
  142. package/dist/esm/components/Icon/images/owner.png.js +1 -0
  143. package/dist/esm/components/Icon/images/send.png.js +1 -0
  144. package/dist/esm/components/Icon/images/union.png.js +1 -0
  145. package/dist/esm/components/Icon/images/unlike.png.js +1 -0
  146. package/dist/esm/components/Icon/images/unliked.png.js +1 -0
  147. package/dist/esm/components/Icon/images/ununion.png.js +1 -0
  148. package/dist/esm/components/Icon/images/unvector.png.js +1 -0
  149. package/dist/esm/components/Icon/images/vector.png.js +1 -0
  150. package/dist/esm/components/Icon/images/voice.png.js +1 -0
  151. package/dist/esm/components/Icon/type.d.ts +47 -0
  152. package/dist/esm/components/Icon/type.js +1 -1
  153. package/dist/esm/components/Input/Input.d.ts +7 -1
  154. package/dist/esm/components/Model/index.d.ts +9 -0
  155. package/dist/esm/components/Plugins/index.d.ts +17 -0
  156. package/dist/esm/components/Plugins/index.js +1 -1
  157. package/dist/esm/components/Popup/index.d.ts +12 -0
  158. package/dist/esm/components/Switch/Switch.d.ts +16 -0
  159. package/dist/esm/components/TUIChat/TUIChat.d.ts +8 -2
  160. package/dist/esm/components/TUIChat/TUIChat.js +1 -1
  161. package/dist/esm/components/TUIChat/TUIChatState.js +1 -1
  162. package/dist/esm/components/TUIChat/hooks/useCreateMessage.d.ts +29 -1
  163. package/dist/esm/components/TUIChat/hooks/useCreateMessage.js +1 -1
  164. package/dist/esm/components/TUIChat/hooks/useCreateTUIChatStateContext.js +1 -1
  165. package/dist/esm/components/TUIChat/hooks/useHandleMessage.js +1 -1
  166. package/dist/esm/components/TUIChat/hooks/useHandleMessageList.js +1 -1
  167. package/dist/esm/components/TUIChat/hooks/useMessageReceviedListener.js +1 -1
  168. package/dist/esm/components/TUIChat/unitls.js +1 -1
  169. package/dist/esm/components/TUIChatHeader/TUIChatHeader.d.ts +2 -0
  170. package/dist/esm/components/TUIChatHeader/TUIChatHeader.js +1 -1
  171. package/dist/esm/components/TUIChatHeader/TUIChatHeaderDefault.d.ts +7 -3
  172. package/dist/esm/components/TUIChatHeader/TUIChatHeaderDefault.js +1 -1
  173. package/dist/esm/components/TUIConversation/TUIConversation.js +1 -1
  174. package/dist/esm/components/TUIConversationList/TUIConversationList.js +1 -1
  175. package/dist/esm/components/TUIConversationList/hooks/useConversationList.js +1 -1
  176. package/dist/esm/components/TUIConversationList/hooks/useConversationUpdate.js +1 -1
  177. package/dist/esm/components/TUIKit/TUIKit.d.ts +2 -1
  178. package/dist/esm/components/TUIKit/TUIKit.js +1 -1
  179. package/dist/esm/components/TUIKit/hooks/useTUIKit.d.ts +2 -1
  180. package/dist/esm/components/TUIKit/hooks/useTUIKit.js +1 -1
  181. package/dist/esm/components/TUIManage/TUIManage.js +1 -1
  182. package/dist/esm/components/TUIMessage/MessageAudio.js +1 -1
  183. package/dist/esm/components/TUIMessage/MessageAvatar.js +1 -0
  184. package/dist/esm/components/TUIMessage/MessageBubble.js +1 -1
  185. package/dist/esm/components/TUIMessage/MessageContext.d.ts +3 -1
  186. package/dist/esm/components/TUIMessage/MessageContext.js +1 -1
  187. package/dist/esm/components/TUIMessage/MessageCustom.js +1 -1
  188. package/dist/esm/components/TUIMessage/MessageFile.js +1 -1
  189. package/dist/esm/components/TUIMessage/MessageImage.js +1 -1
  190. package/dist/esm/components/TUIMessage/MessageMerger.js +1 -1
  191. package/dist/esm/components/TUIMessage/MessageName.js +1 -0
  192. package/dist/esm/components/TUIMessage/MessagePlugins.d.ts +24 -0
  193. package/dist/esm/components/TUIMessage/MessagePlugins.js +1 -1
  194. package/dist/esm/components/TUIMessage/MessageProgress.js +1 -0
  195. package/dist/esm/components/TUIMessage/MessageRevoke.js +1 -1
  196. package/dist/esm/components/TUIMessage/MessageStatus.js +1 -1
  197. package/dist/esm/components/TUIMessage/MessageSystem.js +1 -1
  198. package/dist/esm/components/TUIMessage/MessageText.js +1 -1
  199. package/dist/esm/components/TUIMessage/MessageTip.js +1 -1
  200. package/dist/esm/components/TUIMessage/TUIMessage.d.ts +23 -3
  201. package/dist/esm/components/TUIMessage/TUIMessage.js +1 -1
  202. package/dist/esm/components/TUIMessage/TUIMessageDefault.js +1 -1
  203. package/dist/esm/components/TUIMessage/hooks/useMessageContextHandler.js +1 -1
  204. package/dist/esm/components/TUIMessage/hooks/useMessageHandler.js +1 -1
  205. package/dist/esm/components/TUIMessage/hooks/useMessagePluginElement.js +1 -1
  206. package/dist/esm/components/TUIMessage/hooks/useMessageReply.js +1 -1
  207. package/dist/esm/components/TUIMessage/utils/index.js +1 -1
  208. package/dist/esm/components/TUIMessageInput/EmojiPicker.js +1 -1
  209. package/dist/esm/components/TUIMessageInput/InputPluginsDefalut.js +1 -1
  210. package/dist/esm/components/TUIMessageInput/InputQuoteDefalut.js +1 -1
  211. package/dist/esm/components/TUIMessageInput/TUIForward.js +1 -1
  212. package/dist/esm/components/TUIMessageInput/TUIMessageInput.d.ts +18 -7
  213. package/dist/esm/components/TUIMessageInput/TUIMessageInput.js +1 -1
  214. package/dist/esm/components/TUIMessageInput/TUIMessageInputDefault.js +1 -1
  215. package/dist/esm/components/TUIMessageInput/Transmitter.js +1 -0
  216. package/dist/esm/components/TUIMessageInput/hooks/useCreateMessageInputContext.js +1 -1
  217. package/dist/esm/components/TUIMessageInput/hooks/useEmojiPicker.js +1 -1
  218. package/dist/esm/components/TUIMessageInput/hooks/useHandleForwardMessage.js +1 -1
  219. package/dist/esm/components/TUIMessageInput/hooks/useHandleQuoteMessage.js +1 -1
  220. package/dist/esm/components/TUIMessageInput/hooks/useMessageInputState.js +1 -1
  221. package/dist/esm/components/TUIMessageInput/hooks/useMessageInputText.js +1 -1
  222. package/dist/esm/components/TUIMessageInput/hooks/useUploadPicker.js +1 -1
  223. package/dist/esm/components/TUIMessageList/TUIMessageList.d.ts +3 -1
  224. package/dist/esm/components/TUIMessageList/TUIMessageList.js +1 -1
  225. package/dist/esm/components/TUIMessageList/hooks/useMessageListElement.js +1 -1
  226. package/dist/esm/components/TUIProfile/TUIProfile.js +1 -1
  227. package/dist/esm/components/TUIProfile/TUIProfileDefault.js +1 -1
  228. package/dist/esm/components/TUIProfile/hooks/useMyProfile.js +1 -1
  229. package/dist/esm/components/Toast/index.d.ts +11 -0
  230. package/dist/esm/components/untils.js +1 -1
  231. package/dist/esm/constants.js +1 -1
  232. package/dist/esm/context/ComponentContext.d.ts +1 -1
  233. package/dist/esm/context/TUIChatActionContext.d.ts +11 -2
  234. package/dist/esm/context/TUIChatStateContext.d.ts +10 -0
  235. package/dist/esm/context/TUIConversationContext.js +1 -1
  236. package/dist/esm/context/TUIMessageContext.d.ts +22 -1
  237. package/dist/esm/context/TUIMessageContext.js +1 -1
  238. package/dist/esm/context/TUIMessageInputContext.d.ts +4 -5
  239. package/dist/esm/hooks/useConversation.js +1 -1
  240. package/dist/esm/index.css +1 -1
  241. package/dist/esm/index.d.css +342 -8
  242. package/dist/esm/index.d.ts +18 -4
  243. package/dist/esm/index.js +1 -1
  244. package/package.json +2 -3
  245. package/src/components/Icon/config.ts +65 -0
  246. package/src/components/Icon/images/like.png +0 -0
  247. package/src/components/Icon/images/liked.png +0 -0
  248. package/src/components/Icon/images/living.png +0 -0
  249. package/src/components/Icon/images/member.png +0 -0
  250. package/src/components/Icon/images/owner.png +0 -0
  251. package/src/components/Icon/images/send.png +0 -0
  252. package/src/components/Icon/images/union.png +0 -0
  253. package/src/components/Icon/images/unlike.png +0 -0
  254. package/src/components/Icon/images/unliked.png +0 -0
  255. package/src/components/Icon/images/ununion.png +0 -0
  256. package/src/components/Icon/images/unvector.png +0 -0
  257. package/src/components/Icon/images/vector.png +0 -0
  258. package/src/components/Icon/images/voice.png +0 -0
  259. package/src/components/Icon/type.ts +13 -0
  260. package/src/components/Plugins/index.tsx +13 -11
  261. package/src/components/Plugins/styles/layout.scss +2 -1
  262. package/src/components/TUIChat/TUIChat.tsx +47 -8
  263. package/src/components/TUIChat/TUIChatState.tsx +27 -0
  264. package/src/components/TUIChat/hooks/useCreateMessage.tsx +85 -4
  265. package/src/components/TUIChat/hooks/useCreateTUIChatStateContext.tsx +12 -0
  266. package/src/components/TUIChat/hooks/useHandleMessage.tsx +24 -0
  267. package/src/components/TUIChat/hooks/useHandleMessageList.tsx +8 -0
  268. package/src/components/TUIChat/hooks/useMessageReceviedListener.tsx +2 -2
  269. package/src/components/TUIChat/unitls.ts +13 -0
  270. package/src/components/TUIChatHeader/TUIChatHeader.tsx +6 -0
  271. package/src/components/TUIChatHeader/TUIChatHeaderDefault.tsx +37 -18
  272. package/src/components/TUIChatHeader/styles/color.scss +0 -3
  273. package/src/components/TUIChatHeader/styles/layout.scss +8 -4
  274. package/src/components/TUIKit/TUIKit.tsx +8 -5
  275. package/src/components/TUIKit/hooks/useTUIKit.tsx +14 -4
  276. package/src/components/TUIKit/styles/reset.scss +4 -0
  277. package/src/components/TUIMessage/MessageAudio.tsx +61 -2
  278. package/src/components/TUIMessage/MessageAvatar.tsx +38 -0
  279. package/src/components/TUIMessage/MessageBubble.tsx +24 -6
  280. package/src/components/TUIMessage/MessageContext.tsx +5 -2
  281. package/src/components/TUIMessage/MessageCustom.tsx +15 -2
  282. package/src/components/TUIMessage/MessageFile.tsx +9 -3
  283. package/src/components/TUIMessage/MessageImage.tsx +2 -1
  284. package/src/components/TUIMessage/MessageMerger.tsx +2 -1
  285. package/src/components/TUIMessage/MessageName.tsx +41 -0
  286. package/src/components/TUIMessage/MessagePlugins.tsx +81 -14
  287. package/src/components/TUIMessage/MessageProgress.tsx +88 -0
  288. package/src/components/TUIMessage/MessageRevoke.tsx +1 -1
  289. package/src/components/TUIMessage/MessageStatus.tsx +6 -1
  290. package/src/components/TUIMessage/MessageText.tsx +3 -3
  291. package/src/components/TUIMessage/TUIMessage.tsx +68 -16
  292. package/src/components/TUIMessage/TUIMessageDefault.tsx +25 -15
  293. package/src/components/TUIMessage/hooks/useMessagePluginElement.tsx +15 -1
  294. package/src/components/TUIMessage/styles/layout.scss +97 -4
  295. package/src/components/TUIMessage/utils/index.ts +14 -14
  296. package/src/components/TUIMessageInput/EmojiPicker.tsx +7 -1
  297. package/src/components/TUIMessageInput/InputPluginsDefalut.tsx +51 -8
  298. package/src/components/TUIMessageInput/TUIMessageInput.tsx +47 -22
  299. package/src/components/TUIMessageInput/TUIMessageInputDefault.tsx +3 -2
  300. package/src/components/TUIMessageInput/Transmitter.tsx +15 -0
  301. package/src/components/TUIMessageInput/hooks/useCreateMessageInputContext.ts +3 -9
  302. package/src/components/TUIMessageInput/hooks/useMessageInputState.tsx +8 -7
  303. package/src/components/TUIMessageInput/hooks/useMessageInputText.tsx +28 -30
  304. package/src/components/TUIMessageInput/hooks/useUploadPicker.tsx +2 -0
  305. package/src/components/TUIMessageInput/styles/layout.scss +16 -0
  306. package/src/components/TUIMessageList/TUIMessageList.tsx +32 -10
  307. package/src/components/TUIMessageList/hooks/useMessageListElement.tsx +26 -6
  308. package/src/components/TUIMessageList/styles/layout.scss +13 -1
  309. package/src/components/index.ts +12 -0
  310. package/src/constants.ts +3 -0
  311. package/src/context/ComponentContext.tsx +1 -1
  312. package/src/context/TUIChatActionContext.tsx +14 -1
  313. package/src/context/TUIChatStateContext.tsx +8 -0
  314. package/src/context/TUIKitContext.tsx +5 -1
  315. package/src/context/TUIMessageContext.tsx +20 -0
  316. package/src/context/TUIMessageInputContext.tsx +2 -3
@@ -1,4 +1,6 @@
1
1
  .message-default {
2
+ width: 100%;
3
+ flex: 1;
2
4
  display: flex;
3
5
  align-items: center;
4
6
  cursor: pointer;
@@ -15,7 +17,6 @@
15
17
  }
16
18
  }
17
19
  .content {
18
- padding: 0 10px;
19
20
  display: flex;
20
21
  flex-direction: column;
21
22
  align-items: flex-start;
@@ -27,16 +28,20 @@
27
28
  }
28
29
 
29
30
  .in {
31
+ flex: 1;
30
32
  display: flex;
31
33
  flex-direction: row;
32
34
  justify-self: flex-start;
35
+ gap: 10px;
33
36
  .content {
34
37
  align-items: flex-start;
35
38
  flex: 1;
36
39
  }
37
40
  }
38
41
  .out {
42
+ flex: 1;
39
43
  display: flex;
44
+ gap: 10px;
40
45
  flex-direction: row-reverse;
41
46
  justify-self: flex-end;
42
47
  .content {
@@ -45,13 +50,17 @@
45
50
  }
46
51
  }
47
52
  .tip {
48
- justify-self: center;
53
+ justify-self: center !important;
54
+ width: auto;
49
55
  }
50
56
 
51
57
  .bubble {
52
58
  padding: 8px 16px;
53
59
  &-in {
54
60
  border-radius: 16px 16px 16px 0;
61
+ &.group {
62
+ border-radius: 0px 16px 16px 16px;
63
+ }
55
64
  }
56
65
  &-out {
57
66
  border-radius: 16px 16px 0 16px;
@@ -96,6 +105,10 @@
96
105
  font-weight: 500;
97
106
  font-size: 14px;
98
107
  line-height: 17px;
108
+ &-p {
109
+ display: inline;
110
+ vertical-align: middle;
111
+ }
99
112
  .message-status {
100
113
  display: inline-flex;
101
114
  float: right;
@@ -104,7 +117,7 @@
104
117
  }
105
118
  }
106
119
 
107
- .message-text,
120
+ .message-text,
108
121
  .message-tip {
109
122
  font-family: PingFangSC-Regular;
110
123
  font-style: normal;
@@ -114,6 +127,7 @@
114
127
  .text-img {
115
128
  width: 20px;
116
129
  height: 20px;
130
+ vertical-align: middle;
117
131
  }
118
132
  }
119
133
 
@@ -261,6 +275,7 @@
261
275
  &-context {
262
276
  display: flex;
263
277
  align-items: center;
278
+ gap: 10px;
264
279
  .message-context{
265
280
  flex: 1;
266
281
  }
@@ -387,8 +402,86 @@
387
402
  font-size: 14px;
388
403
  line-height: 17px;
389
404
  }
405
+ p {
406
+ font-family: PingFangSC-Regular;
407
+ font-size: 14px;
408
+ font-style: normal;
409
+ font-weight: 500;
410
+ line-height: 17px;
411
+ }
390
412
  }
391
413
 
392
414
  .message-revoke {
393
415
  color: #999999;
394
- }
416
+ }
417
+
418
+ .message-audio {
419
+ display: flex;
420
+ align-items: center;
421
+ .out {
422
+ transform: rotate(180deg);
423
+ }
424
+ &-none {
425
+ display: none;
426
+ }
427
+ &-content {
428
+ display: flex;
429
+ align-items: center;
430
+ gap: 10px;
431
+ }
432
+ &-out {
433
+ flex-direction: row-reverse;
434
+ }
435
+ .playing {
436
+ animation: playingAnimation 1s ease-in-out infinite;
437
+ }
438
+
439
+ @keyframes playingAnimation {
440
+ 0% {
441
+ opacity: 1;
442
+ }
443
+ 50% {
444
+ opacity: 0.3;
445
+ }
446
+ 100% {
447
+ opacity: 1;
448
+ }
449
+ }
450
+ }
451
+
452
+ .high-lighted {
453
+ animation: highLightedAnimation 1s ease-in-out forwards;
454
+ }
455
+
456
+ @keyframes highLightedAnimation {
457
+ 0% {
458
+ opacity: 1;
459
+ }
460
+ 25% {
461
+ opacity: 0.3;
462
+ }
463
+ 50% {
464
+ opacity: 1;
465
+ }
466
+ 75% {
467
+ opacity: 0.3;
468
+ }
469
+ 100% {
470
+ opacity: 1;
471
+ }
472
+ }
473
+
474
+ .progress-box {
475
+ width: 100%;
476
+ height: 5px;
477
+ display: flex;
478
+ justify-content: flex-start;
479
+ .progress {
480
+ display: inline-block;
481
+ width: 0;
482
+ background: #147aff;
483
+ height: 5px;
484
+ border-radius: 2px;
485
+ box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.25);
486
+ }
487
+ }
@@ -118,21 +118,21 @@ export function handleTipMessageShowContext(message: Message) {
118
118
  }
119
119
  switch (message.payload.operationType) {
120
120
  case TIM.TYPES.GRP_TIP_MBR_JOIN:
121
- options.text = `${userName} ${t('message.tip.加入群组')}`;
121
+ options.text = `${userName} ${t('message.tip.Join in group')}`;
122
122
  break;
123
123
  case TIM.TYPES.GRP_TIP_MBR_QUIT:
124
- options.text = `${t('message.tip.群成员')}:${userName} ${t('message.tip.退出群组')}`;
124
+ options.text = `${t('message.tip.member')}:${userName} ${t('message.tip.quit group')}`;
125
125
  break;
126
126
  case TIM.TYPES.GRP_TIP_MBR_KICKED_OUT:
127
- options.text = `${t('message.tip.群成员')}:${userName} ${t('message.tip.被')}${message.payload.operatorID}${t(
128
- 'message.tip.踢出群组',
127
+ options.text = `${t('message.tip.member')}:${userName} ${t('message.tip.by')}${message.payload.operatorID}${t(
128
+ 'message.tip.kicked out of group',
129
129
  )}`;
130
130
  break;
131
131
  case TIM.TYPES.GRP_TIP_MBR_SET_ADMIN:
132
- options.text = `${t('message.tip.群成员')}:${userName} ${t('message.tip.成为管理员')}`;
132
+ options.text = `${t('message.tip.member')}:${userName} ${t('message.tip.become admin')}`;
133
133
  break;
134
134
  case TIM.TYPES.GRP_TIP_MBR_CANCELED_ADMIN:
135
- options.text = `${t('message.tip.群成员')}:${userName} ${t('message.tip.被撤销管理员')}`;
135
+ options.text = `${t('message.tip.member')}:${userName} ${t('message.tip.by revoked administrator')}`;
136
136
  break;
137
137
  case TIM.TYPES.GRP_TIP_GRP_PROFILE_UPDATED:
138
138
  // options.text = `${userName} 修改群组资料`;
@@ -141,15 +141,15 @@ export function handleTipMessageShowContext(message: Message) {
141
141
  case TIM.TYPES.GRP_TIP_MBR_PROFILE_UPDATED:
142
142
  message.payload.memberList.map((member:any) => {
143
143
  if (member.muteTime > 0) {
144
- options.text = `${t('message.tip.群成员')}:${member.userID}${t('message.tip.被禁言')}`;
144
+ options.text = `${t('message.tip.member')}:${member.userID}${t('message.tip.muted')}`;
145
145
  } else {
146
- options.text = `${t('message.tip.群成员')}:${member.userID}${t('message.tip.被取消禁言')}`;
146
+ options.text = `${t('message.tip.member')}:${member.userID}${t('message.tip.unmuted')}`;
147
147
  }
148
148
  return member;
149
149
  });
150
150
  break;
151
151
  default:
152
- options.text = `[${t('message.tip.群提示消息')}]`;
152
+ options.text = `[${t('message.tip.reminder message')}]`;
153
153
  break;
154
154
  }
155
155
  return options;
@@ -164,19 +164,19 @@ function handleTipGrpUpdated(message: Message) {
164
164
  switch (name) {
165
165
  case 'muteAllMembers':
166
166
  if (newGroupProfile[name]) {
167
- text = `${t('message.tip.管理员')} ${operatorID} ${t('message.tip.开启全员禁言')}`;
167
+ text = `${t('message.tip.admin')} ${operatorID} ${t('message.tip.enable all staff mute')}`;
168
168
  } else {
169
- text = `${t('message.tip.管理员')} ${operatorID} ${t('message.tip.取消全员禁言')}`;
169
+ text = `${t('message.tip.admin')} ${operatorID} ${t('message.tip.unmute everyone')}`;
170
170
  }
171
171
  break;
172
172
  case 'ownerID':
173
- text = `${newGroupProfile[name]} ${t('message.tip.成为新的群主')}`;
173
+ text = `${newGroupProfile[name]} ${t('message.tip.become the new owner')}`;
174
174
  break;
175
175
  case 'groupName':
176
- text = `${operatorID} ${t('message.tip.修改群名为')} ${newGroupProfile[name]}`;
176
+ text = `${operatorID} ${t('message.tip.modify group name')} ${newGroupProfile[name]}`;
177
177
  break;
178
178
  case 'notification':
179
- text = `${operatorID} ${t('message.tip.发布新公告')}`;
179
+ text = `${operatorID} ${t('message.tip.post a new announcement')}`;
180
180
  break;
181
181
  default:
182
182
  break;
@@ -12,6 +12,7 @@ import type { EmojiData } from './hooks';
12
12
  export function EmojiPicker():React.ReactElement {
13
13
  const [show, setShow] = useState(false);
14
14
  const [index, setIndex] = useState(0);
15
+ const [className, setClassName] = useState('');
15
16
 
16
17
  const handleShow = () => {
17
18
  setShow(!show);
@@ -37,13 +38,18 @@ export function EmojiPicker():React.ReactElement {
37
38
  }
38
39
  };
39
40
 
41
+ const handleVisible = (data) => {
42
+ setClassName(`${!data.top && 'emoji-plugin-top'} ${!data.left && 'emoji-plugin-right'}`);
43
+ };
44
+
40
45
  return (
41
46
  <div className="emoji-picker input-plugin-popup">
42
47
  <Icon width={20} height={20} type={IconTypes.EMOJI} onClick={handleShow} />
43
48
  <Popup
44
- className="input-plugin-popup-box"
49
+ className={`input-plugin-popup-box ${className}`}
45
50
  show={show}
46
51
  close={handleShow}
52
+ handleVisible={handleVisible}
47
53
  >
48
54
  <ul className="face-list">
49
55
  {
@@ -7,18 +7,60 @@ import { useUploadElement } from './hooks/useUploadElement';
7
7
  import { MESSAGE_TYPE_NAME } from '../../constants';
8
8
  import { useTUIMessageInputContext } from '../../context/TUIMessageInputContext';
9
9
  import { Icon, IconTypes } from '../Icon';
10
+ import { useTUIChatStateContext } from '../../context';
10
11
 
11
12
  export function InputPluginsDefalut():React.ReactElement {
12
13
  const {
13
14
  sendUploadMessage,
14
- plugins: propPlugins,
15
- showNumber,
16
- MoreIcon,
15
+ pluginConfig: propsPluginConfig,
17
16
  } = useTUIMessageInputContext('TUIMessageInputDefault');
18
17
 
18
+ const { TUIMessageInputConfig } = useTUIChatStateContext('TUIMessageInput');
19
+
20
+ const propPlugins = propsPluginConfig?.plugins
21
+ || TUIMessageInputConfig?.pluginConfig?.plugins || [];
22
+ const showNumber = propsPluginConfig?.showNumber
23
+ || TUIMessageInputConfig?.pluginConfig?.showNumber || 1;
24
+ const MoreIcon = propsPluginConfig?.MoreIcon || TUIMessageInputConfig?.pluginConfig?.MoreIcon;
25
+
26
+ const handlePluginBoolenParams = (
27
+ porpsVal?:boolean | undefined,
28
+ contextVal?:boolean | undefined,
29
+ defaultVal?: boolean,
30
+ ) => {
31
+ if (typeof (porpsVal) === 'boolean') {
32
+ return porpsVal;
33
+ }
34
+ if (typeof (contextVal) === 'boolean') {
35
+ return contextVal;
36
+ }
37
+ return defaultVal;
38
+ };
39
+
40
+ const isEmojiPicker = handlePluginBoolenParams(
41
+ propsPluginConfig?.isEmojiPicker,
42
+ TUIMessageInputConfig?.pluginConfig?.isEmojiPicker,
43
+ true,
44
+ );
45
+ const isImagePicker = handlePluginBoolenParams(
46
+ propsPluginConfig?.isImagePicker,
47
+ TUIMessageInputConfig?.pluginConfig?.isImagePicker,
48
+ true,
49
+ );
50
+ const isVideoPicker = handlePluginBoolenParams(
51
+ propsPluginConfig?.isVideoPicker,
52
+ TUIMessageInputConfig?.pluginConfig?.isVideoPicker,
53
+ true,
54
+ );
55
+ const isFilePicker = handlePluginBoolenParams(
56
+ propsPluginConfig?.isFilePicker,
57
+ TUIMessageInputConfig?.pluginConfig?.isFilePicker,
58
+ true,
59
+ );
60
+
19
61
  const pluginsRef = useRef(null);
20
62
 
21
- const ImagePicker = useUploadElement({
63
+ const ImagePicker = isImagePicker && useUploadElement({
22
64
  children: (
23
65
  <div className="input-plugin-item">
24
66
  <Icon width={20} height={20} type={IconTypes.IMAGE} />
@@ -33,7 +75,7 @@ export function InputPluginsDefalut():React.ReactElement {
33
75
  },
34
76
  });
35
77
 
36
- const VideoPicker = useUploadElement({
78
+ const VideoPicker = isVideoPicker && useUploadElement({
37
79
  children: (
38
80
  <div className="input-plugin-item">
39
81
  <Icon width={20} height={20} type={IconTypes.VIDEO} />
@@ -48,7 +90,7 @@ export function InputPluginsDefalut():React.ReactElement {
48
90
  },
49
91
  });
50
92
 
51
- const FilePicker = useUploadElement({
93
+ const FilePicker = isFilePicker && useUploadElement({
52
94
  children: (
53
95
  <div className="input-plugin-item">
54
96
  <Icon width={20} height={20} type={IconTypes.DOCUMENT} />
@@ -62,8 +104,9 @@ export function InputPluginsDefalut():React.ReactElement {
62
104
  sendUploadMessage({ file }, MESSAGE_TYPE_NAME.FILE);
63
105
  },
64
106
  });
65
- const plugins = propPlugins
66
- || [<EmojiPicker />, ImagePicker, VideoPicker, FilePicker];
107
+ const plugins = [
108
+ isEmojiPicker && <EmojiPicker />, ImagePicker, VideoPicker, FilePicker, ...propPlugins,
109
+ ].filter((item) => item);
67
110
 
68
111
  return <Plugins ref={pluginsRef} plugins={plugins} showNumber={showNumber} MoreIcon={MoreIcon} />;
69
112
  }
@@ -14,43 +14,58 @@ import { InputQuoteDefalut } from './InputQuoteDefalut';
14
14
  import { TUIMessageInputDefault } from './TUIMessageInputDefault';
15
15
  import { InputPluginsDefalut } from './InputPluginsDefalut';
16
16
  import { TUIForward } from './TUIForward';
17
+ import { Transmitter } from './Transmitter';
17
18
 
18
- export interface TUIMessageInputProps {
19
+ export interface PluginConfigProps {
20
+ plugins?: Array<React.ReactElement>,
21
+ showNumber?: number,
22
+ MoreIcon?: React.ReactElement,
23
+ isEmojiPicker?: boolean,
24
+ isImagePicker?: boolean,
25
+ isVideoPicker?: boolean,
26
+ isFilePicker?: boolean,
27
+ }
28
+
29
+ export interface TUIMessageInputBasicProps {
19
30
  disabled?: boolean,
31
+ focus?: boolean,
32
+ textareaRef?: MutableRefObject<HTMLTextAreaElement | undefined>,
33
+ isTransmitter?: boolean,
34
+ className?: string,
35
+ pluginConfig?: PluginConfigProps,
36
+ }
37
+
38
+ export interface TUIMessageInputProps extends TUIMessageInputBasicProps {
20
39
  TUIMessageInput?: React.ComponentType,
21
40
  InputPlugins?: React.ComponentType<UnknowPorps>,
22
41
  InputQuote?: React.ComponentType<UnknowPorps>,
23
- focus?: boolean,
24
- textareaRef?: MutableRefObject<HTMLTextAreaElement | undefined>,
25
- plugins?: Array<React.ReactElement>,
26
- showNumber?: number,
27
- MoreIcon?: React.ReactElement,
28
42
  }
43
+
29
44
  function TUIMessageInputProvider<T extends TUIMessageInputProps>(props: PropsWithChildren<T>)
30
45
  :React.ReactElement {
31
46
  const {
32
47
  children,
33
48
  disabled: propsDisabled,
34
- focus = true,
35
- plugins,
36
- showNumber = 1,
37
- MoreIcon,
49
+ focus: propsFoces,
50
+ pluginConfig,
51
+ textareaRef: propsTextareaRef,
38
52
  } = props;
39
53
  const messageInputState = useMessageInputState(props);
40
- const { conversation } = useTUIKitContext('TUIMessageInput');
41
- const { textareaRef } = useTUIChatStateContext('TUIMessageInput');
54
+ const { textareaRef, conversation } = useTUIChatStateContext('TUIMessageInput');
42
55
 
43
- const contextDisabled = conversation.type === TIM.TYPES.CONV_SYSTEM;
56
+ const contextDisabled = conversation?.type === TIM.TYPES.CONV_SYSTEM;
57
+
58
+ const { TUIMessageInputConfig } = useTUIChatStateContext('TUIMessageInput');
59
+
60
+ const focus = propsFoces || TUIMessageInputConfig?.focus;
44
61
 
45
62
  const messageInputContextValue = useCreateMessageInputContext({
46
63
  ...messageInputState,
47
64
  ...props,
48
- textareaRef,
49
- disabled: propsDisabled || contextDisabled,
50
- focus,
51
- plugins,
52
- showNumber,
53
- MoreIcon,
65
+ textareaRef: propsTextareaRef || TUIMessageInputConfig?.textareaRef || textareaRef,
66
+ disabled: propsDisabled || TUIMessageInputConfig?.disabled || contextDisabled,
67
+ focus: typeof (focus) === 'boolean' ? focus : true,
68
+ pluginConfig,
54
69
  });
55
70
 
56
71
  return (
@@ -66,8 +81,15 @@ function UnMemoizedTUIMessageInput<T extends TUIMessageInputProps>(props: PropsW
66
81
  TUIMessageInput: PropTUIMessageInput,
67
82
  InputPlugins: PropInputPlugins,
68
83
  InputQuote: PropInputQuote,
84
+ isTransmitter: propsIsTransmitter,
85
+ className: propsClassName,
69
86
  } = props;
70
87
 
88
+ const { TUIMessageInputConfig } = useTUIChatStateContext('TUIMessageInput');
89
+
90
+ const className = propsClassName || TUIMessageInputConfig?.className;
91
+ const isTransmitter = propsIsTransmitter || TUIMessageInputConfig?.isTransmitter || false;
92
+
71
93
  const {
72
94
  TUIMessageInput: ContextInput,
73
95
  InputPlugins: ContextInputPlugins,
@@ -78,13 +100,16 @@ function UnMemoizedTUIMessageInput<T extends TUIMessageInputProps>(props: PropsW
78
100
  || ContextInputPlugins || InputPluginsDefalut || EmptyStateIndicator;
79
101
  const InputQuote = PropInputQuote || ContextInputQuote || InputQuoteDefalut;
80
102
  return (
81
- <div className="tui-message-input">
103
+ <div className={`tui-message-input ${className}`}>
82
104
  <TUIMessageInputProvider {...props}>
83
105
  <TUIForward />
84
106
  <InputQuote />
85
107
  <div className="tui-message-input-main">
86
- <InputPlugins />
87
- <Input />
108
+ <div className="tui-message-input-box">
109
+ <InputPlugins />
110
+ <Input />
111
+ </div>
112
+ {isTransmitter && <Transmitter />}
88
113
  </div>
89
114
  </TUIMessageInputProvider>
90
115
  </div>
@@ -3,6 +3,7 @@ import { MESSAGE_OPERATE } from '../../constants';
3
3
  import { useTUIChatStateContext } from '../../context';
4
4
 
5
5
  import { useTUIMessageInputContext } from '../../context/TUIMessageInputContext';
6
+ import { formatEmojiString } from '../TUIMessage/utils/emojiMap';
6
7
 
7
8
  export function TUIMessageInputDefault():React.ReactElement {
8
9
  const {
@@ -23,7 +24,7 @@ export function TUIMessageInputDefault():React.ReactElement {
23
24
  // operateData
24
25
  useEffect(() => {
25
26
  if (operateData[MESSAGE_OPERATE.REVOKE]) {
26
- setText(operateData[MESSAGE_OPERATE.REVOKE].payload.text);
27
+ setText(formatEmojiString(operateData[MESSAGE_OPERATE.REVOKE].payload.text, 1));
27
28
  }
28
29
  }, [operateData]);
29
30
 
@@ -31,7 +32,7 @@ export function TUIMessageInputDefault():React.ReactElement {
31
32
  useEffect(() => {
32
33
  if (focus && textareaRef.current) {
33
34
  textareaRef.current.autofocus = true;
34
- textareaRef.current.focus();
35
+ textareaRef?.current?.focus();
35
36
  textareaRef?.current?.addEventListener('paste', handlePasete);
36
37
  }
37
38
  return () => {
@@ -0,0 +1,15 @@
1
+ import React, { useState } from 'react';
2
+ import { useTUIMessageInputContext } from '../../context/TUIMessageInputContext';
3
+ import { Icon, IconTypes } from '../Icon';
4
+
5
+ export function Transmitter():React.ReactElement {
6
+ const {
7
+ handleSubmit,
8
+ } = useTUIMessageInputContext('Transmitter');
9
+
10
+ return (
11
+ <div className="transmitter">
12
+ <Icon className="icon-send" type={IconTypes.SEND} onClick={handleSubmit} />
13
+ </div>
14
+ );
15
+ }
@@ -11,9 +11,7 @@ export const useCreateMessageInputContext = (value:any) => {
11
11
  disabled,
12
12
  focus,
13
13
  operateData,
14
- plugins,
15
- showNumber,
16
- MoreIcon,
14
+ pluginConfig,
17
15
  } = value;
18
16
  const messageInputContext = useMemo(
19
17
  () => ({
@@ -26,9 +24,7 @@ export const useCreateMessageInputContext = (value:any) => {
26
24
  disabled,
27
25
  focus,
28
26
  operateData,
29
- plugins,
30
- showNumber,
31
- MoreIcon,
27
+ pluginConfig,
32
28
  ...value,
33
29
  }),
34
30
  [
@@ -40,10 +36,8 @@ export const useCreateMessageInputContext = (value:any) => {
40
36
  sendFaceMessage,
41
37
  disabled,
42
38
  focus,
43
- plugins,
44
- showNumber,
45
- MoreIcon,
46
39
  operateData,
40
+ pluginConfig,
47
41
  ],
48
42
  );
49
43
 
@@ -51,6 +51,13 @@ const reducer = (state:IinitState, action) => {
51
51
  export const useMessageInputState = (props:TUIMessageInputProps) => {
52
52
  const [state, dispatch] = useReducer(reducer, initState);
53
53
  const { focus, textareaRef } = props;
54
+
55
+ const {
56
+ sendUploadMessage,
57
+ } = useUploadPicker({
58
+ state,
59
+ dispatch,
60
+ });
54
61
  const {
55
62
  handleChange,
56
63
  handleSubmit,
@@ -64,6 +71,7 @@ export const useMessageInputState = (props:TUIMessageInputProps) => {
64
71
  dispatch,
65
72
  textareaRef,
66
73
  focus,
74
+ sendUploadMessage,
67
75
  });
68
76
 
69
77
  const {
@@ -76,13 +84,6 @@ export const useMessageInputState = (props:TUIMessageInputProps) => {
76
84
  insertText,
77
85
  });
78
86
 
79
- const {
80
- sendUploadMessage,
81
- } = useUploadPicker({
82
- state,
83
- dispatch,
84
- });
85
-
86
87
  return {
87
88
  ...state,
88
89
  handleChange,