@tencentcloud/chat-uikit-react 0.0.2 → 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 (338) hide show
  1. package/CHANGELOG.md +28 -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/ConversationPreview/utils.js +1 -1
  11. package/dist/cjs/components/ConversationSearch/ConversationSearchResult.js +1 -1
  12. package/dist/cjs/components/DivWithEdit/DivWithEdit.d.ts +16 -0
  13. package/dist/cjs/components/EmptyStateIndicator/EmptyStateIndicator.d.ts +5 -1
  14. package/dist/cjs/components/Icon/Icon.d.ts +14 -0
  15. package/dist/cjs/components/Icon/config.js +1 -1
  16. package/dist/cjs/components/Icon/images/like.png.js +1 -0
  17. package/dist/cjs/components/Icon/images/liked.png.js +1 -0
  18. package/dist/cjs/components/Icon/images/living.png.js +1 -0
  19. package/dist/cjs/components/Icon/images/member.png.js +1 -0
  20. package/dist/cjs/components/Icon/images/owner.png.js +1 -0
  21. package/dist/cjs/components/Icon/images/send.png.js +1 -0
  22. package/dist/cjs/components/Icon/images/union.png.js +1 -0
  23. package/dist/cjs/components/Icon/images/unlike.png.js +1 -0
  24. package/dist/cjs/components/Icon/images/unliked.png.js +1 -0
  25. package/dist/cjs/components/Icon/images/ununion.png.js +1 -0
  26. package/dist/cjs/components/Icon/images/unvector.png.js +1 -0
  27. package/dist/cjs/components/Icon/images/vector.png.js +1 -0
  28. package/dist/cjs/components/Icon/images/voice.png.js +1 -0
  29. package/dist/cjs/components/Icon/type.d.ts +47 -0
  30. package/dist/cjs/components/Icon/type.js +1 -1
  31. package/dist/cjs/components/Input/Input.d.ts +7 -1
  32. package/dist/cjs/components/Model/index.d.ts +9 -0
  33. package/dist/cjs/components/Plugins/index.d.ts +17 -0
  34. package/dist/cjs/components/Plugins/index.js +1 -1
  35. package/dist/cjs/components/Popup/index.d.ts +12 -0
  36. package/dist/cjs/components/Switch/Switch.d.ts +16 -0
  37. package/dist/cjs/components/TUIChat/TUIChat.d.ts +8 -2
  38. package/dist/cjs/components/TUIChat/TUIChat.js +1 -1
  39. package/dist/cjs/components/TUIChat/TUIChatState.js +1 -1
  40. package/dist/cjs/components/TUIChat/hooks/useCreateMessage.d.ts +29 -1
  41. package/dist/cjs/components/TUIChat/hooks/useCreateMessage.js +1 -1
  42. package/dist/cjs/components/TUIChat/hooks/useCreateTUIChatStateContext.js +1 -1
  43. package/dist/cjs/components/TUIChat/hooks/useHandleMessage.js +1 -1
  44. package/dist/cjs/components/TUIChat/hooks/useHandleMessageList.js +1 -1
  45. package/dist/cjs/components/TUIChat/hooks/useMessageReceviedListener.js +1 -1
  46. package/dist/cjs/components/TUIChat/unitls.js +1 -1
  47. package/dist/cjs/components/TUIChatHeader/TUIChatHeader.d.ts +2 -0
  48. package/dist/cjs/components/TUIChatHeader/TUIChatHeader.js +1 -1
  49. package/dist/cjs/components/TUIChatHeader/TUIChatHeaderDefault.d.ts +7 -3
  50. package/dist/cjs/components/TUIChatHeader/TUIChatHeaderDefault.js +1 -1
  51. package/dist/cjs/components/TUIConversationList/TUIConversationList.js +1 -1
  52. package/dist/cjs/components/TUIConversationList/hooks/useConversationUpdate.js +1 -1
  53. package/dist/cjs/components/TUIKit/TUIKit.d.ts +2 -1
  54. package/dist/cjs/components/TUIKit/TUIKit.js +1 -1
  55. package/dist/cjs/components/TUIKit/hooks/useTUIKit.d.ts +2 -1
  56. package/dist/cjs/components/TUIKit/hooks/useTUIKit.js +1 -1
  57. package/dist/cjs/components/TUILive/TUILive.d.ts +29 -0
  58. package/dist/cjs/components/TUILive/TUILive.js +1 -0
  59. package/dist/cjs/components/TUILive/TUILiveContent.d.ts +13 -0
  60. package/dist/cjs/components/TUILive/TUILiveContent.js +1 -0
  61. package/dist/cjs/components/TUILive/TUILiveFooter.d.ts +29 -0
  62. package/dist/cjs/components/TUILive/TUILiveFooter.js +1 -0
  63. package/dist/cjs/components/TUILive/TUILiveHeader.d.ts +20 -0
  64. package/dist/cjs/components/TUILive/TUILiveHeader.js +1 -0
  65. package/dist/cjs/components/TUILive/TUILiveMemberList.d.ts +11 -0
  66. package/dist/cjs/components/TUILive/TUILiveMemberList.js +1 -0
  67. package/dist/cjs/components/TUILive/hooks/useLiveAtiveElements.js +1 -0
  68. package/dist/cjs/components/TUILive/hooks/useLivePlayer.js +1 -0
  69. package/dist/cjs/components/TUILive/hooks/useLiveState.js +1 -0
  70. package/dist/cjs/components/TUILive/untils.js +1 -0
  71. package/dist/cjs/components/TUIManage/TUIManage.js +1 -1
  72. package/dist/cjs/components/TUIMessage/MessageAudio.js +1 -1
  73. package/dist/cjs/components/TUIMessage/MessageAvatar.js +1 -0
  74. package/dist/cjs/components/TUIMessage/MessageBubble.js +1 -1
  75. package/dist/cjs/components/TUIMessage/MessageContext.d.ts +3 -1
  76. package/dist/cjs/components/TUIMessage/MessageCustom.js +1 -1
  77. package/dist/cjs/components/TUIMessage/MessageFile.js +1 -1
  78. package/dist/cjs/components/TUIMessage/MessageImage.js +1 -1
  79. package/dist/cjs/components/TUIMessage/MessageMerger.js +1 -1
  80. package/dist/cjs/components/TUIMessage/MessageName.js +1 -0
  81. package/dist/cjs/components/TUIMessage/MessagePlugins.d.ts +24 -0
  82. package/dist/cjs/components/TUIMessage/MessagePlugins.js +1 -1
  83. package/dist/cjs/components/TUIMessage/MessageProgress.js +1 -0
  84. package/dist/cjs/components/TUIMessage/MessageRevoke.js +1 -1
  85. package/dist/cjs/components/TUIMessage/MessageStatus.js +1 -1
  86. package/dist/cjs/components/TUIMessage/MessageSystem.js +1 -1
  87. package/dist/cjs/components/TUIMessage/MessageText.js +1 -1
  88. package/dist/cjs/components/TUIMessage/MessageTip.js +1 -1
  89. package/dist/cjs/components/TUIMessage/TUIMessage.d.ts +23 -3
  90. package/dist/cjs/components/TUIMessage/TUIMessage.js +1 -1
  91. package/dist/cjs/components/TUIMessage/TUIMessageDefault.js +1 -1
  92. package/dist/cjs/components/TUIMessage/hooks/useMessageHandler.js +1 -1
  93. package/dist/cjs/components/TUIMessage/hooks/useMessagePluginElement.js +1 -1
  94. package/dist/cjs/components/TUIMessage/hooks/useMessageReply.js +1 -1
  95. package/dist/cjs/components/TUIMessage/utils/emojiMap.js +1 -1
  96. package/dist/cjs/components/TUIMessage/utils/index.js +1 -1
  97. package/dist/cjs/components/TUIMessageInput/EmojiPicker.js +1 -1
  98. package/dist/cjs/components/TUIMessageInput/InputPluginsDefalut.js +1 -1
  99. package/dist/cjs/components/TUIMessageInput/InputQuoteDefalut.js +1 -1
  100. package/dist/cjs/components/TUIMessageInput/TUIForward.js +1 -1
  101. package/dist/cjs/components/TUIMessageInput/TUIMessageInput.d.ts +18 -7
  102. package/dist/cjs/components/TUIMessageInput/TUIMessageInput.js +1 -1
  103. package/dist/cjs/components/TUIMessageInput/TUIMessageInputDefault.js +1 -1
  104. package/dist/cjs/components/TUIMessageInput/Transmitter.js +1 -0
  105. package/dist/cjs/components/TUIMessageInput/hooks/useCreateMessageInputContext.js +1 -1
  106. package/dist/cjs/components/TUIMessageInput/hooks/useEmojiPicker.js +1 -1
  107. package/dist/cjs/components/TUIMessageInput/hooks/useHandleForwardMessage.js +1 -1
  108. package/dist/cjs/components/TUIMessageInput/hooks/useHandleQuoteMessage.js +1 -1
  109. package/dist/cjs/components/TUIMessageInput/hooks/useMessageInputState.js +1 -1
  110. package/dist/cjs/components/TUIMessageInput/hooks/useMessageInputText.js +1 -1
  111. package/dist/cjs/components/TUIMessageInput/hooks/useUploadPicker.js +1 -1
  112. package/dist/cjs/components/TUIMessageList/TUIMessageList.d.ts +3 -1
  113. package/dist/cjs/components/TUIMessageList/TUIMessageList.js +1 -1
  114. package/dist/cjs/components/TUIMessageList/hooks/useMessageListElement.js +1 -1
  115. package/dist/cjs/components/TUIProfile/TUIProfile.js +1 -1
  116. package/dist/cjs/components/TUIProfile/TUIProfileDefault.js +1 -1
  117. package/dist/cjs/components/TUIProfile/hooks/useMyProfile.js +1 -1
  118. package/dist/cjs/components/Toast/index.d.ts +11 -0
  119. package/dist/cjs/constants.js +1 -1
  120. package/dist/cjs/context/ComponentContext.d.ts +1 -1
  121. package/dist/cjs/context/TUIChatActionContext.d.ts +11 -2
  122. package/dist/cjs/context/TUIChatStateContext.d.ts +10 -0
  123. package/dist/cjs/context/TUIConversationContext.js +1 -1
  124. package/dist/cjs/context/TUILiveContext.d.ts +51 -0
  125. package/dist/cjs/context/TUILiveContext.js +1 -0
  126. package/dist/cjs/context/TUIMessageContext.d.ts +22 -1
  127. package/dist/cjs/context/TUIMessageContext.js +1 -1
  128. package/dist/cjs/context/TUIMessageInputContext.d.ts +4 -5
  129. package/dist/cjs/index.css +1 -1
  130. package/dist/cjs/index.d.css +547 -7
  131. package/dist/cjs/index.d.ts +18 -4
  132. package/dist/cjs/index.js +1 -1
  133. package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +1 -0
  134. package/dist/esm/components/Checkbox/index.d.ts +16 -0
  135. package/dist/esm/components/ConversationCreate/ConversationCreatGroupDetail.js +1 -1
  136. package/dist/esm/components/ConversationCreate/ConversationCreate.js +1 -1
  137. package/dist/esm/components/ConversationCreate/ConversationCreateUserSelectList.js +1 -1
  138. package/dist/esm/components/ConversationCreate/hooks/useConversationCreate.js +1 -1
  139. package/dist/esm/components/ConversationPreview/ConversationPreview.js +1 -1
  140. package/dist/esm/components/ConversationPreview/ConversationPreviewContent.js +1 -1
  141. package/dist/esm/components/ConversationPreview/utils.js +1 -1
  142. package/dist/esm/components/ConversationSearch/ConversationSearchResult.js +1 -1
  143. package/dist/esm/components/DivWithEdit/DivWithEdit.d.ts +16 -0
  144. package/dist/esm/components/EmptyStateIndicator/EmptyStateIndicator.d.ts +5 -1
  145. package/dist/esm/components/Icon/Icon.d.ts +14 -0
  146. package/dist/esm/components/Icon/config.js +1 -1
  147. package/dist/esm/components/Icon/images/like.png.js +1 -0
  148. package/dist/esm/components/Icon/images/liked.png.js +1 -0
  149. package/dist/esm/components/Icon/images/living.png.js +1 -0
  150. package/dist/esm/components/Icon/images/member.png.js +1 -0
  151. package/dist/esm/components/Icon/images/owner.png.js +1 -0
  152. package/dist/esm/components/Icon/images/send.png.js +1 -0
  153. package/dist/esm/components/Icon/images/union.png.js +1 -0
  154. package/dist/esm/components/Icon/images/unlike.png.js +1 -0
  155. package/dist/esm/components/Icon/images/unliked.png.js +1 -0
  156. package/dist/esm/components/Icon/images/ununion.png.js +1 -0
  157. package/dist/esm/components/Icon/images/unvector.png.js +1 -0
  158. package/dist/esm/components/Icon/images/vector.png.js +1 -0
  159. package/dist/esm/components/Icon/images/voice.png.js +1 -0
  160. package/dist/esm/components/Icon/type.d.ts +47 -0
  161. package/dist/esm/components/Icon/type.js +1 -1
  162. package/dist/esm/components/Input/Input.d.ts +7 -1
  163. package/dist/esm/components/Model/index.d.ts +9 -0
  164. package/dist/esm/components/Plugins/index.d.ts +17 -0
  165. package/dist/esm/components/Plugins/index.js +1 -1
  166. package/dist/esm/components/Popup/index.d.ts +12 -0
  167. package/dist/esm/components/Switch/Switch.d.ts +16 -0
  168. package/dist/esm/components/TUIChat/TUIChat.d.ts +8 -2
  169. package/dist/esm/components/TUIChat/TUIChat.js +1 -1
  170. package/dist/esm/components/TUIChat/TUIChatState.js +1 -1
  171. package/dist/esm/components/TUIChat/hooks/useCreateMessage.d.ts +29 -1
  172. package/dist/esm/components/TUIChat/hooks/useCreateMessage.js +1 -1
  173. package/dist/esm/components/TUIChat/hooks/useCreateTUIChatStateContext.js +1 -1
  174. package/dist/esm/components/TUIChat/hooks/useHandleMessage.js +1 -1
  175. package/dist/esm/components/TUIChat/hooks/useHandleMessageList.js +1 -1
  176. package/dist/esm/components/TUIChat/hooks/useMessageReceviedListener.js +1 -1
  177. package/dist/esm/components/TUIChat/unitls.js +1 -1
  178. package/dist/esm/components/TUIChatHeader/TUIChatHeader.d.ts +2 -0
  179. package/dist/esm/components/TUIChatHeader/TUIChatHeader.js +1 -1
  180. package/dist/esm/components/TUIChatHeader/TUIChatHeaderDefault.d.ts +7 -3
  181. package/dist/esm/components/TUIChatHeader/TUIChatHeaderDefault.js +1 -1
  182. package/dist/esm/components/TUIConversationList/TUIConversationList.js +1 -1
  183. package/dist/esm/components/TUIConversationList/hooks/useConversationUpdate.js +1 -1
  184. package/dist/esm/components/TUIKit/TUIKit.d.ts +2 -1
  185. package/dist/esm/components/TUIKit/TUIKit.js +1 -1
  186. package/dist/esm/components/TUIKit/hooks/useTUIKit.d.ts +2 -1
  187. package/dist/esm/components/TUIKit/hooks/useTUIKit.js +1 -1
  188. package/dist/esm/components/TUILive/TUILive.d.ts +29 -0
  189. package/dist/esm/components/TUILive/TUILive.js +1 -0
  190. package/dist/esm/components/TUILive/TUILiveContent.d.ts +13 -0
  191. package/dist/esm/components/TUILive/TUILiveContent.js +1 -0
  192. package/dist/esm/components/TUILive/TUILiveFooter.d.ts +29 -0
  193. package/dist/esm/components/TUILive/TUILiveFooter.js +1 -0
  194. package/dist/esm/components/TUILive/TUILiveHeader.d.ts +20 -0
  195. package/dist/esm/components/TUILive/TUILiveHeader.js +1 -0
  196. package/dist/esm/components/TUILive/TUILiveMemberList.d.ts +11 -0
  197. package/dist/esm/components/TUILive/TUILiveMemberList.js +1 -0
  198. package/dist/esm/components/TUILive/hooks/useLiveAtiveElements.js +1 -0
  199. package/dist/esm/components/TUILive/hooks/useLivePlayer.js +1 -0
  200. package/dist/esm/components/TUILive/hooks/useLiveState.js +1 -0
  201. package/dist/esm/components/TUILive/untils.js +1 -0
  202. package/dist/esm/components/TUIManage/TUIManage.js +1 -1
  203. package/dist/esm/components/TUIMessage/MessageAudio.js +1 -1
  204. package/dist/esm/components/TUIMessage/MessageAvatar.js +1 -0
  205. package/dist/esm/components/TUIMessage/MessageBubble.js +1 -1
  206. package/dist/esm/components/TUIMessage/MessageContext.d.ts +3 -1
  207. package/dist/esm/components/TUIMessage/MessageCustom.js +1 -1
  208. package/dist/esm/components/TUIMessage/MessageFile.js +1 -1
  209. package/dist/esm/components/TUIMessage/MessageImage.js +1 -1
  210. package/dist/esm/components/TUIMessage/MessageMerger.js +1 -1
  211. package/dist/esm/components/TUIMessage/MessageName.js +1 -0
  212. package/dist/esm/components/TUIMessage/MessagePlugins.d.ts +24 -0
  213. package/dist/esm/components/TUIMessage/MessagePlugins.js +1 -1
  214. package/dist/esm/components/TUIMessage/MessageProgress.js +1 -0
  215. package/dist/esm/components/TUIMessage/MessageRevoke.js +1 -1
  216. package/dist/esm/components/TUIMessage/MessageStatus.js +1 -1
  217. package/dist/esm/components/TUIMessage/MessageSystem.js +1 -1
  218. package/dist/esm/components/TUIMessage/MessageText.js +1 -1
  219. package/dist/esm/components/TUIMessage/MessageTip.js +1 -1
  220. package/dist/esm/components/TUIMessage/TUIMessage.d.ts +23 -3
  221. package/dist/esm/components/TUIMessage/TUIMessage.js +1 -1
  222. package/dist/esm/components/TUIMessage/TUIMessageDefault.js +1 -1
  223. package/dist/esm/components/TUIMessage/hooks/useMessageHandler.js +1 -1
  224. package/dist/esm/components/TUIMessage/hooks/useMessagePluginElement.js +1 -1
  225. package/dist/esm/components/TUIMessage/hooks/useMessageReply.js +1 -1
  226. package/dist/esm/components/TUIMessage/utils/emojiMap.js +1 -1
  227. package/dist/esm/components/TUIMessage/utils/index.js +1 -1
  228. package/dist/esm/components/TUIMessageInput/EmojiPicker.js +1 -1
  229. package/dist/esm/components/TUIMessageInput/InputPluginsDefalut.js +1 -1
  230. package/dist/esm/components/TUIMessageInput/InputQuoteDefalut.js +1 -1
  231. package/dist/esm/components/TUIMessageInput/TUIForward.js +1 -1
  232. package/dist/esm/components/TUIMessageInput/TUIMessageInput.d.ts +18 -7
  233. package/dist/esm/components/TUIMessageInput/TUIMessageInput.js +1 -1
  234. package/dist/esm/components/TUIMessageInput/TUIMessageInputDefault.js +1 -1
  235. package/dist/esm/components/TUIMessageInput/Transmitter.js +1 -0
  236. package/dist/esm/components/TUIMessageInput/hooks/useCreateMessageInputContext.js +1 -1
  237. package/dist/esm/components/TUIMessageInput/hooks/useEmojiPicker.js +1 -1
  238. package/dist/esm/components/TUIMessageInput/hooks/useHandleForwardMessage.js +1 -1
  239. package/dist/esm/components/TUIMessageInput/hooks/useHandleQuoteMessage.js +1 -1
  240. package/dist/esm/components/TUIMessageInput/hooks/useMessageInputState.js +1 -1
  241. package/dist/esm/components/TUIMessageInput/hooks/useMessageInputText.js +1 -1
  242. package/dist/esm/components/TUIMessageInput/hooks/useUploadPicker.js +1 -1
  243. package/dist/esm/components/TUIMessageList/TUIMessageList.d.ts +3 -1
  244. package/dist/esm/components/TUIMessageList/TUIMessageList.js +1 -1
  245. package/dist/esm/components/TUIMessageList/hooks/useMessageListElement.js +1 -1
  246. package/dist/esm/components/TUIProfile/TUIProfile.js +1 -1
  247. package/dist/esm/components/TUIProfile/TUIProfileDefault.js +1 -1
  248. package/dist/esm/components/TUIProfile/hooks/useMyProfile.js +1 -1
  249. package/dist/esm/components/Toast/index.d.ts +11 -0
  250. package/dist/esm/constants.js +1 -1
  251. package/dist/esm/context/ComponentContext.d.ts +1 -1
  252. package/dist/esm/context/TUIChatActionContext.d.ts +11 -2
  253. package/dist/esm/context/TUIChatStateContext.d.ts +10 -0
  254. package/dist/esm/context/TUIConversationContext.js +1 -1
  255. package/dist/esm/context/TUILiveContext.d.ts +51 -0
  256. package/dist/esm/context/TUILiveContext.js +1 -0
  257. package/dist/esm/context/TUIMessageContext.d.ts +22 -1
  258. package/dist/esm/context/TUIMessageContext.js +1 -1
  259. package/dist/esm/context/TUIMessageInputContext.d.ts +4 -5
  260. package/dist/esm/index.css +1 -1
  261. package/dist/esm/index.d.css +547 -7
  262. package/dist/esm/index.d.ts +18 -4
  263. package/dist/esm/index.js +1 -1
  264. package/package.json +5 -2
  265. package/src/components/ConversationPreview/utils.tsx +2 -1
  266. package/src/components/Icon/config.ts +65 -0
  267. package/src/components/Icon/images/like.png +0 -0
  268. package/src/components/Icon/images/liked.png +0 -0
  269. package/src/components/Icon/images/living.png +0 -0
  270. package/src/components/Icon/images/member.png +0 -0
  271. package/src/components/Icon/images/owner.png +0 -0
  272. package/src/components/Icon/images/send.png +0 -0
  273. package/src/components/Icon/images/union.png +0 -0
  274. package/src/components/Icon/images/unlike.png +0 -0
  275. package/src/components/Icon/images/unliked.png +0 -0
  276. package/src/components/Icon/images/ununion.png +0 -0
  277. package/src/components/Icon/images/unvector.png +0 -0
  278. package/src/components/Icon/images/vector.png +0 -0
  279. package/src/components/Icon/images/voice.png +0 -0
  280. package/src/components/Icon/type.ts +13 -0
  281. package/src/components/Plugins/index.tsx +13 -11
  282. package/src/components/Plugins/styles/layout.scss +2 -1
  283. package/src/components/TUIChat/TUIChat.tsx +47 -8
  284. package/src/components/TUIChat/TUIChatState.tsx +27 -0
  285. package/src/components/TUIChat/hooks/useCreateMessage.tsx +85 -4
  286. package/src/components/TUIChat/hooks/useCreateTUIChatStateContext.tsx +12 -0
  287. package/src/components/TUIChat/hooks/useHandleMessage.tsx +24 -0
  288. package/src/components/TUIChat/hooks/useHandleMessageList.tsx +8 -0
  289. package/src/components/TUIChat/unitls.ts +13 -0
  290. package/src/components/TUIChatHeader/TUIChatHeader.tsx +6 -0
  291. package/src/components/TUIChatHeader/TUIChatHeaderDefault.tsx +36 -16
  292. package/src/components/TUIChatHeader/styles/color.scss +0 -3
  293. package/src/components/TUIChatHeader/styles/layout.scss +8 -4
  294. package/src/components/TUIKit/TUIKit.tsx +8 -5
  295. package/src/components/TUIKit/hooks/useTUIKit.tsx +7 -3
  296. package/src/components/TUIKit/styles/reset.scss +4 -0
  297. package/src/components/TUIMessage/MessageAudio.tsx +61 -2
  298. package/src/components/TUIMessage/MessageAvatar.tsx +38 -0
  299. package/src/components/TUIMessage/MessageBubble.tsx +24 -6
  300. package/src/components/TUIMessage/MessageContext.tsx +5 -2
  301. package/src/components/TUIMessage/MessageCustom.tsx +2 -1
  302. package/src/components/TUIMessage/MessageFile.tsx +9 -3
  303. package/src/components/TUIMessage/MessageImage.tsx +2 -1
  304. package/src/components/TUIMessage/MessageMerger.tsx +2 -1
  305. package/src/components/TUIMessage/MessageName.tsx +41 -0
  306. package/src/components/TUIMessage/MessagePlugins.tsx +81 -14
  307. package/src/components/TUIMessage/MessageProgress.tsx +88 -0
  308. package/src/components/TUIMessage/MessageRevoke.tsx +1 -1
  309. package/src/components/TUIMessage/MessageStatus.tsx +6 -1
  310. package/src/components/TUIMessage/MessageText.tsx +3 -3
  311. package/src/components/TUIMessage/TUIMessage.tsx +68 -16
  312. package/src/components/TUIMessage/TUIMessageDefault.tsx +25 -15
  313. package/src/components/TUIMessage/hooks/useMessagePluginElement.tsx +15 -1
  314. package/src/components/TUIMessage/styles/layout.scss +87 -2
  315. package/src/components/TUIMessage/utils/emojiMap.ts +181 -0
  316. package/src/components/TUIMessage/utils/index.ts +14 -14
  317. package/src/components/TUIMessageInput/EmojiPicker.tsx +9 -2
  318. package/src/components/TUIMessageInput/InputPluginsDefalut.tsx +76 -8
  319. package/src/components/TUIMessageInput/InputQuoteDefalut.tsx +2 -1
  320. package/src/components/TUIMessageInput/TUIMessageInput.tsx +42 -22
  321. package/src/components/TUIMessageInput/TUIMessageInputDefault.tsx +2 -1
  322. package/src/components/TUIMessageInput/Transmitter.tsx +15 -0
  323. package/src/components/TUIMessageInput/hooks/useCreateMessageInputContext.ts +3 -9
  324. package/src/components/TUIMessageInput/hooks/useEmojiPicker.tsx +2 -1
  325. package/src/components/TUIMessageInput/hooks/useMessageInputState.tsx +8 -7
  326. package/src/components/TUIMessageInput/hooks/useMessageInputText.tsx +30 -31
  327. package/src/components/TUIMessageInput/hooks/useUploadPicker.tsx +2 -0
  328. package/src/components/TUIMessageInput/styles/layout.scss +16 -0
  329. package/src/components/TUIMessageList/TUIMessageList.tsx +32 -10
  330. package/src/components/TUIMessageList/hooks/useMessageListElement.tsx +26 -6
  331. package/src/components/TUIMessageList/styles/layout.scss +13 -1
  332. package/src/components/index.ts +11 -0
  333. package/src/constants.ts +3 -0
  334. package/src/context/ComponentContext.tsx +1 -1
  335. package/src/context/TUIChatActionContext.tsx +14 -1
  336. package/src/context/TUIChatStateContext.tsx +8 -0
  337. package/src/context/TUIMessageContext.tsx +20 -0
  338. package/src/context/TUIMessageInputContext.tsx +2 -3
@@ -8,19 +8,39 @@ import { useTUIChatStateContext, useTUIMessageContext } from '../../context';
8
8
  import { useMessagePluginElement, useMessageHandler } from './hooks';
9
9
  import { MESSAGE_FLOW, MESSAGE_STATUS } from '../../constants';
10
10
 
11
- export function MessagePlugins <T extends PluginsProps>(
11
+ enum PluginsNameEnum {
12
+ quote = 'quote',
13
+ forward = 'forward',
14
+ copy = 'copy',
15
+ delete = 'delete',
16
+ resend = 'resend',
17
+ revoke = 'revoke',
18
+ }
19
+ export type MessagePluginConfigProps = {
20
+ [propsName in PluginsNameEnum]?: {
21
+ isShow?: boolean;
22
+ relateMessageType?: TIM.TYPES[],
23
+ };
24
+ };
25
+
26
+ export interface MessagePluginsProps extends PluginsProps {
27
+ config?: MessagePluginConfigProps
28
+ }
29
+
30
+ export function MessagePlugins <T extends MessagePluginsProps>(
12
31
  props:PropsWithChildren<T>,
13
32
  ):React.ReactElement {
14
33
  const {
15
34
  plugins: propsPlugins,
16
- showNumber = 0,
35
+ showNumber: propsShowNumber,
17
36
  MoreIcon: propsMoreIcon,
37
+ config: propsPluginConfig,
18
38
  } = props;
19
39
 
20
40
  const [className, setClassName] = useState('');
21
41
  const pluginsRef = useRef(null);
22
42
 
23
- const { message } = useTUIMessageContext('MessagePlugins');
43
+ const { message, plugin: contextPlugin } = useTUIMessageContext('MessagePlugins');
24
44
  const { messageListRef } = useTUIChatStateContext('MessageBubbleWithContext');
25
45
  const {
26
46
  handleDelMessage,
@@ -31,6 +51,40 @@ export function MessagePlugins <T extends PluginsProps>(
31
51
  handleForWardMessage,
32
52
  } = useMessageHandler({ message });
33
53
 
54
+ const pluginConfig = {
55
+ quote: {
56
+ isShow: true,
57
+ ...propsPluginConfig?.quote,
58
+ ...contextPlugin?.config?.quote,
59
+ },
60
+ forward: {
61
+ isShow: true,
62
+ ...propsPluginConfig?.forward,
63
+ ...contextPlugin?.config?.forward,
64
+ },
65
+ copy: {
66
+ isShow: true,
67
+ relateMessageType: [TIM.TYPES.MSG_TEXT],
68
+ ...propsPluginConfig?.copy,
69
+ ...contextPlugin?.config?.copy,
70
+ },
71
+ delete: {
72
+ isShow: true,
73
+ ...propsPluginConfig?.delete,
74
+ ...contextPlugin?.config?.delete,
75
+ },
76
+ revoke: {
77
+ isShow: true,
78
+ ...propsPluginConfig?.revoke,
79
+ ...contextPlugin?.config?.revoke,
80
+ },
81
+ resend: {
82
+ isShow: true,
83
+ ...propsPluginConfig?.resend,
84
+ ...contextPlugin?.config?.resend,
85
+ },
86
+ };
87
+
34
88
  const handleVisible = (data) => {
35
89
  setClassName(`${!data.top && 'message-plugin-top'} ${!data.left && 'message-plugin-left'}`);
36
90
  };
@@ -47,6 +101,9 @@ export function MessagePlugins <T extends PluginsProps>(
47
101
  handleRevokeMessage(e);
48
102
  },
49
103
  message,
104
+ isShow: pluginConfig.revoke.isShow
105
+ && (message?.status === MESSAGE_STATUS.SUCCESS && message.flow === MESSAGE_FLOW.OUT),
106
+ relateMessageType: pluginConfig.revoke.relateMessageType,
50
107
  });
51
108
 
52
109
  const DeleteElement = useMessagePluginElement({
@@ -61,6 +118,8 @@ export function MessagePlugins <T extends PluginsProps>(
61
118
  handleDelMessage(e);
62
119
  },
63
120
  message,
121
+ isShow: pluginConfig.delete.isShow && message?.status === MESSAGE_STATUS.SUCCESS,
122
+ relateMessageType: pluginConfig.delete.relateMessageType,
64
123
  });
65
124
 
66
125
  const ReplyElement = useMessagePluginElement({
@@ -75,6 +134,8 @@ export function MessagePlugins <T extends PluginsProps>(
75
134
  handleReplyMessage(e);
76
135
  },
77
136
  message,
137
+ isShow: pluginConfig.quote.isShow && message?.status === MESSAGE_STATUS.SUCCESS,
138
+ relateMessageType: pluginConfig.quote.relateMessageType,
78
139
  });
79
140
 
80
141
  const CopyElement = useMessagePluginElement({
@@ -89,6 +150,8 @@ export function MessagePlugins <T extends PluginsProps>(
89
150
  handleCopyMessage(e);
90
151
  },
91
152
  message,
153
+ isShow: pluginConfig.copy.isShow && message?.status === MESSAGE_STATUS.SUCCESS,
154
+ relateMessageType: pluginConfig.copy.relateMessageType,
92
155
  });
93
156
 
94
157
  const ResendElement = useMessagePluginElement({
@@ -103,6 +166,8 @@ export function MessagePlugins <T extends PluginsProps>(
103
166
  handleResendMessage(e);
104
167
  },
105
168
  message,
169
+ isShow: pluginConfig.resend.isShow && message?.status !== MESSAGE_STATUS.SUCCESS,
170
+ relateMessageType: pluginConfig.resend.relateMessageType,
106
171
  });
107
172
 
108
173
  const ForWardElement = useMessagePluginElement({
@@ -117,22 +182,24 @@ export function MessagePlugins <T extends PluginsProps>(
117
182
  handleForWardMessage(e);
118
183
  },
119
184
  message,
185
+ isShow: pluginConfig.forward.isShow && message?.status === MESSAGE_STATUS.SUCCESS,
186
+ relateMessageType: pluginConfig.forward.relateMessageType,
120
187
  });
121
188
 
122
- let defaultPlugins = message?.status === MESSAGE_STATUS.SUCCESS
123
- ? [ReplyElement, ForWardElement, DeleteElement] : [ResendElement];
124
-
125
- if (message?.status === MESSAGE_STATUS.SUCCESS && message.flow === MESSAGE_FLOW.OUT) {
126
- defaultPlugins = [RevokeElement, ...defaultPlugins];
127
- }
189
+ const defaultPlugins = [
190
+ RevokeElement,
191
+ ReplyElement,
192
+ ForWardElement,
193
+ DeleteElement,
194
+ ResendElement,
195
+ CopyElement,
196
+ ];
128
197
 
129
- if (message.type === TIM.TYPES.MSG_TEXT) {
130
- defaultPlugins.splice(-1, 0, CopyElement);
131
- }
198
+ const plugins = (propsPlugins || contextPlugin?.plugins || defaultPlugins).filter((item) => item);
132
199
 
133
- const plugins = propsPlugins || defaultPlugins;
200
+ const MoreIcon = propsMoreIcon || contextPlugin?.MoreIcon || <Icon className="icon-more" width={16} height={16} type={IconTypes.MORE} />;
134
201
 
135
- const MoreIcon = propsMoreIcon || <Icon className="icon-more" width={16} height={16} type={IconTypes.MORE} />;
202
+ const showNumber = propsShowNumber || contextPlugin?.showNumber || 0;
136
203
 
137
204
  return message?.status !== MESSAGE_STATUS.UNSEND && (
138
205
  <Plugins
@@ -0,0 +1,88 @@
1
+ import React, {
2
+ PropsWithChildren,
3
+ useEffect,
4
+ useState,
5
+ } from 'react';
6
+ import TIM, { Message } from 'tim-js-sdk';
7
+ import { MESSAGE_STATUS } from '../../constants';
8
+ import { useTUIChatStateContext, useTUIMessageContext } from '../../context';
9
+
10
+ export interface MessageProgressProps {
11
+ message?: Message,
12
+ className?: string,
13
+ Progress?: React.ComponentType<{message: Message}>,
14
+ isShow?: boolean,
15
+ }
16
+
17
+ interface MessageProgressItem extends Message {
18
+ progress?: number,
19
+ }
20
+
21
+ function MessageProgressWithContext <T extends MessageProgressProps>(
22
+ props: PropsWithChildren<T>,
23
+ ):React.ReactElement {
24
+ const {
25
+ message,
26
+ children,
27
+ Progress: propsProgress,
28
+ isShow: propsIsShow = false,
29
+ } = props;
30
+
31
+ const [progressMessage, setProgressMessage] = useState<Message>();
32
+ const [progress, setProgress] = useState<number>(0);
33
+
34
+ const { uploadPenddingMessageList } = useTUIChatStateContext('MessageProgressWithContext');
35
+ const { isShowProgress: contextIsShow = false, Progress: contextProgress } = useTUIMessageContext('MessageProgressWithContext');
36
+
37
+ const Progress = propsProgress || contextProgress;
38
+ const isShow = propsIsShow || contextIsShow;
39
+
40
+ const handleLoading = () => !!((
41
+ message?.type === TIM.TYPES.MSG_IMAGE
42
+ || message?.type === TIM.TYPES.MSG_VIDEO
43
+ || message?.type === TIM.TYPES.MSG_FILE
44
+ ) && message?.status === MESSAGE_STATUS.UNSEND);
45
+
46
+ useEffect(() => {
47
+ if (uploadPenddingMessageList && uploadPenddingMessageList.length > 0) {
48
+ uploadPenddingMessageList.map((item:MessageProgressItem) => {
49
+ if (item?.ID === message?.ID) {
50
+ setProgressMessage(item);
51
+ setProgress(item?.progress);
52
+ }
53
+ return item;
54
+ });
55
+ }
56
+ }, [uploadPenddingMessageList]);
57
+
58
+ if (!isShow) {
59
+ return null;
60
+ }
61
+
62
+ if (Progress) {
63
+ return <Progress message={progressMessage} />;
64
+ }
65
+
66
+ return handleLoading() && (
67
+ <div className="progress-box">
68
+ <span
69
+ className="progress"
70
+ style={
71
+ {
72
+ width: `${progress * 100}%`,
73
+ }
74
+ }
75
+ />
76
+ {children}
77
+ </div>
78
+ );
79
+ }
80
+
81
+ const MemoizedMessageProgress = React.memo(MessageProgressWithContext) as
82
+ typeof MessageProgressWithContext;
83
+
84
+ export function MessageProgress(props:MessageProgressProps):React.ReactElement {
85
+ return (
86
+ <MemoizedMessageProgress {...props} />
87
+ );
88
+ }
@@ -27,7 +27,7 @@ function MessageRevokeWithContext <T extends MessageContextProps>(
27
27
  {
28
28
  message?.flow !== MESSAGE_FLOW.IN && <span>you </span>
29
29
  }
30
- <span>recalled a message</span>
30
+ <span> recalled a message</span>
31
31
  {
32
32
  message?.flow === MESSAGE_FLOW.OUT
33
33
  && message?.type === TIM.TYPES.MSG_TEXT
@@ -1,5 +1,6 @@
1
1
  import React, { PropsWithChildren } from 'react';
2
2
  import { Message } from 'tim-js-sdk';
3
+ import { useTUIMessageContext } from '../../context';
3
4
  import { getTimeStamp } from '../untils';
4
5
 
5
6
  export interface MessageContextProps {
@@ -13,7 +14,11 @@ function MessageStatustWithContext <T extends MessageContextProps>(
13
14
  message,
14
15
  } = props;
15
16
 
16
- const timeElement = <div className="time">{message?.time ? getTimeStamp(message.time * 1000) : 0}</div>;
17
+ const {
18
+ isShowTime,
19
+ } = useTUIMessageContext('MessageStatustWithContext');
20
+
21
+ const timeElement = (typeof isShowTime === 'undefined' || isShowTime) && <div className="time">{message?.time ? getTimeStamp(message.time * 1000) : 0}</div>;
17
22
 
18
23
  return (
19
24
  <div className="message-status">
@@ -1,5 +1,5 @@
1
1
  import React, { PropsWithChildren } from 'react';
2
- import { Message } from 'tim-js-sdk';
2
+ import TIM, { Message } from 'tim-js-sdk';
3
3
  import { UnknowPorps } from '../../context';
4
4
 
5
5
  export interface MessageContextProps {
@@ -18,12 +18,12 @@ function MessageTextWithContext <T extends MessageContextProps>(
18
18
  } = props;
19
19
 
20
20
  return (
21
- <div className={`bubble message-text bubble-${message.flow}`}>
21
+ <div className={`bubble message-text bubble-${message.flow} ${message?.conversationType === TIM.TYPES.CONV_GROUP ? 'group' : ''}`}>
22
22
  <div className="message-text-content">
23
23
  {context.text.map((item, index) => {
24
24
  const key = message.ID + index;
25
25
  if (item.name === 'text') {
26
- return item.text;
26
+ return <p className="message-text-content-p" key={item.src + key}>{item.text}</p>;
27
27
  }
28
28
  return <img className="text-img" key={item.src + key} src={item.src} alt="" />;
29
29
  })}
@@ -1,18 +1,34 @@
1
1
  import React, { PropsWithChildren, ReactEventHandler } from 'react';
2
2
  import { Message } from 'tim-js-sdk';
3
3
 
4
- import { UnknowPorps, useComponentContext } from '../../context';
4
+ import { UnknowPorps, useComponentContext, useTUIChatStateContext } from '../../context';
5
5
 
6
- import { TUIMessageContextProvider } from '../../context/TUIMessageContext';
6
+ import { messageShowType, TUIMessageContextProvider } from '../../context/TUIMessageContext';
7
7
  import { useMessageHandler } from './hooks';
8
8
 
9
9
  import './styles/index.scss';
10
10
  import { TUIMessageDefault } from './TUIMessageDefault';
11
- import { MessagePlugins as MessagePluginsDefault } from './MessagePlugins';
11
+ import { MessagePlugins as MessagePluginsDefault, MessagePluginsProps } from './MessagePlugins';
12
12
  import { MessageContext as MessageContextDefault } from './MessageContext';
13
13
 
14
- export interface TUIMessageProps {
15
- message: Message,
14
+ interface TUIMessageBasicProps {
15
+ className?: string,
16
+ filter?: (data:Message) => void,
17
+ isShowTime?: boolean,
18
+ isShowRead?: boolean,
19
+ plugin?: MessagePluginsProps,
20
+ prefix?: React.ReactElement | string,
21
+ suffix?: React.ReactElement | string,
22
+ customName?: React.ReactElement,
23
+ showAvatar?: messageShowType,
24
+ showName?: messageShowType,
25
+ customAvatar?: React.ReactElement,
26
+ isShowProgress?: boolean,
27
+ Progress?: React.ComponentType<{message: Message}>,
28
+ }
29
+
30
+ export interface TUIMessageProps extends TUIMessageBasicProps {
31
+ message?: Message,
16
32
  className?: string,
17
33
  TUIMessage?: React.ComponentType,
18
34
  MessageContext?: React.ComponentType<UnknowPorps>,
@@ -32,7 +48,7 @@ function TUIMessageWithContext <T extends TUIMessageProps>(
32
48
  props: PropsWithChildren<T>,
33
49
  ):React.ReactElement {
34
50
  const {
35
- message,
51
+ message: propsMessage,
36
52
  TUIMessage: propTUIMessage,
37
53
  MessagePlugins: propMessagePlugins,
38
54
  MessageContext: propMessageContext,
@@ -46,6 +62,19 @@ function TUIMessageWithContext <T extends TUIMessageProps>(
46
62
  MergerElement,
47
63
  LocationElement,
48
64
  FaceElement,
65
+ className,
66
+ filter: propsFilter,
67
+ isShowTime,
68
+ isShowRead,
69
+ plugin,
70
+ prefix,
71
+ suffix,
72
+ customName,
73
+ showAvatar,
74
+ showName,
75
+ customAvatar,
76
+ isShowProgress,
77
+ Progress,
49
78
  } = props;
50
79
 
51
80
  const {
@@ -53,29 +82,52 @@ function TUIMessageWithContext <T extends TUIMessageProps>(
53
82
  MessageContext: ContextMessageContext,
54
83
  } = useComponentContext('TUIMessage');
55
84
 
85
+ const {
86
+ messageConfig,
87
+ } = useTUIChatStateContext('TUIMessage');
88
+
56
89
  const TUIMessageUIComponent = propTUIMessage || TUIMessageDefault;
57
90
  const MessagePlugins = propMessagePlugins || ContextMessagePlugins || MessagePluginsDefault;
58
91
  const MessageContext = propMessageContext || ContextMessageContext || MessageContextDefault;
59
92
 
93
+ const filter = propsFilter || messageConfig?.filter;
94
+ const message = propsMessage || messageConfig?.message;
95
+ if (filter) {
96
+ filter(message);
97
+ }
98
+
60
99
  const messageContextValue = {
61
100
  message,
62
- handleDelete,
63
- CustemElement,
64
- TextElement,
65
- ImageElement,
66
- VideoElement,
67
- AudioElement,
68
- FileElement,
69
- MergerElement,
70
- LocationElement,
71
- FaceElement,
101
+ handleDelete: handleDelete || messageConfig?.handleDelete,
102
+ CustemElement: CustemElement || messageConfig?.CustemElement,
103
+ TextElement: TextElement || messageConfig?.TextElement,
104
+ ImageElement: ImageElement || messageConfig?.ImageElement,
105
+ VideoElement: VideoElement || messageConfig?.VideoElement,
106
+ AudioElement: AudioElement || messageConfig?.AudioElement,
107
+ FileElement: FileElement || messageConfig?.FileElement,
108
+ MergerElement: MergerElement || messageConfig?.MergerElement,
109
+ LocationElement: LocationElement || messageConfig?.LocationElement,
110
+ FaceElement: FaceElement || messageConfig?.FaceElement,
111
+ isShowTime: isShowTime || messageConfig?.isShowTime,
112
+ isShowRead: isShowRead || messageConfig?.isShowRead,
113
+ plugin: plugin || messageConfig?.plugin,
114
+ prefix: prefix || messageConfig?.prefix,
115
+ suffix: suffix || messageConfig?.suffix,
116
+ customName: customName || messageConfig?.customName,
117
+ showAvatar: showAvatar || messageConfig?.showAvatar,
118
+ showName: showName || messageConfig?.showName,
119
+ customAvatar: customAvatar || messageConfig?.customAvatar,
120
+ isShowProgress: isShowProgress || messageConfig?.isShowProgress,
121
+ Progress: Progress || messageConfig?.Progress,
72
122
  };
123
+
73
124
  return (
74
125
  <TUIMessageContextProvider value={messageContextValue}>
75
126
  <TUIMessageUIComponent
76
127
  message={message}
77
128
  MessageContext={MessageContext}
78
129
  MessagePlugins={MessagePlugins}
130
+ className={className || messageConfig?.className}
79
131
  />
80
132
  </TUIMessageContextProvider>
81
133
  );
@@ -6,12 +6,11 @@ import { MessageBubble } from './MessageBubble';
6
6
  import { MessageTip } from './MessageTip';
7
7
 
8
8
  import './styles/index.scss';
9
- import { Avatar } from '../Avatar';
10
- import { useComponentContext } from '../../context';
11
- import { handleDisplayAvatar } from '../untils';
9
+ import { messageShowType, useComponentContext, useTUIMessageContext } from '../../context';
12
10
  import { MessageSystem } from './MessageSystem';
13
11
  import { MessageRevoke } from './MessageRevoke';
14
- import { MESSAGE_FLOW } from '../../constants';
12
+ import { MessageName } from './MessageName';
13
+ import { MessageAvatar } from './MessageAvatar';
15
14
 
16
15
  function TUIMessageDefaultWithContext <T extends TUIMessageProps>(
17
16
  props: PropsWithChildren<T>,
@@ -20,6 +19,7 @@ function TUIMessageDefaultWithContext <T extends TUIMessageProps>(
20
19
  message,
21
20
  MessageContext: propsMessageContext,
22
21
  MessagePlugins: propsMessagePlugins,
22
+ className,
23
23
  } = props;
24
24
 
25
25
  const {
@@ -27,11 +27,27 @@ function TUIMessageDefaultWithContext <T extends TUIMessageProps>(
27
27
  MessagePlugins: contextMessagePlugins,
28
28
  } = useComponentContext('TUIMessage');
29
29
 
30
+ const {
31
+ prefix,
32
+ suffix,
33
+ customName,
34
+ showAvatar = messageShowType.IN,
35
+ showName = messageShowType.IN,
36
+ customAvatar,
37
+ } = useTUIMessageContext('TUIMessage');
38
+
30
39
  const MessageContextUIComponent = propsMessageContext || contextMessageContext;
31
40
  const MessagePlugins = propsMessagePlugins || contextMessagePlugins;
32
41
 
33
42
  return (
34
- <div className={`message-default ${(message?.type === TIM.TYPES.MSG_GRP_TIP || message?.isRevoked) ? 'tip' : message?.flow}`}>
43
+ <div
44
+ className={
45
+ `message-default
46
+ ${(message?.type === TIM.TYPES.MSG_GRP_TIP || message?.isRevoked) ? 'tip' : message?.flow}
47
+ ${className}
48
+ `
49
+ }
50
+ >
35
51
  {
36
52
  message?.type === TIM.TYPES.MSG_GRP_TIP
37
53
  && (<MessageTip message={message} />)
@@ -53,17 +69,10 @@ function TUIMessageDefaultWithContext <T extends TUIMessageProps>(
53
69
  key={message?.ID}
54
70
  data-message-id={message?.ID}
55
71
  >
56
- {message?.flow === MESSAGE_FLOW.IN
57
- && (
58
- <Avatar size={32} image={handleDisplayAvatar(message?.avatar)} />
59
- )}
72
+ {prefix}
73
+ <MessageAvatar message={message} CustomAvatar={customAvatar} showType={showAvatar} />
60
74
  <main className="content">
61
- {message?.conversationType === TIM.TYPES.CONV_GROUP
62
- && message?.flow === MESSAGE_FLOW.IN && (
63
- <label htmlFor="content" className="name">
64
- {message?.nick || message?.from}
65
- </label>
66
- )}
75
+ <MessageName message={message} CustomName={customName} showType={showName} />
67
76
  <MessageBubble
68
77
  message={message}
69
78
  Context={MessageContextUIComponent}
@@ -72,6 +81,7 @@ function TUIMessageDefaultWithContext <T extends TUIMessageProps>(
72
81
  <MessageContextUIComponent message={message} />
73
82
  </MessageBubble>
74
83
  </main>
84
+ {suffix}
75
85
  </div>
76
86
  )}
77
87
  </div>
@@ -1,16 +1,30 @@
1
1
  import React, { PropsWithChildren } from 'react';
2
+ import TIM, { Message } from 'tim-js-sdk';
2
3
 
3
4
  interface MessagePluginElementProps {
4
5
  handle?: (event?:React.SyntheticEvent<Element, Event>) => void,
5
- children: React.ReactNode
6
+ children: React.ReactNode,
7
+ isShow?: boolean,
8
+ relateMessageType?: TIM.TYPES[],
9
+ message?: Message
6
10
  }
7
11
  export const useMessagePluginElement = <
8
12
  T extends MessagePluginElementProps>(props:PropsWithChildren<T>) => {
9
13
  const {
10
14
  children,
11
15
  handle,
16
+ isShow,
17
+ relateMessageType,
18
+ message,
12
19
  } = props;
13
20
 
21
+ const isNotRelateMessageType = relateMessageType
22
+ && !relateMessageType.some((item) => (item === message?.type));
23
+
24
+ if (!isShow || isNotRelateMessageType) {
25
+ return null;
26
+ }
27
+
14
28
  return (
15
29
  <div className="message-plugin-box" role="button" tabIndex={0} onClick={handle}>{children}</div>
16
30
  );
@@ -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;
@@ -27,6 +29,7 @@
27
29
  }
28
30
 
29
31
  .in {
32
+ flex: 1;
30
33
  display: flex;
31
34
  flex-direction: row;
32
35
  justify-self: flex-start;
@@ -36,6 +39,7 @@
36
39
  }
37
40
  }
38
41
  .out {
42
+ flex: 1;
39
43
  display: flex;
40
44
  flex-direction: row-reverse;
41
45
  justify-self: flex-end;
@@ -45,13 +49,17 @@
45
49
  }
46
50
  }
47
51
  .tip {
48
- justify-self: center;
52
+ justify-self: center !important;
53
+ width: auto;
49
54
  }
50
55
 
51
56
  .bubble {
52
57
  padding: 8px 16px;
53
58
  &-in {
54
59
  border-radius: 16px 16px 16px 0;
60
+ &.group {
61
+ border-radius: 0px 16px 16px 16px;
62
+ }
55
63
  }
56
64
  &-out {
57
65
  border-radius: 16px 16px 0 16px;
@@ -96,6 +104,10 @@
96
104
  font-weight: 500;
97
105
  font-size: 14px;
98
106
  line-height: 17px;
107
+ &-p {
108
+ display: inline;
109
+ vertical-align: middle;
110
+ }
99
111
  .message-status {
100
112
  display: inline-flex;
101
113
  float: right;
@@ -104,7 +116,7 @@
104
116
  }
105
117
  }
106
118
 
107
- .message-text,
119
+ .message-text,
108
120
  .message-tip {
109
121
  font-family: PingFangSC-Regular;
110
122
  font-style: normal;
@@ -114,6 +126,7 @@
114
126
  .text-img {
115
127
  width: 20px;
116
128
  height: 20px;
129
+ vertical-align: middle;
117
130
  }
118
131
  }
119
132
 
@@ -261,6 +274,7 @@
261
274
  &-context {
262
275
  display: flex;
263
276
  align-items: center;
277
+ padding: 0 8px;
264
278
  .message-context{
265
279
  flex: 1;
266
280
  }
@@ -391,4 +405,75 @@
391
405
 
392
406
  .message-revoke {
393
407
  color: #999999;
408
+ }
409
+
410
+ .message-audio {
411
+ display: flex;
412
+ align-items: center;
413
+ .out {
414
+ transform: rotate(180deg);
415
+ }
416
+ &-none {
417
+ display: none;
418
+ }
419
+ &-content {
420
+ display: flex;
421
+ align-items: center;
422
+ gap: 10px;
423
+ }
424
+ &-out {
425
+ flex-direction: row-reverse;
426
+ }
427
+ .playing {
428
+ animation: playingAnimation 1s ease-in-out infinite;
429
+ }
430
+
431
+ @keyframes playingAnimation {
432
+ 0% {
433
+ opacity: 1;
434
+ }
435
+ 50% {
436
+ opacity: 0.3;
437
+ }
438
+ 100% {
439
+ opacity: 1;
440
+ }
441
+ }
442
+ }
443
+
444
+ .high-lighted {
445
+ animation: highLightedAnimation 1s ease-in-out forwards;
446
+ }
447
+
448
+ @keyframes highLightedAnimation {
449
+ 0% {
450
+ opacity: 1;
451
+ }
452
+ 25% {
453
+ opacity: 0.3;
454
+ }
455
+ 50% {
456
+ opacity: 1;
457
+ }
458
+ 75% {
459
+ opacity: 0.3;
460
+ }
461
+ 100% {
462
+ opacity: 1;
463
+ }
464
+ }
465
+
466
+ .progress-box {
467
+ width: 100%;
468
+ height: 5px;
469
+ display: flex;
470
+ justify-content: flex-start;
471
+ .progress {
472
+ display: inline-block;
473
+ width: 0;
474
+ background: #147aff;
475
+ height: 5px;
476
+ border-radius: 2px;
477
+ box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.25);
478
+ }
394
479
  }