@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
@@ -11,6 +11,8 @@ interface TUIChatHeaderProps {
11
11
  title?: string,
12
12
  TUIChatHeader?: React.ComponentType<TUIChatHeaderDefaultProps>,
13
13
  conversation?: Conversation,
14
+ avatar?: React.ReactElement | string,
15
+ headerOpateIcon?: React.ReactElement | string,
14
16
  }
15
17
 
16
18
  function UnMemoizedTUIChatHeader<T extends TUIChatHeaderProps>(
@@ -20,6 +22,8 @@ function UnMemoizedTUIChatHeader<T extends TUIChatHeaderProps>(
20
22
  title,
21
23
  conversation: propsConversation,
22
24
  TUIChatHeader: propTUIChatHeader,
25
+ avatar,
26
+ headerOpateIcon,
23
27
  } = props;
24
28
 
25
29
  const { conversation: contextConversation } = useTUIChatStateContext('TUIChatHeader');
@@ -33,6 +37,8 @@ function UnMemoizedTUIChatHeader<T extends TUIChatHeaderProps>(
33
37
  <TUIChatHeaderUIComponent
34
38
  title={title}
35
39
  conversation={conversation}
40
+ avatar={avatar}
41
+ opateIcon={headerOpateIcon}
36
42
  />
37
43
  );
38
44
  }
@@ -9,13 +9,19 @@ import { useTUIKitContext } from '../../context';
9
9
 
10
10
  export interface TUIChatHeaderDefaultProps {
11
11
  title?: string,
12
- avatar?: string,
12
+ avatar?: React.ReactElement | string,
13
13
  isOnline?: boolean,
14
14
  conversation?: Conversation,
15
15
  pluginComponentList?: Array<React.ComponentType>,
16
+
17
+ }
18
+
19
+ export interface TUIChatHeaderBasicProps extends TUIChatHeaderDefaultProps {
20
+ isLive?: boolean,
21
+ opateIcon?: React.ReactElement | string,
16
22
  }
17
23
 
18
- function TUIChatHeaderDefaultWithContext <T extends TUIChatHeaderDefaultProps>(
24
+ function TUIChatHeaderDefaultWithContext <T extends TUIChatHeaderBasicProps>(
19
25
  props: PropsWithChildren<T>,
20
26
  ):React.ReactElement {
21
27
  const {
@@ -23,14 +29,18 @@ function TUIChatHeaderDefaultWithContext <T extends TUIChatHeaderDefaultProps>(
23
29
  avatar: propAvatar,
24
30
  isOnline,
25
31
  conversation,
32
+ isLive,
33
+ opateIcon,
26
34
  } = props;
27
35
 
28
36
  const [title, setTitle] = useState('');
29
- const [avatar, setAvatar] = useState('');
37
+ const [avatar, setAvatar] = useState<React.ReactElement | string>('');
30
38
 
31
39
  useEffect(() => {
32
40
  setTitle(propTitle);
33
- setAvatar(propAvatar);
41
+ if (propAvatar) {
42
+ setAvatar(propAvatar);
43
+ }
34
44
  switch (conversation?.type) {
35
45
  case TIM.TYPES.CONV_C2C:
36
46
  handleC2C(conversation.userProfile);
@@ -51,8 +61,8 @@ function TUIChatHeaderDefaultWithContext <T extends TUIChatHeaderDefaultProps>(
51
61
  if (!title) {
52
62
  setTitle(userProfile?.nick || userProfile?.userID);
53
63
  }
54
- if (!avatar) {
55
- setAvatar(handleDisplayAvatar(userProfile.avatar));
64
+ if (!propAvatar) {
65
+ setAvatar(<Avatar size={32} image={handleDisplayAvatar(userProfile.avatar)} />);
56
66
  }
57
67
  };
58
68
 
@@ -60,8 +70,11 @@ function TUIChatHeaderDefaultWithContext <T extends TUIChatHeaderDefaultProps>(
60
70
  if (!title) {
61
71
  setTitle(groupProfile?.name || groupProfile?.groupID);
62
72
  }
63
- if (!avatar) {
64
- setAvatar(handleDisplayAvatar(groupProfile.avatar, TIM.TYPES.CONV_GROUP));
73
+ if (!propAvatar) {
74
+ setAvatar(<Avatar
75
+ size={32}
76
+ image={handleDisplayAvatar(groupProfile.avatar, TIM.TYPES.CONV_GROUP)}
77
+ />);
65
78
  }
66
79
  };
67
80
  const { setTUIManageShow } = useTUIKitContext();
@@ -70,16 +83,23 @@ function TUIChatHeaderDefaultWithContext <T extends TUIChatHeaderDefaultProps>(
70
83
  };
71
84
 
72
85
  return (
73
- <header className="tui-chat-header" key={conversation?.conversationID}>
74
- <div className={`tui-chat-header-left ${conversation?.type === TIM.TYPES.CONV_SYSTEM ? 'system' : ''}`}>
75
- {conversation?.type !== TIM.TYPES.CONV_SYSTEM && <Avatar size={32} image={avatar} />}
76
- <div className="header-content">
77
- <h3 className="title">{title}</h3>
78
- </div>
86
+ <header
87
+ className={`tui-chat-header ${isLive ? 'tui-chat-live-header' : ''}`}
88
+ key={conversation?.conversationID}
89
+ >
90
+ <div
91
+ className={`tui-chat-header-left ${conversation?.type === TIM.TYPES.CONV_SYSTEM ? 'system' : ''}`}
92
+ >
93
+ {conversation?.type !== TIM.TYPES.CONV_SYSTEM && avatar}
94
+ </div>
95
+ <div className="header-content">
96
+ <h3 className="title">{title}</h3>
79
97
  </div>
80
98
  <div className="tui-chat-header-right">
81
99
  <div className="header-handle">
82
- <Icon className="header-handle-more" onClick={openTUIManage} type={IconTypes.ELLIPSE} width={18} height={5} />
100
+ {
101
+ opateIcon || <Icon className="header-handle-more" onClick={openTUIManage} type={IconTypes.ELLIPSE} width={18} height={5} />
102
+ }
83
103
  </div>
84
104
  </div>
85
105
 
@@ -90,7 +110,7 @@ function TUIChatHeaderDefaultWithContext <T extends TUIChatHeaderDefaultProps>(
90
110
  const MemoizedTUIChatHeaderDefault = React.memo(TUIChatHeaderDefaultWithContext) as
91
111
  typeof TUIChatHeaderDefaultWithContext;
92
112
 
93
- export function TUIChatHeaderDefault(props: TUIChatHeaderDefaultProps)
113
+ export function TUIChatHeaderDefault(props: TUIChatHeaderBasicProps)
94
114
  :React.ReactElement {
95
115
  const options = { ...props };
96
116
  return <MemoizedTUIChatHeaderDefault {...options} />;
@@ -1,3 +0,0 @@
1
- .tui-chat-header {
2
- background: #FFFFFF;
3
- }
@@ -7,10 +7,10 @@
7
7
  &-left {
8
8
  display: flex;
9
9
  align-items: center;
10
- .header-content {
11
- padding: 0 8px;
12
- }
13
-
10
+ }
11
+ .header-content {
12
+ flex: 1;
13
+ padding: 0 8px;
14
14
  }
15
15
  &-right {
16
16
  .header-handle {
@@ -30,3 +30,7 @@
30
30
  height: 32px;
31
31
  }
32
32
  }
33
+
34
+ .tui-chat-live-header {
35
+
36
+ }
@@ -1,5 +1,5 @@
1
1
  import React, { PropsWithChildren } from 'react';
2
- import { ChatSDK } from 'tim-js-sdk';
2
+ import { ChatSDK, Conversation } from 'tim-js-sdk';
3
3
  import { useTUIKit } from './hooks/useTUIKit';
4
4
  import { useCreateTUIKitContext } from './hooks/useCreateTUIKitContext';
5
5
  import { TUIKitProvider } from '../../context/TUIKitContext';
@@ -9,15 +9,18 @@ import { TUIChat } from '../TUIChat';
9
9
  import { TUIManage } from '../TUIManage';
10
10
 
11
11
  export interface ChatProps {
12
- tim?: ChatSDK | null,
13
- customClasses?: unknown
12
+ tim?: ChatSDK | null,
13
+ customClasses?: unknown,
14
+ activeConversation?: Conversation,
14
15
  }
15
16
  export function TUIKit<
16
17
  T extends ChatProps
17
18
  >(
18
19
  props:PropsWithChildren<T>,
19
20
  ):React.ReactElement {
20
- const { children, tim, customClasses } = props;
21
+ const {
22
+ children, tim, customClasses, activeConversation,
23
+ } = props;
21
24
  (window as any).tencent_cloud_im_csig_react_uikit_23F_xa = true;
22
25
  const {
23
26
  conversation,
@@ -27,7 +30,7 @@ export function TUIKit<
27
30
  setTUIManageShow,
28
31
  TUIProfileShow,
29
32
  setTUIProfileShow,
30
- } = useTUIKit({ tim });
33
+ } = useTUIKit({ tim, activeConversation });
31
34
  const chatContextValue = useCreateTUIKitContext({
32
35
  tim,
33
36
  conversation,
@@ -2,10 +2,11 @@ import React, { useState, useCallback, useEffect } from 'react';
2
2
  import { ChatSDK, Conversation, Profile } from 'tim-js-sdk';
3
3
 
4
4
  export interface UseChatParams{
5
- tim: ChatSDK
5
+ tim: ChatSDK,
6
+ activeConversation?: Conversation,
6
7
  }
7
- export const useTUIKit = ({ tim }:UseChatParams) => {
8
- const [conversation, setConversation] = useState<Conversation>();
8
+ export const useTUIKit = ({ tim, activeConversation: paramsActiveConversation }:UseChatParams) => {
9
+ const [conversation, setConversation] = useState<Conversation>(paramsActiveConversation);
9
10
  const [myProfile, setMyProfile] = useState<Profile>();
10
11
  const [TUIManageShow, setTUIManageShow] = useState<boolean>(false);
11
12
  const [TUIProfileShow, setTUIProfileShow] = useState<boolean>(false);
@@ -28,6 +29,9 @@ export const useTUIKit = ({ tim }:UseChatParams) => {
28
29
  },
29
30
  [tim],
30
31
  );
32
+ useEffect(() => {
33
+ setConversation(paramsActiveConversation);
34
+ }, [paramsActiveConversation]);
31
35
  return {
32
36
  conversation,
33
37
  setActiveConversation,
@@ -18,6 +18,10 @@ time, mark, audio, video {
18
18
  font: inherit;
19
19
  vertical-align: baseline;
20
20
  }
21
+ a,a:link,a:visited,a:hover,a:active{
22
+ text-decoration: none;
23
+ color:inherit;
24
+ }
21
25
  /* HTML5 display-role reset for older browsers */
22
26
  article, aside, details, figcaption, figure,
23
27
  footer, header, hgroup, menu, nav, section {
@@ -1,4 +1,8 @@
1
- import React, { PropsWithChildren } from 'react';
1
+ import React, {
2
+ PropsWithChildren, useCallback, useEffect, useRef, useState,
3
+ } from 'react';
4
+ import { useTUIChatActionContext, useTUIChatStateContext } from '../../context';
5
+ import { Icon, IconTypes } from '../Icon';
2
6
  import type { MessageContextProps } from './MessageText';
3
7
 
4
8
  function MessageAudioWithContext <T extends MessageContextProps>(
@@ -10,9 +14,64 @@ function MessageAudioWithContext <T extends MessageContextProps>(
10
14
  children,
11
15
  } = props;
12
16
 
17
+ const { setAudioSource } = useTUIChatActionContext('MessageAudioWithContext');
18
+ const { audioSource } = useTUIChatStateContext('MessageAudioWithContext');
19
+ const [currentTime, setCurrentTime] = useState(0);
20
+ const audioRef = useRef<HTMLAudioElement>(null);
21
+ const [playClassName, setPlayClassName] = useState(false);
22
+
23
+ const play = useCallback(() => {
24
+ if (audioSource && audioSource !== audioRef?.current) {
25
+ audioSource.pause();
26
+ audioSource.currentTime = 0;
27
+ setAudioSource(null);
28
+ }
29
+ if (audioRef?.current) {
30
+ if (!audioRef.current.paused) {
31
+ audioRef.current.pause();
32
+ endFunction();
33
+ } else {
34
+ audioRef.current.play();
35
+ setPlayClassName(true);
36
+ setAudioSource(audioRef.current);
37
+ }
38
+ }
39
+ }, [audioRef, audioSource]);
40
+
41
+ const pauseFunction = () => {
42
+ setPlayClassName(false);
43
+ };
44
+ const endFunction = () => {
45
+ setAudioSource(null);
46
+ audioRef.current.currentTime = 0;
47
+ pauseFunction();
48
+ };
49
+
50
+ useEffect(() => {
51
+ if (audioRef?.current) {
52
+ audioRef.current.addEventListener('pause', pauseFunction);
53
+ audioRef.current.addEventListener('ended', endFunction);
54
+ audioRef.current.addEventListener('canplay', () => {
55
+ setCurrentTime(parseInt(`${audioRef.current.duration}`, 10));
56
+ });
57
+ }
58
+ return () => {
59
+ if (audioRef?.current) {
60
+ audioRef.current.removeEventListener('pause', pauseFunction);
61
+ audioRef.current.removeEventListener('ended', endFunction);
62
+ }
63
+ };
64
+ }, [audioRef]);
65
+
13
66
  return (
14
67
  <div className="message-audio">
15
- <audio muted src={context.url} />
68
+ <div className={`message-audio-content message-audio-${message.flow}`}>
69
+ <Icon className={`${message?.flow} ${playClassName ? 'playing' : ''}`} type={IconTypes.VOICE} width={16} height={16} onClick={play} />
70
+ <span>{`${currentTime}s`}</span>
71
+ </div>
72
+ <audio src={context?.url} ref={audioRef} controls className="message-audio-none">
73
+ <track kind="captions" />
74
+ </audio>
16
75
  {children}
17
76
  </div>
18
77
  );
@@ -0,0 +1,38 @@
1
+ import React, {
2
+ PropsWithChildren,
3
+ } from 'react';
4
+ import TIM, { Message } from 'tim-js-sdk';
5
+ import { MESSAGE_FLOW } from '../../constants';
6
+ import { messageShowType } from '../../context';
7
+ import { Avatar } from '../Avatar';
8
+ import { handleDisplayAvatar } from '../untils';
9
+
10
+ export interface MessageAvatarProps {
11
+ CustomAvatar?: React.ReactElement,
12
+ className?: string,
13
+ message?: Message,
14
+ showType?: messageShowType,
15
+ }
16
+
17
+ export function MessageAvatar <T extends MessageAvatarProps>(
18
+ props: PropsWithChildren<T>,
19
+ ):React.ReactElement {
20
+ const {
21
+ className,
22
+ CustomAvatar,
23
+ message,
24
+ showType,
25
+ } = props;
26
+
27
+ const show = showType === messageShowType.ALL || message?.flow === showType;
28
+
29
+ if (!show || showType === messageShowType.NONE) {
30
+ return null;
31
+ }
32
+
33
+ if (CustomAvatar) {
34
+ return CustomAvatar;
35
+ }
36
+
37
+ return (<Avatar size={32} image={handleDisplayAvatar(message?.avatar)} />);
38
+ }
@@ -5,15 +5,17 @@ import React, {
5
5
  } from 'react';
6
6
  import TIM, { Message } from 'tim-js-sdk';
7
7
  import { MESSAGE_STATUS } from '../../constants';
8
+ import { useTUIChatActionContext } from '../../context';
8
9
  import { Icon, IconTypes } from '../Icon';
9
10
  import { useMessageReply } from './hooks/useMessageReply';
11
+ import { MessageProgress } from './MessageProgress';
10
12
 
11
13
  export interface MessageBubbleProps {
12
14
  message?: Message,
13
15
  className?: string,
14
16
  children?: ReactNode,
15
17
  Context?: React.ComponentType<any>,
16
- Plugins?: React.ComponentType<any>,
18
+ Plugins?: React.ComponentType<any> | undefined,
17
19
  }
18
20
 
19
21
  function MessageBubbleWithContext <T extends MessageBubbleProps>(
@@ -34,6 +36,8 @@ function MessageBubbleWithContext <T extends MessageBubbleProps>(
34
36
  sender,
35
37
  } = useMessageReply({ message });
36
38
 
39
+ const { setHighlightedMessageId } = useTUIChatActionContext('MessageBubbleWithContext');
40
+
37
41
  const handleLoading = () => !!((
38
42
  message?.type === TIM.TYPES.MSG_IMAGE
39
43
  || message?.type === TIM.TYPES.MSG_VIDEO
@@ -47,6 +51,10 @@ function MessageBubbleWithContext <T extends MessageBubbleProps>(
47
51
  setPluginsShow(false);
48
52
  };
49
53
 
54
+ const handleReplyMessage = () => {
55
+ setHighlightedMessageId(replyMessage?.ID);
56
+ };
57
+
50
58
  return (
51
59
  <div className="meesage-bubble">
52
60
  <div
@@ -63,17 +71,27 @@ function MessageBubbleWithContext <T extends MessageBubbleProps>(
63
71
  >
64
72
  {
65
73
  messageReply && (
66
- <main className="meesage-bubble-reply-main">
74
+ <div
75
+ className="meesage-bubble-reply-main"
76
+ role="menuitem"
77
+ tabIndex={0}
78
+ onClick={handleReplyMessage}
79
+ >
67
80
  <header className="title">{sender}</header>
68
81
  {Context && <Context message={replyMessage} />}
69
- </main>
82
+ </div>
70
83
  )
71
84
  }
72
85
  {children}
86
+ <MessageProgress message={message} />
73
87
  </div>
74
- <div className="message-plugin">
75
- {PluginsShow && Plugins && <Plugins />}
76
- </div>
88
+ {
89
+ Plugins && (
90
+ <div className="message-plugin">
91
+ {PluginsShow && <Plugins />}
92
+ </div>
93
+ )
94
+ }
77
95
  </div>
78
96
  <div className="message-bubble-status icon">
79
97
  {
@@ -64,9 +64,12 @@ function MessageContextWithContext <T extends MessageContextProps>(
64
64
  };
65
65
 
66
66
  const Elements = CustemComponents[message?.type] || components[message?.type];
67
-
68
67
  return Elements
69
- && <Elements context={context} message={message}><MessageStatus message={message} /></Elements>;
68
+ && (
69
+ <Elements context={context} message={message}>
70
+ <MessageStatus message={message} />
71
+ </Elements>
72
+ );
70
73
  }
71
74
 
72
75
  const MemoizedMessageContext = React.memo(MessageContextWithContext) as
@@ -1,4 +1,5 @@
1
1
  import React, { PropsWithChildren } from 'react';
2
+ import TIM from 'tim-js-sdk';
2
3
  import { JSONStringToParse } from '../untils';
3
4
  import type { MessageContextProps } from './MessageText';
4
5
 
@@ -23,7 +24,7 @@ function MessageCustomWithContext <T extends MessageContextProps>(
23
24
  };
24
25
 
25
26
  return (
26
- <div className={`bubble message-custom bubble-${message.flow}`}>
27
+ <div className={`bubble message-custom bubble-${message.flow} ${message?.conversationType === TIM.TYPES.CONV_GROUP ? 'group' : ''}`}>
27
28
  {handleContext(context?.custom)}
28
29
  {children}
29
30
  </div>
@@ -1,4 +1,5 @@
1
1
  import React, { PropsWithChildren } from 'react';
2
+ import TIM from 'tim-js-sdk';
2
3
  import { Icon, IconTypes } from '../Icon';
3
4
  import type { MessageContextProps } from './MessageText';
4
5
 
@@ -10,9 +11,14 @@ function MessageFileWithContext <T extends MessageContextProps>(
10
11
  message,
11
12
  children,
12
13
  } = props;
13
-
14
14
  return (
15
- <div className={`bubble message-file bubble-${message.flow}`}>
15
+ <a
16
+ href={context.url}
17
+ download={context.name}
18
+ target="_parent"
19
+ className={`bubble message-file bubble-${message.flow} ${message?.conversationType === TIM.TYPES.CONV_GROUP ? 'group' : ''}`}
20
+ rel="noreferrer"
21
+ >
16
22
  <main className="message-file-main">
17
23
  <Icon className="icon" width={15} height={20} type={IconTypes.FILE} />
18
24
  <label htmlFor="message-file">{ context.name }</label>
@@ -21,7 +27,7 @@ function MessageFileWithContext <T extends MessageContextProps>(
21
27
  <span className="message-file-size">{ context.size }</span>
22
28
  {children}
23
29
  </div>
24
- </div>
30
+ </a>
25
31
  );
26
32
  }
27
33
 
@@ -1,4 +1,5 @@
1
1
  import React, { PropsWithChildren, useState } from 'react';
2
+ import TIM from 'tim-js-sdk';
2
3
  import { Model } from '../Model';
3
4
  import type { MessageContextProps } from './MessageText';
4
5
 
@@ -18,7 +19,7 @@ function MessageImageWithContext <T extends MessageContextProps>(
18
19
  return (
19
20
  <div className="message-image">
20
21
  <div role="button" tabIndex={0} onClick={() => { setShow(true); }}>
21
- <img className={`img bubble-${message.flow}`} src={context.url} alt="" />
22
+ <img className={`img bubble-${message.flow} ${message?.conversationType === TIM.TYPES.CONV_GROUP ? 'group' : ''}`} src={context.url} alt="" />
22
23
  </div>
23
24
  {children}
24
25
  {
@@ -1,4 +1,5 @@
1
1
  import React, { PropsWithChildren } from 'react';
2
+ import TIM from 'tim-js-sdk';
2
3
  import type { MessageContextProps } from './MessageText';
3
4
 
4
5
  function MessageMergerWithContext <T extends MessageContextProps>(
@@ -11,7 +12,7 @@ function MessageMergerWithContext <T extends MessageContextProps>(
11
12
  } = props;
12
13
 
13
14
  return (
14
- <div className={`bubble message-merger bubble-${message.flow}`}>
15
+ <div className={`bubble message-merger bubble-${message.flow} ${message?.conversationType === TIM.TYPES.CONV_GROUP ? 'group' : ''}`}>
15
16
  <h3>{context.title}</h3>
16
17
  <ul className="message-merger-list">
17
18
  {
@@ -0,0 +1,41 @@
1
+ import React, {
2
+ PropsWithChildren,
3
+ } from 'react';
4
+ import TIM, { Message } from 'tim-js-sdk';
5
+ import { MESSAGE_FLOW } from '../../constants';
6
+ import { messageShowType } from '../../context';
7
+
8
+ export interface MessageNameProps {
9
+ CustomName?: React.ReactElement,
10
+ className?: string,
11
+ message?: Message,
12
+ showType?: messageShowType,
13
+ }
14
+
15
+ export function MessageName <T extends MessageNameProps>(
16
+ props: PropsWithChildren<T>,
17
+ ):React.ReactElement {
18
+ const {
19
+ className,
20
+ CustomName,
21
+ message,
22
+ showType,
23
+ } = props;
24
+
25
+ const show = (showType === messageShowType.ALL || message?.flow === showType)
26
+ && message?.conversationType === TIM.TYPES.CONV_GROUP;
27
+
28
+ if (!show || showType === messageShowType.NONE) {
29
+ return null;
30
+ }
31
+
32
+ if (CustomName) {
33
+ return CustomName;
34
+ }
35
+
36
+ return (
37
+ <label htmlFor="content" className="name">
38
+ {message?.nick || message?.from}
39
+ </label>
40
+ );
41
+ }