stream-chat-react-native-core 9.0.0-beta.31 → 9.0.0-beta.33

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 (598) hide show
  1. package/lib/commonjs/components/Attachment/Attachment.js +15 -52
  2. package/lib/commonjs/components/Attachment/Attachment.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/FileAttachment.js +4 -6
  4. package/lib/commonjs/components/Attachment/FileAttachment.js.map +1 -1
  5. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js +4 -10
  6. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js.map +1 -1
  7. package/lib/commonjs/components/Attachment/FilePreview.js +3 -6
  8. package/lib/commonjs/components/Attachment/FilePreview.js.map +1 -1
  9. package/lib/commonjs/components/Attachment/Gallery.js +9 -28
  10. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  11. package/lib/commonjs/components/Attachment/GalleryImage.js +3 -3
  12. package/lib/commonjs/components/Attachment/GalleryImage.js.map +1 -1
  13. package/lib/commonjs/components/Attachment/Giphy/GiphyImage.js +7 -13
  14. package/lib/commonjs/components/Attachment/Giphy/GiphyImage.js.map +1 -1
  15. package/lib/commonjs/components/Attachment/UnsupportedAttachment.js +4 -6
  16. package/lib/commonjs/components/Attachment/UnsupportedAttachment.js.map +1 -1
  17. package/lib/commonjs/components/Attachment/UrlPreview/URLPreview.js +3 -3
  18. package/lib/commonjs/components/Attachment/UrlPreview/URLPreview.js.map +1 -1
  19. package/lib/commonjs/components/Attachment/UrlPreview/URLPreviewCompact.js +3 -3
  20. package/lib/commonjs/components/Attachment/UrlPreview/URLPreviewCompact.js.map +1 -1
  21. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +4 -2
  22. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  23. package/lib/commonjs/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js +7 -4
  24. package/lib/commonjs/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js.map +1 -1
  25. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js +9 -13
  26. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
  27. package/lib/commonjs/components/Channel/Channel.js +9 -421
  28. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  29. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js +0 -8
  30. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  31. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js +3 -77
  32. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  33. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +2 -134
  34. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  35. package/lib/commonjs/components/ChannelList/ChannelList.js +1 -57
  36. package/lib/commonjs/components/ChannelList/ChannelList.js.map +1 -1
  37. package/lib/commonjs/components/ChannelList/ChannelListLoadingIndicator.js +4 -2
  38. package/lib/commonjs/components/ChannelList/ChannelListLoadingIndicator.js.map +1 -1
  39. package/lib/commonjs/components/ChannelList/ChannelListView.js +14 -23
  40. package/lib/commonjs/components/ChannelList/ChannelListView.js.map +1 -1
  41. package/lib/commonjs/components/ChannelList/hooks/useCreateChannelsContext.js +1 -39
  42. package/lib/commonjs/components/ChannelList/hooks/useCreateChannelsContext.js.map +1 -1
  43. package/lib/commonjs/components/ChannelPreview/ChannelDetailsBottomSheet.js +3 -2
  44. package/lib/commonjs/components/ChannelPreview/ChannelDetailsBottomSheet.js.map +1 -1
  45. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js +6 -8
  46. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js.map +1 -1
  47. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js +12 -24
  48. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
  49. package/lib/commonjs/components/ChannelPreview/ChannelPreviewView.js +15 -35
  50. package/lib/commonjs/components/ChannelPreview/ChannelPreviewView.js.map +1 -1
  51. package/lib/commonjs/components/ChannelPreview/ChannelSwipableWrapper.js +3 -3
  52. package/lib/commonjs/components/ChannelPreview/ChannelSwipableWrapper.js.map +1 -1
  53. package/lib/commonjs/components/Chat/Chat.js +4 -6
  54. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  55. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js +0 -2
  56. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  57. package/lib/commonjs/components/ImageGallery/ImageGallery.js +7 -9
  58. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  59. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +4 -2
  60. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  61. package/lib/commonjs/components/Message/Message.js +9 -13
  62. package/lib/commonjs/components/Message/Message.js.map +1 -1
  63. package/lib/commonjs/components/Message/MessageItemView/MessageBubble.js +4 -2
  64. package/lib/commonjs/components/Message/MessageItemView/MessageBubble.js.map +1 -1
  65. package/lib/commonjs/components/Message/MessageItemView/MessageContent.js +18 -39
  66. package/lib/commonjs/components/Message/MessageItemView/MessageContent.js.map +1 -1
  67. package/lib/commonjs/components/Message/MessageItemView/MessageDeleted.js +5 -7
  68. package/lib/commonjs/components/Message/MessageItemView/MessageDeleted.js.map +1 -1
  69. package/lib/commonjs/components/Message/MessageItemView/MessageFooter.js +4 -8
  70. package/lib/commonjs/components/Message/MessageItemView/MessageFooter.js.map +1 -1
  71. package/lib/commonjs/components/Message/MessageItemView/MessageHeader.js +8 -16
  72. package/lib/commonjs/components/Message/MessageItemView/MessageHeader.js.map +1 -1
  73. package/lib/commonjs/components/Message/MessageItemView/MessageItemView.js +13 -35
  74. package/lib/commonjs/components/Message/MessageItemView/MessageItemView.js.map +1 -1
  75. package/lib/commonjs/components/Message/MessageItemView/MessageReplies.js +3 -5
  76. package/lib/commonjs/components/Message/MessageItemView/MessageReplies.js.map +1 -1
  77. package/lib/commonjs/components/Message/MessageItemView/MessageTextContainer.js +3 -3
  78. package/lib/commonjs/components/Message/MessageItemView/MessageTextContainer.js.map +1 -1
  79. package/lib/commonjs/components/Message/MessageItemView/MessageWrapper.js +6 -4
  80. package/lib/commonjs/components/Message/MessageItemView/MessageWrapper.js.map +1 -1
  81. package/lib/commonjs/components/Message/MessageItemView/ReactionList/ReactionListBottom.js +6 -8
  82. package/lib/commonjs/components/Message/MessageItemView/ReactionList/ReactionListBottom.js.map +1 -1
  83. package/lib/commonjs/components/Message/MessageItemView/ReactionList/ReactionListTop.js +7 -11
  84. package/lib/commonjs/components/Message/MessageItemView/ReactionList/ReactionListTop.js.map +1 -1
  85. package/lib/commonjs/components/MessageInput/MessageComposer.js +15 -55
  86. package/lib/commonjs/components/MessageInput/MessageComposer.js.map +1 -1
  87. package/lib/commonjs/components/MessageInput/MessageInputHeaderView.js +5 -5
  88. package/lib/commonjs/components/MessageInput/MessageInputHeaderView.js.map +1 -1
  89. package/lib/commonjs/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.js +9 -17
  90. package/lib/commonjs/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.js.map +1 -1
  91. package/lib/commonjs/components/MessageInput/components/AttachmentPreview/FileAttachmentUploadPreview.js +5 -5
  92. package/lib/commonjs/components/MessageInput/components/AttachmentPreview/FileAttachmentUploadPreview.js.map +1 -1
  93. package/lib/commonjs/components/MessageInput/components/AttachmentPreview/ImageAttachmentUploadPreview.js +5 -5
  94. package/lib/commonjs/components/MessageInput/components/AttachmentPreview/ImageAttachmentUploadPreview.js.map +1 -1
  95. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.js +5 -5
  96. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.js.map +1 -1
  97. package/lib/commonjs/components/MessageInput/components/InputButtons/index.js +4 -4
  98. package/lib/commonjs/components/MessageInput/components/InputButtons/index.js.map +1 -1
  99. package/lib/commonjs/components/MessageInput/components/LinkPreviewList.js +3 -2
  100. package/lib/commonjs/components/MessageInput/components/LinkPreviewList.js.map +1 -1
  101. package/lib/commonjs/components/MessageInput/components/OutputButtons/index.js +7 -13
  102. package/lib/commonjs/components/MessageInput/components/OutputButtons/index.js.map +1 -1
  103. package/lib/commonjs/components/MessageList/MessageFlashList.js +14 -40
  104. package/lib/commonjs/components/MessageList/MessageFlashList.js.map +1 -1
  105. package/lib/commonjs/components/MessageList/MessageList.js +12 -38
  106. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  107. package/lib/commonjs/components/MessageList/StickyHeader.js +3 -1
  108. package/lib/commonjs/components/MessageList/StickyHeader.js.map +1 -1
  109. package/lib/commonjs/components/MessageList/hooks/useMessageList.js +2 -35
  110. package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
  111. package/lib/commonjs/components/MessageMenu/MessageActionList.js +4 -2
  112. package/lib/commonjs/components/MessageMenu/MessageActionList.js.map +1 -1
  113. package/lib/commonjs/components/MessageMenu/MessageMenu.js.map +1 -1
  114. package/lib/commonjs/components/MessageMenu/MessageUserReactions.js +4 -8
  115. package/lib/commonjs/components/MessageMenu/MessageUserReactions.js.map +1 -1
  116. package/lib/commonjs/components/MessageMenu/MessageUserReactionsItem.js +4 -2
  117. package/lib/commonjs/components/MessageMenu/MessageUserReactionsItem.js.map +1 -1
  118. package/lib/commonjs/components/Poll/CreatePollContent.js +3 -1
  119. package/lib/commonjs/components/Poll/CreatePollContent.js.map +1 -1
  120. package/lib/commonjs/components/Poll/Poll.js +12 -9
  121. package/lib/commonjs/components/Poll/Poll.js.map +1 -1
  122. package/lib/commonjs/components/Poll/components/PollAnswersList.js +5 -3
  123. package/lib/commonjs/components/Poll/components/PollAnswersList.js.map +1 -1
  124. package/lib/commonjs/components/Poll/components/PollOption.js +5 -3
  125. package/lib/commonjs/components/Poll/components/PollOption.js.map +1 -1
  126. package/lib/commonjs/components/Poll/components/PollResults/PollOptionFullResults.js +5 -5
  127. package/lib/commonjs/components/Poll/components/PollResults/PollOptionFullResults.js.map +1 -1
  128. package/lib/commonjs/components/Poll/components/PollResults/PollResults.js +5 -3
  129. package/lib/commonjs/components/Poll/components/PollResults/PollResults.js.map +1 -1
  130. package/lib/commonjs/components/Reply/Reply.js +4 -2
  131. package/lib/commonjs/components/Reply/Reply.js.map +1 -1
  132. package/lib/commonjs/components/Thread/Thread.js +4 -8
  133. package/lib/commonjs/components/Thread/Thread.js.map +1 -1
  134. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js +4 -6
  135. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  136. package/lib/commonjs/components/ThreadList/ThreadList.js +12 -15
  137. package/lib/commonjs/components/ThreadList/ThreadList.js.map +1 -1
  138. package/lib/commonjs/components/ThreadList/ThreadListItem.js +8 -11
  139. package/lib/commonjs/components/ThreadList/ThreadListItem.js.map +1 -1
  140. package/lib/commonjs/components/ui/Avatar/Avatar.js +3 -3
  141. package/lib/commonjs/components/ui/Avatar/Avatar.js.map +1 -1
  142. package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
  143. package/lib/commonjs/contexts/channelContext/ChannelContext.js.map +1 -1
  144. package/lib/commonjs/contexts/channelsContext/ChannelsContext.js.map +1 -1
  145. package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
  146. package/lib/commonjs/contexts/componentsContext/ComponentsContext.js +37 -0
  147. package/lib/commonjs/contexts/componentsContext/ComponentsContext.js.map +1 -0
  148. package/lib/commonjs/contexts/componentsContext/PLAN.md +148 -0
  149. package/lib/commonjs/contexts/componentsContext/defaultComponents.js +287 -0
  150. package/lib/commonjs/contexts/componentsContext/defaultComponents.js.map +1 -0
  151. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js +1 -9
  152. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  153. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContextBase.js.map +1 -1
  154. package/lib/commonjs/contexts/index.js +11 -0
  155. package/lib/commonjs/contexts/index.js.map +1 -1
  156. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  157. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +2 -76
  158. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  159. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  160. package/lib/commonjs/contexts/overlayContext/MessageOverlayHostLayer.js +37 -27
  161. package/lib/commonjs/contexts/overlayContext/MessageOverlayHostLayer.js.map +1 -1
  162. package/lib/commonjs/contexts/overlayContext/OverlayContext.js.map +1 -1
  163. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js +1 -4
  164. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js.map +1 -1
  165. package/lib/commonjs/contexts/threadsContext/ThreadsContext.js.map +1 -1
  166. package/lib/commonjs/version.json +1 -1
  167. package/lib/module/components/Attachment/Attachment.js +15 -52
  168. package/lib/module/components/Attachment/Attachment.js.map +1 -1
  169. package/lib/module/components/Attachment/FileAttachment.js +4 -6
  170. package/lib/module/components/Attachment/FileAttachment.js.map +1 -1
  171. package/lib/module/components/Attachment/FileAttachmentGroup.js +4 -10
  172. package/lib/module/components/Attachment/FileAttachmentGroup.js.map +1 -1
  173. package/lib/module/components/Attachment/FilePreview.js +3 -6
  174. package/lib/module/components/Attachment/FilePreview.js.map +1 -1
  175. package/lib/module/components/Attachment/Gallery.js +9 -28
  176. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  177. package/lib/module/components/Attachment/GalleryImage.js +3 -3
  178. package/lib/module/components/Attachment/GalleryImage.js.map +1 -1
  179. package/lib/module/components/Attachment/Giphy/GiphyImage.js +7 -13
  180. package/lib/module/components/Attachment/Giphy/GiphyImage.js.map +1 -1
  181. package/lib/module/components/Attachment/UnsupportedAttachment.js +4 -6
  182. package/lib/module/components/Attachment/UnsupportedAttachment.js.map +1 -1
  183. package/lib/module/components/Attachment/UrlPreview/URLPreview.js +3 -3
  184. package/lib/module/components/Attachment/UrlPreview/URLPreview.js.map +1 -1
  185. package/lib/module/components/Attachment/UrlPreview/URLPreviewCompact.js +3 -3
  186. package/lib/module/components/Attachment/UrlPreview/URLPreviewCompact.js.map +1 -1
  187. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +4 -2
  188. package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  189. package/lib/module/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js +7 -4
  190. package/lib/module/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js.map +1 -1
  191. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js +9 -13
  192. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
  193. package/lib/module/components/Channel/Channel.js +9 -421
  194. package/lib/module/components/Channel/Channel.js.map +1 -1
  195. package/lib/module/components/Channel/hooks/useCreateChannelContext.js +0 -8
  196. package/lib/module/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  197. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js +3 -77
  198. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  199. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +2 -134
  200. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  201. package/lib/module/components/ChannelList/ChannelList.js +1 -57
  202. package/lib/module/components/ChannelList/ChannelList.js.map +1 -1
  203. package/lib/module/components/ChannelList/ChannelListLoadingIndicator.js +4 -2
  204. package/lib/module/components/ChannelList/ChannelListLoadingIndicator.js.map +1 -1
  205. package/lib/module/components/ChannelList/ChannelListView.js +14 -23
  206. package/lib/module/components/ChannelList/ChannelListView.js.map +1 -1
  207. package/lib/module/components/ChannelList/hooks/useCreateChannelsContext.js +1 -39
  208. package/lib/module/components/ChannelList/hooks/useCreateChannelsContext.js.map +1 -1
  209. package/lib/module/components/ChannelPreview/ChannelDetailsBottomSheet.js +3 -2
  210. package/lib/module/components/ChannelPreview/ChannelDetailsBottomSheet.js.map +1 -1
  211. package/lib/module/components/ChannelPreview/ChannelPreview.js +6 -8
  212. package/lib/module/components/ChannelPreview/ChannelPreview.js.map +1 -1
  213. package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js +12 -24
  214. package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
  215. package/lib/module/components/ChannelPreview/ChannelPreviewView.js +15 -35
  216. package/lib/module/components/ChannelPreview/ChannelPreviewView.js.map +1 -1
  217. package/lib/module/components/ChannelPreview/ChannelSwipableWrapper.js +3 -3
  218. package/lib/module/components/ChannelPreview/ChannelSwipableWrapper.js.map +1 -1
  219. package/lib/module/components/Chat/Chat.js +4 -6
  220. package/lib/module/components/Chat/Chat.js.map +1 -1
  221. package/lib/module/components/Chat/hooks/useCreateChatContext.js +0 -2
  222. package/lib/module/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  223. package/lib/module/components/ImageGallery/ImageGallery.js +7 -9
  224. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  225. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +4 -2
  226. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  227. package/lib/module/components/Message/Message.js +9 -13
  228. package/lib/module/components/Message/Message.js.map +1 -1
  229. package/lib/module/components/Message/MessageItemView/MessageBubble.js +4 -2
  230. package/lib/module/components/Message/MessageItemView/MessageBubble.js.map +1 -1
  231. package/lib/module/components/Message/MessageItemView/MessageContent.js +18 -39
  232. package/lib/module/components/Message/MessageItemView/MessageContent.js.map +1 -1
  233. package/lib/module/components/Message/MessageItemView/MessageDeleted.js +5 -7
  234. package/lib/module/components/Message/MessageItemView/MessageDeleted.js.map +1 -1
  235. package/lib/module/components/Message/MessageItemView/MessageFooter.js +4 -8
  236. package/lib/module/components/Message/MessageItemView/MessageFooter.js.map +1 -1
  237. package/lib/module/components/Message/MessageItemView/MessageHeader.js +8 -16
  238. package/lib/module/components/Message/MessageItemView/MessageHeader.js.map +1 -1
  239. package/lib/module/components/Message/MessageItemView/MessageItemView.js +13 -35
  240. package/lib/module/components/Message/MessageItemView/MessageItemView.js.map +1 -1
  241. package/lib/module/components/Message/MessageItemView/MessageReplies.js +3 -5
  242. package/lib/module/components/Message/MessageItemView/MessageReplies.js.map +1 -1
  243. package/lib/module/components/Message/MessageItemView/MessageTextContainer.js +3 -3
  244. package/lib/module/components/Message/MessageItemView/MessageTextContainer.js.map +1 -1
  245. package/lib/module/components/Message/MessageItemView/MessageWrapper.js +6 -4
  246. package/lib/module/components/Message/MessageItemView/MessageWrapper.js.map +1 -1
  247. package/lib/module/components/Message/MessageItemView/ReactionList/ReactionListBottom.js +6 -8
  248. package/lib/module/components/Message/MessageItemView/ReactionList/ReactionListBottom.js.map +1 -1
  249. package/lib/module/components/Message/MessageItemView/ReactionList/ReactionListTop.js +7 -11
  250. package/lib/module/components/Message/MessageItemView/ReactionList/ReactionListTop.js.map +1 -1
  251. package/lib/module/components/MessageInput/MessageComposer.js +15 -55
  252. package/lib/module/components/MessageInput/MessageComposer.js.map +1 -1
  253. package/lib/module/components/MessageInput/MessageInputHeaderView.js +5 -5
  254. package/lib/module/components/MessageInput/MessageInputHeaderView.js.map +1 -1
  255. package/lib/module/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.js +9 -17
  256. package/lib/module/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.js.map +1 -1
  257. package/lib/module/components/MessageInput/components/AttachmentPreview/FileAttachmentUploadPreview.js +5 -5
  258. package/lib/module/components/MessageInput/components/AttachmentPreview/FileAttachmentUploadPreview.js.map +1 -1
  259. package/lib/module/components/MessageInput/components/AttachmentPreview/ImageAttachmentUploadPreview.js +5 -5
  260. package/lib/module/components/MessageInput/components/AttachmentPreview/ImageAttachmentUploadPreview.js.map +1 -1
  261. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.js +5 -5
  262. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.js.map +1 -1
  263. package/lib/module/components/MessageInput/components/InputButtons/index.js +4 -4
  264. package/lib/module/components/MessageInput/components/InputButtons/index.js.map +1 -1
  265. package/lib/module/components/MessageInput/components/LinkPreviewList.js +3 -2
  266. package/lib/module/components/MessageInput/components/LinkPreviewList.js.map +1 -1
  267. package/lib/module/components/MessageInput/components/OutputButtons/index.js +7 -13
  268. package/lib/module/components/MessageInput/components/OutputButtons/index.js.map +1 -1
  269. package/lib/module/components/MessageList/MessageFlashList.js +14 -40
  270. package/lib/module/components/MessageList/MessageFlashList.js.map +1 -1
  271. package/lib/module/components/MessageList/MessageList.js +12 -38
  272. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  273. package/lib/module/components/MessageList/StickyHeader.js +3 -1
  274. package/lib/module/components/MessageList/StickyHeader.js.map +1 -1
  275. package/lib/module/components/MessageList/hooks/useMessageList.js +2 -35
  276. package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
  277. package/lib/module/components/MessageMenu/MessageActionList.js +4 -2
  278. package/lib/module/components/MessageMenu/MessageActionList.js.map +1 -1
  279. package/lib/module/components/MessageMenu/MessageMenu.js.map +1 -1
  280. package/lib/module/components/MessageMenu/MessageUserReactions.js +4 -8
  281. package/lib/module/components/MessageMenu/MessageUserReactions.js.map +1 -1
  282. package/lib/module/components/MessageMenu/MessageUserReactionsItem.js +4 -2
  283. package/lib/module/components/MessageMenu/MessageUserReactionsItem.js.map +1 -1
  284. package/lib/module/components/Poll/CreatePollContent.js +3 -1
  285. package/lib/module/components/Poll/CreatePollContent.js.map +1 -1
  286. package/lib/module/components/Poll/Poll.js +12 -9
  287. package/lib/module/components/Poll/Poll.js.map +1 -1
  288. package/lib/module/components/Poll/components/PollAnswersList.js +5 -3
  289. package/lib/module/components/Poll/components/PollAnswersList.js.map +1 -1
  290. package/lib/module/components/Poll/components/PollOption.js +5 -3
  291. package/lib/module/components/Poll/components/PollOption.js.map +1 -1
  292. package/lib/module/components/Poll/components/PollResults/PollOptionFullResults.js +5 -5
  293. package/lib/module/components/Poll/components/PollResults/PollOptionFullResults.js.map +1 -1
  294. package/lib/module/components/Poll/components/PollResults/PollResults.js +5 -3
  295. package/lib/module/components/Poll/components/PollResults/PollResults.js.map +1 -1
  296. package/lib/module/components/Reply/Reply.js +4 -2
  297. package/lib/module/components/Reply/Reply.js.map +1 -1
  298. package/lib/module/components/Thread/Thread.js +4 -8
  299. package/lib/module/components/Thread/Thread.js.map +1 -1
  300. package/lib/module/components/Thread/components/ThreadFooterComponent.js +4 -6
  301. package/lib/module/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  302. package/lib/module/components/ThreadList/ThreadList.js +12 -15
  303. package/lib/module/components/ThreadList/ThreadList.js.map +1 -1
  304. package/lib/module/components/ThreadList/ThreadListItem.js +8 -11
  305. package/lib/module/components/ThreadList/ThreadListItem.js.map +1 -1
  306. package/lib/module/components/ui/Avatar/Avatar.js +3 -3
  307. package/lib/module/components/ui/Avatar/Avatar.js.map +1 -1
  308. package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
  309. package/lib/module/contexts/channelContext/ChannelContext.js.map +1 -1
  310. package/lib/module/contexts/channelsContext/ChannelsContext.js.map +1 -1
  311. package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
  312. package/lib/module/contexts/componentsContext/ComponentsContext.js +37 -0
  313. package/lib/module/contexts/componentsContext/ComponentsContext.js.map +1 -0
  314. package/lib/module/contexts/componentsContext/PLAN.md +148 -0
  315. package/lib/module/contexts/componentsContext/defaultComponents.js +287 -0
  316. package/lib/module/contexts/componentsContext/defaultComponents.js.map +1 -0
  317. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js +1 -9
  318. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  319. package/lib/module/contexts/imageGalleryContext/ImageGalleryContextBase.js.map +1 -1
  320. package/lib/module/contexts/index.js +11 -0
  321. package/lib/module/contexts/index.js.map +1 -1
  322. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  323. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +2 -76
  324. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  325. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  326. package/lib/module/contexts/overlayContext/MessageOverlayHostLayer.js +37 -27
  327. package/lib/module/contexts/overlayContext/MessageOverlayHostLayer.js.map +1 -1
  328. package/lib/module/contexts/overlayContext/OverlayContext.js.map +1 -1
  329. package/lib/module/contexts/overlayContext/OverlayProvider.js +1 -4
  330. package/lib/module/contexts/overlayContext/OverlayProvider.js.map +1 -1
  331. package/lib/module/contexts/threadsContext/ThreadsContext.js.map +1 -1
  332. package/lib/module/version.json +1 -1
  333. package/lib/typescript/components/Attachment/Attachment.d.ts +1 -1
  334. package/lib/typescript/components/Attachment/Attachment.d.ts.map +1 -1
  335. package/lib/typescript/components/Attachment/FileAttachment.d.ts +1 -1
  336. package/lib/typescript/components/Attachment/FileAttachment.d.ts.map +1 -1
  337. package/lib/typescript/components/Attachment/FileAttachmentGroup.d.ts +1 -2
  338. package/lib/typescript/components/Attachment/FileAttachmentGroup.d.ts.map +1 -1
  339. package/lib/typescript/components/Attachment/FilePreview.d.ts +2 -3
  340. package/lib/typescript/components/Attachment/FilePreview.d.ts.map +1 -1
  341. package/lib/typescript/components/Attachment/Gallery.d.ts +1 -1
  342. package/lib/typescript/components/Attachment/Gallery.d.ts.map +1 -1
  343. package/lib/typescript/components/Attachment/GalleryImage.d.ts +3 -2
  344. package/lib/typescript/components/Attachment/GalleryImage.d.ts.map +1 -1
  345. package/lib/typescript/components/Attachment/Giphy/GiphyImage.d.ts +4 -2
  346. package/lib/typescript/components/Attachment/Giphy/GiphyImage.d.ts.map +1 -1
  347. package/lib/typescript/components/Attachment/UnsupportedAttachment.d.ts +2 -3
  348. package/lib/typescript/components/Attachment/UnsupportedAttachment.d.ts.map +1 -1
  349. package/lib/typescript/components/Attachment/UrlPreview/URLPreview.d.ts +4 -3
  350. package/lib/typescript/components/Attachment/UrlPreview/URLPreview.d.ts.map +1 -1
  351. package/lib/typescript/components/Attachment/UrlPreview/URLPreviewCompact.d.ts +4 -3
  352. package/lib/typescript/components/Attachment/UrlPreview/URLPreviewCompact.d.ts.map +1 -1
  353. package/lib/typescript/components/AttachmentPicker/AttachmentPicker.d.ts.map +1 -1
  354. package/lib/typescript/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.d.ts.map +1 -1
  355. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionList.d.ts +2 -3
  356. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionList.d.ts.map +1 -1
  357. package/lib/typescript/components/Channel/Channel.d.ts +3 -28
  358. package/lib/typescript/components/Channel/Channel.d.ts.map +1 -1
  359. package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts +1 -1
  360. package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts.map +1 -1
  361. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts +1 -1
  362. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts.map +1 -1
  363. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +1 -1
  364. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts.map +1 -1
  365. package/lib/typescript/components/Channel/hooks/useMessageListPagination.d.ts.map +1 -1
  366. package/lib/typescript/components/ChannelList/ChannelList.d.ts +2 -10
  367. package/lib/typescript/components/ChannelList/ChannelList.d.ts.map +1 -1
  368. package/lib/typescript/components/ChannelList/ChannelListLoadingIndicator.d.ts.map +1 -1
  369. package/lib/typescript/components/ChannelList/ChannelListView.d.ts +1 -1
  370. package/lib/typescript/components/ChannelList/ChannelListView.d.ts.map +1 -1
  371. package/lib/typescript/components/ChannelList/hooks/useCreateChannelsContext.d.ts +1 -1
  372. package/lib/typescript/components/ChannelList/hooks/useCreateChannelsContext.d.ts.map +1 -1
  373. package/lib/typescript/components/ChannelPreview/ChannelDetailsBottomSheet.d.ts +1 -2
  374. package/lib/typescript/components/ChannelPreview/ChannelDetailsBottomSheet.d.ts.map +1 -1
  375. package/lib/typescript/components/ChannelPreview/ChannelPreview.d.ts +1 -1
  376. package/lib/typescript/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
  377. package/lib/typescript/components/ChannelPreview/ChannelPreviewMessage.d.ts +1 -2
  378. package/lib/typescript/components/ChannelPreview/ChannelPreviewMessage.d.ts.map +1 -1
  379. package/lib/typescript/components/ChannelPreview/ChannelPreviewView.d.ts +1 -1
  380. package/lib/typescript/components/ChannelPreview/ChannelPreviewView.d.ts.map +1 -1
  381. package/lib/typescript/components/ChannelPreview/ChannelSwipableWrapper.d.ts +1 -3
  382. package/lib/typescript/components/ChannelPreview/ChannelSwipableWrapper.d.ts.map +1 -1
  383. package/lib/typescript/components/Chat/Chat.d.ts +1 -7
  384. package/lib/typescript/components/Chat/Chat.d.ts.map +1 -1
  385. package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts +1 -1
  386. package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
  387. package/lib/typescript/components/ImageGallery/ImageGallery.d.ts +6 -1
  388. package/lib/typescript/components/ImageGallery/ImageGallery.d.ts.map +1 -1
  389. package/lib/typescript/components/ImageGallery/components/ImageGalleryFooter.d.ts.map +1 -1
  390. package/lib/typescript/components/ImageGallery/components/types.d.ts +0 -2
  391. package/lib/typescript/components/ImageGallery/components/types.d.ts.map +1 -1
  392. package/lib/typescript/components/Message/Message.d.ts +1 -1
  393. package/lib/typescript/components/Message/Message.d.ts.map +1 -1
  394. package/lib/typescript/components/Message/MessageItemView/MessageBubble.d.ts +1 -2
  395. package/lib/typescript/components/Message/MessageItemView/MessageBubble.d.ts.map +1 -1
  396. package/lib/typescript/components/Message/MessageItemView/MessageContent.d.ts +1 -1
  397. package/lib/typescript/components/Message/MessageItemView/MessageContent.d.ts.map +1 -1
  398. package/lib/typescript/components/Message/MessageItemView/MessageDeleted.d.ts +1 -2
  399. package/lib/typescript/components/Message/MessageItemView/MessageDeleted.d.ts.map +1 -1
  400. package/lib/typescript/components/Message/MessageItemView/MessageFooter.d.ts +0 -2
  401. package/lib/typescript/components/Message/MessageItemView/MessageFooter.d.ts.map +1 -1
  402. package/lib/typescript/components/Message/MessageItemView/MessageHeader.d.ts.map +1 -1
  403. package/lib/typescript/components/Message/MessageItemView/MessageItemView.d.ts +1 -1
  404. package/lib/typescript/components/Message/MessageItemView/MessageItemView.d.ts.map +1 -1
  405. package/lib/typescript/components/Message/MessageItemView/MessageReplies.d.ts +1 -2
  406. package/lib/typescript/components/Message/MessageItemView/MessageReplies.d.ts.map +1 -1
  407. package/lib/typescript/components/Message/MessageItemView/MessageTextContainer.d.ts +1 -1
  408. package/lib/typescript/components/Message/MessageItemView/MessageTextContainer.d.ts.map +1 -1
  409. package/lib/typescript/components/Message/MessageItemView/MessageWrapper.d.ts.map +1 -1
  410. package/lib/typescript/components/Message/MessageItemView/ReactionList/ReactionListBottom.d.ts +1 -1
  411. package/lib/typescript/components/Message/MessageItemView/ReactionList/ReactionListBottom.d.ts.map +1 -1
  412. package/lib/typescript/components/Message/MessageItemView/ReactionList/ReactionListTop.d.ts +1 -1
  413. package/lib/typescript/components/Message/MessageItemView/ReactionList/ReactionListTop.d.ts.map +1 -1
  414. package/lib/typescript/components/MessageInput/MessageComposer.d.ts +1 -2
  415. package/lib/typescript/components/MessageInput/MessageComposer.d.ts.map +1 -1
  416. package/lib/typescript/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.d.ts +3 -4
  417. package/lib/typescript/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.d.ts.map +1 -1
  418. package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.d.ts +1 -1
  419. package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.d.ts.map +1 -1
  420. package/lib/typescript/components/MessageInput/components/InputButtons/index.d.ts +1 -1
  421. package/lib/typescript/components/MessageInput/components/InputButtons/index.d.ts.map +1 -1
  422. package/lib/typescript/components/MessageInput/components/LinkPreviewList.d.ts.map +1 -1
  423. package/lib/typescript/components/MessageInput/components/OutputButtons/index.d.ts +1 -1
  424. package/lib/typescript/components/MessageInput/components/OutputButtons/index.d.ts.map +1 -1
  425. package/lib/typescript/components/MessageList/MessageFlashList.d.ts +1 -1
  426. package/lib/typescript/components/MessageList/MessageFlashList.d.ts.map +1 -1
  427. package/lib/typescript/components/MessageList/MessageList.d.ts +1 -1
  428. package/lib/typescript/components/MessageList/MessageList.d.ts.map +1 -1
  429. package/lib/typescript/components/MessageList/StickyHeader.d.ts +2 -3
  430. package/lib/typescript/components/MessageList/StickyHeader.d.ts.map +1 -1
  431. package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts +0 -5
  432. package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts.map +1 -1
  433. package/lib/typescript/components/MessageMenu/MessageActionList.d.ts +1 -2
  434. package/lib/typescript/components/MessageMenu/MessageActionList.d.ts.map +1 -1
  435. package/lib/typescript/components/MessageMenu/MessageMenu.d.ts +1 -2
  436. package/lib/typescript/components/MessageMenu/MessageMenu.d.ts.map +1 -1
  437. package/lib/typescript/components/MessageMenu/MessageUserReactions.d.ts +1 -1
  438. package/lib/typescript/components/MessageMenu/MessageUserReactions.d.ts.map +1 -1
  439. package/lib/typescript/components/MessageMenu/MessageUserReactionsItem.d.ts +2 -3
  440. package/lib/typescript/components/MessageMenu/MessageUserReactionsItem.d.ts.map +1 -1
  441. package/lib/typescript/components/Poll/CreatePollContent.d.ts +2 -2
  442. package/lib/typescript/components/Poll/CreatePollContent.d.ts.map +1 -1
  443. package/lib/typescript/components/Poll/Poll.d.ts +5 -8
  444. package/lib/typescript/components/Poll/Poll.d.ts.map +1 -1
  445. package/lib/typescript/components/Poll/components/PollAnswersList.d.ts +1 -2
  446. package/lib/typescript/components/Poll/components/PollAnswersList.d.ts.map +1 -1
  447. package/lib/typescript/components/Poll/components/PollOption.d.ts +1 -2
  448. package/lib/typescript/components/Poll/components/PollOption.d.ts.map +1 -1
  449. package/lib/typescript/components/Poll/components/PollResults/PollOptionFullResults.d.ts +1 -4
  450. package/lib/typescript/components/Poll/components/PollResults/PollOptionFullResults.d.ts.map +1 -1
  451. package/lib/typescript/components/Poll/components/PollResults/PollResults.d.ts +1 -2
  452. package/lib/typescript/components/Poll/components/PollResults/PollResults.d.ts.map +1 -1
  453. package/lib/typescript/components/Reply/Reply.d.ts +4 -3
  454. package/lib/typescript/components/Reply/Reply.d.ts.map +1 -1
  455. package/lib/typescript/components/Thread/Thread.d.ts +2 -8
  456. package/lib/typescript/components/Thread/Thread.d.ts.map +1 -1
  457. package/lib/typescript/components/Thread/components/ThreadFooterComponent.d.ts +1 -2
  458. package/lib/typescript/components/Thread/components/ThreadFooterComponent.d.ts.map +1 -1
  459. package/lib/typescript/components/ThreadList/ThreadList.d.ts +2 -3
  460. package/lib/typescript/components/ThreadList/ThreadList.d.ts.map +1 -1
  461. package/lib/typescript/components/ThreadList/ThreadListItem.d.ts.map +1 -1
  462. package/lib/typescript/contexts/attachmentPickerContext/AttachmentPickerContext.d.ts +0 -17
  463. package/lib/typescript/contexts/attachmentPickerContext/AttachmentPickerContext.d.ts.map +1 -1
  464. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts +0 -23
  465. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts.map +1 -1
  466. package/lib/typescript/contexts/channelsContext/ChannelsContext.d.ts +2 -113
  467. package/lib/typescript/contexts/channelsContext/ChannelsContext.d.ts.map +1 -1
  468. package/lib/typescript/contexts/chatContext/ChatContext.d.ts +0 -5
  469. package/lib/typescript/contexts/chatContext/ChatContext.d.ts.map +1 -1
  470. package/lib/typescript/contexts/componentsContext/ComponentsContext.d.ts +322 -0
  471. package/lib/typescript/contexts/componentsContext/ComponentsContext.d.ts.map +1 -0
  472. package/lib/typescript/contexts/componentsContext/defaultComponents.d.ts +298 -0
  473. package/lib/typescript/contexts/componentsContext/defaultComponents.d.ts.map +1 -0
  474. package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContext.d.ts.map +1 -1
  475. package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContextBase.d.ts +0 -5
  476. package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContextBase.d.ts.map +1 -1
  477. package/lib/typescript/contexts/index.d.ts +1 -0
  478. package/lib/typescript/contexts/index.d.ts.map +1 -1
  479. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +1 -169
  480. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts.map +1 -1
  481. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts +1 -1
  482. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts.map +1 -1
  483. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +3 -340
  484. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts.map +1 -1
  485. package/lib/typescript/contexts/overlayContext/MessageOverlayHostLayer.d.ts +8 -4
  486. package/lib/typescript/contexts/overlayContext/MessageOverlayHostLayer.d.ts.map +1 -1
  487. package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts +0 -4
  488. package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts.map +1 -1
  489. package/lib/typescript/contexts/overlayContext/OverlayProvider.d.ts.map +1 -1
  490. package/lib/typescript/contexts/threadsContext/ThreadsContext.d.ts +0 -9
  491. package/lib/typescript/contexts/threadsContext/ThreadsContext.d.ts.map +1 -1
  492. package/package.json +1 -1
  493. package/src/__tests__/offline-support/offline-feature.js +64 -67
  494. package/src/components/Attachment/Attachment.tsx +7 -69
  495. package/src/components/Attachment/FileAttachment.tsx +4 -7
  496. package/src/components/Attachment/FileAttachmentGroup.tsx +9 -19
  497. package/src/components/Attachment/FilePreview.tsx +4 -9
  498. package/src/components/Attachment/Gallery.tsx +6 -83
  499. package/src/components/Attachment/GalleryImage.tsx +5 -4
  500. package/src/components/Attachment/Giphy/GiphyImage.tsx +15 -37
  501. package/src/components/Attachment/UnsupportedAttachment.tsx +5 -10
  502. package/src/components/Attachment/UrlPreview/URLPreview.tsx +6 -4
  503. package/src/components/Attachment/UrlPreview/URLPreviewCompact.tsx +6 -4
  504. package/src/components/AttachmentPicker/AttachmentPicker.tsx +2 -2
  505. package/src/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.tsx +5 -4
  506. package/src/components/AutoCompleteInput/AutoCompleteSuggestionList.tsx +4 -20
  507. package/src/components/Channel/Channel.tsx +31 -441
  508. package/src/components/Channel/__tests__/isAttachmentEqualHandler.test.js +12 -9
  509. package/src/components/Channel/hooks/useCreateChannelContext.ts +0 -8
  510. package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +1 -81
  511. package/src/components/Channel/hooks/useCreateMessagesContext.ts +0 -132
  512. package/src/components/ChannelList/ChannelList.tsx +3 -76
  513. package/src/components/ChannelList/ChannelListLoadingIndicator.tsx +3 -1
  514. package/src/components/ChannelList/ChannelListView.tsx +16 -36
  515. package/src/components/ChannelList/__tests__/ChannelList.test.js +173 -116
  516. package/src/components/ChannelList/__tests__/ChannelListView.test.js +64 -41
  517. package/src/components/ChannelList/hooks/useCreateChannelsContext.ts +0 -39
  518. package/src/components/ChannelPreview/ChannelDetailsBottomSheet.tsx +2 -2
  519. package/src/components/ChannelPreview/ChannelPreview.tsx +8 -16
  520. package/src/components/ChannelPreview/ChannelPreviewMessage.tsx +15 -38
  521. package/src/components/ChannelPreview/ChannelPreviewView.tsx +22 -47
  522. package/src/components/ChannelPreview/ChannelSwipableWrapper.tsx +2 -4
  523. package/src/components/ChannelPreview/__tests__/ChannelDetailsBottomSheet.test.tsx +16 -12
  524. package/src/components/ChannelPreview/__tests__/ChannelPreview.test.tsx +25 -24
  525. package/src/components/ChannelPreview/__tests__/ChannelSwipableWrapper.test.tsx +11 -6
  526. package/src/components/Chat/Chat.tsx +5 -12
  527. package/src/components/Chat/hooks/useCreateChatContext.ts +0 -2
  528. package/src/components/ImageGallery/ImageGallery.tsx +14 -16
  529. package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx +0 -8
  530. package/src/components/ImageGallery/__tests__/ImageGalleryFooter.test.tsx +25 -21
  531. package/src/components/ImageGallery/components/ImageGalleryFooter.tsx +3 -1
  532. package/src/components/ImageGallery/components/types.ts +0 -3
  533. package/src/components/Message/Message.tsx +11 -32
  534. package/src/components/Message/MessageItemView/MessageBubble.tsx +11 -7
  535. package/src/components/Message/MessageItemView/MessageContent.tsx +14 -47
  536. package/src/components/Message/MessageItemView/MessageDeleted.tsx +3 -9
  537. package/src/components/Message/MessageItemView/MessageFooter.tsx +2 -14
  538. package/src/components/Message/MessageItemView/MessageHeader.tsx +11 -29
  539. package/src/components/Message/MessageItemView/MessageItemView.tsx +10 -42
  540. package/src/components/Message/MessageItemView/MessageReplies.tsx +2 -8
  541. package/src/components/Message/MessageItemView/MessageTextContainer.tsx +4 -8
  542. package/src/components/Message/MessageItemView/MessageWrapper.tsx +4 -9
  543. package/src/components/Message/MessageItemView/ReactionList/ReactionListBottom.tsx +4 -12
  544. package/src/components/Message/MessageItemView/ReactionList/ReactionListTop.tsx +4 -20
  545. package/src/components/Message/MessageItemView/__tests__/MessageContent.test.js +47 -30
  546. package/src/components/Message/MessageItemView/__tests__/MessageItemView.test.js +16 -7
  547. package/src/components/Message/MessageItemView/__tests__/MessageTextContainer.test.tsx +8 -4
  548. package/src/components/MessageInput/MessageComposer.tsx +16 -76
  549. package/src/components/MessageInput/MessageInputHeaderView.tsx +3 -3
  550. package/src/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.tsx +7 -35
  551. package/src/components/MessageInput/components/AttachmentPreview/FileAttachmentUploadPreview.tsx +2 -2
  552. package/src/components/MessageInput/components/AttachmentPreview/ImageAttachmentUploadPreview.tsx +2 -2
  553. package/src/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.tsx +6 -4
  554. package/src/components/MessageInput/components/InputButtons/index.tsx +4 -5
  555. package/src/components/MessageInput/components/LinkPreviewList.tsx +3 -2
  556. package/src/components/MessageInput/components/OutputButtons/index.tsx +4 -23
  557. package/src/components/MessageList/MessageFlashList.tsx +13 -57
  558. package/src/components/MessageList/MessageList.tsx +15 -57
  559. package/src/components/MessageList/StickyHeader.tsx +4 -3
  560. package/src/components/MessageList/__tests__/MessageList.test.js +1 -130
  561. package/src/components/MessageList/hooks/useMessageList.ts +1 -41
  562. package/src/components/MessageMenu/MessageActionList.tsx +4 -3
  563. package/src/components/MessageMenu/MessageMenu.tsx +35 -47
  564. package/src/components/MessageMenu/MessageUserReactions.tsx +7 -27
  565. package/src/components/MessageMenu/MessageUserReactionsItem.tsx +3 -6
  566. package/src/components/MessageMenu/__tests__/MessageUserReactions.test.tsx +12 -11
  567. package/src/components/Poll/CreatePollContent.tsx +3 -4
  568. package/src/components/Poll/Poll.tsx +22 -24
  569. package/src/components/Poll/components/PollAnswersList.tsx +9 -11
  570. package/src/components/Poll/components/PollOption.tsx +9 -11
  571. package/src/components/Poll/components/PollResults/PollOptionFullResults.tsx +10 -11
  572. package/src/components/Poll/components/PollResults/PollResults.tsx +9 -15
  573. package/src/components/Reply/Reply.tsx +18 -5
  574. package/src/components/Thread/Thread.tsx +3 -18
  575. package/src/components/Thread/components/ThreadFooterComponent.tsx +10 -11
  576. package/src/components/ThreadList/ThreadList.tsx +14 -22
  577. package/src/components/ThreadList/ThreadListItem.tsx +6 -11
  578. package/src/components/ui/Avatar/Avatar.tsx +2 -2
  579. package/src/contexts/attachmentPickerContext/AttachmentPickerContext.tsx +0 -15
  580. package/src/contexts/channelContext/ChannelContext.tsx +0 -24
  581. package/src/contexts/channelsContext/ChannelsContext.tsx +2 -114
  582. package/src/contexts/chatContext/ChatContext.tsx +0 -5
  583. package/src/contexts/componentsContext/ComponentsContext.tsx +62 -0
  584. package/src/contexts/componentsContext/PLAN.md +148 -0
  585. package/src/contexts/componentsContext/__tests__/defaultComponents.test.ts +45 -0
  586. package/src/contexts/componentsContext/defaultComponents.ts +334 -0
  587. package/src/contexts/imageGalleryContext/ImageGalleryContext.tsx +0 -8
  588. package/src/contexts/imageGalleryContext/ImageGalleryContextBase.tsx +0 -10
  589. package/src/contexts/index.ts +1 -0
  590. package/src/contexts/messageInputContext/MessageInputContext.tsx +0 -185
  591. package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +1 -75
  592. package/src/contexts/messagesContext/MessagesContext.tsx +3 -367
  593. package/src/contexts/overlayContext/MessageOverlayHostLayer.tsx +38 -20
  594. package/src/contexts/overlayContext/OverlayContext.tsx +0 -4
  595. package/src/contexts/overlayContext/OverlayProvider.tsx +1 -2
  596. package/src/contexts/overlayContext/__tests__/MessageOverlayHostLayer.test.tsx +80 -7
  597. package/src/contexts/threadsContext/ThreadsContext.tsx +0 -9
  598. package/src/version.json +1 -1
@@ -1,5 +1,14 @@
1
1
  import React, { useMemo } from 'react';
2
- import { I18nManager, Image, StyleSheet, Text, TextStyle, View, ViewStyle } from 'react-native';
2
+ import {
3
+ I18nManager,
4
+ Image,
5
+ ImageProps,
6
+ StyleSheet,
7
+ Text,
8
+ TextStyle,
9
+ View,
10
+ ViewStyle,
11
+ } from 'react-native';
3
12
 
4
13
  import {
5
14
  isFileAttachment,
@@ -10,7 +19,8 @@ import {
10
19
 
11
20
  import { ReplyMessageView } from './ReplyMessageView';
12
21
 
13
- import { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';
22
+ import { useChatContext } from '../../contexts/chatContext/ChatContext';
23
+ import { useComponentsContext } from '../../contexts/componentsContext/ComponentsContext';
14
24
  import {
15
25
  MessageContextValue,
16
26
  useMessageContext,
@@ -79,8 +89,10 @@ const RightContent = React.memo(
79
89
  },
80
90
  );
81
91
 
82
- export type ReplyPropsWithContext = Pick<ChatContextValue, 'ImageComponent'> &
83
- Pick<MessageContextValue, 'message'> &
92
+ export type ReplyPropsWithContext = { ImageComponent: React.ComponentType<ImageProps> } & Pick<
93
+ MessageContextValue,
94
+ 'message'
95
+ > &
84
96
  Pick<MessagesContextValue, 'quotedMessage'> & {
85
97
  isMyMessage: boolean;
86
98
  onDismiss?: () => void;
@@ -216,7 +228,8 @@ export type ReplyProps = Partial<ReplyPropsWithContext> &
216
228
 
217
229
  export const Reply = (props: ReplyProps) => {
218
230
  const { message: messageFromContext } = useMessageContext();
219
- const { client, ImageComponent } = useChatContext();
231
+ const { client } = useChatContext();
232
+ const { ImageComponent } = useComponentsContext();
220
233
 
221
234
  const messageComposer = useMessageComposer();
222
235
  const { quotedMessage: quotedMessageFromComposer } = useStateStore(
@@ -4,16 +4,10 @@ import { ThreadFooterComponent } from './components/ThreadFooterComponent';
4
4
 
5
5
  import { useChannelContext } from '../../contexts/channelContext/ChannelContext';
6
6
  import { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';
7
- import {
8
- MessagesContextValue,
9
- useMessagesContext,
10
- } from '../../contexts/messagesContext/MessagesContext';
7
+ import { useComponentsContext } from '../../contexts/componentsContext/ComponentsContext';
11
8
  import { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';
12
9
 
13
- import {
14
- MessageComposer as DefaultMessageComposer,
15
- MessageComposerProps,
16
- } from '../MessageInput/MessageComposer';
10
+ import type { MessageComposerProps } from '../MessageInput/MessageComposer';
17
11
  import { MessageFlashList, MessageFlashListProps } from '../MessageList/MessageFlashList';
18
12
  import { MessageListProps } from '../MessageList/MessageList';
19
13
 
@@ -26,7 +20,6 @@ try {
26
20
  }
27
21
 
28
22
  type ThreadPropsWithContext = Pick<ChatContextValue, 'client'> &
29
- Pick<MessagesContextValue, 'MessageList'> &
30
23
  Pick<
31
24
  ThreadContextValue,
32
25
  | 'closeThread'
@@ -59,11 +52,6 @@ type ThreadPropsWithContext = Pick<ChatContextValue, 'client'> &
59
52
  closeThreadOnDismount?: boolean;
60
53
  /** Disables the thread UI. So MessageComposer and MessageList will be disabled. */
61
54
  disabled?: boolean;
62
- /**
63
- * **Customized MessageComposer component to used within Thread instead of default MessageComposer
64
- * **Available from [MessageComposer](https://getstream.io/chat/docs/sdk/reactnative/ui-components/message-input)**
65
- */
66
- MessageComposer?: React.ComponentType<MessageComposerProps>;
67
55
  /**
68
56
  * Call custom function on closing thread if handling thread state elsewhere
69
57
  */
@@ -81,14 +69,13 @@ const ThreadWithContext = (props: ThreadPropsWithContext) => {
81
69
  closeThreadOnDismount = true,
82
70
  disabled,
83
71
  loadMoreThread,
84
- MessageComposer = DefaultMessageComposer,
85
- MessageList,
86
72
  onThreadDismount,
87
73
  parentMessagePreventPress = true,
88
74
  thread,
89
75
  threadInstance,
90
76
  shouldUseFlashList = false,
91
77
  } = props;
78
+ const { MessageList, ThreadMessageComposer: MessageComposer } = useComponentsContext();
92
79
 
93
80
  useEffect(() => {
94
81
  if (threadInstance?.activate) {
@@ -171,7 +158,6 @@ export type ThreadProps = Partial<ThreadPropsWithContext>;
171
158
  export const Thread = (props: ThreadProps) => {
172
159
  const { client } = useChatContext();
173
160
  const { threadList } = useChannelContext();
174
- const { MessageList } = useMessagesContext();
175
161
  const { closeThread, loadMoreThread, reloadThread, thread, threadInstance } = useThreadContext();
176
162
 
177
163
  if (thread?.id && !threadList) {
@@ -186,7 +172,6 @@ export const Thread = (props: ThreadProps) => {
186
172
  client,
187
173
  closeThread,
188
174
  loadMoreThread,
189
- MessageList,
190
175
  reloadThread,
191
176
  thread,
192
177
  threadInstance,
@@ -3,10 +3,7 @@ import { ActivityIndicator, StyleSheet, Text, View } from 'react-native';
3
3
 
4
4
  import type { ThreadState } from 'stream-chat';
5
5
 
6
- import {
7
- MessagesContextValue,
8
- useMessagesContext,
9
- } from '../../../contexts/messagesContext/MessagesContext';
6
+ import { useComponentsContext } from '../../../contexts/componentsContext/ComponentsContext';
10
7
  import { useTheme } from '../../../contexts/themeContext/ThemeContext';
11
8
  import {
12
9
  ThreadContextValue,
@@ -16,8 +13,10 @@ import { useTranslationContext } from '../../../contexts/translationContext/Tran
16
13
  import { useStateStore } from '../../../hooks';
17
14
  import { primitives } from '../../../theme';
18
15
 
19
- type ThreadFooterComponentPropsWithContext = Pick<MessagesContextValue, 'Message'> &
20
- Pick<ThreadContextValue, 'parentMessagePreventPress' | 'thread' | 'threadInstance'>;
16
+ type ThreadFooterComponentPropsWithContext = Pick<
17
+ ThreadContextValue,
18
+ 'parentMessagePreventPress' | 'thread' | 'threadInstance'
19
+ >;
21
20
 
22
21
  export const InlineLoadingMoreThreadIndicator = () => {
23
22
  const { threadLoadingMore } = useThreadContext();
@@ -43,7 +42,8 @@ const selector = (nextValue: ThreadState) =>
43
42
  }) as const;
44
43
 
45
44
  const ThreadFooterComponentWithContext = (props: ThreadFooterComponentPropsWithContext) => {
46
- const { Message, parentMessagePreventPress, thread, threadInstance } = props;
45
+ const { parentMessagePreventPress, thread, threadInstance } = props;
46
+ const { Message } = useComponentsContext();
47
47
  const { t } = useTranslationContext();
48
48
 
49
49
  const styles = useStyles();
@@ -131,18 +131,17 @@ const MemoizedThreadFooter = React.memo(
131
131
  areEqual,
132
132
  ) as typeof ThreadFooterComponentWithContext;
133
133
 
134
- export type ThreadFooterComponentProps = Partial<Pick<MessagesContextValue, 'Message'>> &
135
- Partial<Pick<ThreadContextValue, 'parentMessagePreventPress' | 'thread'>>;
134
+ export type ThreadFooterComponentProps = Partial<
135
+ Pick<ThreadContextValue, 'parentMessagePreventPress' | 'thread'>
136
+ >;
136
137
 
137
138
  export const ThreadFooterComponent = (props: ThreadFooterComponentProps) => {
138
- const { Message } = useMessagesContext();
139
139
  const { parentMessagePreventPress, thread, threadInstance, threadLoadingMore } =
140
140
  useThreadContext();
141
141
 
142
142
  return (
143
143
  <MemoizedThreadFooter
144
144
  {...{
145
- Message,
146
145
  parentMessagePreventPress,
147
146
  thread,
148
147
  threadInstance,
@@ -5,9 +5,9 @@ import { Thread, ThreadManagerState } from 'stream-chat';
5
5
 
6
6
  import { ThreadListItem } from './ThreadListItem';
7
7
  import { ThreadListItemSkeleton } from './ThreadListItemSkeleton';
8
- import { ThreadListUnreadBanner as DefaultThreadListBanner } from './ThreadListUnreadBanner';
9
8
 
10
9
  import { useChatContext } from '../../contexts';
10
+ import { useComponentsContext } from '../../contexts/componentsContext/ComponentsContext';
11
11
  import {
12
12
  ThreadsContextValue,
13
13
  ThreadsProvider,
@@ -27,14 +27,8 @@ const selector = (nextValue: ThreadManagerState) =>
27
27
 
28
28
  export type ThreadListProps = Pick<
29
29
  ThreadsContextValue,
30
- | 'additionalFlatListProps'
31
- | 'isFocused'
32
- | 'onThreadSelect'
33
- | 'ThreadListItem'
34
- | 'ThreadListEmptyPlaceholder'
35
- | 'ThreadListLoadingIndicator'
36
- | 'ThreadListUnreadBanner'
37
- > & { ThreadList?: React.ComponentType };
30
+ 'additionalFlatListProps' | 'isFocused' | 'onThreadSelect'
31
+ >;
38
32
 
39
33
  export const DefaultThreadListEmptyPlaceholder = () => <EmptyStateIndicator listType='threads' />;
40
34
 
@@ -49,18 +43,15 @@ export const DefaultThreadListLoadingNextIndicator = () => <LoadingIndicator lis
49
43
 
50
44
  const renderItem = (props: { item: Thread }) => <ThreadListItem thread={props.item} />;
51
45
 
52
- const ThreadListComponent = () => {
46
+ export const DefaultThreadListComponent = () => {
47
+ const { additionalFlatListProps, isLoading, isLoadingNext, loadMore, threads } =
48
+ useThreadsContext();
53
49
  const {
54
- additionalFlatListProps,
55
- isLoading,
56
- isLoadingNext,
57
- loadMore,
58
- ThreadListEmptyPlaceholder = DefaultThreadListEmptyPlaceholder,
59
- ThreadListLoadingIndicator = DefaultThreadListLoadingIndicator,
60
- ThreadListLoadingMoreIndicator = DefaultThreadListLoadingNextIndicator,
61
- ThreadListUnreadBanner = DefaultThreadListBanner,
62
- threads,
63
- } = useThreadsContext();
50
+ ThreadListEmptyPlaceholder,
51
+ ThreadListLoadingIndicator,
52
+ ThreadListLoadingMoreIndicator,
53
+ ThreadListUnreadBanner,
54
+ } = useComponentsContext();
64
55
 
65
56
  if (isLoading) {
66
57
  return <ThreadListLoadingIndicator />;
@@ -85,7 +76,8 @@ const ThreadListComponent = () => {
85
76
  };
86
77
 
87
78
  export const ThreadList = (props: ThreadListProps) => {
88
- const { isFocused = true, ThreadList = ThreadListComponent } = props;
79
+ const { isFocused = true } = props;
80
+ const { ThreadListComponent: ThreadListContent } = useComponentsContext();
89
81
  const { client } = useChatContext();
90
82
 
91
83
  useEffect(() => {
@@ -120,7 +112,7 @@ export const ThreadList = (props: ThreadListProps) => {
120
112
  <ThreadsProvider
121
113
  value={{ isLoading, isLoadingNext, loadMore: client.threads.loadNextPage, threads, ...props }}
122
114
  >
123
- <ThreadList />
115
+ <ThreadListContent />
124
116
  </ThreadsProvider>
125
117
  );
126
118
  };
@@ -10,11 +10,8 @@ import {
10
10
  ThreadState,
11
11
  } from 'stream-chat';
12
12
 
13
- import { ThreadListItemMessagePreview as ThreadListItemMessagePreviewDefault } from './ThreadListItemMessagePreview';
14
-
15
- import { ThreadMessagePreviewDeliveryStatus as ThreadMessagePreviewDeliveryStatusDefault } from './ThreadMessagePreviewDeliveryStatus';
16
-
17
13
  import { useChatContext, useTheme, useTranslationContext } from '../../contexts';
14
+ import { useComponentsContext } from '../../contexts/componentsContext/ComponentsContext';
18
15
  import {
19
16
  ThreadListItemProvider,
20
17
  useThreadListItemContext,
@@ -62,11 +59,9 @@ export const ThreadListItemComponent = () => {
62
59
  } = useThreadListItemContext();
63
60
  const online = useChannelPreviewDisplayPresence(channel);
64
61
  const displayName = useChannelPreviewDisplayName(channel);
65
- const {
66
- onThreadSelect,
67
- ThreadListItemMessagePreview = ThreadListItemMessagePreviewDefault,
68
- ThreadMessagePreviewDeliveryStatus = ThreadMessagePreviewDeliveryStatusDefault,
69
- } = useThreadsContext();
62
+ const { onThreadSelect } = useThreadsContext();
63
+ const { ThreadListItemMessagePreview, ThreadMessagePreviewDeliveryStatus } =
64
+ useComponentsContext();
70
65
  const {
71
66
  theme: { semantics },
72
67
  } = useTheme();
@@ -143,7 +138,7 @@ export const ThreadListItem = (props: ThreadListItemProps) => {
143
138
  const { client } = useChatContext();
144
139
  const { t, tDateTimeParser } = useTranslationContext();
145
140
  const { thread, timestampTranslationKey = 'timestamp/ThreadListItem' } = props;
146
- const { ThreadListItem = ThreadListItemComponent } = useThreadsContext();
141
+ const { ThreadListItem: ThreadListItemOverride } = useComponentsContext();
147
142
  const { text: draftText } = useStateStore(
148
143
  thread.messageComposer.textComposer.state,
149
144
  textComposerStateSelector,
@@ -229,7 +224,7 @@ export const ThreadListItem = (props: ThreadListItemProps) => {
229
224
  thread,
230
225
  }}
231
226
  >
232
- <ThreadListItem />
227
+ <ThreadListItemOverride />
233
228
  </ThreadListItemProvider>
234
229
  );
235
230
  };
@@ -3,7 +3,7 @@ import { ColorValue, StyleProp, StyleSheet, View, ViewStyle } from 'react-native
3
3
 
4
4
  import { avatarSizes } from './constants';
5
5
 
6
- import { useChatContext } from '../../../contexts';
6
+ import { useComponentsContext } from '../../../contexts/componentsContext/ComponentsContext';
7
7
  import { useTheme } from '../../../contexts/themeContext/ThemeContext';
8
8
  import { primitives } from '../../../theme';
9
9
 
@@ -21,7 +21,7 @@ export const Avatar = (props: AvatarProps) => {
21
21
  const {
22
22
  theme: { semantics },
23
23
  } = useTheme();
24
- const { ImageComponent } = useChatContext();
24
+ const { ImageComponent } = useComponentsContext();
25
25
  const defaultAvatarBg = semantics.avatarPaletteBg1;
26
26
  const {
27
27
  backgroundColor = defaultAvatarBg,
@@ -2,7 +2,6 @@ import React, { PropsWithChildren, useContext, useMemo, useState } from 'react';
2
2
 
3
3
  import BottomSheet from '@gorhom/bottom-sheet';
4
4
 
5
- import { AttachmentPickerContentProps } from '../../components';
6
5
  import {
7
6
  AttachmentPickerStore,
8
7
  SelectedPickerType,
@@ -21,10 +20,6 @@ export type AttachmentPickerContextValue = Pick<
21
20
  MessageInputContextValue,
22
21
  'attachmentSelectionBarHeight' | 'attachmentPickerBottomSheetHeight'
23
22
  > & {
24
- /**
25
- * Custom UI Component to render select more photos for selected gallery access in iOS.
26
- */
27
- AttachmentPickerIOSSelectMorePhotos: React.ComponentType;
28
23
  /**
29
24
  * `bottomInset` determine the height of the `AttachmentPicker` and the underlying shift to the `MessageList` when it is opened.
30
25
  * This can also be set via the `setBottomInset` function provided by the `useAttachmentPickerContext` hook.
@@ -39,16 +34,6 @@ export type AttachmentPickerContextValue = Pick<
39
34
  topInset: number;
40
35
 
41
36
  disableAttachmentPicker?: boolean;
42
- /**
43
- * Custom UI component to render overlay component, that shows up on top of [selected
44
- * image](https://github.com/GetStream/stream-chat-react-native/blob/main/screenshots/docs/1.png) (with tick mark)
45
- *
46
- * **Default**
47
- * [ImageOverlaySelectedComponent](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/ImageOverlaySelectedComponent.tsx)
48
- */
49
- ImageOverlaySelectedComponent: React.ComponentType<{ index: number }>;
50
- AttachmentPickerSelectionBar: React.ComponentType;
51
- AttachmentPickerContent: React.ComponentType<AttachmentPickerContentProps>;
52
37
  attachmentPickerStore: AttachmentPickerStore;
53
38
  numberOfAttachmentPickerImageColumns?: number;
54
39
  numberOfAttachmentImagesToLoadPerCall?: number;
@@ -3,9 +3,6 @@ import React, { PropsWithChildren, useContext } from 'react';
3
3
  import type { Channel, ChannelState } from 'stream-chat';
4
4
 
5
5
  import { MarkReadFunctionOptions } from '../../components/Channel/Channel';
6
- import type { EmptyStateProps } from '../../components/Indicators/EmptyStateIndicator';
7
- import type { LoadingProps } from '../../components/Indicators/LoadingIndicator';
8
- import { StickyHeaderProps } from '../../components/MessageList/StickyHeader';
9
6
  import {
10
7
  ChannelUnreadStateStore,
11
8
  ChannelUnreadStateStoreType,
@@ -38,12 +35,6 @@ export type ChannelContextValue = {
38
35
  * @overrideType Channel
39
36
  */
40
37
  channel: Channel;
41
- /**
42
- * Custom UI component to display empty state when channel has no messages.
43
- *
44
- * **Default** [EmptyStateIndicator](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Indicators/EmptyStateIndicator.tsx)
45
- */
46
- EmptyStateIndicator: React.ComponentType<EmptyStateProps>;
47
38
  /**
48
39
  * When set to true, reactions will be limited to 1 per user. If user selects another reaction
49
40
  * then his previous reaction will be removed and replaced with new one.
@@ -90,10 +81,6 @@ export type ChannelContextValue = {
90
81
  setTargetedMessage?: (messageId: string) => void;
91
82
  }) => Promise<void>;
92
83
 
93
- /**
94
- * Custom loading indicator to override the Stream default
95
- */
96
- LoadingIndicator: React.ComponentType<LoadingProps>;
97
84
  markRead: (options?: MarkReadFunctionOptions) => void;
98
85
  /**
99
86
  *
@@ -119,10 +106,6 @@ export type ChannelContextValue = {
119
106
  * ```
120
107
  */
121
108
  members: ChannelState['members'];
122
- /**
123
- * Custom network down indicator to override the Stream default
124
- */
125
- NetworkDownIndicator: React.ComponentType;
126
109
  read: ChannelState['read'];
127
110
  reloadChannel: () => Promise<void>;
128
111
  scrollToFirstUnreadThreshold: number;
@@ -156,13 +139,6 @@ export type ChannelContextValue = {
156
139
  * currently near them within the viewport.
157
140
  */
158
141
  maximumMessageLimit?: number;
159
- /**
160
- * Custom UI component for sticky header of channel.
161
- *
162
- * **Default** [DateHeader](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageList/DateHeader.tsx)
163
- */
164
- StickyHeader?: React.ComponentType<StickyHeaderProps>;
165
-
166
142
  /**
167
143
  * Id of message, around which Channel/MessageList gets loaded when opened.
168
144
  * You will see a highlighted background for targetted message, when opened.
@@ -5,23 +5,8 @@ import type { FlatList } from 'react-native-gesture-handler';
5
5
 
6
6
  import type { Channel } from 'stream-chat';
7
7
 
8
- import type { HeaderErrorProps } from '../../components/ChannelList/ChannelListHeaderErrorIndicator';
9
8
  import type { GetChannelActionItems } from '../../components/ChannelList/hooks/useChannelActionItems';
10
9
  import type { QueryChannels } from '../../components/ChannelList/hooks/usePaginatedChannels';
11
- import type { ChannelDetailsBottomSheetProps } from '../../components/ChannelPreview/ChannelDetailsBottomSheet';
12
- import { ChannelLastMessagePreviewProps } from '../../components/ChannelPreview/ChannelLastMessagePreview';
13
- import { ChannelMessagePreviewDeliveryStatusProps } from '../../components/ChannelPreview/ChannelMessagePreviewDeliveryStatus';
14
- import { ChannelPreviewMessageProps } from '../../components/ChannelPreview/ChannelPreviewMessage';
15
- import type { ChannelPreviewStatusProps } from '../../components/ChannelPreview/ChannelPreviewStatus';
16
- import type { ChannelPreviewTitleProps } from '../../components/ChannelPreview/ChannelPreviewTitle';
17
- import { ChannelPreviewTypingIndicatorProps } from '../../components/ChannelPreview/ChannelPreviewTypingIndicator';
18
- import type { ChannelPreviewUnreadCountProps } from '../../components/ChannelPreview/ChannelPreviewUnreadCount';
19
- import type { ChannelPreviewViewProps } from '../../components/ChannelPreview/ChannelPreviewView';
20
- import type { EmptyStateProps } from '../../components/Indicators/EmptyStateIndicator';
21
- import type { LoadingErrorProps } from '../../components/Indicators/LoadingErrorIndicator';
22
- import type { LoadingProps } from '../../components/Indicators/LoadingIndicator';
23
-
24
- import { ChannelAvatarProps } from '../../components/ui/Avatar/ChannelAvatar';
25
10
  import { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';
26
11
 
27
12
  import { isTestEnvironment } from '../utils/isTestEnvironment';
@@ -53,18 +38,6 @@ export type ChannelsContextValue = {
53
38
  * Channels can be either an array of channels or a promise which resolves to an array of channels
54
39
  */
55
40
  channels: Channel[] | null;
56
- /**
57
- * Custom indicator to use when channel list is empty
58
- *
59
- * Default: [EmptyStateIndicator](https://getstream.io/chat/docs/sdk/reactnative/core-components/channel/#emptystateindicator)
60
- * */
61
- EmptyStateIndicator: React.ComponentType<EmptyStateProps>;
62
- /**
63
- * Custom loading indicator to display at bottom of the list, while loading further pages
64
- *
65
- * Default: [ChannelListFooterLoadingIndicator](https://getstream.io/chat/docs/sdk/reactnative/contexts/channels-context/#footerloadingindicator)
66
- */
67
- FooterLoadingIndicator: React.ComponentType;
68
41
  /**
69
42
  * Incremental number change to force update the FlatList
70
43
  */
@@ -73,35 +46,13 @@ export type ChannelsContextValue = {
73
46
  * Whether or not the FlatList has another page to render
74
47
  */
75
48
  hasNextPage: boolean;
76
- /**
77
- * Custom indicator to display error at top of list, if loading/pagination error occurs
78
- *
79
- * Default: [ChannelListHeaderErrorIndicator](https://getstream.io/chat/docs/sdk/reactnative/contexts/channels-context/#headererrorindicator)
80
- */
81
- HeaderErrorIndicator: React.ComponentType<HeaderErrorProps>;
82
- /**
83
- * Custom indicator to display network-down error at top of list, if there is connectivity issue
84
- *
85
- * Default: [ChannelListHeaderNetworkDownIndicator](https://getstream.io/chat/docs/sdk/reactnative/contexts/channels-context/#headernetworkdownindicator)
86
- */
87
- HeaderNetworkDownIndicator: React.ComponentType;
88
49
  /**
89
50
  * Initial channels query loading state, triggers the LoadingIndicator
90
51
  */
91
52
  loadingChannels: boolean;
92
53
  /**
93
- * Custom indicator to use when there is error in fetching channels
94
- *
95
- * Default: [LoadingErrorIndicator](https://getstream.io/chat/docs/sdk/reactnative/contexts/channels-context/#loadingerrorindicator)
96
- * */
97
- LoadingErrorIndicator: React.ComponentType<LoadingErrorProps>;
98
- /**
99
- * Custom loading indicator to use on Channel List
100
- *
101
- * */
102
- LoadingIndicator: React.ComponentType<Pick<LoadingProps, 'listType'>>;
103
- /**
104
- * Whether or not additional channels are being loaded, triggers the FooterLoadingIndicator
54
+ * Whether or not additional channels are being loaded, triggers the
55
+ * ChannelListFooterLoadingIndicator
105
56
  */
106
57
  loadingNextPage: boolean;
107
58
  /**
@@ -121,12 +72,6 @@ export type ChannelsContextValue = {
121
72
  * Number of skeletons that should show when loading. Default: 6
122
73
  */
123
74
  numberOfSkeletons: number;
124
- /**
125
- * Custom UI component to display individual channel list items
126
- *
127
- * Default: [ChannelPreviewView](https://getstream.io/chat/docs/sdk/reactnative/ui-components/channel-preview-view/)
128
- */
129
- Preview: React.ComponentType<ChannelPreviewViewProps>;
130
75
  /**
131
76
  * Triggered when the channel list is refreshing, displays a loading spinner at the top of the list
132
77
  */
@@ -159,73 +104,16 @@ export type ChannelsContextValue = {
159
104
  * ```
160
105
  */
161
106
  setFlatListRef: (ref: FlatList<Channel> | null) => void;
162
- /**
163
- * Custom UI component to display loading channel skeletons
164
- *
165
- * Default: [Skeleton](https://getstream.io/chat/docs/sdk/reactnative/contexts/channels-context/#skeleton)
166
- */
167
- Skeleton: React.ComponentType;
168
107
  /**
169
108
  * Error in channels query, if any
170
109
  */
171
110
  error?: Error;
172
- ListHeaderComponent?: React.ComponentType;
173
111
  /**
174
112
  * Function to set the currently active channel, acts as a bridge between ChannelList and Channel components
175
113
  *
176
114
  * @param channel A channel object
177
115
  */
178
116
  onSelect?: (channel: Channel) => void;
179
- /**
180
- * Custom UI component to render preview avatar.
181
- *
182
- * **Default** [ChannelAvatar](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelAvatar.tsx)
183
- */
184
- PreviewAvatar?: React.ComponentType<ChannelAvatarProps>;
185
- /**
186
- * Custom UI component to render preview of latest message on channel.
187
- *
188
- * **Default** [ChannelPreviewMessage](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelPreviewMessage.tsx)
189
- */
190
- PreviewMessage?: React.ComponentType<ChannelPreviewMessageProps>;
191
- /**
192
- * Custom UI component to render delivery status of latest message on channel.
193
- *
194
- * **Default** [ChannelMessagePreviewDeliveryStatus](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.tsx)
195
- */
196
- PreviewMessageDeliveryStatus?: React.ComponentType<ChannelMessagePreviewDeliveryStatusProps>;
197
- /**
198
- * Custom UI component to render muted status.
199
- *
200
- * **Default** [ChannelMutedStatus](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelPreviewMutedStatus.tsx)
201
- */
202
- PreviewMutedStatus?: React.ComponentType;
203
- /**
204
- * Custom UI component to render preview avatar.
205
- *
206
- * **Default** [ChannelPreviewStatus](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelPreviewStatus.tsx)
207
- */
208
- PreviewStatus?: React.ComponentType<ChannelPreviewStatusProps>;
209
- /**
210
- * Custom UI component to render preview avatar.
211
- *
212
- * **Default** [ChannelPreviewTitle](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelPreviewTitle.tsx)
213
- */
214
- PreviewTitle?: React.ComponentType<ChannelPreviewTitleProps>;
215
- /**
216
- * Custom UI component to render preview avatar.
217
- *
218
- * **Default** [ChannelPreviewUnreadCount](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelPreviewUnreadCount.tsx)
219
- */
220
- PreviewUnreadCount?: React.ComponentType<ChannelPreviewUnreadCountProps>;
221
- PreviewTypingIndicator?: React.ComponentType<ChannelPreviewTypingIndicatorProps>;
222
- ChannelDetailsBottomSheet?: React.ComponentType<ChannelDetailsBottomSheetProps>;
223
- /**
224
- * Custom UI component to render preview of last message on channel.
225
- *
226
- * **Default** [ChannelLastMessagePreview](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelLastMessagePreview.tsx)
227
- */
228
- PreviewLastMessage?: React.ComponentType<ChannelLastMessagePreviewProps>;
229
117
  getChannelActionItems?: GetChannelActionItems;
230
118
  swipeActionsEnabled?: boolean;
231
119
 
@@ -1,5 +1,4 @@
1
1
  import React, { PropsWithChildren, useContext } from 'react';
2
- import type { ImageProps } from 'react-native';
3
2
 
4
3
  import type { AppSettingsAPIResponse, Channel, Mute, StreamChat } from 'stream-chat';
5
4
 
@@ -32,10 +31,6 @@ export type ChatContextValue = {
32
31
  client: StreamChat;
33
32
  connectionRecovering: boolean;
34
33
  enableOfflineSupport: boolean;
35
- /**
36
- * Drop in replacement of all the underlying Image components within SDK. This is useful for the purpose of offline caching of images. Please check the Offline Support Guide for usage.
37
- */
38
- ImageComponent: React.ComponentType<ImageProps>;
39
34
  isOnline: boolean | null;
40
35
  mutedUsers: Mute[];
41
36
  /**
@@ -0,0 +1,62 @@
1
+ import React, { PropsWithChildren, useContext, useMemo } from 'react';
2
+
3
+ /**
4
+ * All overridable UI components in the SDK.
5
+ * Derived from the DEFAULT_COMPONENTS map in defaultComponents.ts.
6
+ * Adding a new default automatically makes it available as an override.
7
+ *
8
+ * Every key is optional — only specify the components you want to override.
9
+ */
10
+ export type ComponentOverrides = Partial<
11
+ (typeof import('./defaultComponents'))['DEFAULT_COMPONENTS']
12
+ >;
13
+
14
+ const ComponentsContext = React.createContext<ComponentOverrides>({});
15
+
16
+ /**
17
+ * Provider to override UI components at any level of the tree.
18
+ * Supports nesting — inner overrides merge over outer ones (closest wins).
19
+ *
20
+ * @example
21
+ * ```tsx
22
+ * <WithComponents overrides={{ Message: MyCustomMessage, SendButton: MyCustomSendButton }}>
23
+ * <Channel channel={channel}>
24
+ * <MessageList />
25
+ * <MessageInput />
26
+ * </Channel>
27
+ * </WithComponents>
28
+ * ```
29
+ */
30
+ export const WithComponents = ({
31
+ children,
32
+ overrides,
33
+ }: PropsWithChildren<{ overrides: ComponentOverrides }>) => {
34
+ const parent = useContext(ComponentsContext);
35
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- intentionally stable: overrides are set once at mount
36
+ const merged = useMemo(() => ({ ...parent, ...overrides }), []);
37
+ return <ComponentsContext.Provider value={merged}>{children}</ComponentsContext.Provider>;
38
+ };
39
+
40
+ // Lazy-loaded to break circular dependency:
41
+ // defaultComponents.ts → imports components → components import useComponentsContext from this file
42
+ let cachedDefaults: ComponentOverrides | undefined;
43
+ const getDefaults = (): ComponentOverrides => {
44
+ if (!cachedDefaults) {
45
+ cachedDefaults = (require('./defaultComponents') as { DEFAULT_COMPONENTS: ComponentOverrides })
46
+ .DEFAULT_COMPONENTS;
47
+ }
48
+ return cachedDefaults;
49
+ };
50
+
51
+ /**
52
+ * Hook to access resolved component overrides.
53
+ * Returns all components with defaults filled in — user overrides merged over defaults.
54
+ */
55
+ export const useComponentsContext = () => {
56
+ const overrides = useContext(ComponentsContext);
57
+ return useMemo(
58
+ () => ({ ...getDefaults(), ...overrides }) as Required<ComponentOverrides>,
59
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- intentionally stable: overrides are set once at mount
60
+ [],
61
+ );
62
+ };