stream-chat-react 12.9.0 → 12.11.0

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 (207) hide show
  1. package/dist/components/Attachment/Attachment.js +2 -1
  2. package/dist/components/Attachment/AttachmentContainer.d.ts +1 -1
  3. package/dist/components/Attachment/AttachmentContainer.js +2 -2
  4. package/dist/components/Attachment/Card.js +3 -3
  5. package/dist/components/Attachment/VoiceRecording.d.ts +1 -1
  6. package/dist/components/Attachment/VoiceRecording.js +2 -2
  7. package/dist/components/Attachment/attachment-sizing.js +2 -1
  8. package/dist/components/Attachment/components/FileSizeIndicator.d.ts +1 -1
  9. package/dist/components/Attachment/components/FileSizeIndicator.js +1 -1
  10. package/dist/components/Attachment/components/WaveProgressBar.js +1 -1
  11. package/dist/components/Attachment/hooks/useAudioController.d.ts +1 -1
  12. package/dist/components/Attachment/hooks/useAudioController.js +4 -2
  13. package/dist/components/Attachment/utils.d.ts +1 -1
  14. package/dist/components/Attachment/utils.js +12 -3
  15. package/dist/components/AutoCompleteTextarea/List.js +3 -2
  16. package/dist/components/AutoCompleteTextarea/Textarea.js +3 -7
  17. package/dist/components/AutoCompleteTextarea/utils.js +3 -7
  18. package/dist/components/Avatar/ChannelAvatar.js +1 -1
  19. package/dist/components/Channel/Channel.d.ts +1 -1
  20. package/dist/components/Channel/Channel.js +30 -14
  21. package/dist/components/Channel/channelState.d.ts +1 -3
  22. package/dist/components/Channel/channelState.js +10 -4
  23. package/dist/components/Channel/hooks/useCreateChannelStateContext.js +5 -3
  24. package/dist/components/Channel/hooks/useIsMounted.d.ts +1 -1
  25. package/dist/components/Channel/hooks/useMentionsHandlers.js +5 -2
  26. package/dist/components/Channel/utils.js +2 -1
  27. package/dist/components/ChannelHeader/ChannelHeader.js +1 -1
  28. package/dist/components/ChannelList/ChannelList.js +13 -8
  29. package/dist/components/ChannelList/hooks/useChannelListShape.d.ts +2 -2
  30. package/dist/components/ChannelList/hooks/useChannelListShape.js +46 -19
  31. package/dist/components/ChannelList/hooks/useChannelUpdatedListener.js +2 -1
  32. package/dist/components/ChannelList/hooks/useMessageNewListener.js +3 -1
  33. package/dist/components/ChannelList/hooks/useMobileNavigation.d.ts +1 -1
  34. package/dist/components/ChannelList/hooks/usePaginatedChannels.js +5 -3
  35. package/dist/components/ChannelList/hooks/useSelectedChannelState.js +1 -1
  36. package/dist/components/ChannelPreview/ChannelPreview.js +2 -2
  37. package/dist/components/ChannelPreview/ChannelPreviewMessenger.js +1 -1
  38. package/dist/components/ChannelPreview/icons.js +0 -1
  39. package/dist/components/ChannelPreview/utils.js +3 -3
  40. package/dist/components/ChannelSearch/ChannelSearch.js +5 -3
  41. package/dist/components/ChannelSearch/SearchBar.d.ts +1 -1
  42. package/dist/components/ChannelSearch/SearchInput.d.ts +1 -1
  43. package/dist/components/ChannelSearch/SearchResults.js +1 -1
  44. package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts +4 -2
  45. package/dist/components/ChannelSearch/hooks/useChannelSearch.js +61 -36
  46. package/dist/components/ChannelSearch/index.d.ts +1 -1
  47. package/dist/components/Chat/hooks/useChat.js +4 -2
  48. package/dist/components/Chat/hooks/useCreateChatClient.js +3 -1
  49. package/dist/components/ChatAutoComplete/ChatAutoComplete.js +1 -1
  50. package/dist/components/ChatView/ChatView.js +0 -1
  51. package/dist/components/Dialog/PromptDialog.d.ts +1 -1
  52. package/dist/components/Dialog/PromptDialog.js +1 -1
  53. package/dist/components/EventComponent/EventComponent.js +1 -1
  54. package/dist/components/Gallery/BaseImage.d.ts +1 -3
  55. package/dist/components/Gallery/Gallery.js +10 -2
  56. package/dist/components/Gallery/Image.js +1 -1
  57. package/dist/components/Gallery/ModalGallery.js +4 -4
  58. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.js +9 -6
  59. package/dist/components/InfiniteScrollPaginator/InfiniteScrollPaginator.js +1 -1
  60. package/dist/components/LoadMore/LoadMorePaginator.js +1 -1
  61. package/dist/components/MML/MML.js +1 -0
  62. package/dist/components/MediaRecorder/transcode/wav.js +6 -3
  63. package/dist/components/Message/FixedHeightMessage.js +6 -8
  64. package/dist/components/Message/Message.js +2 -1
  65. package/dist/components/Message/MessageEditedTimestamp.js +1 -1
  66. package/dist/components/Message/MessageSimple.js +2 -5
  67. package/dist/components/Message/MessageStatus.js +1 -1
  68. package/dist/components/Message/MessageText.js +7 -7
  69. package/dist/components/Message/QuotedMessage.js +2 -2
  70. package/dist/components/Message/Timestamp.js +9 -1
  71. package/dist/components/Message/hooks/useActionHandler.js +1 -1
  72. package/dist/components/Message/hooks/useFlagHandler.js +2 -1
  73. package/dist/components/Message/hooks/useMarkUnreadHandler.js +2 -1
  74. package/dist/components/Message/hooks/useMessageTextStreaming.d.ts +1 -1
  75. package/dist/components/Message/hooks/useMessageTextStreaming.js +1 -1
  76. package/dist/components/Message/hooks/useMuteHandler.js +7 -4
  77. package/dist/components/Message/hooks/usePinHandler.js +1 -1
  78. package/dist/components/Message/hooks/useReactionHandler.js +10 -5
  79. package/dist/components/Message/hooks/useRetryHandler.js +1 -1
  80. package/dist/components/Message/hooks/useUserRole.js +1 -1
  81. package/dist/components/Message/renderText/renderText.js +2 -2
  82. package/dist/components/Message/utils.js +3 -3
  83. package/dist/components/MessageActions/MessageActionsBox.js +7 -3
  84. package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.d.ts +1 -1
  85. package/dist/components/MessageInput/AttachmentPreviewList/AttachmentPreviewList.js +1 -1
  86. package/dist/components/MessageInput/AttachmentPreviewList/FileAttachmentPreview.js +4 -2
  87. package/dist/components/MessageInput/AttachmentPreviewList/UnsupportedAttachmentPreview.js +4 -2
  88. package/dist/components/MessageInput/AttachmentSelector.js +1 -1
  89. package/dist/components/MessageInput/DefaultTriggerProvider.js +1 -1
  90. package/dist/components/MessageInput/DropzoneProvider.js +1 -1
  91. package/dist/components/MessageInput/MessageInput.js +1 -1
  92. package/dist/components/MessageInput/MessageInputFlat.js +4 -3
  93. package/dist/components/MessageInput/QuotedMessagePreview.js +1 -1
  94. package/dist/components/MessageInput/hooks/useAttachments.js +12 -4
  95. package/dist/components/MessageInput/hooks/useLinkPreviews.js +3 -1
  96. package/dist/components/MessageInput/hooks/useMessageInputState.js +4 -3
  97. package/dist/components/MessageInput/hooks/useMessageInputText.d.ts +1 -1
  98. package/dist/components/MessageInput/hooks/useMessageInputText.js +5 -3
  99. package/dist/components/MessageInput/hooks/useSubmitHandler.js +5 -3
  100. package/dist/components/MessageInput/hooks/useTimeElapsed.js +1 -1
  101. package/dist/components/MessageInput/hooks/useUserTrigger.js +2 -2
  102. package/dist/components/MessageInput/hooks/utils.js +6 -2
  103. package/dist/components/MessageList/ConnectionStatus.js +1 -1
  104. package/dist/components/MessageList/MessageList.js +5 -6
  105. package/dist/components/MessageList/MessageListNotifications.js +3 -1
  106. package/dist/components/MessageList/VirtualizedMessageList.d.ts +1 -1
  107. package/dist/components/MessageList/VirtualizedMessageList.js +19 -12
  108. package/dist/components/MessageList/VirtualizedMessageListComponents.js +2 -2
  109. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.js +1 -3
  110. package/dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.js +3 -2
  111. package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.js +3 -2
  112. package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.js +6 -2
  113. package/dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.js +1 -1
  114. package/dist/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.d.ts +1 -1
  115. package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.js +4 -3
  116. package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.js +1 -1
  117. package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.js +7 -3
  118. package/dist/components/MessageList/hooks/useMarkRead.d.ts +2 -4
  119. package/dist/components/MessageList/hooks/useMarkRead.js +14 -16
  120. package/dist/components/MessageList/utils.js +28 -11
  121. package/dist/components/Modal/Modal.d.ts +1 -1
  122. package/dist/components/Modal/Modal.js +1 -1
  123. package/dist/components/Modal/ModalHeader.js +1 -1
  124. package/dist/components/Poll/Poll.js +1 -1
  125. package/dist/components/Poll/PollActions/PollActions.js +6 -4
  126. package/dist/components/Poll/PollActions/PollAnswerList.js +1 -1
  127. package/dist/components/Poll/PollActions/PollResults/PollOptionVotesList.js +1 -1
  128. package/dist/components/Poll/PollActions/PollResults/PollOptionWithLatestVotes.js +4 -2
  129. package/dist/components/Poll/PollActions/PollResults/PollResults.js +2 -1
  130. package/dist/components/Poll/PollContent.js +1 -1
  131. package/dist/components/Poll/PollCreationDialog/OptionFieldSet.d.ts +1 -1
  132. package/dist/components/Poll/PollCreationDialog/OptionFieldSet.js +11 -4
  133. package/dist/components/Poll/PollCreationDialog/PollCreationDialog.js +13 -4
  134. package/dist/components/Poll/PollCreationDialog/PollCreationDialogControls.js +6 -3
  135. package/dist/components/Poll/PollOptionList.js +1 -1
  136. package/dist/components/Poll/PollOptionSelector.js +12 -5
  137. package/dist/components/Poll/hooks/useManagePollVotesRealtime.js +9 -4
  138. package/dist/components/Poll/hooks/usePollAnswerPagination.js +8 -2
  139. package/dist/components/Poll/hooks/usePollOptionVotesPagination.js +8 -2
  140. package/dist/components/ReactFileUtilities/FileIcon/mimeTypes.d.ts +1 -1
  141. package/dist/components/ReactFileUtilities/ImageDropzone.js +3 -1
  142. package/dist/components/ReactFileUtilities/UploadButton.js +1 -1
  143. package/dist/components/ReactFileUtilities/utils.js +3 -1
  144. package/dist/components/Reactions/ReactionSelector.js +3 -1
  145. package/dist/components/Reactions/ReactionSelectorWithButton.js +1 -1
  146. package/dist/components/Reactions/ReactionsList.d.ts +2 -2
  147. package/dist/components/Reactions/ReactionsList.js +7 -4
  148. package/dist/components/Reactions/ReactionsListModal.d.ts +1 -2
  149. package/dist/components/Reactions/ReactionsListModal.js +1 -1
  150. package/dist/components/Reactions/SpriteImage.js +6 -2
  151. package/dist/components/Reactions/hooks/useFetchReactions.js +1 -1
  152. package/dist/components/Reactions/hooks/useProcessReactions.js +1 -1
  153. package/dist/components/Reactions/index.d.ts +1 -0
  154. package/dist/components/Reactions/index.js +1 -0
  155. package/dist/components/Reactions/reactionOptions.js +20 -5
  156. package/dist/components/Thread/Thread.js +4 -3
  157. package/dist/components/Threads/ThreadContext.d.ts +1 -1
  158. package/dist/components/Threads/ThreadContext.js +1 -1
  159. package/dist/components/Threads/ThreadList/ThreadList.js +1 -1
  160. package/dist/components/Threads/ThreadList/ThreadListItem.d.ts +1 -1
  161. package/dist/components/Threads/ThreadList/ThreadListItem.js +1 -1
  162. package/dist/components/Threads/ThreadList/ThreadListItemUI.js +5 -3
  163. package/dist/components/Threads/icons.js +0 -1
  164. package/dist/components/Tooltip/Tooltip.d.ts +1 -1
  165. package/dist/components/Tooltip/Tooltip.js +1 -1
  166. package/dist/context/ComponentContext.d.ts +3 -1
  167. package/dist/context/ComponentContext.js +1 -1
  168. package/dist/context/DialogManagerContext.d.ts +1 -1
  169. package/dist/context/DialogManagerContext.js +1 -1
  170. package/dist/context/MessageBounceContext.js +2 -2
  171. package/dist/context/MessageContext.js +1 -1
  172. package/dist/context/VirtualizedMessageListContext.d.ts +13 -0
  173. package/dist/context/VirtualizedMessageListContext.js +7 -0
  174. package/dist/context/WithComponents.js +1 -1
  175. package/dist/css/v2/index.css +2 -2
  176. package/dist/css/v2/index.layout.css +2 -2
  177. package/dist/experimental/MessageActions/MessageActions.js +0 -1
  178. package/dist/experimental/MessageActions/defaults.js +31 -7
  179. package/dist/experimental/index.browser.cjs +103 -37
  180. package/dist/experimental/index.browser.cjs.map +2 -2
  181. package/dist/experimental/index.node.cjs +103 -37
  182. package/dist/experimental/index.node.cjs.map +2 -2
  183. package/dist/i18n/Streami18n.js +11 -2
  184. package/dist/i18n/utils.js +14 -1
  185. package/dist/index.browser.cjs +2329 -1145
  186. package/dist/index.browser.cjs.map +4 -4
  187. package/dist/index.node.cjs +2594 -1164
  188. package/dist/index.node.cjs.map +4 -4
  189. package/dist/plugins/Emojis/EmojiPicker.js +0 -1
  190. package/dist/plugins/Emojis/index.browser.cjs +3 -1
  191. package/dist/plugins/Emojis/index.browser.cjs.map +2 -2
  192. package/dist/plugins/Emojis/index.node.cjs +3 -1
  193. package/dist/plugins/Emojis/index.node.cjs.map +2 -2
  194. package/dist/plugins/encoders/mp3.browser.cjs +7 -4
  195. package/dist/plugins/encoders/mp3.browser.cjs.map +2 -2
  196. package/dist/plugins/encoders/mp3.node.cjs +7 -4
  197. package/dist/plugins/encoders/mp3.node.cjs.map +2 -2
  198. package/dist/scss/v2/ChannelSearch/ChannelSearch-layout.scss +1 -0
  199. package/dist/scss/v2/Message/Message-layout.scss +12 -5
  200. package/dist/scss/v2/Poll/Poll-layout.scss +1 -1
  201. package/dist/scss/v2/Search/Search-layout.scss +148 -0
  202. package/dist/scss/v2/Search/Search-theme.scss +222 -0
  203. package/dist/scss/v2/_icons.scss +2 -0
  204. package/dist/scss/v2/index.layout.scss +1 -0
  205. package/dist/scss/v2/index.scss +1 -0
  206. package/dist/store/hooks/useStateStore.js +35 -11
  207. package/package.json +32 -47
@@ -0,0 +1,222 @@
1
+ @use '../utils';
2
+
3
+ /* Only available in React SDK. */
4
+ .str-chat {
5
+ /* The text/icon color of the component */
6
+ --str-chat__search-input-color: var(--str-chat__text-color);
7
+
8
+ /* The text/icon color of the component */
9
+ --str-chat__search-input-placeholder-color: var(--str-chat__text-low-emphasis-color);
10
+
11
+ /* The text/icon color of the component */
12
+ --str-chat__search-input-icon-color: var(--str-chat__text-low-emphasis-color);
13
+
14
+ /* Top border of the component */
15
+ --str-chat__search-input-border-block-start: none;
16
+
17
+ /* Bottom border of the component */
18
+ --str-chat__search-input-border-block-end: none;
19
+
20
+ /* Left (right in RTL layout) borhe component */
21
+ --str-chat__search-input-border-inline-start: none;
22
+
23
+ /* Right (left in RTL layout) borhe component */
24
+ --str-chat__search-input-border-inline-end: none;
25
+
26
+ /* The border radius used for the borders of the component */
27
+ --str-chat__search-input-wrapper-border-radius: var(--str-chat__border-radius-circle);
28
+
29
+ /* The background color of the component */
30
+ --str-chat__search-input-wrapper-background-color: transparent;
31
+
32
+ /* Top border of the component */
33
+ --str-chat__search-input-wrapper-border-block-start: var(--str-chat__surface-color) 1px
34
+ solid;
35
+
36
+ /* Bottom border of the component */
37
+ --str-chat__search-input-wrapper-border-block-end: var(--str-chat__surface-color) 1px
38
+ solid;
39
+
40
+ /* Left (right in RTL layout) border of the component */
41
+ --str-chat__search-input-wrapper-border-inline-start: var(--str-chat__surface-color) 1px
42
+ solid;
43
+
44
+ /* Right (left in RTL layout) border of the component */
45
+ --str-chat__search-input-wrapper-border-inline-end: var(--str-chat__surface-color) 1px
46
+ solid;
47
+
48
+ /* The border radius used for the borders of the component */
49
+ --str-chat__search-input-wrapper-active-border-radius: var(--str-chat__border-radius-circle);
50
+
51
+ /* The background color of the component */
52
+ --str-chat__search-input-wrapper-active-background-color: transparent;
53
+
54
+ /* Top border of the component */
55
+ --str-chat__search-input-wrapper-active-border-block-start: var(--str-chat__primary-color)
56
+ 1px solid;
57
+
58
+ /* Bottom border of the component */
59
+ --str-chat__search-input-wrapper-active-border-block-end: var(--str-chat__primary-color)
60
+ 1px solid;
61
+
62
+ /* Left (right in RTL layout) border of the component */
63
+ --str-chat__search-input-wrapper-active-border-inline-start: var(
64
+ --str-chat__primary-color
65
+ )
66
+ 1px solid;
67
+
68
+ /* Right (left in RTL layout) border of the component */
69
+ --str-chat__search-input-wrapper-active-border-inline-end: var(--str-chat__primary-color)
70
+ 1px solid;
71
+
72
+ /* The background applied to channel search result */
73
+ --str-chat__search-result-background-color: transparent;
74
+
75
+ /* Top border of the component */
76
+ --str-chat__search-result-border-block-start: none;
77
+
78
+ /* Bottom border of the component */
79
+ --str-chat__search-result-border-block-end: none;
80
+
81
+ /* Left (right in RTL layout) border of the component */
82
+ --str-chat__search-result-border-inline-start: none;
83
+
84
+ /* Right (left in RTL layout) border of the component */
85
+ --str-chat__search-result-border-inline-end: none;
86
+
87
+ /* Background color used for the search result hover / focused state */
88
+ --str-chat__search-result-hover-background-color: var(
89
+ --str-chat__secondary-surface-color
90
+ );
91
+
92
+ --str-chat__search-result-list-color: var(--str-chat__text-color);
93
+
94
+ --str-chat__search-result-list-background-color: var(--str-chat__secondary-background-color);
95
+
96
+ /* Top border of the component */
97
+ --str-chat__search-result-list-border-block-start: none;
98
+
99
+ /* Bottom border of the component */
100
+ --str-chat__search-result-list-border-block-end: none;
101
+
102
+ /* Left (right in RTL layout) border of the component */
103
+ --str-chat__search-result-list-border-inline-start: none;
104
+
105
+ /* Right (left in RTL layout) border of the component */
106
+ --str-chat__search-result-list-border-inline-end: none;
107
+
108
+ /* Box shadow applied to the component */
109
+ --str-chat__search-result-list-popup-box-shadow: 0 4px 4px var(--str-chat__box-shadow-color);
110
+
111
+ /* The font color used in the search results header */
112
+ --str-chat__search-results-header-color: var(--str-chat__text-low-emphasis-color);
113
+
114
+ /* The background color used in the search results header */
115
+ --str-chat__search-results-header-background-color: var(--str-chat__background-color);
116
+
117
+ /* Top border of the component */
118
+ --str-chat__search-results-header-border-block-start: none;
119
+
120
+ /* Bottom border of the component */
121
+ --str-chat__search-results-header-border-block-end: var(--str-chat__surface-color) 1px
122
+ solid;
123
+
124
+ /* Left (right in RTL layout) border of the component */
125
+ --str-chat__search-results-header-border-inline-start: none;
126
+
127
+ /* Right (left in RTL layout) border of the component */
128
+ --str-chat__search-results-header-border-inline-end: none;
129
+
130
+ /* The font color used in the empty search results indicator */
131
+ --str-chat__search-results-empty-color: var(--str-chat__text-low-emphasis-color);
132
+
133
+ /* The icon color used in the empty search results indicator */
134
+ --str-chat__search-results-empty-icon-color: var(--str-chat__disabled-color);
135
+
136
+ /* The background color used in the empty search results indicator */
137
+ --str-chat__search-results-empty-background-color: var(--str-chat__background-color);
138
+
139
+ /* Top border of the component */
140
+ --str-chat__search-results-empty-border-block-start: none;
141
+
142
+ /* Bottom border of the component */
143
+ --str-chat__search-results-empty-border-block-end: none;
144
+
145
+ /* Left (right in RTL layout) border of the component */
146
+ --str-chat__search-results-empty-border-inline-start: none;
147
+
148
+ /* Right (left in RTL layout) border of the component */
149
+ --str-chat__search-results-empty-border-inline-end: none;
150
+ }
151
+
152
+ .str-chat__search-input--wrapper {
153
+ @include utils.component-layer-overrides('search-input-wrapper');
154
+
155
+ .str-chat__search-input--icon {
156
+ background-image: var(--str-chat__magnifier-glass-icon);
157
+ background-repeat: no-repeat;
158
+ }
159
+
160
+ input {
161
+ @include utils.component-layer-overrides('search-input');
162
+ outline: none;
163
+ font: var(--str-chat__subtitle-text);
164
+ }
165
+
166
+ .str-chat__search-input--clear-button-icon {
167
+ background-color: transparent;
168
+ -webkit-mask: var(--str-chat__clear-icon) no-repeat center / contain;
169
+ mask: var(--str-chat__clear-icon) no-repeat center / contain;
170
+ }
171
+ }
172
+
173
+ .str-chat__search-input--wrapper-active {
174
+ @include utils.component-layer-overrides('search-input-wrapper-active');
175
+
176
+ .str-chat__search-input--clear-button-icon {
177
+ background-color: var(--str-chat__text-low-emphasis-color);
178
+ }
179
+ }
180
+
181
+ .str-chat__search-bar-button--exit-search {
182
+ @include utils.button-reset();
183
+ color: var(--str-chat__primary-color);
184
+ font: var(--str-chat__subtitle-text);
185
+ }
186
+
187
+ .str-chat__search-results-header {
188
+ @include utils.component-layer-overrides('search-results-header');
189
+ font: var(--str-chat__subtitle-text);
190
+ }
191
+
192
+ .str-chat__search-source-result-list {
193
+ @include utils.component-layer-overrides('search-result-list');
194
+
195
+ .str-chat__search-container-empty {
196
+ @include utils.component-layer-overrides('search-results-empty');
197
+ font: var(--str-chat__subtitle2-medium-text);
198
+
199
+ svg path {
200
+ fill: var(--str-chat__search-results-empty-icon-color);
201
+ }
202
+ }
203
+
204
+ .str-chat__search-result {
205
+ @include utils.component-layer-overrides('search-result');
206
+
207
+ &.str-chat__channel-preview-messenger--active {
208
+ background-color: var(--str-chat__channel-preview-active-background-color);
209
+ }
210
+
211
+ .str-chat__search-result--display-name {
212
+ @include utils.channel-preview-display-name-theme;
213
+ }
214
+ }
215
+
216
+
217
+
218
+ .str-chat__search-result:hover,
219
+ .str-chat__search-result--focused {
220
+ background-color: var(--str-chat__search-result-hover-background-color);
221
+ }
222
+ }
@@ -10,6 +10,8 @@
10
10
  --str-chat__poll-icon: url('data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIGZpbGw9ImN1cnJlbnRDb2xvciIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxwYXRoIGQ9Ik0xNiAwSDJDMC45IDAgMCAwLjkgMCAyVjE2QzAgMTcuMSAwLjkgMTggMiAxOEgxNkMxNy4xIDE4IDE4IDE3LjEgMTggMTZWMkMxOCAwLjkgMTcuMSAwIDE2IDBaTTE2IDE2SDJWMkgxNlYxNlpNNCA3SDZWMTRINFY3Wk04IDRIMTBWMTRIOFY0Wk0xMiAxMEgxNFYxNEgxMlYxMFoiLz4KPC9zdmc+');
11
11
  --str-chat__handle-icon: url('data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTYgNiIgZmlsbD0iY3VycmVuQ29sb3IiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8cGF0aCBkPSJNMTYgMEgwVjJIMTZWMFpNMCA2SDE2VjRIMFY2WiIvPgo8L3N2Zz4K');
12
12
  --str-chat__circle-stop-icon: url('data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjMyIiB2aWV3Qm94PSI0IDQgMjggMjgiIHdpZHRoPSIzMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE2LjQ1NTEgMjcuMjQ0MUMyMi42MzA5IDI3LjI0NDEgMjcuNzQ0MSAyMi4xMTk4IDI3Ljc0NDEgMTUuOTU1MUMyNy43NDQxIDkuNzc5MyAyMi42MTk4IDQuNjY2MDIgMTYuNDQ0IDQuNjY2MDJDMTAuMjc5MyA0LjY2NjAyIDUuMTY2MDIgOS43NzkzIDUuMTY2MDIgMTUuOTU1MUM1LjE2NjAyIDIyLjExOTggMTAuMjkwNCAyNy4yNDQxIDE2LjQ1NTEgMjcuMjQ0MVpNMTYuNDU1MSAyNS4zNjI2QzExLjIzMTEgMjUuMzYyNiA3LjA1ODU5IDIxLjE3OSA3LjA1ODU5IDE1Ljk1NTFDNy4wNTg1OSAxMC43MzExIDExLjIyMDEgNi41NDc1MyAxNi40NDQgNi41NDc1M0MyMS42NjggNi41NDc1MyAyNS44NTE2IDEwLjczMTEgMjUuODYyNiAxNS45NTUxQzI1Ljg3MzcgMjEuMTc5IDIxLjY3OSAyNS4zNjI2IDE2LjQ1NTEgMjUuMzYyNlpNMTMuNTIyMSAxOS45ODM3SDE5LjM2NTlDMjAuMDYzMiAxOS45ODM3IDIwLjQ3MjcgMTkuNTc0MiAyMC40NzI3IDE4Ljg5OTFWMTMuMDExMUMyMC40NzI3IDEyLjMyNDkgMjAuMDYzMiAxMS45MjY0IDE5LjM2NTkgMTEuOTI2NEgxMy41MjIxQzEyLjgzNTkgMTEuOTI2NCAxMi40MTU0IDEyLjMyNDkgMTIuNDE1NCAxMy4wMTExVjE4Ljg5OTFDMTIuNDE1NCAxOS41NzQyIDEyLjgzNTkgMTkuOTgzNyAxMy41MjIxIDE5Ljk4MzdaIiBmaWxsPSIjMDA1ZmZmIi8+Cjwvc3ZnPg==');
13
+ --str-chat__magnifier-glass-icon: url('data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjEgMjEiIGZpbGw9ImN1cnJlbnRDb2xvciIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOSAwQzEzLjk2OCAwIDE4IDQuMDMyIDE4IDlDMTggMTMuOTY4IDEzLjk2OCAxOCA5IDE4QzQuMDMyIDE4IDAgMTMuOTY4IDAgOUMwIDQuMDMyIDQuMDMyIDAgOSAwWk05IDE2QzEyLjg2NyAxNiAxNiAxMi44NjcgMTYgOUMxNiA1LjEzMiAxMi44NjcgMiA5IDJDNS4xMzIgMiAyIDUuMTMyIDIgOUMyIDEyLjg2NyA1LjEzMiAxNiA5IDE2Wk0yMC4zMTQgMTguODk5TDE3LjQ4NSAxNi4wNzFMMTYuMDcxIDE3LjQ4NUwxOC44OTkgMjAuMzE0TDIwLjMxNCAxOC44OTlaIi8+Cjwvc3ZnPgo=');
14
+ --str-chat__clear-icon: url('data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIGZpbGw9ImN1cnJlbnRDb2xvciIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDEwQzAgNC40NzcxNSA0LjQ3NzE1IDAgMTAgMEMxNS41MjI4IDAgMjAgNC40NzcxNSAyMCAxMEMyMCAxNS41MjI4IDE1LjUyMjggMjAgMTAgMjBDNC40NzcxNSAyMCAwIDE1LjUyMjggMCAxMFpNMTAgMkM1LjU4MTcyIDIgMiA1LjU4MTcyIDIgMTBDMiAxNC40MTgzIDUuNTgxNzIgMTggMTAgMThDMTQuNDE4MyAxOCAxOCAxNC40MTgzIDE4IDEwQzE4IDUuNTgxNzIgMTQuNDE4MyAyIDEwIDJaTTEzLjUzNTggNi40NjQ0NkMxMy4xNDUzIDYuMDczOTQgMTIuNTEyMSA2LjA3Mzk0IDEyLjEyMTYgNi40NjQ0NkwxMC4wMDAzIDguNTg1NzhMNy44Nzg5OCA2LjQ2NDQ2QzcuNDg4NDYgNi4wNzM5NCA2Ljg1NTI5IDYuMDczOTQgNi40NjQ3NyA2LjQ2NDQ2QzYuMDc0MjQgNi44NTQ5OSA2LjA3NDI0IDcuNDg4MTUgNi40NjQ3NyA3Ljg3ODY4TDguNTg2MDkgMTBMNi40NjQ3NyAxMi4xMjEzQzYuMDc0MjQgMTIuNTExOCA2LjA3NDI0IDEzLjE0NSA2LjQ2NDc3IDEzLjUzNTVDNi44NTUyOSAxMy45MjYxIDcuNDg4NDYgMTMuOTI2MSA3Ljg3ODk4IDEzLjUzNTVMMTAuMDAwMyAxMS40MTQyTDEyLjEyMTYgMTMuNTM1NUMxMi41MTIxIDEzLjkyNjEgMTMuMTQ1MyAxMy45MjYxIDEzLjUzNTggMTMuNTM1NUMxMy45MjY0IDEzLjE0NSAxMy45MjY0IDEyLjUxMTggMTMuNTM1OCAxMi4xMjEzTDExLjQxNDUgMTBMMTMuNTM1OCA3Ljg3ODY4QzEzLjkyNjQgNy40ODgxNSAxMy45MjY0IDYuODU0OTkgMTMuNTM1OCA2LjQ2NDQ2WiIvPgo8L3N2Zz4K');
13
15
  }
14
16
 
15
17
  @font-face {
@@ -37,6 +37,7 @@
37
37
  @use 'Notification/NotificationList-layout';
38
38
  @use 'Notification/Notification-layout';
39
39
  @use 'Poll/Poll-layout';
40
+ @use 'Search/Search-layout';
40
41
  @use 'Thread/Thread-layout';
41
42
  @use 'Tooltip/Tooltip-layout';
42
43
  @use 'TypingIndicator/TypingIndicator-layout';
@@ -38,6 +38,7 @@
38
38
  @use 'Notification/NotificationList-theme';
39
39
  @use 'Notification/Notification-theme';
40
40
  @use 'Poll/Poll-theme';
41
+ @use 'Search/Search-theme';
41
42
  @use 'Thread/Thread-theme';
42
43
  @use 'Tooltip/Tooltip-theme';
43
44
  @use 'TypingIndicator/TypingIndicator-theme';
@@ -1,15 +1,39 @@
1
- import { useEffect, useState } from 'react';
1
+ import { useCallback, useMemo } from 'react';
2
+ import { useSyncExternalStore } from 'use-sync-external-store/shim';
3
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
4
+ const noop = () => { };
2
5
  export function useStateStore(store, selector) {
3
- const [state, setState] = useState(() => {
4
- if (!store)
5
- return undefined;
6
- return selector(store.getLatestValue());
7
- });
8
- useEffect(() => {
9
- if (!store)
10
- return;
11
- const unsubscribe = store.subscribeWithSelector(selector, setState);
12
- return unsubscribe;
6
+ const wrappedSubscription = useCallback((onStoreChange) => {
7
+ const unsubscribe = store?.subscribeWithSelector(selector, onStoreChange);
8
+ return unsubscribe ?? noop;
13
9
  }, [store, selector]);
10
+ const wrappedSnapshot = useMemo(() => {
11
+ let cachedTuple;
12
+ return () => {
13
+ const currentValue = store?.getLatestValue();
14
+ if (!currentValue)
15
+ return undefined;
16
+ // store value hasn't changed, no need to compare individual values
17
+ if (cachedTuple && cachedTuple[0] === currentValue) {
18
+ return cachedTuple[1];
19
+ }
20
+ const newlySelected = selector(currentValue);
21
+ // store value changed but selected values wouldn't have to, double-check selected
22
+ if (cachedTuple) {
23
+ let selectededAreEqualToCached = true;
24
+ for (const key in cachedTuple[1]) {
25
+ if (cachedTuple[1][key] === newlySelected[key])
26
+ continue;
27
+ selectededAreEqualToCached = false;
28
+ break;
29
+ }
30
+ if (selectededAreEqualToCached)
31
+ return cachedTuple[1];
32
+ }
33
+ cachedTuple = [currentValue, newlySelected];
34
+ return cachedTuple[1];
35
+ };
36
+ }, [store, selector]);
37
+ const state = useSyncExternalStore(wrappedSubscription, wrappedSnapshot);
14
38
  return state;
15
39
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stream-chat-react",
3
- "version": "12.9.0",
3
+ "version": "12.11.0",
4
4
  "description": "React components to create chat conversations or livestream style chat",
5
5
  "author": "GetStream",
6
6
  "homepage": "https://getstream.io/chat/",
@@ -122,7 +122,6 @@
122
122
  "react-dropzone": "^14.2.3",
123
123
  "react-fast-compare": "^3.2.2",
124
124
  "react-image-gallery": "1.2.12",
125
- "react-is": "^18.1.0",
126
125
  "react-markdown": "^8.0.7",
127
126
  "react-player": "2.10.1",
128
127
  "react-popper": "^2.3.0",
@@ -144,8 +143,8 @@
144
143
  "@emoji-mart/data": "^1.1.0",
145
144
  "@emoji-mart/react": "^1.1.0",
146
145
  "emoji-mart": "^5.4.0",
147
- "react": "^18.0.0 || ^17.0.0 || ^16.8.0",
148
- "react-dom": "^18.0.0 || ^17.0.0 || ^16.8.0",
146
+ "react": "^19.0.0 || ^18.0.0 || ^17.0.0 || ^16.8.0",
147
+ "react-dom": "^19.0.0 || ^18.0.0 || ^17.0.0 || ^16.8.0",
149
148
  "stream-chat": "^8.50.0"
150
149
  },
151
150
  "peerDependenciesMeta": {
@@ -182,19 +181,21 @@
182
181
  "@commitlint/config-conventional": "^18.4.3",
183
182
  "@emoji-mart/data": "^1.1.2",
184
183
  "@emoji-mart/react": "^1.1.1",
184
+ "@eslint/js": "^9.16.0",
185
185
  "@ladle/react": "^0.16.0",
186
186
  "@playwright/test": "^1.42.1",
187
187
  "@semantic-release/changelog": "^6.0.2",
188
188
  "@semantic-release/exec": "^6.0.3",
189
189
  "@semantic-release/git": "^10.0.1",
190
190
  "@stream-io/rollup-plugin-node-builtins": "^2.1.5",
191
- "@stream-io/stream-chat-css": "^5.6.0",
192
- "@testing-library/jest-dom": "^6.1.4",
193
- "@testing-library/react": "^13.1.1",
194
- "@testing-library/react-hooks": "^8.0.0",
191
+ "@stream-io/stream-chat-css": "^5.7.0",
192
+ "@testing-library/dom": "^10.4.0",
193
+ "@testing-library/jest-dom": "^6.6.3",
194
+ "@testing-library/react": "^16.2.0",
195
195
  "@types/deep-equal": "^1.0.1",
196
196
  "@types/dotenv": "^8.2.0",
197
197
  "@types/hast": "^2.3.4",
198
+ "@types/jest": "^29.5.14",
198
199
  "@types/jsdom": "^21.1.5",
199
200
  "@types/linkifyjs": "^2.1.3",
200
201
  "@types/lodash.debounce": "^4.0.7",
@@ -203,17 +204,13 @@
203
204
  "@types/lodash.throttle": "^4.1.7",
204
205
  "@types/lodash.uniqby": "^4.7.7",
205
206
  "@types/moment": "^2.13.0",
206
- "@types/react": "^18.2.55",
207
- "@types/react-dom": "^18.2.19",
207
+ "@types/react": "^19.0.7",
208
+ "@types/react-dom": "^19.0.3",
208
209
  "@types/react-image-gallery": "^1.2.4",
209
- "@types/react-is": "^18.2.4",
210
210
  "@types/textarea-caret": "3.0.0",
211
211
  "@types/use-sync-external-store": "^0.0.6",
212
212
  "@types/uuid": "^8.3.0",
213
- "@typescript-eslint/eslint-plugin": "5.62.0",
214
- "@typescript-eslint/parser": "5.62.0",
215
213
  "autoprefixer": "^10.0.3",
216
- "babel-eslint": "^10.1.0",
217
214
  "babel-jest": "^28.1.3",
218
215
  "babel-plugin-module-resolver": "^4.1.0",
219
216
  "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
@@ -225,54 +222,42 @@
225
222
  "emoji-mart": "^5.5.2",
226
223
  "esbuild": "^0.23.1",
227
224
  "esbuild-plugin-replace": "^1.4.0",
228
- "eslint": "7.14.0",
229
- "eslint-config-airbnb": "^18.2.1",
230
- "eslint-config-prettier": "^6.15.0",
231
- "eslint-config-react-app": "^6.0.0",
232
- "eslint-import-resolver-alias": "^1.1.2",
233
- "eslint-import-resolver-babel-module": "^5.2.0",
234
- "eslint-plugin-babel": "^5.3.1",
235
- "eslint-plugin-flowtype": "^5.2.0",
236
- "eslint-plugin-import": "^2.22.1",
237
- "eslint-plugin-jest": "^24.1.3",
238
- "eslint-plugin-jest-dom": "^3.3.0",
239
- "eslint-plugin-jsx-a11y": "^6.4.1",
240
- "eslint-plugin-node": "^11.1.0",
241
- "eslint-plugin-prettier": "^3.1.4",
242
- "eslint-plugin-promise": "^4.2.1",
243
- "eslint-plugin-react": "^7.21.5",
244
- "eslint-plugin-react-hooks": "^4.2.0",
245
- "eslint-plugin-sort-destructure-keys": "1.3.5",
246
- "eslint-plugin-sort-keys-fix": "^1.1.2",
247
- "eslint-plugin-testing-library": "^6.2.0",
248
- "eslint-plugin-typescript-sort-keys": "^2.1.0",
225
+ "eslint": "^9.16.0",
226
+ "eslint-plugin-import": "^2.31.0",
227
+ "eslint-plugin-jest": "^28.11.0",
228
+ "eslint-plugin-jest-dom": "^5.5.0",
229
+ "eslint-plugin-react": "^7.37.2",
230
+ "eslint-plugin-react-hooks": "^5.1.0",
231
+ "eslint-plugin-sort-destructure-keys": "^2.0.0",
232
+ "globals": "^15.13.0",
249
233
  "husky": "^8.0.3",
250
234
  "i18next-parser": "^6.0.0",
251
235
  "jest": "^29.7.0",
252
236
  "jest-axe": "^8.0.0",
253
- "jest-environment-jsdom": "^28.1.3",
237
+ "jest-environment-jsdom": "^29.7.0",
254
238
  "jsdom": "^24.1.1",
255
239
  "lint-staged": "^15.2.1",
256
240
  "moment-timezone": "^0.5.43",
257
- "prettier": "^2.2.0",
258
- "react": "^18.1.0",
259
- "react-dom": "^18.1.0",
260
- "react-test-renderer": "^18.1.0",
241
+ "prettier": "^3.4.2",
242
+ "react": "^19.0.0",
243
+ "react-dom": "^19.0.0",
261
244
  "semantic-release": "^19.0.5",
262
245
  "stream-chat": "^8.50.0",
263
- "ts-jest": "^29.1.4",
264
- "typescript": "^5.4.5"
246
+ "ts-jest": "^29.2.5",
247
+ "typescript": "^5.4.5",
248
+ "typescript-eslint": "^8.17.0"
265
249
  },
266
250
  "scripts": {
267
251
  "build": "rm -rf dist && yarn build-translations && yarn bundle",
268
252
  "bundle": "concurrently ./scripts/bundle-esm.mjs ./scripts/copy-css.sh scripts/bundle-cjs.mjs",
269
253
  "build-translations": "i18next",
270
254
  "coverage": "jest --collectCoverage && codecov",
271
- "eslint": "eslint '**/*.{js,md,ts,jsx,tsx}' --max-warnings 0",
272
- "lint": "prettier --list-different 'src/**/*.{js,ts,tsx,md,json}' .eslintrc.json .prettierrc babel.config.js && eslint 'src/**/*.{js,ts,tsx,md}' --max-warnings 0 && yarn validate-translations",
273
- "lint-fix": "prettier --write 'src/**/*.{js,ts,tsx,md,json}' .eslintrc.json .prettierrc babel.config.js && eslint --fix 'src/**/*.{js,ts,tsx,md}' --max-warnings 0",
274
- "prettier": "prettier --list-different '**/*.{js,ts,tsx,md,json}' .eslintrc.json .prettierrc babel.config.js",
275
- "prettier-fix": "prettier --write '**/*.{js,ts,tsx,md,json}' .eslintrc.json .prettierrc babel.config.js",
255
+ "lint": "yarn prettier --list-different && yarn eslint && yarn validate-translations",
256
+ "lint-fix": "yarn prettier-fix && yarn eslint-fix",
257
+ "eslint": "eslint --max-warnings 0",
258
+ "eslint-fix": "eslint --fix",
259
+ "prettier": "prettier 'src/**/*.{js,ts,jsx,tsx,md,json}' .prettierrc babel.config.js eslint.config.mjs",
260
+ "prettier-fix": "yarn prettier --write",
276
261
  "fix-staged": "lint-staged --config .lintstagedrc.fix.json --concurrent 1",
277
262
  "start": "tsc --watch --sourceMap --declarationMap",
278
263
  "prepare": "husky install",