stream-chat-react 12.13.1 → 13.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (497) hide show
  1. package/README.md +27 -30
  2. package/dist/components/AIStateIndicator/AIStateIndicator.d.ts +4 -5
  3. package/dist/components/AIStateIndicator/hooks/useAIState.d.ts +2 -3
  4. package/dist/components/Attachment/Attachment.d.ts +8 -9
  5. package/dist/components/Attachment/Attachment.js +6 -5
  6. package/dist/components/Attachment/AttachmentActions.d.ts +2 -3
  7. package/dist/components/Attachment/AttachmentContainer.d.ts +15 -15
  8. package/dist/components/Attachment/AttachmentContainer.js +2 -2
  9. package/dist/components/Attachment/Audio.d.ts +3 -4
  10. package/dist/components/Attachment/Card.d.ts +1 -1
  11. package/dist/components/Attachment/FileAttachment.d.ts +3 -4
  12. package/dist/components/Attachment/FileAttachment.js +1 -1
  13. package/dist/components/Attachment/UnsupportedAttachment.d.ts +3 -4
  14. package/dist/components/Attachment/UnsupportedAttachment.js +1 -1
  15. package/dist/components/Attachment/VoiceRecording.d.ts +4 -5
  16. package/dist/components/Attachment/components/FileSizeIndicator.d.ts +1 -1
  17. package/dist/components/Attachment/components/FileSizeIndicator.js +4 -2
  18. package/dist/components/Attachment/utils.d.ts +8 -22
  19. package/dist/components/Attachment/utils.js +3 -18
  20. package/dist/components/Avatar/Avatar.d.ts +3 -4
  21. package/dist/components/Avatar/ChannelAvatar.d.ts +3 -4
  22. package/dist/components/Avatar/ChannelAvatar.js +1 -1
  23. package/dist/components/Avatar/GroupAvatar.d.ts +2 -2
  24. package/dist/components/Channel/Channel.d.ts +18 -37
  25. package/dist/components/Channel/Channel.js +31 -92
  26. package/dist/components/Channel/channelState.d.ts +17 -18
  27. package/dist/components/Channel/hooks/useChannelContainerClasses.d.ts +2 -3
  28. package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts +2 -3
  29. package/dist/components/Channel/hooks/useCreateChannelStateContext.js +1 -15
  30. package/dist/components/Channel/hooks/useCreateTypingContext.d.ts +1 -2
  31. package/dist/components/Channel/hooks/useEditMessageHandler.d.ts +3 -4
  32. package/dist/components/Channel/hooks/useMentionsHandlers.d.ts +3 -4
  33. package/dist/components/Channel/utils.d.ts +8 -6
  34. package/dist/components/Channel/utils.js +1 -0
  35. package/dist/components/ChannelHeader/ChannelHeader.d.ts +2 -3
  36. package/dist/components/ChannelList/ChannelList.d.ts +31 -30
  37. package/dist/components/ChannelList/ChannelList.js +8 -10
  38. package/dist/components/ChannelList/ChannelListMessenger.d.ts +6 -6
  39. package/dist/components/ChannelList/hooks/useChannelDeletedListener.d.ts +1 -2
  40. package/dist/components/ChannelList/hooks/useChannelHiddenListener.d.ts +1 -2
  41. package/dist/components/ChannelList/hooks/useChannelListShape.d.ts +44 -44
  42. package/dist/components/ChannelList/hooks/useChannelListShape.js +0 -2
  43. package/dist/components/ChannelList/hooks/useChannelMembershipState.d.ts +3 -3
  44. package/dist/components/ChannelList/hooks/useChannelTruncatedListener.d.ts +1 -2
  45. package/dist/components/ChannelList/hooks/useChannelUpdatedListener.d.ts +1 -2
  46. package/dist/components/ChannelList/hooks/useChannelVisibleListener.d.ts +1 -2
  47. package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.d.ts +1 -2
  48. package/dist/components/ChannelList/hooks/useMessageNewListener.d.ts +1 -2
  49. package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.d.ts +1 -2
  50. package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.d.ts +1 -2
  51. package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.d.ts +1 -2
  52. package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts +7 -8
  53. package/dist/components/ChannelList/hooks/usePaginatedChannels.js +3 -3
  54. package/dist/components/ChannelList/hooks/useSelectedChannelState.d.ts +7 -7
  55. package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.d.ts +1 -2
  56. package/dist/components/ChannelList/utils.d.ts +20 -21
  57. package/dist/components/ChannelList/utils.js +2 -2
  58. package/dist/components/ChannelPreview/ChannelPreview.d.ts +15 -16
  59. package/dist/components/ChannelPreview/ChannelPreview.js +1 -1
  60. package/dist/components/ChannelPreview/ChannelPreviewActionButtons.d.ts +4 -4
  61. package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts +1 -2
  62. package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.d.ts +3 -4
  63. package/dist/components/ChannelPreview/hooks/useIsChannelMuted.d.ts +1 -2
  64. package/dist/components/ChannelPreview/hooks/useMessageDeliveryStatus.d.ts +5 -7
  65. package/dist/components/ChannelPreview/icons.d.ts +1 -1
  66. package/dist/components/ChannelPreview/utils.d.ts +7 -7
  67. package/dist/components/ChannelSearch/ChannelSearch.d.ts +5 -6
  68. package/dist/components/ChannelSearch/ChannelSearch.js +2 -2
  69. package/dist/components/ChannelSearch/SearchBar.d.ts +1 -1
  70. package/dist/components/ChannelSearch/SearchBar.js +1 -1
  71. package/dist/components/ChannelSearch/SearchResults.d.ts +13 -14
  72. package/dist/components/ChannelSearch/SearchResults.js +1 -1
  73. package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts +17 -18
  74. package/dist/components/ChannelSearch/hooks/useChannelSearch.js +2 -6
  75. package/dist/components/ChannelSearch/utils.d.ts +2 -3
  76. package/dist/components/Chat/Chat.d.ts +9 -9
  77. package/dist/components/Chat/hooks/useChannelsQueryState.d.ts +1 -1
  78. package/dist/components/Chat/hooks/useChat.d.ts +10 -10
  79. package/dist/components/Chat/hooks/useChat.js +4 -3
  80. package/dist/components/Chat/hooks/useCreateChatClient.d.ts +4 -4
  81. package/dist/components/Chat/hooks/useCreateChatContext.d.ts +1 -2
  82. package/dist/components/Dialog/DialogAnchor.d.ts +4 -3
  83. package/dist/components/Dialog/DialogAnchor.js +2 -2
  84. package/dist/components/Dialog/DialogMenu.d.ts +2 -1
  85. package/dist/components/Dialog/DialogPortal.d.ts +2 -1
  86. package/dist/components/Dialog/FormDialog.d.ts +2 -1
  87. package/dist/components/Dialog/FormDialog.js +1 -1
  88. package/dist/components/Dialog/PromptDialog.d.ts +2 -1
  89. package/dist/components/DragAndDrop/DragAndDropContainer.d.ts +2 -1
  90. package/dist/components/EventComponent/EventComponent.d.ts +7 -6
  91. package/dist/components/Form/FieldError.d.ts +2 -1
  92. package/dist/components/Form/SwitchField.d.ts +2 -1
  93. package/dist/components/Form/SwitchField.js +1 -1
  94. package/dist/components/Gallery/Gallery.d.ts +5 -5
  95. package/dist/components/Gallery/Image.d.ts +6 -5
  96. package/dist/components/Gallery/ModalGallery.d.ts +3 -4
  97. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts +2 -1
  98. package/dist/components/InfiniteScrollPaginator/InfiniteScrollPaginator.d.ts +2 -1
  99. package/dist/components/LoadMore/LoadMoreButton.d.ts +2 -1
  100. package/dist/components/LoadMore/LoadMorePaginator.d.ts +3 -2
  101. package/dist/components/LoadMore/LoadMorePaginator.js +1 -1
  102. package/dist/components/MediaRecorder/AudioRecorder/AudioRecorder.js +3 -2
  103. package/dist/components/MediaRecorder/AudioRecorder/AudioRecordingInProgress.js +1 -1
  104. package/dist/components/MediaRecorder/RecordingPermissionDeniedNotification.d.ts +1 -1
  105. package/dist/components/MediaRecorder/classes/MediaRecorderController.d.ts +11 -23
  106. package/dist/components/MediaRecorder/hooks/useMediaRecorder.d.ts +8 -8
  107. package/dist/components/MediaRecorder/hooks/useMediaRecorder.js +6 -4
  108. package/dist/components/MediaRecorder/observable/BehaviorSubject.d.ts +2 -2
  109. package/dist/components/MediaRecorder/observable/Observable.d.ts +1 -1
  110. package/dist/components/MediaRecorder/observable/Subject.d.ts +3 -2
  111. package/dist/components/Message/FixedHeightMessage.d.ts +4 -5
  112. package/dist/components/Message/Message.d.ts +1 -2
  113. package/dist/components/Message/MessageBlocked.d.ts +2 -0
  114. package/dist/components/Message/MessageBlocked.js +16 -0
  115. package/dist/components/Message/MessageDeleted.d.ts +4 -5
  116. package/dist/components/Message/MessageEditedTimestamp.d.ts +2 -3
  117. package/dist/components/Message/MessageErrorText.d.ts +4 -5
  118. package/dist/components/Message/MessageErrorText.js +2 -2
  119. package/dist/components/Message/MessageOptions.d.ts +3 -3
  120. package/dist/components/Message/MessageRepliesCountButton.d.ts +2 -1
  121. package/dist/components/Message/MessageSimple.d.ts +1 -2
  122. package/dist/components/Message/MessageSimple.js +14 -12
  123. package/dist/components/Message/MessageStatus.d.ts +3 -4
  124. package/dist/components/Message/MessageText.d.ts +6 -6
  125. package/dist/components/Message/MessageTimestamp.d.ts +4 -5
  126. package/dist/components/Message/QuotedMessage.d.ts +2 -3
  127. package/dist/components/Message/QuotedMessage.js +1 -1
  128. package/dist/components/Message/StreamedMessageText.d.ts +3 -4
  129. package/dist/components/Message/hooks/useActionHandler.d.ts +2 -3
  130. package/dist/components/Message/hooks/useActionHandler.js +1 -1
  131. package/dist/components/Message/hooks/useDeleteHandler.d.ts +4 -5
  132. package/dist/components/Message/hooks/useFlagHandler.d.ts +5 -6
  133. package/dist/components/Message/hooks/useMarkUnreadHandler.d.ts +5 -6
  134. package/dist/components/Message/hooks/useMentionsHandler.d.ts +6 -8
  135. package/dist/components/Message/hooks/useMessageTextStreaming.d.ts +2 -3
  136. package/dist/components/Message/hooks/useMuteHandler.d.ts +5 -7
  137. package/dist/components/Message/hooks/useMuteHandler.js +1 -1
  138. package/dist/components/Message/hooks/useOpenThreadHandler.d.ts +2 -3
  139. package/dist/components/Message/hooks/usePinHandler.d.ts +4 -5
  140. package/dist/components/Message/hooks/usePinHandler.js +1 -1
  141. package/dist/components/Message/hooks/useReactionHandler.d.ts +3 -4
  142. package/dist/components/Message/hooks/useReactionHandler.js +2 -4
  143. package/dist/components/Message/hooks/useReactionsFetcher.d.ts +5 -7
  144. package/dist/components/Message/hooks/useRetryHandler.d.ts +2 -3
  145. package/dist/components/Message/hooks/useRetryHandler.js +1 -1
  146. package/dist/components/Message/hooks/useUserHandler.d.ts +5 -6
  147. package/dist/components/Message/hooks/useUserRole.d.ts +2 -3
  148. package/dist/components/Message/hooks/useUserRole.js +1 -1
  149. package/dist/components/Message/icons.d.ts +2 -2
  150. package/dist/components/Message/icons.js +1 -1
  151. package/dist/components/Message/renderText/componentRenderers/Anchor.d.ts +2 -1
  152. package/dist/components/Message/renderText/componentRenderers/Emoji.d.ts +1 -1
  153. package/dist/components/Message/renderText/componentRenderers/Mention.d.ts +5 -5
  154. package/dist/components/Message/renderText/componentRenderers/Mention.js +1 -1
  155. package/dist/components/Message/renderText/rehypePlugins/mentionsMarkdownPlugin.d.ts +1 -2
  156. package/dist/components/Message/renderText/renderText.d.ts +6 -6
  157. package/dist/components/Message/renderText/types.d.ts +1 -1
  158. package/dist/components/Message/types.d.ts +27 -28
  159. package/dist/components/Message/utils.d.ts +21 -21
  160. package/dist/components/Message/utils.js +8 -4
  161. package/dist/components/MessageActions/CustomMessageActionsList.d.ts +6 -7
  162. package/dist/components/MessageActions/MessageActions.d.ts +6 -5
  163. package/dist/components/MessageActions/MessageActions.js +1 -1
  164. package/dist/components/MessageActions/MessageActionsBox.d.ts +5 -5
  165. package/dist/components/MessageActions/MessageActionsBox.js +4 -3
  166. package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.d.ts +1 -1
  167. package/dist/components/MessageBounce/MessageBounceModal.d.ts +4 -3
  168. package/dist/components/MessageBounce/MessageBouncePrompt.d.ts +1 -2
  169. package/dist/components/MessageInput/AttachmentPreviewList/AttachmentPreviewList.d.ts +11 -11
  170. package/dist/components/MessageInput/AttachmentPreviewList/AttachmentPreviewList.js +17 -14
  171. package/dist/components/MessageInput/AttachmentPreviewList/FileAttachmentPreview.d.ts +4 -12
  172. package/dist/components/MessageInput/AttachmentPreviewList/FileAttachmentPreview.js +8 -5
  173. package/dist/components/MessageInput/AttachmentPreviewList/ImageAttachmentPreview.d.ts +4 -5
  174. package/dist/components/MessageInput/AttachmentPreviewList/ImageAttachmentPreview.js +2 -2
  175. package/dist/components/MessageInput/AttachmentPreviewList/UnsupportedAttachmentPreview.d.ts +7 -5
  176. package/dist/components/MessageInput/AttachmentPreviewList/UnsupportedAttachmentPreview.js +5 -2
  177. package/dist/components/MessageInput/AttachmentPreviewList/VoiceRecordingPreview.d.ts +4 -5
  178. package/dist/components/MessageInput/AttachmentPreviewList/VoiceRecordingPreview.js +5 -2
  179. package/dist/components/MessageInput/AttachmentPreviewList/index.d.ts +1 -1
  180. package/dist/components/MessageInput/AttachmentPreviewList/types.d.ts +3 -4
  181. package/dist/components/MessageInput/AttachmentSelector.d.ts +1 -2
  182. package/dist/components/MessageInput/AttachmentSelector.js +5 -3
  183. package/dist/components/MessageInput/EditMessageForm.d.ts +3 -2
  184. package/dist/components/MessageInput/EditMessageForm.js +30 -6
  185. package/dist/components/MessageInput/LinkPreviewList.d.ts +6 -4
  186. package/dist/components/MessageInput/LinkPreviewList.js +24 -10
  187. package/dist/components/MessageInput/MessageInput.d.ts +23 -45
  188. package/dist/components/MessageInput/MessageInput.js +25 -15
  189. package/dist/components/MessageInput/MessageInputFlat.d.ts +1 -2
  190. package/dist/components/MessageInput/MessageInputFlat.js +31 -76
  191. package/dist/components/MessageInput/QuotedMessagePreview.d.ts +4 -7
  192. package/dist/components/MessageInput/QuotedMessagePreview.js +22 -16
  193. package/dist/components/MessageInput/SendButton.d.ts +4 -5
  194. package/dist/components/MessageInput/SendButton.js +6 -2
  195. package/dist/components/MessageInput/WithDragAndDropUpload.d.ts +38 -0
  196. package/dist/components/MessageInput/WithDragAndDropUpload.js +96 -0
  197. package/dist/components/MessageInput/hooks/index.d.ts +5 -1
  198. package/dist/components/MessageInput/hooks/index.js +5 -1
  199. package/dist/components/MessageInput/hooks/useAttachmentManagerState.d.ts +10 -0
  200. package/dist/components/MessageInput/hooks/useAttachmentManagerState.js +19 -0
  201. package/dist/components/MessageInput/hooks/useCanCreatePoll.d.ts +1 -0
  202. package/dist/components/MessageInput/hooks/useCanCreatePoll.js +10 -0
  203. package/dist/components/MessageInput/hooks/useCooldownTimer.d.ts +2 -3
  204. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts +1 -2
  205. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +1 -55
  206. package/dist/components/MessageInput/hooks/useMessageComposer.d.ts +2 -0
  207. package/dist/components/MessageInput/hooks/useMessageComposer.js +80 -0
  208. package/dist/components/MessageInput/hooks/useMessageComposerHasSendableData.d.ts +1 -0
  209. package/dist/components/MessageInput/hooks/useMessageComposerHasSendableData.js +8 -0
  210. package/dist/components/MessageInput/hooks/useMessageInputControls.d.ts +12 -0
  211. package/dist/components/MessageInput/hooks/useMessageInputControls.js +23 -0
  212. package/dist/components/MessageInput/hooks/useMessageInputText.d.ts +1 -5
  213. package/dist/components/MessageInput/hooks/useMessageInputText.js +19 -53
  214. package/dist/components/MessageInput/hooks/usePasteHandler.d.ts +1 -3
  215. package/dist/components/MessageInput/hooks/usePasteHandler.js +6 -8
  216. package/dist/components/MessageInput/hooks/useSubmitHandler.d.ts +2 -6
  217. package/dist/components/MessageInput/hooks/useSubmitHandler.js +30 -98
  218. package/dist/components/MessageInput/hooks/utils.d.ts +0 -27
  219. package/dist/components/MessageInput/hooks/utils.js +0 -124
  220. package/dist/components/MessageInput/index.d.ts +1 -2
  221. package/dist/components/MessageInput/index.js +1 -2
  222. package/dist/components/MessageList/ConnectionStatus.d.ts +1 -2
  223. package/dist/components/MessageList/ConnectionStatus.js +1 -1
  224. package/dist/components/MessageList/CustomNotification.d.ts +2 -1
  225. package/dist/components/MessageList/GiphyPreviewMessage.d.ts +4 -5
  226. package/dist/components/MessageList/MessageList.d.ts +11 -12
  227. package/dist/components/MessageList/MessageList.js +4 -4
  228. package/dist/components/MessageList/MessageNotification.d.ts +2 -1
  229. package/dist/components/MessageList/VirtualizedMessageList.d.ts +22 -21
  230. package/dist/components/MessageList/VirtualizedMessageList.js +6 -6
  231. package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts +10 -10
  232. package/dist/components/MessageList/VirtualizedMessageListComponents.js +7 -7
  233. package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.d.ts +8 -10
  234. package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.js +1 -1
  235. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts +11 -12
  236. package/dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.d.ts +4 -5
  237. package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.d.ts +5 -6
  238. package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.d.ts +4 -5
  239. package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.js +3 -2
  240. package/dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.d.ts +4 -5
  241. package/dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.js +1 -1
  242. package/dist/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.d.ts +2 -3
  243. package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.d.ts +2 -3
  244. package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.js +6 -2
  245. package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.d.ts +4 -5
  246. package/dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.d.ts +2 -3
  247. package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.d.ts +3 -4
  248. package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.js +5 -6
  249. package/dist/components/MessageList/hooks/useLastReadData.d.ts +5 -6
  250. package/dist/components/MessageList/hooks/useLastReadData.js +5 -1
  251. package/dist/components/MessageList/hooks/useMarkRead.d.ts +1 -2
  252. package/dist/components/MessageList/renderMessages.d.ts +14 -14
  253. package/dist/components/MessageList/renderMessages.js +8 -7
  254. package/dist/components/MessageList/utils.d.ts +34 -28
  255. package/dist/components/MessageList/utils.js +26 -21
  256. package/dist/components/Modal/Modal.d.ts +2 -1
  257. package/dist/components/Poll/Poll.d.ts +2 -3
  258. package/dist/components/Poll/Poll.js +1 -1
  259. package/dist/components/Poll/PollActions/AddCommentForm.d.ts +1 -2
  260. package/dist/components/Poll/PollActions/AddCommentForm.js +4 -2
  261. package/dist/components/Poll/PollActions/EndPollDialog.d.ts +1 -2
  262. package/dist/components/Poll/PollActions/EndPollDialog.js +1 -1
  263. package/dist/components/Poll/PollActions/PollAction.d.ts +2 -1
  264. package/dist/components/Poll/PollActions/PollActions.d.ts +7 -8
  265. package/dist/components/Poll/PollActions/PollActions.js +5 -5
  266. package/dist/components/Poll/PollActions/PollAnswerList.d.ts +1 -2
  267. package/dist/components/Poll/PollActions/PollOptionsFullList.d.ts +1 -2
  268. package/dist/components/Poll/PollActions/PollOptionsFullList.js +4 -2
  269. package/dist/components/Poll/PollActions/PollResults/PollOptionVotesList.d.ts +3 -4
  270. package/dist/components/Poll/PollActions/PollResults/PollOptionVotesList.js +1 -1
  271. package/dist/components/Poll/PollActions/PollResults/PollOptionWithLatestVotes.d.ts +3 -4
  272. package/dist/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.d.ts +4 -5
  273. package/dist/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.js +1 -1
  274. package/dist/components/Poll/PollActions/PollResults/PollResults.d.ts +1 -2
  275. package/dist/components/Poll/PollActions/PollResults/PollResults.js +1 -1
  276. package/dist/components/Poll/PollActions/SuggestPollOptionForm.d.ts +1 -2
  277. package/dist/components/Poll/PollActions/SuggestPollOptionForm.js +3 -1
  278. package/dist/components/Poll/PollContent.d.ts +1 -2
  279. package/dist/components/Poll/PollCreationDialog/MultipleAnswersField.d.ts +2 -0
  280. package/dist/components/Poll/PollCreationDialog/MultipleAnswersField.js +35 -0
  281. package/dist/components/Poll/PollCreationDialog/NameField.d.ts +2 -0
  282. package/dist/components/Poll/PollCreationDialog/NameField.js +26 -0
  283. package/dist/components/Poll/PollCreationDialog/OptionFieldSet.d.ts +1 -8
  284. package/dist/components/Poll/PollCreationDialog/OptionFieldSet.js +33 -65
  285. package/dist/components/Poll/PollCreationDialog/PollCreationDialog.js +31 -85
  286. package/dist/components/Poll/PollCreationDialog/PollCreationDialogControls.d.ts +1 -4
  287. package/dist/components/Poll/PollCreationDialog/PollCreationDialogControls.js +15 -41
  288. package/dist/components/Poll/PollCreationDialog/types.d.ts +0 -14
  289. package/dist/components/Poll/PollHeader.d.ts +1 -2
  290. package/dist/components/Poll/PollOptionList.d.ts +1 -2
  291. package/dist/components/Poll/PollOptionList.js +4 -2
  292. package/dist/components/Poll/PollOptionSelector.d.ts +3 -4
  293. package/dist/components/Poll/PollVote.d.ts +6 -7
  294. package/dist/components/Poll/PollVote.js +3 -3
  295. package/dist/components/Poll/QuotedPoll.d.ts +1 -2
  296. package/dist/components/Poll/constants.d.ts +0 -1
  297. package/dist/components/Poll/constants.js +0 -1
  298. package/dist/components/Poll/hooks/useManagePollVotesRealtime.d.ts +2 -3
  299. package/dist/components/Poll/hooks/usePollAnswerPagination.d.ts +2 -3
  300. package/dist/components/Poll/hooks/usePollAnswerPagination.js +2 -2
  301. package/dist/components/Poll/hooks/usePollOptionVotesPagination.d.ts +2 -3
  302. package/dist/components/Poll/hooks/usePollOptionVotesPagination.js +1 -1
  303. package/dist/components/Portal/Portal.d.ts +1 -1
  304. package/dist/components/ReactFileUtilities/FileIcon/FileIcon.d.ts +1 -1
  305. package/dist/components/ReactFileUtilities/FileIcon/FileIconSet.d.ts +2 -1
  306. package/dist/components/ReactFileUtilities/FileIcon/iconMap.d.ts +1 -1
  307. package/dist/components/ReactFileUtilities/UploadButton.d.ts +3 -2
  308. package/dist/components/ReactFileUtilities/UploadButton.js +16 -6
  309. package/dist/components/ReactFileUtilities/index.d.ts +0 -1
  310. package/dist/components/ReactFileUtilities/index.js +0 -1
  311. package/dist/components/ReactFileUtilities/utils.d.ts +2 -2
  312. package/dist/components/Reactions/ReactionSelector.d.ts +4 -5
  313. package/dist/components/Reactions/ReactionSelectorWithButton.d.ts +1 -2
  314. package/dist/components/Reactions/ReactionsList.d.ts +6 -7
  315. package/dist/components/Reactions/ReactionsList.js +2 -2
  316. package/dist/components/Reactions/ReactionsListModal.d.ts +9 -10
  317. package/dist/components/Reactions/SimpleReactionsList.d.ts +5 -6
  318. package/dist/components/Reactions/StreamEmoji.d.ts +1 -1
  319. package/dist/components/Reactions/hooks/useFetchReactions.d.ts +9 -10
  320. package/dist/components/Reactions/hooks/useProcessReactions.d.ts +1 -2
  321. package/dist/components/Reactions/types.d.ts +3 -4
  322. package/dist/components/Reactions/utils/utils.d.ts +1 -1
  323. package/dist/components/SafeAnchor/SafeAnchor.d.ts +2 -1
  324. package/dist/components/{CommandItem → TextareaComposer/SuggestionList}/CommandItem.d.ts +2 -1
  325. package/dist/components/{CommandItem → TextareaComposer/SuggestionList}/CommandItem.js +1 -2
  326. package/dist/components/{EmoticonItem → TextareaComposer/SuggestionList}/EmoticonItem.d.ts +7 -7
  327. package/dist/components/TextareaComposer/SuggestionList/EmoticonItem.js +12 -0
  328. package/dist/components/TextareaComposer/SuggestionList/SuggestionList.d.ts +16 -0
  329. package/dist/components/TextareaComposer/SuggestionList/SuggestionList.js +49 -0
  330. package/dist/components/TextareaComposer/SuggestionList/SuggestionListItem.d.ts +18 -0
  331. package/dist/components/TextareaComposer/SuggestionList/SuggestionListItem.js +25 -0
  332. package/dist/components/{UserItem → TextareaComposer/SuggestionList}/UserItem.d.ts +7 -4
  333. package/dist/components/TextareaComposer/SuggestionList/UserItem.js +24 -0
  334. package/dist/components/TextareaComposer/SuggestionList/index.d.ts +5 -0
  335. package/dist/components/TextareaComposer/SuggestionList/index.js +5 -0
  336. package/dist/components/TextareaComposer/TextareaComposer.d.ts +13 -0
  337. package/dist/components/TextareaComposer/TextareaComposer.js +155 -0
  338. package/dist/components/TextareaComposer/index.d.ts +2 -0
  339. package/dist/components/TextareaComposer/index.js +2 -0
  340. package/dist/components/Thread/Thread.d.ts +13 -10
  341. package/dist/components/Thread/Thread.js +23 -12
  342. package/dist/components/Thread/ThreadHead.d.ts +2 -3
  343. package/dist/components/Thread/ThreadHeader.d.ts +5 -6
  344. package/dist/components/Thread/ThreadHeader.js +1 -1
  345. package/dist/components/Threads/ThreadContext.d.ts +2 -2
  346. package/dist/components/Threads/ThreadContext.js +1 -4
  347. package/dist/components/Threads/ThreadList/ThreadList.d.ts +1 -1
  348. package/dist/components/Threads/ThreadList/ThreadListItem.d.ts +1 -1
  349. package/dist/components/Threads/hooks/useThreadManagerState.d.ts +1 -1
  350. package/dist/components/Threads/hooks/useThreadState.d.ts +1 -1
  351. package/dist/components/Threads/icons.d.ts +1 -1
  352. package/dist/components/Tooltip/Tooltip.d.ts +3 -2
  353. package/dist/components/Tooltip/hooks/useEnterLeaveHandlers.d.ts +1 -1
  354. package/dist/components/TypingIndicator/TypingIndicator.d.ts +1 -2
  355. package/dist/components/Window/Window.d.ts +6 -6
  356. package/dist/components/index.d.ts +1 -5
  357. package/dist/components/index.js +1 -5
  358. package/dist/context/AttachmentSelectorContext.d.ts +2 -1
  359. package/dist/context/ChannelActionContext.d.ts +26 -35
  360. package/dist/context/ChannelListContext.d.ts +9 -9
  361. package/dist/context/ChannelListContext.js +1 -1
  362. package/dist/context/ChannelStateContext.d.ts +24 -34
  363. package/dist/context/ChatContext.d.ts +18 -17
  364. package/dist/context/ComponentContext.d.ts +41 -37
  365. package/dist/context/DialogManagerContext.d.ts +2 -1
  366. package/dist/context/MessageBounceContext.d.ts +8 -7
  367. package/dist/context/MessageBounceContext.js +1 -1
  368. package/dist/context/MessageContext.d.ts +23 -23
  369. package/dist/context/MessageInputContext.d.ts +8 -26
  370. package/dist/context/MessageInputContext.js +3 -2
  371. package/dist/context/MessageListContext.d.ts +2 -1
  372. package/dist/context/PollContext.d.ts +8 -8
  373. package/dist/context/TranslationContext.d.ts +2 -1
  374. package/dist/context/TypingContext.d.ts +11 -10
  375. package/dist/context/VirtualizedMessageListContext.d.ts +2 -1
  376. package/dist/context/WithComponents.d.ts +3 -2
  377. package/dist/css/v2/index.css +1 -1
  378. package/dist/css/v2/index.layout.css +1 -1
  379. package/dist/experimental/MessageActions/MessageActions.d.ts +1 -1
  380. package/dist/experimental/MessageActions/MessageActions.js +1 -1
  381. package/dist/experimental/MessageActions/defaults.js +4 -3
  382. package/dist/experimental/Search/Search.d.ts +1 -2
  383. package/dist/experimental/Search/SearchContext.d.ts +8 -8
  384. package/dist/experimental/Search/SearchResults/SearchResultItem.d.ts +11 -11
  385. package/dist/experimental/Search/SearchResults/SearchResultItem.js +3 -3
  386. package/dist/experimental/Search/SearchResults/SearchResults.d.ts +1 -2
  387. package/dist/experimental/Search/SearchResults/SearchResultsHeader.d.ts +1 -2
  388. package/dist/experimental/Search/SearchResults/SearchResultsHeader.js +1 -1
  389. package/dist/experimental/Search/SearchResults/SearchSourceResultList.d.ts +2 -3
  390. package/dist/experimental/Search/SearchResults/SearchSourceResultListFooter.d.ts +1 -2
  391. package/dist/experimental/Search/SearchResults/SearchSourceResults.d.ts +1 -2
  392. package/dist/experimental/Search/SearchResults/SearchSourceResults.js +1 -1
  393. package/dist/experimental/Search/SearchSourceResultsContext.d.ts +2 -1
  394. package/dist/experimental/Search/hooks/useSearchFocusedMessage.d.ts +1 -2
  395. package/dist/experimental/Search/hooks/useSearchFocusedMessage.js +3 -1
  396. package/dist/experimental/Search/hooks/useSearchQueriesInProgress.d.ts +3 -4
  397. package/dist/experimental/index.browser.cjs +1139 -1075
  398. package/dist/experimental/index.browser.cjs.map +4 -4
  399. package/dist/experimental/index.node.cjs +1139 -1075
  400. package/dist/experimental/index.node.cjs.map +4 -4
  401. package/dist/i18n/Streami18n.d.ts +2 -1
  402. package/dist/i18n/de.json +1 -0
  403. package/dist/i18n/en.json +1 -0
  404. package/dist/i18n/es.json +1 -0
  405. package/dist/i18n/fr.json +1 -0
  406. package/dist/i18n/hi.json +1 -0
  407. package/dist/i18n/it.json +1 -0
  408. package/dist/i18n/ja.json +1 -0
  409. package/dist/i18n/ko.json +1 -0
  410. package/dist/i18n/nl.json +1 -0
  411. package/dist/i18n/pt.json +1 -0
  412. package/dist/i18n/ru.json +1 -0
  413. package/dist/i18n/tr.json +1 -0
  414. package/dist/i18n/types.d.ts +2 -2
  415. package/dist/i18n/utils.d.ts +1 -1
  416. package/dist/i18n/utils.js +3 -1
  417. package/dist/index.browser.cjs +28774 -30813
  418. package/dist/index.browser.cjs.map +4 -4
  419. package/dist/index.node.cjs +30798 -32844
  420. package/dist/index.node.cjs.map +4 -4
  421. package/dist/plugins/Emojis/index.browser.cjs +133 -5
  422. package/dist/plugins/Emojis/index.browser.cjs.map +4 -4
  423. package/dist/plugins/Emojis/index.d.ts +1 -0
  424. package/dist/plugins/Emojis/index.js +1 -0
  425. package/dist/plugins/Emojis/index.node.cjs +135 -6
  426. package/dist/plugins/Emojis/index.node.cjs.map +4 -4
  427. package/dist/plugins/Emojis/middleware/index.d.ts +1 -0
  428. package/dist/plugins/Emojis/middleware/index.js +1 -0
  429. package/dist/plugins/Emojis/middleware/textComposerEmojiMiddleware.d.ts +66 -0
  430. package/dist/plugins/Emojis/middleware/textComposerEmojiMiddleware.js +143 -0
  431. package/dist/plugins/encoders/mp3.browser.cjs.map +2 -2
  432. package/dist/plugins/encoders/mp3.node.cjs.map +2 -2
  433. package/dist/scss/v2/Autocomplete/Autocomplete-layout.scss +14 -0
  434. package/dist/scss/v2/Autocomplete/Autocomplete-theme.scss +11 -0
  435. package/dist/scss/v2/DropzoneContainer/DropzoneContainer-layout.scss +14 -0
  436. package/dist/scss/v2/DropzoneContainer/DropzoneContainer-theme.scss +17 -0
  437. package/dist/scss/v2/LinkPreview/LinkPreview-layout.scss +18 -0
  438. package/dist/scss/v2/LinkPreview/LinkPreview-theme.scss +15 -0
  439. package/dist/scss/v2/Message/Message-layout.scss +8 -0
  440. package/dist/scss/v2/Message/Message-theme.scss +29 -0
  441. package/dist/scss/v2/MessageInput/MessageInput-layout.scss +0 -13
  442. package/dist/scss/v2/MessageInput/MessageInput-theme.scss +8 -19
  443. package/dist/scss/v2/index.layout.scss +2 -1
  444. package/dist/scss/v2/index.scss +1 -0
  445. package/dist/types/defaultDataInterfaces.d.ts +25 -0
  446. package/dist/types/index.d.ts +2 -1
  447. package/dist/types/types.d.ts +2 -62
  448. package/dist/utils/getChannel.d.ts +5 -6
  449. package/dist/utils/mergeDeep.d.ts +2 -3
  450. package/package.json +8 -11
  451. package/dist/components/AutoCompleteTextarea/Item.d.ts +0 -2
  452. package/dist/components/AutoCompleteTextarea/Item.js +0 -10
  453. package/dist/components/AutoCompleteTextarea/List.d.ts +0 -17
  454. package/dist/components/AutoCompleteTextarea/List.js +0 -89
  455. package/dist/components/AutoCompleteTextarea/Textarea.d.ts +0 -114
  456. package/dist/components/AutoCompleteTextarea/Textarea.js +0 -593
  457. package/dist/components/AutoCompleteTextarea/index.d.ts +0 -4
  458. package/dist/components/AutoCompleteTextarea/index.js +0 -4
  459. package/dist/components/AutoCompleteTextarea/types.d.ts +0 -15
  460. package/dist/components/AutoCompleteTextarea/utils.d.ts +0 -6
  461. package/dist/components/AutoCompleteTextarea/utils.js +0 -40
  462. package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts +0 -78
  463. package/dist/components/ChatAutoComplete/ChatAutoComplete.js +0 -33
  464. package/dist/components/ChatAutoComplete/index.d.ts +0 -1
  465. package/dist/components/ChatAutoComplete/index.js +0 -1
  466. package/dist/components/CommandItem/index.d.ts +0 -1
  467. package/dist/components/CommandItem/index.js +0 -1
  468. package/dist/components/EmoticonItem/EmoticonItem.js +0 -16
  469. package/dist/components/EmoticonItem/index.d.ts +0 -1
  470. package/dist/components/EmoticonItem/index.js +0 -1
  471. package/dist/components/MessageInput/DefaultTriggerProvider.d.ts +0 -35
  472. package/dist/components/MessageInput/DefaultTriggerProvider.js +0 -24
  473. package/dist/components/MessageInput/DropzoneProvider.d.ts +0 -4
  474. package/dist/components/MessageInput/DropzoneProvider.js +0 -23
  475. package/dist/components/MessageInput/hooks/useAttachments.d.ts +0 -14
  476. package/dist/components/MessageInput/hooks/useAttachments.js +0 -209
  477. package/dist/components/MessageInput/hooks/useCommandTrigger.d.ts +0 -3
  478. package/dist/components/MessageInput/hooks/useCommandTrigger.js +0 -62
  479. package/dist/components/MessageInput/hooks/useEmojiTrigger.d.ts +0 -3
  480. package/dist/components/MessageInput/hooks/useEmojiTrigger.js +0 -29
  481. package/dist/components/MessageInput/hooks/useLinkPreviews.d.ts +0 -30
  482. package/dist/components/MessageInput/hooks/useLinkPreviews.js +0 -109
  483. package/dist/components/MessageInput/hooks/useMessageInputState.d.ts +0 -71
  484. package/dist/components/MessageInput/hooks/useMessageInputState.js +0 -200
  485. package/dist/components/MessageInput/hooks/useUserTrigger.d.ts +0 -12
  486. package/dist/components/MessageInput/hooks/useUserTrigger.js +0 -130
  487. package/dist/components/MessageInput/types.d.ts +0 -87
  488. package/dist/components/MessageInput/types.js +0 -19
  489. package/dist/components/ReactFileUtilities/ImageDropzone.d.ts +0 -16
  490. package/dist/components/ReactFileUtilities/ImageDropzone.js +0 -42
  491. package/dist/components/UserItem/UserItem.js +0 -26
  492. package/dist/components/UserItem/index.d.ts +0 -1
  493. package/dist/components/UserItem/index.js +0 -1
  494. /package/dist/components/{MessageInput → MediaRecorder/AudioRecorder}/hooks/useTimeElapsed.d.ts +0 -0
  495. /package/dist/components/{MessageInput → MediaRecorder/AudioRecorder}/hooks/useTimeElapsed.js +0 -0
  496. /package/dist/scss/v2/DragAndDropContainer/{DragAmdDropContainer-layout.scss → DragAndDropContainer-layout.scss} +0 -0
  497. /package/dist/{components/AutoCompleteTextarea/types.js → types/defaultDataInterfaces.js} +0 -0
@@ -1,91 +1,22 @@
1
- import { useEffect, useRef } from 'react';
1
+ import { useCallback } from 'react';
2
+ import { useMessageComposer } from './useMessageComposer';
2
3
  import { useChannelActionContext } from '../../../context/ChannelActionContext';
3
- import { useChannelStateContext } from '../../../context/ChannelStateContext';
4
4
  import { useTranslationContext } from '../../../context/TranslationContext';
5
- import { LinkPreviewState } from '../types';
6
- export const useSubmitHandler = (props, state, dispatch, numberOfUploads, enrichURLsController) => {
7
- const { clearEditingState, message, overrideSubmitHandler, parent, publishTypingEvent, } = props;
8
- const { attachments, linkPreviews, mentioned_users, text } = state;
9
- const { cancelURLEnrichment, findAndEnqueueURLsToEnrich } = enrichURLsController;
10
- const { channel } = useChannelStateContext('useSubmitHandler');
5
+ export const useSubmitHandler = (props) => {
6
+ const { clearEditingState, overrideSubmitHandler } = props;
11
7
  const { addNotification, editMessage, sendMessage } = useChannelActionContext('useSubmitHandler');
12
8
  const { t } = useTranslationContext('useSubmitHandler');
13
- const textReference = useRef({ hasChanged: false, initialText: text });
14
- useEffect(() => {
15
- if (!textReference.current.initialText.length) {
16
- textReference.current.initialText = text;
17
- return;
18
- }
19
- textReference.current.hasChanged = text !== textReference.current.initialText;
20
- }, [text]);
21
- const handleSubmit = async (event, customMessageData, options) => {
9
+ const messageComposer = useMessageComposer();
10
+ const handleSubmit = useCallback(async (event) => {
22
11
  event?.preventDefault();
23
- const trimmedMessage = text.trim();
24
- const isEmptyMessage = trimmedMessage === '' ||
25
- trimmedMessage === '>' ||
26
- trimmedMessage === '``````' ||
27
- trimmedMessage === '``' ||
28
- trimmedMessage === '**' ||
29
- trimmedMessage === '____' ||
30
- trimmedMessage === '__' ||
31
- trimmedMessage === '****';
32
- if (isEmptyMessage &&
33
- numberOfUploads === 0 &&
34
- attachments.length === 0 &&
35
- !customMessageData?.poll_id)
12
+ const composition = await messageComposer.compose();
13
+ if (!composition || !composition.message)
36
14
  return;
37
- const someAttachmentsUploading = attachments.some((att) => att.localMetadata?.uploadState === 'uploading');
38
- if (someAttachmentsUploading) {
39
- return addNotification(t('Wait until all attachments have uploaded'), 'error');
40
- }
41
- const attachmentsFromUploads = attachments
42
- .filter((att) => att.localMetadata?.uploadState !== 'failed' ||
43
- (findAndEnqueueURLsToEnrich && !att.og_scrape_url))
44
- .map((localAttachment) => {
45
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
46
- const { localMetadata: _, ...attachment } = localAttachment;
47
- return attachment;
48
- });
49
- const sendOptions = { ...options };
50
- let attachmentsFromLinkPreviews = [];
51
- if (findAndEnqueueURLsToEnrich) {
52
- // prevent showing link preview in MessageInput after the message has been sent
53
- cancelURLEnrichment();
54
- const someLinkPreviewsLoading = Array.from(linkPreviews.values()).some((linkPreview) => [LinkPreviewState.QUEUED, LinkPreviewState.LOADING].includes(linkPreview.state));
55
- const someLinkPreviewsDismissed = Array.from(linkPreviews.values()).some((linkPreview) => linkPreview.state === LinkPreviewState.DISMISSED);
56
- attachmentsFromLinkPreviews = someLinkPreviewsLoading
57
- ? []
58
- : Array.from(linkPreviews.values())
59
- .filter((linkPreview) => linkPreview.state === LinkPreviewState.LOADED &&
60
- !attachmentsFromUploads.find((attFromUpload) => attFromUpload.og_scrape_url === linkPreview.og_scrape_url))
61
- .map(
62
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
63
- ({ state: linkPreviewState, ...ogAttachment }) => ogAttachment);
64
- // scraped attachments are added only if all enrich queries has completed. Otherwise, the scraping has to be done server-side.
65
- sendOptions.skip_enrich_url =
66
- (!someLinkPreviewsLoading && attachmentsFromLinkPreviews.length > 0) ||
67
- someLinkPreviewsDismissed;
68
- }
69
- const newAttachments = [...attachmentsFromUploads, ...attachmentsFromLinkPreviews];
70
- // Instead of checking if a user is still mentioned every time the text changes,
71
- // just filter out non-mentioned users before submit, which is cheaper
72
- // and allows users to easily undo any accidental deletion
73
- const actualMentionedUsers = Array.from(new Set(mentioned_users.filter(({ id, name }) => text.includes(`@${id}`) || text.includes(`@${name}`))));
74
- const updatedMessage = {
75
- attachments: newAttachments,
76
- mentioned_users: actualMentionedUsers,
77
- text,
78
- };
79
- if (message && message.type !== 'error') {
80
- delete message.i18n;
15
+ const { localMessage, message, sendOptions } = composition;
16
+ if (messageComposer.editedMessage && localMessage.type !== 'error') {
81
17
  try {
82
- await editMessage({
83
- ...message,
84
- ...updatedMessage,
85
- ...customMessageData,
86
- }, sendOptions);
18
+ await editMessage(localMessage, sendOptions);
87
19
  clearEditingState?.();
88
- dispatch({ type: 'clear' });
89
20
  }
90
21
  catch (err) {
91
22
  addNotification(t('Edit message request failed'), 'error');
@@ -93,33 +24,34 @@ export const useSubmitHandler = (props, state, dispatch, numberOfUploads, enrich
93
24
  }
94
25
  else {
95
26
  try {
96
- dispatch({ type: 'clear' });
27
+ // todo: get rid of overrideSubmitHandler once MessageComposer supports submission flow
97
28
  if (overrideSubmitHandler) {
98
29
  await overrideSubmitHandler({
99
- ...updatedMessage,
100
- parent,
101
- }, channel.cid, customMessageData, sendOptions);
30
+ cid: messageComposer.channel.cid,
31
+ localMessage,
32
+ message,
33
+ sendOptions,
34
+ });
102
35
  }
103
36
  else {
104
- await sendMessage({
105
- ...updatedMessage,
106
- parent,
107
- }, customMessageData, sendOptions);
37
+ await sendMessage({ localMessage, message, options: sendOptions });
108
38
  }
109
- if (publishTypingEvent)
110
- await channel.stopTyping();
39
+ messageComposer.clear();
40
+ if (messageComposer.config.text.publishTypingEvents)
41
+ await messageComposer.channel.stopTyping();
111
42
  }
112
43
  catch (err) {
113
- dispatch({
114
- getNewText: () => text,
115
- type: 'setText',
116
- });
117
- actualMentionedUsers?.forEach((user) => {
118
- dispatch({ type: 'addMentionedUser', user });
119
- });
120
44
  addNotification(t('Send message request failed'), 'error');
121
45
  }
122
46
  }
123
- };
47
+ }, [
48
+ addNotification,
49
+ clearEditingState,
50
+ editMessage,
51
+ messageComposer,
52
+ overrideSubmitHandler,
53
+ sendMessage,
54
+ t,
55
+ ]);
124
56
  return { handleSubmit };
125
57
  };
@@ -1,28 +1 @@
1
- import type { UserResponse } from 'stream-chat';
2
- import type { ChannelActionContextValue } from '../../../context/ChannelActionContext';
3
- import type { ChatContextValue } from '../../../context/ChatContext';
4
- import type { TranslationContextValue } from '../../../context/TranslationContext';
5
- import type { DefaultStreamChatGenerics } from '../../../types/types';
6
- export declare const accentsMap: {
7
- [key: string]: string;
8
- };
9
- export declare const removeDiacritics: (text?: string) => string;
10
- export declare const calculateLevenshtein: (query: string, name: string) => number;
11
- export type SearchLocalUserParams<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
12
- ownUserId: string | undefined;
13
- query: string;
14
- text: string;
15
- users: UserResponse<StreamChatGenerics>[];
16
- useMentionsTransliteration?: boolean;
17
- };
18
- export declare const searchLocalUsers: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(params: SearchLocalUserParams<StreamChatGenerics>) => UserResponse<StreamChatGenerics>[];
19
- type CheckUploadPermissionsParams<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
20
- addNotification: ChannelActionContextValue<StreamChatGenerics>['addNotification'];
21
- file: File;
22
- getAppSettings: ChatContextValue<StreamChatGenerics>['getAppSettings'];
23
- t: TranslationContextValue['t'];
24
- uploadType: 'image' | 'file';
25
- };
26
- export declare const checkUploadPermissions: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(params: CheckUploadPermissionsParams<StreamChatGenerics>) => Promise<boolean>;
27
1
  export declare function prettifyFileSize(bytes: number, precision?: number): string;
28
- export {};
@@ -1,127 +1,3 @@
1
- import { DEFAULT_UPLOAD_SIZE_LIMIT_BYTES } from '../../../constants/limits';
2
- export const accentsMap = {
3
- a: 'á|à|ã|â|À|Á|Ã|Â',
4
- c: 'ç|Ç',
5
- e: 'é|è|ê|É|È|Ê',
6
- i: 'í|ì|î|Í|Ì|Î',
7
- n: 'ñ|Ñ',
8
- o: 'ó|ò|ô|ő|õ|Ó|Ò|Ô|Õ',
9
- u: 'ú|ù|û|ü|Ú|Ù|Û|Ü',
10
- };
11
- export const removeDiacritics = (text) => {
12
- if (!text)
13
- return '';
14
- return Object.keys(accentsMap).reduce((acc, current) => acc.replace(new RegExp(accentsMap[current], 'g'), current), text);
15
- };
16
- export const calculateLevenshtein = (query, name) => {
17
- if (query.length === 0)
18
- return name.length;
19
- if (name.length === 0)
20
- return query.length;
21
- const matrix = [];
22
- let i;
23
- for (i = 0; i <= name.length; i++) {
24
- matrix[i] = [i];
25
- }
26
- let j;
27
- for (j = 0; j <= query.length; j++) {
28
- matrix[0][j] = j;
29
- }
30
- for (i = 1; i <= name.length; i++) {
31
- for (j = 1; j <= query.length; j++) {
32
- if (name.charAt(i - 1) === query.charAt(j - 1)) {
33
- matrix[i][j] = matrix[i - 1][j - 1];
34
- }
35
- else {
36
- matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution
37
- Math.min(matrix[i][j - 1] + 1, // insertion
38
- matrix[i - 1][j] + 1)); // deletion
39
- }
40
- }
41
- }
42
- return matrix[name.length][query.length];
43
- };
44
- export const searchLocalUsers = (params) => {
45
- const { ownUserId, query, text, useMentionsTransliteration, users } = params;
46
- const matchingUsers = users.filter((user) => {
47
- if (user.id === ownUserId)
48
- return false;
49
- if (!query)
50
- return true;
51
- let updatedId = removeDiacritics(user.id).toLowerCase();
52
- let updatedName = removeDiacritics(user.name).toLowerCase();
53
- let updatedQuery = removeDiacritics(query).toLowerCase();
54
- if (useMentionsTransliteration) {
55
- (async () => {
56
- // eslint-disable-next-line import/no-extraneous-dependencies
57
- const { default: transliterate } = await import('@stream-io/transliterate');
58
- updatedName = transliterate(user.name || '').toLowerCase();
59
- updatedQuery = transliterate(query).toLowerCase();
60
- updatedId = transliterate(user.id).toLowerCase();
61
- })();
62
- }
63
- const maxDistance = 3;
64
- const lastDigits = text.slice(-(maxDistance + 1)).includes('@');
65
- if (updatedName) {
66
- const levenshtein = calculateLevenshtein(updatedQuery, updatedName);
67
- if (updatedName.includes(updatedQuery) ||
68
- (levenshtein <= maxDistance && lastDigits)) {
69
- return true;
70
- }
71
- }
72
- const levenshtein = calculateLevenshtein(updatedQuery, updatedId);
73
- return updatedId.includes(updatedQuery) || (levenshtein <= maxDistance && lastDigits);
74
- });
75
- return matchingUsers;
76
- };
77
- export const checkUploadPermissions = async (params) => {
78
- const { addNotification, file, getAppSettings, t, uploadType } = params;
79
- let appSettings = null;
80
- appSettings = await getAppSettings();
81
- const { allowed_file_extensions, allowed_mime_types, blocked_file_extensions, blocked_mime_types, size_limit, } = (uploadType === 'image'
82
- ? appSettings?.app?.image_upload_config
83
- : appSettings?.app?.file_upload_config) || {};
84
- const sendNotAllowedErrorNotification = () => addNotification(t(`Upload type: "{{ type }}" is not allowed`, {
85
- type: file.type || 'unknown type',
86
- }), 'error');
87
- if (allowed_file_extensions?.length) {
88
- const allowed = allowed_file_extensions.some((ext) => file.name.toLowerCase().endsWith(ext.toLowerCase()));
89
- if (!allowed) {
90
- sendNotAllowedErrorNotification();
91
- return false;
92
- }
93
- }
94
- if (blocked_file_extensions?.length) {
95
- const blocked = blocked_file_extensions.some((ext) => file.name.toLowerCase().endsWith(ext.toLowerCase()));
96
- if (blocked) {
97
- sendNotAllowedErrorNotification();
98
- return false;
99
- }
100
- }
101
- if (allowed_mime_types?.length) {
102
- const allowed = allowed_mime_types.some((type) => type.toLowerCase() === file.type?.toLowerCase());
103
- if (!allowed) {
104
- sendNotAllowedErrorNotification();
105
- return false;
106
- }
107
- }
108
- if (blocked_mime_types?.length) {
109
- const blocked = blocked_mime_types.some((type) => type.toLowerCase() === file.type?.toLowerCase());
110
- if (blocked) {
111
- sendNotAllowedErrorNotification();
112
- return false;
113
- }
114
- }
115
- const sizeLimit = size_limit || DEFAULT_UPLOAD_SIZE_LIMIT_BYTES;
116
- if (file.size && file.size > sizeLimit) {
117
- addNotification(t('File is too large: {{ size }}, maximum upload size is {{ limit }}', {
118
- limit: prettifyFileSize(sizeLimit),
119
- size: prettifyFileSize(file.size),
120
- }), 'error');
121
- return false;
122
- }
123
- return true;
124
- };
125
1
  export function prettifyFileSize(bytes, precision = 3) {
126
2
  const units = ['B', 'kB', 'MB', 'GB'];
127
3
  const exponent = Math.min(Math.floor(Math.log(bytes) / Math.log(1024)), units.length - 1);
@@ -2,7 +2,6 @@ export * from './AttachmentSelector';
2
2
  export { AttachmentPreviewList } from './AttachmentPreviewList';
3
3
  export type { AttachmentPreviewListProps, FileAttachmentPreviewProps, ImageAttachmentPreviewProps, AttachmentPreviewProps, UnsupportedAttachmentPreviewProps, VoiceRecordingPreviewProps, } from './AttachmentPreviewList';
4
4
  export * from './CooldownTimer';
5
- export * from './DefaultTriggerProvider';
6
5
  export * from './EditMessageForm';
7
6
  export * from './hooks';
8
7
  export * from './icons';
@@ -11,4 +10,4 @@ export * from './MessageInput';
11
10
  export * from './MessageInputFlat';
12
11
  export * from './QuotedMessagePreview';
13
12
  export * from './SendButton';
14
- export * from './types';
13
+ export { WithDragAndDropUpload } from './WithDragAndDropUpload';
@@ -1,7 +1,6 @@
1
1
  export * from './AttachmentSelector';
2
2
  export { AttachmentPreviewList } from './AttachmentPreviewList';
3
3
  export * from './CooldownTimer';
4
- export * from './DefaultTriggerProvider';
5
4
  export * from './EditMessageForm';
6
5
  export * from './hooks';
7
6
  export * from './icons';
@@ -10,4 +9,4 @@ export * from './MessageInput';
10
9
  export * from './MessageInputFlat';
11
10
  export * from './QuotedMessagePreview';
12
11
  export * from './SendButton';
13
- export * from './types';
12
+ export { WithDragAndDropUpload } from './WithDragAndDropUpload';
@@ -1,3 +1,2 @@
1
1
  import React from 'react';
2
- import type { DefaultStreamChatGenerics } from '../../types/types';
3
- export declare const ConnectionStatus: React.MemoExoticComponent<(<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>() => React.JSX.Element)>;
2
+ export declare const ConnectionStatus: React.MemoExoticComponent<() => React.JSX.Element>;
@@ -6,7 +6,7 @@ const UnMemoizedConnectionStatus = () => {
6
6
  const { t } = useTranslationContext('ConnectionStatus');
7
7
  const [online, setOnline] = useState(true);
8
8
  useEffect(() => {
9
- const connectionChanged = ({ online: onlineStatus = false, }) => {
9
+ const connectionChanged = ({ online: onlineStatus = false }) => {
10
10
  if (online !== onlineStatus) {
11
11
  setOnline(onlineStatus);
12
12
  }
@@ -1,4 +1,5 @@
1
- import React, { PropsWithChildren } from 'react';
1
+ import type { PropsWithChildren } from 'react';
2
+ import React from 'react';
2
3
  export type CustomNotificationProps = {
3
4
  type: string;
4
5
  active?: boolean;
@@ -1,7 +1,6 @@
1
1
  import React from 'react';
2
- import type { StreamMessage } from '../../context/ChannelStateContext';
3
- import type { DefaultStreamChatGenerics } from '../../types/types';
4
- export type GiphyPreviewMessageProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
5
- message: StreamMessage<StreamChatGenerics>;
2
+ import type { LocalMessage } from 'stream-chat';
3
+ export type GiphyPreviewMessageProps = {
4
+ message: LocalMessage;
6
5
  };
7
- export declare const GiphyPreviewMessage: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(props: GiphyPreviewMessageProps<StreamChatGenerics>) => React.JSX.Element;
6
+ export declare const GiphyPreviewMessage: (props: GiphyPreviewMessageProps) => React.JSX.Element;
@@ -1,17 +1,16 @@
1
1
  import React from 'react';
2
- import { ChannelActionContextValue } from '../../context/ChannelActionContext';
3
- import { InfiniteScrollProps } from '../InfiniteScrollPaginator/InfiniteScroll';
4
- import { MessageRenderer } from './renderMessages';
5
- import type { GroupStyle, ProcessMessagesParams } from './utils';
2
+ import type { ChannelActionContextValue } from '../../context/ChannelActionContext';
3
+ import type { InfiniteScrollProps } from '../InfiniteScrollPaginator/InfiniteScroll';
4
+ import type { LocalMessage } from 'stream-chat';
5
+ import type { MessageRenderer } from './renderMessages';
6
+ import type { GroupStyle, ProcessMessagesParams, RenderedMessage } from './utils';
6
7
  import type { MessageProps } from '../Message/types';
7
- import type { StreamMessage } from '../../context/ChannelStateContext';
8
- import type { DefaultStreamChatGenerics } from '../../types/types';
9
8
  type PropsDrilledToMessage = 'additionalMessageInputProps' | 'closeReactionSelectorOnClick' | 'customMessageActions' | 'disableQuotedMessages' | 'formatDate' | 'getDeleteMessageErrorNotification' | 'getFlagMessageErrorNotification' | 'getFlagMessageSuccessNotification' | 'getMarkMessageUnreadErrorNotification' | 'getMarkMessageUnreadSuccessNotification' | 'getMuteUserErrorNotification' | 'getMuteUserSuccessNotification' | 'getPinMessageErrorNotification' | 'Message' | 'messageActions' | 'onlySenderCanEdit' | 'onMentionsClick' | 'onMentionsHover' | 'onUserClick' | 'onUserHover' | 'openThread' | 'pinPermissions' | 'reactionDetailsSort' | 'renderText' | 'retrySendMessage' | 'sortReactions' | 'sortReactionDetails' | 'unsafeHTML';
10
- export type MessageListProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Partial<Pick<MessageProps<StreamChatGenerics>, PropsDrilledToMessage>> & {
9
+ export type MessageListProps = Partial<Pick<MessageProps, PropsDrilledToMessage>> & {
11
10
  /** Disables the injection of date separator components in MessageList, defaults to `false` */
12
11
  disableDateSeparator?: boolean;
13
12
  /** Callback function to set group styles for each message */
14
- groupStyles?: (message: StreamMessage<StreamChatGenerics>, previousMessage: StreamMessage<StreamChatGenerics>, nextMessage: StreamMessage<StreamChatGenerics>, noGroupByUser: boolean, maxTimeBetweenGroupedMessages?: number) => GroupStyle;
13
+ groupStyles?: (message: RenderedMessage, previousMessage: RenderedMessage, nextMessage: RenderedMessage, noGroupByUser: boolean, maxTimeBetweenGroupedMessages?: number) => GroupStyle;
15
14
  /** Whether the list has more items to load */
16
15
  hasMore?: boolean;
17
16
  /** Element to be rendered at the top of the thread message list. By default, these are the Message and ThreadStart components */
@@ -39,18 +38,18 @@ export type MessageListProps<StreamChatGenerics extends DefaultStreamChatGeneric
39
38
  /** The limit to use when paginating messages */
40
39
  messageLimit?: number;
41
40
  /** The messages to render in the list, defaults to messages stored in [ChannelStateContext](https://getstream.io/chat/docs/sdk/react/contexts/channel_state_context/) */
42
- messages?: StreamMessage<StreamChatGenerics>[];
41
+ messages?: LocalMessage[];
43
42
  /** If true, turns off message UI grouping by user */
44
43
  noGroupByUser?: boolean;
45
44
  /** Overrides the way MessageList renders messages */
46
- renderMessages?: MessageRenderer<StreamChatGenerics>;
45
+ renderMessages?: MessageRenderer;
47
46
  /** If true, `readBy` data supplied to the `Message` components will include all user read states per sent message */
48
47
  returnAllReadData?: boolean;
49
48
  /**
50
49
  * Allows to review changes introduced to messages array on per message basis (e.g. date separator injection before a message).
51
50
  * The array returned from the function is appended to the array of messages that are later rendered into React elements in the `MessageList`.
52
51
  */
53
- reviewProcessedMessage?: ProcessMessagesParams<StreamChatGenerics>['reviewProcessedMessage'];
52
+ reviewProcessedMessage?: ProcessMessagesParams['reviewProcessedMessage'];
54
53
  /**
55
54
  * The pixel threshold under which the message list is considered to be so near to the bottom,
56
55
  * so that if a new message is delivered, the list will be scrolled to the absolute bottom.
@@ -74,5 +73,5 @@ export type MessageListProps<StreamChatGenerics extends DefaultStreamChatGeneric
74
73
  * - [ComponentContext](https://getstream.io/chat/docs/sdk/react/contexts/component_context/)
75
74
  * - [TypingContext](https://getstream.io/chat/docs/sdk/react/contexts/typing_context/)
76
75
  */
77
- export declare const MessageList: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(props: MessageListProps<StreamChatGenerics>) => React.JSX.Element;
76
+ export declare const MessageList: (props: MessageListProps) => React.JSX.Element;
78
77
  export {};
@@ -5,14 +5,14 @@ import { useMarkRead } from './hooks/useMarkRead';
5
5
  import { MessageNotification as DefaultMessageNotification } from './MessageNotification';
6
6
  import { MessageListNotifications as DefaultMessageListNotifications } from './MessageListNotifications';
7
7
  import { UnreadMessagesNotification as DefaultUnreadMessagesNotification } from './UnreadMessagesNotification';
8
- import { useChannelActionContext, } from '../../context/ChannelActionContext';
9
- import { useChannelStateContext, } from '../../context/ChannelStateContext';
8
+ import { useChannelActionContext } from '../../context/ChannelActionContext';
9
+ import { useChannelStateContext } from '../../context/ChannelStateContext';
10
10
  import { DialogManagerProvider } from '../../context';
11
11
  import { useChatContext } from '../../context/ChatContext';
12
12
  import { useComponentContext } from '../../context/ComponentContext';
13
13
  import { MessageListContextProvider } from '../../context/MessageListContext';
14
14
  import { EmptyStateIndicator as DefaultEmptyStateIndicator } from '../EmptyStateIndicator';
15
- import { InfiniteScroll, } from '../InfiniteScrollPaginator/InfiniteScroll';
15
+ import { InfiniteScroll } from '../InfiniteScrollPaginator/InfiniteScroll';
16
16
  import { LoadingIndicator as DefaultLoadingIndicator } from '../Loading';
17
17
  import { defaultPinPermissions, MESSAGE_ACTIONS } from '../Message/utils';
18
18
  import { TypingIndicator as DefaultTypingIndicator } from '../TypingIndicator';
@@ -30,7 +30,7 @@ const MessageListWithContext = (props) => {
30
30
  hasMoreNewer,
31
31
  listElement,
32
32
  loadMoreScrollThreshold,
33
- messages,
33
+ messages, // todo: is it correct to base the scroll logic on an array that does not contain date separators or intro?
34
34
  scrolledUpThreshold: props.scrolledUpThreshold,
35
35
  suppressAutoscroll,
36
36
  });
@@ -1,4 +1,5 @@
1
- import React, { PropsWithChildren } from 'react';
1
+ import type { PropsWithChildren } from 'react';
2
+ import React from 'react';
2
3
  export type MessageNotificationProps = PropsWithChildren<{
3
4
  /** button click event handler */
4
5
  onClick: React.MouseEventHandler;
@@ -1,19 +1,20 @@
1
- import React, { RefObject } from 'react';
2
- import { ScrollSeekConfiguration, ScrollSeekPlaceholderProps, VirtuosoHandle, VirtuosoProps } from 'react-virtuoso';
3
- import { GroupStyle, ProcessMessagesParams } from './utils';
4
- import { MessageProps, MessageUIComponentProps } from '../Message';
5
- import { ChannelActionContextValue } from '../../context/ChannelActionContext';
6
- import { ChannelStateContextValue, StreamMessage } from '../../context/ChannelStateContext';
7
- import { ChatContextValue } from '../../context/ChatContext';
8
- import { ComponentContextValue } from '../../context/ComponentContext';
9
- import type { UserResponse } from 'stream-chat';
10
- import type { DefaultStreamChatGenerics, UnknownType } from '../../types/types';
1
+ import type { RefObject } from 'react';
2
+ import React from 'react';
3
+ import type { ScrollSeekConfiguration, ScrollSeekPlaceholderProps, VirtuosoHandle, VirtuosoProps } from 'react-virtuoso';
4
+ import type { GroupStyle, ProcessMessagesParams, RenderedMessage } from './utils';
5
+ import type { MessageProps, MessageUIComponentProps } from '../Message';
6
+ import type { ChannelActionContextValue } from '../../context/ChannelActionContext';
7
+ import type { ChannelStateContextValue } from '../../context/ChannelStateContext';
8
+ import type { ChatContextValue } from '../../context/ChatContext';
9
+ import type { ComponentContextValue } from '../../context/ComponentContext';
10
+ import type { LocalMessage, UserResponse } from 'stream-chat';
11
+ import type { UnknownType } from '../../types/types';
11
12
  type PropsDrilledToMessage = 'additionalMessageInputProps' | 'customMessageActions' | 'formatDate' | 'messageActions' | 'openThread' | 'reactionDetailsSort' | 'sortReactions' | 'sortReactionDetails';
12
13
  type VirtualizedMessageListPropsForContext = PropsDrilledToMessage | 'closeReactionSelectorOnClick' | 'customMessageRenderer' | 'head' | 'loadingMore' | 'Message' | 'shouldGroupByUser' | 'threadList';
13
14
  /**
14
15
  * Context object provided to some Virtuoso props that are functions (components rendered by Virtuoso and other functions)
15
16
  */
16
- export type VirtuosoContext<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Required<Pick<ComponentContextValue<StreamChatGenerics>, 'DateSeparator' | 'MessageSystem' | 'UnreadMessagesSeparator'>> & Pick<VirtualizedMessageListProps<StreamChatGenerics>, VirtualizedMessageListPropsForContext> & Pick<ChatContextValue<StreamChatGenerics>, 'customClasses'> & {
17
+ export type VirtuosoContext = Required<Pick<ComponentContextValue, 'DateSeparator' | 'MessageSystem' | 'UnreadMessagesSeparator'>> & Pick<VirtualizedMessageListProps, VirtualizedMessageListPropsForContext> & Pick<ChatContextValue, 'customClasses'> & {
17
18
  /** Latest received message id in the current channel */
18
19
  lastReceivedMessageId: string | null | undefined;
19
20
  /** Object mapping between the message ID and a string representing the position in the group of a sequence of messages posted by the same user. */
@@ -21,9 +22,9 @@ export type VirtuosoContext<StreamChatGenerics extends DefaultStreamChatGenerics
21
22
  /** Number of messages prepended before the first page of messages. This is needed to calculate the virtual position in the virtual list. */
22
23
  numItemsPrepended: number;
23
24
  /** Mapping of message ID of own messages to the array of users, who read the given message */
24
- ownMessagesReadByOthers: Record<string, UserResponse<StreamChatGenerics>[]>;
25
+ ownMessagesReadByOthers: Record<string, UserResponse[]>;
25
26
  /** The original message list enriched with date separators, omitted deleted messages or giphy previews. */
26
- processedMessages: StreamMessage<StreamChatGenerics>[];
27
+ processedMessages: RenderedMessage[];
27
28
  /** Instance of VirtuosoHandle object providing the API to navigate in the virtualized list by various scroll actions. */
28
29
  virtuosoRef: RefObject<VirtuosoHandle | null>;
29
30
  /** Message id which was marked as unread. ALl the messages following this message are considered unrea. */
@@ -37,14 +38,14 @@ export type VirtuosoContext<StreamChatGenerics extends DefaultStreamChatGenerics
37
38
  /** The number of unread messages in the current channel. */
38
39
  unreadMessageCount?: number;
39
40
  };
40
- export type VirtualizedMessageListProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Partial<Pick<MessageProps<StreamChatGenerics>, PropsDrilledToMessage>> & {
41
+ export type VirtualizedMessageListProps = Partial<Pick<MessageProps, PropsDrilledToMessage>> & {
41
42
  /** Additional props to be passed the underlying [`react-virtuoso` virtualized list dependency](https://virtuoso.dev/virtuoso-api-reference/) */
42
- additionalVirtuosoProps?: VirtuosoProps<UnknownType, VirtuosoContext<StreamChatGenerics>>;
43
+ additionalVirtuosoProps?: VirtuosoProps<UnknownType, VirtuosoContext>;
43
44
  channelUnreadUiState?: ChannelStateContextValue['channelUnreadUiState'];
44
45
  /** If true, picking a reaction from the `ReactionSelector` component will close the selector */
45
46
  closeReactionSelectorOnClick?: boolean;
46
47
  /** Custom render function, if passed, certain UI props are ignored */
47
- customMessageRenderer?: (messageList: StreamMessage<StreamChatGenerics>[], index: number) => React.ReactElement;
48
+ customMessageRenderer?: (messageList: RenderedMessage[], index: number) => React.ReactElement;
48
49
  /** @deprecated Use additionalVirtuosoProps.defaultItemHeight instead. Will be removed with next major release - `v11.0.0`.
49
50
  * If set, the default item height is used for the calculation of the total list height. Use if you expect messages with a lot of height variance
50
51
  * */
@@ -52,7 +53,7 @@ export type VirtualizedMessageListProps<StreamChatGenerics extends DefaultStream
52
53
  /** Disables the injection of date separator components in MessageList, defaults to `true` */
53
54
  disableDateSeparator?: boolean;
54
55
  /** Callback function to set group styles for each message */
55
- groupStyles?: (message: StreamMessage<StreamChatGenerics>, previousMessage: StreamMessage<StreamChatGenerics>, nextMessage: StreamMessage<StreamChatGenerics>, noGroupByUser: boolean, maxTimeBetweenGroupedMessages?: number) => GroupStyle;
56
+ groupStyles?: (message: RenderedMessage, previousMessage: RenderedMessage, nextMessage: RenderedMessage, noGroupByUser: boolean, maxTimeBetweenGroupedMessages?: number) => GroupStyle;
56
57
  /** Whether or not the list has more items to load */
57
58
  hasMore?: boolean;
58
59
  /** Whether or not the list has newer items to load */
@@ -79,11 +80,11 @@ export type VirtualizedMessageListProps<StreamChatGenerics extends DefaultStream
79
80
  /** Maximum time in milliseconds that should occur between messages to still consider them grouped together */
80
81
  maxTimeBetweenGroupedMessages?: number;
81
82
  /** Custom UI component to display a message, defaults to and accepts same props as [MessageSimple](https://github.com/GetStream/stream-chat-react/blob/master/src/components/Message/MessageSimple.tsx) */
82
- Message?: React.ComponentType<MessageUIComponentProps<StreamChatGenerics>>;
83
+ Message?: React.ComponentType<MessageUIComponentProps>;
83
84
  /** The limit to use when paginating messages */
84
85
  messageLimit?: number;
85
86
  /** Optional prop to override the messages available from [ChannelStateContext](https://getstream.io/chat/docs/sdk/react/contexts/channel_state_context/) */
86
- messages?: StreamMessage<StreamChatGenerics>[];
87
+ messages?: LocalMessage[];
87
88
  /**
88
89
  * @deprecated Use additionalVirtuosoProps.overscan instead. Will be removed with next major release - `v11.0.0`.
89
90
  * The amount of extra content the list should render in addition to what's necessary to fill in the viewport
@@ -95,7 +96,7 @@ export type VirtualizedMessageListProps<StreamChatGenerics extends DefaultStream
95
96
  * Allows to review changes introduced to messages array on per message basis (e.g. date separator injected before a message).
96
97
  * The array returned from the function is appended to the array of messages that are later rendered into React elements in the `VirtualizedMessageList`.
97
98
  */
98
- reviewProcessedMessage?: ProcessMessagesParams<StreamChatGenerics>['reviewProcessedMessage'];
99
+ reviewProcessedMessage?: ProcessMessagesParams['reviewProcessedMessage'];
99
100
  /**
100
101
  * @deprecated Pass additionalVirtuosoProps.scrollSeekConfiguration and specify the placeholder in additionalVirtuosoProps.components.ScrollSeekPlaceholder instead. Will be removed with next major release - `v11.0.0`.
101
102
  * Performance improvement by showing placeholders if user scrolls fast through list.
@@ -135,5 +136,5 @@ export type VirtualizedMessageListProps<StreamChatGenerics extends DefaultStream
135
136
  * The VirtualizedMessageList component renders a list of messages in a virtualized list.
136
137
  * It is a consumer of the React contexts set in [Channel](https://github.com/GetStream/stream-chat-react/blob/master/src/components/Channel/Channel.tsx).
137
138
  */
138
- export declare function VirtualizedMessageList<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(props: VirtualizedMessageListProps<StreamChatGenerics>): React.JSX.Element;
139
+ export declare function VirtualizedMessageList(props: VirtualizedMessageListProps): React.JSX.Element;
139
140
  export {};
@@ -1,5 +1,5 @@
1
1
  import React, { useCallback, useEffect, useMemo, useRef } from 'react';
2
- import { Virtuoso, } from 'react-virtuoso';
2
+ import { Virtuoso } from 'react-virtuoso';
3
3
  import { GiphyPreviewMessage as DefaultGiphyPreviewMessage } from './GiphyPreviewMessage';
4
4
  import { useLastReadData } from './hooks';
5
5
  import { useGiphyPreview, useMessageSetKey, useNewMessageNotification, usePrependedMessagesCount, useScrollToBottomOnNewMessage, useShouldForceScrollToBottom, useUnreadMessagesNotificationVirtualized, } from './hooks/VirtualizedMessageList';
@@ -7,7 +7,7 @@ import { useMarkRead } from './hooks/useMarkRead';
7
7
  import { MessageNotification as DefaultMessageNotification } from './MessageNotification';
8
8
  import { MessageListNotifications as DefaultMessageListNotifications } from './MessageListNotifications';
9
9
  import { MessageListMainPanel as DefaultMessageListMainPanel } from './MessageListMainPanel';
10
- import { getGroupStyles, getLastReceived, processMessages, } from './utils';
10
+ import { getGroupStyles, getLastReceived, processMessages } from './utils';
11
11
  import { MessageSimple } from '../Message';
12
12
  import { UnreadMessagesNotification as DefaultUnreadMessagesNotification } from './UnreadMessagesNotification';
13
13
  import { calculateFirstItemIndex, calculateItemIndex, EmptyPlaceholder, Header, Item, makeItemsRenderedHandler, messageRenderer, } from './VirtualizedMessageListComponents';
@@ -15,10 +15,10 @@ import { UnreadMessagesSeparator as DefaultUnreadMessagesSeparator } from '../Me
15
15
  import { DateSeparator as DefaultDateSeparator } from '../DateSeparator';
16
16
  import { EventComponent as DefaultMessageSystem } from '../EventComponent';
17
17
  import { DialogManagerProvider } from '../../context';
18
- import { useChannelActionContext, } from '../../context/ChannelActionContext';
19
- import { useChannelStateContext, } from '../../context/ChannelStateContext';
18
+ import { useChannelActionContext } from '../../context/ChannelActionContext';
19
+ import { useChannelStateContext } from '../../context/ChannelStateContext';
20
20
  import { useChatContext } from '../../context/ChatContext';
21
- import { useComponentContext, } from '../../context/ComponentContext';
21
+ import { useComponentContext } from '../../context/ComponentContext';
22
22
  import { VirtualizedMessageListContextProvider } from '../../context/VirtualizedMessageListContext';
23
23
  import { DEFAULT_NEXT_CHANNEL_PAGE_SIZE } from '../../constants/limits';
24
24
  function captureResizeObserverExceededError(e) {
@@ -110,7 +110,7 @@ const VirtualizedMessageListWithContext = (props) => {
110
110
  const groupStylesFn = groupStyles || getGroupStyles;
111
111
  const messageGroupStyles = useMemo(() => processedMessages.reduce((acc, message, i) => {
112
112
  const style = groupStylesFn(message, processedMessages[i - 1], processedMessages[i + 1], !shouldGroupByUser, maxTimeBetweenGroupedMessages);
113
- if (style)
113
+ if (style && message.id)
114
114
  acc[message.id] = style;
115
115
  return acc;
116
116
  }, {}),