stream-chat-react 12.15.0 → 13.0.0-rc.2

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 (473) hide show
  1. package/dist/components/AIStateIndicator/AIStateIndicator.d.ts +4 -5
  2. package/dist/components/AIStateIndicator/hooks/useAIState.d.ts +2 -3
  3. package/dist/components/Attachment/Attachment.d.ts +8 -9
  4. package/dist/components/Attachment/Attachment.js +6 -5
  5. package/dist/components/Attachment/AttachmentActions.d.ts +2 -3
  6. package/dist/components/Attachment/AttachmentContainer.d.ts +15 -15
  7. package/dist/components/Attachment/AttachmentContainer.js +2 -2
  8. package/dist/components/Attachment/Audio.d.ts +3 -4
  9. package/dist/components/Attachment/Card.d.ts +1 -1
  10. package/dist/components/Attachment/FileAttachment.d.ts +3 -4
  11. package/dist/components/Attachment/FileAttachment.js +1 -1
  12. package/dist/components/Attachment/UnsupportedAttachment.d.ts +3 -4
  13. package/dist/components/Attachment/UnsupportedAttachment.js +1 -1
  14. package/dist/components/Attachment/VoiceRecording.d.ts +4 -5
  15. package/dist/components/Attachment/components/FileSizeIndicator.d.ts +1 -1
  16. package/dist/components/Attachment/components/FileSizeIndicator.js +4 -2
  17. package/dist/components/Attachment/utils.d.ts +8 -22
  18. package/dist/components/Attachment/utils.js +3 -18
  19. package/dist/components/Avatar/Avatar.d.ts +3 -4
  20. package/dist/components/Avatar/ChannelAvatar.d.ts +3 -4
  21. package/dist/components/Avatar/ChannelAvatar.js +1 -1
  22. package/dist/components/Avatar/GroupAvatar.d.ts +2 -2
  23. package/dist/components/Channel/Channel.d.ts +18 -43
  24. package/dist/components/Channel/Channel.js +25 -88
  25. package/dist/components/Channel/channelState.d.ts +17 -18
  26. package/dist/components/Channel/hooks/useChannelContainerClasses.d.ts +2 -3
  27. package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts +2 -3
  28. package/dist/components/Channel/hooks/useCreateChannelStateContext.js +1 -15
  29. package/dist/components/Channel/hooks/useCreateTypingContext.d.ts +1 -2
  30. package/dist/components/Channel/hooks/useEditMessageHandler.d.ts +3 -4
  31. package/dist/components/Channel/hooks/useMentionsHandlers.d.ts +3 -4
  32. package/dist/components/Channel/utils.d.ts +8 -6
  33. package/dist/components/Channel/utils.js +1 -0
  34. package/dist/components/ChannelHeader/ChannelHeader.d.ts +2 -3
  35. package/dist/components/ChannelList/ChannelList.d.ts +31 -30
  36. package/dist/components/ChannelList/ChannelList.js +8 -10
  37. package/dist/components/ChannelList/ChannelListMessenger.d.ts +6 -6
  38. package/dist/components/ChannelList/hooks/useChannelDeletedListener.d.ts +1 -2
  39. package/dist/components/ChannelList/hooks/useChannelHiddenListener.d.ts +1 -2
  40. package/dist/components/ChannelList/hooks/useChannelListShape.d.ts +44 -44
  41. package/dist/components/ChannelList/hooks/useChannelListShape.js +0 -2
  42. package/dist/components/ChannelList/hooks/useChannelMembershipState.d.ts +3 -3
  43. package/dist/components/ChannelList/hooks/useChannelTruncatedListener.d.ts +1 -2
  44. package/dist/components/ChannelList/hooks/useChannelUpdatedListener.d.ts +1 -2
  45. package/dist/components/ChannelList/hooks/useChannelVisibleListener.d.ts +1 -2
  46. package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.d.ts +1 -2
  47. package/dist/components/ChannelList/hooks/useMessageNewListener.d.ts +1 -2
  48. package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.d.ts +1 -2
  49. package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.d.ts +1 -2
  50. package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.d.ts +1 -2
  51. package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts +7 -8
  52. package/dist/components/ChannelList/hooks/usePaginatedChannels.js +3 -3
  53. package/dist/components/ChannelList/hooks/useSelectedChannelState.d.ts +7 -7
  54. package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.d.ts +1 -2
  55. package/dist/components/ChannelList/utils.d.ts +20 -21
  56. package/dist/components/ChannelList/utils.js +2 -2
  57. package/dist/components/ChannelPreview/ChannelPreview.d.ts +15 -16
  58. package/dist/components/ChannelPreview/ChannelPreview.js +1 -1
  59. package/dist/components/ChannelPreview/ChannelPreviewActionButtons.d.ts +4 -4
  60. package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts +1 -2
  61. package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.d.ts +3 -4
  62. package/dist/components/ChannelPreview/hooks/useIsChannelMuted.d.ts +1 -2
  63. package/dist/components/ChannelPreview/hooks/useMessageDeliveryStatus.d.ts +5 -7
  64. package/dist/components/ChannelPreview/icons.d.ts +1 -1
  65. package/dist/components/ChannelPreview/utils.d.ts +7 -7
  66. package/dist/components/ChannelSearch/ChannelSearch.d.ts +5 -6
  67. package/dist/components/ChannelSearch/ChannelSearch.js +2 -2
  68. package/dist/components/ChannelSearch/SearchBar.d.ts +1 -1
  69. package/dist/components/ChannelSearch/SearchBar.js +1 -1
  70. package/dist/components/ChannelSearch/SearchResults.d.ts +13 -14
  71. package/dist/components/ChannelSearch/SearchResults.js +1 -1
  72. package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts +17 -18
  73. package/dist/components/ChannelSearch/hooks/useChannelSearch.js +2 -6
  74. package/dist/components/ChannelSearch/utils.d.ts +2 -3
  75. package/dist/components/Chat/Chat.d.ts +9 -9
  76. package/dist/components/Chat/hooks/useChannelsQueryState.d.ts +1 -1
  77. package/dist/components/Chat/hooks/useChat.d.ts +10 -10
  78. package/dist/components/Chat/hooks/useChat.js +3 -3
  79. package/dist/components/Chat/hooks/useCreateChatClient.d.ts +4 -4
  80. package/dist/components/Chat/hooks/useCreateChatContext.d.ts +1 -2
  81. package/dist/components/Dialog/DialogAnchor.d.ts +4 -3
  82. package/dist/components/Dialog/DialogAnchor.js +2 -2
  83. package/dist/components/Dialog/DialogMenu.d.ts +2 -1
  84. package/dist/components/Dialog/DialogPortal.d.ts +2 -1
  85. package/dist/components/Dialog/FormDialog.d.ts +2 -1
  86. package/dist/components/Dialog/FormDialog.js +1 -1
  87. package/dist/components/Dialog/PromptDialog.d.ts +2 -1
  88. package/dist/components/DragAndDrop/DragAndDropContainer.d.ts +2 -1
  89. package/dist/components/EventComponent/EventComponent.d.ts +7 -6
  90. package/dist/components/Form/FieldError.d.ts +2 -1
  91. package/dist/components/Form/SwitchField.d.ts +2 -1
  92. package/dist/components/Form/SwitchField.js +1 -1
  93. package/dist/components/Gallery/Gallery.d.ts +5 -5
  94. package/dist/components/Gallery/Image.d.ts +6 -5
  95. package/dist/components/Gallery/ModalGallery.d.ts +3 -4
  96. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts +2 -1
  97. package/dist/components/InfiniteScrollPaginator/InfiniteScrollPaginator.d.ts +2 -1
  98. package/dist/components/LoadMore/LoadMoreButton.d.ts +2 -1
  99. package/dist/components/LoadMore/LoadMorePaginator.d.ts +3 -2
  100. package/dist/components/LoadMore/LoadMorePaginator.js +1 -1
  101. package/dist/components/MediaRecorder/AudioRecorder/AudioRecorder.js +3 -2
  102. package/dist/components/MediaRecorder/AudioRecorder/AudioRecordingInProgress.js +1 -1
  103. package/dist/components/MediaRecorder/RecordingPermissionDeniedNotification.d.ts +1 -1
  104. package/dist/components/MediaRecorder/classes/MediaRecorderController.d.ts +11 -23
  105. package/dist/components/MediaRecorder/hooks/useMediaRecorder.d.ts +8 -8
  106. package/dist/components/MediaRecorder/hooks/useMediaRecorder.js +6 -4
  107. package/dist/components/MediaRecorder/observable/BehaviorSubject.d.ts +2 -2
  108. package/dist/components/MediaRecorder/observable/Observable.d.ts +1 -1
  109. package/dist/components/MediaRecorder/observable/Subject.d.ts +3 -2
  110. package/dist/components/Message/FixedHeightMessage.d.ts +4 -5
  111. package/dist/components/Message/Message.d.ts +1 -2
  112. package/dist/components/Message/MessageDeleted.d.ts +4 -5
  113. package/dist/components/Message/MessageEditedTimestamp.d.ts +2 -3
  114. package/dist/components/Message/MessageErrorText.d.ts +4 -5
  115. package/dist/components/Message/MessageErrorText.js +2 -2
  116. package/dist/components/Message/MessageOptions.d.ts +3 -3
  117. package/dist/components/Message/MessageRepliesCountButton.d.ts +2 -1
  118. package/dist/components/Message/MessageSimple.d.ts +1 -2
  119. package/dist/components/Message/MessageSimple.js +8 -10
  120. package/dist/components/Message/MessageStatus.d.ts +3 -4
  121. package/dist/components/Message/MessageText.d.ts +6 -6
  122. package/dist/components/Message/MessageTimestamp.d.ts +4 -5
  123. package/dist/components/Message/QuotedMessage.d.ts +2 -3
  124. package/dist/components/Message/QuotedMessage.js +1 -1
  125. package/dist/components/Message/StreamedMessageText.d.ts +3 -4
  126. package/dist/components/Message/hooks/useActionHandler.d.ts +2 -3
  127. package/dist/components/Message/hooks/useActionHandler.js +1 -1
  128. package/dist/components/Message/hooks/useDeleteHandler.d.ts +4 -5
  129. package/dist/components/Message/hooks/useFlagHandler.d.ts +5 -6
  130. package/dist/components/Message/hooks/useMarkUnreadHandler.d.ts +5 -6
  131. package/dist/components/Message/hooks/useMentionsHandler.d.ts +6 -8
  132. package/dist/components/Message/hooks/useMessageTextStreaming.d.ts +2 -3
  133. package/dist/components/Message/hooks/useMuteHandler.d.ts +5 -7
  134. package/dist/components/Message/hooks/useMuteHandler.js +1 -1
  135. package/dist/components/Message/hooks/useOpenThreadHandler.d.ts +2 -3
  136. package/dist/components/Message/hooks/usePinHandler.d.ts +4 -5
  137. package/dist/components/Message/hooks/usePinHandler.js +1 -1
  138. package/dist/components/Message/hooks/useReactionHandler.d.ts +3 -4
  139. package/dist/components/Message/hooks/useReactionHandler.js +2 -4
  140. package/dist/components/Message/hooks/useReactionsFetcher.d.ts +5 -7
  141. package/dist/components/Message/hooks/useRetryHandler.d.ts +2 -3
  142. package/dist/components/Message/hooks/useRetryHandler.js +1 -1
  143. package/dist/components/Message/hooks/useUserHandler.d.ts +5 -6
  144. package/dist/components/Message/hooks/useUserRole.d.ts +2 -3
  145. package/dist/components/Message/hooks/useUserRole.js +1 -1
  146. package/dist/components/Message/icons.d.ts +2 -2
  147. package/dist/components/Message/icons.js +1 -1
  148. package/dist/components/Message/renderText/componentRenderers/Anchor.d.ts +2 -1
  149. package/dist/components/Message/renderText/componentRenderers/Emoji.d.ts +1 -1
  150. package/dist/components/Message/renderText/componentRenderers/Mention.d.ts +5 -5
  151. package/dist/components/Message/renderText/componentRenderers/Mention.js +1 -1
  152. package/dist/components/Message/renderText/rehypePlugins/mentionsMarkdownPlugin.d.ts +1 -2
  153. package/dist/components/Message/renderText/renderText.d.ts +6 -6
  154. package/dist/components/Message/renderText/types.d.ts +1 -1
  155. package/dist/components/Message/types.d.ts +27 -28
  156. package/dist/components/Message/utils.d.ts +21 -22
  157. package/dist/components/Message/utils.js +5 -4
  158. package/dist/components/MessageActions/CustomMessageActionsList.d.ts +6 -7
  159. package/dist/components/MessageActions/MessageActions.d.ts +6 -5
  160. package/dist/components/MessageActions/MessageActions.js +1 -1
  161. package/dist/components/MessageActions/MessageActionsBox.d.ts +5 -5
  162. package/dist/components/MessageActions/MessageActionsBox.js +4 -3
  163. package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.d.ts +1 -1
  164. package/dist/components/MessageBounce/MessageBounceModal.d.ts +4 -3
  165. package/dist/components/MessageBounce/MessageBouncePrompt.d.ts +1 -2
  166. package/dist/components/MessageInput/AttachmentPreviewList/AttachmentPreviewList.d.ts +11 -11
  167. package/dist/components/MessageInput/AttachmentPreviewList/AttachmentPreviewList.js +17 -14
  168. package/dist/components/MessageInput/AttachmentPreviewList/FileAttachmentPreview.d.ts +4 -12
  169. package/dist/components/MessageInput/AttachmentPreviewList/FileAttachmentPreview.js +8 -5
  170. package/dist/components/MessageInput/AttachmentPreviewList/ImageAttachmentPreview.d.ts +4 -5
  171. package/dist/components/MessageInput/AttachmentPreviewList/ImageAttachmentPreview.js +2 -2
  172. package/dist/components/MessageInput/AttachmentPreviewList/UnsupportedAttachmentPreview.d.ts +7 -5
  173. package/dist/components/MessageInput/AttachmentPreviewList/UnsupportedAttachmentPreview.js +5 -2
  174. package/dist/components/MessageInput/AttachmentPreviewList/VoiceRecordingPreview.d.ts +4 -5
  175. package/dist/components/MessageInput/AttachmentPreviewList/VoiceRecordingPreview.js +5 -2
  176. package/dist/components/MessageInput/AttachmentPreviewList/index.d.ts +1 -1
  177. package/dist/components/MessageInput/AttachmentPreviewList/types.d.ts +3 -4
  178. package/dist/components/MessageInput/AttachmentSelector.d.ts +1 -2
  179. package/dist/components/MessageInput/AttachmentSelector.js +5 -3
  180. package/dist/components/MessageInput/EditMessageForm.d.ts +3 -2
  181. package/dist/components/MessageInput/EditMessageForm.js +30 -6
  182. package/dist/components/MessageInput/LinkPreviewList.d.ts +6 -4
  183. package/dist/components/MessageInput/LinkPreviewList.js +24 -10
  184. package/dist/components/MessageInput/MessageInput.d.ts +23 -45
  185. package/dist/components/MessageInput/MessageInput.js +24 -17
  186. package/dist/components/MessageInput/MessageInputFlat.d.ts +1 -2
  187. package/dist/components/MessageInput/MessageInputFlat.js +14 -39
  188. package/dist/components/MessageInput/QuotedMessagePreview.d.ts +4 -7
  189. package/dist/components/MessageInput/QuotedMessagePreview.js +22 -16
  190. package/dist/components/MessageInput/SendButton.d.ts +4 -5
  191. package/dist/components/MessageInput/SendButton.js +6 -2
  192. package/dist/components/MessageInput/WithDragAndDropUpload.d.ts +4 -3
  193. package/dist/components/MessageInput/WithDragAndDropUpload.js +20 -9
  194. package/dist/components/MessageInput/hooks/index.d.ts +5 -1
  195. package/dist/components/MessageInput/hooks/index.js +5 -1
  196. package/dist/components/MessageInput/hooks/useAttachmentManagerState.d.ts +10 -0
  197. package/dist/components/MessageInput/hooks/useAttachmentManagerState.js +19 -0
  198. package/dist/components/MessageInput/hooks/useCanCreatePoll.d.ts +1 -0
  199. package/dist/components/MessageInput/hooks/useCanCreatePoll.js +10 -0
  200. package/dist/components/MessageInput/hooks/useCooldownTimer.d.ts +2 -3
  201. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts +1 -2
  202. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +1 -55
  203. package/dist/components/MessageInput/hooks/useMessageComposer.d.ts +2 -0
  204. package/dist/components/MessageInput/hooks/useMessageComposer.js +80 -0
  205. package/dist/components/MessageInput/hooks/useMessageComposerHasSendableData.d.ts +1 -0
  206. package/dist/components/MessageInput/hooks/useMessageComposerHasSendableData.js +8 -0
  207. package/dist/components/MessageInput/hooks/useMessageInputControls.d.ts +12 -0
  208. package/dist/components/MessageInput/hooks/useMessageInputControls.js +23 -0
  209. package/dist/components/MessageInput/hooks/useMessageInputText.d.ts +1 -5
  210. package/dist/components/MessageInput/hooks/useMessageInputText.js +19 -53
  211. package/dist/components/MessageInput/hooks/usePasteHandler.d.ts +1 -3
  212. package/dist/components/MessageInput/hooks/usePasteHandler.js +6 -8
  213. package/dist/components/MessageInput/hooks/useSubmitHandler.d.ts +2 -6
  214. package/dist/components/MessageInput/hooks/useSubmitHandler.js +30 -98
  215. package/dist/components/MessageInput/hooks/utils.d.ts +0 -27
  216. package/dist/components/MessageInput/hooks/utils.js +0 -124
  217. package/dist/components/MessageInput/index.d.ts +0 -2
  218. package/dist/components/MessageInput/index.js +0 -2
  219. package/dist/components/MessageList/ConnectionStatus.d.ts +1 -2
  220. package/dist/components/MessageList/ConnectionStatus.js +1 -1
  221. package/dist/components/MessageList/CustomNotification.d.ts +2 -1
  222. package/dist/components/MessageList/GiphyPreviewMessage.d.ts +4 -5
  223. package/dist/components/MessageList/MessageList.d.ts +11 -12
  224. package/dist/components/MessageList/MessageList.js +4 -4
  225. package/dist/components/MessageList/MessageNotification.d.ts +2 -1
  226. package/dist/components/MessageList/VirtualizedMessageList.d.ts +22 -21
  227. package/dist/components/MessageList/VirtualizedMessageList.js +6 -6
  228. package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts +10 -10
  229. package/dist/components/MessageList/VirtualizedMessageListComponents.js +7 -7
  230. package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.d.ts +8 -10
  231. package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.js +1 -1
  232. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts +11 -12
  233. package/dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.d.ts +4 -5
  234. package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.d.ts +5 -6
  235. package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.d.ts +4 -5
  236. package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.js +3 -2
  237. package/dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.d.ts +4 -5
  238. package/dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.js +1 -1
  239. package/dist/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.d.ts +2 -3
  240. package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.d.ts +2 -3
  241. package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.js +6 -2
  242. package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.d.ts +4 -5
  243. package/dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.d.ts +2 -3
  244. package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.d.ts +3 -4
  245. package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.js +5 -6
  246. package/dist/components/MessageList/hooks/useLastReadData.d.ts +5 -6
  247. package/dist/components/MessageList/hooks/useLastReadData.js +5 -1
  248. package/dist/components/MessageList/hooks/useMarkRead.d.ts +1 -2
  249. package/dist/components/MessageList/renderMessages.d.ts +14 -14
  250. package/dist/components/MessageList/renderMessages.js +8 -7
  251. package/dist/components/MessageList/utils.d.ts +34 -28
  252. package/dist/components/MessageList/utils.js +26 -21
  253. package/dist/components/Modal/Modal.d.ts +2 -1
  254. package/dist/components/Poll/Poll.d.ts +2 -3
  255. package/dist/components/Poll/Poll.js +1 -1
  256. package/dist/components/Poll/PollActions/AddCommentForm.d.ts +1 -2
  257. package/dist/components/Poll/PollActions/AddCommentForm.js +4 -2
  258. package/dist/components/Poll/PollActions/EndPollDialog.d.ts +1 -2
  259. package/dist/components/Poll/PollActions/EndPollDialog.js +1 -1
  260. package/dist/components/Poll/PollActions/PollAction.d.ts +2 -1
  261. package/dist/components/Poll/PollActions/PollActions.d.ts +7 -8
  262. package/dist/components/Poll/PollActions/PollActions.js +5 -5
  263. package/dist/components/Poll/PollActions/PollAnswerList.d.ts +1 -2
  264. package/dist/components/Poll/PollActions/PollOptionsFullList.d.ts +1 -2
  265. package/dist/components/Poll/PollActions/PollOptionsFullList.js +4 -2
  266. package/dist/components/Poll/PollActions/PollResults/PollOptionVotesList.d.ts +3 -4
  267. package/dist/components/Poll/PollActions/PollResults/PollOptionVotesList.js +1 -1
  268. package/dist/components/Poll/PollActions/PollResults/PollOptionWithLatestVotes.d.ts +3 -4
  269. package/dist/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.d.ts +4 -5
  270. package/dist/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.js +1 -1
  271. package/dist/components/Poll/PollActions/PollResults/PollResults.d.ts +1 -2
  272. package/dist/components/Poll/PollActions/PollResults/PollResults.js +1 -1
  273. package/dist/components/Poll/PollActions/SuggestPollOptionForm.d.ts +1 -2
  274. package/dist/components/Poll/PollActions/SuggestPollOptionForm.js +3 -1
  275. package/dist/components/Poll/PollContent.d.ts +1 -2
  276. package/dist/components/Poll/PollCreationDialog/MultipleAnswersField.d.ts +2 -0
  277. package/dist/components/Poll/PollCreationDialog/MultipleAnswersField.js +35 -0
  278. package/dist/components/Poll/PollCreationDialog/NameField.d.ts +2 -0
  279. package/dist/components/Poll/PollCreationDialog/NameField.js +26 -0
  280. package/dist/components/Poll/PollCreationDialog/OptionFieldSet.d.ts +1 -8
  281. package/dist/components/Poll/PollCreationDialog/OptionFieldSet.js +33 -65
  282. package/dist/components/Poll/PollCreationDialog/PollCreationDialog.js +31 -85
  283. package/dist/components/Poll/PollCreationDialog/PollCreationDialogControls.d.ts +1 -4
  284. package/dist/components/Poll/PollCreationDialog/PollCreationDialogControls.js +15 -41
  285. package/dist/components/Poll/PollCreationDialog/types.d.ts +0 -14
  286. package/dist/components/Poll/PollHeader.d.ts +1 -2
  287. package/dist/components/Poll/PollOptionList.d.ts +1 -2
  288. package/dist/components/Poll/PollOptionList.js +4 -2
  289. package/dist/components/Poll/PollOptionSelector.d.ts +3 -4
  290. package/dist/components/Poll/PollVote.d.ts +6 -7
  291. package/dist/components/Poll/PollVote.js +3 -3
  292. package/dist/components/Poll/QuotedPoll.d.ts +1 -2
  293. package/dist/components/Poll/constants.d.ts +0 -1
  294. package/dist/components/Poll/constants.js +0 -1
  295. package/dist/components/Poll/hooks/useManagePollVotesRealtime.d.ts +2 -3
  296. package/dist/components/Poll/hooks/usePollAnswerPagination.d.ts +2 -3
  297. package/dist/components/Poll/hooks/usePollAnswerPagination.js +2 -2
  298. package/dist/components/Poll/hooks/usePollOptionVotesPagination.d.ts +2 -3
  299. package/dist/components/Poll/hooks/usePollOptionVotesPagination.js +1 -1
  300. package/dist/components/Portal/Portal.d.ts +1 -1
  301. package/dist/components/ReactFileUtilities/FileIcon/FileIcon.d.ts +1 -1
  302. package/dist/components/ReactFileUtilities/FileIcon/FileIconSet.d.ts +2 -1
  303. package/dist/components/ReactFileUtilities/FileIcon/iconMap.d.ts +1 -1
  304. package/dist/components/ReactFileUtilities/UploadButton.d.ts +3 -2
  305. package/dist/components/ReactFileUtilities/UploadButton.js +16 -6
  306. package/dist/components/ReactFileUtilities/index.d.ts +0 -1
  307. package/dist/components/ReactFileUtilities/index.js +0 -1
  308. package/dist/components/ReactFileUtilities/utils.d.ts +2 -2
  309. package/dist/components/Reactions/ReactionSelector.d.ts +4 -5
  310. package/dist/components/Reactions/ReactionSelectorWithButton.d.ts +1 -2
  311. package/dist/components/Reactions/ReactionsList.d.ts +6 -7
  312. package/dist/components/Reactions/ReactionsList.js +2 -2
  313. package/dist/components/Reactions/ReactionsListModal.d.ts +9 -10
  314. package/dist/components/Reactions/SimpleReactionsList.d.ts +5 -6
  315. package/dist/components/Reactions/StreamEmoji.d.ts +1 -1
  316. package/dist/components/Reactions/hooks/useFetchReactions.d.ts +9 -10
  317. package/dist/components/Reactions/hooks/useProcessReactions.d.ts +1 -2
  318. package/dist/components/Reactions/types.d.ts +3 -4
  319. package/dist/components/Reactions/utils/utils.d.ts +1 -1
  320. package/dist/components/SafeAnchor/SafeAnchor.d.ts +2 -1
  321. package/dist/components/TextareaComposer/SuggestionList/CommandItem.d.ts +7 -0
  322. package/dist/components/{CommandItem → TextareaComposer/SuggestionList}/CommandItem.js +1 -2
  323. package/dist/components/{EmoticonItem → TextareaComposer/SuggestionList}/EmoticonItem.d.ts +7 -7
  324. package/dist/components/TextareaComposer/SuggestionList/EmoticonItem.js +12 -0
  325. package/dist/components/TextareaComposer/SuggestionList/SuggestionList.d.ts +14 -0
  326. package/dist/components/TextareaComposer/SuggestionList/SuggestionList.js +50 -0
  327. package/dist/components/TextareaComposer/SuggestionList/SuggestionListItem.d.ts +18 -0
  328. package/dist/components/TextareaComposer/SuggestionList/SuggestionListItem.js +24 -0
  329. package/dist/components/{UserItem → TextareaComposer/SuggestionList}/UserItem.d.ts +7 -4
  330. package/dist/components/TextareaComposer/SuggestionList/UserItem.js +24 -0
  331. package/dist/components/TextareaComposer/SuggestionList/index.d.ts +5 -0
  332. package/dist/components/TextareaComposer/SuggestionList/index.js +5 -0
  333. package/dist/components/TextareaComposer/TextareaComposer.d.ts +13 -0
  334. package/dist/components/TextareaComposer/TextareaComposer.js +155 -0
  335. package/dist/components/TextareaComposer/index.d.ts +2 -0
  336. package/dist/components/TextareaComposer/index.js +2 -0
  337. package/dist/components/Thread/Thread.d.ts +13 -10
  338. package/dist/components/Thread/Thread.js +23 -12
  339. package/dist/components/Thread/ThreadHead.d.ts +2 -3
  340. package/dist/components/Thread/ThreadHeader.d.ts +5 -6
  341. package/dist/components/Thread/ThreadHeader.js +1 -1
  342. package/dist/components/Threads/ThreadContext.d.ts +2 -2
  343. package/dist/components/Threads/ThreadContext.js +1 -4
  344. package/dist/components/Threads/ThreadList/ThreadList.d.ts +1 -1
  345. package/dist/components/Threads/ThreadList/ThreadListItem.d.ts +1 -1
  346. package/dist/components/Threads/hooks/useThreadManagerState.d.ts +1 -1
  347. package/dist/components/Threads/hooks/useThreadState.d.ts +1 -1
  348. package/dist/components/Threads/icons.d.ts +1 -1
  349. package/dist/components/Tooltip/Tooltip.d.ts +3 -2
  350. package/dist/components/Tooltip/hooks/useEnterLeaveHandlers.d.ts +1 -1
  351. package/dist/components/TypingIndicator/TypingIndicator.d.ts +1 -2
  352. package/dist/components/Window/Window.d.ts +6 -6
  353. package/dist/components/index.d.ts +1 -5
  354. package/dist/components/index.js +1 -5
  355. package/dist/context/AttachmentSelectorContext.d.ts +2 -1
  356. package/dist/context/ChannelActionContext.d.ts +26 -35
  357. package/dist/context/ChannelListContext.d.ts +9 -9
  358. package/dist/context/ChannelListContext.js +1 -1
  359. package/dist/context/ChannelStateContext.d.ts +24 -34
  360. package/dist/context/ChatContext.d.ts +18 -17
  361. package/dist/context/ComponentContext.d.ts +39 -37
  362. package/dist/context/DialogManagerContext.d.ts +2 -1
  363. package/dist/context/MessageBounceContext.d.ts +8 -7
  364. package/dist/context/MessageBounceContext.js +1 -1
  365. package/dist/context/MessageContext.d.ts +23 -23
  366. package/dist/context/MessageInputContext.d.ts +8 -26
  367. package/dist/context/MessageListContext.d.ts +2 -1
  368. package/dist/context/PollContext.d.ts +8 -8
  369. package/dist/context/TranslationContext.d.ts +2 -1
  370. package/dist/context/TypingContext.d.ts +11 -10
  371. package/dist/context/VirtualizedMessageListContext.d.ts +2 -1
  372. package/dist/context/WithComponents.d.ts +3 -2
  373. package/dist/css/v2/index.css +1 -1
  374. package/dist/css/v2/index.layout.css +1 -1
  375. package/dist/experimental/MessageActions/MessageActions.d.ts +1 -1
  376. package/dist/experimental/MessageActions/MessageActions.js +1 -1
  377. package/dist/experimental/MessageActions/defaults.js +4 -3
  378. package/dist/experimental/Search/Search.d.ts +1 -2
  379. package/dist/experimental/Search/SearchContext.d.ts +8 -8
  380. package/dist/experimental/Search/SearchResults/SearchResultItem.d.ts +11 -11
  381. package/dist/experimental/Search/SearchResults/SearchResultItem.js +3 -3
  382. package/dist/experimental/Search/SearchResults/SearchResults.d.ts +1 -2
  383. package/dist/experimental/Search/SearchResults/SearchResultsHeader.d.ts +1 -2
  384. package/dist/experimental/Search/SearchResults/SearchResultsHeader.js +1 -1
  385. package/dist/experimental/Search/SearchResults/SearchSourceResultList.d.ts +2 -3
  386. package/dist/experimental/Search/SearchResults/SearchSourceResultListFooter.d.ts +1 -2
  387. package/dist/experimental/Search/SearchResults/SearchSourceResults.d.ts +1 -2
  388. package/dist/experimental/Search/SearchResults/SearchSourceResults.js +1 -1
  389. package/dist/experimental/Search/SearchSourceResultsContext.d.ts +2 -1
  390. package/dist/experimental/Search/hooks/useSearchFocusedMessage.d.ts +1 -2
  391. package/dist/experimental/Search/hooks/useSearchFocusedMessage.js +3 -1
  392. package/dist/experimental/Search/hooks/useSearchQueriesInProgress.d.ts +3 -4
  393. package/dist/experimental/index.browser.cjs +1139 -1075
  394. package/dist/experimental/index.browser.cjs.map +4 -4
  395. package/dist/experimental/index.node.cjs +1139 -1075
  396. package/dist/experimental/index.node.cjs.map +4 -4
  397. package/dist/i18n/Streami18n.d.ts +1 -1
  398. package/dist/i18n/types.d.ts +2 -2
  399. package/dist/i18n/utils.d.ts +1 -1
  400. package/dist/i18n/utils.js +3 -1
  401. package/dist/index.browser.cjs +28513 -30641
  402. package/dist/index.browser.cjs.map +4 -4
  403. package/dist/index.node.cjs +30740 -32877
  404. package/dist/index.node.cjs.map +4 -4
  405. package/dist/plugins/Emojis/index.browser.cjs +133 -2
  406. package/dist/plugins/Emojis/index.browser.cjs.map +4 -4
  407. package/dist/plugins/Emojis/index.d.ts +1 -0
  408. package/dist/plugins/Emojis/index.js +1 -0
  409. package/dist/plugins/Emojis/index.node.cjs +135 -3
  410. package/dist/plugins/Emojis/index.node.cjs.map +4 -4
  411. package/dist/plugins/Emojis/middleware/index.d.ts +1 -0
  412. package/dist/plugins/Emojis/middleware/index.js +1 -0
  413. package/dist/plugins/Emojis/middleware/textComposerEmojiMiddleware.d.ts +66 -0
  414. package/dist/plugins/Emojis/middleware/textComposerEmojiMiddleware.js +143 -0
  415. package/dist/plugins/encoders/mp3.browser.cjs.map +2 -2
  416. package/dist/plugins/encoders/mp3.node.cjs.map +2 -2
  417. package/dist/scss/v2/Autocomplete/Autocomplete-layout.scss +14 -0
  418. package/dist/scss/v2/Autocomplete/Autocomplete-theme.scss +11 -0
  419. package/dist/scss/v2/LinkPreview/LinkPreview-layout.scss +18 -0
  420. package/dist/scss/v2/LinkPreview/LinkPreview-theme.scss +15 -0
  421. package/dist/types/defaultDataInterfaces.d.ts +25 -0
  422. package/dist/types/index.d.ts +2 -1
  423. package/dist/types/types.d.ts +2 -62
  424. package/dist/utils/getChannel.d.ts +5 -6
  425. package/dist/utils/mergeDeep.d.ts +2 -3
  426. package/package.json +5 -5
  427. package/dist/components/AutoCompleteTextarea/Item.d.ts +0 -2
  428. package/dist/components/AutoCompleteTextarea/Item.js +0 -10
  429. package/dist/components/AutoCompleteTextarea/List.d.ts +0 -17
  430. package/dist/components/AutoCompleteTextarea/List.js +0 -89
  431. package/dist/components/AutoCompleteTextarea/Textarea.d.ts +0 -114
  432. package/dist/components/AutoCompleteTextarea/Textarea.js +0 -593
  433. package/dist/components/AutoCompleteTextarea/index.d.ts +0 -4
  434. package/dist/components/AutoCompleteTextarea/index.js +0 -4
  435. package/dist/components/AutoCompleteTextarea/types.d.ts +0 -15
  436. package/dist/components/AutoCompleteTextarea/utils.d.ts +0 -6
  437. package/dist/components/AutoCompleteTextarea/utils.js +0 -40
  438. package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts +0 -78
  439. package/dist/components/ChatAutoComplete/ChatAutoComplete.js +0 -33
  440. package/dist/components/ChatAutoComplete/index.d.ts +0 -1
  441. package/dist/components/ChatAutoComplete/index.js +0 -1
  442. package/dist/components/CommandItem/CommandItem.d.ts +0 -12
  443. package/dist/components/CommandItem/index.d.ts +0 -1
  444. package/dist/components/CommandItem/index.js +0 -1
  445. package/dist/components/EmoticonItem/EmoticonItem.js +0 -16
  446. package/dist/components/EmoticonItem/index.d.ts +0 -1
  447. package/dist/components/EmoticonItem/index.js +0 -1
  448. package/dist/components/MessageInput/DefaultTriggerProvider.d.ts +0 -35
  449. package/dist/components/MessageInput/DefaultTriggerProvider.js +0 -24
  450. package/dist/components/MessageInput/DropzoneProvider.d.ts +0 -4
  451. package/dist/components/MessageInput/DropzoneProvider.js +0 -23
  452. package/dist/components/MessageInput/hooks/useAttachments.d.ts +0 -14
  453. package/dist/components/MessageInput/hooks/useAttachments.js +0 -209
  454. package/dist/components/MessageInput/hooks/useCommandTrigger.d.ts +0 -3
  455. package/dist/components/MessageInput/hooks/useCommandTrigger.js +0 -62
  456. package/dist/components/MessageInput/hooks/useEmojiTrigger.d.ts +0 -3
  457. package/dist/components/MessageInput/hooks/useEmojiTrigger.js +0 -29
  458. package/dist/components/MessageInput/hooks/useLinkPreviews.d.ts +0 -30
  459. package/dist/components/MessageInput/hooks/useLinkPreviews.js +0 -109
  460. package/dist/components/MessageInput/hooks/useMessageInputState.d.ts +0 -71
  461. package/dist/components/MessageInput/hooks/useMessageInputState.js +0 -200
  462. package/dist/components/MessageInput/hooks/useUserTrigger.d.ts +0 -12
  463. package/dist/components/MessageInput/hooks/useUserTrigger.js +0 -130
  464. package/dist/components/MessageInput/types.d.ts +0 -87
  465. package/dist/components/MessageInput/types.js +0 -19
  466. package/dist/components/ReactFileUtilities/ImageDropzone.d.ts +0 -16
  467. package/dist/components/ReactFileUtilities/ImageDropzone.js +0 -42
  468. package/dist/components/UserItem/UserItem.js +0 -26
  469. package/dist/components/UserItem/index.d.ts +0 -1
  470. package/dist/components/UserItem/index.js +0 -1
  471. /package/dist/components/{MessageInput → MediaRecorder/AudioRecorder}/hooks/useTimeElapsed.d.ts +0 -0
  472. /package/dist/components/{MessageInput → MediaRecorder/AudioRecorder}/hooks/useTimeElapsed.js +0 -0
  473. /package/dist/{components/AutoCompleteTextarea/types.js → types/defaultDataInterfaces.js} +0 -0
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- const UnMemoizedCommandItem = (props) => {
2
+ export const CommandItem = (props) => {
3
3
  const { entity } = props;
4
4
  return (React.createElement("div", { className: 'str-chat__slash-command' },
5
5
  React.createElement("span", { className: 'str-chat__slash-command-header' },
@@ -9,4 +9,3 @@ const UnMemoizedCommandItem = (props) => {
9
9
  React.createElement("br", null),
10
10
  React.createElement("span", { className: 'str-chat__slash-command-description' }, entity.description)));
11
11
  };
12
- export const CommandItem = React.memo(UnMemoizedCommandItem);
@@ -1,17 +1,17 @@
1
1
  import React from 'react';
2
2
  export type EmoticonItemProps = {
3
3
  entity: {
4
+ /** Name for emoticon */
5
+ name: string;
6
+ /** Native value or actual emoticon */
7
+ native: string;
4
8
  /** The parts of the Name property of the entity (or id if no name) that can be matched to the user input value.
5
9
  * Default is bold for matches, but can be overwritten in css.
6
10
  * */
7
- itemNameParts: {
8
- match: string;
11
+ tokenizedDisplayName: {
12
+ token: string;
9
13
  parts: string[];
10
14
  };
11
- /** Name for emoticon */
12
- name: string;
13
- /** Native value or actual emoticon */
14
- native: string;
15
15
  };
16
16
  };
17
- export declare const EmoticonItem: (props: EmoticonItemProps) => React.JSX.Element;
17
+ export declare const EmoticonItem: (props: EmoticonItemProps) => React.JSX.Element | null;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ export const EmoticonItem = (props) => {
3
+ const { entity } = props;
4
+ const hasEntity = Object.keys(entity).length;
5
+ if (!hasEntity)
6
+ return null;
7
+ const { parts, token } = entity.tokenizedDisplayName ?? {};
8
+ const renderName = () => parts?.map((part, i) => part.toLowerCase() === token ? (React.createElement("span", { className: 'str-chat__emoji-item--highlight', key: `part-${i}` }, part)) : (React.createElement("span", { className: 'str-chat__emoji-item--part', key: `part-${i}` }, part))) ?? null;
9
+ return (React.createElement("div", { className: 'str-chat__emoji-item' },
10
+ React.createElement("span", { className: 'str-chat__emoji-item--entity' }, entity.native),
11
+ React.createElement("span", { className: 'str-chat__emoji-item--name' }, renderName())));
12
+ };
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import type { SuggestionListItemComponentProps } from './SuggestionListItem';
3
+ type SuggestionTrigger = '/' | ':' | '@' | string;
4
+ export type SuggestionListProps = Partial<{
5
+ suggestionItemComponents: Record<SuggestionTrigger, React.ComponentType<SuggestionListItemComponentProps>>;
6
+ className?: string;
7
+ closeOnClickOutside?: boolean;
8
+ containerClassName?: string;
9
+ focusedItemIndex: number;
10
+ setFocusedItemIndex: (index: number) => void;
11
+ }>;
12
+ export declare const defaultComponents: Record<SuggestionTrigger, React.ComponentType<SuggestionListItemComponentProps>>;
13
+ export declare const SuggestionList: ({ className, closeOnClickOutside, containerClassName, focusedItemIndex, setFocusedItemIndex, suggestionItemComponents, }: SuggestionListProps) => React.JSX.Element | null;
14
+ export {};
@@ -0,0 +1,50 @@
1
+ import clsx from 'clsx';
2
+ import React, { useEffect, useState } from 'react';
3
+ import { CommandItem } from './CommandItem';
4
+ import { EmoticonItem } from './EmoticonItem';
5
+ import { SuggestionListItem as DefaultSuggestionListItem } from './SuggestionListItem';
6
+ import { UserItem } from './UserItem';
7
+ import { useComponentContext } from '../../../context/ComponentContext';
8
+ import { useStateStore } from '../../../store';
9
+ import { InfiniteScrollPaginator } from '../../InfiniteScrollPaginator/InfiniteScrollPaginator';
10
+ import { useMessageComposer } from '../../MessageInput';
11
+ const textComposerStateSelector = (state) => ({
12
+ suggestions: state.suggestions,
13
+ });
14
+ const searchSourceStateSelector = (nextValue) => ({
15
+ items: nextValue.items ?? [],
16
+ });
17
+ export const defaultComponents = {
18
+ '/': (props) => (React.createElement(CommandItem, { entity: props.entity })),
19
+ ':': (props) => (React.createElement(EmoticonItem, { entity: props.entity })),
20
+ '@': (props) => (React.createElement(UserItem, { entity: props.entity })),
21
+ };
22
+ export const SuggestionList = ({ className, closeOnClickOutside = true, containerClassName, focusedItemIndex, setFocusedItemIndex, suggestionItemComponents = defaultComponents, }) => {
23
+ const { AutocompleteSuggestionItem = DefaultSuggestionListItem } = useComponentContext();
24
+ const messageComposer = useMessageComposer();
25
+ const { textComposer } = messageComposer;
26
+ const { suggestions } = useStateStore(textComposer.state, textComposerStateSelector);
27
+ const { items } = useStateStore(suggestions?.searchSource.state, searchSourceStateSelector) ?? {};
28
+ const [container, setContainer] = useState(null);
29
+ const component = suggestions?.trigger
30
+ ? suggestionItemComponents[suggestions?.trigger]
31
+ : undefined;
32
+ useEffect(() => {
33
+ if (!closeOnClickOutside || !suggestions || !container)
34
+ return;
35
+ const handleClick = (event) => {
36
+ if (container.contains(event.target))
37
+ return;
38
+ textComposer.closeSuggestions();
39
+ };
40
+ document.addEventListener('click', handleClick);
41
+ return () => {
42
+ document.removeEventListener('click', handleClick);
43
+ };
44
+ }, [closeOnClickOutside, suggestions, container, textComposer]);
45
+ if (!suggestions || !items?.length || !component)
46
+ return null;
47
+ return (React.createElement("div", { className: clsx('str-chat__suggestion-list-container', containerClassName), ref: setContainer },
48
+ React.createElement(InfiniteScrollPaginator, { loadNextOnScrollToBottom: suggestions.searchSource.search, threshold: 100 },
49
+ React.createElement("ul", { className: clsx('str-chat__suggestion-list str-chat__suggestion-list--react', className) }, items.map((item, i) => (React.createElement(AutocompleteSuggestionItem, { component: component, focused: focusedItemIndex === i, item: item, key: item.id.toString(), onMouseEnter: () => setFocusedItemIndex?.(i) })))))));
50
+ };
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import type { TextComposerSuggestion } from 'stream-chat';
3
+ import type { UserItemProps } from './UserItem';
4
+ import type { CommandItemProps } from './CommandItem';
5
+ import type { EmoticonItemProps } from './EmoticonItem';
6
+ export type DefaultSuggestionListItemEntity = UserItemProps['entity'] | CommandItemProps['entity'] | EmoticonItemProps['entity'];
7
+ export type SuggestionListItemComponentProps = {
8
+ entity: DefaultSuggestionListItemEntity | unknown;
9
+ focused: boolean;
10
+ };
11
+ export type SuggestionItemProps = {
12
+ component: React.ComponentType<SuggestionListItemComponentProps>;
13
+ item: TextComposerSuggestion;
14
+ focused: boolean;
15
+ className?: string;
16
+ onMouseEnter?: () => void;
17
+ };
18
+ export declare const SuggestionListItem: React.ForwardRefExoticComponent<SuggestionItemProps & React.RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,24 @@
1
+ import clsx from 'clsx';
2
+ import React, { useCallback, useLayoutEffect, useRef } from 'react';
3
+ import { useMessageComposer } from '../../MessageInput';
4
+ export const SuggestionListItem = React.forwardRef(function SuggestionListItem({ className, component: Component, focused, item, onMouseEnter }, innerRef) {
5
+ const { textComposer } = useMessageComposer();
6
+ const containerRef = useRef(null);
7
+ const handleSelect = useCallback(() => {
8
+ textComposer.handleSelect(item);
9
+ }, [item, textComposer]);
10
+ useLayoutEffect(() => {
11
+ if (!focused)
12
+ return;
13
+ containerRef.current?.scrollIntoView({ behavior: 'instant', block: 'nearest' });
14
+ }, [focused, containerRef]);
15
+ return (React.createElement("li", { className: clsx('str-chat__suggestion-list-item', className, {
16
+ 'str-chat__suggestion-item--selected': focused,
17
+ }), onMouseEnter: onMouseEnter, ref: containerRef },
18
+ React.createElement("button", { onClick: handleSelect, onKeyDown: (event) => {
19
+ if (event.key === 'Enter') {
20
+ handleSelect();
21
+ }
22
+ }, ref: innerRef },
23
+ React.createElement(Component, { entity: item, focused: focused }))));
24
+ });
@@ -1,13 +1,13 @@
1
1
  import React from 'react';
2
- import { AvatarProps } from '../Avatar';
2
+ import type { AvatarProps } from '../../Avatar';
3
3
  export type UserItemProps = {
4
4
  /** The user */
5
5
  entity: {
6
6
  /** The parts of the Name property of the entity (or id if no name) that can be matched to the user input value.
7
7
  * Default is bold for matches, but can be overwritten in css.
8
8
  * */
9
- itemNameParts: {
10
- match: string;
9
+ tokenizedDisplayName: {
10
+ token: string;
11
11
  parts: string[];
12
12
  };
13
13
  /** Id of the user */
@@ -20,4 +20,7 @@ export type UserItemProps = {
20
20
  /** Custom UI component to display user avatar, defaults to and accepts same props as: [Avatar](https://github.com/GetStream/stream-chat-react/blob/master/src/components/Avatar/Avatar.tsx) */
21
21
  Avatar?: React.ComponentType<AvatarProps>;
22
22
  };
23
- export declare const UserItem: ({ Avatar, entity }: UserItemProps) => React.JSX.Element;
23
+ /**
24
+ * UI component for mentions rendered in suggestion list
25
+ */
26
+ export declare const UserItem: ({ Avatar, entity }: UserItemProps) => React.JSX.Element | null;
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ import clsx from 'clsx';
3
+ import { Avatar as DefaultAvatar } from '../../Avatar';
4
+ /**
5
+ * UI component for mentions rendered in suggestion list
6
+ */
7
+ export const UserItem = ({ Avatar = DefaultAvatar, entity }) => {
8
+ const hasEntity = !!Object.keys(entity).length;
9
+ if (!hasEntity)
10
+ return null;
11
+ const { parts, token } = entity.tokenizedDisplayName;
12
+ const renderName = () => parts.map((part, i) => {
13
+ const matches = part.toLowerCase() === token;
14
+ const partWithHTMLSpacesAround = part.replace(/^\s+|\s+$/g, '\u00A0');
15
+ return (React.createElement("span", { className: clsx({
16
+ 'str-chat__emoji-item--highlight': matches,
17
+ 'str-chat__emoji-item--part': !matches,
18
+ }), key: `part-${i}` }, partWithHTMLSpacesAround));
19
+ });
20
+ return (React.createElement("div", { className: 'str-chat__user-item' },
21
+ React.createElement(Avatar, { className: 'str-chat__avatar--autocomplete-item', image: entity.image, name: entity.name || entity.id }),
22
+ React.createElement("span", { className: 'str-chat__user-item--name', "data-testid": 'user-item-name' }, renderName()),
23
+ React.createElement("div", { className: 'str-chat__user-item-at' }, "@")));
24
+ };
@@ -0,0 +1,5 @@
1
+ export * from './CommandItem';
2
+ export * from './EmoticonItem';
3
+ export * from './SuggestionList';
4
+ export * from './SuggestionListItem';
5
+ export * from './UserItem';
@@ -0,0 +1,5 @@
1
+ export * from './CommandItem';
2
+ export * from './EmoticonItem';
3
+ export * from './SuggestionList';
4
+ export * from './SuggestionListItem';
5
+ export * from './UserItem';
@@ -0,0 +1,13 @@
1
+ import type { TextareaHTMLAttributes } from 'react';
2
+ import React from 'react';
3
+ export type TextComposerProps = Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'style' | 'defaultValue' | 'disabled'> & {
4
+ closeSuggestionsOnClickOutside?: boolean;
5
+ containerClassName?: string;
6
+ dropdownClassName?: string;
7
+ grow?: boolean;
8
+ itemClassName?: string;
9
+ listClassName?: string;
10
+ maxRows?: number;
11
+ shouldSubmit?: (event: React.KeyboardEvent<HTMLTextAreaElement>) => boolean;
12
+ };
13
+ export declare const TextareaComposer: ({ className, closeSuggestionsOnClickOutside, containerClassName, grow: growProp, listClassName, maxRows: maxRowsProp, onBlur, onChange, onKeyDown, onScroll, placeholder: placeholderProp, shouldSubmit: shouldSubmitProp, ...restProps }: TextComposerProps) => React.JSX.Element;
@@ -0,0 +1,155 @@
1
+ import clsx from 'clsx';
2
+ import React, { useCallback, useEffect, useRef, useState } from 'react';
3
+ import Textarea from 'react-textarea-autosize';
4
+ import { useMessageComposer } from '../MessageInput';
5
+ import { useComponentContext, useMessageInputContext, useTranslationContext, } from '../../context';
6
+ import { useStateStore } from '../../store';
7
+ import { SuggestionList as DefaultSuggestionList } from './SuggestionList';
8
+ const textComposerStateSelector = (state) => ({
9
+ selection: state.selection,
10
+ suggestions: state.suggestions,
11
+ text: state.text,
12
+ });
13
+ const searchSourceStateSelector = (state) => ({
14
+ isLoadingItems: state.isLoading,
15
+ items: state.items,
16
+ });
17
+ const configStateSelector = (state) => ({
18
+ enabled: state.text.enabled,
19
+ });
20
+ /**
21
+ * isComposing prevents double submissions in Korean and other languages.
22
+ * starting point for a read:
23
+ * https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/isComposing
24
+ * In the long term, the fix should happen by handling keypress, but changing this has unknown implications.
25
+ */
26
+ const defaultShouldSubmit = (event) => event.key === 'Enter' && !event.shiftKey && !event.nativeEvent.isComposing;
27
+ export const TextareaComposer = ({ className, closeSuggestionsOnClickOutside, containerClassName,
28
+ // dropdownClassName, // todo: X find a different way to prevent prop drilling
29
+ grow: growProp,
30
+ // itemClassName, // todo: X find a different way to prevent prop drilling
31
+ listClassName, maxRows: maxRowsProp = 1, onBlur, onChange, onKeyDown, onScroll, placeholder: placeholderProp, shouldSubmit: shouldSubmitProp, ...restProps }) => {
32
+ const { t } = useTranslationContext();
33
+ const { AutocompleteSuggestionList = DefaultSuggestionList } = useComponentContext();
34
+ const { additionalTextareaProps, cooldownRemaining, grow: growContext, handleSubmit, maxRows: maxRowsContext, onPaste, shouldSubmit: shouldSubmitContext, textareaRef, } = useMessageInputContext();
35
+ const grow = growProp ?? growContext;
36
+ const maxRows = maxRowsProp ?? maxRowsContext;
37
+ const placeholder = placeholderProp ?? additionalTextareaProps?.placeholder;
38
+ const shouldSubmit = shouldSubmitProp ?? shouldSubmitContext ?? defaultShouldSubmit;
39
+ const messageComposer = useMessageComposer();
40
+ const { textComposer } = messageComposer;
41
+ const { selection, suggestions, text } = useStateStore(textComposer.state, textComposerStateSelector);
42
+ const { enabled } = useStateStore(messageComposer.configState, configStateSelector);
43
+ const { isLoadingItems } = useStateStore(suggestions?.searchSource.state, searchSourceStateSelector) ?? {};
44
+ const containerRef = useRef(null);
45
+ const [focusedItemIndex, setFocusedItemIndex] = useState(0);
46
+ const [isComposing, setIsComposing] = useState(false);
47
+ const changeHandler = useCallback((e) => {
48
+ if (onChange) {
49
+ onChange(e);
50
+ return;
51
+ }
52
+ if (!textareaRef.current)
53
+ return;
54
+ textComposer.handleChange({
55
+ selection: {
56
+ end: textareaRef.current.selectionEnd,
57
+ start: textareaRef.current.selectionStart,
58
+ },
59
+ text: e.target.value,
60
+ });
61
+ }, [onChange, textComposer, textareaRef]);
62
+ const onCompositionEnd = useCallback(() => {
63
+ setIsComposing(false);
64
+ }, []);
65
+ const onCompositionStart = useCallback(() => {
66
+ setIsComposing(true);
67
+ }, []);
68
+ const keyDownHandler = useCallback((event) => {
69
+ if (onKeyDown) {
70
+ onKeyDown(event);
71
+ return;
72
+ }
73
+ if (event.key === 'Enter') {
74
+ // allow next line only on Shift + Enter. Enter is reserved for submission.
75
+ event.preventDefault();
76
+ }
77
+ if (textComposer.suggestions &&
78
+ textComposer.suggestions.searchSource.items?.length) {
79
+ if (event.key === 'Escape')
80
+ return textComposer.closeSuggestions();
81
+ const loadedItems = textComposer.suggestions.searchSource.items;
82
+ if (event.key === 'Enter') {
83
+ textComposer.handleSelect(loadedItems[focusedItemIndex]);
84
+ }
85
+ if (event.key === 'ArrowUp') {
86
+ event.preventDefault();
87
+ setFocusedItemIndex((prev) => {
88
+ let nextIndex = prev - 1;
89
+ if (suggestions?.searchSource.hasNext) {
90
+ nextIndex = prev;
91
+ }
92
+ else if (nextIndex < 0) {
93
+ nextIndex = loadedItems.length - 1;
94
+ }
95
+ return nextIndex;
96
+ });
97
+ }
98
+ if (event.key === 'ArrowDown') {
99
+ event.preventDefault();
100
+ setFocusedItemIndex((prev) => {
101
+ let nextIndex = prev + 1;
102
+ if (suggestions?.searchSource.hasNext) {
103
+ nextIndex = prev;
104
+ }
105
+ else if (nextIndex >= loadedItems.length) {
106
+ nextIndex = 0;
107
+ }
108
+ return nextIndex;
109
+ });
110
+ }
111
+ }
112
+ else if (shouldSubmit(event) && textareaRef.current) {
113
+ handleSubmit();
114
+ textareaRef.current.selectionEnd = 0;
115
+ }
116
+ }, [
117
+ focusedItemIndex,
118
+ handleSubmit,
119
+ onKeyDown,
120
+ shouldSubmit,
121
+ suggestions,
122
+ textComposer,
123
+ textareaRef,
124
+ ]);
125
+ const scrollHandler = useCallback((event) => {
126
+ if (onScroll) {
127
+ onScroll(event);
128
+ }
129
+ else {
130
+ textComposer.closeSuggestions();
131
+ }
132
+ }, [onScroll, textComposer]);
133
+ useEffect(() => {
134
+ // FIXME: find the real reason for cursor being set to the end on each change
135
+ // This is a workaround to prevent the cursor from jumping
136
+ // to the end of the textarea when the user is typing
137
+ // at the position that is not at the end of the textarea value.
138
+ if (textareaRef.current && !isComposing) {
139
+ textareaRef.current.selectionStart = selection.start;
140
+ textareaRef.current.selectionEnd = selection.end;
141
+ }
142
+ }, [text, textareaRef, selection.start, selection.end, isComposing]);
143
+ useEffect(() => {
144
+ if (textComposer.suggestions) {
145
+ setFocusedItemIndex(0);
146
+ }
147
+ }, [textComposer.suggestions]);
148
+ return (React.createElement("div", { className: clsx('rta', 'str-chat__textarea str-chat__message-textarea-react-host', containerClassName, {
149
+ ['rta--loading']: isLoadingItems,
150
+ }), ref: containerRef },
151
+ React.createElement(Textarea, { ...restProps, "aria-label": cooldownRemaining ? t('Slow Mode ON') : placeholder, className: clsx('rta__textarea', 'str-chat__textarea__textarea str-chat__message-textarea', className), "data-testid": 'message-input', disabled: !enabled || !!cooldownRemaining, maxRows: grow ? maxRows : 1, onBlur: onBlur, onChange: changeHandler, onCompositionEnd: onCompositionEnd, onCompositionStart: onCompositionStart, onKeyDown: keyDownHandler, onPaste: onPaste, onScroll: scrollHandler, placeholder: placeholder || t('Type your message'), ref: (ref) => {
152
+ textareaRef.current = ref;
153
+ }, value: text }),
154
+ !isComposing && (React.createElement(AutocompleteSuggestionList, { className: listClassName, closeOnClickOutside: closeSuggestionsOnClickOutside, focusedItemIndex: focusedItemIndex, setFocusedItemIndex: setFocusedItemIndex }))));
155
+ };
@@ -0,0 +1,2 @@
1
+ export * from './SuggestionList';
2
+ export * from './TextareaComposer';
@@ -0,0 +1,2 @@
1
+ export * from './SuggestionList';
2
+ export * from './TextareaComposer';
@@ -1,18 +1,18 @@
1
1
  import React from 'react';
2
- import { MessageInputProps } from '../MessageInput';
3
- import { MessageListProps, VirtualizedMessageListProps } from '../MessageList';
2
+ import type { MessageInputProps } from '../MessageInput';
3
+ import type { MessageListProps, VirtualizedMessageListProps } from '../MessageList';
4
4
  import type { MessageProps, MessageUIComponentProps } from '../Message/types';
5
5
  import type { MessageActionsArray } from '../Message/utils';
6
- import type { CustomTrigger, DefaultStreamChatGenerics } from '../../types/types';
7
- export type ThreadProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics, V extends CustomTrigger = CustomTrigger> = {
6
+ import type { LocalMessage } from 'stream-chat';
7
+ export type ThreadProps = {
8
8
  /** Additional props for `MessageInput` component: [available props](https://getstream.io/chat/docs/sdk/react/message-input-components/message_input/#props) */
9
- additionalMessageInputProps?: MessageInputProps<StreamChatGenerics, V>;
9
+ additionalMessageInputProps?: MessageInputProps;
10
10
  /** Additional props for `MessageList` component: [available props](https://getstream.io/chat/docs/sdk/react/core-components/message_list/#props) */
11
- additionalMessageListProps?: MessageListProps<StreamChatGenerics>;
11
+ additionalMessageListProps?: MessageListProps;
12
12
  /** Additional props for `Message` component of the parent message: [available props](https://getstream.io/chat/docs/sdk/react/message-components/message/#props) */
13
- additionalParentMessageProps?: Partial<MessageProps<StreamChatGenerics>>;
13
+ additionalParentMessageProps?: Partial<MessageProps>;
14
14
  /** Additional props for `VirtualizedMessageList` component: [available props](https://getstream.io/chat/docs/sdk/react/core-components/virtualized_list/#props) */
15
- additionalVirtualizedMessageListProps?: VirtualizedMessageListProps<StreamChatGenerics>;
15
+ additionalVirtualizedMessageListProps?: VirtualizedMessageListProps;
16
16
  /** If true, focuses the `MessageInput` component on opening a thread */
17
17
  autoFocus?: boolean;
18
18
  /** Injects date separator components into `Thread`, defaults to `false`. To be passed to the underlying `MessageList` or `VirtualizedMessageList` components */
@@ -20,13 +20,16 @@ export type ThreadProps<StreamChatGenerics extends DefaultStreamChatGenerics = D
20
20
  /** Custom thread input UI component used to override the default `Input` value stored in `ComponentContext` or the [MessageInputSmall](https://github.com/GetStream/stream-chat-react/blob/master/src/components/MessageInput/MessageInputSmall.tsx) default */
21
21
  Input?: React.ComponentType;
22
22
  /** Custom thread message UI component used to override the default `Message` value stored in `ComponentContext` */
23
- Message?: React.ComponentType<MessageUIComponentProps<StreamChatGenerics>>;
23
+ Message?: React.ComponentType<MessageUIComponentProps>;
24
24
  /** Array of allowed message actions (ex: ['edit', 'delete', 'flag', 'mute', 'pin', 'quote', 'react', 'reply']). To disable all actions, provide an empty array. */
25
25
  messageActions?: MessageActionsArray;
26
26
  /** If true, render the `VirtualizedMessageList` instead of the standard `MessageList` component */
27
27
  virtualized?: boolean;
28
28
  };
29
+ export declare const useLegacyThreadContext: () => {
30
+ legacyThread: LocalMessage | undefined;
31
+ };
29
32
  /**
30
33
  * The Thread component renders a parent Message with a list of replies
31
34
  */
32
- export declare const Thread: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics, V extends CustomTrigger = CustomTrigger>(props: ThreadProps<StreamChatGenerics, V>) => React.JSX.Element | null;
35
+ export declare const Thread: (props: ThreadProps) => React.JSX.Element | null;
@@ -1,20 +1,24 @@
1
- import React, { useEffect } from 'react';
1
+ import React, { useContext, useEffect } from 'react';
2
2
  import clsx from 'clsx';
3
3
  import { MESSAGE_ACTIONS } from '../Message';
4
4
  import { MessageInput, MessageInputFlat } from '../MessageInput';
5
- import { MessageList, VirtualizedMessageList, } from '../MessageList';
5
+ import { MessageList, VirtualizedMessageList } from '../MessageList';
6
6
  import { ThreadHeader as DefaultThreadHeader } from './ThreadHeader';
7
7
  import { ThreadHead as DefaultThreadHead } from '../Thread/ThreadHead';
8
8
  import { useChannelActionContext, useChannelStateContext, useChatContext, useComponentContext, } from '../../context';
9
9
  import { useThreadContext } from '../Threads';
10
10
  import { useStateStore } from '../../store';
11
+ const LegacyThreadContext = React.createContext({ legacyThread: undefined });
12
+ export const useLegacyThreadContext = () => useContext(LegacyThreadContext);
11
13
  /**
12
14
  * The Thread component renders a parent Message with a list of replies
13
15
  */
14
16
  export const Thread = (props) => {
15
17
  const { channel, channelConfig, thread } = useChannelStateContext('Thread');
16
18
  const threadInstance = useThreadContext();
17
- if ((!thread && !threadInstance) || channelConfig?.replies === false)
19
+ if (!thread && !threadInstance)
20
+ return null;
21
+ if (channelConfig?.replies === false)
18
22
  return null;
19
23
  // the wrapper ensures a key variable is set and the component recreates on thread switch
20
24
  return (
@@ -30,22 +34,24 @@ const selector = (nextValue) => ({
30
34
  const ThreadInner = (props) => {
31
35
  const { additionalMessageInputProps, additionalMessageListProps, additionalParentMessageProps, additionalVirtualizedMessageListProps, autoFocus = true, enableDateSeparator = false, Input: PropInput, Message: PropMessage, messageActions = Object.keys(MESSAGE_ACTIONS), virtualized, } = props;
32
36
  const threadInstance = useThreadContext();
33
- const { isLoadingNext, isLoadingPrev, parentMessage, replies } = useStateStore(threadInstance?.state, selector) ?? {};
34
37
  const { thread, threadHasMore, threadLoadingMore, threadMessages = [], threadSuppressAutoscroll, } = useChannelStateContext('Thread');
35
38
  const { closeThread, loadMoreThread } = useChannelActionContext('Thread');
36
39
  const { customClasses } = useChatContext('Thread');
37
40
  const { Message: ContextMessage, ThreadHead = DefaultThreadHead, ThreadHeader = DefaultThreadHeader, ThreadInput: ContextInput, VirtualMessage, } = useComponentContext('Thread');
41
+ const { isLoadingNext, isLoadingPrev, parentMessage, replies } = useStateStore(threadInstance?.state, selector) ?? {};
38
42
  const ThreadInput = PropInput ?? additionalMessageInputProps?.Input ?? ContextInput ?? MessageInputFlat;
39
43
  const ThreadMessage = PropMessage || additionalMessageListProps?.Message;
40
44
  const FallbackMessage = virtualized && VirtualMessage ? VirtualMessage : ContextMessage;
41
45
  const MessageUIComponent = ThreadMessage || FallbackMessage;
42
46
  const ThreadMessageList = virtualized ? VirtualizedMessageList : MessageList;
43
47
  useEffect(() => {
44
- if (thread?.id && thread?.reply_count) {
48
+ if (threadInstance)
49
+ return;
50
+ if ((thread?.reply_count ?? 0) > 0) {
45
51
  // FIXME: integrators can customize channel query options but cannot customize channel.getReplies() options
46
52
  loadMoreThread();
47
53
  }
48
- }, [thread, loadMoreThread]);
54
+ }, [thread, loadMoreThread, threadInstance]);
49
55
  const threadProps = threadInstance
50
56
  ? {
51
57
  loadingMore: isLoadingPrev,
@@ -68,10 +74,15 @@ const ThreadInner = (props) => {
68
74
  'str-chat__thread--virtualized': virtualized,
69
75
  });
70
76
  const head = (React.createElement(ThreadHead, { key: messageAsThread.id, message: messageAsThread, Message: MessageUIComponent, ...additionalParentMessageProps }));
71
- return (React.createElement("div", { className: threadClass },
72
- React.createElement(ThreadHeader, { closeThread: closeThread, thread: messageAsThread }),
73
- React.createElement(ThreadMessageList, { disableDateSeparator: !enableDateSeparator, head: head, Message: MessageUIComponent, messageActions: messageActions, suppressAutoscroll: threadSuppressAutoscroll, threadList: true, ...threadProps, ...(virtualized
74
- ? additionalVirtualizedMessageListProps
75
- : additionalMessageListProps) }),
76
- React.createElement(MessageInput, { focus: autoFocus, Input: ThreadInput, isThreadInput: true, parent: thread ?? parentMessage, publishTypingEvent: false, ...additionalMessageInputProps })));
77
+ return (
78
+ // Thread component needs a context which we can use for message composer
79
+ React.createElement(LegacyThreadContext.Provider, { value: {
80
+ legacyThread: thread ?? undefined,
81
+ } },
82
+ React.createElement("div", { className: threadClass },
83
+ React.createElement(ThreadHeader, { closeThread: closeThread, thread: messageAsThread }),
84
+ React.createElement(ThreadMessageList, { disableDateSeparator: !enableDateSeparator, head: head, Message: MessageUIComponent, messageActions: messageActions, suppressAutoscroll: threadSuppressAutoscroll, threadList: true, ...threadProps, ...(virtualized
85
+ ? additionalVirtualizedMessageListProps
86
+ : additionalMessageListProps) }),
87
+ React.createElement(MessageInput, { focus: autoFocus, Input: ThreadInput, isThreadInput: true, parent: thread ?? parentMessage, ...additionalMessageInputProps }))));
77
88
  };
@@ -1,4 +1,3 @@
1
1
  import React from 'react';
2
- import { MessageProps } from '../Message';
3
- import type { DefaultStreamChatGenerics } from '../../types/types';
4
- export declare const ThreadHead: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(props: MessageProps<StreamChatGenerics>) => React.JSX.Element;
2
+ import type { MessageProps } from '../Message';
3
+ export declare const ThreadHead: (props: MessageProps) => React.JSX.Element;
@@ -1,11 +1,10 @@
1
1
  import React from 'react';
2
- import { ChannelPreviewInfoParams } from '../ChannelPreview/hooks/useChannelPreviewInfo';
3
- import { StreamMessage } from '../../context/ChannelStateContext';
4
- import type { DefaultStreamChatGenerics } from '../../types/types';
5
- export type ThreadHeaderProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
2
+ import type { ChannelPreviewInfoParams } from '../ChannelPreview/hooks/useChannelPreviewInfo';
3
+ import type { LocalMessage } from 'stream-chat';
4
+ export type ThreadHeaderProps = {
6
5
  /** Callback for closing the thread */
7
6
  closeThread: (event?: React.BaseSyntheticEvent) => void;
8
7
  /** The thread parent message */
9
- thread: StreamMessage<StreamChatGenerics>;
8
+ thread: LocalMessage;
10
9
  };
11
- export declare const ThreadHeader: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(props: ThreadHeaderProps<StreamChatGenerics> & Pick<ChannelPreviewInfoParams<StreamChatGenerics>, 'overrideImage' | 'overrideTitle'>) => React.JSX.Element;
10
+ export declare const ThreadHeader: (props: ThreadHeaderProps & Pick<ChannelPreviewInfoParams, 'overrideImage' | 'overrideTitle'>) => React.JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { useChannelPreviewInfo, } from '../ChannelPreview/hooks/useChannelPreviewInfo';
2
+ import { useChannelPreviewInfo } from '../ChannelPreview/hooks/useChannelPreviewInfo';
3
3
  import { CloseIcon } from './icons';
4
4
  import { useChannelStateContext } from '../../context/ChannelStateContext';
5
5
  import { useTranslationContext } from '../../context/TranslationContext';
@@ -1,9 +1,9 @@
1
1
  import React from 'react';
2
2
  import type { PropsWithChildren } from 'react';
3
- import { Thread } from 'stream-chat';
3
+ import type { Thread } from 'stream-chat';
4
4
  export type ThreadContextValue = Thread | undefined;
5
5
  export declare const ThreadContext: React.Context<ThreadContextValue>;
6
- export declare const useThreadContext: () => Thread<import("stream-chat").DefaultGenerics> | undefined;
6
+ export declare const useThreadContext: () => ThreadContextValue;
7
7
  export declare const ThreadProvider: ({ children, thread, }: PropsWithChildren<{
8
8
  thread?: Thread;
9
9
  }>) => React.JSX.Element;
@@ -1,9 +1,6 @@
1
1
  import React, { createContext, useContext } from 'react';
2
2
  import { Channel } from '../../components';
3
3
  export const ThreadContext = createContext(undefined);
4
- export const useThreadContext = () => {
5
- const thread = useContext(ThreadContext);
6
- return thread ?? undefined;
7
- };
4
+ export const useThreadContext = () => useContext(ThreadContext);
8
5
  export const ThreadProvider = ({ children, thread, }) => (React.createElement(ThreadContext.Provider, { value: thread },
9
6
  React.createElement(Channel, { channel: thread?.channel }, children)));
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { VirtuosoProps } from 'react-virtuoso';
2
+ import type { VirtuosoProps } from 'react-virtuoso';
3
3
  import type { Thread } from 'stream-chat';
4
4
  type ThreadListProps = {
5
5
  virtuosoProps?: VirtuosoProps<Thread, unknown>;
@@ -5,5 +5,5 @@ export type ThreadListItemProps = {
5
5
  thread: Thread;
6
6
  threadListItemUIProps?: ThreadListItemUIProps;
7
7
  };
8
- export declare const useThreadListItemContext: () => Thread<import("stream-chat").DefaultGenerics> | undefined;
8
+ export declare const useThreadListItemContext: () => Thread | undefined;
9
9
  export declare const ThreadListItem: ({ thread, threadListItemUIProps, }: ThreadListItemProps) => React.JSX.Element;
@@ -1,2 +1,2 @@
1
- import { ThreadManagerState } from 'stream-chat';
1
+ import type { ThreadManagerState } from 'stream-chat';
2
2
  export declare const useThreadManagerState: <T extends readonly unknown[]>(selector: (nextValue: ThreadManagerState) => T) => T;
@@ -1,4 +1,4 @@
1
- import { ThreadState } from 'stream-chat';
1
+ import type { ThreadState } from 'stream-chat';
2
2
  /**
3
3
  * @description returns thread state, prioritizes `ThreadListItemContext` falls back to `ThreadContext` if not former is not present
4
4
  */
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { ComponentPropsWithoutRef } from 'react';
2
+ import type { ComponentPropsWithoutRef } from 'react';
3
3
  export declare const Icon: {
4
4
  MessageBubble: (props: ComponentPropsWithoutRef<'svg'>) => React.JSX.Element;
5
5
  MessageBubbleEmpty: (props: ComponentPropsWithoutRef<'svg'>) => React.JSX.Element;