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,78 +0,0 @@
1
- import React from 'react';
2
- import type { CommandResponse, UserResponse } from 'stream-chat';
3
- import type { TriggerSettings } from '../MessageInput/DefaultTriggerProvider';
4
- import type { CustomTrigger, DefaultStreamChatGenerics, UnknownType } from '../../types/types';
5
- import { EmojiSearchIndex, EmojiSearchIndexResult } from '../MessageInput';
6
- type ObjectUnion<T> = T[keyof T];
7
- export type SuggestionCommand<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = CommandResponse<StreamChatGenerics>;
8
- export type SuggestionUser<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = UserResponse<StreamChatGenerics>;
9
- export type SuggestionEmoji<T extends UnknownType = UnknownType> = EmojiSearchIndexResult & T;
10
- export type SuggestionItem<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics, T extends UnknownType = UnknownType> = SuggestionUser<StreamChatGenerics> | SuggestionCommand<StreamChatGenerics> | SuggestionEmoji<T>;
11
- export type SuggestionItemProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics, T extends UnknownType = UnknownType> = {
12
- className: string;
13
- component: React.ComponentType<{
14
- entity: SuggestionItem<StreamChatGenerics, T>;
15
- selected: boolean;
16
- }>;
17
- item: SuggestionItem<StreamChatGenerics, T>;
18
- key: React.Key;
19
- onClickHandler: (event: React.BaseSyntheticEvent, item: SuggestionItem<StreamChatGenerics, T>) => void;
20
- onSelectHandler: (item: SuggestionItem<StreamChatGenerics, T>) => void;
21
- selected: boolean;
22
- style: React.CSSProperties;
23
- value: string;
24
- };
25
- export interface SuggestionHeaderProps {
26
- currentTrigger: string;
27
- value: string;
28
- }
29
- export type SuggestionListProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics, V extends CustomTrigger = CustomTrigger> = ObjectUnion<{
30
- [key in keyof TriggerSettings<StreamChatGenerics, V>]: {
31
- component: TriggerSettings<StreamChatGenerics, V>[key]['component'];
32
- currentTrigger: string;
33
- dropdownScroll: (element: HTMLDivElement) => void;
34
- getSelectedItem: ((item: Parameters<TriggerSettings<StreamChatGenerics, V>[key]['output']>[0]) => void) | null;
35
- getTextToReplace: (item: Parameters<TriggerSettings<StreamChatGenerics, V>[key]['output']>[0]) => {
36
- caretPosition: 'start' | 'end' | 'next' | number;
37
- text: string;
38
- key?: string;
39
- };
40
- Header: React.ComponentType<SuggestionHeaderProps>;
41
- onSelect: (newToken: {
42
- caretPosition: 'start' | 'end' | 'next' | number;
43
- text: string;
44
- }) => void;
45
- selectionEnd: number;
46
- SuggestionItem: React.ComponentType<SuggestionItemProps>;
47
- values: Parameters<Parameters<TriggerSettings<StreamChatGenerics, V>[key]['dataProvider']>[2]>[0];
48
- className?: string;
49
- itemClassName?: string;
50
- itemStyle?: React.CSSProperties;
51
- style?: React.CSSProperties;
52
- value?: string;
53
- };
54
- }>;
55
- export type ChatAutoCompleteProps<T extends UnknownType = UnknownType> = {
56
- /** Override the default disabled state of the underlying `textarea` component. */
57
- disabled?: boolean;
58
- /** Function to override the default submit handler on the underlying `textarea` component */
59
- handleSubmit?: (event: React.BaseSyntheticEvent) => void;
60
- /** Function to run on blur of the underlying `textarea` component */
61
- onBlur?: React.FocusEventHandler<HTMLTextAreaElement>;
62
- /** Function to override the default onChange behavior on the underlying `textarea` component */
63
- onChange?: React.ChangeEventHandler<HTMLTextAreaElement>;
64
- /** Function to run on focus of the underlying `textarea` component */
65
- onFocus?: React.FocusEventHandler<HTMLTextAreaElement>;
66
- /** Function to override the default onPaste behavior on the underlying `textarea` component */
67
- onPaste?: (event: React.ClipboardEvent<HTMLTextAreaElement>) => void;
68
- /** Placeholder for the underlying `textarea` component */
69
- placeholder?: string;
70
- /** The initial number of rows for the underlying `textarea` component */
71
- rows?: number;
72
- /** The text value of the underlying `textarea` component */
73
- value?: string;
74
- /** Function to override the default emojiReplace behavior on the `wordReplace` prop of the `textarea` component */
75
- wordReplace?: (word: string, emojiIndex?: EmojiSearchIndex<T>) => string;
76
- };
77
- export declare const ChatAutoComplete: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics, V extends CustomTrigger = CustomTrigger>(props: ChatAutoCompleteProps) => React.JSX.Element;
78
- export {};
@@ -1,33 +0,0 @@
1
- import React, { useCallback } from 'react';
2
- import { AutoCompleteTextarea } from '../AutoCompleteTextarea';
3
- import { LoadingIndicator } from '../Loading/LoadingIndicator';
4
- import { useMessageInputContext } from '../../context/MessageInputContext';
5
- import { useTranslationContext } from '../../context/TranslationContext';
6
- import { useComponentContext } from '../../context/ComponentContext';
7
- const UnMemoizedChatAutoComplete = (props) => {
8
- const { AutocompleteSuggestionItem: SuggestionItem, AutocompleteSuggestionList: SuggestionList, } = useComponentContext('ChatAutoComplete');
9
- const { t } = useTranslationContext('ChatAutoComplete');
10
- const messageInput = useMessageInputContext('ChatAutoComplete');
11
- const { cooldownRemaining, disabled, emojiSearchIndex, textareaRef: innerRef, } = messageInput;
12
- const placeholder = props.placeholder || t('Type your message');
13
- const emojiReplace = props.wordReplace
14
- ? (word) => props.wordReplace?.(word, emojiSearchIndex)
15
- : async (word) => {
16
- const found = (await emojiSearchIndex?.search(word)) || [];
17
- const emoji = found
18
- .filter(Boolean)
19
- .slice(0, 10)
20
- .find(({ emoticons }) => !!emoticons?.includes(word));
21
- if (!emoji)
22
- return null;
23
- const [firstSkin] = emoji.skins ?? [];
24
- return emoji.native ?? firstSkin.native;
25
- };
26
- const updateInnerRef = useCallback((ref) => {
27
- if (innerRef) {
28
- innerRef.current = ref;
29
- }
30
- }, [innerRef]);
31
- return (React.createElement(AutoCompleteTextarea, { additionalTextareaProps: messageInput.additionalTextareaProps, "aria-label": cooldownRemaining ? t('Slow Mode ON') : placeholder, className: 'str-chat__textarea__textarea str-chat__message-textarea', closeCommandsList: messageInput.closeCommandsList, closeMentionsList: messageInput.closeMentionsList, containerClassName: 'str-chat__textarea str-chat__message-textarea-react-host', disabled: (props.disabled ?? disabled) || !!cooldownRemaining, disableMentions: messageInput.disableMentions, grow: messageInput.grow, handleSubmit: props.handleSubmit || messageInput.handleSubmit, innerRef: updateInnerRef, loadingComponent: LoadingIndicator, maxRows: messageInput.maxRows, minChar: 0, minRows: messageInput.minRows, onBlur: props.onBlur, onChange: props.onChange || messageInput.handleChange, onFocus: props.onFocus, onPaste: props.onPaste || messageInput.onPaste, placeholder: cooldownRemaining ? t('Slow Mode ON') : placeholder, replaceWord: emojiReplace, rows: props.rows || 1, shouldSubmit: messageInput.shouldSubmit, showCommandsList: messageInput.showCommandsList, showMentionsList: messageInput.showMentionsList, SuggestionItem: SuggestionItem, SuggestionList: SuggestionList, trigger: messageInput.autocompleteTriggers || {}, value: props.value || messageInput.text }));
32
- };
33
- export const ChatAutoComplete = React.memo(UnMemoizedChatAutoComplete);
@@ -1 +0,0 @@
1
- export * from './ChatAutoComplete';
@@ -1 +0,0 @@
1
- export * from './ChatAutoComplete';
@@ -1 +0,0 @@
1
- export * from './CommandItem';
@@ -1 +0,0 @@
1
- export * from './CommandItem';
@@ -1,16 +0,0 @@
1
- import React from 'react';
2
- const UnMemoizedEmoticonItem = (props) => {
3
- const { entity } = props;
4
- const hasEntity = Object.keys(entity).length;
5
- const itemParts = entity?.itemNameParts;
6
- const renderName = () => {
7
- if (!hasEntity)
8
- return null;
9
- return (hasEntity &&
10
- itemParts.parts.map((part, i) => part.toLowerCase() === itemParts.match.toLowerCase() ? (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))));
11
- };
12
- return (React.createElement("div", { className: 'str-chat__emoji-item' },
13
- React.createElement("span", { className: 'str-chat__emoji-item--entity' }, entity.native),
14
- React.createElement("span", { className: 'str-chat__emoji-item--name' }, renderName())));
15
- };
16
- export const EmoticonItem = React.memo(UnMemoizedEmoticonItem);
@@ -1 +0,0 @@
1
- export * from './EmoticonItem';
@@ -1 +0,0 @@
1
- export * from './EmoticonItem';
@@ -1,35 +0,0 @@
1
- import React, { PropsWithChildren } from 'react';
2
- import type { SuggestionCommand, SuggestionUser } from '../ChatAutoComplete/ChatAutoComplete';
3
- import type { CommandItemProps } from '../CommandItem/CommandItem';
4
- import type { EmoticonItemProps } from '../EmoticonItem/EmoticonItem';
5
- import type { UserItemProps } from '../UserItem/UserItem';
6
- import type { CustomTrigger, DefaultStreamChatGenerics, UnknownType } from '../../types/types';
7
- export type AutocompleteMinimalData = {
8
- id?: string;
9
- name?: string;
10
- } & ({
11
- id: string;
12
- } | {
13
- name: string;
14
- });
15
- export type CommandTriggerSetting<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = TriggerSetting<CommandItemProps, SuggestionCommand<StreamChatGenerics>>;
16
- export type EmojiTriggerSetting = TriggerSetting<EmoticonItemProps>;
17
- export type UserTriggerSetting<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = TriggerSetting<UserItemProps, SuggestionUser<StreamChatGenerics>>;
18
- export type TriggerSetting<T extends UnknownType = UnknownType, U = UnknownType> = {
19
- component: string | React.ComponentType<T>;
20
- dataProvider: (query: string, text: string, onReady: (data: (U & AutocompleteMinimalData)[], token: string) => void) => U[] | PromiseLike<void> | void;
21
- output: (entity: U) => {
22
- caretPosition: 'start' | 'end' | 'next' | number;
23
- text: string;
24
- key?: string;
25
- } | string | null;
26
- callback?: (item: U) => void;
27
- };
28
- export type TriggerSettings<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics, V extends CustomTrigger = CustomTrigger> = {
29
- [key in keyof V]: TriggerSetting<V[key]['componentProps'], V[key]['data']>;
30
- } | {
31
- '/': CommandTriggerSetting<StreamChatGenerics>;
32
- ':': EmojiTriggerSetting;
33
- '@': UserTriggerSetting<StreamChatGenerics>;
34
- };
35
- export declare const DefaultTriggerProvider: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics, V extends CustomTrigger = CustomTrigger>({ children, }: PropsWithChildren<Record<string, unknown>>) => React.JSX.Element;
@@ -1,24 +0,0 @@
1
- import React from 'react';
2
- import { useCommandTrigger } from './hooks/useCommandTrigger';
3
- import { useEmojiTrigger } from './hooks/useEmojiTrigger';
4
- import { useUserTrigger } from './hooks/useUserTrigger';
5
- import { MessageInputContextProvider, useMessageInputContext, } from '../../context/MessageInputContext';
6
- export const DefaultTriggerProvider = ({ children, }) => {
7
- const currentValue = useMessageInputContext('DefaultTriggerProvider');
8
- const defaultAutocompleteTriggers = {
9
- '/': useCommandTrigger(),
10
- ':': useEmojiTrigger(currentValue.emojiSearchIndex),
11
- '@': useUserTrigger({
12
- disableMentions: currentValue.disableMentions,
13
- mentionAllAppUsers: currentValue.mentionAllAppUsers,
14
- mentionQueryParams: currentValue.mentionQueryParams,
15
- onSelectUser: currentValue.onSelectUser,
16
- useMentionsTransliteration: currentValue.useMentionsTransliteration,
17
- }),
18
- };
19
- const newValue = {
20
- ...currentValue,
21
- autocompleteTriggers: defaultAutocompleteTriggers,
22
- };
23
- return (React.createElement(MessageInputContextProvider, { value: newValue }, children));
24
- };
@@ -1,4 +0,0 @@
1
- import React, { PropsWithChildren } from 'react';
2
- import type { MessageInputProps } from './MessageInput';
3
- import type { CustomTrigger, DefaultStreamChatGenerics } from '../../types/types';
4
- export declare const DropzoneProvider: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics, V extends CustomTrigger = CustomTrigger>(props: PropsWithChildren<MessageInputProps<StreamChatGenerics, V>>) => React.JSX.Element;
@@ -1,23 +0,0 @@
1
- import React from 'react';
2
- import { ImageDropzone } from '../ReactFileUtilities';
3
- import { useCooldownTimer } from './hooks/useCooldownTimer';
4
- import { useCreateMessageInputContext } from './hooks/useCreateMessageInputContext';
5
- import { useMessageInputState } from './hooks/useMessageInputState';
6
- import { useChannelStateContext } from '../../context/ChannelStateContext';
7
- import { MessageInputContextProvider, useMessageInputContext, } from '../../context/MessageInputContext';
8
- const DropzoneInner = ({ children, }) => {
9
- const { acceptedFiles, multipleUploads } = useChannelStateContext('DropzoneProvider');
10
- const { cooldownRemaining, isUploadEnabled, maxFilesLeft, uploadNewFiles } = useMessageInputContext('DropzoneProvider');
11
- return (React.createElement(ImageDropzone, { accept: acceptedFiles, disabled: !isUploadEnabled || maxFilesLeft === 0 || !!cooldownRemaining, handleFiles: uploadNewFiles, maxNumberOfFiles: maxFilesLeft, multiple: multipleUploads }, children));
12
- };
13
- export const DropzoneProvider = (props) => {
14
- const cooldownTimerState = useCooldownTimer();
15
- const messageInputState = useMessageInputState(props);
16
- const messageInputContextValue = useCreateMessageInputContext({
17
- ...cooldownTimerState,
18
- ...messageInputState,
19
- ...props,
20
- });
21
- return (React.createElement(MessageInputContextProvider, { value: messageInputContextValue },
22
- React.createElement(DropzoneInner, null, props.children)));
23
- };
@@ -1,14 +0,0 @@
1
- import type { FileLike } from '../../ReactFileUtilities';
2
- import type { Attachment } from 'stream-chat';
3
- import type { MessageInputReducerAction, MessageInputState } from './useMessageInputState';
4
- import type { MessageInputProps } from '../MessageInput';
5
- import type { LocalAttachment } from '../types';
6
- import type { CustomTrigger, DefaultStreamChatGenerics } from '../../../types/types';
7
- export declare const useAttachments: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics, V extends CustomTrigger = CustomTrigger>(props: MessageInputProps<StreamChatGenerics, V>, state: MessageInputState<StreamChatGenerics>, dispatch: React.Dispatch<MessageInputReducerAction<StreamChatGenerics>>, textareaRef: React.MutableRefObject<HTMLTextAreaElement | undefined>) => {
8
- maxFilesLeft: number;
9
- numberOfUploads: number;
10
- removeAttachments: (ids: string[]) => void;
11
- uploadAttachment: (att: LocalAttachment<StreamChatGenerics>) => Promise<LocalAttachment<StreamChatGenerics> | undefined>;
12
- uploadNewFiles: (files: FileList | File[] | FileLike[]) => void;
13
- upsertAttachments: (attachments: (Attachment<StreamChatGenerics> | LocalAttachment<StreamChatGenerics>)[]) => void;
14
- };
@@ -1,209 +0,0 @@
1
- import { useCallback } from 'react';
2
- import { nanoid } from 'nanoid';
3
- import { checkUploadPermissions } from './utils';
4
- import { isLocalAttachment, isLocalImageAttachment } from '../../Attachment';
5
- import { createFileFromBlobs, generateFileName, isBlobButNotFile, } from '../../ReactFileUtilities';
6
- import { useChannelActionContext, useChannelStateContext, useChatContext, useTranslationContext, } from '../../../context';
7
- const apiMaxNumberOfFiles = 10;
8
- // const isAudioFile = (file: FileLike) => file.type.includes('audio/');
9
- const isImageFile = (file) => file.type.startsWith('image/') && !file.type.endsWith('.photoshop'); // photoshop files begin with 'image/'
10
- // const isVideoFile = (file: FileLike) => file.type.includes('video/');
11
- const getAttachmentTypeFromMime = (mimeType) => {
12
- if (mimeType.startsWith('image/') && !mimeType.endsWith('.photoshop'))
13
- return 'image';
14
- if (mimeType.includes('video/'))
15
- return 'video';
16
- if (mimeType.includes('audio/'))
17
- return 'audio';
18
- return 'file';
19
- };
20
- const ensureIsLocalAttachment = (attachment) => {
21
- if (isLocalAttachment(attachment)) {
22
- return attachment;
23
- }
24
- const { localMetadata, ...rest } = attachment;
25
- return {
26
- localMetadata: {
27
- ...(localMetadata ?? {}),
28
- id: localMetadata?.id || nanoid(),
29
- },
30
- ...rest,
31
- };
32
- };
33
- export const useAttachments = (props, state, dispatch, textareaRef) => {
34
- const { doFileUploadRequest, doImageUploadRequest, errorHandler, noFiles } = props;
35
- const { getAppSettings } = useChatContext('useAttachments');
36
- const { t } = useTranslationContext('useAttachments');
37
- const { addNotification } = useChannelActionContext('useAttachments');
38
- const { channel, maxNumberOfFiles, multipleUploads } = useChannelStateContext('useAttachments');
39
- // Number of files that the user can still add. Should never be more than the amount allowed by the API.
40
- // If multipleUploads is false, we only want to allow a single upload.
41
- const maxFilesAllowed = !multipleUploads ? 1 : maxNumberOfFiles || apiMaxNumberOfFiles;
42
- const numberOfUploads = Object.values(state.attachments).filter(({ localMetadata }) => localMetadata.uploadState && localMetadata.uploadState !== 'failed').length;
43
- const maxFilesLeft = maxFilesAllowed - numberOfUploads;
44
- const removeAttachments = useCallback((ids) => {
45
- if (!ids.length)
46
- return;
47
- dispatch({ ids, type: 'removeAttachments' });
48
- }, [dispatch]);
49
- const upsertAttachments = useCallback((attachments) => {
50
- if (!attachments.length)
51
- return;
52
- dispatch({
53
- attachments: attachments.map(ensureIsLocalAttachment),
54
- type: 'upsertAttachments',
55
- });
56
- }, [dispatch]);
57
- const uploadAttachment = useCallback(async (att) => {
58
- const { localMetadata, ...providedAttachmentData } = att;
59
- if (!localMetadata?.file)
60
- return att;
61
- const { file } = localMetadata;
62
- const isImage = isImageFile(file);
63
- if (noFiles && !isImage)
64
- return att;
65
- const canUpload = await checkUploadPermissions({
66
- addNotification,
67
- file,
68
- getAppSettings,
69
- t,
70
- uploadType: isImage ? 'image' : 'file',
71
- });
72
- if (!canUpload)
73
- return att;
74
- localMetadata.id = localMetadata?.id ?? nanoid();
75
- const finalAttachment = {
76
- type: getAttachmentTypeFromMime(file.type),
77
- };
78
- if (isImage) {
79
- localMetadata.previewUri = URL.createObjectURL?.(file);
80
- if (file instanceof File) {
81
- finalAttachment.fallback = file.name;
82
- }
83
- }
84
- else {
85
- finalAttachment.file_size = file.size;
86
- finalAttachment.mime_type = file.type;
87
- if (file instanceof File) {
88
- finalAttachment.title = file.name;
89
- }
90
- }
91
- Object.assign(finalAttachment, providedAttachmentData);
92
- upsertAttachments([
93
- {
94
- ...finalAttachment,
95
- localMetadata: {
96
- ...localMetadata,
97
- uploadState: 'uploading',
98
- },
99
- },
100
- ]);
101
- let response;
102
- try {
103
- const doUploadRequest = isImage ? doImageUploadRequest : doFileUploadRequest;
104
- if (doUploadRequest) {
105
- response = await doUploadRequest(file, channel);
106
- }
107
- else {
108
- response = await channel[isImage ? 'sendImage' : 'sendFile'](file);
109
- }
110
- }
111
- catch (error) {
112
- let finalError = {
113
- message: t('Error uploading attachment'),
114
- name: 'Error',
115
- };
116
- if (typeof error.message === 'string') {
117
- finalError = error;
118
- }
119
- else if (typeof error === 'object') {
120
- finalError = Object.assign(finalError, error);
121
- }
122
- console.error(finalError);
123
- addNotification(finalError.message, 'error');
124
- const failedAttachment = {
125
- ...finalAttachment,
126
- localMetadata: {
127
- ...localMetadata,
128
- uploadState: 'failed',
129
- },
130
- };
131
- upsertAttachments([failedAttachment]);
132
- if (errorHandler) {
133
- errorHandler(finalError, 'upload-attachment', {
134
- ...file,
135
- id: localMetadata.id,
136
- });
137
- }
138
- return failedAttachment;
139
- }
140
- if (!response) {
141
- // Copied this from useImageUpload / useFileUpload.
142
- // If doUploadRequest returns any falsy value, then don't create the upload preview.
143
- // This is for the case if someone wants to handle failure on app level.
144
- removeAttachments([localMetadata.id]);
145
- return;
146
- }
147
- const uploadedAttachment = {
148
- ...finalAttachment,
149
- localMetadata: {
150
- ...localMetadata,
151
- uploadState: 'finished',
152
- },
153
- };
154
- if (isLocalImageAttachment(uploadedAttachment)) {
155
- if (uploadedAttachment.localMetadata.previewUri) {
156
- URL.revokeObjectURL(uploadedAttachment.localMetadata.previewUri);
157
- delete uploadedAttachment.localMetadata.previewUri;
158
- }
159
- uploadedAttachment.image_url = response.file;
160
- }
161
- else {
162
- uploadedAttachment.asset_url = response.file;
163
- }
164
- if (response.thumb_url) {
165
- uploadedAttachment.thumb_url = response.thumb_url;
166
- }
167
- upsertAttachments([uploadedAttachment]);
168
- return uploadedAttachment;
169
- }, [
170
- addNotification,
171
- channel,
172
- doFileUploadRequest,
173
- doImageUploadRequest,
174
- errorHandler,
175
- getAppSettings,
176
- noFiles,
177
- removeAttachments,
178
- t,
179
- upsertAttachments,
180
- ]);
181
- const uploadNewFiles = useCallback((files) => {
182
- const filesToBeUploaded = noFiles
183
- ? Array.from(files).filter(isImageFile)
184
- : Array.from(files);
185
- filesToBeUploaded.slice(0, maxFilesLeft).forEach((fileLike) => {
186
- uploadAttachment({
187
- localMetadata: {
188
- file: isBlobButNotFile(fileLike)
189
- ? createFileFromBlobs({
190
- blobsArray: [fileLike],
191
- fileName: generateFileName(fileLike.type),
192
- mimeType: fileLike.type,
193
- })
194
- : fileLike,
195
- id: nanoid(),
196
- },
197
- });
198
- });
199
- textareaRef.current?.focus();
200
- }, [maxFilesLeft, noFiles, textareaRef, uploadAttachment]);
201
- return {
202
- maxFilesLeft,
203
- numberOfUploads,
204
- removeAttachments,
205
- uploadAttachment,
206
- uploadNewFiles,
207
- upsertAttachments,
208
- };
209
- };
@@ -1,3 +0,0 @@
1
- import type { CommandTriggerSetting } from '../DefaultTriggerProvider';
2
- import type { DefaultStreamChatGenerics } from '../../../types/types';
3
- export declare const useCommandTrigger: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>() => CommandTriggerSetting<StreamChatGenerics>;
@@ -1,62 +0,0 @@
1
- import { CommandItem } from '../../CommandItem/CommandItem';
2
- import { useChannelStateContext } from '../../../context/ChannelStateContext';
3
- import { useTranslationContext } from '../../../context';
4
- export const useCommandTrigger = () => {
5
- const { channelConfig } = useChannelStateContext('useCommandTrigger');
6
- const { t } = useTranslationContext('useCommandTrigger');
7
- const commands = channelConfig?.commands;
8
- return {
9
- component: CommandItem,
10
- dataProvider: (query, text, onReady) => {
11
- if (text.indexOf('/') !== 0 || !commands) {
12
- return [];
13
- }
14
- const selectedCommands = commands.filter((command) => command.name?.indexOf(query) !== -1);
15
- // sort alphabetically unless you're matching the first char
16
- selectedCommands.sort((a, b) => {
17
- let nameA = a.name?.toLowerCase();
18
- let nameB = b.name?.toLowerCase();
19
- if (nameA?.indexOf(query) === 0) {
20
- nameA = `0${nameA}`;
21
- }
22
- if (nameB?.indexOf(query) === 0) {
23
- nameB = `0${nameB}`;
24
- }
25
- // Should confirm possible null / undefined when TS is fully implemented
26
- if (nameA != null && nameB != null) {
27
- if (nameA < nameB) {
28
- return -1;
29
- }
30
- if (nameA > nameB) {
31
- return 1;
32
- }
33
- }
34
- return 0;
35
- });
36
- const result = selectedCommands.slice(0, 5);
37
- if (onReady)
38
- onReady(result
39
- .filter((result) => result.name !== undefined)
40
- .map((commandData) => {
41
- const translatedCommandData = {
42
- name: commandData.name,
43
- };
44
- if (commandData.args)
45
- translatedCommandData.args = t(`${commandData.name}-command-args`, {
46
- defaultValue: commandData.args,
47
- });
48
- if (commandData.description)
49
- translatedCommandData.description = t(`${commandData.name}-command-description`, {
50
- defaultValue: commandData.description,
51
- });
52
- return translatedCommandData;
53
- }), query);
54
- return result;
55
- },
56
- output: (entity) => ({
57
- caretPosition: 'next',
58
- key: entity.name,
59
- text: `/${entity.name}`,
60
- }),
61
- };
62
- };
@@ -1,3 +0,0 @@
1
- import type { EmojiTriggerSetting } from '../DefaultTriggerProvider';
2
- import type { EmojiSearchIndex } from '../MessageInput';
3
- export declare const useEmojiTrigger: <T extends EmojiSearchIndex<import("../../../types/types").UnknownType>>(emojiSearchIndex?: T) => EmojiTriggerSetting;
@@ -1,29 +0,0 @@
1
- import { EmoticonItem } from '../../EmoticonItem/EmoticonItem';
2
- export const useEmojiTrigger = (emojiSearchIndex) => ({
3
- component: EmoticonItem,
4
- dataProvider: async (query, _, onReady) => {
5
- if (query.length === 0 || query.charAt(0).match(/[^a-zA-Z0-9+-]/)) {
6
- return onReady([], query);
7
- }
8
- const emojis = (await emojiSearchIndex?.search(query)) ?? [];
9
- // emojiIndex.search sometimes returns undefined values, so filter those out first
10
- const result = emojis
11
- .filter(Boolean)
12
- .slice(0, 7)
13
- .map(({ id, name, native, skins = [] }) => {
14
- const [firstSkin] = skins;
15
- return {
16
- id,
17
- name,
18
- native: native ?? firstSkin.native,
19
- };
20
- });
21
- if (onReady)
22
- onReady(result, query);
23
- },
24
- output: (entity) => ({
25
- caretPosition: 'next',
26
- key: entity.id,
27
- text: `${'native' in entity ? entity.native : ''}`,
28
- }),
29
- });
@@ -1,30 +0,0 @@
1
- import { Dispatch } from 'react';
2
- import type { MessageInputReducerAction, MessageInputState } from './useMessageInputState';
3
- import type { DefaultStreamChatGenerics } from '../../../types/types';
4
- import type { LinkPreview } from '../types';
5
- import { SetLinkPreviewMode } from '../types';
6
- import type { DebouncedFunc } from 'lodash';
7
- export type URLEnrichmentConfig = {
8
- /** Number of milliseconds to debounce firing the URL enrichment queries when typing. The default value is 1500(ms). */
9
- debounceURLEnrichmentMs?: number;
10
- /** Allows for toggling the URL enrichment and link previews in `MessageInput`. By default, the feature is disabled. */
11
- enrichURLForPreview?: boolean;
12
- /** Custom function to identify URLs in a string and request OG data */
13
- findURLFn?: (text: string) => string[];
14
- /** Custom function to react to link preview dismissal */
15
- onLinkPreviewDismissed?: (linkPreview: LinkPreview) => void;
16
- };
17
- type UseEnrichURLsParams<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = URLEnrichmentConfig & {
18
- dispatch: Dispatch<MessageInputReducerAction<StreamChatGenerics>>;
19
- linkPreviews: MessageInputState<StreamChatGenerics>['linkPreviews'];
20
- };
21
- export type EnrichURLsController = {
22
- /** Function cancels all the scheduled or in-progress URL enrichment queries and resets the state. */
23
- cancelURLEnrichment: () => void;
24
- /** Function called when a single link preview is dismissed. */
25
- dismissLinkPreview: (linkPreview: LinkPreview) => void;
26
- /** Function that triggers the search for URLs and their enrichment. */
27
- findAndEnqueueURLsToEnrich?: DebouncedFunc<(text: string, mode?: SetLinkPreviewMode) => void>;
28
- };
29
- export declare const useLinkPreviews: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ debounceURLEnrichmentMs: debounceURLEnrichmentMsInputContext, dispatch, enrichURLForPreview, findURLFn: findURLFnInputContext, linkPreviews, onLinkPreviewDismissed: onLinkPreviewDismissedInputContext, }: UseEnrichURLsParams<StreamChatGenerics>) => EnrichURLsController;
30
- export {};