stream-chat-react 9.4.1 → 10.0.0-theming-v2.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 (520) hide show
  1. package/dist/browser.full-bundle.js +16392 -10717
  2. package/dist/browser.full-bundle.js.map +1 -1
  3. package/dist/browser.full-bundle.min.js +20 -5
  4. package/dist/browser.full-bundle.min.js.map +1 -1
  5. package/dist/components/Attachment/Attachment.d.ts +1 -0
  6. package/dist/components/Attachment/Attachment.d.ts.map +1 -1
  7. package/dist/components/Attachment/Attachment.js +80 -35
  8. package/dist/components/Attachment/AttachmentActions.d.ts.map +1 -1
  9. package/dist/components/Attachment/AttachmentActions.js +2 -6
  10. package/dist/components/Attachment/AttachmentContainer.d.ts +12 -0
  11. package/dist/components/Attachment/AttachmentContainer.d.ts.map +1 -0
  12. package/dist/components/Attachment/AttachmentContainer.js +106 -0
  13. package/dist/components/Attachment/Audio.d.ts +11 -0
  14. package/dist/components/Attachment/Audio.d.ts.map +1 -1
  15. package/dist/components/Attachment/Audio.js +59 -32
  16. package/dist/components/Attachment/Card.d.ts +5 -20
  17. package/dist/components/Attachment/Card.d.ts.map +1 -1
  18. package/dist/components/Attachment/Card.js +93 -15
  19. package/dist/components/Attachment/DownloadButton.d.ts +6 -0
  20. package/dist/components/Attachment/DownloadButton.d.ts.map +1 -0
  21. package/dist/components/Attachment/DownloadButton.js +8 -0
  22. package/dist/components/Attachment/FileAttachment.d.ts +1 -1
  23. package/dist/components/Attachment/FileAttachment.d.ts.map +1 -1
  24. package/dist/components/Attachment/FileAttachment.js +23 -6
  25. package/dist/components/Attachment/FileSizeIndicator.d.ts +6 -0
  26. package/dist/components/Attachment/FileSizeIndicator.d.ts.map +1 -0
  27. package/dist/components/Attachment/FileSizeIndicator.js +8 -0
  28. package/dist/components/Attachment/hooks/useAudioController.d.ts +9 -0
  29. package/dist/components/Attachment/hooks/useAudioController.d.ts.map +1 -0
  30. package/dist/components/Attachment/hooks/useAudioController.js +45 -0
  31. package/dist/components/Attachment/icons.d.ts +5 -0
  32. package/dist/components/Attachment/icons.d.ts.map +1 -0
  33. package/dist/components/Attachment/icons.js +10 -0
  34. package/dist/components/Attachment/index.d.ts +1 -0
  35. package/dist/components/Attachment/index.d.ts.map +1 -1
  36. package/dist/components/Attachment/index.js +1 -0
  37. package/dist/components/Attachment/utils.d.ts +40 -4
  38. package/dist/components/Attachment/utils.d.ts.map +1 -1
  39. package/dist/components/Attachment/utils.js +58 -18
  40. package/dist/components/AutoCompleteTextarea/Item.d.ts.map +1 -1
  41. package/dist/components/AutoCompleteTextarea/Item.js +11 -4
  42. package/dist/components/AutoCompleteTextarea/List.d.ts +17 -1
  43. package/dist/components/AutoCompleteTextarea/List.d.ts.map +1 -1
  44. package/dist/components/AutoCompleteTextarea/List.js +19 -17
  45. package/dist/components/AutoCompleteTextarea/Textarea.d.ts +16 -2
  46. package/dist/components/AutoCompleteTextarea/Textarea.d.ts.map +1 -1
  47. package/dist/components/AutoCompleteTextarea/Textarea.js +19 -16
  48. package/dist/components/AutoCompleteTextarea/utils.js +1 -1
  49. package/dist/components/Avatar/Avatar.js +10 -10
  50. package/dist/components/Channel/Channel.d.ts +7 -2
  51. package/dist/components/Channel/Channel.d.ts.map +1 -1
  52. package/dist/components/Channel/Channel.js +78 -69
  53. package/dist/components/Channel/LoadingChannel.d.ts +2 -0
  54. package/dist/components/Channel/LoadingChannel.d.ts.map +1 -0
  55. package/dist/components/Channel/LoadingChannel.js +20 -0
  56. package/dist/components/Channel/channelState.d.ts +1 -0
  57. package/dist/components/Channel/channelState.d.ts.map +1 -1
  58. package/dist/components/Channel/channelState.js +14 -9
  59. package/dist/components/Channel/hooks/useChannelContainerClasses.d.ts +9 -0
  60. package/dist/components/Channel/hooks/useChannelContainerClasses.d.ts.map +1 -0
  61. package/dist/components/Channel/hooks/useChannelContainerClasses.js +14 -0
  62. package/dist/components/Channel/hooks/useCreateChannelStateContext.js +6 -6
  63. package/dist/components/Channel/utils.d.ts +3 -0
  64. package/dist/components/Channel/utils.d.ts.map +1 -1
  65. package/dist/components/Channel/utils.js +9 -5
  66. package/dist/components/ChannelHeader/ChannelHeader.d.ts.map +1 -1
  67. package/dist/components/ChannelHeader/ChannelHeader.js +14 -9
  68. package/dist/components/ChannelList/ChannelList.d.ts +10 -4
  69. package/dist/components/ChannelList/ChannelList.d.ts.map +1 -1
  70. package/dist/components/ChannelList/ChannelList.js +32 -14
  71. package/dist/components/ChannelList/hooks/useChannelDeletedListener.js +10 -6
  72. package/dist/components/ChannelList/hooks/useChannelHiddenListener.js +10 -6
  73. package/dist/components/ChannelList/hooks/useChannelTruncatedListener.d.ts +1 -1
  74. package/dist/components/ChannelList/hooks/useChannelTruncatedListener.d.ts.map +1 -1
  75. package/dist/components/ChannelList/hooks/useChannelTruncatedListener.js +9 -5
  76. package/dist/components/ChannelList/hooks/useChannelUpdatedListener.d.ts +1 -1
  77. package/dist/components/ChannelList/hooks/useChannelUpdatedListener.d.ts.map +1 -1
  78. package/dist/components/ChannelList/hooks/useChannelUpdatedListener.js +9 -5
  79. package/dist/components/ChannelList/hooks/useChannelVisibleListener.js +9 -5
  80. package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.d.ts +1 -1
  81. package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.d.ts.map +1 -1
  82. package/dist/components/ChannelList/hooks/useMessageNewListener.js +9 -5
  83. package/dist/components/ChannelList/hooks/useMobileNavigation.d.ts +1 -1
  84. package/dist/components/ChannelList/hooks/useMobileNavigation.d.ts.map +1 -1
  85. package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.js +9 -5
  86. package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.js +9 -5
  87. package/dist/components/ChannelList/hooks/usePaginatedChannels.js +9 -5
  88. package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.js +9 -5
  89. package/dist/components/ChannelList/utils.js +9 -5
  90. package/dist/components/ChannelPreview/ChannelPreview.d.ts +6 -0
  91. package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
  92. package/dist/components/ChannelPreview/ChannelPreview.js +5 -21
  93. package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts.map +1 -1
  94. package/dist/components/ChannelPreview/ChannelPreviewMessenger.js +13 -9
  95. package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.d.ts +14 -0
  96. package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.d.ts.map +1 -0
  97. package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.js +29 -0
  98. package/dist/components/ChannelPreview/utils.js +2 -2
  99. package/dist/components/ChannelSearch/ChannelSearch.d.ts +6 -42
  100. package/dist/components/ChannelSearch/ChannelSearch.d.ts.map +1 -1
  101. package/dist/components/ChannelSearch/ChannelSearch.js +4 -160
  102. package/dist/components/ChannelSearch/SearchBar.d.ts +29 -0
  103. package/dist/components/ChannelSearch/SearchBar.d.ts.map +1 -0
  104. package/dist/components/ChannelSearch/SearchBar.js +93 -0
  105. package/dist/components/ChannelSearch/SearchInput.d.ts +9 -17
  106. package/dist/components/ChannelSearch/SearchInput.d.ts.map +1 -1
  107. package/dist/components/ChannelSearch/SearchInput.js +2 -4
  108. package/dist/components/ChannelSearch/SearchResults.d.ts +14 -8
  109. package/dist/components/ChannelSearch/SearchResults.d.ts.map +1 -1
  110. package/dist/components/ChannelSearch/SearchResults.js +44 -27
  111. package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts +50 -0
  112. package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts.map +1 -0
  113. package/dist/components/ChannelSearch/hooks/useChannelSearch.js +232 -0
  114. package/dist/components/ChannelSearch/icons.d.ts +6 -0
  115. package/dist/components/ChannelSearch/icons.d.ts.map +1 -0
  116. package/dist/components/ChannelSearch/icons.js +12 -0
  117. package/dist/components/Chat/Chat.d.ts.map +1 -1
  118. package/dist/components/Chat/Chat.js +4 -0
  119. package/dist/components/Chat/hooks/useChat.d.ts +1 -1
  120. package/dist/components/Chat/hooks/useChat.d.ts.map +1 -1
  121. package/dist/components/Chat/hooks/useChat.js +1 -1
  122. package/dist/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
  123. package/dist/components/Chat/hooks/useCreateChatContext.js +3 -2
  124. package/dist/components/Chat/hooks/useCustomStyles.d.ts +1 -1
  125. package/dist/components/Chat/hooks/useCustomStyles.d.ts.map +1 -1
  126. package/dist/components/ChatAutoComplete/ChatAutoComplete.js +1 -1
  127. package/dist/components/DateSeparator/DateSeparator.js +1 -1
  128. package/dist/components/EmoticonItem/EmoticonItem.js +1 -1
  129. package/dist/components/EmptyStateIndicator/EmptyStateIndicator.d.ts +1 -1
  130. package/dist/components/EmptyStateIndicator/EmptyStateIndicator.d.ts.map +1 -1
  131. package/dist/components/EmptyStateIndicator/EmptyStateIndicator.js +16 -3
  132. package/dist/components/EmptyStateIndicator/icons.d.ts +2 -0
  133. package/dist/components/EmptyStateIndicator/icons.d.ts.map +1 -0
  134. package/dist/components/EmptyStateIndicator/icons.js +3 -0
  135. package/dist/components/EventComponent/EventComponent.js +1 -1
  136. package/dist/components/Gallery/Gallery.d.ts.map +1 -1
  137. package/dist/components/Gallery/Gallery.js +16 -14
  138. package/dist/components/Gallery/Image.d.ts +7 -3
  139. package/dist/components/Gallery/Image.d.ts.map +1 -1
  140. package/dist/components/Gallery/Image.js +21 -9
  141. package/dist/components/Gallery/ModalGallery.d.ts +10 -0
  142. package/dist/components/Gallery/ModalGallery.d.ts.map +1 -0
  143. package/dist/components/Gallery/ModalGallery.js +16 -0
  144. package/dist/components/Gallery/index.d.ts +1 -1
  145. package/dist/components/Gallery/index.js +1 -1
  146. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts +2 -0
  147. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts.map +1 -1
  148. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.js +4 -1
  149. package/dist/components/LoadMore/LoadMoreButton.js +2 -2
  150. package/dist/components/Loading/LoadingChannels.js +2 -2
  151. package/dist/components/Loading/LoadingIndicator.js +1 -1
  152. package/dist/components/MML/MML.js +1 -1
  153. package/dist/components/Message/FixedHeightMessage.js +3 -3
  154. package/dist/components/Message/MessageDeleted.js +2 -2
  155. package/dist/components/Message/MessageOptions.d.ts +1 -0
  156. package/dist/components/Message/MessageOptions.d.ts.map +1 -1
  157. package/dist/components/Message/MessageOptions.js +9 -16
  158. package/dist/components/Message/MessageRepliesCountButton.d.ts.map +1 -1
  159. package/dist/components/Message/MessageRepliesCountButton.js +8 -5
  160. package/dist/components/Message/MessageSimple.d.ts.map +1 -1
  161. package/dist/components/Message/MessageSimple.js +41 -21
  162. package/dist/components/Message/MessageStatus.d.ts.map +1 -1
  163. package/dist/components/Message/MessageStatus.js +17 -8
  164. package/dist/components/Message/MessageText.d.ts +1 -1
  165. package/dist/components/Message/MessageText.d.ts.map +1 -1
  166. package/dist/components/Message/MessageText.js +10 -14
  167. package/dist/components/Message/QuotedMessage.d.ts.map +1 -1
  168. package/dist/components/Message/QuotedMessage.js +8 -3
  169. package/dist/components/Message/hooks/index.d.ts +0 -2
  170. package/dist/components/Message/hooks/index.d.ts.map +1 -1
  171. package/dist/components/Message/hooks/index.js +0 -2
  172. package/dist/components/Message/hooks/useEditHandler.d.ts +1 -1
  173. package/dist/components/Message/hooks/useEditHandler.d.ts.map +1 -1
  174. package/dist/components/Message/hooks/useReactionHandler.d.ts +3 -3
  175. package/dist/components/Message/hooks/useReactionHandler.d.ts.map +1 -1
  176. package/dist/components/Message/hooks/useReactionHandler.js +11 -7
  177. package/dist/components/Message/hooks/useUserRole.d.ts +1 -1
  178. package/dist/components/Message/hooks/useUserRole.d.ts.map +1 -1
  179. package/dist/components/Message/icons.d.ts +6 -4
  180. package/dist/components/Message/icons.d.ts.map +1 -1
  181. package/dist/components/Message/icons.js +25 -10
  182. package/dist/components/Message/index.d.ts +0 -3
  183. package/dist/components/Message/index.d.ts.map +1 -1
  184. package/dist/components/Message/index.js +0 -3
  185. package/dist/components/Message/utils.js +10 -6
  186. package/dist/components/MessageActions/MessageActions.d.ts.map +1 -1
  187. package/dist/components/MessageActions/MessageActions.js +3 -3
  188. package/dist/components/MessageActions/MessageActionsBox.d.ts.map +1 -1
  189. package/dist/components/MessageActions/MessageActionsBox.js +14 -7
  190. package/dist/components/MessageInput/AttachmentPreviewList.d.ts +2 -0
  191. package/dist/components/MessageInput/AttachmentPreviewList.d.ts.map +1 -0
  192. package/dist/components/MessageInput/AttachmentPreviewList.js +60 -0
  193. package/dist/components/MessageInput/EditMessageForm.d.ts.map +1 -1
  194. package/dist/components/MessageInput/EditMessageForm.js +11 -6
  195. package/dist/components/MessageInput/EmojiPicker.d.ts +1 -1
  196. package/dist/components/MessageInput/EmojiPicker.d.ts.map +1 -1
  197. package/dist/components/MessageInput/EmojiPicker.js +14 -17
  198. package/dist/components/MessageInput/MessageInput.d.ts +1 -1
  199. package/dist/components/MessageInput/MessageInput.d.ts.map +1 -1
  200. package/dist/components/MessageInput/MessageInputFlat.d.ts.map +1 -1
  201. package/dist/components/MessageInput/MessageInputFlat.js +84 -10
  202. package/dist/components/MessageInput/MessageInputSmall.d.ts +9 -0
  203. package/dist/components/MessageInput/MessageInputSmall.d.ts.map +1 -1
  204. package/dist/components/MessageInput/MessageInputSmall.js +10 -1
  205. package/dist/components/MessageInput/QuotedMessagePreview.d.ts +2 -1
  206. package/dist/components/MessageInput/QuotedMessagePreview.d.ts.map +1 -1
  207. package/dist/components/MessageInput/QuotedMessagePreview.js +29 -22
  208. package/dist/components/MessageInput/UploadsPreview.d.ts +7 -0
  209. package/dist/components/MessageInput/UploadsPreview.d.ts.map +1 -1
  210. package/dist/components/MessageInput/UploadsPreview.js +17 -6
  211. package/dist/components/MessageInput/hooks/useAttachments.d.ts.map +1 -1
  212. package/dist/components/MessageInput/hooks/useAttachments.js +8 -1
  213. package/dist/components/MessageInput/hooks/useCommandTrigger.d.ts.map +1 -1
  214. package/dist/components/MessageInput/hooks/useCommandTrigger.js +6 -4
  215. package/dist/components/MessageInput/hooks/useCooldownTimer.d.ts +1 -1
  216. package/dist/components/MessageInput/hooks/useCooldownTimer.d.ts.map +1 -1
  217. package/dist/components/MessageInput/hooks/useCooldownTimer.js +4 -4
  218. package/dist/components/MessageInput/hooks/useEmojiPicker.d.ts +1 -1
  219. package/dist/components/MessageInput/hooks/useEmojiPicker.d.ts.map +1 -1
  220. package/dist/components/MessageInput/hooks/useEmojiTrigger.d.ts +1 -1
  221. package/dist/components/MessageInput/hooks/useEmojiTrigger.d.ts.map +1 -1
  222. package/dist/components/MessageInput/hooks/useEmojiTrigger.js +23 -19
  223. package/dist/components/MessageInput/hooks/useFileState.d.ts +7 -0
  224. package/dist/components/MessageInput/hooks/useFileState.d.ts.map +1 -0
  225. package/dist/components/MessageInput/hooks/useFileState.js +8 -0
  226. package/dist/components/MessageInput/hooks/useImageUploads.d.ts.map +1 -1
  227. package/dist/components/MessageInput/hooks/useImageUploads.js +17 -36
  228. package/dist/components/MessageInput/hooks/useMessageInputState.d.ts +2 -6
  229. package/dist/components/MessageInput/hooks/useMessageInputState.d.ts.map +1 -1
  230. package/dist/components/MessageInput/hooks/useSubmitHandler.js +10 -6
  231. package/dist/components/MessageInput/hooks/useUserTrigger.d.ts +1 -1
  232. package/dist/components/MessageInput/hooks/useUserTrigger.d.ts.map +1 -1
  233. package/dist/components/MessageInput/hooks/useUserTrigger.js +13 -9
  234. package/dist/components/MessageInput/hooks/utils.d.ts +1 -1
  235. package/dist/components/MessageInput/hooks/utils.d.ts.map +1 -1
  236. package/dist/components/MessageInput/icons.d.ts +12 -2
  237. package/dist/components/MessageInput/icons.d.ts.map +1 -1
  238. package/dist/components/MessageInput/icons.js +67 -7
  239. package/dist/components/MessageList/CustomNotification.js +1 -1
  240. package/dist/components/MessageList/MessageList.d.ts +3 -0
  241. package/dist/components/MessageList/MessageList.d.ts.map +1 -1
  242. package/dist/components/MessageList/MessageList.js +17 -14
  243. package/dist/components/MessageList/MessageListMainPanel.d.ts +3 -0
  244. package/dist/components/MessageList/MessageListMainPanel.d.ts.map +1 -0
  245. package/dist/components/MessageList/MessageListMainPanel.js +9 -0
  246. package/dist/components/MessageList/MessageListNotifications.d.ts +2 -0
  247. package/dist/components/MessageList/MessageListNotifications.d.ts.map +1 -1
  248. package/dist/components/MessageList/MessageListNotifications.js +2 -2
  249. package/dist/components/MessageList/MessageNotification.d.ts +9 -6
  250. package/dist/components/MessageList/MessageNotification.d.ts.map +1 -1
  251. package/dist/components/MessageList/MessageNotification.js +1 -1
  252. package/dist/components/MessageList/ScrollToBottomButton.d.ts +3 -0
  253. package/dist/components/MessageList/ScrollToBottomButton.d.ts.map +1 -0
  254. package/dist/components/MessageList/ScrollToBottomButton.js +53 -0
  255. package/dist/components/MessageList/VirtualizedMessageList.d.ts +5 -0
  256. package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
  257. package/dist/components/MessageList/VirtualizedMessageList.js +41 -14
  258. package/dist/components/MessageList/hooks/useMessageListElements.d.ts +1 -1
  259. package/dist/components/MessageList/hooks/useMessageListElements.d.ts.map +1 -1
  260. package/dist/components/MessageList/hooks/useMessageListElements.js +4 -3
  261. package/dist/components/MessageList/hooks/useMessageListScrollManager.d.ts.map +1 -1
  262. package/dist/components/MessageList/hooks/useMessageListScrollManager.js +3 -1
  263. package/dist/components/MessageList/hooks/useNewMessageNotification.d.ts +2 -0
  264. package/dist/components/MessageList/hooks/useNewMessageNotification.d.ts.map +1 -1
  265. package/dist/components/MessageList/hooks/useNewMessageNotification.js +8 -1
  266. package/dist/components/MessageList/hooks/useScrollLocationLogic.d.ts +1 -2
  267. package/dist/components/MessageList/hooks/useScrollLocationLogic.d.ts.map +1 -1
  268. package/dist/components/MessageList/hooks/useScrollLocationLogic.js +12 -30
  269. package/dist/components/MessageList/icons.d.ts +8 -0
  270. package/dist/components/MessageList/icons.d.ts.map +1 -0
  271. package/dist/components/MessageList/icons.js +11 -0
  272. package/dist/components/MessageList/index.d.ts +1 -0
  273. package/dist/components/MessageList/index.d.ts.map +1 -1
  274. package/dist/components/MessageList/index.js +1 -0
  275. package/dist/components/MessageList/utils.d.ts +4 -2
  276. package/dist/components/MessageList/utils.d.ts.map +1 -1
  277. package/dist/components/MessageList/utils.js +16 -3
  278. package/dist/components/Modal/Modal.d.ts +2 -2
  279. package/dist/components/Modal/Modal.d.ts.map +1 -1
  280. package/dist/components/Modal/Modal.js +18 -15
  281. package/dist/components/Modal/icons.d.ts +2 -0
  282. package/dist/components/Modal/icons.d.ts.map +1 -0
  283. package/dist/components/Modal/icons.js +5 -0
  284. package/dist/components/Reactions/ReactionSelector.d.ts +2 -0
  285. package/dist/components/Reactions/ReactionSelector.d.ts.map +1 -1
  286. package/dist/components/Reactions/ReactionSelector.js +18 -9
  287. package/dist/components/Reactions/ReactionsList.d.ts +3 -1
  288. package/dist/components/Reactions/ReactionsList.d.ts.map +1 -1
  289. package/dist/components/Reactions/ReactionsList.js +33 -47
  290. package/dist/components/Reactions/SimpleReactionsList.d.ts +3 -1
  291. package/dist/components/Reactions/SimpleReactionsList.d.ts.map +1 -1
  292. package/dist/components/Reactions/SimpleReactionsList.js +41 -58
  293. package/dist/components/Reactions/hooks/useProcessReactions.d.ts +21 -0
  294. package/dist/components/Reactions/hooks/useProcessReactions.d.ts.map +1 -0
  295. package/dist/components/Reactions/hooks/useProcessReactions.js +51 -0
  296. package/dist/components/Thread/Thread.d.ts +2 -6
  297. package/dist/components/Thread/Thread.d.ts.map +1 -1
  298. package/dist/components/Thread/Thread.js +21 -89
  299. package/dist/components/Thread/ThreadHead.d.ts +4 -0
  300. package/dist/components/Thread/ThreadHead.d.ts.map +1 -0
  301. package/dist/components/Thread/ThreadHead.js +21 -0
  302. package/dist/components/Thread/ThreadHeader.d.ts +12 -0
  303. package/dist/components/Thread/ThreadHeader.d.ts.map +1 -0
  304. package/dist/components/Thread/ThreadHeader.js +21 -0
  305. package/dist/components/Thread/ThreadStart.d.ts +2 -0
  306. package/dist/components/Thread/ThreadStart.d.ts.map +1 -0
  307. package/dist/components/Thread/ThreadStart.js +10 -0
  308. package/dist/components/Thread/icons.d.ts +4 -0
  309. package/dist/components/Thread/icons.d.ts.map +1 -0
  310. package/dist/components/Thread/icons.js +9 -0
  311. package/dist/components/Thread/index.d.ts +2 -0
  312. package/dist/components/Thread/index.d.ts.map +1 -1
  313. package/dist/components/Thread/index.js +2 -0
  314. package/dist/components/TypingIndicator/TypingIndicator.d.ts.map +1 -1
  315. package/dist/components/TypingIndicator/TypingIndicator.js +52 -9
  316. package/dist/components/UserItem/UserItem.d.ts +1 -1
  317. package/dist/components/UserItem/UserItem.d.ts.map +1 -1
  318. package/dist/components/UserItem/UserItem.js +15 -8
  319. package/dist/components/Window/Window.js +1 -1
  320. package/dist/constants/limits.d.ts +4 -0
  321. package/dist/constants/limits.d.ts.map +1 -0
  322. package/dist/constants/limits.js +3 -0
  323. package/dist/context/ChannelActionContext.d.ts +1 -1
  324. package/dist/context/ChannelActionContext.d.ts.map +1 -1
  325. package/dist/context/ChannelActionContext.js +1 -1
  326. package/dist/context/ChannelStateContext.d.ts +3 -2
  327. package/dist/context/ChannelStateContext.d.ts.map +1 -1
  328. package/dist/context/ChannelStateContext.js +1 -1
  329. package/dist/context/ChatContext.d.ts +5 -4
  330. package/dist/context/ChatContext.d.ts.map +1 -1
  331. package/dist/context/ChatContext.js +2 -2
  332. package/dist/context/ComponentContext.d.ts +6 -2
  333. package/dist/context/ComponentContext.d.ts.map +1 -1
  334. package/dist/context/ComponentContext.js +1 -1
  335. package/dist/context/EmojiContext.d.ts +1 -1
  336. package/dist/context/EmojiContext.d.ts.map +1 -1
  337. package/dist/context/EmojiContext.js +1 -1
  338. package/dist/context/MessageContext.d.ts +1 -1
  339. package/dist/context/MessageContext.d.ts.map +1 -1
  340. package/dist/context/MessageContext.js +1 -1
  341. package/dist/context/MessageInputContext.d.ts +1 -1
  342. package/dist/context/MessageInputContext.d.ts.map +1 -1
  343. package/dist/context/MessageInputContext.js +1 -1
  344. package/dist/context/TranslationContext.d.ts +2 -2
  345. package/dist/context/TranslationContext.d.ts.map +1 -1
  346. package/dist/context/TranslationContext.js +8 -4
  347. package/dist/context/TypingContext.d.ts +1 -1
  348. package/dist/context/TypingContext.d.ts.map +1 -1
  349. package/dist/context/TypingContext.js +1 -1
  350. package/dist/css/index.css +1 -1
  351. package/dist/css/index.css.map +1 -0
  352. package/dist/css/v2/index.css +1 -0
  353. package/dist/css/v2/index.css.map +1 -0
  354. package/dist/css/v2/index.layout.css +1 -0
  355. package/dist/css/v2/index.layout.css.map +1 -0
  356. package/dist/i18n/Streami18n.d.ts +8 -2
  357. package/dist/i18n/Streami18n.d.ts.map +1 -1
  358. package/dist/i18n/Streami18n.js +12 -12
  359. package/dist/i18n/de.json +8 -2
  360. package/dist/i18n/en.json +8 -2
  361. package/dist/i18n/es.json +9 -2
  362. package/dist/i18n/fr.json +9 -2
  363. package/dist/i18n/hi.json +8 -2
  364. package/dist/i18n/it.json +9 -2
  365. package/dist/i18n/ja.json +8 -2
  366. package/dist/i18n/ko.json +8 -2
  367. package/dist/i18n/nl.json +8 -2
  368. package/dist/i18n/pt.json +9 -2
  369. package/dist/i18n/ru.json +10 -2
  370. package/dist/i18n/tr.json +8 -2
  371. package/dist/index.cjs.js +8773 -3961
  372. package/dist/index.cjs.js.map +1 -1
  373. package/dist/scss/Attachment.scss +52 -22
  374. package/dist/scss/Audio.scss +1 -1
  375. package/dist/scss/Avatar.scss +1 -1
  376. package/dist/scss/ChannelList.scss +5 -1
  377. package/dist/scss/ChannelPreview.scss +25 -0
  378. package/dist/scss/ChannelSearch.scss +5 -3
  379. package/dist/scss/Gallery.scss +0 -20
  380. package/dist/scss/ImageCarousel.scss +39 -0
  381. package/dist/scss/LoadingChannels.scss +1 -1
  382. package/dist/scss/Message.scss +84 -86
  383. package/dist/scss/MessageActions.scss +15 -0
  384. package/dist/scss/MessageCommerce.scss +57 -13
  385. package/dist/scss/MessageInputFlat.scss +21 -9
  386. package/dist/scss/MessageList.scss +35 -3
  387. package/dist/scss/MessageLivestream.scss +23 -10
  388. package/dist/scss/MessageNotification.scss +7 -1
  389. package/dist/scss/MessageTeam.scss +37 -10
  390. package/dist/scss/Modal.scss +2 -0
  391. package/dist/scss/ReactionList.scss +14 -0
  392. package/dist/scss/ReactionSelector.scss +6 -0
  393. package/dist/scss/SendButton.scss +6 -0
  394. package/dist/scss/SmallMessageInput.scss +0 -1
  395. package/dist/scss/Thread.scss +21 -2
  396. package/dist/scss/Tooltip.scss +6 -3
  397. package/dist/scss/TypingIndicator.scss +5 -0
  398. package/dist/scss/_base.scss +26 -0
  399. package/dist/scss/_variables.scss +2 -1
  400. package/dist/scss/index.scss +5 -4
  401. package/dist/scss/v2/AttachmentList/AttachmentList-layout.scss +392 -0
  402. package/dist/scss/v2/AttachmentList/AttachmentList-theme.scss +400 -0
  403. package/dist/scss/v2/AttachmentPreviewList/AttachmentPreviewList-layout.scss +118 -0
  404. package/dist/scss/v2/AttachmentPreviewList/AttachmentPreviewList-theme.scss +150 -0
  405. package/dist/scss/v2/Autocomplete/Autocomplete-layout.scss +62 -0
  406. package/dist/scss/v2/Autocomplete/Autocomplete-theme.scss +207 -0
  407. package/dist/scss/v2/Avatar/Avatar-layout.scss +13 -0
  408. package/dist/scss/v2/Avatar/Avatar-theme.scss +42 -0
  409. package/dist/scss/v2/Channel/Channel-layout.scss +139 -0
  410. package/dist/scss/v2/Channel/Channel-theme.scss +99 -0
  411. package/dist/scss/v2/ChannelHeader/ChannelHeader-layout.scss +23 -0
  412. package/dist/scss/v2/ChannelHeader/ChannelHeader-theme.scss +43 -0
  413. package/dist/scss/v2/ChannelList/ChannelList-layout.scss +41 -0
  414. package/dist/scss/v2/ChannelList/ChannelList-theme.scss +87 -0
  415. package/dist/scss/v2/ChannelPreview/ChannelPreview-layout.scss +82 -0
  416. package/dist/scss/v2/ChannelPreview/ChannelPreview-theme.scss +108 -0
  417. package/dist/scss/v2/ChannelSearch/ChannelSearch-layout.scss +71 -0
  418. package/dist/scss/v2/ChannelSearch/ChannelSearch-theme.scss +190 -0
  419. package/dist/scss/v2/EditMessageForm/EditMessageForm-layout.scss +53 -0
  420. package/dist/scss/v2/EditMessageForm/EditMessageForm-theme.scss +50 -0
  421. package/dist/scss/v2/ImageCarousel/ImageCarousel-layout.scss +41 -0
  422. package/dist/scss/v2/ImageCarousel/ImageCarousel-theme.scss +15 -0
  423. package/dist/scss/v2/LoadingIndicator/LoadingIndicator-layout.scss +39 -0
  424. package/dist/scss/v2/LoadingIndicator/LoadingIndicator-theme.scss +12 -0
  425. package/dist/scss/v2/Message/Message-layout.scss +373 -0
  426. package/dist/scss/v2/Message/Message-theme.scss +353 -0
  427. package/dist/scss/v2/MessageActionsBox/MessageActionsBox-layout.scss +48 -0
  428. package/dist/scss/v2/MessageActionsBox/MessageActionsBox-theme.scss +69 -0
  429. package/dist/scss/v2/MessageInput/MessageInput-layout.scss +186 -0
  430. package/dist/scss/v2/MessageInput/MessageInput-theme.scss +221 -0
  431. package/dist/scss/v2/MessageList/MessageList-layout.scss +61 -0
  432. package/dist/scss/v2/MessageList/MessageList-theme.scss +105 -0
  433. package/dist/scss/v2/MessageList/VirtualizedMessageList-layout.scss +44 -0
  434. package/dist/scss/v2/MessageList/VirtualizedMessageList-theme.scss +32 -0
  435. package/dist/scss/v2/MessageReactions/MessageReactions-layout.scss +64 -0
  436. package/dist/scss/v2/MessageReactions/MessageReactions-theme.scss +75 -0
  437. package/dist/scss/v2/MessageReactions/MessageReactionsSelector-layout.scss +52 -0
  438. package/dist/scss/v2/MessageReactions/MessageReactionsSelector-theme.scss +83 -0
  439. package/dist/scss/v2/Modal/Modal-layout.scss +40 -0
  440. package/dist/scss/v2/Modal/Modal-theme.scss +82 -0
  441. package/dist/scss/v2/Notification/MessageNotification-layout.scss +12 -0
  442. package/dist/scss/v2/Notification/MessageNotification-theme.scss +34 -0
  443. package/dist/scss/v2/Notification/Notification-layout.scss +3 -0
  444. package/dist/scss/v2/Notification/Notification-theme.scss +32 -0
  445. package/dist/scss/v2/Notification/NotificationList-layout.scss +11 -0
  446. package/dist/scss/v2/Notification/NotificationList-theme.scss +31 -0
  447. package/dist/scss/v2/Thread/Thread-layout.scss +47 -0
  448. package/dist/scss/v2/Thread/Thread-theme.scss +82 -0
  449. package/dist/scss/v2/Tooltip/Tooltip-layout.scss +30 -0
  450. package/dist/scss/v2/Tooltip/Tooltip-theme.scss +36 -0
  451. package/dist/scss/v2/TypingIndicator/TypingIndicator-layout.scss +27 -0
  452. package/dist/scss/v2/TypingIndicator/TypingIndicator-theme.scss +68 -0
  453. package/dist/scss/v2/_base.scss +29 -0
  454. package/dist/scss/v2/_global-layout-variables.scss +65 -0
  455. package/dist/scss/v2/_global-theme-variables.scss +166 -0
  456. package/dist/scss/v2/_palette-variables.scss +55 -0
  457. package/dist/scss/v2/_utils.scss +188 -0
  458. package/dist/scss/v2/common/CTAButton/CTAButton-layout.scss +4 -0
  459. package/dist/scss/v2/common/CTAButton/CTAButton-theme.scss +42 -0
  460. package/dist/scss/v2/common/CircleFAButton/CircleFAButton-layout.scss +14 -0
  461. package/dist/scss/v2/common/CircleFAButton/CircleFAButton-theme.scss +35 -0
  462. package/dist/scss/v2/index.layout.scss +31 -0
  463. package/dist/scss/v2/index.scss +36 -0
  464. package/dist/scss/{vendor → v2/vendor}/emoji-mart.scss +27 -8
  465. package/dist/stories/add-message.stories.d.ts +0 -1
  466. package/dist/stories/add-message.stories.d.ts.map +1 -1
  467. package/dist/stories/add-message.stories.js +0 -1
  468. package/dist/stories/edit-message.stories.d.ts +0 -1
  469. package/dist/stories/edit-message.stories.d.ts.map +1 -1
  470. package/dist/stories/edit-message.stories.js +0 -1
  471. package/dist/stories/hello.stories.d.ts +0 -1
  472. package/dist/stories/hello.stories.d.ts.map +1 -1
  473. package/dist/stories/hello.stories.js +0 -1
  474. package/dist/stories/jump-to-message.stories.d.ts +0 -1
  475. package/dist/stories/jump-to-message.stories.d.ts.map +1 -1
  476. package/dist/stories/jump-to-message.stories.js +0 -1
  477. package/dist/stories/mark-read.stories.d.ts +0 -1
  478. package/dist/stories/mark-read.stories.d.ts.map +1 -1
  479. package/dist/stories/mark-read.stories.js +0 -1
  480. package/dist/stories/message-status-readby-tooltip.stories.d.ts +0 -1
  481. package/dist/stories/message-status-readby-tooltip.stories.d.ts.map +1 -1
  482. package/dist/stories/message-status-readby-tooltip.stories.js +0 -1
  483. package/dist/stories/navigate-long-message-lists.stories.d.ts +0 -2
  484. package/dist/stories/navigate-long-message-lists.stories.d.ts.map +1 -1
  485. package/dist/stories/navigate-long-message-lists.stories.js +1 -11
  486. package/dist/stories/toggle-message-actions.stories.d.ts +0 -1
  487. package/dist/stories/toggle-message-actions.stories.d.ts.map +1 -1
  488. package/dist/stories/toggle-message-actions.stories.js +0 -1
  489. package/dist/stories/utils.d.ts.map +1 -1
  490. package/dist/stories/utils.js +2 -1
  491. package/dist/types/types.d.ts +7 -0
  492. package/dist/types/types.d.ts.map +1 -1
  493. package/dist/utils.d.ts +2 -2
  494. package/dist/utils.d.ts.map +1 -1
  495. package/dist/utils.js +4 -4
  496. package/dist/version.d.ts +1 -1
  497. package/dist/version.d.ts.map +1 -1
  498. package/dist/version.js +1 -1
  499. package/package.json +11 -7
  500. package/dist/components/Gallery/ModalWrapper.d.ts +0 -14
  501. package/dist/components/Gallery/ModalWrapper.d.ts.map +0 -1
  502. package/dist/components/Gallery/ModalWrapper.js +0 -8
  503. package/dist/components/Message/MessageCommerce.d.ts +0 -10
  504. package/dist/components/Message/MessageCommerce.d.ts.map +0 -1
  505. package/dist/components/Message/MessageCommerce.js +0 -64
  506. package/dist/components/Message/MessageLivestream.d.ts +0 -16
  507. package/dist/components/Message/MessageLivestream.d.ts.map +0 -1
  508. package/dist/components/Message/MessageLivestream.js +0 -164
  509. package/dist/components/Message/MessageTeam.d.ts +0 -11
  510. package/dist/components/Message/MessageTeam.d.ts.map +0 -1
  511. package/dist/components/Message/MessageTeam.js +0 -110
  512. package/dist/components/Message/hooks/useBreakpoint.d.ts +0 -6
  513. package/dist/components/Message/hooks/useBreakpoint.d.ts.map +0 -1
  514. package/dist/components/Message/hooks/useBreakpoint.js +0 -18
  515. package/dist/components/Message/hooks/useMobilePress.d.ts +0 -5
  516. package/dist/components/Message/hooks/useMobilePress.d.ts.map +0 -1
  517. package/dist/components/Message/hooks/useMobilePress.js +0 -33
  518. package/dist/scss/vendor/mml-react.scss +0 -1749
  519. package/dist/scss/vendor/react-file-utils.scss +0 -378
  520. package/dist/scss/vendor/react-image-gallery.scss +0 -224
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchBar.d.ts","sourceRoot":"","sources":["../../../src/components/ChannelSearch/SearchBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AASf,OAAO,EAAqC,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAqBpF,oBAAY,mBAAmB,GAAG;IAChC,mCAAmC;IACnC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,mEAAmE;IACnE,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,2DAA2D;IAC3D,cAAc,EAAE,OAAO,CAAC;IACxB,wDAAwD;IACxD,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;CAC/C,CAAC;AAEF,oBAAY,wBAAwB,GAAG;IACrC,iEAAiE;IACjE,OAAO,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC9B,+GAA+G;IAC/G,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,8EAA8E;IAC9E,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,yDAAyD;IACzD,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC/B,2DAA2D;IAC3D,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACpD,iDAAiD;IACjD,eAAe,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CACvC,CAAC;AAEF,oBAAY,cAAc,GAAG,wBAAwB,GAAG,mBAAmB,GAAG,gBAAgB,CAAC;AAG/F,eAAO,MAAM,SAAS,UAAW,cAAc,gBAiH9C,CAAC"}
@@ -0,0 +1,93 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ import React, { useCallback, useEffect, useRef, useState, } from 'react';
24
+ import clsx from 'clsx';
25
+ import { MenuIcon as DefaultMenuIcon, SearchIcon as DefaultSearchInputIcon, ReturnIcon, XIcon, } from './icons';
26
+ import { SearchInput as DefaultSearchInput } from './SearchInput';
27
+ var SearchBarButton = function (_a) {
28
+ var children = _a.children, className = _a.className, onClick = _a.onClick;
29
+ return (React.createElement("button", { className: clsx('str-chat__channel-search-bar-button', className), "data-testid": 'search-bar-button', onClick: onClick }, children));
30
+ };
31
+ // todo: add context menu control logic
32
+ export var SearchBar = function (props) {
33
+ var activateSearch = props.activateSearch, AppMenu = props.AppMenu, _a = props.ClearInputIcon, ClearInputIcon = _a === void 0 ? XIcon : _a, exitSearch = props.exitSearch, _b = props.ExitSearchIcon, ExitSearchIcon = _b === void 0 ? ReturnIcon : _b, inputIsFocused = props.inputIsFocused, _c = props.MenuIcon, MenuIcon = _c === void 0 ? DefaultMenuIcon : _c, searchBarRef = props.searchBarRef, _d = props.SearchInput, SearchInput = _d === void 0 ? DefaultSearchInput : _d, _e = props.SearchInputIcon, SearchInputIcon = _e === void 0 ? DefaultSearchInputIcon : _e, inputProps = __rest(props, ["activateSearch", "AppMenu", "ClearInputIcon", "exitSearch", "ExitSearchIcon", "inputIsFocused", "MenuIcon", "searchBarRef", "SearchInput", "SearchInputIcon"]);
34
+ var _f = useState(false), menuIsOpen = _f[0], setMenuIsOpen = _f[1];
35
+ var appMenuRef = useRef(null);
36
+ useEffect(function () {
37
+ if (!appMenuRef.current)
38
+ return;
39
+ var handleKeyDown = function (event) {
40
+ if (menuIsOpen && event.key === 'Escape') {
41
+ setMenuIsOpen(false);
42
+ }
43
+ };
44
+ var clickListener = function (e) {
45
+ var _a;
46
+ if (!(e.target instanceof HTMLElement) ||
47
+ !menuIsOpen ||
48
+ ((_a = appMenuRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target)))
49
+ return;
50
+ setMenuIsOpen(false);
51
+ };
52
+ document.addEventListener('keydown', handleKeyDown);
53
+ document.addEventListener('click', clickListener);
54
+ return function () {
55
+ document.removeEventListener('keydown', handleKeyDown);
56
+ document.removeEventListener('click', clickListener);
57
+ };
58
+ }, [menuIsOpen]);
59
+ useEffect(function () {
60
+ if (!props.inputRef.current)
61
+ return;
62
+ var handleFocus = function () {
63
+ activateSearch();
64
+ };
65
+ var handleBlur = function (e) {
66
+ e.stopPropagation(); // handle blur/focus state with React state
67
+ };
68
+ props.inputRef.current.addEventListener('focus', handleFocus);
69
+ props.inputRef.current.addEventListener('blur', handleBlur);
70
+ return function () {
71
+ var _a, _b;
72
+ (_a = props.inputRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('focus', handleFocus);
73
+ (_b = props.inputRef.current) === null || _b === void 0 ? void 0 : _b.addEventListener('blur', handleBlur);
74
+ };
75
+ }, []);
76
+ var handleClearClick = useCallback(function () {
77
+ var _a;
78
+ inputProps.clearState();
79
+ (_a = inputProps.inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
80
+ }, []);
81
+ return (React.createElement("div", { className: 'str-chat__channel-search-bar', "data-testid": 'search-bar', ref: searchBarRef },
82
+ inputIsFocused ? (React.createElement(SearchBarButton, { className: 'str-chat__channel-search-bar-button--exit-search', onClick: exitSearch },
83
+ React.createElement(ExitSearchIcon, null))) : AppMenu ? (React.createElement(SearchBarButton, { className: 'str-chat__channel-search-bar-button--menu', onClick: function () { return setMenuIsOpen(function (prev) { return !prev; }); } },
84
+ React.createElement(MenuIcon, null))) : null,
85
+ React.createElement("div", { className: clsx('str-chat__channel-search-input--wrapper', inputProps.query && 'str-chat__channel-search-input--wrapper-active') },
86
+ React.createElement("div", { className: 'str-chat__channel-search-input--icon' },
87
+ React.createElement(SearchInputIcon, null)),
88
+ React.createElement(SearchInput, __assign({}, inputProps)),
89
+ React.createElement("button", { className: 'str-chat__channel-search-input--clear-button', "data-testid": 'clear-input-button', disabled: !inputProps.query, onClick: handleClearClick },
90
+ React.createElement(ClearInputIcon, null))),
91
+ menuIsOpen && AppMenu && (React.createElement("div", { ref: appMenuRef },
92
+ React.createElement(AppMenu, null)))));
93
+ };
@@ -1,25 +1,17 @@
1
1
  import React from 'react';
2
- import type { ChannelOrUserResponse } from './utils';
3
- import type { DefaultStreamChatGenerics } from '../../types/types';
4
- export declare type ChannelSearchFunctionParams<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
5
- setQuery: React.Dispatch<React.SetStateAction<string>>;
6
- setResults: React.Dispatch<React.SetStateAction<Array<ChannelOrUserResponse<StreamChatGenerics>>>>;
7
- setResultsOpen: React.Dispatch<React.SetStateAction<boolean>>;
8
- setSearching: React.Dispatch<React.SetStateAction<boolean>>;
9
- };
10
- export declare type SearchInputProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
11
- channelSearchParams: {
12
- setQuery: React.Dispatch<React.SetStateAction<string>>;
13
- setResults: React.Dispatch<React.SetStateAction<ChannelOrUserResponse<StreamChatGenerics>[]>>;
14
- setResultsOpen: React.Dispatch<React.SetStateAction<boolean>>;
15
- setSearching: React.Dispatch<React.SetStateAction<boolean>>;
16
- };
2
+ export declare type SearchInputController = {
3
+ /** Clears the channel search state */
4
+ clearState: () => void;
17
5
  inputRef: React.RefObject<HTMLInputElement>;
6
+ /** Search input change handler */
18
7
  onSearch: (event: React.BaseSyntheticEvent) => void;
8
+ /** Current search string */
19
9
  query: string;
10
+ };
11
+ export declare type AdditionalSearchInputProps = {
20
12
  /** Custom placeholder text to be displayed in the search input */
21
13
  placeholder?: string;
22
- searchFunction?: (params: ChannelSearchFunctionParams<StreamChatGenerics>, event: React.BaseSyntheticEvent) => Promise<void> | void;
23
14
  };
24
- export declare const SearchInput: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(props: SearchInputProps<StreamChatGenerics>) => JSX.Element;
15
+ export declare type SearchInputProps = AdditionalSearchInputProps & SearchInputController;
16
+ export declare const SearchInput: (props: SearchInputProps) => JSX.Element;
25
17
  //# sourceMappingURL=SearchInput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchInput.d.ts","sourceRoot":"","sources":["../../../src/components/ChannelSearch/SearchInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,oBAAY,2BAA2B,CACrC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,UAAU,EAAE,KAAK,CAAC,QAAQ,CACxB,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CACvE,CAAC;IACF,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;CAC7D,CAAC;AAEF,oBAAY,gBAAgB,CAC1B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,mBAAmB,EAAE;QACnB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;QACvD,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9F,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9D,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;KAC7D,CAAC;IACF,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5C,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,kBAAkB,KAAK,IAAI,CAAC;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,CACf,MAAM,EAAE,2BAA2B,CAAC,kBAAkB,CAAC,EACvD,KAAK,EAAE,KAAK,CAAC,kBAAkB,KAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,WAAW,gJAqBvB,CAAC"}
1
+ {"version":3,"file":"SearchInput.d.ts","sourceRoot":"","sources":["../../../src/components/ChannelSearch/SearchInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,oBAAY,qBAAqB,GAAG;IAClC,sCAAsC;IACtC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5C,kCAAkC;IAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,kBAAkB,KAAK,IAAI,CAAC;IACpD,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,oBAAY,0BAA0B,GAAG;IACvC,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,oBAAY,gBAAgB,GAAG,0BAA0B,GAAG,qBAAqB,CAAC;AAElF,eAAO,MAAM,WAAW,UAAW,gBAAgB,gBAgBlD,CAAC"}
@@ -1,9 +1,7 @@
1
1
  import React from 'react';
2
2
  import { useTranslationContext } from '../../context/TranslationContext';
3
3
  export var SearchInput = function (props) {
4
- var channelSearchParams = props.channelSearchParams, inputRef = props.inputRef, onSearch = props.onSearch, placeholder = props.placeholder, query = props.query, searchFunction = props.searchFunction;
4
+ var inputRef = props.inputRef, onSearch = props.onSearch, placeholder = props.placeholder, query = props.query;
5
5
  var t = useTranslationContext('SearchInput').t;
6
- return (React.createElement("input", { className: 'str-chat__channel-search-input', onChange: function (event) {
7
- return searchFunction ? searchFunction(channelSearchParams, event) : onSearch(event);
8
- }, placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : t('Search'), ref: inputRef, type: 'text', value: query }));
6
+ return (React.createElement("input", { className: 'str-chat__channel-search-input', "data-testid": 'search-input', onChange: onSearch, placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : t('Search'), ref: inputRef, type: 'text', value: query }));
9
7
  };
@@ -1,28 +1,34 @@
1
1
  import React from 'react';
2
2
  import { ChannelOrUserResponse } from './utils';
3
3
  import type { DefaultStreamChatGenerics } from '../../types/types';
4
- export declare type DropdownContainerProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
5
- results: ChannelOrUserResponse<StreamChatGenerics>[];
6
- SearchResultItem: React.ComponentType<SearchResultItemProps<StreamChatGenerics>>;
7
- selectResult: (result: ChannelOrUserResponse<StreamChatGenerics>) => Promise<void> | void;
4
+ export declare type SearchResultsHeaderProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Pick<SearchResultsProps<StreamChatGenerics>, 'results'>;
5
+ export declare type SearchResultsListProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Pick<SearchResultsProps<StreamChatGenerics>, 'results' | 'SearchResultItem' | 'selectResult'> & {
8
6
  focusedUser?: number;
9
7
  };
10
- export declare type SearchResultItemProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
8
+ export declare type SearchResultItemProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Pick<SearchResultsProps<StreamChatGenerics>, 'selectResult'> & {
11
9
  index: number;
12
10
  result: ChannelOrUserResponse<StreamChatGenerics>;
13
- selectResult: (result: ChannelOrUserResponse<StreamChatGenerics>) => Promise<void> | void;
14
11
  focusedUser?: number;
15
12
  };
16
- export declare type SearchResultsProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
13
+ export declare type SearchResultsController<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
17
14
  results: Array<ChannelOrUserResponse<StreamChatGenerics>> | [];
18
15
  searching: boolean;
19
16
  selectResult: (result: ChannelOrUserResponse<StreamChatGenerics>) => Promise<void> | void;
20
- DropdownContainer?: React.ComponentType<DropdownContainerProps<StreamChatGenerics>>;
17
+ };
18
+ export declare type AdditionalSearchResultsProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
19
+ /** Display search results as an absolutely positioned popup, defaults to false and shows inline */
21
20
  popupResults?: boolean;
21
+ /** Custom UI component to display empty search results */
22
22
  SearchEmpty?: React.ComponentType;
23
+ /** Custom UI component to display the search loading state */
23
24
  SearchLoading?: React.ComponentType;
25
+ /** Custom UI component to display a search result list item, defaults to and accepts the same props as: [DefaultSearchResultItem](https://github.com/GetStream/stream-chat-react/blob/master/src/components/ChannelSearch/SearchResults.tsx) */
24
26
  SearchResultItem?: React.ComponentType<SearchResultItemProps<StreamChatGenerics>>;
27
+ /** Custom UI component to display the search results header */
25
28
  SearchResultsHeader?: React.ComponentType;
29
+ /** Custom UI component to display all the search results, defaults to and accepts the same props as: [DefaultSearchResultsList](https://github.com/GetStream/stream-chat-react/blob/master/src/components/ChannelSearch/SearchResults.tsx) */
30
+ SearchResultsList?: React.ComponentType<SearchResultsListProps<StreamChatGenerics>>;
26
31
  };
32
+ export declare type SearchResultsProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = AdditionalSearchResultsProps<StreamChatGenerics> & SearchResultsController<StreamChatGenerics>;
27
33
  export declare const SearchResults: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(props: SearchResultsProps<StreamChatGenerics>) => JSX.Element;
28
34
  //# sourceMappingURL=SearchResults.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchResults.d.ts","sourceRoot":"","sources":["../../../src/components/ChannelSearch/SearchResults.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAa,MAAM,SAAS,CAAC;AAO3D,OAAO,KAAK,EAAE,yBAAyB,EAAyB,MAAM,mBAAmB,CAAC;AAE1F,oBAAY,sBAAsB,CAChC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,OAAO,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,EAAE,CAAC;IACrD,gBAAgB,EAAE,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACjF,YAAY,EAAE,CAAC,MAAM,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAwBF,oBAAY,qBAAqB,CAC/B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;IAClD,YAAY,EAAE,CAAC,MAAM,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAsCF,oBAAY,kBAAkB,CAC5B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,OAAO,EAAE,KAAK,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,CAAC;IAC/D,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,CAAC,MAAM,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1F,iBAAiB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACpF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAClC,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACpC,gBAAgB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAClF,mBAAmB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,aAAa,kJAoGzB,CAAC"}
1
+ {"version":3,"file":"SearchResults.d.ts","sourceRoot":"","sources":["../../../src/components/ChannelSearch/SearchResults.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8D,MAAM,OAAO,CAAC;AAKnF,OAAO,EAAE,qBAAqB,EAAa,MAAM,SAAS,CAAC;AAK3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAYnE,oBAAY,wBAAwB,CAClC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,SAAS,CAAC,CAAC;AAoB5D,oBAAY,sBAAsB,CAChC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,IAAI,CACN,kBAAkB,CAAC,kBAAkB,CAAC,EACtC,SAAS,GAAG,kBAAkB,GAAG,cAAc,CAChD,GAAG;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAwBF,oBAAY,qBAAqB,CAC/B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,cAAc,CAAC,GAAG;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AA2EF,oBAAY,uBAAuB,CACjC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,OAAO,EAAE,KAAK,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,CAAC;IAC/D,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,CAAC,MAAM,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC3F,CAAC;AAEF,oBAAY,4BAA4B,CACtC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,mGAAmG;IACnG,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAClC,8DAA8D;IAC9D,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACpC,gPAAgP;IAChP,gBAAgB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAClF,+DAA+D;IAC/D,mBAAmB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC1C,+OAA+O;IAC/O,iBAAiB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,CAAC,CAAC;CACrF,CAAC;AAEF,oBAAY,kBAAkB,CAC5B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,4BAA4B,CAAC,kBAAkB,CAAC,GAAG,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;AAEnG,eAAO,MAAM,aAAa,kJAwFzB,CAAC"}
@@ -1,9 +1,24 @@
1
1
  import React, { useCallback, useEffect, useState } from 'react';
2
+ import clsx from 'clsx';
3
+ import { SearchIcon } from './icons';
4
+ import { ChannelPreview } from '../ChannelPreview';
2
5
  import { isChannel } from './utils';
3
- import { Avatar } from '../Avatar/Avatar';
4
- import { useBreakpoint } from '../Message/hooks/useBreakpoint';
5
- import { useTranslationContext } from '../../context/TranslationContext';
6
- var DefaultDropdownContainer = function (props) {
6
+ import { Avatar } from '../Avatar';
7
+ import { useChatContext, useTranslationContext } from '../../context';
8
+ var DefaultSearchEmpty = function () {
9
+ var t = useTranslationContext('SearchResults').t;
10
+ return (React.createElement("div", { "aria-live": 'polite', className: 'str-chat__channel-search-container-empty' },
11
+ React.createElement(SearchIcon, null),
12
+ t('No results found')));
13
+ };
14
+ var DefaultSearchResultsHeader = function (_a) {
15
+ var results = _a.results;
16
+ var t = useTranslationContext('SearchResultsHeader').t;
17
+ return (React.createElement("div", { className: 'str-chat__channel-search-results-header', "data-testid": 'channel-search-results-header' }, t('searchResultsCount', {
18
+ count: results.length,
19
+ })));
20
+ };
21
+ var DefaultSearchResultsList = function (props) {
7
22
  var focusedUser = props.focusedUser, results = props.results, _a = props.SearchResultItem, SearchResultItem = _a === void 0 ? DefaultSearchResultItem : _a, selectResult = props.selectResult;
8
23
  return (React.createElement(React.Fragment, null, results.map(function (result, index) { return (React.createElement(SearchResultItem, { focusedUser: focusedUser, index: index, key: index, result: result, selectResult: selectResult })); })));
9
24
  };
@@ -11,38 +26,39 @@ var DefaultSearchResultItem = function (props) {
11
26
  var _a, _b;
12
27
  var focusedUser = props.focusedUser, index = props.index, result = props.result, selectResult = props.selectResult;
13
28
  var focused = focusedUser === index;
29
+ var themeVersion = useChatContext().themeVersion;
30
+ var className = clsx('str-chat__channel-search-result', focused && 'str-chat__channel-search-result--focused focused');
14
31
  if (isChannel(result)) {
15
32
  var channel_1 = result;
16
- return (React.createElement("button", { "aria-label": "Select Channel: " + (((_a = channel_1.data) === null || _a === void 0 ? void 0 : _a.name) || ''), className: "str-chat__channel-search-result " + (focused ? 'focused' : ''), onClick: function () { return selectResult(channel_1); } },
33
+ return themeVersion === '2' ? (React.createElement(ChannelPreview, { channel: channel_1, className: className, onSelect: function () { return selectResult(channel_1); } })) : (React.createElement("button", { "aria-label": "Select Channel: ".concat(((_a = channel_1.data) === null || _a === void 0 ? void 0 : _a.name) || ''), className: className, "data-testid": 'channel-search-result-channel', onClick: function () { return selectResult(channel_1); }, role: 'option' },
17
34
  React.createElement("div", { className: 'result-hashtag' }, "#"),
18
35
  React.createElement("p", { className: 'channel-search__result-text' }, (_b = channel_1.data) === null || _b === void 0 ? void 0 : _b.name)));
19
36
  }
20
37
  else {
21
- return (React.createElement("button", { "aria-label": "Select User Channel: " + (result.name || ''), className: "str-chat__channel-search-result " + (focused ? 'focused' : ''), onClick: function () { return selectResult(result); } },
22
- React.createElement(Avatar, { image: result.image, user: result }),
23
- result.name || result.id));
38
+ return (React.createElement("button", { "aria-label": "Select User Channel: ".concat(result.name || ''), className: className, "data-testid": 'channel-search-result-user', onClick: function () { return selectResult(result); }, role: 'option' },
39
+ React.createElement(Avatar, { image: result.image, name: result.name || result.id, size: themeVersion === '2' ? 40 : undefined, user: result }),
40
+ React.createElement("div", { className: 'str-chat__channel-search-result--display-name' }, result.name || result.id)));
24
41
  }
25
42
  };
43
+ var ResultsContainer = function (_a) {
44
+ var children = _a.children, popupResults = _a.popupResults;
45
+ var containerStyle = popupResults ? 'popup' : 'inline';
46
+ return (React.createElement("div", { "aria-label": 'Channel search results', className: "str-chat__channel-search-container str-chat__channel-search-result-list ".concat(containerStyle) }, children));
47
+ };
26
48
  export var SearchResults = function (props) {
27
- var _a = props.DropdownContainer, DropdownContainer = _a === void 0 ? DefaultDropdownContainer : _a, popupResults = props.popupResults, results = props.results, searching = props.searching, SearchEmpty = props.SearchEmpty, SearchResultsHeader = props.SearchResultsHeader, SearchLoading = props.SearchLoading, _b = props.SearchResultItem, SearchResultItem = _b === void 0 ? DefaultSearchResultItem : _b, selectResult = props.selectResult;
49
+ var popupResults = props.popupResults, results = props.results, searching = props.searching, _a = props.SearchEmpty, SearchEmpty = _a === void 0 ? DefaultSearchEmpty : _a, _b = props.SearchResultsHeader, SearchResultsHeader = _b === void 0 ? DefaultSearchResultsHeader : _b, SearchLoading = props.SearchLoading, _c = props.SearchResultItem, SearchResultItem = _c === void 0 ? DefaultSearchResultItem : _c, _d = props.SearchResultsList, SearchResultsList = _d === void 0 ? DefaultSearchResultsList : _d, selectResult = props.selectResult;
28
50
  var t = useTranslationContext('SearchResults').t;
29
- var _c = useState(), focusedUser = _c[0], setFocusedUser = _c[1];
30
- var device = useBreakpoint().device;
31
- var containerStyle = popupResults && device === 'full' ? 'popup' : 'inline';
32
- var ResultsContainer = function (_a) {
33
- var children = _a.children;
34
- return (React.createElement("div", { className: "str-chat__channel-search-container " + containerStyle }, children));
35
- };
51
+ var _e = useState(), focusedResult = _e[0], setFocusedResult = _e[1];
36
52
  var handleKeyDown = useCallback(function (event) {
37
53
  if (event.key === 'ArrowUp') {
38
- setFocusedUser(function (prevFocused) {
54
+ setFocusedResult(function (prevFocused) {
39
55
  if (prevFocused === undefined)
40
56
  return 0;
41
57
  return prevFocused === 0 ? results.length - 1 : prevFocused - 1;
42
58
  });
43
59
  }
44
60
  if (event.key === 'ArrowDown') {
45
- setFocusedUser(function (prevFocused) {
61
+ setFocusedResult(function (prevFocused) {
46
62
  if (prevFocused === undefined)
47
63
  return 0;
48
64
  return prevFocused === results.length - 1 ? 0 : prevFocused + 1;
@@ -50,23 +66,24 @@ export var SearchResults = function (props) {
50
66
  }
51
67
  if (event.key === 'Enter') {
52
68
  event.preventDefault();
53
- if (focusedUser !== undefined) {
54
- selectResult(results[focusedUser]);
55
- return setFocusedUser(undefined);
69
+ if (focusedResult !== undefined) {
70
+ selectResult(results[focusedResult]);
71
+ return setFocusedResult(undefined);
56
72
  }
57
73
  }
58
- }, [focusedUser]);
74
+ }, [focusedResult]);
59
75
  useEffect(function () {
60
76
  document.addEventListener('keydown', handleKeyDown, false);
61
77
  return function () { return document.removeEventListener('keydown', handleKeyDown); };
62
78
  }, [handleKeyDown]);
63
79
  if (searching) {
64
- return (React.createElement(ResultsContainer, null, SearchLoading ? (React.createElement(SearchLoading, null)) : (React.createElement("div", { className: 'str-chat__channel-search-container-searching' }, t('Searching...')))));
80
+ return (React.createElement(ResultsContainer, { popupResults: popupResults }, SearchLoading ? (React.createElement(SearchLoading, null)) : (React.createElement("div", { className: 'str-chat__channel-search-container-searching', "data-testid": 'search-in-progress-indicator' }, t('Searching...')))));
65
81
  }
66
82
  if (!results.length) {
67
- return (React.createElement(ResultsContainer, null, SearchEmpty ? (React.createElement(SearchEmpty, null)) : (React.createElement("div", { "aria-live": 'polite', className: 'str-chat__channel-search-container-empty' }, t('No results found')))));
83
+ return (React.createElement(ResultsContainer, { popupResults: popupResults },
84
+ React.createElement(SearchEmpty, null)));
68
85
  }
69
- return (React.createElement(ResultsContainer, null,
70
- SearchResultsHeader && React.createElement(SearchResultsHeader, null),
71
- React.createElement(DropdownContainer, { focusedUser: focusedUser, results: results, SearchResultItem: SearchResultItem, selectResult: selectResult })));
86
+ return (React.createElement(ResultsContainer, { popupResults: popupResults },
87
+ React.createElement(SearchResultsHeader, { results: results }),
88
+ React.createElement(SearchResultsList, { focusedUser: focusedResult, results: results, SearchResultItem: SearchResultItem, selectResult: selectResult })));
72
89
  };
@@ -0,0 +1,50 @@
1
+ import React from 'react';
2
+ import { ChannelOrUserResponse } from '../utils';
3
+ import type { ChannelFilters, ChannelOptions, ChannelSort, UserFilters, UserOptions, UserSort } from 'stream-chat';
4
+ import type { Channel } from 'stream-chat';
5
+ import type { SearchBarController } from '../SearchBar';
6
+ import type { SearchInputController } from '../SearchInput';
7
+ import type { SearchResultsController } from '../SearchResults';
8
+ import type { DefaultStreamChatGenerics } from '../../../types/types';
9
+ export declare type ChannelSearchFunctionParams<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
10
+ setQuery: React.Dispatch<React.SetStateAction<string>>;
11
+ setResults: React.Dispatch<React.SetStateAction<ChannelOrUserResponse<StreamChatGenerics>[]>>;
12
+ setResultsOpen: React.Dispatch<React.SetStateAction<boolean>>;
13
+ setSearching: React.Dispatch<React.SetStateAction<boolean>>;
14
+ };
15
+ export declare type SearchController<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = SearchInputController & SearchBarController & SearchResultsController<StreamChatGenerics>;
16
+ export declare type SearchQueryParams<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
17
+ channelFilters?: {
18
+ filters?: ChannelFilters<StreamChatGenerics>;
19
+ options?: ChannelOptions;
20
+ sort?: ChannelSort<StreamChatGenerics>;
21
+ };
22
+ userFilters?: {
23
+ filters?: UserFilters<StreamChatGenerics>;
24
+ options?: UserOptions;
25
+ sort?: UserSort<StreamChatGenerics>;
26
+ };
27
+ };
28
+ export declare type ChannelSearchParams<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
29
+ /** The type of channel to create on user result select, defaults to `messaging` */
30
+ channelType?: string;
31
+ /** Clear search state / results on every click outside the search input, defaults to true */
32
+ clearSearchOnClickOutside?: boolean;
33
+ /** Search can be enabled, defaults to false */
34
+ enabled?: boolean;
35
+ /** Custom handler function to run on search result item selection */
36
+ onSelectResult?: (params: ChannelSearchFunctionParams<StreamChatGenerics>, result: ChannelOrUserResponse<StreamChatGenerics>) => Promise<void> | void;
37
+ /** Boolean to search for channels as well as users in the server query, default is false and just searches for users */
38
+ searchForChannels?: boolean;
39
+ /** Custom search function to override the default implementation */
40
+ searchFunction?: (params: ChannelSearchFunctionParams<StreamChatGenerics>, event: React.BaseSyntheticEvent) => Promise<void> | void;
41
+ /** Object containing filters/sort/options overrides for user search */
42
+ searchQueryParams?: SearchQueryParams<StreamChatGenerics>;
43
+ };
44
+ declare type ChannelSearchControllerParams<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = ChannelSearchParams<StreamChatGenerics> & {
45
+ /** Set the array of channels displayed in the ChannelList */
46
+ setChannels: React.Dispatch<React.SetStateAction<Array<Channel<StreamChatGenerics>>>>;
47
+ };
48
+ export declare const useChannelSearch: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ channelType, clearSearchOnClickOutside, enabled, onSelectResult, searchForChannels, searchFunction, searchQueryParams, setChannels, }: ChannelSearchControllerParams<StreamChatGenerics>) => SearchController<StreamChatGenerics>;
49
+ export {};
50
+ //# sourceMappingURL=useChannelSearch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useChannelSearch.d.ts","sourceRoot":"","sources":["../../../../src/components/ChannelSearch/hooks/useChannelSearch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAI3D,OAAO,EAAE,qBAAqB,EAAa,MAAM,UAAU,CAAC;AAI5D,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,WAAW,EACX,WAAW,EACX,WAAW,EACX,QAAQ,EACT,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,oBAAY,2BAA2B,CACrC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9F,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;CAC7D,CAAC;AAEF,oBAAY,gBAAgB,CAC1B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,qBAAqB,GAAG,mBAAmB,GAAG,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;AAE9F,oBAAY,iBAAiB,CAC3B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,cAAc,CAAC,EAAE;QACf,OAAO,CAAC,EAAE,cAAc,CAAC,kBAAkB,CAAC,CAAC;QAC7C,OAAO,CAAC,EAAE,cAAc,CAAC;QACzB,IAAI,CAAC,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC;KACxC,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,OAAO,CAAC,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC;QAC1C,OAAO,CAAC,EAAE,WAAW,CAAC;QACtB,IAAI,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;KACrC,CAAC;CACH,CAAC;AAEF,oBAAY,mBAAmB,CAC7B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6FAA6F;IAC7F,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,+CAA+C;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qEAAqE;IACrE,cAAc,CAAC,EAAE,CACf,MAAM,EAAE,2BAA2B,CAAC,kBAAkB,CAAC,EACvD,MAAM,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,KAC9C,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1B,wHAAwH;IACxH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,oEAAoE;IACpE,cAAc,CAAC,EAAE,CACf,MAAM,EAAE,2BAA2B,CAAC,kBAAkB,CAAC,EACvD,KAAK,EAAE,KAAK,CAAC,kBAAkB,KAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1B,uEAAuE;IACvE,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;CAC3D,CAAC;AAEF,aAAK,6BAA6B,CAChC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,mBAAmB,CAAC,kBAAkB,CAAC,GAAG;IAC5C,6DAA6D;IAC7D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;CACvF,CAAC;AAEF,eAAO,MAAM,gBAAgB,wTAiM5B,CAAC"}
@@ -0,0 +1,232 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (_) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
49
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
50
+ if (ar || !(i in from)) {
51
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
52
+ ar[i] = from[i];
53
+ }
54
+ }
55
+ return to.concat(ar || Array.prototype.slice.call(from));
56
+ };
57
+ import { useEffect, useRef, useState } from 'react';
58
+ import throttle from 'lodash.throttle';
59
+ import uniqBy from 'lodash.uniqby';
60
+ import { isChannel } from '../utils';
61
+ import { useChatContext } from '../../../context/ChatContext';
62
+ export var useChannelSearch = function (_a) {
63
+ var _b = _a.channelType, channelType = _b === void 0 ? 'messaging' : _b, _c = _a.clearSearchOnClickOutside, clearSearchOnClickOutside = _c === void 0 ? true : _c, _d = _a.enabled, enabled = _d === void 0 ? false : _d, onSelectResult = _a.onSelectResult, _e = _a.searchForChannels, searchForChannels = _e === void 0 ? false : _e, searchFunction = _a.searchFunction, searchQueryParams = _a.searchQueryParams, setChannels = _a.setChannels;
64
+ var _f = useChatContext('useChannelSearch'), client = _f.client, navOpen = _f.navOpen, setActiveChannel = _f.setActiveChannel, themeVersion = _f.themeVersion;
65
+ var _g = useState(false), inputIsFocused = _g[0], setInputIsFocused = _g[1];
66
+ var _h = useState(''), query = _h[0], setQuery = _h[1];
67
+ var _j = useState([]), results = _j[0], setResults = _j[1];
68
+ var _k = useState(false), resultsOpen = _k[0], setResultsOpen = _k[1];
69
+ var _l = useState(false), searching = _l[0], setSearching = _l[1];
70
+ var inputRef = useRef(null);
71
+ var searchBarRef = useRef(null);
72
+ var clearState = function () {
73
+ setQuery('');
74
+ setResults([]);
75
+ setResultsOpen(false);
76
+ setSearching(false);
77
+ };
78
+ var activateSearch = function () {
79
+ setInputIsFocused(true);
80
+ };
81
+ var exitSearch = function () {
82
+ var _a;
83
+ setInputIsFocused(false);
84
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.blur();
85
+ clearState();
86
+ };
87
+ useEffect(function () {
88
+ if (!enabled)
89
+ return;
90
+ var clickListener = function (event) {
91
+ var _a, _b;
92
+ if (!(event.target instanceof HTMLElement))
93
+ return;
94
+ var isInputClick = themeVersion === '2'
95
+ ? (_a = searchBarRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target)
96
+ : (_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.contains(event.target);
97
+ if (isInputClick)
98
+ return;
99
+ if ((navOpen && inputIsFocused) ||
100
+ (resultsOpen && clearSearchOnClickOutside) ||
101
+ (inputIsFocused && !query)) {
102
+ exitSearch();
103
+ }
104
+ };
105
+ document.addEventListener('click', clickListener);
106
+ return function () { return document.removeEventListener('click', clickListener); };
107
+ }, [enabled, inputIsFocused, resultsOpen]);
108
+ useEffect(function () {
109
+ if (!(inputRef.current && enabled))
110
+ return;
111
+ var handleKeyDown = function (event) {
112
+ if (event.key === 'Escape')
113
+ return exitSearch();
114
+ };
115
+ inputRef.current.addEventListener('keydown', handleKeyDown);
116
+ return function () {
117
+ var _a;
118
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('keydown', handleKeyDown);
119
+ };
120
+ }, []);
121
+ var selectResult = function (result) { return __awaiter(void 0, void 0, void 0, function () {
122
+ var selectedChannel, newChannel;
123
+ return __generator(this, function (_a) {
124
+ switch (_a.label) {
125
+ case 0:
126
+ if (!client.userID)
127
+ return [2 /*return*/];
128
+ if (!onSelectResult) return [3 /*break*/, 2];
129
+ return [4 /*yield*/, onSelectResult({
130
+ setQuery: setQuery,
131
+ setResults: setResults,
132
+ setResultsOpen: setResultsOpen,
133
+ setSearching: setSearching,
134
+ }, result)];
135
+ case 1:
136
+ _a.sent();
137
+ return [2 /*return*/];
138
+ case 2:
139
+ if (!isChannel(result)) return [3 /*break*/, 3];
140
+ setActiveChannel(result);
141
+ selectedChannel = result;
142
+ return [3 /*break*/, 5];
143
+ case 3:
144
+ newChannel = client.channel(channelType, { members: [client.userID, result.id] });
145
+ return [4 /*yield*/, newChannel.watch()];
146
+ case 4:
147
+ _a.sent();
148
+ setActiveChannel(newChannel);
149
+ selectedChannel = newChannel;
150
+ _a.label = 5;
151
+ case 5:
152
+ setChannels(function (channels) { return uniqBy(__spreadArray([selectedChannel], channels, true), 'cid'); });
153
+ if (clearSearchOnClickOutside) {
154
+ clearState();
155
+ }
156
+ return [2 /*return*/];
157
+ }
158
+ });
159
+ }); };
160
+ var getChannels = function (text) { return __awaiter(void 0, void 0, void 0, function () {
161
+ var userResponse, channelResponse, _a, channels, users_1, users, error_1;
162
+ var _b, _c, _d, _e, _f, _g;
163
+ return __generator(this, function (_h) {
164
+ switch (_h.label) {
165
+ case 0:
166
+ if (!text || searching)
167
+ return [2 /*return*/];
168
+ setSearching(true);
169
+ _h.label = 1;
170
+ case 1:
171
+ _h.trys.push([1, 6, , 7]);
172
+ return [4 /*yield*/, client.queryUsers(__assign({ $or: [{ id: { $autocomplete: text } }, { name: { $autocomplete: text } }], id: { $ne: client.userID } }, (_b = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.userFilters) === null || _b === void 0 ? void 0 : _b.filters), __assign({ id: 1 }, (_c = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.userFilters) === null || _c === void 0 ? void 0 : _c.sort), __assign({ limit: 8 }, (_d = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.userFilters) === null || _d === void 0 ? void 0 : _d.options))];
173
+ case 2:
174
+ userResponse = _h.sent();
175
+ if (!searchForChannels) return [3 /*break*/, 4];
176
+ channelResponse = client.queryChannels(__assign({ name: { $autocomplete: text } }, (_e = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _e === void 0 ? void 0 : _e.filters), ((_f = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _f === void 0 ? void 0 : _f.sort) || {}, __assign({ limit: 5 }, (_g = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _g === void 0 ? void 0 : _g.options));
177
+ return [4 /*yield*/, Promise.all([channelResponse, userResponse])];
178
+ case 3:
179
+ _a = _h.sent(), channels = _a[0], users_1 = _a[1].users;
180
+ setResults(__spreadArray(__spreadArray([], channels, true), users_1, true));
181
+ setResultsOpen(true);
182
+ setSearching(false);
183
+ return [2 /*return*/];
184
+ case 4: return [4 /*yield*/, Promise.resolve(userResponse)];
185
+ case 5:
186
+ users = (_h.sent()).users;
187
+ setResults(users);
188
+ setResultsOpen(true);
189
+ return [3 /*break*/, 7];
190
+ case 6:
191
+ error_1 = _h.sent();
192
+ clearState();
193
+ console.error(error_1);
194
+ return [3 /*break*/, 7];
195
+ case 7:
196
+ setSearching(false);
197
+ return [2 /*return*/];
198
+ }
199
+ });
200
+ }); };
201
+ var getChannelsThrottled = throttle(getChannels, 200);
202
+ var onSearch = function (event) {
203
+ event.preventDefault();
204
+ if (!enabled)
205
+ return;
206
+ if (searchFunction) {
207
+ searchFunction({
208
+ setQuery: setQuery,
209
+ setResults: setResults,
210
+ setResultsOpen: setResultsOpen,
211
+ setSearching: setSearching,
212
+ }, event);
213
+ }
214
+ else {
215
+ setQuery(event.target.value);
216
+ getChannelsThrottled(event.target.value);
217
+ }
218
+ };
219
+ return {
220
+ activateSearch: activateSearch,
221
+ clearState: clearState,
222
+ exitSearch: exitSearch,
223
+ inputIsFocused: inputIsFocused,
224
+ inputRef: inputRef,
225
+ onSearch: onSearch,
226
+ query: query,
227
+ results: results,
228
+ searchBarRef: searchBarRef,
229
+ searching: searching,
230
+ selectResult: selectResult,
231
+ };
232
+ };