@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
@@ -150,6 +150,150 @@ export const emojiMap:IEmojiMap = {
150
150
  '[鼓掌]': 'emoji_140@2x.png',
151
151
  '[龇牙]': 'emoji_141@2x.png',
152
152
  };
153
+ export const emojiEnKey:IEmojiMap = {
154
+ '[NO]': '[no]',
155
+ '[OK]': '[ok]',
156
+ '[下雨]': '[rain]',
157
+ '[么么哒]': '[muah]',
158
+ '[乒乓]': '[ping pong]',
159
+ '[便便]': '[poo]',
160
+ '[信封]': '[mail]',
161
+ '[偷笑]': '[snicker]',
162
+ '[傲慢]': '[arrogant]',
163
+ '[再见]': '[bye]',
164
+ '[冷汗]': '[sweat]',
165
+ '[凋谢]': '[wither]',
166
+ '[刀]': '[knife]',
167
+ '[删除]': '[delete]',
168
+ '[勾引]': '[hook]',
169
+ '[发呆]': '[daze]',
170
+ '[发抖]': '[shaking]',
171
+ '[可怜]': '[pitiful]',
172
+ '[可爱]': '[cute]',
173
+ '[右哼哼]': '[right hum]',
174
+ '[右太极]': '[right Tai Chi]',
175
+ '[右车头]': '[right head]',
176
+ '[吐]': '[vomit]',
177
+ '[吓]': '[scare]',
178
+ '[咒骂]': '[curse]',
179
+ '[咖啡]': '[cafe]',
180
+ '[啤酒]': '[beer]',
181
+ '[嘘]': '[hiss]',
182
+ '[回头]': '[look back]',
183
+ '[困]': '[sleepy]',
184
+ '[坏笑]': '[bad laugh]',
185
+ '[多云]': '[cloud]',
186
+ '[大兵]': '[soldiers]',
187
+ '[大哭]': '[cry]',
188
+ '[太阳]': '[sun]',
189
+ '[奋斗]': '[struggle]',
190
+ '[奶瓶]': '[feeding bottle]',
191
+ '[委屈]': '[wronged]',
192
+ '[害羞]': '[shy]',
193
+ '[尴尬]': '[awkward]',
194
+ '[左哼哼]': '[left hem]',
195
+ '[左太极]': '[left Tai Chi]',
196
+ '[左车头]': '[left head]',
197
+ '[差劲]': '[poor]',
198
+ '[弱]': '[weak]',
199
+ '[强]': '[stong]',
200
+ '[彩带]': '[ribbon]',
201
+ '[彩球]': '[ball]',
202
+ '[得意]': '[proud]',
203
+ '[微笑]': '[smile]',
204
+ '[心碎了]': '[heartbroken]',
205
+ '[快哭了]': '[almost cry]',
206
+ '[怄火]': '[ire]',
207
+ '[怒]': '[anger]',
208
+ '[惊恐]': '[terrify]',
209
+ '[惊讶]': '[flummox]',
210
+ '[憨笑]': '[smirk]',
211
+ '[手枪]': '[gun]',
212
+ '[打哈欠]': '[yawn]',
213
+ '[抓狂]': '[crazy]',
214
+ '[折磨]': '[torment]',
215
+ '[抠鼻]': '[nose picking]',
216
+ '[抱抱]': '[hug]',
217
+ '[抱拳]': '[hug fist]',
218
+ '[拳头]': '[fist]',
219
+ '[挥手]': '[waving hands]',
220
+ '[握手]': '[shake hands]',
221
+ '[撇嘴]': '[pouted]',
222
+ '[擦汗]': '[wipe sweat]',
223
+ '[敲打]': '[knock on the head]',
224
+ '[晕]': '[faint]',
225
+ '[月亮]': '[moon]',
226
+ '[棒棒糖]': '[lollipop]',
227
+ '[汽车]': '[car]',
228
+ '[沙发]': '[sofa]',
229
+ '[流汗]': '[sweat]',
230
+ '[流泪]': '[tears]',
231
+ '[激动]': '[excitement]',
232
+ '[灯泡]': '[light]',
233
+ '[炸弹]': '[bomb]',
234
+ '[熊猫]': '[panda]',
235
+ '[爆筋]': '[exploding muscle]',
236
+ '[爱你]': '[love you]',
237
+ '[爱心]': '[love heart]',
238
+ '[爱情]': '[love]',
239
+ '[猪头]': '[pig]',
240
+ '[猫咪]': '[cat]',
241
+ '[献吻]': '[kiss]',
242
+ '[玫瑰]': '[rose]',
243
+ '[瓢虫]': '[ladybird]',
244
+ '[疑问]': '[what]',
245
+ '[白眼]': '[rolling eyes]',
246
+ '[皮球]': '[rubber ball]',
247
+ '[睡觉]': '[sleep]',
248
+ '[磕头]': '[kowtow]',
249
+ '[示爱]': '[show love]',
250
+ '[礼品袋]': '[gift bag]',
251
+ '[礼物]': '[gift]',
252
+ '[篮球]': '[basketball]',
253
+ '[米饭]': '[rice]',
254
+ '[糗大了]': '[shame]',
255
+ '[红双喜]': '[happiness]',
256
+ '[红灯笼]': '[lantern]',
257
+ '[纸巾]': '[tissue]',
258
+ '[胜利]': '[victory]',
259
+ '[色]': '[lecherous]',
260
+ '[药]': '[medicine]',
261
+ '[菜刀]': '[kitchen knife]',
262
+ '[蛋糕]': '[coke]',
263
+ '[蜡烛]': '[candle]',
264
+ '[街舞]': '[hip hop]',
265
+ '[衰]': '[decline]',
266
+ '[西瓜]': '[lemon]',
267
+ '[调皮]': '[naughty]',
268
+ '[象棋]': '[chess]',
269
+ '[跳绳]': '[jump rope]',
270
+ '[跳跳]': '[jump]',
271
+ '[车厢]': '[compartment]',
272
+ '[转圈]': '[turn in circles]',
273
+ '[鄙视]': '[contempt]',
274
+ '[酷]': '[cool]',
275
+ '[钞票]': '[money]',
276
+ '[钻戒]': '[diamond]',
277
+ '[闪电]': '[lightning]',
278
+ '[闭嘴]': '[shut up]',
279
+ '[闹钟]': '[clock]',
280
+ '[阴险]': '[sinister]',
281
+ '[难过]': '[sad]',
282
+ '[雨伞]': '[umbrella]',
283
+ '[青蛙]': '[frog]',
284
+ '[面条]': '[noodles]',
285
+ '[鞭炮]': '[firecracker]',
286
+ '[风车]': '[windmill]',
287
+ '[飞吻]': '[blow kisses]',
288
+ '[飞机]': '[air]',
289
+ '[饥饿]': '[hunger]',
290
+ '[香蕉]': '[banana]',
291
+ '[骷髅]': '[skull]',
292
+ '[麦克风]': '[mic]',
293
+ '[麻将]': '[mahjong]',
294
+ '[鼓掌]': '[handclap]',
295
+ '[龇牙]': '[happy]',
296
+ };
153
297
  export const emojiName:Array<string> = [
154
298
  '[龇牙]',
155
299
  '[调皮]',
@@ -309,3 +453,40 @@ export const bigEmojiList:Array<IBigEmojiListItem> = [
309
453
  'gcs08', 'gcs09', 'gcs10', 'gcs11', 'gcs12', 'gcs13', 'gcs14', 'gcs15', 'gcs16'],
310
454
  },
311
455
  ];
456
+
457
+ /**
458
+ * Convert to expression key
459
+ * @param { string } data text
460
+ * @param { number } type 0:Convert to Chinese expression key 1: Convert to English expression key
461
+ * @returns { string } the converted text
462
+ */
463
+ export function formatEmojiString(data: string, type = 0) {
464
+ let text = data;
465
+ const replace = {
466
+ key: type === 0 ? 1 : 0,
467
+ value: type,
468
+ };
469
+ Object.entries(emojiEnKey).map((item) => {
470
+ if (text.includes(item[replace.key])) {
471
+ text = transText(text, item[replace.key], item[replace.value]);
472
+ }
473
+ return item;
474
+ });
475
+ return text;
476
+ }
477
+
478
+ /**
479
+ * recursive replacement text
480
+ * @param { string } data text
481
+ * @param { string } replaceVal the value to replace
482
+ * @param { string } value replace Value
483
+ * @returns { string } the replaced value
484
+ */
485
+ function transText(data: string, replaceVal:string, value: string) {
486
+ let text = data;
487
+ text = text.replace(replaceVal, value);
488
+ if (text.includes(replaceVal)) {
489
+ text = transText(text, replaceVal, value);
490
+ }
491
+ return text;
492
+ }
@@ -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;
@@ -3,7 +3,8 @@ import { useTUIMessageInputContext } from '../../context/TUIMessageInputContext'
3
3
  import { Icon, IconTypes } from '../Icon';
4
4
  import { Popup } from '../Popup';
5
5
  import {
6
- emojiUrl, emojiName, emojiMap, bigEmojiList, faceUrl, IBigEmojiListItem,
6
+ emojiUrl, emojiName, emojiMap,
7
+ // bigEmojiList, faceUrl, IBigEmojiListItem,
7
8
  } from '../TUIMessage/utils/emojiMap';
8
9
 
9
10
  import type { EmojiData } from './hooks';
@@ -11,6 +12,7 @@ import type { EmojiData } from './hooks';
11
12
  export function EmojiPicker():React.ReactElement {
12
13
  const [show, setShow] = useState(false);
13
14
  const [index, setIndex] = useState(0);
15
+ const [className, setClassName] = useState('');
14
16
 
15
17
  const handleShow = () => {
16
18
  setShow(!show);
@@ -36,13 +38,18 @@ export function EmojiPicker():React.ReactElement {
36
38
  }
37
39
  };
38
40
 
41
+ const handleVisible = (data) => {
42
+ setClassName(`${!data.top && 'emoji-plugin-top'} ${!data.left && 'emoji-plugin-right'}`);
43
+ };
44
+
39
45
  return (
40
46
  <div className="emoji-picker input-plugin-popup">
41
47
  <Icon width={20} height={20} type={IconTypes.EMOJI} onClick={handleShow} />
42
48
  <Popup
43
- className="input-plugin-popup-box"
49
+ className={`input-plugin-popup-box ${className}`}
44
50
  show={show}
45
51
  close={handleShow}
52
+ handleVisible={handleVisible}
46
53
  >
47
54
  <ul className="face-list">
48
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
  }
@@ -6,6 +6,7 @@ import { useTUIChatActionContext } from '../../context';
6
6
  import { Icon, IconTypes } from '../Icon';
7
7
  import { MESSAGE_OPERATE } from '../../constants';
8
8
  import { useHandleQuoteMessage } from './hooks/useHandleQuoteMessage';
9
+ import { formatEmojiString } from '../TUIMessage/utils/emojiMap';
9
10
 
10
11
  interface InputQuoteProps {
11
12
  message?: Message
@@ -33,7 +34,7 @@ export function InputQuoteDefalut <T extends InputQuoteProps>(
33
34
  <div className="input-quote">
34
35
  <div className="input-quote-content">
35
36
  <label htmlFor="input-quote-content">{message?.nick || message?.from}</label>
36
- <span>{context?.messageAbstract}</span>
37
+ <span>{formatEmojiString(context?.messageAbstract, 1)}</span>
37
38
  </div>
38
39
  <Icon className="icon" width={12} height={12} type={IconTypes.CLOSE} onClick={handleClose} />
39
40
  </div>
@@ -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
 
@@ -4,6 +4,7 @@ import {
4
4
  useCallback,
5
5
  } from 'react';
6
6
  import { useTUIChatActionContext } from '../../../context';
7
+ import { emojiEnKey } from '../../TUIMessage/utils/emojiMap';
7
8
  import type { IbaseStateProps } from './useMessageInputState';
8
9
 
9
10
  export interface EmojiData {
@@ -25,7 +26,7 @@ export function useEmojiPicker<T extends useEmojiPickerProps>(props:PropsWithChi
25
26
  const { sendMessage, createFaceMessage } = useTUIChatActionContext('useEmojiPicker');
26
27
 
27
28
  const onSelectEmoji = (emoji:EmojiData) => {
28
- insertText(emoji.data);
29
+ insertText(emojiEnKey[emoji.data]);
29
30
  };
30
31
 
31
32
  const sendFaceMessage = useCallback((emoji:EmojiData) => {
@@ -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,