stream-chat-react 14.3.0 → 14.4.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 (450) hide show
  1. package/dist/cjs/ReactPlayerWrapper.16cd6fed.js +24 -0
  2. package/dist/cjs/ReactPlayerWrapper.16cd6fed.js.map +1 -0
  3. package/dist/cjs/audioProcessing.22303d69.js +148 -0
  4. package/dist/cjs/audioProcessing.22303d69.js.map +1 -0
  5. package/dist/cjs/emojis.js +211 -226
  6. package/dist/cjs/emojis.js.map +1 -1
  7. package/dist/cjs/index.js +26212 -31082
  8. package/dist/cjs/index.js.map +1 -1
  9. package/dist/cjs/mp3-encoder.js +30 -58
  10. package/dist/cjs/mp3-encoder.js.map +1 -1
  11. package/dist/cjs/useNotificationApi.9ffe5761.js +5516 -0
  12. package/dist/cjs/useNotificationApi.9ffe5761.js.map +1 -0
  13. package/dist/css/index.css +9 -0
  14. package/dist/css/index.css.map +1 -1
  15. package/dist/es/ReactPlayerWrapper.d2ae5941.mjs +22 -0
  16. package/dist/es/ReactPlayerWrapper.d2ae5941.mjs.map +1 -0
  17. package/dist/es/audioProcessing.766ca76c.mjs +107 -0
  18. package/dist/es/audioProcessing.766ca76c.mjs.map +1 -0
  19. package/dist/es/emojis.mjs +207 -205
  20. package/dist/es/emojis.mjs.map +1 -1
  21. package/dist/es/index.mjs +25961 -31417
  22. package/dist/es/index.mjs.map +1 -1
  23. package/dist/es/mp3-encoder.mjs +31 -38
  24. package/dist/es/mp3-encoder.mjs.map +1 -1
  25. package/dist/es/useNotificationApi.88c33caa.mjs +4195 -0
  26. package/dist/es/useNotificationApi.88c33caa.mjs.map +1 -0
  27. package/dist/types/a11y/a11yUtils.d.ts.map +1 -1
  28. package/dist/types/a11y/hooks/useAriaIdentifiers.d.ts.map +1 -1
  29. package/dist/types/a11y/hooks/useResolvedModalAriaProps.d.ts.map +1 -1
  30. package/dist/types/components/AIStateIndicator/AIStateIndicator.d.ts.map +1 -1
  31. package/dist/types/components/AIStateIndicator/hooks/useAIState.d.ts.map +1 -1
  32. package/dist/types/components/Accessibility/AriaLiveRegion.d.ts.map +1 -1
  33. package/dist/types/components/Accessibility/NotificationAnnouncer.d.ts.map +1 -1
  34. package/dist/types/components/Accessibility/hooks/useIncomingMessageAnnouncements.d.ts.map +1 -1
  35. package/dist/types/components/Accessibility/useAriaLiveAnnouncer.d.ts +0 -1
  36. package/dist/types/components/Accessibility/useAriaLiveAnnouncer.d.ts.map +1 -1
  37. package/dist/types/components/Attachment/Attachment.d.ts.map +1 -1
  38. package/dist/types/components/Attachment/AttachmentActions.d.ts +3 -1
  39. package/dist/types/components/Attachment/AttachmentActions.d.ts.map +1 -1
  40. package/dist/types/components/Attachment/AttachmentContainer.d.ts +1 -1
  41. package/dist/types/components/Attachment/AttachmentContainer.d.ts.map +1 -1
  42. package/dist/types/components/Attachment/Audio.d.ts.map +1 -1
  43. package/dist/types/components/Attachment/FileAttachment.d.ts.map +1 -1
  44. package/dist/types/components/Attachment/Geolocation.d.ts.map +1 -1
  45. package/dist/types/components/Attachment/Giphy.d.ts.map +1 -1
  46. package/dist/types/components/Attachment/Image.d.ts.map +1 -1
  47. package/dist/types/components/Attachment/LinkPreview/Card.d.ts +3 -1
  48. package/dist/types/components/Attachment/LinkPreview/Card.d.ts.map +1 -1
  49. package/dist/types/components/Attachment/LinkPreview/CardAudio.d.ts.map +1 -1
  50. package/dist/types/components/Attachment/LinkPreview/UnableToRenderCard.d.ts +1 -1
  51. package/dist/types/components/Attachment/LinkPreview/UnableToRenderCard.d.ts.map +1 -1
  52. package/dist/types/components/Attachment/ModalGallery.d.ts.map +1 -1
  53. package/dist/types/components/Attachment/VideoAttachment.d.ts.map +1 -1
  54. package/dist/types/components/Attachment/VoiceRecording.d.ts.map +1 -1
  55. package/dist/types/components/Attachment/attachment-sizing.d.ts.map +1 -1
  56. package/dist/types/components/Attachment/audioSampling.d.ts.map +1 -1
  57. package/dist/types/components/Attachment/components/DownloadButton.d.ts.map +1 -1
  58. package/dist/types/components/Attachment/components/FileSizeIndicator.d.ts.map +1 -1
  59. package/dist/types/components/Attachment/icons.d.ts.map +1 -1
  60. package/dist/types/components/Attachment/utils.d.ts.map +1 -1
  61. package/dist/types/components/AudioPlayback/AudioPlayer.d.ts +1 -2
  62. package/dist/types/components/AudioPlayback/AudioPlayer.d.ts.map +1 -1
  63. package/dist/types/components/AudioPlayback/AudioPlayerPool.d.ts +1 -1
  64. package/dist/types/components/AudioPlayback/AudioPlayerPool.d.ts.map +1 -1
  65. package/dist/types/components/AudioPlayback/WithAudioPlayback.d.ts.map +1 -1
  66. package/dist/types/components/AudioPlayback/components/PlaybackRateButton.d.ts.map +1 -1
  67. package/dist/types/components/AudioPlayback/components/ProgressBar.d.ts.map +1 -1
  68. package/dist/types/components/AudioPlayback/components/WaveProgressBar.d.ts.map +1 -1
  69. package/dist/types/components/AudioPlayback/components/formatTime.d.ts +1 -1
  70. package/dist/types/components/AudioPlayback/components/formatTime.d.ts.map +1 -1
  71. package/dist/types/components/AudioPlayback/components/keyboardSeek.d.ts.map +1 -1
  72. package/dist/types/components/AudioPlayback/components/progressBarA11y.d.ts.map +1 -1
  73. package/dist/types/components/AudioPlayback/components/useInteractiveProgressBar.d.ts.map +1 -1
  74. package/dist/types/components/AudioPlayback/plugins/AudioPlayerNotificationsPlugin.d.ts.map +1 -1
  75. package/dist/types/components/Avatar/Avatar.d.ts.map +1 -1
  76. package/dist/types/components/Avatar/ChannelAvatar.d.ts.map +1 -1
  77. package/dist/types/components/Avatar/GroupAvatar.d.ts.map +1 -1
  78. package/dist/types/components/Badge/Badge.d.ts +1 -1
  79. package/dist/types/components/Badge/Badge.d.ts.map +1 -1
  80. package/dist/types/components/Badge/MediaBadge.d.ts.map +1 -1
  81. package/dist/types/components/BaseImage/ImagePlaceholder.d.ts.map +1 -1
  82. package/dist/types/components/BaseImage/toBaseImageDescriptors.d.ts.map +1 -1
  83. package/dist/types/components/Button/PlayButton.d.ts.map +1 -1
  84. package/dist/types/components/Channel/Channel.d.ts +3 -1
  85. package/dist/types/components/Channel/Channel.d.ts.map +1 -1
  86. package/dist/types/components/Channel/channelState.d.ts.map +1 -1
  87. package/dist/types/components/Channel/hooks/useChannelContainerClasses.d.ts +1 -1
  88. package/dist/types/components/Channel/hooks/useChannelContainerClasses.d.ts.map +1 -1
  89. package/dist/types/components/Channel/hooks/useCreateChannelStateContext.d.ts +1 -1
  90. package/dist/types/components/Channel/hooks/useCreateChannelStateContext.d.ts.map +1 -1
  91. package/dist/types/components/Channel/hooks/useCreateTypingContext.d.ts.map +1 -1
  92. package/dist/types/components/Channel/hooks/useEditMessageHandler.d.ts.map +1 -1
  93. package/dist/types/components/Channel/hooks/useIsMounted.d.ts +0 -1
  94. package/dist/types/components/Channel/hooks/useIsMounted.d.ts.map +1 -1
  95. package/dist/types/components/Channel/hooks/useMentionsHandlers.d.ts.map +1 -1
  96. package/dist/types/components/Channel/utils.d.ts +2 -2
  97. package/dist/types/components/Channel/utils.d.ts.map +1 -1
  98. package/dist/types/components/ChannelHeader/ChannelHeader.d.ts.map +1 -1
  99. package/dist/types/components/ChannelList/ChannelList.d.ts +3 -1
  100. package/dist/types/components/ChannelList/ChannelList.d.ts.map +1 -1
  101. package/dist/types/components/ChannelList/ChannelListUI.d.ts.map +1 -1
  102. package/dist/types/components/ChannelList/hooks/useChannelListShape.d.ts.map +1 -1
  103. package/dist/types/components/ChannelList/hooks/useConnectionRecoveredListener.d.ts.map +1 -1
  104. package/dist/types/components/ChannelList/hooks/usePaginatedChannels.d.ts +0 -1
  105. package/dist/types/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
  106. package/dist/types/components/ChannelList/utils.d.ts +3 -3
  107. package/dist/types/components/ChannelList/utils.d.ts.map +1 -1
  108. package/dist/types/components/ChannelListItem/ChannelListItem.d.ts.map +1 -1
  109. package/dist/types/components/ChannelListItem/ChannelListItemActionButtons.defaults.d.ts.map +1 -1
  110. package/dist/types/components/ChannelListItem/ChannelListItemUI.d.ts +3 -1
  111. package/dist/types/components/ChannelListItem/ChannelListItemUI.d.ts.map +1 -1
  112. package/dist/types/components/ChannelListItem/hooks/useChannelDisplayName.d.ts.map +1 -1
  113. package/dist/types/components/ChannelListItem/hooks/useChannelPreviewInfo.d.ts.map +1 -1
  114. package/dist/types/components/ChannelListItem/hooks/useIsChannelMuted.d.ts.map +1 -1
  115. package/dist/types/components/ChannelListItem/hooks/useMessageDeliveryStatus.d.ts.map +1 -1
  116. package/dist/types/components/ChannelListItem/utils.d.ts +2 -2
  117. package/dist/types/components/ChannelListItem/utils.d.ts.map +1 -1
  118. package/dist/types/components/Chat/Chat.d.ts +3 -0
  119. package/dist/types/components/Chat/Chat.d.ts.map +1 -1
  120. package/dist/types/components/Chat/hooks/useChat.d.ts.map +1 -1
  121. package/dist/types/components/Chat/hooks/useCreateChatClient.d.ts.map +1 -1
  122. package/dist/types/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
  123. package/dist/types/components/Chat/hooks/useSplitActionSet.d.ts +6 -6
  124. package/dist/types/components/Chat/hooks/useSplitActionSet.d.ts.map +1 -1
  125. package/dist/types/components/ChatView/ChatView.a11y.utility.d.ts.map +1 -1
  126. package/dist/types/components/ChatView/ChatView.d.ts.map +1 -1
  127. package/dist/types/components/DateSeparator/DateSeparator.d.ts +3 -1
  128. package/dist/types/components/DateSeparator/DateSeparator.d.ts.map +1 -1
  129. package/dist/types/components/Dialog/components/Callout.d.ts.map +1 -1
  130. package/dist/types/components/Dialog/components/ContextMenu.d.ts +3 -3
  131. package/dist/types/components/Dialog/components/ContextMenu.d.ts.map +1 -1
  132. package/dist/types/components/Dialog/components/Prompt.d.ts +1 -1
  133. package/dist/types/components/Dialog/components/Prompt.d.ts.map +1 -1
  134. package/dist/types/components/Dialog/components/Viewer.d.ts +1 -1
  135. package/dist/types/components/Dialog/components/Viewer.d.ts.map +1 -1
  136. package/dist/types/components/Dialog/hooks/useDialog.d.ts +8 -6
  137. package/dist/types/components/Dialog/hooks/useDialog.d.ts.map +1 -1
  138. package/dist/types/components/Dialog/hooks/usePopoverPosition.d.ts +5 -6
  139. package/dist/types/components/Dialog/hooks/usePopoverPosition.d.ts.map +1 -1
  140. package/dist/types/components/Dialog/service/DialogAnchor.d.ts.map +1 -1
  141. package/dist/types/components/Dialog/service/DialogManager.d.ts +1 -1
  142. package/dist/types/components/Dialog/service/DialogManager.d.ts.map +1 -1
  143. package/dist/types/components/Dialog/service/DialogPortal.d.ts.map +1 -1
  144. package/dist/types/components/DragAndDrop/DragAndDropContainer.d.ts.map +1 -1
  145. package/dist/types/components/EmptyStateIndicator/EmptyStateIndicator.d.ts +3 -1
  146. package/dist/types/components/EmptyStateIndicator/EmptyStateIndicator.d.ts.map +1 -1
  147. package/dist/types/components/EventComponent/EventComponent.d.ts +6 -1
  148. package/dist/types/components/EventComponent/EventComponent.d.ts.map +1 -1
  149. package/dist/types/components/FileIcon/FileIcon.d.ts.map +1 -1
  150. package/dist/types/components/FileIcon/FileIconSet.d.ts.map +1 -1
  151. package/dist/types/components/Form/Dropdown.d.ts.map +1 -1
  152. package/dist/types/components/Form/FieldError.d.ts.map +1 -1
  153. package/dist/types/components/Form/SwitchField.d.ts.map +1 -1
  154. package/dist/types/components/Form/TextInputFieldSet.d.ts.map +1 -1
  155. package/dist/types/components/Gallery/Gallery.d.ts.map +1 -1
  156. package/dist/types/components/Gallery/GalleryContext.d.ts +2 -4
  157. package/dist/types/components/Gallery/GalleryContext.d.ts.map +1 -1
  158. package/dist/types/components/Gallery/GalleryHeader.d.ts.map +1 -1
  159. package/dist/types/components/Icons/BaseIcon.d.ts.map +1 -1
  160. package/dist/types/components/InfiniteScrollPaginator/InfiniteScroll.d.ts.map +1 -1
  161. package/dist/types/components/InfiniteScrollPaginator/InfiniteScrollPaginator.d.ts.map +1 -1
  162. package/dist/types/components/InfiniteScrollPaginator/hooks/useCursorPaginator.d.ts.map +1 -1
  163. package/dist/types/components/LoadMore/LoadMoreButton.d.ts +3 -1
  164. package/dist/types/components/LoadMore/LoadMoreButton.d.ts.map +1 -1
  165. package/dist/types/components/LoadMore/LoadMorePaginator.d.ts +1 -1
  166. package/dist/types/components/LoadMore/LoadMorePaginator.d.ts.map +1 -1
  167. package/dist/types/components/Loading/LoadingErrorIndicator.d.ts +6 -1
  168. package/dist/types/components/Loading/LoadingErrorIndicator.d.ts.map +1 -1
  169. package/dist/types/components/Loading/LoadingIndicator.d.ts.map +1 -1
  170. package/dist/types/components/Loading/UploadProgressIndicator.d.ts.map +1 -1
  171. package/dist/types/components/Loading/UploadedSizeIndicator.d.ts.map +1 -1
  172. package/dist/types/components/Loading/progress-indicators.d.ts.map +1 -1
  173. package/dist/types/components/Location/ShareLocationDialog.d.ts.map +1 -1
  174. package/dist/types/components/Location/hooks/useLiveLocationSharingManager.d.ts +1 -1
  175. package/dist/types/components/Location/hooks/useLiveLocationSharingManager.d.ts.map +1 -1
  176. package/dist/types/components/MediaRecorder/AudioRecorder/AudioRecordingPlayback.d.ts +1 -1
  177. package/dist/types/components/MediaRecorder/AudioRecorder/AudioRecordingPlayback.d.ts.map +1 -1
  178. package/dist/types/components/MediaRecorder/AudioRecorder/RecordingTimer.d.ts.map +1 -1
  179. package/dist/types/components/MediaRecorder/AudioRecorder/hooks/useTimeElapsed.d.ts.map +1 -1
  180. package/dist/types/components/MediaRecorder/AudioRecorder/recordingStateIdentity.d.ts +3 -3
  181. package/dist/types/components/MediaRecorder/AudioRecorder/recordingStateIdentity.d.ts.map +1 -1
  182. package/dist/types/components/MediaRecorder/RecordingPermissionDeniedNotification.d.ts.map +1 -1
  183. package/dist/types/components/MediaRecorder/classes/MediaRecorderController.d.ts +1 -1
  184. package/dist/types/components/MediaRecorder/classes/MediaRecorderController.d.ts.map +1 -1
  185. package/dist/types/components/MediaRecorder/hooks/useMediaRecorder.d.ts.map +1 -1
  186. package/dist/types/components/MediaRecorder/transcode/audioProcessing.d.ts.map +1 -1
  187. package/dist/types/components/MediaRecorder/transcode/index.d.ts.map +1 -1
  188. package/dist/types/components/MediaRecorder/transcode/wav.d.ts.map +1 -1
  189. package/dist/types/components/Message/Message.d.ts.map +1 -1
  190. package/dist/types/components/Message/MessageBubble.d.ts +1 -1
  191. package/dist/types/components/Message/MessageBubble.d.ts.map +1 -1
  192. package/dist/types/components/Message/MessageEditedIndicator.d.ts +3 -1
  193. package/dist/types/components/Message/MessageEditedIndicator.d.ts.map +1 -1
  194. package/dist/types/components/Message/MessageRepliesCountButton.d.ts.map +1 -1
  195. package/dist/types/components/Message/MessageStatus.d.ts +3 -1
  196. package/dist/types/components/Message/MessageStatus.d.ts.map +1 -1
  197. package/dist/types/components/Message/MessageText.d.ts +3 -1
  198. package/dist/types/components/Message/MessageText.d.ts.map +1 -1
  199. package/dist/types/components/Message/MessageTimestamp.d.ts +3 -1
  200. package/dist/types/components/Message/MessageTimestamp.d.ts.map +1 -1
  201. package/dist/types/components/Message/MessageTranslationIndicator.d.ts.map +1 -1
  202. package/dist/types/components/Message/MessageUI.d.ts.map +1 -1
  203. package/dist/types/components/Message/PinIndicator.d.ts.map +1 -1
  204. package/dist/types/components/Message/QuotedMessage.d.ts.map +1 -1
  205. package/dist/types/components/Message/ReminderNotification.d.ts.map +1 -1
  206. package/dist/types/components/Message/StreamedMessageText.d.ts.map +1 -1
  207. package/dist/types/components/Message/emojiRegex.d.ts +15 -0
  208. package/dist/types/components/Message/emojiRegex.d.ts.map +1 -0
  209. package/dist/types/components/Message/hooks/useDeleteHandler.d.ts +1 -1
  210. package/dist/types/components/Message/hooks/useDeleteHandler.d.ts.map +1 -1
  211. package/dist/types/components/Message/hooks/useFlagHandler.d.ts.map +1 -1
  212. package/dist/types/components/Message/hooks/useMarkUnreadHandler.d.ts.map +1 -1
  213. package/dist/types/components/Message/hooks/useMentionsHandler.d.ts.map +1 -1
  214. package/dist/types/components/Message/hooks/useMessageReminder.d.ts.map +1 -1
  215. package/dist/types/components/Message/hooks/useMessageTextStreaming.d.ts.map +1 -1
  216. package/dist/types/components/Message/hooks/useMuteHandler.d.ts.map +1 -1
  217. package/dist/types/components/Message/hooks/useOpenThreadHandler.d.ts.map +1 -1
  218. package/dist/types/components/Message/hooks/usePinHandler.d.ts.map +1 -1
  219. package/dist/types/components/Message/hooks/useReactionHandler.d.ts.map +1 -1
  220. package/dist/types/components/Message/hooks/useRetryHandler.d.ts.map +1 -1
  221. package/dist/types/components/Message/hooks/useUserHandler.d.ts +0 -1
  222. package/dist/types/components/Message/hooks/useUserHandler.d.ts.map +1 -1
  223. package/dist/types/components/Message/hooks/useUserRole.d.ts.map +1 -1
  224. package/dist/types/components/Message/renderText/componentRenderers/Anchor.d.ts +1 -1
  225. package/dist/types/components/Message/renderText/componentRenderers/Anchor.d.ts.map +1 -1
  226. package/dist/types/components/Message/renderText/componentRenderers/Emoji.d.ts.map +1 -1
  227. package/dist/types/components/Message/renderText/componentRenderers/Mention.d.ts.map +1 -1
  228. package/dist/types/components/Message/renderText/regex.d.ts.map +1 -1
  229. package/dist/types/components/Message/renderText/rehypePlugins/emojiMarkdownPlugin.d.ts +1 -1
  230. package/dist/types/components/Message/renderText/rehypePlugins/emojiMarkdownPlugin.d.ts.map +1 -1
  231. package/dist/types/components/Message/renderText/rehypePlugins/mentionsMarkdownPlugin.d.ts +1 -1
  232. package/dist/types/components/Message/renderText/rehypePlugins/mentionsMarkdownPlugin.d.ts.map +1 -1
  233. package/dist/types/components/Message/renderText/remarkPlugins/htmlToTextPlugin.d.ts +3 -1
  234. package/dist/types/components/Message/renderText/remarkPlugins/htmlToTextPlugin.d.ts.map +1 -1
  235. package/dist/types/components/Message/renderText/remarkPlugins/imageToLink.d.ts.map +1 -1
  236. package/dist/types/components/Message/renderText/renderText.d.ts +1 -1
  237. package/dist/types/components/Message/renderText/renderText.d.ts.map +1 -1
  238. package/dist/types/components/Message/utils.d.ts +5 -5
  239. package/dist/types/components/Message/utils.d.ts.map +1 -1
  240. package/dist/types/components/MessageActions/DeleteMessageAlert.d.ts.map +1 -1
  241. package/dist/types/components/MessageActions/DownloadSubmenu.d.ts +3 -0
  242. package/dist/types/components/MessageActions/DownloadSubmenu.d.ts.map +1 -0
  243. package/dist/types/components/MessageActions/MessageActions.defaults.d.ts.map +1 -1
  244. package/dist/types/components/MessageActions/QuickMessageActionButton.d.ts +2 -1
  245. package/dist/types/components/MessageActions/QuickMessageActionButton.d.ts.map +1 -1
  246. package/dist/types/components/MessageActions/downloadUtils.d.ts.map +1 -1
  247. package/dist/types/components/MessageActions/hooks/useBaseMessageActionSetFilter.d.ts.map +1 -1
  248. package/dist/types/components/MessageComposer/AttachmentPreviewList/AttachmentPreviewList.d.ts.map +1 -1
  249. package/dist/types/components/MessageComposer/AttachmentPreviewList/AttachmentUploadedSizeIndicator.d.ts.map +1 -1
  250. package/dist/types/components/MessageComposer/AttachmentPreviewList/AudioAttachmentPreview.d.ts.map +1 -1
  251. package/dist/types/components/MessageComposer/AttachmentPreviewList/FileAttachmentPreview.d.ts.map +1 -1
  252. package/dist/types/components/MessageComposer/AttachmentPreviewList/GeolocationPreview.d.ts.map +1 -1
  253. package/dist/types/components/MessageComposer/AttachmentPreviewList/MediaAttachmentPreview.d.ts.map +1 -1
  254. package/dist/types/components/MessageComposer/AttachmentPreviewList/UnsupportedAttachmentPreview.d.ts.map +1 -1
  255. package/dist/types/components/MessageComposer/AttachmentPreviewList/VoiceRecordingPreviewSlot.d.ts.map +1 -1
  256. package/dist/types/components/MessageComposer/AttachmentPreviewList/utils/AttachmentPreviewRoot.d.ts.map +1 -1
  257. package/dist/types/components/MessageComposer/AttachmentSelector/AttachmentSelector.d.ts +6 -6
  258. package/dist/types/components/MessageComposer/AttachmentSelector/AttachmentSelector.d.ts.map +1 -1
  259. package/dist/types/components/MessageComposer/AttachmentSelector/CommandsMenu.d.ts +1 -1
  260. package/dist/types/components/MessageComposer/AttachmentSelector/CommandsMenu.d.ts.map +1 -1
  261. package/dist/types/components/MessageComposer/CommandChip.d.ts.map +1 -1
  262. package/dist/types/components/MessageComposer/EditedMessagePreview.d.ts.map +1 -1
  263. package/dist/types/components/MessageComposer/LinkPreviewList.d.ts.map +1 -1
  264. package/dist/types/components/MessageComposer/MessageComposer.d.ts +3 -1
  265. package/dist/types/components/MessageComposer/MessageComposer.d.ts.map +1 -1
  266. package/dist/types/components/MessageComposer/QuotedMessageIndicator.d.ts.map +1 -1
  267. package/dist/types/components/MessageComposer/QuotedMessagePreview.d.ts.map +1 -1
  268. package/dist/types/components/MessageComposer/RemoveAttachmentPreviewButton.d.ts +1 -1
  269. package/dist/types/components/MessageComposer/RemoveAttachmentPreviewButton.d.ts.map +1 -1
  270. package/dist/types/components/MessageComposer/SendButton.d.ts.map +1 -1
  271. package/dist/types/components/MessageComposer/StopAIGenerationButton.d.ts.map +1 -1
  272. package/dist/types/components/MessageComposer/WithDragAndDropUpload.d.ts.map +1 -1
  273. package/dist/types/components/MessageComposer/hooks/useAttachmentsForPreview.d.ts +7 -7
  274. package/dist/types/components/MessageComposer/hooks/useCreateMessageComposerContext.d.ts.map +1 -1
  275. package/dist/types/components/MessageComposer/hooks/useMessageComposerBindings.d.ts.map +1 -1
  276. package/dist/types/components/MessageComposer/hooks/usePasteHandler.d.ts.map +1 -1
  277. package/dist/types/components/MessageComposer/hooks/useSubmitHandler.d.ts.map +1 -1
  278. package/dist/types/components/MessageComposer/hooks/useTextareaRef.d.ts +0 -1
  279. package/dist/types/components/MessageComposer/hooks/useTextareaRef.d.ts.map +1 -1
  280. package/dist/types/components/MessageComposer/preEditSnapshot.d.ts.map +1 -1
  281. package/dist/types/components/MessageList/CustomNotification.d.ts +3 -1
  282. package/dist/types/components/MessageList/CustomNotification.d.ts.map +1 -1
  283. package/dist/types/components/MessageList/FloatingDateSeparator.d.ts.map +1 -1
  284. package/dist/types/components/MessageList/GiphyPreviewMessage.d.ts.map +1 -1
  285. package/dist/types/components/MessageList/MessageList.d.ts.map +1 -1
  286. package/dist/types/components/MessageList/MessageListMainPanel.d.ts.map +1 -1
  287. package/dist/types/components/MessageList/NewMessageNotification.d.ts +3 -1
  288. package/dist/types/components/MessageList/NewMessageNotification.d.ts.map +1 -1
  289. package/dist/types/components/MessageList/ScrollToLatestMessageButton.d.ts +3 -1
  290. package/dist/types/components/MessageList/ScrollToLatestMessageButton.d.ts.map +1 -1
  291. package/dist/types/components/MessageList/UnreadMessagesNotification.d.ts.map +1 -1
  292. package/dist/types/components/MessageList/UnreadMessagesSeparator.d.ts.map +1 -1
  293. package/dist/types/components/MessageList/VirtualizedMessageListComponents.d.ts +1 -2
  294. package/dist/types/components/MessageList/VirtualizedMessageListComponents.d.ts.map +1 -1
  295. package/dist/types/components/MessageList/hooks/MessageList/scrollInstrumentation.d.ts.map +1 -1
  296. package/dist/types/components/MessageList/hooks/MessageList/useEnrichedMessages.d.ts +1 -1
  297. package/dist/types/components/MessageList/hooks/MessageList/useEnrichedMessages.d.ts.map +1 -1
  298. package/dist/types/components/MessageList/hooks/MessageList/useFloatingDateSeparatorMessageList.d.ts.map +1 -1
  299. package/dist/types/components/MessageList/hooks/MessageList/useMessageListElements.d.ts.map +1 -1
  300. package/dist/types/components/MessageList/hooks/MessageList/useMessageListScrollManager.d.ts.map +1 -1
  301. package/dist/types/components/MessageList/hooks/MessageList/useScrollLocationLogic.d.ts.map +1 -1
  302. package/dist/types/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.d.ts.map +1 -1
  303. package/dist/types/components/MessageList/hooks/VirtualizedMessageList/useFloatingDateSeparator.d.ts.map +1 -1
  304. package/dist/types/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.d.ts +0 -1
  305. package/dist/types/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.d.ts.map +1 -1
  306. package/dist/types/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.d.ts.map +1 -1
  307. package/dist/types/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.d.ts +0 -1
  308. package/dist/types/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.d.ts.map +1 -1
  309. package/dist/types/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.d.ts.map +1 -1
  310. package/dist/types/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.d.ts.map +1 -1
  311. package/dist/types/components/MessageList/hooks/useLastDeliveredData.d.ts.map +1 -1
  312. package/dist/types/components/MessageList/hooks/useLastOwnMessage.d.ts.map +1 -1
  313. package/dist/types/components/MessageList/hooks/useLastReadData.d.ts.map +1 -1
  314. package/dist/types/components/MessageList/hooks/useMarkRead.d.ts.map +1 -1
  315. package/dist/types/components/MessageList/utils.d.ts +0 -1
  316. package/dist/types/components/MessageList/utils.d.ts.map +1 -1
  317. package/dist/types/components/Modal/CloseButtonOnModalOverlay.d.ts +1 -1
  318. package/dist/types/components/Modal/CloseButtonOnModalOverlay.d.ts.map +1 -1
  319. package/dist/types/components/Modal/GlobalModal.d.ts +3 -1
  320. package/dist/types/components/Modal/GlobalModal.d.ts.map +1 -1
  321. package/dist/types/components/Notifications/NotificationConfigurationContext.d.ts +24 -0
  322. package/dist/types/components/Notifications/NotificationConfigurationContext.d.ts.map +1 -0
  323. package/dist/types/components/Notifications/NotificationList.d.ts.map +1 -1
  324. package/dist/types/components/Notifications/hooks/useNotificationApi.d.ts.map +1 -1
  325. package/dist/types/components/Notifications/hooks/useNotifications.d.ts +5 -0
  326. package/dist/types/components/Notifications/hooks/useNotifications.d.ts.map +1 -1
  327. package/dist/types/components/Notifications/hooks/useSystemNotifications.d.ts.map +1 -1
  328. package/dist/types/components/Notifications/index.d.ts +1 -0
  329. package/dist/types/components/Notifications/index.d.ts.map +1 -1
  330. package/dist/types/components/Notifications/notificationTarget.d.ts +3 -3
  331. package/dist/types/components/Notifications/notificationTarget.d.ts.map +1 -1
  332. package/dist/types/components/Poll/Poll.d.ts.map +1 -1
  333. package/dist/types/components/Poll/PollActions/AddCommentPrompt.d.ts.map +1 -1
  334. package/dist/types/components/Poll/PollActions/PollAction.d.ts.map +1 -1
  335. package/dist/types/components/Poll/PollActions/PollActions.d.ts.map +1 -1
  336. package/dist/types/components/Poll/PollActions/PollAnswerList.d.ts.map +1 -1
  337. package/dist/types/components/Poll/PollActions/PollQuestion.d.ts.map +1 -1
  338. package/dist/types/components/Poll/PollActions/PollResults/PollOptionWithVotes.d.ts.map +1 -1
  339. package/dist/types/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.d.ts.map +1 -1
  340. package/dist/types/components/Poll/PollActions/PollResults/PollOptionWithVotesList.d.ts.map +1 -1
  341. package/dist/types/components/Poll/PollCreationDialog/PollCreationDialog.d.ts.map +1 -1
  342. package/dist/types/components/Poll/PollCreationDialog/PollCreationDialogControls.d.ts.map +1 -1
  343. package/dist/types/components/Poll/PollHeader.d.ts +1 -1
  344. package/dist/types/components/Poll/PollHeader.d.ts.map +1 -1
  345. package/dist/types/components/Poll/PollOptionList.d.ts.map +1 -1
  346. package/dist/types/components/Poll/PollOptionSelector.d.ts.map +1 -1
  347. package/dist/types/components/Poll/PollVote.d.ts.map +1 -1
  348. package/dist/types/components/Poll/constants.d.ts.map +1 -1
  349. package/dist/types/components/Poll/hooks/usePollAnswerPagination.d.ts.map +1 -1
  350. package/dist/types/components/Poll/hooks/usePollOptionVotesPagination.d.ts.map +1 -1
  351. package/dist/types/components/Portal/Portal.d.ts.map +1 -1
  352. package/dist/types/components/ReactFileUtilities/LoadingIndicator.d.ts.map +1 -1
  353. package/dist/types/components/ReactFileUtilities/utils.d.ts.map +1 -1
  354. package/dist/types/components/Reactions/MessageReactions.d.ts +3 -1
  355. package/dist/types/components/Reactions/MessageReactions.d.ts.map +1 -1
  356. package/dist/types/components/Reactions/ReactionSelectorWithButton.d.ts.map +1 -1
  357. package/dist/types/components/Reactions/SpriteImage.d.ts.map +1 -1
  358. package/dist/types/components/Reactions/hooks/useProcessReactions.d.ts.map +1 -1
  359. package/dist/types/components/Reactions/reactionOptions.d.ts +10 -1
  360. package/dist/types/components/Reactions/reactionOptions.d.ts.map +1 -1
  361. package/dist/types/components/Reactions/utils/utils.d.ts.map +1 -1
  362. package/dist/types/components/SafeAnchor/SafeAnchor.d.ts +3 -1
  363. package/dist/types/components/SafeAnchor/SafeAnchor.d.ts.map +1 -1
  364. package/dist/types/components/Search/Search.d.ts.map +1 -1
  365. package/dist/types/components/Search/SearchBar/SearchBar.d.ts.map +1 -1
  366. package/dist/types/components/Search/SearchContext.d.ts.map +1 -1
  367. package/dist/types/components/Search/SearchResults/SearchResultItem.d.ts +1 -1
  368. package/dist/types/components/Search/SearchResults/SearchResultItem.d.ts.map +1 -1
  369. package/dist/types/components/Search/SearchResults/SearchSourceResultList.d.ts.map +1 -1
  370. package/dist/types/components/Search/SearchResults/SearchSourceResults.d.ts.map +1 -1
  371. package/dist/types/components/Search/SearchSourceResultsContext.d.ts.map +1 -1
  372. package/dist/types/components/Search/hooks/useSearchQueriesInProgress.d.ts.map +1 -1
  373. package/dist/types/components/SkipNavigation/SkipNavigation.d.ts.map +1 -1
  374. package/dist/types/components/SummarizedMessagePreview/SummarizedMessagePreview.d.ts.map +1 -1
  375. package/dist/types/components/SummarizedMessagePreview/hooks/useLatestMessagePreview.d.ts.map +1 -1
  376. package/dist/types/components/TextareaComposer/SuggestionList/CommandItem.d.ts.map +1 -1
  377. package/dist/types/components/TextareaComposer/SuggestionList/EmoticonItem.d.ts.map +1 -1
  378. package/dist/types/components/TextareaComposer/SuggestionList/SuggestionList.d.ts.map +1 -1
  379. package/dist/types/components/TextareaComposer/SuggestionList/SuggestionListItem.d.ts.map +1 -1
  380. package/dist/types/components/TextareaComposer/SuggestionList/UserItem.d.ts.map +1 -1
  381. package/dist/types/components/TextareaComposer/TextareaComposer.d.ts.map +1 -1
  382. package/dist/types/components/TextareaComposer/hooks/useTextareaPlaceholder.d.ts.map +1 -1
  383. package/dist/types/components/Thread/Thread.d.ts.map +1 -1
  384. package/dist/types/components/Thread/ThreadHead.d.ts.map +1 -1
  385. package/dist/types/components/Thread/ThreadHeader.d.ts.map +1 -1
  386. package/dist/types/components/Threads/ThreadContext.d.ts.map +1 -1
  387. package/dist/types/components/Threads/ThreadList/ThreadList.d.ts.map +1 -1
  388. package/dist/types/components/Threads/ThreadList/ThreadListItem.d.ts.map +1 -1
  389. package/dist/types/components/Threads/ThreadList/ThreadListItemUI.d.ts.map +1 -1
  390. package/dist/types/components/Threads/UnreadCountBadge.d.ts +1 -1
  391. package/dist/types/components/Threads/UnreadCountBadge.d.ts.map +1 -1
  392. package/dist/types/components/Threads/hooks/useThreadManagerState.d.ts.map +1 -1
  393. package/dist/types/components/Threads/hooks/useThreadState.d.ts.map +1 -1
  394. package/dist/types/components/Tooltip/Tooltip.d.ts +1 -1
  395. package/dist/types/components/Tooltip/Tooltip.d.ts.map +1 -1
  396. package/dist/types/components/Tooltip/hooks/useEnterLeaveHandlers.d.ts +1 -1
  397. package/dist/types/components/Tooltip/hooks/useEnterLeaveHandlers.d.ts.map +1 -1
  398. package/dist/types/components/TypingIndicator/TypingIndicator.d.ts +8 -1
  399. package/dist/types/components/TypingIndicator/TypingIndicator.d.ts.map +1 -1
  400. package/dist/types/components/TypingIndicator/TypingIndicatorHeader.d.ts.map +1 -1
  401. package/dist/types/components/TypingIndicator/utils/getTypingStatusMessage.d.ts.map +1 -1
  402. package/dist/types/components/UtilityComponents/useStableId.d.ts +7 -3
  403. package/dist/types/components/UtilityComponents/useStableId.d.ts.map +1 -1
  404. package/dist/types/components/VideoPlayer/ReactPlayerWrapper.d.ts +9 -0
  405. package/dist/types/components/VideoPlayer/ReactPlayerWrapper.d.ts.map +1 -0
  406. package/dist/types/components/VideoPlayer/VideoPlayer.d.ts.map +1 -1
  407. package/dist/types/components/VideoPlayer/VideoThumbnail.d.ts.map +1 -1
  408. package/dist/types/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
  409. package/dist/types/components/Window/Window.d.ts +3 -1
  410. package/dist/types/components/Window/Window.d.ts.map +1 -1
  411. package/dist/types/context/AttachmentSelectorContext.d.ts.map +1 -1
  412. package/dist/types/context/ChannelActionContext.d.ts.map +1 -1
  413. package/dist/types/context/ChannelListContext.d.ts.map +1 -1
  414. package/dist/types/context/ChannelStateContext.d.ts.map +1 -1
  415. package/dist/types/context/ChatContext.d.ts.map +1 -1
  416. package/dist/types/context/ComponentContext.d.ts +5 -1
  417. package/dist/types/context/ComponentContext.d.ts.map +1 -1
  418. package/dist/types/context/DialogManagerContext.d.ts.map +1 -1
  419. package/dist/types/context/MessageComposerContext.d.ts.map +1 -1
  420. package/dist/types/context/MessageContext.d.ts.map +1 -1
  421. package/dist/types/context/MessageListContext.d.ts.map +1 -1
  422. package/dist/types/context/MessageTranslationViewContext.d.ts.map +1 -1
  423. package/dist/types/context/ModalContext.d.ts.map +1 -1
  424. package/dist/types/context/PollContext.d.ts.map +1 -1
  425. package/dist/types/context/TranslationContext.d.ts.map +1 -1
  426. package/dist/types/context/TypingContext.d.ts.map +1 -1
  427. package/dist/types/context/VirtualizedMessageListContext.d.ts.map +1 -1
  428. package/dist/types/i18n/Streami18n.d.ts +3 -3
  429. package/dist/types/i18n/Streami18n.d.ts.map +1 -1
  430. package/dist/types/i18n/TranslationBuilder/TranslationBuilder.d.ts.map +1 -1
  431. package/dist/types/i18n/TranslationBuilder/notifications/NotificationTranslationTopic.d.ts.map +1 -1
  432. package/dist/types/i18n/utils.d.ts +2 -2
  433. package/dist/types/i18n/utils.d.ts.map +1 -1
  434. package/dist/types/plugins/Emojis/EmojiPicker.d.ts.map +1 -1
  435. package/dist/types/plugins/Emojis/middleware/textComposerEmojiMiddleware.d.ts.map +1 -1
  436. package/dist/types/utils/findReverse.d.ts.map +1 -1
  437. package/dist/types/utils/getChannel.d.ts.map +1 -1
  438. package/dist/types/utils/getTextareaCaretRect.d.ts.map +1 -1
  439. package/dist/types/utils/getWholeChar.d.ts.map +1 -1
  440. package/dist/types/utils/mergeDeep.d.ts.map +1 -1
  441. package/dist/types/utils/useStableCallback.d.ts.map +1 -1
  442. package/package.json +84 -66
  443. package/dist/cjs/audioProcessing.56e5db9d.js +0 -123
  444. package/dist/cjs/audioProcessing.56e5db9d.js.map +0 -1
  445. package/dist/cjs/useNotificationApi.f2c7704d.js +0 -4855
  446. package/dist/cjs/useNotificationApi.f2c7704d.js.map +0 -1
  447. package/dist/es/audioProcessing.21cb49e1.mjs +0 -124
  448. package/dist/es/audioProcessing.21cb49e1.mjs.map +0 -1
  449. package/dist/es/useNotificationApi.f91ae46b.mjs +0 -4839
  450. package/dist/es/useNotificationApi.f91ae46b.mjs.map +0 -1
@@ -0,0 +1,24 @@
1
+ const require_useNotificationApi = require("./useNotificationApi.9ffe5761.js");
2
+ let react_jsx_runtime = require("react/jsx-runtime");
3
+ let react_player = require("react-player");
4
+ react_player = require_useNotificationApi.__toESM(react_player);
5
+ //#region src/components/VideoPlayer/ReactPlayerWrapper.tsx
6
+ var ReactPlayer = react_player.default.default ?? react_player.default;
7
+ /**
8
+ * Default-exported so `VideoPlayer` can code-split it via `React.lazy`, keeping
9
+ * `react-player` (~2 MB) out of the SDK's eager import graph — it is fetched
10
+ * only when a default video player actually renders.
11
+ */
12
+ var ReactPlayerWrapper = ({ isPlaying, thumbnailUrl, videoUrl }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ReactPlayer, {
13
+ className: "react-player",
14
+ config: { file: { attributes: { poster: thumbnailUrl } } },
15
+ controls: true,
16
+ height: "100%",
17
+ playing: isPlaying,
18
+ url: videoUrl,
19
+ width: "100%"
20
+ });
21
+ //#endregion
22
+ exports.default = ReactPlayerWrapper;
23
+
24
+ //# sourceMappingURL=ReactPlayerWrapper.16cd6fed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReactPlayerWrapper.16cd6fed.js","names":[],"sources":["../../src/components/VideoPlayer/ReactPlayerWrapper.tsx"],"sourcesContent":["import ReactPlayerImport from 'react-player';\n\nimport type { VideoPlayerProps } from './VideoPlayer';\n\n// react-player ships as CJS with the component on `exports.default`. Some\n// bundler/interop setups (e.g. Vite serving our built ESM as a linked workspace\n// dependency) hand back the module namespace `{ default }` instead of the\n// component itself, which makes React throw \"Element type is invalid ... got:\n// object\". Unwrap the default defensively so it works regardless of interop.\nconst ReactPlayer =\n (ReactPlayerImport as unknown as { default?: typeof ReactPlayerImport }).default ??\n ReactPlayerImport;\n\n/**\n * Default-exported so `VideoPlayer` can code-split it via `React.lazy`, keeping\n * `react-player` (~2 MB) out of the SDK's eager import graph — it is fetched\n * only when a default video player actually renders.\n */\nconst ReactPlayerWrapper = ({ isPlaying, thumbnailUrl, videoUrl }: VideoPlayerProps) => (\n <ReactPlayer\n className='react-player'\n config={{ file: { attributes: { poster: thumbnailUrl } } }}\n controls\n height='100%'\n playing={isPlaying}\n url={videoUrl}\n width='100%'\n />\n);\n\nexport default ReactPlayerWrapper;\n"],"mappings":";;;;;AASA,IAAM,cACH,aAAA,QAAwE,WACzE,aAAA;;;;;;AAOF,IAAM,sBAAsB,EAAE,WAAW,cAAc,eACrD,iBAAA,GAAA,kBAAA,KAAC,aAAD;CACE,WAAU;CACV,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,aAAa,EAAE,EAAE;CACzD,UAAA;CACA,QAAO;CACP,SAAS;CACT,KAAK;CACL,OAAM;AACP,CAAA"}
@@ -0,0 +1,148 @@
1
+ let react = require("react");
2
+ //#region src/components/ReactFileUtilities/utils.ts
3
+ var useHandleFileChangeWrapper = (resetOnChange = false, handler) => (0, react.useCallback)(({ currentTarget }) => {
4
+ const { files } = currentTarget;
5
+ if (!files) return;
6
+ try {
7
+ handler?.(Array.from(files));
8
+ } catch (error) {
9
+ console.error(error);
10
+ }
11
+ if (resetOnChange) currentTarget.value = "";
12
+ }, [handler, resetOnChange]);
13
+ async function dataTransferItemsToFiles(items) {
14
+ if (!items || !items.length) return [];
15
+ const fileLikes = getFileLikes(items);
16
+ if (fileLikes.length) return fileLikes;
17
+ const blobPromises = [];
18
+ for (const item of items) if (item.type === "text/html") blobPromises.push(new Promise((accept) => {
19
+ item.getAsString(async (s) => {
20
+ const imagePromises = extractImageSources(s).map((src) => getImageSource(fileLikes, src));
21
+ await Promise.all(imagePromises);
22
+ accept();
23
+ });
24
+ }));
25
+ await Promise.all(blobPromises);
26
+ return fileLikes;
27
+ }
28
+ function getFileLikes(items) {
29
+ const fileLikes = [];
30
+ for (const item of items) if (item.kind === "file") {
31
+ const file = item.getAsFile();
32
+ if (file) fileLikes.push(file);
33
+ }
34
+ return fileLikes;
35
+ }
36
+ async function getImageSource(fileLikes, src) {
37
+ let res;
38
+ try {
39
+ res = await fetch(src);
40
+ } catch (e) {
41
+ return;
42
+ }
43
+ const contentType = res.headers.get("Content-type") || "application/octet-stream";
44
+ const buf = await res.arrayBuffer();
45
+ const blob = new Blob([buf], { type: contentType });
46
+ fileLikes.push(blob);
47
+ }
48
+ var extractImageSources = (s) => {
49
+ const imageTags = new DOMParser().parseFromString(s, "text/html").getElementsByTagName("img");
50
+ return Array.from(imageTags, (tag) => tag.src).filter((tag) => tag);
51
+ };
52
+ var createFileFromBlobs = ({ blobsArray, fileName, mimeType }) => {
53
+ const concatenatedBlob = new Blob(blobsArray, { type: mimeType });
54
+ return new File([concatenatedBlob], fileName, { type: concatenatedBlob.type });
55
+ };
56
+ var getExtensionFromMimeType = (mimeType) => {
57
+ const match = mimeType.match(/\/([^/;]+)/);
58
+ return match && match[1];
59
+ };
60
+ var getRecordedMediaTypeFromMimeType = (mimeType) => {
61
+ const match = mimeType.match(/^(audio|video)\/.*$/);
62
+ return match && match[1];
63
+ };
64
+ var readFileAsArrayBuffer = (file) => new Promise((resolve, reject) => {
65
+ const fileReader = new FileReader();
66
+ fileReader.onload = () => {
67
+ resolve(fileReader.result);
68
+ };
69
+ fileReader.onerror = () => {
70
+ reject(fileReader.error);
71
+ };
72
+ fileReader.readAsArrayBuffer(file);
73
+ });
74
+ //#endregion
75
+ //#region src/components/MediaRecorder/transcode/audioProcessing.ts
76
+ /**
77
+ * In the context of resampling audio data, AudioContext is used to decode the input audio file into an AudioBuffer,
78
+ * which is a fundamental data structure representing audio data.
79
+ * @param file
80
+ */
81
+ var toAudioBuffer = async (file) => {
82
+ const audioCtx = new AudioContext();
83
+ const arrayBuffer = await readFileAsArrayBuffer(file);
84
+ const decodedData = await audioCtx.decodeAudioData(arrayBuffer);
85
+ if (audioCtx.state !== "closed") await audioCtx.close();
86
+ return decodedData;
87
+ };
88
+ /**
89
+ * OfflineAudioContext is a specialized type of AudioContext that does not render audio in real-time and is used for offline audio processing tasks.
90
+ * It allows performing audio processing and rendering without actually playing the audio through speakers or outputting it to a destination.
91
+ * In the context of resampling audio data, OfflineAudioContext is used to resample the decoded AudioBuffer from a file to the desired sample rate.
92
+ * It provides more flexibility and control over audio processing, as it can operate at different sample rates and durations compared to real-time audio contexts.
93
+ * @param audioBuffer
94
+ * @param sampleRate
95
+ */
96
+ var renderAudio = async (audioBuffer, sampleRate) => {
97
+ const offlineAudioCtx = new OfflineAudioContext(audioBuffer.numberOfChannels, audioBuffer.duration * sampleRate, sampleRate);
98
+ const source = offlineAudioCtx.createBufferSource();
99
+ source.buffer = audioBuffer;
100
+ source.connect(offlineAudioCtx.destination);
101
+ source.start();
102
+ return await offlineAudioCtx.startRendering();
103
+ };
104
+ //#endregion
105
+ Object.defineProperty(exports, "createFileFromBlobs", {
106
+ enumerable: true,
107
+ get: function() {
108
+ return createFileFromBlobs;
109
+ }
110
+ });
111
+ Object.defineProperty(exports, "dataTransferItemsToFiles", {
112
+ enumerable: true,
113
+ get: function() {
114
+ return dataTransferItemsToFiles;
115
+ }
116
+ });
117
+ Object.defineProperty(exports, "getExtensionFromMimeType", {
118
+ enumerable: true,
119
+ get: function() {
120
+ return getExtensionFromMimeType;
121
+ }
122
+ });
123
+ Object.defineProperty(exports, "getRecordedMediaTypeFromMimeType", {
124
+ enumerable: true,
125
+ get: function() {
126
+ return getRecordedMediaTypeFromMimeType;
127
+ }
128
+ });
129
+ Object.defineProperty(exports, "renderAudio", {
130
+ enumerable: true,
131
+ get: function() {
132
+ return renderAudio;
133
+ }
134
+ });
135
+ Object.defineProperty(exports, "toAudioBuffer", {
136
+ enumerable: true,
137
+ get: function() {
138
+ return toAudioBuffer;
139
+ }
140
+ });
141
+ Object.defineProperty(exports, "useHandleFileChangeWrapper", {
142
+ enumerable: true,
143
+ get: function() {
144
+ return useHandleFileChangeWrapper;
145
+ }
146
+ });
147
+
148
+ //# sourceMappingURL=audioProcessing.22303d69.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audioProcessing.22303d69.js","names":[],"sources":["../../src/components/ReactFileUtilities/utils.ts","../../src/components/MediaRecorder/transcode/audioProcessing.ts"],"sourcesContent":["import type { FileLike, RecordedMediaType } from './types';\nimport type { ChangeEvent } from 'react';\nimport { useCallback } from 'react';\n\nexport const useHandleFileChangeWrapper = (\n resetOnChange = false,\n handler?: (files: Array<File>) => void,\n) =>\n useCallback(\n ({ currentTarget }: ChangeEvent<HTMLInputElement>) => {\n const { files } = currentTarget;\n\n if (!files) return;\n\n try {\n handler?.(Array.from(files));\n } catch (error) {\n console.error(error);\n }\n\n if (resetOnChange) currentTarget.value = '';\n },\n [handler, resetOnChange],\n );\n\nexport function dataTransferItemsHaveFiles(items?: DataTransferItem[]): boolean {\n if (!items || !items.length) {\n return false;\n }\n for (const item of items) {\n if (item.kind === 'file' || item.type === 'text/html') {\n return true;\n }\n }\n return false;\n}\n\nexport async function dataTransferItemsToFiles(\n items?: DataTransferItem[],\n): Promise<FileLike[]> {\n if (!items || !items.length) {\n return [];\n }\n\n // If there are files inside the DataTransferItem prefer those\n const fileLikes = getFileLikes(items);\n if (fileLikes.length) {\n return fileLikes;\n }\n\n // Otherwise extract images from html\n const blobPromises = [];\n for (const item of items) {\n if (item.type === 'text/html') {\n blobPromises.push(\n new Promise<void>((accept) => {\n item.getAsString(async (s) => {\n const imagePromises = extractImageSources(s).map((src) =>\n getImageSource(fileLikes, src),\n );\n\n await Promise.all(imagePromises);\n accept();\n });\n }),\n );\n }\n }\n await Promise.all(blobPromises);\n return fileLikes;\n}\n\nfunction getFileLikes(items: DataTransferItem[]) {\n const fileLikes = [];\n for (const item of items) {\n if (item.kind === 'file') {\n const file = item.getAsFile();\n if (file) {\n fileLikes.push(file);\n }\n }\n }\n return fileLikes;\n}\n\nasync function getImageSource(fileLikes: FileLike[], src: string) {\n let res;\n try {\n res = await fetch(src);\n } catch (e) {\n return;\n }\n const contentType = res.headers.get('Content-type') || 'application/octet-stream';\n const buf = await res.arrayBuffer();\n const blob = new Blob([buf], { type: contentType });\n fileLikes.push(blob);\n}\n\nconst extractImageSources = (s: string) => {\n const imageTags = new DOMParser()\n .parseFromString(s, 'text/html')\n .getElementsByTagName('img');\n return Array.from(imageTags, (tag) => tag.src).filter((tag) => tag);\n};\n\nexport const isBlobButNotFile = (obj: unknown): obj is Blob =>\n obj instanceof Blob && !(obj instanceof File);\n\nexport const createFileFromBlobs = ({\n blobsArray,\n fileName,\n mimeType,\n}: {\n blobsArray: Blob[];\n fileName: string;\n mimeType: string;\n}) => {\n const concatenatedBlob = new Blob(blobsArray, { type: mimeType });\n return new File([concatenatedBlob], fileName, { type: concatenatedBlob.type });\n};\n\nexport const getExtensionFromMimeType = (mimeType: string) => {\n const match = mimeType.match(/\\/([^/;]+)/);\n return match && match[1];\n};\n\nexport const getRecordedMediaTypeFromMimeType = (\n mimeType: string,\n): RecordedMediaType | null => {\n const match = mimeType.match(/^(audio|video)\\/.*$/);\n return match && (match[1] as RecordedMediaType);\n};\n\nexport const readFileAsArrayBuffer = (file: File): Promise<ArrayBuffer> =>\n new Promise((resolve, reject) => {\n const fileReader = new FileReader();\n fileReader.onload = () => {\n resolve(fileReader.result as ArrayBuffer);\n };\n\n fileReader.onerror = () => {\n reject(fileReader.error);\n };\n\n fileReader.readAsArrayBuffer(file);\n });\n\nexport const generateFileName = (mimeType: string) =>\n `file_${new Date().toISOString()}.${getExtensionFromMimeType(mimeType)}`;\n","import { readFileAsArrayBuffer } from '../../ReactFileUtilities';\n\n/**\n * In the context of resampling audio data, AudioContext is used to decode the input audio file into an AudioBuffer,\n * which is a fundamental data structure representing audio data.\n * @param file\n */\nexport const toAudioBuffer = async (file: File) => {\n const audioCtx = new AudioContext();\n\n const arrayBuffer = await readFileAsArrayBuffer(file);\n const decodedData = await audioCtx.decodeAudioData(arrayBuffer);\n if (audioCtx.state !== 'closed') await audioCtx.close();\n return decodedData;\n};\n\n/**\n * OfflineAudioContext is a specialized type of AudioContext that does not render audio in real-time and is used for offline audio processing tasks.\n * It allows performing audio processing and rendering without actually playing the audio through speakers or outputting it to a destination.\n * In the context of resampling audio data, OfflineAudioContext is used to resample the decoded AudioBuffer from a file to the desired sample rate.\n * It provides more flexibility and control over audio processing, as it can operate at different sample rates and durations compared to real-time audio contexts.\n * @param audioBuffer\n * @param sampleRate\n */\nexport const renderAudio = async (audioBuffer: AudioBuffer, sampleRate: number) => {\n const offlineAudioCtx = new OfflineAudioContext(\n audioBuffer.numberOfChannels,\n audioBuffer.duration * sampleRate,\n sampleRate,\n );\n const source = offlineAudioCtx.createBufferSource();\n source.buffer = audioBuffer;\n source.connect(offlineAudioCtx.destination);\n source.start();\n\n return await offlineAudioCtx.startRendering();\n};\n"],"mappings":";;AAIA,IAAa,8BACX,gBAAgB,OAChB,aAAA,GAAA,MAAA,cAGG,EAAE,oBAAmD;CACpD,MAAM,EAAE,UAAU;CAElB,IAAI,CAAC,OAAO;CAEZ,IAAI;EACF,UAAU,MAAM,KAAK,KAAK,CAAC;CAC7B,SAAS,OAAO;EACd,QAAQ,MAAM,KAAK;CACrB;CAEA,IAAI,eAAe,cAAc,QAAQ;AAC3C,GACA,CAAC,SAAS,aAAa,CACzB;AAcF,eAAsB,yBACpB,OACqB;CACrB,IAAI,CAAC,SAAS,CAAC,MAAM,QACnB,OAAO,CAAC;CAIV,MAAM,YAAY,aAAa,KAAK;CACpC,IAAI,UAAU,QACZ,OAAO;CAIT,MAAM,eAAe,CAAC;CACtB,KAAK,MAAM,QAAQ,OACjB,IAAI,KAAK,SAAS,aAChB,aAAa,KACX,IAAI,SAAe,WAAW;EAC5B,KAAK,YAAY,OAAO,MAAM;GAC5B,MAAM,gBAAgB,oBAAoB,CAAC,EAAE,KAAK,QAChD,eAAe,WAAW,GAAG,CAC/B;GAEA,MAAM,QAAQ,IAAI,aAAa;GAC/B,OAAO;EACT,CAAC;CACH,CAAC,CACH;CAGJ,MAAM,QAAQ,IAAI,YAAY;CAC9B,OAAO;AACT;AAEA,SAAS,aAAa,OAA2B;CAC/C,MAAM,YAAY,CAAC;CACnB,KAAK,MAAM,QAAQ,OACjB,IAAI,KAAK,SAAS,QAAQ;EACxB,MAAM,OAAO,KAAK,UAAU;EAC5B,IAAI,MACF,UAAU,KAAK,IAAI;CAEvB;CAEF,OAAO;AACT;AAEA,eAAe,eAAe,WAAuB,KAAa;CAChE,IAAI;CACJ,IAAI;EACF,MAAM,MAAM,MAAM,GAAG;CACvB,SAAS,GAAG;EACV;CACF;CACA,MAAM,cAAc,IAAI,QAAQ,IAAI,cAAc,KAAK;CACvD,MAAM,MAAM,MAAM,IAAI,YAAY;CAClC,MAAM,OAAO,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE,MAAM,YAAY,CAAC;CAClD,UAAU,KAAK,IAAI;AACrB;AAEA,IAAM,uBAAuB,MAAc;CACzC,MAAM,YAAY,IAAI,UAAU,EAC7B,gBAAgB,GAAG,WAAW,EAC9B,qBAAqB,KAAK;CAC7B,OAAO,MAAM,KAAK,YAAY,QAAQ,IAAI,GAAG,EAAE,QAAQ,QAAQ,GAAG;AACpE;AAKA,IAAa,uBAAuB,EAClC,YACA,UACA,eAKI;CACJ,MAAM,mBAAmB,IAAI,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;CAChE,OAAO,IAAI,KAAK,CAAC,gBAAgB,GAAG,UAAU,EAAE,MAAM,iBAAiB,KAAK,CAAC;AAC/E;AAEA,IAAa,4BAA4B,aAAqB;CAC5D,MAAM,QAAQ,SAAS,MAAM,YAAY;CACzC,OAAO,SAAS,MAAM;AACxB;AAEA,IAAa,oCACX,aAC6B;CAC7B,MAAM,QAAQ,SAAS,MAAM,qBAAqB;CAClD,OAAO,SAAU,MAAM;AACzB;AAEA,IAAa,yBAAyB,SACpC,IAAI,SAAS,SAAS,WAAW;CAC/B,MAAM,aAAa,IAAI,WAAW;CAClC,WAAW,eAAe;EACxB,QAAQ,WAAW,MAAqB;CAC1C;CAEA,WAAW,gBAAgB;EACzB,OAAO,WAAW,KAAK;CACzB;CAEA,WAAW,kBAAkB,IAAI;AACnC,CAAC;;;;;;;;AC1IH,IAAa,gBAAgB,OAAO,SAAe;CACjD,MAAM,WAAW,IAAI,aAAa;CAElC,MAAM,cAAc,MAAM,sBAAsB,IAAI;CACpD,MAAM,cAAc,MAAM,SAAS,gBAAgB,WAAW;CAC9D,IAAI,SAAS,UAAU,UAAU,MAAM,SAAS,MAAM;CACtD,OAAO;AACT;;;;;;;;;AAUA,IAAa,cAAc,OAAO,aAA0B,eAAuB;CACjF,MAAM,kBAAkB,IAAI,oBAC1B,YAAY,kBACZ,YAAY,WAAW,YACvB,UACF;CACA,MAAM,SAAS,gBAAgB,mBAAmB;CAClD,OAAO,SAAS;CAChB,OAAO,QAAQ,gBAAgB,WAAW;CAC1C,OAAO,MAAM;CAEb,OAAO,MAAM,gBAAgB,eAAe;AAC9C"}
@@ -1,232 +1,217 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __copyProps = (to, from, except, desc) => {
9
- if (from && typeof from === "object" || typeof from === "function") {
10
- for (let key of __getOwnPropNames(from))
11
- if (!__hasOwnProp.call(to, key) && key !== except)
12
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
- }
14
- return to;
15
- };
16
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
17
- // If the importer is in node compatibility mode or this is not an ESM
18
- // file that has been converted to a CommonJS file using a Babel-
19
- // compatible transform (i.e. "__esModule" has not been set), then set
20
- // "default" to the CommonJS "module.exports" for node compatibility.
21
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
- mod
23
- ));
24
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
25
- const jsxRuntime = require("react/jsx-runtime");
26
- const React = require("react");
27
- const Picker = require("@emoji-mart/react");
28
- const useNotificationApi = require("./useNotificationApi.f2c7704d.js");
29
- const mergeWith = require("lodash.mergewith");
30
- const streamChat = require("stream-chat");
31
- const isShadowRoot = (node) => !!node.host;
32
- const defaultButtonClassName = "str-chat__emoji-picker-button";
33
- const classNames = {
34
- pickerContainerClassName: "str-chat__message-textarea-emoji-picker-container",
35
- wrapperClassName: "str-chat__message-textarea-emoji-picker"
2
+ const require_useNotificationApi = require("./useNotificationApi.9ffe5761.js");
3
+ let react = require("react");
4
+ react = require_useNotificationApi.__toESM(react);
5
+ let react_jsx_runtime = require("react/jsx-runtime");
6
+ let stream_chat = require("stream-chat");
7
+ let lodash_mergewith = require("lodash.mergewith");
8
+ lodash_mergewith = require_useNotificationApi.__toESM(lodash_mergewith);
9
+ let _emoji_mart_react = require("@emoji-mart/react");
10
+ _emoji_mart_react = require_useNotificationApi.__toESM(_emoji_mart_react);
11
+ //#region src/plugins/Emojis/EmojiPicker.tsx
12
+ var Picker = _emoji_mart_react.default.default ?? _emoji_mart_react.default;
13
+ var isShadowRoot = (node) => !!node.host;
14
+ var defaultButtonClassName = "str-chat__emoji-picker-button";
15
+ var classNames = {
16
+ pickerContainerClassName: "str-chat__message-textarea-emoji-picker-container",
17
+ wrapperClassName: "str-chat__message-textarea-emoji-picker"
18
+ };
19
+ var EmojiPicker = (props) => {
20
+ const { t } = require_useNotificationApi.useTranslationContext("EmojiPicker");
21
+ const { textareaRef } = require_useNotificationApi.useMessageComposerContext("EmojiPicker");
22
+ const { textComposer } = require_useNotificationApi.useMessageComposerController();
23
+ const isCooldownActive = require_useNotificationApi.useIsCooldownActive();
24
+ const [displayPicker, setDisplayPicker] = (0, react.useState)(false);
25
+ const [referenceElement, setReferenceElement] = (0, react.useState)(null);
26
+ const [popperElement, setPopperElement] = (0, react.useState)(null);
27
+ const { refs, strategy, x, y } = require_useNotificationApi.usePopoverPosition({
28
+ offset: 8,
29
+ placement: props.placement ?? "top-end"
30
+ });
31
+ (0, react.useEffect)(() => {
32
+ refs.setReference(referenceElement);
33
+ }, [referenceElement, refs]);
34
+ (0, react.useEffect)(() => {
35
+ refs.setFloating(popperElement);
36
+ }, [popperElement, refs]);
37
+ const { pickerContainerClassName, wrapperClassName } = classNames;
38
+ const { ButtonIconComponent = require_useNotificationApi.IconEmoji } = props;
39
+ const pickerStyle = props.pickerProps?.style;
40
+ (0, react.useEffect)(() => {
41
+ if (!popperElement || !referenceElement) return;
42
+ const handlePointerDown = (e) => {
43
+ const target = e.target;
44
+ const rootNode = target.getRootNode();
45
+ if (popperElement.contains(isShadowRoot(rootNode) ? rootNode.host : target) || referenceElement.contains(target)) return;
46
+ setDisplayPicker(false);
47
+ };
48
+ window.addEventListener("pointerdown", handlePointerDown);
49
+ return () => window.removeEventListener("pointerdown", handlePointerDown);
50
+ }, [referenceElement, popperElement]);
51
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
52
+ className: props.wrapperClassName ?? wrapperClassName,
53
+ children: [displayPicker && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
54
+ className: props.pickerContainerClassName ?? pickerContainerClassName,
55
+ ref: setPopperElement,
56
+ style: {
57
+ left: x ?? 0,
58
+ position: strategy,
59
+ top: y ?? 0
60
+ },
61
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Picker, {
62
+ data: async () => (await import("@emoji-mart/data")).default,
63
+ onEmojiSelect: (e) => {
64
+ const textarea = textareaRef.current;
65
+ if (!textarea) return;
66
+ textComposer.insertText({ text: e.native });
67
+ textarea.focus();
68
+ if (props.closeOnEmojiSelect) setDisplayPicker(false);
69
+ },
70
+ ...props.pickerProps,
71
+ style: {
72
+ ...pickerStyle,
73
+ "--shadow": "none"
74
+ }
75
+ })
76
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_useNotificationApi.Button, {
77
+ appearance: "ghost",
78
+ "aria-expanded": displayPicker,
79
+ "aria-label": t("aria/Emoji picker"),
80
+ circular: true,
81
+ className: props.buttonClassName ?? defaultButtonClassName,
82
+ disabled: isCooldownActive,
83
+ onClick: () => setDisplayPicker((cv) => !cv),
84
+ ref: setReferenceElement,
85
+ size: "sm",
86
+ type: "button",
87
+ variant: "secondary",
88
+ children: ButtonIconComponent && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ButtonIconComponent, {})
89
+ })]
90
+ });
91
+ };
92
+ //#endregion
93
+ //#region src/plugins/Emojis/middleware/textComposerEmojiMiddleware.ts
94
+ var EmojiSearchSource = class extends stream_chat.BaseSearchSource {
95
+ constructor(emojiSearchIndex, options) {
96
+ super(options);
97
+ this.type = "emoji";
98
+ this.emojiSearchIndex = emojiSearchIndex;
99
+ }
100
+ async query(searchQuery) {
101
+ if (searchQuery.length === 0) return {
102
+ items: [],
103
+ next: null
104
+ };
105
+ return {
106
+ items: (await this.emojiSearchIndex.search(searchQuery) ?? []).filter(Boolean).slice(0, 7).map(({ emoticons = [], id, name, native, skins = [] }) => {
107
+ const [firstSkin] = skins;
108
+ return {
109
+ emoticons,
110
+ id,
111
+ name,
112
+ native: native ?? firstSkin.native
113
+ };
114
+ }),
115
+ next: null
116
+ };
117
+ }
118
+ filterQueryResults(items) {
119
+ return items.map((item) => ({
120
+ ...item,
121
+ ...(0, stream_chat.getTokenizedSuggestionDisplayName)({
122
+ displayName: item.id,
123
+ searchToken: this.searchQuery
124
+ })
125
+ }));
126
+ }
36
127
  };
37
- const EmojiPicker = (props) => {
38
- const { t } = useNotificationApi.useTranslationContext("EmojiPicker");
39
- const { textareaRef } = useNotificationApi.useMessageComposerContext();
40
- const { textComposer } = useNotificationApi.useMessageComposerController();
41
- const isCooldownActive = useNotificationApi.useIsCooldownActive();
42
- const [displayPicker, setDisplayPicker] = React.useState(false);
43
- const [referenceElement, setReferenceElement] = React.useState(
44
- null
45
- );
46
- const [popperElement, setPopperElement] = React.useState(null);
47
- const { refs, strategy, x, y } = useNotificationApi.usePopoverPosition({
48
- offset: 8,
49
- placement: props.placement ?? "top-end"
50
- });
51
- React.useEffect(() => {
52
- refs.setReference(referenceElement);
53
- }, [referenceElement, refs]);
54
- React.useEffect(() => {
55
- refs.setFloating(popperElement);
56
- }, [popperElement, refs]);
57
- const { pickerContainerClassName, wrapperClassName } = classNames;
58
- const { ButtonIconComponent = useNotificationApi.IconEmoji } = props;
59
- const pickerStyle = props.pickerProps?.style;
60
- React.useEffect(() => {
61
- if (!popperElement || !referenceElement) return;
62
- const handlePointerDown = (e) => {
63
- const target = e.target;
64
- const rootNode = target.getRootNode();
65
- if (popperElement.contains(isShadowRoot(rootNode) ? rootNode.host : target) || referenceElement.contains(target)) {
66
- return;
67
- }
68
- setDisplayPicker(false);
69
- };
70
- window.addEventListener("pointerdown", handlePointerDown);
71
- return () => window.removeEventListener("pointerdown", handlePointerDown);
72
- }, [referenceElement, popperElement]);
73
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: props.wrapperClassName ?? wrapperClassName, children: [
74
- displayPicker && /* @__PURE__ */ jsxRuntime.jsx(
75
- "div",
76
- {
77
- className: props.pickerContainerClassName ?? pickerContainerClassName,
78
- ref: setPopperElement,
79
- style: { left: x ?? 0, position: strategy, top: y ?? 0 },
80
- children: /* @__PURE__ */ jsxRuntime.jsx(
81
- Picker,
82
- {
83
- data: async () => (await import("@emoji-mart/data")).default,
84
- onEmojiSelect: (e) => {
85
- const textarea = textareaRef.current;
86
- if (!textarea) return;
87
- textComposer.insertText({ text: e.native });
88
- textarea.focus();
89
- if (props.closeOnEmojiSelect) {
90
- setDisplayPicker(false);
91
- }
92
- },
93
- ...props.pickerProps,
94
- style: { ...pickerStyle, "--shadow": "none" }
95
- }
96
- )
97
- }
98
- ),
99
- /* @__PURE__ */ jsxRuntime.jsx(
100
- useNotificationApi.Button,
101
- {
102
- appearance: "ghost",
103
- "aria-expanded": displayPicker,
104
- "aria-label": t("aria/Emoji picker"),
105
- circular: true,
106
- className: props.buttonClassName ?? defaultButtonClassName,
107
- disabled: isCooldownActive,
108
- onClick: () => setDisplayPicker((cv) => !cv),
109
- ref: setReferenceElement,
110
- size: "sm",
111
- type: "button",
112
- variant: "secondary",
113
- children: ButtonIconComponent && /* @__PURE__ */ jsxRuntime.jsx(ButtonIconComponent, {})
114
- }
115
- )
116
- ] });
128
+ var DEFAULT_OPTIONS = {
129
+ minChars: 1,
130
+ trigger: ":"
117
131
  };
118
- class EmojiSearchSource extends streamChat.BaseSearchSource {
119
- constructor(emojiSearchIndex, options) {
120
- super(options);
121
- this.type = "emoji";
122
- this.emojiSearchIndex = emojiSearchIndex;
123
- }
124
- async query(searchQuery) {
125
- if (searchQuery.length === 0) {
126
- return { items: [], next: null };
127
- }
128
- const emojis = await this.emojiSearchIndex.search(searchQuery) ?? [];
129
- return {
130
- items: emojis.filter(Boolean).slice(0, 7).map(({ emoticons = [], id, name, native, skins = [] }) => {
131
- const [firstSkin] = skins;
132
- return {
133
- emoticons,
134
- id,
135
- name,
136
- native: native ?? firstSkin.native
137
- };
138
- }),
139
- next: null
140
- // todo: generate cursor
141
- };
142
- }
143
- filterQueryResults(items) {
144
- return items.map((item) => ({
145
- ...item,
146
- ...streamChat.getTokenizedSuggestionDisplayName({
147
- displayName: item.id,
148
- searchToken: this.searchQuery
149
- })
150
- }));
151
- }
152
- }
153
- const DEFAULT_OPTIONS = { minChars: 1, trigger: ":" };
154
- const createTextComposerEmojiMiddleware = (emojiSearchIndex, options) => {
155
- const finalOptions = mergeWith(DEFAULT_OPTIONS, options ?? {});
156
- const emojiSearchSource = new EmojiSearchSource(emojiSearchIndex);
157
- emojiSearchSource.activate();
158
- return {
159
- id: "stream-io/emoji-middleware",
160
- // eslint-disable-next-line sort-keys
161
- handlers: {
162
- onChange: async ({ complete, forward, next, state }) => {
163
- if (!state.selection) return forward();
164
- const triggerWithToken = streamChat.getTriggerCharWithToken({
165
- acceptTrailingSpaces: false,
166
- text: state.text.slice(0, state.selection.end),
167
- trigger: finalOptions.trigger
168
- });
169
- const triggerWasRemoved = !triggerWithToken || triggerWithToken.length < finalOptions.minChars;
170
- if (triggerWasRemoved) {
171
- const hasSuggestionsForTrigger = state.suggestions?.trigger === finalOptions.trigger;
172
- const newState = { ...state };
173
- if (hasSuggestionsForTrigger && newState.suggestions) {
174
- delete newState.suggestions;
175
- }
176
- return next(newState);
177
- }
178
- const newSearchTriggerred = triggerWithToken && triggerWithToken === finalOptions.trigger;
179
- if (newSearchTriggerred) {
180
- emojiSearchSource.resetStateAndActivate();
181
- }
182
- const textWithReplacedWord = await streamChat.replaceWordWithEntity({
183
- caretPosition: state.selection.end,
184
- getEntityString: async (word) => {
185
- const { items } = await emojiSearchSource.query(word);
186
- const emoji = items.filter(Boolean).slice(0, 10).find(({ emoticons }) => !!emoticons?.includes(word));
187
- if (!emoji) return null;
188
- const [firstSkin] = emoji.skins ?? [];
189
- return emoji.native ?? firstSkin.native;
190
- },
191
- text: state.text
192
- });
193
- if (textWithReplacedWord !== state.text) {
194
- return complete({
195
- ...state,
196
- suggestions: void 0,
197
- // to prevent the TextComposerMiddlewareExecutor to run the first page query
198
- text: textWithReplacedWord
199
- });
200
- }
201
- return complete({
202
- ...state,
203
- suggestions: {
204
- query: triggerWithToken.slice(1),
205
- searchSource: emojiSearchSource,
206
- trigger: finalOptions.trigger
207
- }
208
- });
209
- },
210
- onSuggestionItemSelect: ({ complete, forward, state }) => {
211
- const { selectedSuggestion } = state.change ?? {};
212
- if (!selectedSuggestion || state.suggestions?.trigger !== finalOptions.trigger)
213
- return forward();
214
- emojiSearchSource.resetStateAndActivate();
215
- return complete({
216
- ...state,
217
- ...streamChat.insertItemWithTrigger({
218
- insertText: `${"native" in selectedSuggestion ? selectedSuggestion.native : ""} `,
219
- selection: state.selection,
220
- text: state.text,
221
- trigger: finalOptions.trigger
222
- }),
223
- suggestions: void 0
224
- // Clear suggestions after selection
225
- });
226
- }
227
- }
228
- };
132
+ /**
133
+ * TextComposer middleware for mentions
134
+ * Usage:
135
+ *
136
+ * const textComposer = new TextComposer(options);
137
+ *
138
+ * textComposer.use(new createTextComposerEmojiMiddleware(emojiSearchIndex, {
139
+ * minChars: 2
140
+ * }));
141
+ *
142
+ * @param emojiSearchIndex
143
+ * @param {{
144
+ * minChars: number;
145
+ * trigger: string;
146
+ * }} options
147
+ * @returns
148
+ */
149
+ var createTextComposerEmojiMiddleware = (emojiSearchIndex, options) => {
150
+ const finalOptions = (0, lodash_mergewith.default)(DEFAULT_OPTIONS, options ?? {});
151
+ const emojiSearchSource = new EmojiSearchSource(emojiSearchIndex);
152
+ emojiSearchSource.activate();
153
+ return {
154
+ id: "stream-io/emoji-middleware",
155
+ handlers: {
156
+ onChange: async ({ complete, forward, next, state }) => {
157
+ if (!state.selection) return forward();
158
+ const triggerWithToken = (0, stream_chat.getTriggerCharWithToken)({
159
+ acceptTrailingSpaces: false,
160
+ text: state.text.slice(0, state.selection.end),
161
+ trigger: finalOptions.trigger
162
+ });
163
+ if (!triggerWithToken || triggerWithToken.length < finalOptions.minChars) {
164
+ const hasSuggestionsForTrigger = state.suggestions?.trigger === finalOptions.trigger;
165
+ const newState = { ...state };
166
+ if (hasSuggestionsForTrigger && newState.suggestions) delete newState.suggestions;
167
+ return next(newState);
168
+ }
169
+ if (triggerWithToken && triggerWithToken === finalOptions.trigger) emojiSearchSource.resetStateAndActivate();
170
+ const textWithReplacedWord = await (0, stream_chat.replaceWordWithEntity)({
171
+ caretPosition: state.selection.end,
172
+ getEntityString: async (word) => {
173
+ const { items } = await emojiSearchSource.query(word);
174
+ const emoji = items.filter(Boolean).slice(0, 10).find(({ emoticons }) => !!emoticons?.includes(word));
175
+ if (!emoji) return null;
176
+ const [firstSkin] = emoji.skins ?? [];
177
+ return emoji.native ?? firstSkin.native;
178
+ },
179
+ text: state.text
180
+ });
181
+ if (textWithReplacedWord !== state.text) return complete({
182
+ ...state,
183
+ suggestions: void 0,
184
+ text: textWithReplacedWord
185
+ });
186
+ return complete({
187
+ ...state,
188
+ suggestions: {
189
+ query: triggerWithToken.slice(1),
190
+ searchSource: emojiSearchSource,
191
+ trigger: finalOptions.trigger
192
+ }
193
+ });
194
+ },
195
+ onSuggestionItemSelect: ({ complete, forward, state }) => {
196
+ const { selectedSuggestion } = state.change ?? {};
197
+ if (!selectedSuggestion || state.suggestions?.trigger !== finalOptions.trigger) return forward();
198
+ emojiSearchSource.resetStateAndActivate();
199
+ return complete({
200
+ ...state,
201
+ ...(0, stream_chat.insertItemWithTrigger)({
202
+ insertText: `${"native" in selectedSuggestion ? selectedSuggestion.native : ""} `,
203
+ selection: state.selection,
204
+ text: state.text,
205
+ trigger: finalOptions.trigger
206
+ }),
207
+ suggestions: void 0
208
+ });
209
+ }
210
+ }
211
+ };
229
212
  };
213
+ //#endregion
230
214
  exports.EmojiPicker = EmojiPicker;
231
215
  exports.createTextComposerEmojiMiddleware = createTextComposerEmojiMiddleware;
232
- //# sourceMappingURL=emojis.js.map
216
+
217
+ //# sourceMappingURL=emojis.js.map