@tencentcloud/chat-uikit-react 0.0.3 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js +1 -0
  3. package/dist/cjs/components/Checkbox/index.d.ts +16 -0
  4. package/dist/cjs/components/ConversationCreate/ConversationCreatGroupDetail.js +1 -1
  5. package/dist/cjs/components/ConversationCreate/ConversationCreate.js +1 -1
  6. package/dist/cjs/components/ConversationCreate/ConversationCreateUserSelectList.js +1 -1
  7. package/dist/cjs/components/ConversationCreate/hooks/useConversationCreate.js +1 -1
  8. package/dist/cjs/components/ConversationPreview/ConversationPreview.js +1 -1
  9. package/dist/cjs/components/ConversationPreview/ConversationPreviewContent.js +1 -1
  10. package/dist/cjs/components/ConversationSearch/ConversationSearchResult.js +1 -1
  11. package/dist/cjs/components/DivWithEdit/DivWithEdit.d.ts +16 -0
  12. package/dist/cjs/components/EmptyStateIndicator/EmptyStateIndicator.d.ts +5 -1
  13. package/dist/cjs/components/Icon/Icon.d.ts +14 -0
  14. package/dist/cjs/components/Icon/config.js +1 -1
  15. package/dist/cjs/components/Icon/images/like.png.js +1 -0
  16. package/dist/cjs/components/Icon/images/liked.png.js +1 -0
  17. package/dist/cjs/components/Icon/images/living.png.js +1 -0
  18. package/dist/cjs/components/Icon/images/member.png.js +1 -0
  19. package/dist/cjs/components/Icon/images/owner.png.js +1 -0
  20. package/dist/cjs/components/Icon/images/send.png.js +1 -0
  21. package/dist/cjs/components/Icon/images/union.png.js +1 -0
  22. package/dist/cjs/components/Icon/images/unlike.png.js +1 -0
  23. package/dist/cjs/components/Icon/images/unliked.png.js +1 -0
  24. package/dist/cjs/components/Icon/images/ununion.png.js +1 -0
  25. package/dist/cjs/components/Icon/images/unvector.png.js +1 -0
  26. package/dist/cjs/components/Icon/images/vector.png.js +1 -0
  27. package/dist/cjs/components/Icon/images/voice.png.js +1 -0
  28. package/dist/cjs/components/Icon/type.d.ts +47 -0
  29. package/dist/cjs/components/Icon/type.js +1 -1
  30. package/dist/cjs/components/Input/Input.d.ts +7 -1
  31. package/dist/cjs/components/Model/index.d.ts +9 -0
  32. package/dist/cjs/components/Plugins/index.d.ts +17 -0
  33. package/dist/cjs/components/Plugins/index.js +1 -1
  34. package/dist/cjs/components/Popup/index.d.ts +12 -0
  35. package/dist/cjs/components/Switch/Switch.d.ts +16 -0
  36. package/dist/cjs/components/TUIChat/TUIChat.d.ts +8 -2
  37. package/dist/cjs/components/TUIChat/TUIChat.js +1 -1
  38. package/dist/cjs/components/TUIChat/TUIChatState.js +1 -1
  39. package/dist/cjs/components/TUIChat/hooks/useCreateMessage.d.ts +29 -1
  40. package/dist/cjs/components/TUIChat/hooks/useCreateMessage.js +1 -1
  41. package/dist/cjs/components/TUIChat/hooks/useCreateTUIChatStateContext.js +1 -1
  42. package/dist/cjs/components/TUIChat/hooks/useHandleMessage.js +1 -1
  43. package/dist/cjs/components/TUIChat/hooks/useHandleMessageList.js +1 -1
  44. package/dist/cjs/components/TUIChat/hooks/useMessageReceviedListener.js +1 -1
  45. package/dist/cjs/components/TUIChat/unitls.js +1 -1
  46. package/dist/cjs/components/TUIChatHeader/TUIChatHeader.d.ts +2 -0
  47. package/dist/cjs/components/TUIChatHeader/TUIChatHeader.js +1 -1
  48. package/dist/cjs/components/TUIChatHeader/TUIChatHeaderDefault.d.ts +7 -3
  49. package/dist/cjs/components/TUIChatHeader/TUIChatHeaderDefault.js +1 -1
  50. package/dist/cjs/components/TUIConversationList/TUIConversationList.js +1 -1
  51. package/dist/cjs/components/TUIConversationList/hooks/useConversationUpdate.js +1 -1
  52. package/dist/cjs/components/TUIKit/TUIKit.d.ts +2 -1
  53. package/dist/cjs/components/TUIKit/TUIKit.js +1 -1
  54. package/dist/cjs/components/TUIKit/hooks/useTUIKit.d.ts +2 -1
  55. package/dist/cjs/components/TUIKit/hooks/useTUIKit.js +1 -1
  56. package/dist/cjs/components/TUILive/TUILive.d.ts +29 -0
  57. package/dist/cjs/components/TUILive/TUILive.js +1 -0
  58. package/dist/cjs/components/TUILive/TUILiveContent.d.ts +13 -0
  59. package/dist/cjs/components/TUILive/TUILiveContent.js +1 -0
  60. package/dist/cjs/components/TUILive/TUILiveFooter.d.ts +29 -0
  61. package/dist/cjs/components/TUILive/TUILiveFooter.js +1 -0
  62. package/dist/cjs/components/TUILive/TUILiveHeader.d.ts +20 -0
  63. package/dist/cjs/components/TUILive/TUILiveHeader.js +1 -0
  64. package/dist/cjs/components/TUILive/TUILiveMemberList.d.ts +11 -0
  65. package/dist/cjs/components/TUILive/TUILiveMemberList.js +1 -0
  66. package/dist/cjs/components/TUILive/hooks/useLiveAtiveElements.js +1 -0
  67. package/dist/cjs/components/TUILive/hooks/useLivePlayer.js +1 -0
  68. package/dist/cjs/components/TUILive/hooks/useLiveState.js +1 -0
  69. package/dist/cjs/components/TUILive/untils.js +1 -0
  70. package/dist/cjs/components/TUIManage/TUIManage.js +1 -1
  71. package/dist/cjs/components/TUIMessage/MessageAudio.js +1 -1
  72. package/dist/cjs/components/TUIMessage/MessageAvatar.js +1 -0
  73. package/dist/cjs/components/TUIMessage/MessageBubble.js +1 -1
  74. package/dist/cjs/components/TUIMessage/MessageContext.d.ts +3 -1
  75. package/dist/cjs/components/TUIMessage/MessageCustom.js +1 -1
  76. package/dist/cjs/components/TUIMessage/MessageFile.js +1 -1
  77. package/dist/cjs/components/TUIMessage/MessageImage.js +1 -1
  78. package/dist/cjs/components/TUIMessage/MessageMerger.js +1 -1
  79. package/dist/cjs/components/TUIMessage/MessageName.js +1 -0
  80. package/dist/cjs/components/TUIMessage/MessagePlugins.d.ts +24 -0
  81. package/dist/cjs/components/TUIMessage/MessagePlugins.js +1 -1
  82. package/dist/cjs/components/TUIMessage/MessageProgress.js +1 -0
  83. package/dist/cjs/components/TUIMessage/MessageRevoke.js +1 -1
  84. package/dist/cjs/components/TUIMessage/MessageStatus.js +1 -1
  85. package/dist/cjs/components/TUIMessage/MessageSystem.js +1 -1
  86. package/dist/cjs/components/TUIMessage/MessageText.js +1 -1
  87. package/dist/cjs/components/TUIMessage/MessageTip.js +1 -1
  88. package/dist/cjs/components/TUIMessage/TUIMessage.d.ts +23 -3
  89. package/dist/cjs/components/TUIMessage/TUIMessage.js +1 -1
  90. package/dist/cjs/components/TUIMessage/TUIMessageDefault.js +1 -1
  91. package/dist/cjs/components/TUIMessage/hooks/useMessageHandler.js +1 -1
  92. package/dist/cjs/components/TUIMessage/hooks/useMessagePluginElement.js +1 -1
  93. package/dist/cjs/components/TUIMessage/hooks/useMessageReply.js +1 -1
  94. package/dist/cjs/components/TUIMessage/utils/index.js +1 -1
  95. package/dist/cjs/components/TUIMessageInput/EmojiPicker.js +1 -1
  96. package/dist/cjs/components/TUIMessageInput/InputPluginsDefalut.js +1 -1
  97. package/dist/cjs/components/TUIMessageInput/InputQuoteDefalut.js +1 -1
  98. package/dist/cjs/components/TUIMessageInput/TUIForward.js +1 -1
  99. package/dist/cjs/components/TUIMessageInput/TUIMessageInput.d.ts +18 -7
  100. package/dist/cjs/components/TUIMessageInput/TUIMessageInput.js +1 -1
  101. package/dist/cjs/components/TUIMessageInput/TUIMessageInputDefault.js +1 -1
  102. package/dist/cjs/components/TUIMessageInput/Transmitter.js +1 -0
  103. package/dist/cjs/components/TUIMessageInput/hooks/useCreateMessageInputContext.js +1 -1
  104. package/dist/cjs/components/TUIMessageInput/hooks/useEmojiPicker.js +1 -1
  105. package/dist/cjs/components/TUIMessageInput/hooks/useHandleForwardMessage.js +1 -1
  106. package/dist/cjs/components/TUIMessageInput/hooks/useHandleQuoteMessage.js +1 -1
  107. package/dist/cjs/components/TUIMessageInput/hooks/useMessageInputState.js +1 -1
  108. package/dist/cjs/components/TUIMessageInput/hooks/useMessageInputText.js +1 -1
  109. package/dist/cjs/components/TUIMessageInput/hooks/useUploadPicker.js +1 -1
  110. package/dist/cjs/components/TUIMessageList/TUIMessageList.d.ts +3 -1
  111. package/dist/cjs/components/TUIMessageList/TUIMessageList.js +1 -1
  112. package/dist/cjs/components/TUIMessageList/hooks/useMessageListElement.js +1 -1
  113. package/dist/cjs/components/TUIProfile/TUIProfile.js +1 -1
  114. package/dist/cjs/components/TUIProfile/TUIProfileDefault.js +1 -1
  115. package/dist/cjs/components/TUIProfile/hooks/useMyProfile.js +1 -1
  116. package/dist/cjs/components/Toast/index.d.ts +11 -0
  117. package/dist/cjs/constants.js +1 -1
  118. package/dist/cjs/context/ComponentContext.d.ts +1 -1
  119. package/dist/cjs/context/TUIChatActionContext.d.ts +11 -2
  120. package/dist/cjs/context/TUIChatStateContext.d.ts +10 -0
  121. package/dist/cjs/context/TUIConversationContext.js +1 -1
  122. package/dist/cjs/context/TUILiveContext.d.ts +51 -0
  123. package/dist/cjs/context/TUILiveContext.js +1 -0
  124. package/dist/cjs/context/TUIMessageContext.d.ts +22 -1
  125. package/dist/cjs/context/TUIMessageContext.js +1 -1
  126. package/dist/cjs/context/TUIMessageInputContext.d.ts +4 -5
  127. package/dist/cjs/index.css +1 -1
  128. package/dist/cjs/index.d.css +547 -7
  129. package/dist/cjs/index.d.ts +18 -4
  130. package/dist/cjs/index.js +1 -1
  131. package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +1 -0
  132. package/dist/esm/components/Checkbox/index.d.ts +16 -0
  133. package/dist/esm/components/ConversationCreate/ConversationCreatGroupDetail.js +1 -1
  134. package/dist/esm/components/ConversationCreate/ConversationCreate.js +1 -1
  135. package/dist/esm/components/ConversationCreate/ConversationCreateUserSelectList.js +1 -1
  136. package/dist/esm/components/ConversationCreate/hooks/useConversationCreate.js +1 -1
  137. package/dist/esm/components/ConversationPreview/ConversationPreview.js +1 -1
  138. package/dist/esm/components/ConversationPreview/ConversationPreviewContent.js +1 -1
  139. package/dist/esm/components/ConversationSearch/ConversationSearchResult.js +1 -1
  140. package/dist/esm/components/DivWithEdit/DivWithEdit.d.ts +16 -0
  141. package/dist/esm/components/EmptyStateIndicator/EmptyStateIndicator.d.ts +5 -1
  142. package/dist/esm/components/Icon/Icon.d.ts +14 -0
  143. package/dist/esm/components/Icon/config.js +1 -1
  144. package/dist/esm/components/Icon/images/like.png.js +1 -0
  145. package/dist/esm/components/Icon/images/liked.png.js +1 -0
  146. package/dist/esm/components/Icon/images/living.png.js +1 -0
  147. package/dist/esm/components/Icon/images/member.png.js +1 -0
  148. package/dist/esm/components/Icon/images/owner.png.js +1 -0
  149. package/dist/esm/components/Icon/images/send.png.js +1 -0
  150. package/dist/esm/components/Icon/images/union.png.js +1 -0
  151. package/dist/esm/components/Icon/images/unlike.png.js +1 -0
  152. package/dist/esm/components/Icon/images/unliked.png.js +1 -0
  153. package/dist/esm/components/Icon/images/ununion.png.js +1 -0
  154. package/dist/esm/components/Icon/images/unvector.png.js +1 -0
  155. package/dist/esm/components/Icon/images/vector.png.js +1 -0
  156. package/dist/esm/components/Icon/images/voice.png.js +1 -0
  157. package/dist/esm/components/Icon/type.d.ts +47 -0
  158. package/dist/esm/components/Icon/type.js +1 -1
  159. package/dist/esm/components/Input/Input.d.ts +7 -1
  160. package/dist/esm/components/Model/index.d.ts +9 -0
  161. package/dist/esm/components/Plugins/index.d.ts +17 -0
  162. package/dist/esm/components/Plugins/index.js +1 -1
  163. package/dist/esm/components/Popup/index.d.ts +12 -0
  164. package/dist/esm/components/Switch/Switch.d.ts +16 -0
  165. package/dist/esm/components/TUIChat/TUIChat.d.ts +8 -2
  166. package/dist/esm/components/TUIChat/TUIChat.js +1 -1
  167. package/dist/esm/components/TUIChat/TUIChatState.js +1 -1
  168. package/dist/esm/components/TUIChat/hooks/useCreateMessage.d.ts +29 -1
  169. package/dist/esm/components/TUIChat/hooks/useCreateMessage.js +1 -1
  170. package/dist/esm/components/TUIChat/hooks/useCreateTUIChatStateContext.js +1 -1
  171. package/dist/esm/components/TUIChat/hooks/useHandleMessage.js +1 -1
  172. package/dist/esm/components/TUIChat/hooks/useHandleMessageList.js +1 -1
  173. package/dist/esm/components/TUIChat/hooks/useMessageReceviedListener.js +1 -1
  174. package/dist/esm/components/TUIChat/unitls.js +1 -1
  175. package/dist/esm/components/TUIChatHeader/TUIChatHeader.d.ts +2 -0
  176. package/dist/esm/components/TUIChatHeader/TUIChatHeader.js +1 -1
  177. package/dist/esm/components/TUIChatHeader/TUIChatHeaderDefault.d.ts +7 -3
  178. package/dist/esm/components/TUIChatHeader/TUIChatHeaderDefault.js +1 -1
  179. package/dist/esm/components/TUIConversationList/TUIConversationList.js +1 -1
  180. package/dist/esm/components/TUIConversationList/hooks/useConversationUpdate.js +1 -1
  181. package/dist/esm/components/TUIKit/TUIKit.d.ts +2 -1
  182. package/dist/esm/components/TUIKit/TUIKit.js +1 -1
  183. package/dist/esm/components/TUIKit/hooks/useTUIKit.d.ts +2 -1
  184. package/dist/esm/components/TUIKit/hooks/useTUIKit.js +1 -1
  185. package/dist/esm/components/TUILive/TUILive.d.ts +29 -0
  186. package/dist/esm/components/TUILive/TUILive.js +1 -0
  187. package/dist/esm/components/TUILive/TUILiveContent.d.ts +13 -0
  188. package/dist/esm/components/TUILive/TUILiveContent.js +1 -0
  189. package/dist/esm/components/TUILive/TUILiveFooter.d.ts +29 -0
  190. package/dist/esm/components/TUILive/TUILiveFooter.js +1 -0
  191. package/dist/esm/components/TUILive/TUILiveHeader.d.ts +20 -0
  192. package/dist/esm/components/TUILive/TUILiveHeader.js +1 -0
  193. package/dist/esm/components/TUILive/TUILiveMemberList.d.ts +11 -0
  194. package/dist/esm/components/TUILive/TUILiveMemberList.js +1 -0
  195. package/dist/esm/components/TUILive/hooks/useLiveAtiveElements.js +1 -0
  196. package/dist/esm/components/TUILive/hooks/useLivePlayer.js +1 -0
  197. package/dist/esm/components/TUILive/hooks/useLiveState.js +1 -0
  198. package/dist/esm/components/TUILive/untils.js +1 -0
  199. package/dist/esm/components/TUIManage/TUIManage.js +1 -1
  200. package/dist/esm/components/TUIMessage/MessageAudio.js +1 -1
  201. package/dist/esm/components/TUIMessage/MessageAvatar.js +1 -0
  202. package/dist/esm/components/TUIMessage/MessageBubble.js +1 -1
  203. package/dist/esm/components/TUIMessage/MessageContext.d.ts +3 -1
  204. package/dist/esm/components/TUIMessage/MessageCustom.js +1 -1
  205. package/dist/esm/components/TUIMessage/MessageFile.js +1 -1
  206. package/dist/esm/components/TUIMessage/MessageImage.js +1 -1
  207. package/dist/esm/components/TUIMessage/MessageMerger.js +1 -1
  208. package/dist/esm/components/TUIMessage/MessageName.js +1 -0
  209. package/dist/esm/components/TUIMessage/MessagePlugins.d.ts +24 -0
  210. package/dist/esm/components/TUIMessage/MessagePlugins.js +1 -1
  211. package/dist/esm/components/TUIMessage/MessageProgress.js +1 -0
  212. package/dist/esm/components/TUIMessage/MessageRevoke.js +1 -1
  213. package/dist/esm/components/TUIMessage/MessageStatus.js +1 -1
  214. package/dist/esm/components/TUIMessage/MessageSystem.js +1 -1
  215. package/dist/esm/components/TUIMessage/MessageText.js +1 -1
  216. package/dist/esm/components/TUIMessage/MessageTip.js +1 -1
  217. package/dist/esm/components/TUIMessage/TUIMessage.d.ts +23 -3
  218. package/dist/esm/components/TUIMessage/TUIMessage.js +1 -1
  219. package/dist/esm/components/TUIMessage/TUIMessageDefault.js +1 -1
  220. package/dist/esm/components/TUIMessage/hooks/useMessageHandler.js +1 -1
  221. package/dist/esm/components/TUIMessage/hooks/useMessagePluginElement.js +1 -1
  222. package/dist/esm/components/TUIMessage/hooks/useMessageReply.js +1 -1
  223. package/dist/esm/components/TUIMessage/utils/index.js +1 -1
  224. package/dist/esm/components/TUIMessageInput/EmojiPicker.js +1 -1
  225. package/dist/esm/components/TUIMessageInput/InputPluginsDefalut.js +1 -1
  226. package/dist/esm/components/TUIMessageInput/InputQuoteDefalut.js +1 -1
  227. package/dist/esm/components/TUIMessageInput/TUIForward.js +1 -1
  228. package/dist/esm/components/TUIMessageInput/TUIMessageInput.d.ts +18 -7
  229. package/dist/esm/components/TUIMessageInput/TUIMessageInput.js +1 -1
  230. package/dist/esm/components/TUIMessageInput/TUIMessageInputDefault.js +1 -1
  231. package/dist/esm/components/TUIMessageInput/Transmitter.js +1 -0
  232. package/dist/esm/components/TUIMessageInput/hooks/useCreateMessageInputContext.js +1 -1
  233. package/dist/esm/components/TUIMessageInput/hooks/useEmojiPicker.js +1 -1
  234. package/dist/esm/components/TUIMessageInput/hooks/useHandleForwardMessage.js +1 -1
  235. package/dist/esm/components/TUIMessageInput/hooks/useHandleQuoteMessage.js +1 -1
  236. package/dist/esm/components/TUIMessageInput/hooks/useMessageInputState.js +1 -1
  237. package/dist/esm/components/TUIMessageInput/hooks/useMessageInputText.js +1 -1
  238. package/dist/esm/components/TUIMessageInput/hooks/useUploadPicker.js +1 -1
  239. package/dist/esm/components/TUIMessageList/TUIMessageList.d.ts +3 -1
  240. package/dist/esm/components/TUIMessageList/TUIMessageList.js +1 -1
  241. package/dist/esm/components/TUIMessageList/hooks/useMessageListElement.js +1 -1
  242. package/dist/esm/components/TUIProfile/TUIProfile.js +1 -1
  243. package/dist/esm/components/TUIProfile/TUIProfileDefault.js +1 -1
  244. package/dist/esm/components/TUIProfile/hooks/useMyProfile.js +1 -1
  245. package/dist/esm/components/Toast/index.d.ts +11 -0
  246. package/dist/esm/constants.js +1 -1
  247. package/dist/esm/context/ComponentContext.d.ts +1 -1
  248. package/dist/esm/context/TUIChatActionContext.d.ts +11 -2
  249. package/dist/esm/context/TUIChatStateContext.d.ts +10 -0
  250. package/dist/esm/context/TUIConversationContext.js +1 -1
  251. package/dist/esm/context/TUILiveContext.d.ts +51 -0
  252. package/dist/esm/context/TUILiveContext.js +1 -0
  253. package/dist/esm/context/TUIMessageContext.d.ts +22 -1
  254. package/dist/esm/context/TUIMessageContext.js +1 -1
  255. package/dist/esm/context/TUIMessageInputContext.d.ts +4 -5
  256. package/dist/esm/index.css +1 -1
  257. package/dist/esm/index.d.css +547 -7
  258. package/dist/esm/index.d.ts +18 -4
  259. package/dist/esm/index.js +1 -1
  260. package/package.json +1 -1
  261. package/src/components/Icon/config.ts +65 -0
  262. package/src/components/Icon/images/like.png +0 -0
  263. package/src/components/Icon/images/liked.png +0 -0
  264. package/src/components/Icon/images/living.png +0 -0
  265. package/src/components/Icon/images/member.png +0 -0
  266. package/src/components/Icon/images/owner.png +0 -0
  267. package/src/components/Icon/images/send.png +0 -0
  268. package/src/components/Icon/images/union.png +0 -0
  269. package/src/components/Icon/images/unlike.png +0 -0
  270. package/src/components/Icon/images/unliked.png +0 -0
  271. package/src/components/Icon/images/ununion.png +0 -0
  272. package/src/components/Icon/images/unvector.png +0 -0
  273. package/src/components/Icon/images/vector.png +0 -0
  274. package/src/components/Icon/images/voice.png +0 -0
  275. package/src/components/Icon/type.ts +13 -0
  276. package/src/components/Plugins/index.tsx +13 -11
  277. package/src/components/Plugins/styles/layout.scss +2 -1
  278. package/src/components/TUIChat/TUIChat.tsx +47 -8
  279. package/src/components/TUIChat/TUIChatState.tsx +27 -0
  280. package/src/components/TUIChat/hooks/useCreateMessage.tsx +85 -4
  281. package/src/components/TUIChat/hooks/useCreateTUIChatStateContext.tsx +12 -0
  282. package/src/components/TUIChat/hooks/useHandleMessage.tsx +24 -0
  283. package/src/components/TUIChat/hooks/useHandleMessageList.tsx +8 -0
  284. package/src/components/TUIChat/unitls.ts +13 -0
  285. package/src/components/TUIChatHeader/TUIChatHeader.tsx +6 -0
  286. package/src/components/TUIChatHeader/TUIChatHeaderDefault.tsx +36 -16
  287. package/src/components/TUIChatHeader/styles/color.scss +0 -3
  288. package/src/components/TUIChatHeader/styles/layout.scss +8 -4
  289. package/src/components/TUIKit/TUIKit.tsx +8 -5
  290. package/src/components/TUIKit/hooks/useTUIKit.tsx +7 -3
  291. package/src/components/TUIKit/styles/reset.scss +4 -0
  292. package/src/components/TUIMessage/MessageAudio.tsx +61 -2
  293. package/src/components/TUIMessage/MessageAvatar.tsx +38 -0
  294. package/src/components/TUIMessage/MessageBubble.tsx +24 -6
  295. package/src/components/TUIMessage/MessageContext.tsx +5 -2
  296. package/src/components/TUIMessage/MessageCustom.tsx +2 -1
  297. package/src/components/TUIMessage/MessageFile.tsx +9 -3
  298. package/src/components/TUIMessage/MessageImage.tsx +2 -1
  299. package/src/components/TUIMessage/MessageMerger.tsx +2 -1
  300. package/src/components/TUIMessage/MessageName.tsx +41 -0
  301. package/src/components/TUIMessage/MessagePlugins.tsx +81 -14
  302. package/src/components/TUIMessage/MessageProgress.tsx +88 -0
  303. package/src/components/TUIMessage/MessageRevoke.tsx +1 -1
  304. package/src/components/TUIMessage/MessageStatus.tsx +6 -1
  305. package/src/components/TUIMessage/MessageText.tsx +3 -3
  306. package/src/components/TUIMessage/TUIMessage.tsx +68 -16
  307. package/src/components/TUIMessage/TUIMessageDefault.tsx +25 -15
  308. package/src/components/TUIMessage/hooks/useMessagePluginElement.tsx +15 -1
  309. package/src/components/TUIMessage/styles/layout.scss +87 -2
  310. package/src/components/TUIMessage/utils/index.ts +14 -14
  311. package/src/components/TUIMessageInput/EmojiPicker.tsx +7 -1
  312. package/src/components/TUIMessageInput/InputPluginsDefalut.tsx +76 -8
  313. package/src/components/TUIMessageInput/TUIMessageInput.tsx +42 -22
  314. package/src/components/TUIMessageInput/TUIMessageInputDefault.tsx +2 -1
  315. package/src/components/TUIMessageInput/Transmitter.tsx +15 -0
  316. package/src/components/TUIMessageInput/hooks/useCreateMessageInputContext.ts +3 -9
  317. package/src/components/TUIMessageInput/hooks/useMessageInputState.tsx +8 -7
  318. package/src/components/TUIMessageInput/hooks/useMessageInputText.tsx +28 -30
  319. package/src/components/TUIMessageInput/hooks/useUploadPicker.tsx +2 -0
  320. package/src/components/TUIMessageInput/styles/layout.scss +16 -0
  321. package/src/components/TUIMessageList/TUIMessageList.tsx +32 -10
  322. package/src/components/TUIMessageList/hooks/useMessageListElement.tsx +26 -6
  323. package/src/components/TUIMessageList/styles/layout.scss +13 -1
  324. package/src/components/index.ts +11 -0
  325. package/src/constants.ts +3 -0
  326. package/src/context/ComponentContext.tsx +1 -1
  327. package/src/context/TUIChatActionContext.tsx +14 -1
  328. package/src/context/TUIChatStateContext.tsx +8 -0
  329. package/src/context/TUIMessageContext.tsx +20 -0
  330. package/src/context/TUIMessageInputContext.tsx +2 -3
@@ -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,85 @@ 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: {
16
+ // plugins: propsPlugins,
17
+ // showNumber: propsShowNumber,
18
+ // MoreIcon: propsMoreIcon,
19
+ // isEmojiPicker: porpsIsEmojiPicker,
20
+ // isImagePicker: porpsIsImagePicker,
21
+ // isVideoPicker: porpsIsVideoPicker,
22
+ // isFilePicker: porpsIsFilePicker,
23
+ // },
24
+ pluginConfig: propsPluginConfig,
17
25
  } = useTUIMessageInputContext('TUIMessageInputDefault');
18
26
 
27
+ const { TUIMessageInputConfig } = useTUIChatStateContext('TUIMessageInput');
28
+
29
+ // const {
30
+ // pluginConfig: {
31
+ // plugins: contextPlugins,
32
+ // showNumber: contextShowNumber,
33
+ // MoreIcon: contextMoreIcon,
34
+ // isEmojiPicker: contextIsEmojiPicker,
35
+ // isImagePicker: contextIsImagePicker,
36
+ // isVideoPicker: contextIsVideoPicker,
37
+ // isFilePicker: contextIsFilePicker,
38
+ // },
39
+ // } = TUIMessageInputConfig;
40
+
41
+ // const propPlugins = propsPlugins || contextPlugins || [];
42
+ // const showNumber = propsShowNumber || contextShowNumber || 1;
43
+ // const MoreIcon = propsMoreIcon || contextMoreIcon;
44
+
45
+ const propPlugins = propsPluginConfig?.plugins
46
+ || TUIMessageInputConfig?.pluginConfig?.plugins || [];
47
+ const showNumber = propsPluginConfig?.showNumber
48
+ || TUIMessageInputConfig?.pluginConfig?.showNumber || 1;
49
+ const MoreIcon = propsPluginConfig?.MoreIcon || TUIMessageInputConfig?.pluginConfig?.MoreIcon;
50
+
51
+ const handlePluginBoolenParams = (
52
+ porpsVal?:boolean | undefined,
53
+ contextVal?:boolean | undefined,
54
+ defaultVal?: boolean,
55
+ ) => {
56
+ if (typeof (porpsVal) === 'boolean') {
57
+ return porpsVal;
58
+ }
59
+ if (typeof (contextVal) === 'boolean') {
60
+ return contextVal;
61
+ }
62
+ return defaultVal;
63
+ };
64
+
65
+ const isEmojiPicker = handlePluginBoolenParams(
66
+ propsPluginConfig?.isEmojiPicker,
67
+ TUIMessageInputConfig?.pluginConfig?.isEmojiPicker,
68
+ true,
69
+ );
70
+ const isImagePicker = handlePluginBoolenParams(
71
+ propsPluginConfig?.isImagePicker,
72
+ TUIMessageInputConfig?.pluginConfig?.isImagePicker,
73
+ true,
74
+ );
75
+ const isVideoPicker = handlePluginBoolenParams(
76
+ propsPluginConfig?.isVideoPicker,
77
+ TUIMessageInputConfig?.pluginConfig?.isVideoPicker,
78
+ true,
79
+ );
80
+ const isFilePicker = handlePluginBoolenParams(
81
+ propsPluginConfig?.isFilePicker,
82
+ TUIMessageInputConfig?.pluginConfig?.isFilePicker,
83
+ true,
84
+ );
85
+
19
86
  const pluginsRef = useRef(null);
20
87
 
21
- const ImagePicker = useUploadElement({
88
+ const ImagePicker = isImagePicker && useUploadElement({
22
89
  children: (
23
90
  <div className="input-plugin-item">
24
91
  <Icon width={20} height={20} type={IconTypes.IMAGE} />
@@ -33,7 +100,7 @@ export function InputPluginsDefalut():React.ReactElement {
33
100
  },
34
101
  });
35
102
 
36
- const VideoPicker = useUploadElement({
103
+ const VideoPicker = isVideoPicker && useUploadElement({
37
104
  children: (
38
105
  <div className="input-plugin-item">
39
106
  <Icon width={20} height={20} type={IconTypes.VIDEO} />
@@ -48,7 +115,7 @@ export function InputPluginsDefalut():React.ReactElement {
48
115
  },
49
116
  });
50
117
 
51
- const FilePicker = useUploadElement({
118
+ const FilePicker = isFilePicker && useUploadElement({
52
119
  children: (
53
120
  <div className="input-plugin-item">
54
121
  <Icon width={20} height={20} type={IconTypes.DOCUMENT} />
@@ -62,8 +129,9 @@ export function InputPluginsDefalut():React.ReactElement {
62
129
  sendUploadMessage({ file }, MESSAGE_TYPE_NAME.FILE);
63
130
  },
64
131
  });
65
- const plugins = propPlugins
66
- || [<EmojiPicker />, ImagePicker, VideoPicker, FilePicker];
132
+ const plugins = [
133
+ isEmojiPicker && <EmojiPicker />, ImagePicker, VideoPicker, FilePicker, ...propPlugins,
134
+ ].filter((item) => item);
67
135
 
68
136
  return <Plugins ref={pluginsRef} plugins={plugins} showNumber={showNumber} MoreIcon={MoreIcon} />;
69
137
  }
@@ -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');
55
+
56
+ const contextDisabled = conversation?.type === TIM.TYPES.CONV_SYSTEM;
57
+
58
+ const { TUIMessageInputConfig } = useTUIChatStateContext('TUIMessageInput');
42
59
 
43
- const contextDisabled = conversation.type === TIM.TYPES.CONV_SYSTEM;
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,6 +81,8 @@ function UnMemoizedTUIMessageInput<T extends TUIMessageInputProps>(props: PropsW
66
81
  TUIMessageInput: PropTUIMessageInput,
67
82
  InputPlugins: PropInputPlugins,
68
83
  InputQuote: PropInputQuote,
84
+ isTransmitter = false,
85
+ className,
69
86
  } = props;
70
87
 
71
88
  const {
@@ -78,13 +95,16 @@ function UnMemoizedTUIMessageInput<T extends TUIMessageInputProps>(props: PropsW
78
95
  || ContextInputPlugins || InputPluginsDefalut || EmptyStateIndicator;
79
96
  const InputQuote = PropInputQuote || ContextInputQuote || InputQuoteDefalut;
80
97
  return (
81
- <div className="tui-message-input">
98
+ <div className={`tui-message-input ${className}`}>
82
99
  <TUIMessageInputProvider {...props}>
83
100
  <TUIForward />
84
101
  <InputQuote />
85
102
  <div className="tui-message-input-main">
86
- <InputPlugins />
87
- <Input />
103
+ <div className="tui-message-input-box">
104
+ <InputPlugins />
105
+ <Input />
106
+ </div>
107
+ {isTransmitter && <Transmitter />}
88
108
  </div>
89
109
  </TUIMessageInputProvider>
90
110
  </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
 
@@ -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,
@@ -2,22 +2,21 @@ import React, {
2
2
  useCallback,
3
3
  ChangeEventHandler,
4
4
  MutableRefObject,
5
- useEffect,
6
- useState,
7
5
  } from 'react';
8
- import { CONSTANT_DISPATCH_TYPE, MESSAGE_OPERATE } from '../../../constants';
6
+ import { CONSTANT_DISPATCH_TYPE, MESSAGE_OPERATE, MESSAGE_TYPE_NAME } from '../../../constants';
9
7
  import {
10
8
  useTUIChatActionContext,
11
- useTUIChatStateContext,
12
9
  useTUIKitContext,
13
10
  } from '../../../context';
14
11
  import { formatEmojiString } from '../../TUIMessage/utils/emojiMap';
15
12
  import { useHandleQuoteMessage } from './useHandleQuoteMessage';
16
13
  import type { IbaseStateProps, ICursorPos } from './useMessageInputState';
14
+ import { filesData } from './useUploadPicker';
17
15
 
18
16
  interface useMessageInputTextProps extends IbaseStateProps {
19
17
  focus?: boolean,
20
18
  textareaRef?: MutableRefObject<HTMLTextAreaElement | undefined>,
19
+ sendUploadMessage?: (file: filesData, type: MESSAGE_TYPE_NAME) => void
21
20
  }
22
21
 
23
22
  export const useMessageInputText = (props:useMessageInputTextProps) => {
@@ -26,19 +25,11 @@ export const useMessageInputText = (props:useMessageInputTextProps) => {
26
25
  dispatch,
27
26
  focus,
28
27
  textareaRef,
28
+ sendUploadMessage,
29
29
  } = props;
30
30
 
31
- const [quoteMessage, setQuoteMessage] = useState(null);
32
-
33
31
  const { tim } = useTUIKitContext('useMessageInputText');
34
32
  const { sendMessage, createTextMessage, operateMessage } = useTUIChatActionContext('TUIMessageInput');
35
- const {
36
- operateData,
37
- } = useTUIChatStateContext('TUIMessageInputDefault');
38
-
39
- useEffect(() => {
40
- setQuoteMessage(operateData[MESSAGE_OPERATE.QUOTE]);
41
- }, [operateData]);
42
33
 
43
34
  const { cloudCustomData } = useHandleQuoteMessage();
44
35
 
@@ -101,27 +92,34 @@ export const useMessageInputText = (props:useMessageInputTextProps) => {
101
92
  );
102
93
 
103
94
  const handlePasete = useCallback(
104
- async (e: ClipboardEvent) => {
95
+ async (e: React.ClipboardEvent | any) => {
105
96
  e.preventDefault();
106
97
  if (!(e.clipboardData && e.clipboardData.items)) {
107
98
  return;
108
99
  }
109
- const str = formatEmojiString(e.clipboardData.getData('text'), 1);
110
- if (str) {
111
- dispatch({
112
- type: CONSTANT_DISPATCH_TYPE.SET_TEXT,
113
- getNewText: (text:string) => `${text}${str}`,
114
- });
115
- }
116
- // else {
117
- // for (let i = 0; i < e.clipboardData.items.length; i += 1) {
118
- // const item = e.clipboardData.items[i];
119
- // if (item.kind === 'file') {
120
- // const f = item.getAsFile();
121
- // console.log('file', f);
122
- // }
123
- // }
124
- // }
100
+ const { types, items } = e.clipboardData;
101
+ types.find((type, index) => {
102
+ const item = items[index];
103
+ switch (type) {
104
+ case 'text/plain':
105
+ item.getAsString((str) => {
106
+ dispatch({
107
+ type: CONSTANT_DISPATCH_TYPE.SET_TEXT,
108
+ getNewText: (text:string) => `${text}${str}`,
109
+ });
110
+ });
111
+ return true;
112
+ case 'Files': {
113
+ const file = item.getAsFile();
114
+ if (item && item.kind === 'file' && item.type.match(/^image\//i)) {
115
+ sendUploadMessage({ file }, MESSAGE_TYPE_NAME.IMAGE);
116
+ }
117
+ return true;
118
+ }
119
+ default:
120
+ return false;
121
+ }
122
+ });
125
123
  },
126
124
  [textareaRef],
127
125
  );
@@ -16,6 +16,7 @@ export function useUploadPicker<T extends IbaseStateProps>(props:PropsWithChildr
16
16
  createImageMessage,
17
17
  createVideoMessage,
18
18
  createFileMessage,
19
+ updataUploadPenddingMessageList,
19
20
  } = useTUIChatActionContext('useUploadPicker');
20
21
 
21
22
  const creatUploadMessage = {
@@ -29,6 +30,7 @@ export function useUploadPicker<T extends IbaseStateProps>(props:PropsWithChildr
29
30
  payload: file,
30
31
  onProgress(num:number) {
31
32
  message.progress = num;
33
+ updataUploadPenddingMessageList(message);
32
34
  },
33
35
  });
34
36
  sendMessage(message);
@@ -7,6 +7,7 @@
7
7
  display: flex;
8
8
  align-items: center;
9
9
  padding: 14px 12px;
10
+ gap: 12px;
10
11
  .input-box {
11
12
  flex: 1;
12
13
  display: flex;
@@ -55,6 +56,11 @@
55
56
  display: none;
56
57
  }
57
58
  }
59
+ &-box {
60
+ flex: 1;
61
+ display: flex;
62
+ align-items: center;
63
+ }
58
64
  }
59
65
 
60
66
  ul li {
@@ -115,6 +121,9 @@ ul li {
115
121
  }
116
122
  }
117
123
  }
124
+ .emoji-plugin-right {
125
+ right: 0;
126
+ }
118
127
  }
119
128
 
120
129
 
@@ -279,4 +288,11 @@ ul li {
279
288
  -webkit-box-orient: vertical;
280
289
  }
281
290
  }
291
+ }
292
+
293
+ .transmitter {
294
+ padding: 0 10px;
295
+ .icon-send {
296
+ transform: rotate(90deg);
297
+ }
282
298
  }
@@ -14,9 +14,11 @@ import { EmptyStateIndicator as DefaultEmptyStateIndicator } from '../EmptyState
14
14
 
15
15
  import './styles/index.scss';
16
16
 
17
- interface MessageListProps extends InfiniteScrollProps {
17
+ export interface MessageListProps extends InfiniteScrollProps {
18
+ className?: string,
18
19
  messageList?: Array<Message>,
19
20
  highlightedMessageId?: string,
21
+ intervalsTimer?: number,
20
22
  }
21
23
  function TUIMessageListWithContext <T extends MessageListProps>(
22
24
  props: PropsWithChildren<T>,
@@ -25,6 +27,7 @@ function TUIMessageListWithContext <T extends MessageListProps>(
25
27
  messageList: propsMessageList,
26
28
  highlightedMessageId: propsHighlightedMessageId,
27
29
  loadMore: propsLoadMore,
30
+ intervalsTimer: propsIntervalsTimer,
28
31
  } = props;
29
32
 
30
33
  const [ulElement, setUlElement] = useState<HTMLUListElement | null>(null);
@@ -37,20 +40,26 @@ function TUIMessageListWithContext <T extends MessageListProps>(
37
40
  isSameLastMessageID,
38
41
  messageListRef,
39
42
  noMore,
43
+ TUIMessageListConfig,
40
44
  } = useTUIChatStateContext('TUIMessageList');
41
- const { loadMore: contextLoadMore } = useTUIChatActionContext('TUIMessageList');
45
+ const { loadMore: contextLoadMore, setHighlightedMessageId } = useTUIChatActionContext('TUIMessageList');
42
46
  const { TUIMessage, EmptyStateIndicator = DefaultEmptyStateIndicator } = useComponentContext('TUIMessageList');
43
- const highlightedMessageId = propsHighlightedMessageId || contextHighlightedMessageId;
47
+
48
+ const highlightedMessageId = propsHighlightedMessageId
49
+ || TUIMessageListConfig?.highlightedMessageId
50
+ || contextHighlightedMessageId;
51
+ const intervalsTimer = (propsIntervalsTimer || TUIMessageListConfig?.intervalsTimer || 30) * 60;
44
52
 
45
53
  const { messageList: enrichedMessageList } = useEnrichedMessageList({
46
- messageList: propsMessageList || contextMessageList,
54
+ messageList: propsMessageList || TUIMessageListConfig?.messageList || contextMessageList,
47
55
  });
48
56
 
49
- const loadMore = propsLoadMore || contextLoadMore;
57
+ const loadMore = propsLoadMore || TUIMessageListConfig?.loadMore || contextLoadMore;
50
58
 
51
59
  const elements = useMessageListElement({
52
60
  enrichedMessageList,
53
61
  TUIMessage,
62
+ intervalsTimer,
54
63
  });
55
64
 
56
65
  useEffect(() => {
@@ -59,10 +68,6 @@ function TUIMessageListWithContext <T extends MessageListProps>(
59
68
  if (!isCompleted && parentElement?.clientHeight >= ulElement?.clientHeight) {
60
69
  await loadMore();
61
70
  }
62
- if (highlightedMessageId) {
63
- const element = ulElement?.querySelector(`[data-message-id='${highlightedMessageId}']`);
64
- element?.scrollIntoView({ block: 'center' });
65
- }
66
71
 
67
72
  if (ulElement?.children && (!firstRender || !isSameLastMessageID)) {
68
73
  const HTMLCollection = ulElement?.children || [];
@@ -76,8 +81,25 @@ function TUIMessageListWithContext <T extends MessageListProps>(
76
81
  })();
77
82
  }, [elements, firstRender]);
78
83
 
84
+ useEffect(() => {
85
+ if (highlightedMessageId) {
86
+ const element = ulElement?.querySelector(`[data-message-id='${highlightedMessageId}']`);
87
+ if (!element) {
88
+ return;
89
+ }
90
+ const { children } = element.children[1];
91
+ children[children.length - 1].classList.add('high-lighted');
92
+ element?.scrollIntoView({ block: 'center' });
93
+ const timer = setTimeout(() => {
94
+ children[children.length - 1].classList.remove('high-lighted');
95
+ clearTimeout(timer);
96
+ setHighlightedMessageId('');
97
+ }, 1000);
98
+ }
99
+ }, [highlightedMessageId]);
100
+
79
101
  return (
80
- <div className="message-list" ref={messageListRef}>
102
+ <div className={`message-list ${!firstRender ? 'hide' : ''}`} ref={messageListRef}>
81
103
  {noMore}
82
104
  {noMore && <p className="no-more">no More</p>}
83
105
  <InfiniteScroll