stream-chat-react 14.11.1 → 14.12.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 (1102) hide show
  1. package/dist/cjs/{NotificationList.6abbee1c.js → NotificationList.4ce251ea.js} +127 -34
  2. package/dist/cjs/NotificationList.4ce251ea.js.map +1 -0
  3. package/dist/cjs/{ReactPlayerWrapper.a94a0cd1.js → ReactPlayerWrapper.7cc7b0d8.js} +4 -4
  4. package/dist/cjs/{ReactPlayerWrapper.a94a0cd1.js.map → ReactPlayerWrapper.7cc7b0d8.js.map} +1 -1
  5. package/dist/cjs/channel-detail.js +2 -2
  6. package/dist/cjs/emojis.js +2 -2
  7. package/dist/cjs/index.js +232 -55
  8. package/dist/cjs/index.js.map +1 -1
  9. package/dist/cjs/{useChannelHeaderOnlineStatus.7e17671e.js → useChannelHeaderOnlineStatus.64c443f5.js} +2 -2
  10. package/dist/cjs/{useChannelHeaderOnlineStatus.7e17671e.js.map → useChannelHeaderOnlineStatus.64c443f5.js.map} +1 -1
  11. package/dist/cjs/{useInertWhenHidden.22151beb.js → useInertWhenHidden.1a2a6a2b.js} +200 -53
  12. package/dist/cjs/useInertWhenHidden.1a2a6a2b.js.map +1 -0
  13. package/dist/css/index.css +71 -12
  14. package/dist/css/index.css.map +1 -1
  15. package/dist/es/_virtual/_rolldown/runtime.mjs +13 -0
  16. package/dist/es/a11y/a11yUtils.mjs +42 -0
  17. package/dist/es/a11y/a11yUtils.mjs.map +1 -0
  18. package/dist/es/a11y/accessibleLabel.mjs +27 -0
  19. package/dist/es/a11y/accessibleLabel.mjs.map +1 -0
  20. package/dist/es/a11y/hooks/useAriaIdentifiers.mjs +25 -0
  21. package/dist/es/a11y/hooks/useAriaIdentifiers.mjs.map +1 -0
  22. package/dist/es/a11y/hooks/useListboxKeyboardNavigation.mjs +85 -0
  23. package/dist/es/a11y/hooks/useListboxKeyboardNavigation.mjs.map +1 -0
  24. package/dist/es/a11y/hooks/useResolvedModalAriaProps.mjs +32 -0
  25. package/dist/es/a11y/hooks/useResolvedModalAriaProps.mjs.map +1 -0
  26. package/dist/es/a11y/hooks/useVirtualizedListboxKeyboardNavigation.mjs +68 -0
  27. package/dist/es/a11y/hooks/useVirtualizedListboxKeyboardNavigation.mjs.map +1 -0
  28. package/dist/es/channel-detail.mjs +29 -3020
  29. package/dist/es/components/AIStateIndicator/AIStateIndicator.mjs +26 -0
  30. package/dist/es/components/AIStateIndicator/AIStateIndicator.mjs.map +1 -0
  31. package/dist/es/components/AIStateIndicator/hooks/useAIState.mjs +44 -0
  32. package/dist/es/components/AIStateIndicator/hooks/useAIState.mjs.map +1 -0
  33. package/dist/es/components/Accessibility/AriaLiveAnnouncerProvider.mjs +144 -0
  34. package/dist/es/components/Accessibility/AriaLiveAnnouncerProvider.mjs.map +1 -0
  35. package/dist/es/components/Accessibility/AriaLiveOutlet.mjs +58 -0
  36. package/dist/es/components/Accessibility/AriaLiveOutlet.mjs.map +1 -0
  37. package/dist/es/components/Accessibility/AriaLiveOutletContext.mjs +8 -0
  38. package/dist/es/components/Accessibility/AriaLiveOutletContext.mjs.map +1 -0
  39. package/dist/es/components/Accessibility/NotificationAnnouncer.mjs +87 -0
  40. package/dist/es/components/Accessibility/NotificationAnnouncer.mjs.map +1 -0
  41. package/dist/es/components/Accessibility/hooks/useAudioPlaybackChangeAnnouncements.mjs +20 -0
  42. package/dist/es/components/Accessibility/hooks/useAudioPlaybackChangeAnnouncements.mjs.map +1 -0
  43. package/dist/es/components/Accessibility/hooks/useFocusReturn.mjs +37 -0
  44. package/dist/es/components/Accessibility/hooks/useFocusReturn.mjs.map +1 -0
  45. package/dist/es/components/Accessibility/hooks/useIncomingMessageAnnouncements.mjs +84 -0
  46. package/dist/es/components/Accessibility/hooks/useIncomingMessageAnnouncements.mjs.map +1 -0
  47. package/dist/es/components/Accessibility/hooks/useInertWhenHidden.mjs +85 -0
  48. package/dist/es/components/Accessibility/hooks/useInertWhenHidden.mjs.map +1 -0
  49. package/dist/es/components/Accessibility/hooks/useInteractionAnnouncements.mjs +155 -0
  50. package/dist/es/components/Accessibility/hooks/useInteractionAnnouncements.mjs.map +1 -0
  51. package/dist/es/components/Accessibility/scheduling/useAnnouncementQueue.mjs +43 -0
  52. package/dist/es/components/Accessibility/scheduling/useAnnouncementQueue.mjs.map +1 -0
  53. package/dist/es/components/Accessibility/scheduling/useDebouncedAnnounce.mjs +78 -0
  54. package/dist/es/components/Accessibility/scheduling/useDebouncedAnnounce.mjs.map +1 -0
  55. package/dist/es/components/Accessibility/scheduling/useSettledAnnouncement.mjs +90 -0
  56. package/dist/es/components/Accessibility/scheduling/useSettledAnnouncement.mjs.map +1 -0
  57. package/dist/es/components/Accessibility/useAriaLiveAnnouncer.mjs +16 -0
  58. package/dist/es/components/Accessibility/useAriaLiveAnnouncer.mjs.map +1 -0
  59. package/dist/es/components/Attachment/Attachment.mjs +74 -0
  60. package/dist/es/components/Attachment/Attachment.mjs.map +1 -0
  61. package/dist/es/components/Attachment/AttachmentActions.mjs +109 -0
  62. package/dist/es/components/Attachment/AttachmentActions.mjs.map +1 -0
  63. package/dist/es/components/Attachment/AttachmentContainer.mjs +265 -0
  64. package/dist/es/components/Attachment/AttachmentContainer.mjs.map +1 -0
  65. package/dist/es/components/Attachment/Audio.mjs +104 -0
  66. package/dist/es/components/Attachment/Audio.mjs.map +1 -0
  67. package/dist/es/components/Attachment/FileAttachment.mjs +47 -0
  68. package/dist/es/components/Attachment/FileAttachment.mjs.map +1 -0
  69. package/dist/es/components/Attachment/Geolocation.mjs +77 -0
  70. package/dist/es/components/Attachment/Geolocation.mjs.map +1 -0
  71. package/dist/es/components/Attachment/Giphy.mjs +62 -0
  72. package/dist/es/components/Attachment/Giphy.mjs.map +1 -0
  73. package/dist/es/components/Attachment/Image.mjs +19 -0
  74. package/dist/es/components/Attachment/Image.mjs.map +1 -0
  75. package/dist/es/components/Attachment/LinkPreview/Card.mjs +93 -0
  76. package/dist/es/components/Attachment/LinkPreview/Card.mjs.map +1 -0
  77. package/dist/es/components/Attachment/LinkPreview/UnableToRenderCard.mjs +22 -0
  78. package/dist/es/components/Attachment/LinkPreview/UnableToRenderCard.mjs.map +1 -0
  79. package/dist/es/components/Attachment/ModalGallery.mjs +166 -0
  80. package/dist/es/components/Attachment/ModalGallery.mjs.map +1 -0
  81. package/dist/es/components/Attachment/UnsupportedAttachment.mjs +25 -0
  82. package/dist/es/components/Attachment/UnsupportedAttachment.mjs.map +1 -0
  83. package/dist/es/components/Attachment/VideoAttachment.mjs +56 -0
  84. package/dist/es/components/Attachment/VideoAttachment.mjs.map +1 -0
  85. package/dist/es/components/Attachment/VisibilityDisclaimer.mjs +17 -0
  86. package/dist/es/components/Attachment/VisibilityDisclaimer.mjs.map +1 -0
  87. package/dist/es/components/Attachment/VoiceRecording.mjs +134 -0
  88. package/dist/es/components/Attachment/VoiceRecording.mjs.map +1 -0
  89. package/dist/es/components/Attachment/attachment-sizing.mjs +73 -0
  90. package/dist/es/components/Attachment/attachment-sizing.mjs.map +1 -0
  91. package/dist/es/components/Attachment/audioSampling.mjs +74 -0
  92. package/dist/es/components/Attachment/audioSampling.mjs.map +1 -0
  93. package/dist/es/components/Attachment/components/AttachmentUploadProgressIndicator.mjs +38 -0
  94. package/dist/es/components/Attachment/components/AttachmentUploadProgressIndicator.mjs.map +1 -0
  95. package/dist/es/components/Attachment/components/DownloadButton.mjs +35 -0
  96. package/dist/es/components/Attachment/components/DownloadButton.mjs.map +1 -0
  97. package/dist/es/components/Attachment/components/FileSizeIndicator.mjs +17 -0
  98. package/dist/es/components/Attachment/components/FileSizeIndicator.mjs.map +1 -0
  99. package/dist/es/components/Attachment/giphyAccessibility.mjs +15 -0
  100. package/dist/es/components/Attachment/giphyAccessibility.mjs.map +1 -0
  101. package/dist/es/components/Attachment/hooks/useAttachmentUploadState.mjs +106 -0
  102. package/dist/es/components/Attachment/hooks/useAttachmentUploadState.mjs.map +1 -0
  103. package/dist/es/components/Attachment/hooks/useLocalVideoDimensions.mjs +79 -0
  104. package/dist/es/components/Attachment/hooks/useLocalVideoDimensions.mjs.map +1 -0
  105. package/dist/es/components/Attachment/icons.mjs +13 -0
  106. package/dist/es/components/Attachment/icons.mjs.map +1 -0
  107. package/dist/es/components/Attachment/utils.mjs +41 -0
  108. package/dist/es/components/Attachment/utils.mjs.map +1 -0
  109. package/dist/es/components/AudioPlayback/AudioPlayer.mjs +457 -0
  110. package/dist/es/components/AudioPlayback/AudioPlayer.mjs.map +1 -0
  111. package/dist/es/components/AudioPlayback/AudioPlayerPool.mjs +109 -0
  112. package/dist/es/components/AudioPlayback/AudioPlayerPool.mjs.map +1 -0
  113. package/dist/es/components/AudioPlayback/WithAudioPlayback.mjs +72 -0
  114. package/dist/es/components/AudioPlayback/WithAudioPlayback.mjs.map +1 -0
  115. package/dist/es/components/AudioPlayback/components/DurationDisplay.mjs +33 -0
  116. package/dist/es/components/AudioPlayback/components/DurationDisplay.mjs.map +1 -0
  117. package/dist/es/components/AudioPlayback/components/PlaybackRateButton.mjs +15 -0
  118. package/dist/es/components/AudioPlayback/components/PlaybackRateButton.mjs.map +1 -0
  119. package/dist/es/components/AudioPlayback/components/ProgressBar.mjs +56 -0
  120. package/dist/es/components/AudioPlayback/components/ProgressBar.mjs.map +1 -0
  121. package/dist/es/components/AudioPlayback/components/WaveProgressBar.mjs +107 -0
  122. package/dist/es/components/AudioPlayback/components/WaveProgressBar.mjs.map +1 -0
  123. package/dist/es/components/AudioPlayback/components/formatTime.mjs +14 -0
  124. package/dist/es/components/AudioPlayback/components/formatTime.mjs.map +1 -0
  125. package/dist/es/components/AudioPlayback/components/keyboardSeek.mjs +36 -0
  126. package/dist/es/components/AudioPlayback/components/keyboardSeek.mjs.map +1 -0
  127. package/dist/es/components/AudioPlayback/components/progressBarA11y.mjs +19 -0
  128. package/dist/es/components/AudioPlayback/components/progressBarA11y.mjs.map +1 -0
  129. package/dist/es/components/AudioPlayback/components/useInteractiveProgressBar.mjs +77 -0
  130. package/dist/es/components/AudioPlayback/components/useInteractiveProgressBar.mjs.map +1 -0
  131. package/dist/es/components/AudioPlayback/plugins/AudioPlayerNotificationsPlugin.mjs +33 -0
  132. package/dist/es/components/AudioPlayback/plugins/AudioPlayerNotificationsPlugin.mjs.map +1 -0
  133. package/dist/es/components/Avatar/Avatar.mjs +62 -0
  134. package/dist/es/components/Avatar/Avatar.mjs.map +1 -0
  135. package/dist/es/components/Avatar/AvatarStack.mjs +32 -0
  136. package/dist/es/components/Avatar/AvatarStack.mjs.map +1 -0
  137. package/dist/es/components/Avatar/ChannelAvatar.mjs +25 -0
  138. package/dist/es/components/Avatar/ChannelAvatar.mjs.map +1 -0
  139. package/dist/es/components/Avatar/GroupAvatar.mjs +53 -0
  140. package/dist/es/components/Avatar/GroupAvatar.mjs.map +1 -0
  141. package/dist/es/components/Avatar/utils.mjs +10 -0
  142. package/dist/es/components/Avatar/utils.mjs.map +1 -0
  143. package/dist/es/components/Badge/Badge.mjs +28 -0
  144. package/dist/es/components/Badge/Badge.mjs.map +1 -0
  145. package/dist/es/components/Badge/MediaBadge.mjs +20 -0
  146. package/dist/es/components/Badge/MediaBadge.mjs.map +1 -0
  147. package/dist/es/components/BaseImage/BaseImage.mjs +35 -0
  148. package/dist/es/components/BaseImage/BaseImage.mjs.map +1 -0
  149. package/dist/es/components/BaseImage/ImagePlaceholder.mjs +21 -0
  150. package/dist/es/components/BaseImage/ImagePlaceholder.mjs.map +1 -0
  151. package/dist/es/components/BaseImage/toBaseImageDescriptors.mjs +57 -0
  152. package/dist/es/components/BaseImage/toBaseImageDescriptors.mjs.map +1 -0
  153. package/dist/es/components/Button/Button.mjs +36 -0
  154. package/dist/es/components/Button/Button.mjs.map +1 -0
  155. package/dist/es/components/Button/PlayButton.mjs +26 -0
  156. package/dist/es/components/Button/PlayButton.mjs.map +1 -0
  157. package/dist/es/components/Channel/Channel.mjs +752 -0
  158. package/dist/es/components/Channel/Channel.mjs.map +1 -0
  159. package/dist/es/components/Channel/channelState.mjs +195 -0
  160. package/dist/es/components/Channel/channelState.mjs.map +1 -0
  161. package/dist/es/components/Channel/constants.mjs +6 -0
  162. package/dist/es/components/Channel/constants.mjs.map +1 -0
  163. package/dist/es/components/Channel/hooks/useChannelContainerClasses.mjs +20 -0
  164. package/dist/es/components/Channel/hooks/useChannelContainerClasses.mjs.map +1 -0
  165. package/dist/es/components/Channel/hooks/useCreateChannelStateContext.mjs +86 -0
  166. package/dist/es/components/Channel/hooks/useCreateChannelStateContext.mjs.map +1 -0
  167. package/dist/es/components/Channel/hooks/useCreateTypingContext.mjs +10 -0
  168. package/dist/es/components/Channel/hooks/useCreateTypingContext.mjs.map +1 -0
  169. package/dist/es/components/Channel/hooks/useEditMessageHandler.mjs +13 -0
  170. package/dist/es/components/Channel/hooks/useEditMessageHandler.mjs.map +1 -0
  171. package/dist/es/components/Channel/hooks/useIsMounted.mjs +16 -0
  172. package/dist/es/components/Channel/hooks/useIsMounted.mjs.map +1 -0
  173. package/dist/es/components/Channel/hooks/useMentionsHandlers.mjs +18 -0
  174. package/dist/es/components/Channel/hooks/useMentionsHandlers.mjs.map +1 -0
  175. package/dist/es/components/Channel/utils.mjs +156 -0
  176. package/dist/es/components/Channel/utils.mjs.map +1 -0
  177. package/dist/es/components/ChannelHeader/ChannelHeader.mjs +70 -0
  178. package/dist/es/components/ChannelHeader/ChannelHeader.mjs.map +1 -0
  179. package/dist/es/components/ChannelHeader/hooks/useChannelHasMembersOnline.mjs +51 -0
  180. package/dist/es/components/ChannelHeader/hooks/useChannelHasMembersOnline.mjs.map +1 -0
  181. package/dist/es/components/ChannelHeader/hooks/useChannelHeaderOnlineStatus.mjs +33 -0
  182. package/dist/es/components/ChannelHeader/hooks/useChannelHeaderOnlineStatus.mjs.map +1 -0
  183. package/dist/es/components/ChannelList/ChannelList.mjs +143 -0
  184. package/dist/es/components/ChannelList/ChannelList.mjs.map +1 -0
  185. package/dist/es/components/ChannelList/ChannelListHeader.mjs +22 -0
  186. package/dist/es/components/ChannelList/ChannelListHeader.mjs.map +1 -0
  187. package/dist/es/components/ChannelList/ChannelListUI.mjs +35 -0
  188. package/dist/es/components/ChannelList/ChannelListUI.mjs.map +1 -0
  189. package/dist/es/components/ChannelList/hooks/useChannelListKeyboardNavigation.mjs +82 -0
  190. package/dist/es/components/ChannelList/hooks/useChannelListKeyboardNavigation.mjs.map +1 -0
  191. package/dist/es/components/ChannelList/hooks/useChannelListShape.mjs +310 -0
  192. package/dist/es/components/ChannelList/hooks/useChannelListShape.mjs.map +1 -0
  193. package/dist/es/components/ChannelList/hooks/useChannelMembersState.mjs +23 -0
  194. package/dist/es/components/ChannelList/hooks/useChannelMembersState.mjs.map +1 -0
  195. package/dist/es/components/ChannelList/hooks/useChannelMembershipState.mjs +15 -0
  196. package/dist/es/components/ChannelList/hooks/useChannelMembershipState.mjs.map +1 -0
  197. package/dist/es/components/ChannelList/hooks/useConnectionRecoveredListener.mjs +19 -0
  198. package/dist/es/components/ChannelList/hooks/useConnectionRecoveredListener.mjs.map +1 -0
  199. package/dist/es/components/ChannelList/hooks/usePaginatedChannels.mjs +110 -0
  200. package/dist/es/components/ChannelList/hooks/usePaginatedChannels.mjs.map +1 -0
  201. package/dist/es/components/ChannelList/hooks/useSelectedChannelState.mjs +24 -0
  202. package/dist/es/components/ChannelList/hooks/useSelectedChannelState.mjs.map +1 -0
  203. package/dist/es/components/ChannelList/utils.mjs +86 -0
  204. package/dist/es/components/ChannelList/utils.mjs.map +1 -0
  205. package/dist/es/components/ChannelListItem/ChannelListItem.mjs +116 -0
  206. package/dist/es/components/ChannelListItem/ChannelListItem.mjs.map +1 -0
  207. package/dist/es/components/ChannelListItem/ChannelListItemActionButtons.defaults.mjs +432 -0
  208. package/dist/es/components/ChannelListItem/ChannelListItemActionButtons.defaults.mjs.map +1 -0
  209. package/dist/es/components/ChannelListItem/ChannelListItemActionButtons.mjs +67 -0
  210. package/dist/es/components/ChannelListItem/ChannelListItemActionButtons.mjs.map +1 -0
  211. package/dist/es/components/ChannelListItem/ChannelListItemTimestamp.mjs +30 -0
  212. package/dist/es/components/ChannelListItem/ChannelListItemTimestamp.mjs.map +1 -0
  213. package/dist/es/components/ChannelListItem/ChannelListItemUI.mjs +118 -0
  214. package/dist/es/components/ChannelListItem/ChannelListItemUI.mjs.map +1 -0
  215. package/dist/es/components/ChannelListItem/hooks/useChannelDisplayName.mjs +56 -0
  216. package/dist/es/components/ChannelListItem/hooks/useChannelDisplayName.mjs.map +1 -0
  217. package/dist/es/components/ChannelListItem/hooks/useChannelPreviewInfo.mjs +51 -0
  218. package/dist/es/components/ChannelListItem/hooks/useChannelPreviewInfo.mjs.map +1 -0
  219. package/dist/es/components/ChannelListItem/hooks/useIsChannelMuted.mjs +33 -0
  220. package/dist/es/components/ChannelListItem/hooks/useIsChannelMuted.mjs.map +1 -0
  221. package/dist/es/components/ChannelListItem/hooks/useIsUserMuted.mjs +11 -0
  222. package/dist/es/components/ChannelListItem/hooks/useIsUserMuted.mjs.map +1 -0
  223. package/dist/es/components/ChannelListItem/hooks/useMessageDeliveryStatus.mjs +68 -0
  224. package/dist/es/components/ChannelListItem/hooks/useMessageDeliveryStatus.mjs.map +1 -0
  225. package/dist/es/components/ChannelListItem/utils.a11y.mjs +121 -0
  226. package/dist/es/components/ChannelListItem/utils.a11y.mjs.map +1 -0
  227. package/dist/es/components/ChannelListItem/utils.mjs +195 -0
  228. package/dist/es/components/ChannelListItem/utils.mjs.map +1 -0
  229. package/dist/es/components/Chat/Chat.mjs +88 -0
  230. package/dist/es/components/Chat/Chat.mjs.map +1 -0
  231. package/dist/es/components/Chat/hooks/useChannelsQueryState.mjs +16 -0
  232. package/dist/es/components/Chat/hooks/useChannelsQueryState.mjs.map +1 -0
  233. package/dist/es/components/Chat/hooks/useChat.mjs +86 -0
  234. package/dist/es/components/Chat/hooks/useChat.mjs.map +1 -0
  235. package/dist/es/components/Chat/hooks/useCreateChatClient.mjs +36 -0
  236. package/dist/es/components/Chat/hooks/useCreateChatClient.mjs.map +1 -0
  237. package/dist/es/components/Chat/hooks/useCreateChatContext.mjs +38 -0
  238. package/dist/es/components/Chat/hooks/useCreateChatContext.mjs.map +1 -0
  239. package/dist/es/components/Chat/hooks/useReportLostConnectionSystemNotification.mjs +51 -0
  240. package/dist/es/components/Chat/hooks/useReportLostConnectionSystemNotification.mjs.map +1 -0
  241. package/dist/es/components/Chat/hooks/useSplitActionSet.mjs +21 -0
  242. package/dist/es/components/Chat/hooks/useSplitActionSet.mjs.map +1 -0
  243. package/dist/es/components/ChatView/ChatView.a11y.utility.mjs +13 -0
  244. package/dist/es/components/ChatView/ChatView.a11y.utility.mjs.map +1 -0
  245. package/dist/es/components/ChatView/ChatView.mjs +224 -0
  246. package/dist/es/components/ChatView/ChatView.mjs.map +1 -0
  247. package/dist/es/components/DateSeparator/DateSeparator.mjs +36 -0
  248. package/dist/es/components/DateSeparator/DateSeparator.mjs.map +1 -0
  249. package/dist/es/components/Dialog/components/Alert.mjs +53 -0
  250. package/dist/es/components/Dialog/components/Alert.mjs.map +1 -0
  251. package/dist/es/components/Dialog/components/Callout.mjs +57 -0
  252. package/dist/es/components/Dialog/components/Callout.mjs.map +1 -0
  253. package/dist/es/components/Dialog/components/ContextMenu.mjs +550 -0
  254. package/dist/es/components/Dialog/components/ContextMenu.mjs.map +1 -0
  255. package/dist/es/components/Dialog/components/Prompt.mjs +112 -0
  256. package/dist/es/components/Dialog/components/Prompt.mjs.map +1 -0
  257. package/dist/es/components/Dialog/components/Viewer.mjs +100 -0
  258. package/dist/es/components/Dialog/components/Viewer.mjs.map +1 -0
  259. package/dist/es/components/Dialog/hooks/useDialog.mjs +53 -0
  260. package/dist/es/components/Dialog/hooks/useDialog.mjs.map +1 -0
  261. package/dist/es/components/Dialog/hooks/usePopoverPosition.mjs +49 -0
  262. package/dist/es/components/Dialog/hooks/usePopoverPosition.mjs.map +1 -0
  263. package/dist/es/components/Dialog/service/DialogAnchor.mjs +175 -0
  264. package/dist/es/components/Dialog/service/DialogAnchor.mjs.map +1 -0
  265. package/dist/es/components/Dialog/service/DialogManager.mjs +169 -0
  266. package/dist/es/components/Dialog/service/DialogManager.mjs.map +1 -0
  267. package/dist/es/components/Dialog/service/DialogPortal.mjs +63 -0
  268. package/dist/es/components/Dialog/service/DialogPortal.mjs.map +1 -0
  269. package/dist/es/components/DragAndDrop/DragAndDropContainer.mjs +90 -0
  270. package/dist/es/components/DragAndDrop/DragAndDropContainer.mjs.map +1 -0
  271. package/dist/es/components/EmptyStateIndicator/EmptyStateIndicator.mjs +38 -0
  272. package/dist/es/components/EmptyStateIndicator/EmptyStateIndicator.mjs.map +1 -0
  273. package/dist/es/components/EventComponent/EventComponent.mjs +27 -0
  274. package/dist/es/components/EventComponent/EventComponent.mjs.map +1 -0
  275. package/dist/es/components/FileIcon/FileIcon.mjs +43 -0
  276. package/dist/es/components/FileIcon/FileIcon.mjs.map +1 -0
  277. package/dist/es/components/FileIcon/FileIconSet.mjs +407 -0
  278. package/dist/es/components/FileIcon/FileIconSet.mjs.map +1 -0
  279. package/dist/es/components/FileIcon/iconMap.mjs +41 -0
  280. package/dist/es/components/FileIcon/iconMap.mjs.map +1 -0
  281. package/dist/es/components/FileIcon/mimeTypes.mjs +242 -0
  282. package/dist/es/components/FileIcon/mimeTypes.mjs.map +1 -0
  283. package/dist/es/components/Form/Checkbox.mjs +15 -0
  284. package/dist/es/components/Form/Checkbox.mjs.map +1 -0
  285. package/dist/es/components/Form/Dropdown.mjs +132 -0
  286. package/dist/es/components/Form/Dropdown.mjs.map +1 -0
  287. package/dist/es/components/Form/FieldError.mjs +13 -0
  288. package/dist/es/components/Form/FieldError.mjs.map +1 -0
  289. package/dist/es/components/Form/NumericInput.mjs +125 -0
  290. package/dist/es/components/Form/NumericInput.mjs.map +1 -0
  291. package/dist/es/components/Form/SwitchField.mjs +103 -0
  292. package/dist/es/components/Form/SwitchField.mjs.map +1 -0
  293. package/dist/es/components/Form/TextInput.mjs +113 -0
  294. package/dist/es/components/Form/TextInput.mjs.map +1 -0
  295. package/dist/es/components/Form/TextInputFieldSet.mjs +21 -0
  296. package/dist/es/components/Form/TextInputFieldSet.mjs.map +1 -0
  297. package/dist/es/components/Form/hooks/useFormState.mjs +54 -0
  298. package/dist/es/components/Form/hooks/useFormState.mjs.map +1 -0
  299. package/dist/es/components/Gallery/Gallery.mjs +60 -0
  300. package/dist/es/components/Gallery/Gallery.mjs.map +1 -0
  301. package/dist/es/components/Gallery/GalleryContext.mjs +21 -0
  302. package/dist/es/components/Gallery/GalleryContext.mjs.map +1 -0
  303. package/dist/es/components/Gallery/GalleryHeader.mjs +65 -0
  304. package/dist/es/components/Gallery/GalleryHeader.mjs.map +1 -0
  305. package/dist/es/components/Gallery/GalleryUI.mjs +206 -0
  306. package/dist/es/components/Gallery/GalleryUI.mjs.map +1 -0
  307. package/dist/es/components/Icons/BaseIcon.mjs +20 -0
  308. package/dist/es/components/Icons/BaseIcon.mjs.map +1 -0
  309. package/dist/es/components/Icons/createIcon.mjs +23 -0
  310. package/dist/es/components/Icons/createIcon.mjs.map +1 -0
  311. package/dist/es/components/Icons/icons.mjs +802 -0
  312. package/dist/es/components/Icons/icons.mjs.map +1 -0
  313. package/dist/es/components/InfiniteScrollPaginator/InfiniteScroll.mjs +81 -0
  314. package/dist/es/components/InfiniteScrollPaginator/InfiniteScroll.mjs.map +1 -0
  315. package/dist/es/components/InfiniteScrollPaginator/InfiniteScrollPaginator.mjs +73 -0
  316. package/dist/es/components/InfiniteScrollPaginator/InfiniteScrollPaginator.mjs.map +1 -0
  317. package/dist/es/components/InfiniteScrollPaginator/hooks/useCursorPaginator.mjs +47 -0
  318. package/dist/es/components/InfiniteScrollPaginator/hooks/useCursorPaginator.mjs.map +1 -0
  319. package/dist/es/components/ListItemLayout/ListItemLayout.mjs +62 -0
  320. package/dist/es/components/ListItemLayout/ListItemLayout.mjs.map +1 -0
  321. package/dist/es/components/LoadMore/LoadMoreButton.mjs +28 -0
  322. package/dist/es/components/LoadMore/LoadMoreButton.mjs.map +1 -0
  323. package/dist/es/components/LoadMore/LoadMorePaginator.mjs +20 -0
  324. package/dist/es/components/LoadMore/LoadMorePaginator.mjs.map +1 -0
  325. package/dist/es/components/Loading/AttachmentUploadedSizeIndicator.mjs +33 -0
  326. package/dist/es/components/Loading/AttachmentUploadedSizeIndicator.mjs.map +1 -0
  327. package/dist/es/components/Loading/LoadingChannel.mjs +59 -0
  328. package/dist/es/components/Loading/LoadingChannel.mjs.map +1 -0
  329. package/dist/es/components/Loading/LoadingChannels.mjs +28 -0
  330. package/dist/es/components/Loading/LoadingChannels.mjs.map +1 -0
  331. package/dist/es/components/Loading/LoadingErrorIndicator.mjs +17 -0
  332. package/dist/es/components/Loading/LoadingErrorIndicator.mjs.map +1 -0
  333. package/dist/es/components/Loading/LoadingIndicator.mjs +15 -0
  334. package/dist/es/components/Loading/LoadingIndicator.mjs.map +1 -0
  335. package/dist/es/components/Loading/UploadProgressIndicator.mjs +15 -0
  336. package/dist/es/components/Loading/UploadProgressIndicator.mjs.map +1 -0
  337. package/dist/es/components/Loading/UploadedSizeIndicator.mjs +22 -0
  338. package/dist/es/components/Loading/UploadedSizeIndicator.mjs.map +1 -0
  339. package/dist/es/components/Loading/progress-indicators.mjs +50 -0
  340. package/dist/es/components/Loading/progress-indicators.mjs.map +1 -0
  341. package/dist/es/components/Location/ShareLocationDialog.mjs +206 -0
  342. package/dist/es/components/Location/ShareLocationDialog.mjs.map +1 -0
  343. package/dist/es/components/Location/hooks/useLiveLocationSharingManager.mjs +57 -0
  344. package/dist/es/components/Location/hooks/useLiveLocationSharingManager.mjs.map +1 -0
  345. package/dist/es/components/MediaRecorder/AudioRecorder/AudioRecorder.mjs +32 -0
  346. package/dist/es/components/MediaRecorder/AudioRecorder/AudioRecorder.mjs.map +1 -0
  347. package/dist/es/components/MediaRecorder/AudioRecorder/AudioRecorderRecordingControls.mjs +77 -0
  348. package/dist/es/components/MediaRecorder/AudioRecorder/AudioRecorderRecordingControls.mjs.map +1 -0
  349. package/dist/es/components/MediaRecorder/AudioRecorder/AudioRecordingButtonWithNotification.mjs +58 -0
  350. package/dist/es/components/MediaRecorder/AudioRecorder/AudioRecordingButtonWithNotification.mjs.map +1 -0
  351. package/dist/es/components/MediaRecorder/AudioRecorder/AudioRecordingPlayback.mjs +71 -0
  352. package/dist/es/components/MediaRecorder/AudioRecorder/AudioRecordingPlayback.mjs.map +1 -0
  353. package/dist/es/components/MediaRecorder/AudioRecorder/AudioRecordingPreview.mjs +65 -0
  354. package/dist/es/components/MediaRecorder/AudioRecorder/AudioRecordingPreview.mjs.map +1 -0
  355. package/dist/es/components/MediaRecorder/AudioRecorder/RecordingTimer.mjs +13 -0
  356. package/dist/es/components/MediaRecorder/AudioRecorder/RecordingTimer.mjs.map +1 -0
  357. package/dist/es/components/MediaRecorder/AudioRecorder/hooks/useTimeElapsed.mjs +40 -0
  358. package/dist/es/components/MediaRecorder/AudioRecorder/hooks/useTimeElapsed.mjs.map +1 -0
  359. package/dist/es/components/MediaRecorder/AudioRecorder/recordingStateIdentity.mjs +8 -0
  360. package/dist/es/components/MediaRecorder/AudioRecorder/recordingStateIdentity.mjs.map +1 -0
  361. package/dist/es/components/MediaRecorder/RecordingPermissionDeniedNotification.mjs +31 -0
  362. package/dist/es/components/MediaRecorder/RecordingPermissionDeniedNotification.mjs.map +1 -0
  363. package/dist/es/components/MediaRecorder/classes/AmplitudeRecorder.mjs +75 -0
  364. package/dist/es/components/MediaRecorder/classes/AmplitudeRecorder.mjs.map +1 -0
  365. package/dist/es/components/MediaRecorder/classes/BrowserPermission.mjs +62 -0
  366. package/dist/es/components/MediaRecorder/classes/BrowserPermission.mjs.map +1 -0
  367. package/dist/es/components/MediaRecorder/classes/MediaRecorderController.mjs +237 -0
  368. package/dist/es/components/MediaRecorder/classes/MediaRecorderController.mjs.map +1 -0
  369. package/dist/es/components/MediaRecorder/hooks/useMediaRecorder.mjs +79 -0
  370. package/dist/es/components/MediaRecorder/hooks/useMediaRecorder.mjs.map +1 -0
  371. package/dist/es/components/MediaRecorder/observable/BehaviorSubject.mjs +27 -0
  372. package/dist/es/components/MediaRecorder/observable/BehaviorSubject.mjs.map +1 -0
  373. package/dist/es/components/MediaRecorder/observable/Observable.mjs +23 -0
  374. package/dist/es/components/MediaRecorder/observable/Observable.mjs.map +1 -0
  375. package/dist/es/components/MediaRecorder/observable/Observer.mjs +8 -0
  376. package/dist/es/components/MediaRecorder/observable/Observer.mjs.map +1 -0
  377. package/dist/es/components/MediaRecorder/observable/Subject.mjs +54 -0
  378. package/dist/es/components/MediaRecorder/observable/Subject.mjs.map +1 -0
  379. package/dist/es/components/MediaRecorder/observable/Subscription.mjs +15 -0
  380. package/dist/es/components/MediaRecorder/observable/Subscription.mjs.map +1 -0
  381. package/dist/es/components/MediaRecorder/transcode/audioProcessing.mjs +34 -0
  382. package/dist/es/components/MediaRecorder/transcode/audioProcessing.mjs.map +1 -0
  383. package/dist/es/components/MediaRecorder/transcode/index.mjs +12 -0
  384. package/dist/es/components/MediaRecorder/transcode/index.mjs.map +1 -0
  385. package/dist/es/components/MediaRecorder/transcode/wav.mjs +99 -0
  386. package/dist/es/components/MediaRecorder/transcode/wav.mjs.map +1 -0
  387. package/dist/es/components/Message/Message.mjs +154 -0
  388. package/dist/es/components/Message/Message.mjs.map +1 -0
  389. package/dist/es/components/Message/MessageAlsoSentInChannelIndicator.mjs +79 -0
  390. package/dist/es/components/Message/MessageAlsoSentInChannelIndicator.mjs.map +1 -0
  391. package/dist/es/components/Message/MessageBlocked.mjs +27 -0
  392. package/dist/es/components/Message/MessageBlocked.mjs.map +1 -0
  393. package/dist/es/components/Message/MessageBubble.mjs +12 -0
  394. package/dist/es/components/Message/MessageBubble.mjs.map +1 -0
  395. package/dist/es/components/Message/MessageDeletedBubble.mjs +21 -0
  396. package/dist/es/components/Message/MessageDeletedBubble.mjs.map +1 -0
  397. package/dist/es/components/Message/MessageEditedIndicator.mjs +41 -0
  398. package/dist/es/components/Message/MessageEditedIndicator.mjs.map +1 -0
  399. package/dist/es/components/Message/MessageRepliesCountButton.mjs +37 -0
  400. package/dist/es/components/Message/MessageRepliesCountButton.mjs.map +1 -0
  401. package/dist/es/components/Message/MessageStatus.mjs +85 -0
  402. package/dist/es/components/Message/MessageStatus.mjs.map +1 -0
  403. package/dist/es/components/Message/MessageText.mjs +101 -0
  404. package/dist/es/components/Message/MessageText.mjs.map +1 -0
  405. package/dist/es/components/Message/MessageTimestamp.mjs +20 -0
  406. package/dist/es/components/Message/MessageTimestamp.mjs.map +1 -0
  407. package/dist/es/components/Message/MessageTranslationIndicator.mjs +53 -0
  408. package/dist/es/components/Message/MessageTranslationIndicator.mjs.map +1 -0
  409. package/dist/es/components/Message/MessageUI.mjs +185 -0
  410. package/dist/es/components/Message/MessageUI.mjs.map +1 -0
  411. package/dist/es/components/Message/PinIndicator.mjs +34 -0
  412. package/dist/es/components/Message/PinIndicator.mjs.map +1 -0
  413. package/dist/es/components/Message/QuotedMessage.mjs +26 -0
  414. package/dist/es/components/Message/QuotedMessage.mjs.map +1 -0
  415. package/dist/es/components/Message/ReminderNotification.mjs +57 -0
  416. package/dist/es/components/Message/ReminderNotification.mjs.map +1 -0
  417. package/dist/es/components/Message/StreamedMessageText.mjs +35 -0
  418. package/dist/es/components/Message/StreamedMessageText.mjs.map +1 -0
  419. package/dist/es/components/Message/Timestamp.mjs +41 -0
  420. package/dist/es/components/Message/Timestamp.mjs.map +1 -0
  421. package/dist/es/components/Message/emojiRegex.mjs +20 -0
  422. package/dist/es/components/Message/emojiRegex.mjs.map +1 -0
  423. package/dist/es/components/Message/hooks/useActionHandler.mjs +30 -0
  424. package/dist/es/components/Message/hooks/useActionHandler.mjs.map +1 -0
  425. package/dist/es/components/Message/hooks/useDeleteHandler.mjs +21 -0
  426. package/dist/es/components/Message/hooks/useDeleteHandler.mjs.map +1 -0
  427. package/dist/es/components/Message/hooks/useFlagHandler.mjs +20 -0
  428. package/dist/es/components/Message/hooks/useFlagHandler.mjs.map +1 -0
  429. package/dist/es/components/Message/hooks/useMarkUnreadHandler.mjs +17 -0
  430. package/dist/es/components/Message/hooks/useMarkUnreadHandler.mjs.map +1 -0
  431. package/dist/es/components/Message/hooks/useMentionsHandler.mjs +22 -0
  432. package/dist/es/components/Message/hooks/useMentionsHandler.mjs.map +1 -0
  433. package/dist/es/components/Message/hooks/useMessageReminder.mjs +14 -0
  434. package/dist/es/components/Message/hooks/useMessageReminder.mjs.map +1 -0
  435. package/dist/es/components/Message/hooks/useMessageTextStreaming.mjs +48 -0
  436. package/dist/es/components/Message/hooks/useMessageTextStreaming.mjs.map +1 -0
  437. package/dist/es/components/Message/hooks/useMuteHandler.mjs +24 -0
  438. package/dist/es/components/Message/hooks/useMuteHandler.mjs.map +1 -0
  439. package/dist/es/components/Message/hooks/useOpenThreadHandler.mjs +17 -0
  440. package/dist/es/components/Message/hooks/useOpenThreadHandler.mjs.map +1 -0
  441. package/dist/es/components/Message/hooks/usePinHandler.mjs +45 -0
  442. package/dist/es/components/Message/hooks/usePinHandler.mjs.map +1 -0
  443. package/dist/es/components/Message/hooks/useReactionHandler.mjs +90 -0
  444. package/dist/es/components/Message/hooks/useReactionHandler.mjs.map +1 -0
  445. package/dist/es/components/Message/hooks/useReactionsFetcher.mjs +28 -0
  446. package/dist/es/components/Message/hooks/useReactionsFetcher.mjs.map +1 -0
  447. package/dist/es/components/Message/hooks/useRetryHandler.mjs +13 -0
  448. package/dist/es/components/Message/hooks/useRetryHandler.mjs.map +1 -0
  449. package/dist/es/components/Message/hooks/useUserHandler.mjs +15 -0
  450. package/dist/es/components/Message/hooks/useUserHandler.mjs.map +1 -0
  451. package/dist/es/components/Message/hooks/useUserRole.mjs +47 -0
  452. package/dist/es/components/Message/hooks/useUserRole.mjs.map +1 -0
  453. package/dist/es/components/Message/renderText/componentRenderers/Anchor.mjs +20 -0
  454. package/dist/es/components/Message/renderText/componentRenderers/Anchor.mjs.map +1 -0
  455. package/dist/es/components/Message/renderText/componentRenderers/Emoji.mjs +12 -0
  456. package/dist/es/components/Message/renderText/componentRenderers/Emoji.mjs.map +1 -0
  457. package/dist/es/components/Message/renderText/componentRenderers/Mention.mjs +14 -0
  458. package/dist/es/components/Message/renderText/componentRenderers/Mention.mjs.map +1 -0
  459. package/dist/es/components/Message/renderText/regex.mjs +22 -0
  460. package/dist/es/components/Message/renderText/regex.mjs.map +1 -0
  461. package/dist/es/components/Message/renderText/rehypePlugins/emojiMarkdownPlugin.mjs +16 -0
  462. package/dist/es/components/Message/renderText/rehypePlugins/emojiMarkdownPlugin.mjs.map +1 -0
  463. package/dist/es/components/Message/renderText/rehypePlugins/mentionsMarkdownPlugin.mjs +111 -0
  464. package/dist/es/components/Message/renderText/rehypePlugins/mentionsMarkdownPlugin.mjs.map +1 -0
  465. package/dist/es/components/Message/renderText/remarkPlugins/htmlToTextPlugin.mjs +14 -0
  466. package/dist/es/components/Message/renderText/remarkPlugins/htmlToTextPlugin.mjs.map +1 -0
  467. package/dist/es/components/Message/renderText/remarkPlugins/imageToLink.mjs +33 -0
  468. package/dist/es/components/Message/renderText/remarkPlugins/imageToLink.mjs.map +1 -0
  469. package/dist/es/components/Message/renderText/remarkPlugins/keepLineBreaksPlugin.mjs +44 -0
  470. package/dist/es/components/Message/renderText/remarkPlugins/keepLineBreaksPlugin.mjs.map +1 -0
  471. package/dist/es/components/Message/renderText/remarkPlugins/plusPlusToEmphasis.mjs +68 -0
  472. package/dist/es/components/Message/renderText/remarkPlugins/plusPlusToEmphasis.mjs.map +1 -0
  473. package/dist/es/components/Message/renderText/remarkPlugins/remarkIgnoreMarkdown.mjs +19 -0
  474. package/dist/es/components/Message/renderText/remarkPlugins/remarkIgnoreMarkdown.mjs.map +1 -0
  475. package/dist/es/components/Message/renderText/renderText.mjs +131 -0
  476. package/dist/es/components/Message/renderText/renderText.mjs.map +1 -0
  477. package/dist/es/components/Message/utils.mjs +151 -0
  478. package/dist/es/components/Message/utils.mjs.map +1 -0
  479. package/dist/es/components/MessageActions/DeleteMessageAlert.mjs +43 -0
  480. package/dist/es/components/MessageActions/DeleteMessageAlert.mjs.map +1 -0
  481. package/dist/es/components/MessageActions/DownloadSubmenu.mjs +52 -0
  482. package/dist/es/components/MessageActions/DownloadSubmenu.mjs.map +1 -0
  483. package/dist/es/components/MessageActions/MessageActions.defaults.mjs +644 -0
  484. package/dist/es/components/MessageActions/MessageActions.defaults.mjs.map +1 -0
  485. package/dist/es/components/MessageActions/MessageActions.mjs +61 -0
  486. package/dist/es/components/MessageActions/MessageActions.mjs.map +1 -0
  487. package/dist/es/components/MessageActions/QuickMessageActionButton.mjs +20 -0
  488. package/dist/es/components/MessageActions/QuickMessageActionButton.mjs.map +1 -0
  489. package/dist/es/components/MessageActions/RemindMeSubmenu.mjs +71 -0
  490. package/dist/es/components/MessageActions/RemindMeSubmenu.mjs.map +1 -0
  491. package/dist/es/components/MessageActions/downloadUtils.mjs +65 -0
  492. package/dist/es/components/MessageActions/downloadUtils.mjs.map +1 -0
  493. package/dist/es/components/MessageActions/hooks/useBaseMessageActionSetFilter.mjs +64 -0
  494. package/dist/es/components/MessageActions/hooks/useBaseMessageActionSetFilter.mjs.map +1 -0
  495. package/dist/es/components/MessageBounce/MessageBounceModal.mjs +18 -0
  496. package/dist/es/components/MessageBounce/MessageBounceModal.mjs.map +1 -0
  497. package/dist/es/components/MessageBounce/MessageBouncePrompt.mjs +67 -0
  498. package/dist/es/components/MessageBounce/MessageBouncePrompt.mjs.map +1 -0
  499. package/dist/es/components/MessageComposer/AttachmentPreviewList/AttachmentPreviewList.mjs +91 -0
  500. package/dist/es/components/MessageComposer/AttachmentPreviewList/AttachmentPreviewList.mjs.map +1 -0
  501. package/dist/es/components/MessageComposer/AttachmentPreviewList/AudioAttachmentPreview.mjs +131 -0
  502. package/dist/es/components/MessageComposer/AttachmentPreviewList/AudioAttachmentPreview.mjs.map +1 -0
  503. package/dist/es/components/MessageComposer/AttachmentPreviewList/FileAttachmentPreview.mjs +82 -0
  504. package/dist/es/components/MessageComposer/AttachmentPreviewList/FileAttachmentPreview.mjs.map +1 -0
  505. package/dist/es/components/MessageComposer/AttachmentPreviewList/GeolocationPreview.mjs +53 -0
  506. package/dist/es/components/MessageComposer/AttachmentPreviewList/GeolocationPreview.mjs.map +1 -0
  507. package/dist/es/components/MessageComposer/AttachmentPreviewList/MediaAttachmentPreview.mjs +97 -0
  508. package/dist/es/components/MessageComposer/AttachmentPreviewList/MediaAttachmentPreview.mjs.map +1 -0
  509. package/dist/es/components/MessageComposer/AttachmentPreviewList/UnsupportedAttachmentPreview.mjs +36 -0
  510. package/dist/es/components/MessageComposer/AttachmentPreviewList/UnsupportedAttachmentPreview.mjs.map +1 -0
  511. package/dist/es/components/MessageComposer/AttachmentPreviewList/VoiceRecordingPreviewSlot.mjs +29 -0
  512. package/dist/es/components/MessageComposer/AttachmentPreviewList/VoiceRecordingPreviewSlot.mjs.map +1 -0
  513. package/dist/es/components/MessageComposer/AttachmentPreviewList/utils/AttachmentPreviewRoot.mjs +53 -0
  514. package/dist/es/components/MessageComposer/AttachmentPreviewList/utils/AttachmentPreviewRoot.mjs.map +1 -0
  515. package/dist/es/components/MessageComposer/AttachmentSelector/AttachmentSelector.mjs +308 -0
  516. package/dist/es/components/MessageComposer/AttachmentSelector/AttachmentSelector.mjs.map +1 -0
  517. package/dist/es/components/MessageComposer/AttachmentSelector/CommandsMenu.mjs +104 -0
  518. package/dist/es/components/MessageComposer/AttachmentSelector/CommandsMenu.mjs.map +1 -0
  519. package/dist/es/components/MessageComposer/CommandChip.mjs +37 -0
  520. package/dist/es/components/MessageComposer/CommandChip.mjs.map +1 -0
  521. package/dist/es/components/MessageComposer/CooldownTimer.mjs +15 -0
  522. package/dist/es/components/MessageComposer/CooldownTimer.mjs.map +1 -0
  523. package/dist/es/components/MessageComposer/EditedMessagePreview.mjs +17 -0
  524. package/dist/es/components/MessageComposer/EditedMessagePreview.mjs.map +1 -0
  525. package/dist/es/components/MessageComposer/LinkPreviewList.mjs +78 -0
  526. package/dist/es/components/MessageComposer/LinkPreviewList.mjs.map +1 -0
  527. package/dist/es/components/MessageComposer/MessageComposer.mjs +66 -0
  528. package/dist/es/components/MessageComposer/MessageComposer.mjs.map +1 -0
  529. package/dist/es/components/MessageComposer/MessageComposerActions.mjs +71 -0
  530. package/dist/es/components/MessageComposer/MessageComposerActions.mjs.map +1 -0
  531. package/dist/es/components/MessageComposer/MessageComposerUI.mjs +100 -0
  532. package/dist/es/components/MessageComposer/MessageComposerUI.mjs.map +1 -0
  533. package/dist/es/components/MessageComposer/QuotedMessageIndicator.mjs +9 -0
  534. package/dist/es/components/MessageComposer/QuotedMessageIndicator.mjs.map +1 -0
  535. package/dist/es/components/MessageComposer/QuotedMessagePreview.mjs +325 -0
  536. package/dist/es/components/MessageComposer/QuotedMessagePreview.mjs.map +1 -0
  537. package/dist/es/components/MessageComposer/RemoveAttachmentPreviewButton.mjs +25 -0
  538. package/dist/es/components/MessageComposer/RemoveAttachmentPreviewButton.mjs.map +1 -0
  539. package/dist/es/components/MessageComposer/SendButton.mjs +29 -0
  540. package/dist/es/components/MessageComposer/SendButton.mjs.map +1 -0
  541. package/dist/es/components/MessageComposer/SendToChannelCheckbox.mjs +51 -0
  542. package/dist/es/components/MessageComposer/SendToChannelCheckbox.mjs.map +1 -0
  543. package/dist/es/components/MessageComposer/StopAIGenerationButton.mjs +18 -0
  544. package/dist/es/components/MessageComposer/StopAIGenerationButton.mjs.map +1 -0
  545. package/dist/es/components/MessageComposer/WithDragAndDropUpload.mjs +109 -0
  546. package/dist/es/components/MessageComposer/WithDragAndDropUpload.mjs.map +1 -0
  547. package/dist/es/components/MessageComposer/hooks/useAttachmentManagerState.mjs +24 -0
  548. package/dist/es/components/MessageComposer/hooks/useAttachmentManagerState.mjs.map +1 -0
  549. package/dist/es/components/MessageComposer/hooks/useAttachmentsForPreview.mjs +21 -0
  550. package/dist/es/components/MessageComposer/hooks/useAttachmentsForPreview.mjs.map +1 -0
  551. package/dist/es/components/MessageComposer/hooks/useCanCreatePoll.mjs +15 -0
  552. package/dist/es/components/MessageComposer/hooks/useCanCreatePoll.mjs.map +1 -0
  553. package/dist/es/components/MessageComposer/hooks/useCooldownRemaining.mjs +19 -0
  554. package/dist/es/components/MessageComposer/hooks/useCooldownRemaining.mjs.map +1 -0
  555. package/dist/es/components/MessageComposer/hooks/useCreateMessageComposerContext.mjs +35 -0
  556. package/dist/es/components/MessageComposer/hooks/useCreateMessageComposerContext.mjs.map +1 -0
  557. package/dist/es/components/MessageComposer/hooks/useIsCooldownActive.mjs +12 -0
  558. package/dist/es/components/MessageComposer/hooks/useIsCooldownActive.mjs.map +1 -0
  559. package/dist/es/components/MessageComposer/hooks/useMessageComposerBindings.mjs +27 -0
  560. package/dist/es/components/MessageComposer/hooks/useMessageComposerBindings.mjs.map +1 -0
  561. package/dist/es/components/MessageComposer/hooks/useMessageComposerCommands.mjs +27 -0
  562. package/dist/es/components/MessageComposer/hooks/useMessageComposerCommands.mjs.map +1 -0
  563. package/dist/es/components/MessageComposer/hooks/useMessageComposerController.mjs +56 -0
  564. package/dist/es/components/MessageComposer/hooks/useMessageComposerController.mjs.map +1 -0
  565. package/dist/es/components/MessageComposer/hooks/useMessageComposerHasSendableData.mjs +13 -0
  566. package/dist/es/components/MessageComposer/hooks/useMessageComposerHasSendableData.mjs.map +1 -0
  567. package/dist/es/components/MessageComposer/hooks/useMessageContentIsEmpty.mjs +13 -0
  568. package/dist/es/components/MessageComposer/hooks/useMessageContentIsEmpty.mjs.map +1 -0
  569. package/dist/es/components/MessageComposer/hooks/usePasteHandler.mjs +34 -0
  570. package/dist/es/components/MessageComposer/hooks/usePasteHandler.mjs.map +1 -0
  571. package/dist/es/components/MessageComposer/hooks/useSubmitHandler.mjs +98 -0
  572. package/dist/es/components/MessageComposer/hooks/useSubmitHandler.mjs.map +1 -0
  573. package/dist/es/components/MessageComposer/hooks/useTextareaRef.mjs +14 -0
  574. package/dist/es/components/MessageComposer/hooks/useTextareaRef.mjs.map +1 -0
  575. package/dist/es/components/MessageComposer/hooks/utils.mjs +16 -0
  576. package/dist/es/components/MessageComposer/hooks/utils.mjs.map +1 -0
  577. package/dist/es/components/MessageComposer/icons.mjs +62 -0
  578. package/dist/es/components/MessageComposer/icons.mjs.map +1 -0
  579. package/dist/es/components/MessageComposer/preEditSnapshot.mjs +45 -0
  580. package/dist/es/components/MessageComposer/preEditSnapshot.mjs.map +1 -0
  581. package/dist/es/components/MessageList/FloatingDateSeparator.mjs +46 -0
  582. package/dist/es/components/MessageList/FloatingDateSeparator.mjs.map +1 -0
  583. package/dist/es/components/MessageList/GiphyPreviewMessage.mjs +15 -0
  584. package/dist/es/components/MessageList/GiphyPreviewMessage.mjs.map +1 -0
  585. package/dist/es/components/MessageList/MessageList.mjs +329 -0
  586. package/dist/es/components/MessageList/MessageList.mjs.map +1 -0
  587. package/dist/es/components/MessageList/MessageListMainPanel.mjs +12 -0
  588. package/dist/es/components/MessageList/MessageListMainPanel.mjs.map +1 -0
  589. package/dist/es/components/MessageList/NewMessageNotification.mjs +32 -0
  590. package/dist/es/components/MessageList/NewMessageNotification.mjs.map +1 -0
  591. package/dist/es/components/MessageList/ScrollToLatestMessageButton.mjs +78 -0
  592. package/dist/es/components/MessageList/ScrollToLatestMessageButton.mjs.map +1 -0
  593. package/dist/es/components/MessageList/UnreadMessagesNotification.mjs +33 -0
  594. package/dist/es/components/MessageList/UnreadMessagesNotification.mjs.map +1 -0
  595. package/dist/es/components/MessageList/UnreadMessagesSeparator.mjs +33 -0
  596. package/dist/es/components/MessageList/UnreadMessagesSeparator.mjs.map +1 -0
  597. package/dist/es/components/MessageList/VirtualizedMessageList.mjs +339 -0
  598. package/dist/es/components/MessageList/VirtualizedMessageList.mjs.map +1 -0
  599. package/dist/es/components/MessageList/VirtualizedMessageListComponents.mjs +93 -0
  600. package/dist/es/components/MessageList/VirtualizedMessageListComponents.mjs.map +1 -0
  601. package/dist/es/components/MessageList/hooks/MessageList/useEnrichedMessages.mjs +39 -0
  602. package/dist/es/components/MessageList/hooks/MessageList/useEnrichedMessages.mjs.map +1 -0
  603. package/dist/es/components/MessageList/hooks/MessageList/useFloatingDateSeparatorMessageList.mjs +78 -0
  604. package/dist/es/components/MessageList/hooks/MessageList/useFloatingDateSeparatorMessageList.mjs.map +1 -0
  605. package/dist/es/components/MessageList/hooks/MessageList/useMessageListElements.mjs +58 -0
  606. package/dist/es/components/MessageList/hooks/MessageList/useMessageListElements.mjs.map +1 -0
  607. package/dist/es/components/MessageList/hooks/MessageList/useMessageListScrollManager.mjs +141 -0
  608. package/dist/es/components/MessageList/hooks/MessageList/useMessageListScrollManager.mjs.map +1 -0
  609. package/dist/es/components/MessageList/hooks/MessageList/useScrollLocationLogic.mjs +275 -0
  610. package/dist/es/components/MessageList/hooks/MessageList/useScrollLocationLogic.mjs.map +1 -0
  611. package/dist/es/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.mjs +81 -0
  612. package/dist/es/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.mjs.map +1 -0
  613. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useFloatingDateSeparator.mjs +69 -0
  614. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useFloatingDateSeparator.mjs.map +1 -0
  615. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.mjs +24 -0
  616. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.mjs.map +1 -0
  617. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.mjs +18 -0
  618. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.mjs.map +1 -0
  619. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.mjs +41 -0
  620. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.mjs.map +1 -0
  621. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.mjs +41 -0
  622. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.mjs.map +1 -0
  623. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.mjs +33 -0
  624. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.mjs.map +1 -0
  625. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.mjs +27 -0
  626. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.mjs.map +1 -0
  627. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.mjs +43 -0
  628. package/dist/es/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.mjs.map +1 -0
  629. package/dist/es/components/MessageList/hooks/useLastDeliveredData.mjs +43 -0
  630. package/dist/es/components/MessageList/hooks/useLastDeliveredData.mjs.map +1 -0
  631. package/dist/es/components/MessageList/hooks/useLastOwnMessage.mjs +8 -0
  632. package/dist/es/components/MessageList/hooks/useLastOwnMessage.mjs.map +1 -0
  633. package/dist/es/components/MessageList/hooks/useLastReadData.mjs +28 -0
  634. package/dist/es/components/MessageList/hooks/useLastReadData.mjs.map +1 -0
  635. package/dist/es/components/MessageList/hooks/useMarkRead.mjs +75 -0
  636. package/dist/es/components/MessageList/hooks/useMarkRead.mjs.map +1 -0
  637. package/dist/es/components/MessageList/hooks/useReducedMotionPreference.mjs +23 -0
  638. package/dist/es/components/MessageList/hooks/useReducedMotionPreference.mjs.map +1 -0
  639. package/dist/es/components/MessageList/renderMessages.mjs +76 -0
  640. package/dist/es/components/MessageList/renderMessages.mjs.map +1 -0
  641. package/dist/es/components/MessageList/utils.mjs +155 -0
  642. package/dist/es/components/MessageList/utils.mjs.map +1 -0
  643. package/dist/es/components/Modal/GlobalModal.mjs +157 -0
  644. package/dist/es/components/Modal/GlobalModal.mjs.map +1 -0
  645. package/dist/es/components/Notifications/Notification.mjs +91 -0
  646. package/dist/es/components/Notifications/Notification.mjs.map +1 -0
  647. package/dist/es/components/Notifications/NotificationConfigurationContext.mjs +19 -0
  648. package/dist/es/components/Notifications/NotificationConfigurationContext.mjs.map +1 -0
  649. package/dist/es/components/Notifications/NotificationList.mjs +314 -0
  650. package/dist/es/components/Notifications/NotificationList.mjs.map +1 -0
  651. package/dist/es/components/Notifications/hooks/useNotificationApi.mjs +107 -0
  652. package/dist/es/components/Notifications/hooks/useNotificationApi.mjs.map +1 -0
  653. package/dist/es/components/Notifications/hooks/useNotificationTarget.mjs +25 -0
  654. package/dist/es/components/Notifications/hooks/useNotificationTarget.mjs.map +1 -0
  655. package/dist/es/components/Notifications/hooks/useNotifications.mjs +39 -0
  656. package/dist/es/components/Notifications/hooks/useNotifications.mjs.map +1 -0
  657. package/dist/es/components/Notifications/hooks/useSystemNotifications.mjs +22 -0
  658. package/dist/es/components/Notifications/hooks/useSystemNotifications.mjs.map +1 -0
  659. package/dist/es/components/Notifications/notificationTarget.mjs +38 -0
  660. package/dist/es/components/Notifications/notificationTarget.mjs.map +1 -0
  661. package/dist/es/components/Poll/Poll.mjs +18 -0
  662. package/dist/es/components/Poll/Poll.mjs.map +1 -0
  663. package/dist/es/components/Poll/PollActions/AddCommentPrompt.mjs +79 -0
  664. package/dist/es/components/Poll/PollActions/AddCommentPrompt.mjs.map +1 -0
  665. package/dist/es/components/Poll/PollActions/EndPollAlert.mjs +61 -0
  666. package/dist/es/components/Poll/PollActions/EndPollAlert.mjs.map +1 -0
  667. package/dist/es/components/Poll/PollActions/PollAction.mjs +27 -0
  668. package/dist/es/components/Poll/PollActions/PollAction.mjs.map +1 -0
  669. package/dist/es/components/Poll/PollActions/PollActions.mjs +92 -0
  670. package/dist/es/components/Poll/PollActions/PollActions.mjs.map +1 -0
  671. package/dist/es/components/Poll/PollActions/PollAnswerList.mjs +70 -0
  672. package/dist/es/components/Poll/PollActions/PollAnswerList.mjs.map +1 -0
  673. package/dist/es/components/Poll/PollActions/PollOptionsFullList.mjs +32 -0
  674. package/dist/es/components/Poll/PollActions/PollOptionsFullList.mjs.map +1 -0
  675. package/dist/es/components/Poll/PollActions/PollQuestion.mjs +20 -0
  676. package/dist/es/components/Poll/PollActions/PollQuestion.mjs.map +1 -0
  677. package/dist/es/components/Poll/PollActions/PollResults/PollOptionWithVotes.mjs +49 -0
  678. package/dist/es/components/Poll/PollActions/PollResults/PollOptionWithVotes.mjs.map +1 -0
  679. package/dist/es/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.mjs +44 -0
  680. package/dist/es/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.mjs.map +1 -0
  681. package/dist/es/components/Poll/PollActions/PollResults/PollOptionWithVotesList.mjs +39 -0
  682. package/dist/es/components/Poll/PollActions/PollResults/PollOptionWithVotesList.mjs.map +1 -0
  683. package/dist/es/components/Poll/PollActions/PollResults/PollResults.mjs +75 -0
  684. package/dist/es/components/Poll/PollActions/PollResults/PollResults.mjs.map +1 -0
  685. package/dist/es/components/Poll/PollActions/SuggestPollOptionPrompt.mjs +79 -0
  686. package/dist/es/components/Poll/PollActions/SuggestPollOptionPrompt.mjs.map +1 -0
  687. package/dist/es/components/Poll/PollContent.mjs +28 -0
  688. package/dist/es/components/Poll/PollContent.mjs.map +1 -0
  689. package/dist/es/components/Poll/PollCreationDialog/MultipleAnswersField.mjs +84 -0
  690. package/dist/es/components/Poll/PollCreationDialog/MultipleAnswersField.mjs.map +1 -0
  691. package/dist/es/components/Poll/PollCreationDialog/NameField.mjs +41 -0
  692. package/dist/es/components/Poll/PollCreationDialog/NameField.mjs.map +1 -0
  693. package/dist/es/components/Poll/PollCreationDialog/OptionFieldSet.mjs +193 -0
  694. package/dist/es/components/Poll/PollCreationDialog/OptionFieldSet.mjs.map +1 -0
  695. package/dist/es/components/Poll/PollCreationDialog/PollCreationDialog.mjs +78 -0
  696. package/dist/es/components/Poll/PollCreationDialog/PollCreationDialog.mjs.map +1 -0
  697. package/dist/es/components/Poll/PollCreationDialog/PollCreationDialogControls.mjs +62 -0
  698. package/dist/es/components/Poll/PollCreationDialog/PollCreationDialogControls.mjs.map +1 -0
  699. package/dist/es/components/Poll/PollCreationDialog/PollOptionReorderHandle.mjs +79 -0
  700. package/dist/es/components/Poll/PollCreationDialog/PollOptionReorderHandle.mjs.map +1 -0
  701. package/dist/es/components/Poll/PollHeader.mjs +46 -0
  702. package/dist/es/components/Poll/PollHeader.mjs.map +1 -0
  703. package/dist/es/components/Poll/PollOptionList.mjs +41 -0
  704. package/dist/es/components/Poll/PollOptionList.mjs.map +1 -0
  705. package/dist/es/components/Poll/PollOptionSelector.mjs +99 -0
  706. package/dist/es/components/Poll/PollOptionSelector.mjs.map +1 -0
  707. package/dist/es/components/Poll/PollVote.mjs +59 -0
  708. package/dist/es/components/Poll/PollVote.mjs.map +1 -0
  709. package/dist/es/components/Poll/hooks/useManagePollVotesRealtime.mjs +36 -0
  710. package/dist/es/components/Poll/hooks/useManagePollVotesRealtime.mjs.map +1 -0
  711. package/dist/es/components/Poll/hooks/usePollAnswerPagination.mjs +44 -0
  712. package/dist/es/components/Poll/hooks/usePollAnswerPagination.mjs.map +1 -0
  713. package/dist/es/components/Poll/hooks/usePollOptionVotesPagination.mjs +44 -0
  714. package/dist/es/components/Poll/hooks/usePollOptionVotesPagination.mjs.map +1 -0
  715. package/dist/es/components/Portal/Portal.mjs +17 -0
  716. package/dist/es/components/Portal/Portal.mjs.map +1 -0
  717. package/dist/es/components/ReactFileUtilities/UploadButton.mjs +54 -0
  718. package/dist/es/components/ReactFileUtilities/UploadButton.mjs.map +1 -0
  719. package/dist/es/{audioProcessing.766ca76c.mjs → components/ReactFileUtilities/utils.mjs} +2 -32
  720. package/dist/es/components/ReactFileUtilities/utils.mjs.map +1 -0
  721. package/dist/es/components/Reactions/MessageReactions.mjs +150 -0
  722. package/dist/es/components/Reactions/MessageReactions.mjs.map +1 -0
  723. package/dist/es/components/Reactions/MessageReactionsDetail.mjs +150 -0
  724. package/dist/es/components/Reactions/MessageReactionsDetail.mjs.map +1 -0
  725. package/dist/es/components/Reactions/ReactionSelector.mjs +140 -0
  726. package/dist/es/components/Reactions/ReactionSelector.mjs.map +1 -0
  727. package/dist/es/components/Reactions/ReactionSelectorWithButton.mjs +51 -0
  728. package/dist/es/components/Reactions/ReactionSelectorWithButton.mjs.map +1 -0
  729. package/dist/es/components/Reactions/SpriteImage.mjs +34 -0
  730. package/dist/es/components/Reactions/SpriteImage.mjs.map +1 -0
  731. package/dist/es/components/Reactions/hooks/useFetchReactions.mjs +61 -0
  732. package/dist/es/components/Reactions/hooks/useFetchReactions.mjs.map +1 -0
  733. package/dist/es/components/Reactions/hooks/useProcessReactions.mjs +82 -0
  734. package/dist/es/components/Reactions/hooks/useProcessReactions.mjs.map +1 -0
  735. package/dist/es/components/Reactions/reactionOptions.mjs +79 -0
  736. package/dist/es/components/Reactions/reactionOptions.mjs.map +1 -0
  737. package/dist/es/components/Reactions/utils/utils.mjs +13 -0
  738. package/dist/es/components/Reactions/utils/utils.mjs.map +1 -0
  739. package/dist/es/components/SafeAnchor/SafeAnchor.mjs +21 -0
  740. package/dist/es/components/SafeAnchor/SafeAnchor.mjs.map +1 -0
  741. package/dist/es/components/Search/Search.mjs +40 -0
  742. package/dist/es/components/Search/Search.mjs.map +1 -0
  743. package/dist/es/components/Search/SearchBar/SearchBar.mjs +113 -0
  744. package/dist/es/components/Search/SearchBar/SearchBar.mjs.map +1 -0
  745. package/dist/es/components/Search/SearchContext.mjs +18 -0
  746. package/dist/es/components/Search/SearchContext.mjs.map +1 -0
  747. package/dist/es/components/Search/SearchResults/SearchResultItem.mjs +113 -0
  748. package/dist/es/components/Search/SearchResults/SearchResultItem.mjs.map +1 -0
  749. package/dist/es/components/Search/SearchResults/SearchResults.mjs +37 -0
  750. package/dist/es/components/Search/SearchResults/SearchResults.mjs.map +1 -0
  751. package/dist/es/components/Search/SearchResults/SearchResultsHeader.mjs +54 -0
  752. package/dist/es/components/Search/SearchResults/SearchResultsHeader.mjs.map +1 -0
  753. package/dist/es/components/Search/SearchResults/SearchResultsPresearch.mjs +15 -0
  754. package/dist/es/components/Search/SearchResults/SearchResultsPresearch.mjs.map +1 -0
  755. package/dist/es/components/Search/SearchResults/SearchSourceResultList.mjs +31 -0
  756. package/dist/es/components/Search/SearchResults/SearchSourceResultList.mjs.map +1 -0
  757. package/dist/es/components/Search/SearchResults/SearchSourceResultListFooter.mjs +31 -0
  758. package/dist/es/components/Search/SearchResults/SearchSourceResultListFooter.mjs.map +1 -0
  759. package/dist/es/components/Search/SearchResults/SearchSourceResults.mjs +30 -0
  760. package/dist/es/components/Search/SearchResults/SearchSourceResults.mjs.map +1 -0
  761. package/dist/es/components/Search/SearchResults/SearchSourceResultsEmpty.mjs +15 -0
  762. package/dist/es/components/Search/SearchResults/SearchSourceResultsEmpty.mjs.map +1 -0
  763. package/dist/es/components/Search/SearchResults/SearchSourceResultsHeader.mjs +6 -0
  764. package/dist/es/components/Search/SearchResults/SearchSourceResultsHeader.mjs.map +1 -0
  765. package/dist/es/components/Search/SearchResults/SearchSourceResultsLoadingIndicator.mjs +18 -0
  766. package/dist/es/components/Search/SearchResults/SearchSourceResultsLoadingIndicator.mjs.map +1 -0
  767. package/dist/es/components/Search/SearchSourceResultsContext.mjs +18 -0
  768. package/dist/es/components/Search/SearchSourceResultsContext.mjs.map +1 -0
  769. package/dist/es/components/Search/hooks/useAnnounceSearchResultCount.mjs +57 -0
  770. package/dist/es/components/Search/hooks/useAnnounceSearchResultCount.mjs.map +1 -0
  771. package/dist/es/components/Search/hooks/useSearchFocusedMessage.mjs +13 -0
  772. package/dist/es/components/Search/hooks/useSearchFocusedMessage.mjs.map +1 -0
  773. package/dist/es/components/Search/hooks/useSearchQueriesInProgress.mjs +24 -0
  774. package/dist/es/components/Search/hooks/useSearchQueriesInProgress.mjs.map +1 -0
  775. package/dist/es/components/Search/hooks/useSearchResultsKeyboardNavigation.mjs +28 -0
  776. package/dist/es/components/Search/hooks/useSearchResultsKeyboardNavigation.mjs.map +1 -0
  777. package/dist/es/components/SkipNavigation/SkipNavigation.mjs +64 -0
  778. package/dist/es/components/SkipNavigation/SkipNavigation.mjs.map +1 -0
  779. package/dist/es/components/SummarizedMessagePreview/SummarizedMessagePreview.mjs +55 -0
  780. package/dist/es/components/SummarizedMessagePreview/SummarizedMessagePreview.mjs.map +1 -0
  781. package/dist/es/components/SummarizedMessagePreview/hooks/useLatestMessagePreview.mjs +116 -0
  782. package/dist/es/components/SummarizedMessagePreview/hooks/useLatestMessagePreview.mjs.map +1 -0
  783. package/dist/es/components/TextareaComposer/SuggestionList/CommandItem.mjs +26 -0
  784. package/dist/es/components/TextareaComposer/SuggestionList/CommandItem.mjs.map +1 -0
  785. package/dist/es/components/TextareaComposer/SuggestionList/EmoticonItem.mjs +26 -0
  786. package/dist/es/components/TextareaComposer/SuggestionList/EmoticonItem.mjs.map +1 -0
  787. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/BroadcastMentionItem.mjs +32 -0
  788. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/BroadcastMentionItem.mjs.map +1 -0
  789. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/MentionItem.mjs +39 -0
  790. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/MentionItem.mjs.map +1 -0
  791. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/MentionSuggestionTitle.mjs +7 -0
  792. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/MentionSuggestionTitle.mjs.map +1 -0
  793. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/RoleItem.mjs +34 -0
  794. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/RoleItem.mjs.map +1 -0
  795. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/SpecialMentionItem.mjs +6 -0
  796. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/SpecialMentionItem.mjs.map +1 -0
  797. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/UserGroupItem.mjs +31 -0
  798. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/UserGroupItem.mjs.map +1 -0
  799. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/UserItem.mjs +50 -0
  800. package/dist/es/components/TextareaComposer/SuggestionList/MentionItem/UserItem.mjs.map +1 -0
  801. package/dist/es/components/TextareaComposer/SuggestionList/SuggestionList.mjs +198 -0
  802. package/dist/es/components/TextareaComposer/SuggestionList/SuggestionList.mjs.map +1 -0
  803. package/dist/es/components/TextareaComposer/SuggestionList/SuggestionListItem.mjs +46 -0
  804. package/dist/es/components/TextareaComposer/SuggestionList/SuggestionListItem.mjs.map +1 -0
  805. package/dist/es/components/TextareaComposer/SuggestionList/TokenizedSuggestionParts.mjs +30 -0
  806. package/dist/es/components/TextareaComposer/SuggestionList/TokenizedSuggestionParts.mjs.map +1 -0
  807. package/dist/es/components/TextareaComposer/TextareaComposer.mjs +288 -0
  808. package/dist/es/components/TextareaComposer/TextareaComposer.mjs.map +1 -0
  809. package/dist/es/components/TextareaComposer/hooks/useTextareaPlaceholder.mjs +30 -0
  810. package/dist/es/components/TextareaComposer/hooks/useTextareaPlaceholder.mjs.map +1 -0
  811. package/dist/es/components/Thread/LegacyThreadContext.mjs +8 -0
  812. package/dist/es/components/Thread/LegacyThreadContext.mjs.map +1 -0
  813. package/dist/es/components/Thread/Thread.mjs +106 -0
  814. package/dist/es/components/Thread/Thread.mjs.map +1 -0
  815. package/dist/es/components/Thread/ThreadHead.mjs +26 -0
  816. package/dist/es/components/Thread/ThreadHead.mjs.map +1 -0
  817. package/dist/es/components/Thread/ThreadHeader.mjs +88 -0
  818. package/dist/es/components/Thread/ThreadHeader.mjs.map +1 -0
  819. package/dist/es/components/Thread/ThreadStart.mjs +24 -0
  820. package/dist/es/components/Thread/ThreadStart.mjs.map +1 -0
  821. package/dist/es/components/Threads/ThreadContext.mjs +17 -0
  822. package/dist/es/components/Threads/ThreadContext.mjs.map +1 -0
  823. package/dist/es/components/Threads/ThreadList/ThreadList.mjs +120 -0
  824. package/dist/es/components/Threads/ThreadList/ThreadList.mjs.map +1 -0
  825. package/dist/es/components/Threads/ThreadList/ThreadListEmptyPlaceholder.mjs +17 -0
  826. package/dist/es/components/Threads/ThreadList/ThreadListEmptyPlaceholder.mjs.map +1 -0
  827. package/dist/es/components/Threads/ThreadList/ThreadListHeader.mjs +22 -0
  828. package/dist/es/components/Threads/ThreadList/ThreadListHeader.mjs.map +1 -0
  829. package/dist/es/components/Threads/ThreadList/ThreadListItem.mjs +18 -0
  830. package/dist/es/components/Threads/ThreadList/ThreadListItem.mjs.map +1 -0
  831. package/dist/es/components/Threads/ThreadList/ThreadListItemUI.mjs +160 -0
  832. package/dist/es/components/Threads/ThreadList/ThreadListItemUI.mjs.map +1 -0
  833. package/dist/es/components/Threads/ThreadList/ThreadListLoadingIndicator.mjs +22 -0
  834. package/dist/es/components/Threads/ThreadList/ThreadListLoadingIndicator.mjs.map +1 -0
  835. package/dist/es/components/Threads/ThreadList/ThreadListUnseenThreadsBanner.mjs +30 -0
  836. package/dist/es/components/Threads/ThreadList/ThreadListUnseenThreadsBanner.mjs.map +1 -0
  837. package/dist/es/components/Threads/ThreadList/utils.a11y.mjs +86 -0
  838. package/dist/es/components/Threads/ThreadList/utils.a11y.mjs.map +1 -0
  839. package/dist/es/components/Threads/UnreadCountBadge.mjs +16 -0
  840. package/dist/es/components/Threads/UnreadCountBadge.mjs.map +1 -0
  841. package/dist/es/components/Tooltip/Tooltip.mjs +39 -0
  842. package/dist/es/components/Tooltip/Tooltip.mjs.map +1 -0
  843. package/dist/es/components/Tooltip/hooks/useEnterLeaveHandlers.mjs +20 -0
  844. package/dist/es/components/Tooltip/hooks/useEnterLeaveHandlers.mjs.map +1 -0
  845. package/dist/es/components/TypingIndicator/TypingIndicator.mjs +79 -0
  846. package/dist/es/components/TypingIndicator/TypingIndicator.mjs.map +1 -0
  847. package/dist/es/components/TypingIndicator/TypingIndicatorDots.mjs +33 -0
  848. package/dist/es/components/TypingIndicator/TypingIndicatorDots.mjs.map +1 -0
  849. package/dist/es/components/TypingIndicator/TypingIndicatorHeader.mjs +44 -0
  850. package/dist/es/components/TypingIndicator/TypingIndicatorHeader.mjs.map +1 -0
  851. package/dist/es/components/TypingIndicator/hooks/useDebouncedTypingActive.mjs +53 -0
  852. package/dist/es/components/TypingIndicator/hooks/useDebouncedTypingActive.mjs.map +1 -0
  853. package/dist/es/components/TypingIndicator/utils/getTypingStatusMessage.mjs +15 -0
  854. package/dist/es/components/TypingIndicator/utils/getTypingStatusMessage.mjs.map +1 -0
  855. package/dist/es/components/UtilityComponents/ErrorBoundary.mjs +22 -0
  856. package/dist/es/components/UtilityComponents/ErrorBoundary.mjs.map +1 -0
  857. package/dist/es/components/UtilityComponents/NullComponent.mjs +6 -0
  858. package/dist/es/components/UtilityComponents/NullComponent.mjs.map +1 -0
  859. package/dist/es/components/UtilityComponents/hooks/useMutationObserver.mjs +45 -0
  860. package/dist/es/components/UtilityComponents/hooks/useMutationObserver.mjs.map +1 -0
  861. package/dist/es/components/UtilityComponents/useStableId.mjs +20 -0
  862. package/dist/es/components/UtilityComponents/useStableId.mjs.map +1 -0
  863. package/dist/es/{ReactPlayerWrapper.d2ae5941.mjs → components/VideoPlayer/ReactPlayerWrapper.mjs} +3 -3
  864. package/dist/es/components/VideoPlayer/ReactPlayerWrapper.mjs.map +1 -0
  865. package/dist/es/components/VideoPlayer/VideoPlayer.mjs +30 -0
  866. package/dist/es/components/VideoPlayer/VideoPlayer.mjs.map +1 -0
  867. package/dist/es/components/VideoPlayer/VideoThumbnail.mjs +35 -0
  868. package/dist/es/components/VideoPlayer/VideoThumbnail.mjs.map +1 -0
  869. package/dist/es/components/VisuallyHidden/VisuallyHidden.mjs +29 -0
  870. package/dist/es/components/VisuallyHidden/VisuallyHidden.mjs.map +1 -0
  871. package/dist/es/components/Window/Window.mjs +21 -0
  872. package/dist/es/components/Window/Window.mjs.map +1 -0
  873. package/dist/es/constants/messageTypes.mjs +9 -0
  874. package/dist/es/constants/messageTypes.mjs.map +1 -0
  875. package/dist/es/context/AttachmentSelectorContext.mjs +13 -0
  876. package/dist/es/context/AttachmentSelectorContext.mjs.map +1 -0
  877. package/dist/es/context/ChannelActionContext.mjs +20 -0
  878. package/dist/es/context/ChannelActionContext.mjs.map +1 -0
  879. package/dist/es/context/ChannelListContext.mjs +20 -0
  880. package/dist/es/context/ChannelListContext.mjs.map +1 -0
  881. package/dist/es/context/ChannelStateContext.mjs +24 -0
  882. package/dist/es/context/ChannelStateContext.mjs.map +1 -0
  883. package/dist/es/context/ChatContext.mjs +20 -0
  884. package/dist/es/context/ChatContext.mjs.map +1 -0
  885. package/dist/es/context/ComponentContext.mjs +13 -0
  886. package/dist/es/context/ComponentContext.mjs.map +1 -0
  887. package/dist/es/context/DialogManagerContext.mjs +119 -0
  888. package/dist/es/context/DialogManagerContext.mjs.map +1 -0
  889. package/dist/es/context/MessageBounceContext.mjs +53 -0
  890. package/dist/es/context/MessageBounceContext.mjs.map +1 -0
  891. package/dist/es/context/MessageComposerContext.mjs +17 -0
  892. package/dist/es/context/MessageComposerContext.mjs.map +1 -0
  893. package/dist/es/context/MessageContext.mjs +17 -0
  894. package/dist/es/context/MessageContext.mjs.map +1 -0
  895. package/dist/es/context/MessageListContext.mjs +23 -0
  896. package/dist/es/context/MessageListContext.mjs.map +1 -0
  897. package/dist/es/context/MessageTranslationViewContext.mjs +76 -0
  898. package/dist/es/context/MessageTranslationViewContext.mjs.map +1 -0
  899. package/dist/es/context/ModalContext.mjs +20 -0
  900. package/dist/es/context/ModalContext.mjs.map +1 -0
  901. package/dist/es/context/PollContext.mjs +15 -0
  902. package/dist/es/context/PollContext.mjs.map +1 -0
  903. package/dist/es/context/TranslationContext.mjs +30 -0
  904. package/dist/es/context/TranslationContext.mjs.map +1 -0
  905. package/dist/es/context/TypingContext.mjs +20 -0
  906. package/dist/es/context/TypingContext.mjs.map +1 -0
  907. package/dist/es/context/VirtualizedMessageListContext.mjs +16 -0
  908. package/dist/es/context/VirtualizedMessageListContext.mjs.map +1 -0
  909. package/dist/es/context/WithComponents.mjs +23 -0
  910. package/dist/es/context/WithComponents.mjs.map +1 -0
  911. package/dist/es/context/useComponentContextIcons.mjs +31 -0
  912. package/dist/es/context/useComponentContextIcons.mjs.map +1 -0
  913. package/dist/es/emojis.mjs +2 -229
  914. package/dist/es/i18n/Streami18n.mjs +545 -0
  915. package/dist/es/i18n/Streami18n.mjs.map +1 -0
  916. package/dist/es/i18n/TranslationBuilder/TranslationBuilder.mjs +86 -0
  917. package/dist/es/i18n/TranslationBuilder/TranslationBuilder.mjs.map +1 -0
  918. package/dist/es/i18n/TranslationBuilder/notifications/NotificationTranslationTopic.mjs +51 -0
  919. package/dist/es/i18n/TranslationBuilder/notifications/NotificationTranslationTopic.mjs.map +1 -0
  920. package/dist/es/i18n/TranslationBuilder/notifications/translators.mjs +47 -0
  921. package/dist/es/i18n/TranslationBuilder/notifications/translators.mjs.map +1 -0
  922. package/dist/es/i18n/TranslationBuilder/notifications/translatorsByNotificationType.mjs +24 -0
  923. package/dist/es/i18n/TranslationBuilder/notifications/translatorsByNotificationType.mjs.map +1 -0
  924. package/dist/es/i18n/de.mjs +782 -0
  925. package/dist/es/i18n/de.mjs.map +1 -0
  926. package/dist/es/i18n/en.mjs +779 -0
  927. package/dist/es/i18n/en.mjs.map +1 -0
  928. package/dist/es/i18n/es.mjs +821 -0
  929. package/dist/es/i18n/es.mjs.map +1 -0
  930. package/dist/es/i18n/fr.mjs +822 -0
  931. package/dist/es/i18n/fr.mjs.map +1 -0
  932. package/dist/es/i18n/hi.mjs +786 -0
  933. package/dist/es/i18n/hi.mjs.map +1 -0
  934. package/dist/es/i18n/it.mjs +821 -0
  935. package/dist/es/i18n/it.mjs.map +1 -0
  936. package/dist/es/i18n/ja.mjs +760 -0
  937. package/dist/es/i18n/ja.mjs.map +1 -0
  938. package/dist/es/i18n/ko.mjs +760 -0
  939. package/dist/es/i18n/ko.mjs.map +1 -0
  940. package/dist/es/i18n/nl.mjs +786 -0
  941. package/dist/es/i18n/nl.mjs.map +1 -0
  942. package/dist/es/i18n/pt.mjs +819 -0
  943. package/dist/es/i18n/pt.mjs.map +1 -0
  944. package/dist/es/i18n/ru.mjs +868 -0
  945. package/dist/es/i18n/ru.mjs.map +1 -0
  946. package/dist/es/i18n/tr.mjs +781 -0
  947. package/dist/es/i18n/tr.mjs.map +1 -0
  948. package/dist/es/i18n/utils.mjs +132 -0
  949. package/dist/es/i18n/utils.mjs.map +1 -0
  950. package/dist/es/index.mjs +323 -20870
  951. package/dist/es/mp3-encoder.mjs +1 -1
  952. package/dist/es/plugins/ChannelDetail/AvatarWithChannelDetail.mjs +40 -0
  953. package/dist/es/plugins/ChannelDetail/AvatarWithChannelDetail.mjs.map +1 -0
  954. package/dist/es/plugins/ChannelDetail/ChannelDetail.mjs +105 -0
  955. package/dist/es/plugins/ChannelDetail/ChannelDetail.mjs.map +1 -0
  956. package/dist/es/plugins/ChannelDetail/ChannelDetailContext.mjs +20 -0
  957. package/dist/es/plugins/ChannelDetail/ChannelDetailContext.mjs.map +1 -0
  958. package/dist/es/plugins/ChannelDetail/ChannelDetailEmptyList.mjs +14 -0
  959. package/dist/es/plugins/ChannelDetail/ChannelDetailEmptyList.mjs.map +1 -0
  960. package/dist/es/plugins/ChannelDetail/ChannelDetailListLoadingIndicator.mjs +20 -0
  961. package/dist/es/plugins/ChannelDetail/ChannelDetailListLoadingIndicator.mjs.map +1 -0
  962. package/dist/es/plugins/ChannelDetail/ChannelDetailNavButton.mjs +26 -0
  963. package/dist/es/plugins/ChannelDetail/ChannelDetailNavButton.mjs.map +1 -0
  964. package/dist/es/plugins/ChannelDetail/ChannelDetailSearchInput.mjs +35 -0
  965. package/dist/es/plugins/ChannelDetail/ChannelDetailSearchInput.mjs.map +1 -0
  966. package/dist/es/plugins/ChannelDetail/SectionNavigator/SectionNavigator.mjs +164 -0
  967. package/dist/es/plugins/ChannelDetail/SectionNavigator/SectionNavigator.mjs.map +1 -0
  968. package/dist/es/plugins/ChannelDetail/SectionNavigator/SectionNavigatorHeader.mjs +50 -0
  969. package/dist/es/plugins/ChannelDetail/SectionNavigator/SectionNavigatorHeader.mjs.map +1 -0
  970. package/dist/es/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesEmptyList.mjs +25 -0
  971. package/dist/es/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesEmptyList.mjs.map +1 -0
  972. package/dist/es/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesView.mjs +130 -0
  973. package/dist/es/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesView.mjs.map +1 -0
  974. package/dist/es/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesView.utils.mjs +63 -0
  975. package/dist/es/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesView.utils.mjs.map +1 -0
  976. package/dist/es/plugins/ChannelDetail/Views/ChannelFilesView/useChannelFilesSearch.mjs +47 -0
  977. package/dist/es/plugins/ChannelDetail/Views/ChannelFilesView/useChannelFilesSearch.mjs.map +1 -0
  978. package/dist/es/plugins/ChannelDetail/Views/ChannelManagementView/ChannelManagementActions.defaults.mjs +568 -0
  979. package/dist/es/plugins/ChannelDetail/Views/ChannelManagementView/ChannelManagementActions.defaults.mjs.map +1 -0
  980. package/dist/es/plugins/ChannelDetail/Views/ChannelManagementView/ChannelManagementView.mjs +324 -0
  981. package/dist/es/plugins/ChannelDetail/Views/ChannelManagementView/ChannelManagementView.mjs.map +1 -0
  982. package/dist/es/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaEmptyList.mjs +25 -0
  983. package/dist/es/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaEmptyList.mjs.map +1 -0
  984. package/dist/es/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.mjs +215 -0
  985. package/dist/es/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.mjs.map +1 -0
  986. package/dist/es/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.utils.mjs +37 -0
  987. package/dist/es/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.utils.mjs.map +1 -0
  988. package/dist/es/plugins/ChannelDetail/Views/ChannelMediaView/useChannelMediaSearch.mjs +47 -0
  989. package/dist/es/plugins/ChannelDetail/Views/ChannelMediaView/useChannelMediaSearch.mjs.map +1 -0
  990. package/dist/es/plugins/ChannelDetail/Views/ChannelMemberDetailView/ChannelMemberActions.defaults.mjs +451 -0
  991. package/dist/es/plugins/ChannelDetail/Views/ChannelMemberDetailView/ChannelMemberActions.defaults.mjs.map +1 -0
  992. package/dist/es/plugins/ChannelDetail/Views/ChannelMemberDetailView/ChannelMemberDetail.mjs +76 -0
  993. package/dist/es/plugins/ChannelDetail/Views/ChannelMemberDetailView/ChannelMemberDetail.mjs.map +1 -0
  994. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersAddView.mjs +182 -0
  995. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersAddView.mjs.map +1 -0
  996. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersBrowseView.mjs +110 -0
  997. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersBrowseView.mjs.map +1 -0
  998. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersHeaderActions.defaults.mjs +120 -0
  999. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersHeaderActions.defaults.mjs.map +1 -0
  1000. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersView.mjs +91 -0
  1001. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersView.mjs.map +1 -0
  1002. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersView.utils.mjs +11 -0
  1003. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersView.utils.mjs.map +1 -0
  1004. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/useChannelMemberCount.mjs +22 -0
  1005. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/useChannelMemberCount.mjs.map +1 -0
  1006. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/useChannelMemberIds.mjs +23 -0
  1007. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/useChannelMemberIds.mjs.map +1 -0
  1008. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/useChannelMembersSearch.mjs +52 -0
  1009. package/dist/es/plugins/ChannelDetail/Views/ChannelMembersView/useChannelMembersSearch.mjs.map +1 -0
  1010. package/dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesEmptyList.mjs +25 -0
  1011. package/dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesEmptyList.mjs.map +1 -0
  1012. package/dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesView.mjs +140 -0
  1013. package/dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesView.mjs.map +1 -0
  1014. package/dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/usePinnedMessagesCount.mjs +24 -0
  1015. package/dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/usePinnedMessagesCount.mjs.map +1 -0
  1016. package/dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/usePinnedMessagesSearch.mjs +68 -0
  1017. package/dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/usePinnedMessagesSearch.mjs.map +1 -0
  1018. package/dist/es/plugins/ChannelDetail/VirtualizedList/VirtualizedList.mjs +42 -0
  1019. package/dist/es/plugins/ChannelDetail/VirtualizedList/VirtualizedList.mjs.map +1 -0
  1020. package/dist/es/plugins/Emojis/EmojiPicker.mjs +95 -0
  1021. package/dist/es/plugins/Emojis/EmojiPicker.mjs.map +1 -0
  1022. package/dist/es/plugins/Emojis/Picker.mjs +23 -0
  1023. package/dist/es/plugins/Emojis/Picker.mjs.map +1 -0
  1024. package/dist/es/plugins/Emojis/middleware/textComposerEmojiMiddleware.mjs +126 -0
  1025. package/dist/es/plugins/Emojis/middleware/textComposerEmojiMiddleware.mjs.map +1 -0
  1026. package/dist/es/store/hooks/useStateStore.mjs +32 -0
  1027. package/dist/es/store/hooks/useStateStore.mjs.map +1 -0
  1028. package/dist/es/utils/findReverse.mjs +8 -0
  1029. package/dist/es/utils/findReverse.mjs.map +1 -0
  1030. package/dist/es/utils/getChannel.mjs +38 -0
  1031. package/dist/es/utils/getChannel.mjs.map +1 -0
  1032. package/dist/es/utils/getChannelConfig.mjs +11 -0
  1033. package/dist/es/utils/getChannelConfig.mjs.map +1 -0
  1034. package/dist/es/utils/getTextareaCaretRect.mjs +45 -0
  1035. package/dist/es/utils/getTextareaCaretRect.mjs.map +1 -0
  1036. package/dist/es/utils/getWholeChar.mjs +20 -0
  1037. package/dist/es/utils/getWholeChar.mjs.map +1 -0
  1038. package/dist/es/utils/isDmChannel.mjs +9 -0
  1039. package/dist/es/utils/isDmChannel.mjs.map +1 -0
  1040. package/dist/es/utils/mergeDeep.mjs +8 -0
  1041. package/dist/es/utils/mergeDeep.mjs.map +1 -0
  1042. package/dist/es/utils/useStableCallback.mjs +34 -0
  1043. package/dist/es/utils/useStableCallback.mjs.map +1 -0
  1044. package/dist/types/components/Attachment/AttachmentContainer.d.ts.map +1 -1
  1045. package/dist/types/components/Attachment/Audio.d.ts.map +1 -1
  1046. package/dist/types/components/Attachment/FileAttachment.d.ts.map +1 -1
  1047. package/dist/types/components/Attachment/VideoAttachment.d.ts.map +1 -1
  1048. package/dist/types/components/Attachment/VoiceRecording.d.ts.map +1 -1
  1049. package/dist/types/components/Attachment/components/AttachmentUploadProgressIndicator.d.ts +32 -0
  1050. package/dist/types/components/Attachment/components/AttachmentUploadProgressIndicator.d.ts.map +1 -0
  1051. package/dist/types/components/Attachment/components/index.d.ts +1 -0
  1052. package/dist/types/components/Attachment/components/index.d.ts.map +1 -1
  1053. package/dist/types/components/Attachment/hooks/useAttachmentUploadState.d.ts +89 -0
  1054. package/dist/types/components/Attachment/hooks/useAttachmentUploadState.d.ts.map +1 -0
  1055. package/dist/types/components/Attachment/hooks/useLocalVideoDimensions.d.ts +16 -0
  1056. package/dist/types/components/Attachment/hooks/useLocalVideoDimensions.d.ts.map +1 -0
  1057. package/dist/types/components/Attachment/index.d.ts +1 -0
  1058. package/dist/types/components/Attachment/index.d.ts.map +1 -1
  1059. package/dist/types/components/Channel/Channel.d.ts.map +1 -1
  1060. package/dist/types/components/Channel/utils.d.ts +25 -3
  1061. package/dist/types/components/Channel/utils.d.ts.map +1 -1
  1062. package/dist/types/components/Dialog/service/DialogAnchor.d.ts +8 -1
  1063. package/dist/types/components/Dialog/service/DialogAnchor.d.ts.map +1 -1
  1064. package/dist/types/components/Loading/AttachmentUploadedSizeIndicator.d.ts +20 -0
  1065. package/dist/types/components/Loading/AttachmentUploadedSizeIndicator.d.ts.map +1 -0
  1066. package/dist/types/components/Loading/UploadProgressIndicator.d.ts +7 -1
  1067. package/dist/types/components/Loading/UploadProgressIndicator.d.ts.map +1 -1
  1068. package/dist/types/components/Loading/index.d.ts +1 -0
  1069. package/dist/types/components/Loading/index.d.ts.map +1 -1
  1070. package/dist/types/components/Message/MessageStatus.d.ts.map +1 -1
  1071. package/dist/types/components/MessageComposer/AttachmentPreviewList/AudioAttachmentPreview.d.ts.map +1 -1
  1072. package/dist/types/components/MessageComposer/AttachmentPreviewList/FileAttachmentPreview.d.ts.map +1 -1
  1073. package/dist/types/components/MessageComposer/AttachmentPreviewList/MediaAttachmentPreview.d.ts.map +1 -1
  1074. package/dist/types/components/MessageComposer/RemoveAttachmentPreviewButton.d.ts.map +1 -1
  1075. package/dist/types/components/MessageComposer/hooks/useMessageComposerHasSendableData.d.ts.map +1 -1
  1076. package/dist/types/components/MessageComposer/hooks/useSubmitHandler.d.ts.map +1 -1
  1077. package/dist/types/components/MessageComposer/hooks/utils.d.ts.map +1 -1
  1078. package/dist/types/components/TextareaComposer/TextareaComposer.d.ts.map +1 -1
  1079. package/dist/types/components/VideoPlayer/ReactPlayerWrapper.d.ts +1 -1
  1080. package/dist/types/components/VideoPlayer/ReactPlayerWrapper.d.ts.map +1 -1
  1081. package/dist/types/components/VideoPlayer/VideoPlayer.d.ts +7 -1
  1082. package/dist/types/components/VideoPlayer/VideoPlayer.d.ts.map +1 -1
  1083. package/dist/types/context/ComponentContext.d.ts +3 -0
  1084. package/dist/types/context/ComponentContext.d.ts.map +1 -1
  1085. package/dist/types/i18n/Streami18n.d.ts +1 -0
  1086. package/dist/types/i18n/Streami18n.d.ts.map +1 -1
  1087. package/package.json +5 -9
  1088. package/dist/cjs/NotificationList.6abbee1c.js.map +0 -1
  1089. package/dist/cjs/useInertWhenHidden.22151beb.js.map +0 -1
  1090. package/dist/es/NotificationList.db01a56d.mjs +0 -7703
  1091. package/dist/es/NotificationList.db01a56d.mjs.map +0 -1
  1092. package/dist/es/ReactPlayerWrapper.d2ae5941.mjs.map +0 -1
  1093. package/dist/es/audioProcessing.766ca76c.mjs.map +0 -1
  1094. package/dist/es/channel-detail.mjs.map +0 -1
  1095. package/dist/es/emojis.mjs.map +0 -1
  1096. package/dist/es/index.mjs.map +0 -1
  1097. package/dist/es/useChannelHeaderOnlineStatus.a9357343.mjs +0 -771
  1098. package/dist/es/useChannelHeaderOnlineStatus.a9357343.mjs.map +0 -1
  1099. package/dist/es/useInertWhenHidden.3d5fbdba.mjs +0 -5765
  1100. package/dist/es/useInertWhenHidden.3d5fbdba.mjs.map +0 -1
  1101. package/dist/types/components/MessageComposer/AttachmentPreviewList/AttachmentUploadedSizeIndicator.d.ts +0 -14
  1102. package/dist/types/components/MessageComposer/AttachmentPreviewList/AttachmentUploadedSizeIndicator.d.ts.map +0 -1
@@ -0,0 +1,26 @@
1
+ import { AIStates, useAIState } from "./hooks/useAIState.mjs";
2
+ import { useChannelStateContext } from "../../context/ChannelStateContext.mjs";
3
+ import { useTranslationContext } from "../../context/TranslationContext.mjs";
4
+ import "react";
5
+ import { jsx } from "react/jsx-runtime";
6
+ //#region src/components/AIStateIndicator/AIStateIndicator.tsx
7
+ var AIStateIndicator = ({ channel: channelFromProps }) => {
8
+ const { t } = useTranslationContext();
9
+ const { channel: channelFromContext } = useChannelStateContext("AIStateIndicator");
10
+ const { aiState } = useAIState(channelFromProps || channelFromContext);
11
+ const allowedStates = {
12
+ [AIStates.Thinking]: t("Thinking..."),
13
+ [AIStates.Generating]: t("Generating...")
14
+ };
15
+ return aiState in allowedStates ? /* @__PURE__ */ jsx("div", {
16
+ className: "str-chat__ai-state-indicator-container",
17
+ children: /* @__PURE__ */ jsx("p", {
18
+ className: "str-chat__ai-state-indicator-text",
19
+ children: allowedStates[aiState]
20
+ })
21
+ }) : null;
22
+ };
23
+ //#endregion
24
+ export { AIStateIndicator };
25
+
26
+ //# sourceMappingURL=AIStateIndicator.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIStateIndicator.mjs","names":[],"sources":["../../../../src/components/AIStateIndicator/AIStateIndicator.tsx"],"sourcesContent":["import React from 'react';\nimport type { Channel } from 'stream-chat';\n\nimport { AIStates, useAIState } from './hooks/useAIState';\n\nimport { useChannelStateContext, useTranslationContext } from '../../context';\n\nexport type AIStateIndicatorProps = {\n channel?: Channel;\n};\n\nexport const AIStateIndicator = ({\n channel: channelFromProps,\n}: AIStateIndicatorProps) => {\n const { t } = useTranslationContext();\n const { channel: channelFromContext } = useChannelStateContext('AIStateIndicator');\n const channel = channelFromProps || channelFromContext;\n const { aiState } = useAIState(channel);\n const allowedStates = {\n [AIStates.Thinking]: t('Thinking...'),\n [AIStates.Generating]: t('Generating...'),\n };\n\n return aiState in allowedStates ? (\n <div className='str-chat__ai-state-indicator-container'>\n <p className='str-chat__ai-state-indicator-text'>{allowedStates[aiState]}</p>\n </div>\n ) : null;\n};\n"],"mappings":";;;;;;AAWA,IAAa,oBAAoB,EAC/B,SAAS,uBACkB;CAC3B,MAAM,EAAE,MAAM,sBAAsB;CACpC,MAAM,EAAE,SAAS,uBAAuB,uBAAuB,kBAAkB;CAEjF,MAAM,EAAE,YAAY,WADJ,oBAAoB,kBACE;CACtC,MAAM,gBAAgB;GACnB,SAAS,WAAW,EAAE,aAAa;GACnC,SAAS,aAAa,EAAE,eAAe;CAC1C;CAEA,OAAO,WAAW,gBAChB,oBAAC,OAAD;EAAK,WAAU;YACb,oBAAC,KAAD;GAAG,WAAU;aAAqC,cAAc;EAAY,CAAA;CACzE,CAAA,IACH;AACN"}
@@ -0,0 +1,44 @@
1
+ import { useEffect, useState } from "react";
2
+ //#region src/components/AIStateIndicator/hooks/useAIState.ts
3
+ var AIStates = {
4
+ Error: "AI_STATE_ERROR",
5
+ ExternalSources: "AI_STATE_EXTERNAL_SOURCES",
6
+ Generating: "AI_STATE_GENERATING",
7
+ Idle: "AI_STATE_IDLE",
8
+ Stop: "AI_STATE_STOP",
9
+ Thinking: "AI_STATE_THINKING"
10
+ };
11
+ /**
12
+ * A hook that returns the current state of the AI.
13
+ * @param {Channel} channel - The channel for which we want to know the AI state.
14
+ * @returns {{ aiState: AIState }} The current AI state for the given channel.
15
+ */
16
+ var useAIState = (channel) => {
17
+ const [aiState, setAiState] = useState(AIStates.Idle);
18
+ useEffect(() => {
19
+ if (!channel) return;
20
+ const indicatorChangedListener = channel.on("ai_indicator.update", (event) => {
21
+ const { cid } = event;
22
+ const state = event.ai_state;
23
+ if (channel.cid === cid) setAiState(state);
24
+ });
25
+ const indicatorClearedListener = channel.on("ai_indicator.clear", (event) => {
26
+ const { cid } = event;
27
+ if (channel.cid === cid) setAiState(AIStates.Idle);
28
+ });
29
+ const indicatorStoppedListener = channel.on("ai_indicator.stop", (event) => {
30
+ const { cid } = event;
31
+ if (channel.cid === cid) setAiState(AIStates.Stop);
32
+ });
33
+ return () => {
34
+ indicatorChangedListener.unsubscribe();
35
+ indicatorClearedListener.unsubscribe();
36
+ indicatorStoppedListener.unsubscribe();
37
+ };
38
+ }, [channel]);
39
+ return { aiState };
40
+ };
41
+ //#endregion
42
+ export { AIStates, useAIState };
43
+
44
+ //# sourceMappingURL=useAIState.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAIState.mjs","names":[],"sources":["../../../../../src/components/AIStateIndicator/hooks/useAIState.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport type { AIState, Channel, Event } from 'stream-chat';\n\nexport const AIStates = {\n Error: 'AI_STATE_ERROR',\n ExternalSources: 'AI_STATE_EXTERNAL_SOURCES',\n Generating: 'AI_STATE_GENERATING',\n Idle: 'AI_STATE_IDLE',\n Stop: 'AI_STATE_STOP',\n Thinking: 'AI_STATE_THINKING',\n};\n\n/**\n * A hook that returns the current state of the AI.\n * @param {Channel} channel - The channel for which we want to know the AI state.\n * @returns {{ aiState: AIState }} The current AI state for the given channel.\n */\nexport const useAIState = (channel?: Channel): { aiState: AIState } => {\n const [aiState, setAiState] = useState<AIState>(AIStates.Idle);\n\n useEffect(() => {\n if (!channel) {\n return;\n }\n\n const indicatorChangedListener = channel.on('ai_indicator.update', (event: Event) => {\n const { cid } = event;\n const state = event.ai_state as AIState;\n if (channel.cid === cid) {\n setAiState(state);\n }\n });\n\n const indicatorClearedListener = channel.on('ai_indicator.clear', (event) => {\n const { cid } = event;\n if (channel.cid === cid) {\n setAiState(AIStates.Idle);\n }\n });\n\n const indicatorStoppedListener = channel.on('ai_indicator.stop', (event) => {\n const { cid } = event;\n if (channel.cid === cid) {\n setAiState(AIStates.Stop);\n }\n });\n\n return () => {\n indicatorChangedListener.unsubscribe();\n indicatorClearedListener.unsubscribe();\n indicatorStoppedListener.unsubscribe();\n };\n }, [channel]);\n\n return { aiState };\n};\n"],"mappings":";;AAGA,IAAa,WAAW;CACtB,OAAO;CACP,iBAAiB;CACjB,YAAY;CACZ,MAAM;CACN,MAAM;CACN,UAAU;AACZ;;;;;;AAOA,IAAa,cAAc,YAA4C;CACrE,MAAM,CAAC,SAAS,cAAc,SAAkB,SAAS,IAAI;CAE7D,gBAAgB;EACd,IAAI,CAAC,SACH;EAGF,MAAM,2BAA2B,QAAQ,GAAG,wBAAwB,UAAiB;GACnF,MAAM,EAAE,QAAQ;GAChB,MAAM,QAAQ,MAAM;GACpB,IAAI,QAAQ,QAAQ,KAClB,WAAW,KAAK;EAEpB,CAAC;EAED,MAAM,2BAA2B,QAAQ,GAAG,uBAAuB,UAAU;GAC3E,MAAM,EAAE,QAAQ;GAChB,IAAI,QAAQ,QAAQ,KAClB,WAAW,SAAS,IAAI;EAE5B,CAAC;EAED,MAAM,2BAA2B,QAAQ,GAAG,sBAAsB,UAAU;GAC1E,MAAM,EAAE,QAAQ;GAChB,IAAI,QAAQ,QAAQ,KAClB,WAAW,SAAS,IAAI;EAE5B,CAAC;EAED,aAAa;GACX,yBAAyB,YAAY;GACrC,yBAAyB,YAAY;GACrC,yBAAyB,YAAY;EACvC;CACF,GAAG,CAAC,OAAO,CAAC;CAEZ,OAAO,EAAE,QAAQ;AACnB"}
@@ -0,0 +1,144 @@
1
+ import { AriaLiveOutletContext } from "./AriaLiveOutletContext.mjs";
2
+ import { AriaLiveAnnouncerContext } from "./useAriaLiveAnnouncer.mjs";
3
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
4
+ import { jsx } from "react/jsx-runtime";
5
+ //#region src/components/Accessibility/AriaLiveAnnouncerProvider.tsx
6
+ var LIVE_ANNOUNCEMENT_TTL_MS = 7e3;
7
+ /**
8
+ * Owns the aria-live announcement state and the announce() API for one logical announcer
9
+ * (mount ONE per `Chat`). It renders no DOM region itself — the messages are painted by the
10
+ * single active {@link AriaLiveOutlet} chosen from the registered outlet stack (innermost /
11
+ * highest-layer wins). This is the L1 sink of the unified announcer model; see
12
+ * `specs/a11y-react-web/decisions.md` → "Unify the aria-live announcer implementations".
13
+ *
14
+ * All state lives here (per provider instance), never in module scope, so multiple `Chat`
15
+ * instances on one page never share announcements.
16
+ */
17
+ var AriaLiveAnnouncerProvider = ({ children }) => {
18
+ const [announcementsByPriority, setAnnouncementsByPriority] = useState({
19
+ assertive: [],
20
+ polite: []
21
+ });
22
+ const nextAnnouncementIdRef = useRef(0);
23
+ const timeoutByAnnouncementIdRef = useRef(/* @__PURE__ */ new Map());
24
+ const delayTimersRef = useRef(/* @__PURE__ */ new Set());
25
+ const dedupeTimersByMessageRef = useRef(/* @__PURE__ */ new Map());
26
+ const lastRenderedMessageRef = useRef("");
27
+ const removeAnnouncement = useCallback((priority, id) => {
28
+ setAnnouncementsByPriority((currentAnnouncements) => ({
29
+ ...currentAnnouncements,
30
+ [priority]: currentAnnouncements[priority].filter((announcement) => announcement.id !== id)
31
+ }));
32
+ const timeout = timeoutByAnnouncementIdRef.current.get(id);
33
+ if (!timeout) return;
34
+ clearTimeout(timeout);
35
+ timeoutByAnnouncementIdRef.current.delete(id);
36
+ }, []);
37
+ const emit = useCallback((message, priority) => {
38
+ const announcementId = nextAnnouncementIdRef.current++;
39
+ const renderedMessage = message === lastRenderedMessageRef.current ? `${message}​` : message;
40
+ lastRenderedMessageRef.current = renderedMessage;
41
+ setAnnouncementsByPriority((currentAnnouncements) => ({
42
+ ...currentAnnouncements,
43
+ [priority]: [...currentAnnouncements[priority], {
44
+ id: announcementId,
45
+ message: renderedMessage
46
+ }]
47
+ }));
48
+ const timeout = setTimeout(() => {
49
+ removeAnnouncement(priority, announcementId);
50
+ }, LIVE_ANNOUNCEMENT_TTL_MS);
51
+ timeoutByAnnouncementIdRef.current.set(announcementId, timeout);
52
+ }, [removeAnnouncement]);
53
+ const announce = useCallback((message, options) => {
54
+ const { dedupeMs, delayMs, priority = "polite" } = options ?? {};
55
+ const emitMessage = () => {
56
+ if (dedupeMs) {
57
+ const recent = dedupeTimersByMessageRef.current;
58
+ if (recent.has(message)) return;
59
+ recent.set(message, setTimeout(() => recent.delete(message), dedupeMs));
60
+ }
61
+ emit(message, priority);
62
+ };
63
+ if (!delayMs) {
64
+ emitMessage();
65
+ return () => void 0;
66
+ }
67
+ const delayTimers = delayTimersRef.current;
68
+ const delayTimer = setTimeout(() => {
69
+ delayTimers.delete(delayTimer);
70
+ emitMessage();
71
+ }, delayMs);
72
+ delayTimers.add(delayTimer);
73
+ return () => {
74
+ clearTimeout(delayTimer);
75
+ delayTimers.delete(delayTimer);
76
+ };
77
+ }, [emit]);
78
+ useEffect(() => {
79
+ const timeoutById = timeoutByAnnouncementIdRef.current;
80
+ const delayTimers = delayTimersRef.current;
81
+ const dedupeTimers = dedupeTimersByMessageRef.current;
82
+ return () => {
83
+ for (const timeout of timeoutById.values()) clearTimeout(timeout);
84
+ timeoutById.clear();
85
+ for (const timeout of delayTimers) clearTimeout(timeout);
86
+ delayTimers.clear();
87
+ for (const timeout of dedupeTimers.values()) clearTimeout(timeout);
88
+ dedupeTimers.clear();
89
+ };
90
+ }, []);
91
+ const [outlets, setOutlets] = useState([]);
92
+ const registerOutlet = useCallback((id, layer) => {
93
+ setOutlets((currentOutlets) => [...currentOutlets, {
94
+ id,
95
+ layer
96
+ }]);
97
+ }, []);
98
+ const unregisterOutlet = useCallback((id) => {
99
+ setOutlets((currentOutlets) => currentOutlets.filter((outlet) => outlet.id !== id));
100
+ }, []);
101
+ const activeOutlet = useMemo(() => {
102
+ let active = null;
103
+ for (const outlet of outlets) if (!active || outlet.layer >= active.layer) active = outlet;
104
+ return active;
105
+ }, [outlets]);
106
+ const activeOutletId = activeOutlet?.id ?? null;
107
+ const previousActiveLayerRef = useRef(activeOutlet?.layer ?? -1);
108
+ useEffect(() => {
109
+ const currentLayer = activeOutlet?.layer ?? -1;
110
+ const previousLayer = previousActiveLayerRef.current;
111
+ previousActiveLayerRef.current = currentLayer;
112
+ if (currentLayer >= previousLayer) return;
113
+ for (const timeout of timeoutByAnnouncementIdRef.current.values()) clearTimeout(timeout);
114
+ timeoutByAnnouncementIdRef.current.clear();
115
+ lastRenderedMessageRef.current = "";
116
+ setAnnouncementsByPriority({
117
+ assertive: [],
118
+ polite: []
119
+ });
120
+ }, [activeOutlet]);
121
+ const announcerValue = useMemo(() => ({ announce }), [announce]);
122
+ const outletValue = useMemo(() => ({
123
+ activeOutletId,
124
+ announcementsByPriority,
125
+ registerOutlet,
126
+ unregisterOutlet
127
+ }), [
128
+ activeOutletId,
129
+ announcementsByPriority,
130
+ registerOutlet,
131
+ unregisterOutlet
132
+ ]);
133
+ return /* @__PURE__ */ jsx(AriaLiveAnnouncerContext.Provider, {
134
+ value: announcerValue,
135
+ children: /* @__PURE__ */ jsx(AriaLiveOutletContext.Provider, {
136
+ value: outletValue,
137
+ children
138
+ })
139
+ });
140
+ };
141
+ //#endregion
142
+ export { AriaLiveAnnouncerProvider };
143
+
144
+ //# sourceMappingURL=AriaLiveAnnouncerProvider.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AriaLiveAnnouncerProvider.mjs","names":[],"sources":["../../../../src/components/Accessibility/AriaLiveAnnouncerProvider.tsx"],"sourcesContent":["import type { PropsWithChildren } from 'react';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport {\n type AnnouncementsByPriority,\n AriaLiveOutletContext,\n} from './AriaLiveOutletContext';\nimport {\n type AriaLiveAnnounce,\n AriaLiveAnnouncerContext,\n type AriaLivePriority,\n} from './useAriaLiveAnnouncer';\n\n// How long an announcement node stays in the DOM before cleanup. This is NOT how long the\n// message is \"valid\" — with `aria-relevant=\"additions\"` a lingering node is never re-announced;\n// the only cost of a longer value is a few extra (visually hidden) nodes transiently. It must be\n// long enough that a polite message queued BEHIND verbose screen-reader speech (e.g. the typing\n// echo + a focused-field re-announcement) is still present when the reader reaches it — a short\n// window (~1.5s) drops those. 7s comfortably covers that.\nconst LIVE_ANNOUNCEMENT_TTL_MS = 7000;\n\ntype RegisteredOutlet = {\n id: symbol;\n layer: number;\n};\n\n/**\n * Owns the aria-live announcement state and the announce() API for one logical announcer\n * (mount ONE per `Chat`). It renders no DOM region itself — the messages are painted by the\n * single active {@link AriaLiveOutlet} chosen from the registered outlet stack (innermost /\n * highest-layer wins). This is the L1 sink of the unified announcer model; see\n * `specs/a11y-react-web/decisions.md` → \"Unify the aria-live announcer implementations\".\n *\n * All state lives here (per provider instance), never in module scope, so multiple `Chat`\n * instances on one page never share announcements.\n */\nexport const AriaLiveAnnouncerProvider = ({ children }: PropsWithChildren) => {\n const [announcementsByPriority, setAnnouncementsByPriority] =\n useState<AnnouncementsByPriority>({\n assertive: [],\n polite: [],\n });\n const nextAnnouncementIdRef = useRef(0);\n const timeoutByAnnouncementIdRef = useRef<Map<number, ReturnType<typeof setTimeout>>>(\n new Map(),\n );\n // Pending `delayMs` timers (announcements scheduled but not yet emitted). Tracked so they can\n // be cleared on provider unmount; each call also returns a `cancel` that clears its own timer.\n const delayTimersRef = useRef<Set<ReturnType<typeof setTimeout>>>(new Set());\n // Messages emitted within their `dedupeMs` window (message -> expiry timer). Used to suppress\n // an identical repeat (e.g. a StrictMode-double-invoked effect) within the window.\n const dedupeTimersByMessageRef = useRef<Map<string, ReturnType<typeof setTimeout>>>(\n new Map(),\n );\n // The exact text last rendered into a live region. Screen readers (notably VoiceOver)\n // suppress a live-region update whose text is identical to the previous one, so repeated\n // identical announcements (e.g. shuffling a Giphy, whose description is the constant search\n // term) would be voiced only once. We alternate a trailing zero-width space to force a\n // detectable change — see `announce`.\n const lastRenderedMessageRef = useRef('');\n\n const removeAnnouncement = useCallback((priority: AriaLivePriority, id: number) => {\n setAnnouncementsByPriority((currentAnnouncements) => ({\n ...currentAnnouncements,\n [priority]: currentAnnouncements[priority].filter(\n (announcement) => announcement.id !== id,\n ),\n }));\n\n const timeout = timeoutByAnnouncementIdRef.current.get(id);\n if (!timeout) return;\n\n clearTimeout(timeout);\n timeoutByAnnouncementIdRef.current.delete(id);\n }, []);\n\n const emit = useCallback(\n (message: string, priority: AriaLivePriority) => {\n const announcementId = nextAnnouncementIdRef.current++;\n\n // Append a (silent) zero-width space (U+200B) when the text would repeat the previous\n // render, so consecutive identical announcements still differ and are re-voiced. Because\n // it only appends when equal to the last render, the rendered text alternates between\n // `X` and `X` + U+200B, guaranteeing every update is a change the screen reader speaks.\n const ZERO_WIDTH_SPACE = '\\u200B';\n const renderedMessage =\n message === lastRenderedMessageRef.current\n ? `${message}${ZERO_WIDTH_SPACE}`\n : message;\n lastRenderedMessageRef.current = renderedMessage;\n\n setAnnouncementsByPriority((currentAnnouncements) => ({\n ...currentAnnouncements,\n [priority]: [\n ...currentAnnouncements[priority],\n { id: announcementId, message: renderedMessage },\n ],\n }));\n\n const timeout = setTimeout(() => {\n removeAnnouncement(priority, announcementId);\n }, LIVE_ANNOUNCEMENT_TTL_MS);\n\n timeoutByAnnouncementIdRef.current.set(announcementId, timeout);\n },\n [removeAnnouncement],\n );\n\n const announce = useCallback<AriaLiveAnnounce>(\n (message, options) => {\n const { dedupeMs, delayMs, priority = 'polite' } = options ?? {};\n\n // Emit, applying the dedupe window if requested. The check runs at EMIT time (not call\n // time) so a delayed announcement that is cancelled before it fires never marks the message\n // as seen — only an actually-emitted message opens the window.\n const emitMessage = () => {\n if (dedupeMs) {\n const recent = dedupeTimersByMessageRef.current;\n if (recent.has(message)) return; // identical message within the window — suppress\n recent.set(\n message,\n setTimeout(() => recent.delete(message), dedupeMs),\n );\n }\n emit(message, priority);\n };\n\n if (!delayMs) {\n emitMessage();\n return () => undefined;\n }\n\n const delayTimers = delayTimersRef.current;\n const delayTimer = setTimeout(() => {\n delayTimers.delete(delayTimer);\n emitMessage();\n }, delayMs);\n delayTimers.add(delayTimer);\n\n return () => {\n clearTimeout(delayTimer);\n delayTimers.delete(delayTimer);\n };\n },\n [emit],\n );\n\n useEffect(() => {\n const timeoutById = timeoutByAnnouncementIdRef.current;\n const delayTimers = delayTimersRef.current;\n const dedupeTimers = dedupeTimersByMessageRef.current;\n return () => {\n for (const timeout of timeoutById.values()) {\n clearTimeout(timeout);\n }\n timeoutById.clear();\n for (const timeout of delayTimers) {\n clearTimeout(timeout);\n }\n delayTimers.clear();\n for (const timeout of dedupeTimers.values()) {\n clearTimeout(timeout);\n }\n dedupeTimers.clear();\n };\n }, []);\n\n const [outlets, setOutlets] = useState<RegisteredOutlet[]>([]);\n\n const registerOutlet = useCallback((id: symbol, layer: number) => {\n setOutlets((currentOutlets) => [...currentOutlets, { id, layer }]);\n }, []);\n\n const unregisterOutlet = useCallback((id: symbol) => {\n setOutlets((currentOutlets) => currentOutlets.filter((outlet) => outlet.id !== id));\n }, []);\n\n // Innermost wins: the highest layer, and among equal layers the most recently registered.\n const activeOutlet = useMemo(() => {\n let active: RegisteredOutlet | null = null;\n for (const outlet of outlets) {\n if (!active || outlet.layer >= active.layer) {\n active = outlet;\n }\n }\n return active;\n }, [outlets]);\n const activeOutletId = activeOutlet?.id ?? null;\n\n // Drop pending announcements when the active outlet falls back to a LOWER layer because a higher\n // one unmounted (e.g. a modal dialog closed). The shared announcement state otherwise re-renders\n // into the newly active (main) outlet and the screen reader re-announces it — so messages emitted\n // inside a dialog (e.g. option-reorder pickup/move/drop) would be voiced again after the dialog\n // is gone. We only clear on fall-back: when a HIGHER outlet MOUNTS (a dialog opening), the state\n // must survive so an open-time announcement still renders in the now-active dialog outlet.\n const previousActiveLayerRef = useRef(activeOutlet?.layer ?? -1);\n useEffect(() => {\n const currentLayer = activeOutlet?.layer ?? -1;\n const previousLayer = previousActiveLayerRef.current;\n previousActiveLayerRef.current = currentLayer;\n if (currentLayer >= previousLayer) return;\n\n for (const timeout of timeoutByAnnouncementIdRef.current.values()) {\n clearTimeout(timeout);\n }\n timeoutByAnnouncementIdRef.current.clear();\n lastRenderedMessageRef.current = '';\n setAnnouncementsByPriority({ assertive: [], polite: [] });\n }, [activeOutlet]);\n\n const announcerValue = useMemo(() => ({ announce }), [announce]);\n const outletValue = useMemo(\n () => ({\n activeOutletId,\n announcementsByPriority,\n registerOutlet,\n unregisterOutlet,\n }),\n [activeOutletId, announcementsByPriority, registerOutlet, unregisterOutlet],\n );\n\n return (\n <AriaLiveAnnouncerContext.Provider value={announcerValue}>\n <AriaLiveOutletContext.Provider value={outletValue}>\n {children}\n </AriaLiveOutletContext.Provider>\n </AriaLiveAnnouncerContext.Provider>\n );\n};\n"],"mappings":";;;;;AAmBA,IAAM,2BAA2B;;;;;;;;;;;AAiBjC,IAAa,6BAA6B,EAAE,eAAkC;CAC5E,MAAM,CAAC,yBAAyB,8BAC9B,SAAkC;EAChC,WAAW,CAAC;EACZ,QAAQ,CAAC;CACX,CAAC;CACH,MAAM,wBAAwB,OAAO,CAAC;CACtC,MAAM,6BAA6B,uBACjC,IAAI,IAAI,CACV;CAGA,MAAM,iBAAiB,uBAA2C,IAAI,IAAI,CAAC;CAG3E,MAAM,2BAA2B,uBAC/B,IAAI,IAAI,CACV;CAMA,MAAM,yBAAyB,OAAO,EAAE;CAExC,MAAM,qBAAqB,aAAa,UAA4B,OAAe;EACjF,4BAA4B,0BAA0B;GACpD,GAAG;IACF,WAAW,qBAAqB,SAAS,CAAC,QACxC,iBAAiB,aAAa,OAAO,EACxC;EACF,EAAE;EAEF,MAAM,UAAU,2BAA2B,QAAQ,IAAI,EAAE;EACzD,IAAI,CAAC,SAAS;EAEd,aAAa,OAAO;EACpB,2BAA2B,QAAQ,OAAO,EAAE;CAC9C,GAAG,CAAC,CAAC;CAEL,MAAM,OAAO,aACV,SAAiB,aAA+B;EAC/C,MAAM,iBAAiB,sBAAsB;EAO7C,MAAM,kBACJ,YAAY,uBAAuB,UAC/B,GAAG,QAAA,KACH;EACN,uBAAuB,UAAU;EAEjC,4BAA4B,0BAA0B;GACpD,GAAG;IACF,WAAW,CACV,GAAG,qBAAqB,WACxB;IAAE,IAAI;IAAgB,SAAS;GAAgB,CACjD;EACF,EAAE;EAEF,MAAM,UAAU,iBAAiB;GAC/B,mBAAmB,UAAU,cAAc;EAC7C,GAAG,wBAAwB;EAE3B,2BAA2B,QAAQ,IAAI,gBAAgB,OAAO;CAChE,GACA,CAAC,kBAAkB,CACrB;CAEA,MAAM,WAAW,aACd,SAAS,YAAY;EACpB,MAAM,EAAE,UAAU,SAAS,WAAW,aAAa,WAAW,CAAC;EAK/D,MAAM,oBAAoB;GACxB,IAAI,UAAU;IACZ,MAAM,SAAS,yBAAyB;IACxC,IAAI,OAAO,IAAI,OAAO,GAAG;IACzB,OAAO,IACL,SACA,iBAAiB,OAAO,OAAO,OAAO,GAAG,QAAQ,CACnD;GACF;GACA,KAAK,SAAS,QAAQ;EACxB;EAEA,IAAI,CAAC,SAAS;GACZ,YAAY;GACZ,aAAa,KAAA;EACf;EAEA,MAAM,cAAc,eAAe;EACnC,MAAM,aAAa,iBAAiB;GAClC,YAAY,OAAO,UAAU;GAC7B,YAAY;EACd,GAAG,OAAO;EACV,YAAY,IAAI,UAAU;EAE1B,aAAa;GACX,aAAa,UAAU;GACvB,YAAY,OAAO,UAAU;EAC/B;CACF,GACA,CAAC,IAAI,CACP;CAEA,gBAAgB;EACd,MAAM,cAAc,2BAA2B;EAC/C,MAAM,cAAc,eAAe;EACnC,MAAM,eAAe,yBAAyB;EAC9C,aAAa;GACX,KAAK,MAAM,WAAW,YAAY,OAAO,GACvC,aAAa,OAAO;GAEtB,YAAY,MAAM;GAClB,KAAK,MAAM,WAAW,aACpB,aAAa,OAAO;GAEtB,YAAY,MAAM;GAClB,KAAK,MAAM,WAAW,aAAa,OAAO,GACxC,aAAa,OAAO;GAEtB,aAAa,MAAM;EACrB;CACF,GAAG,CAAC,CAAC;CAEL,MAAM,CAAC,SAAS,cAAc,SAA6B,CAAC,CAAC;CAE7D,MAAM,iBAAiB,aAAa,IAAY,UAAkB;EAChE,YAAY,mBAAmB,CAAC,GAAG,gBAAgB;GAAE;GAAI;EAAM,CAAC,CAAC;CACnE,GAAG,CAAC,CAAC;CAEL,MAAM,mBAAmB,aAAa,OAAe;EACnD,YAAY,mBAAmB,eAAe,QAAQ,WAAW,OAAO,OAAO,EAAE,CAAC;CACpF,GAAG,CAAC,CAAC;CAGL,MAAM,eAAe,cAAc;EACjC,IAAI,SAAkC;EACtC,KAAK,MAAM,UAAU,SACnB,IAAI,CAAC,UAAU,OAAO,SAAS,OAAO,OACpC,SAAS;EAGb,OAAO;CACT,GAAG,CAAC,OAAO,CAAC;CACZ,MAAM,iBAAiB,cAAc,MAAM;CAQ3C,MAAM,yBAAyB,OAAO,cAAc,SAAS,EAAE;CAC/D,gBAAgB;EACd,MAAM,eAAe,cAAc,SAAS;EAC5C,MAAM,gBAAgB,uBAAuB;EAC7C,uBAAuB,UAAU;EACjC,IAAI,gBAAgB,eAAe;EAEnC,KAAK,MAAM,WAAW,2BAA2B,QAAQ,OAAO,GAC9D,aAAa,OAAO;EAEtB,2BAA2B,QAAQ,MAAM;EACzC,uBAAuB,UAAU;EACjC,2BAA2B;GAAE,WAAW,CAAC;GAAG,QAAQ,CAAC;EAAE,CAAC;CAC1D,GAAG,CAAC,YAAY,CAAC;CAEjB,MAAM,iBAAiB,eAAe,EAAE,SAAS,IAAI,CAAC,QAAQ,CAAC;CAC/D,MAAM,cAAc,eACX;EACL;EACA;EACA;EACA;CACF,IACA;EAAC;EAAgB;EAAyB;EAAgB;CAAgB,CAC5E;CAEA,OACE,oBAAC,yBAAyB,UAA1B;EAAmC,OAAO;YACxC,oBAAC,sBAAsB,UAAvB;GAAgC,OAAO;GACpC;EAC6B,CAAA;CACC,CAAA;AAEvC"}
@@ -0,0 +1,58 @@
1
+ import { Portal } from "../Portal/Portal.mjs";
2
+ import { useAriaLiveOutletContext } from "./AriaLiveOutletContext.mjs";
3
+ import { VisuallyHidden } from "../VisuallyHidden/VisuallyHidden.mjs";
4
+ import { useCallback, useEffect, useRef } from "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ //#region src/components/Accessibility/AriaLiveOutlet.tsx
7
+ /**
8
+ * Dumb render target for the unified announcer. Registers itself with the nearest
9
+ * {@link AriaLiveAnnouncerProvider} and renders the polite/assertive live regions ONLY when
10
+ * it is the active (innermost) outlet, so exactly one region is live at a time — always in
11
+ * the active accessibility-tree scope. Mount one at the `Chat` root and one inside each
12
+ * `aria-modal` dialog (with a higher `layer`).
13
+ */
14
+ var AriaLiveOutlet = ({ layer = 0, portal = false }) => {
15
+ const context = useAriaLiveOutletContext();
16
+ const idRef = useRef(null);
17
+ if (idRef.current === null) idRef.current = Symbol("aria-live-outlet");
18
+ const registerOutlet = context?.registerOutlet;
19
+ const unregisterOutlet = context?.unregisterOutlet;
20
+ useEffect(() => {
21
+ const id = idRef.current;
22
+ if (!id || !registerOutlet || !unregisterOutlet) return;
23
+ registerOutlet(id, layer);
24
+ return () => unregisterOutlet(id);
25
+ }, [
26
+ layer,
27
+ registerOutlet,
28
+ unregisterOutlet
29
+ ]);
30
+ const getPortalDestination = useCallback(() => document.body, []);
31
+ if (!context || context.activeOutletId !== idRef.current) return null;
32
+ const { announcementsByPriority } = context;
33
+ const liveRegions = /* @__PURE__ */ jsxs(VisuallyHidden, { children: [/* @__PURE__ */ jsx("div", {
34
+ "aria-atomic": "false",
35
+ "aria-live": "polite",
36
+ "aria-relevant": "additions",
37
+ "data-testid": "str-chat__aria-live-region--polite",
38
+ role: "status",
39
+ children: announcementsByPriority.polite.map((announcement) => /* @__PURE__ */ jsx("div", { children: announcement.message }, announcement.id))
40
+ }), /* @__PURE__ */ jsx("div", {
41
+ "aria-atomic": "false",
42
+ "aria-live": "assertive",
43
+ "aria-relevant": "additions",
44
+ "data-testid": "str-chat__aria-live-region--assertive",
45
+ role: "alert",
46
+ children: announcementsByPriority.assertive.map((announcement) => /* @__PURE__ */ jsx("div", { children: announcement.message }, announcement.id))
47
+ })] });
48
+ if (!portal) return liveRegions;
49
+ return /* @__PURE__ */ jsx(Portal, {
50
+ getPortalDestination,
51
+ isOpen: true,
52
+ children: liveRegions
53
+ });
54
+ };
55
+ //#endregion
56
+ export { AriaLiveOutlet };
57
+
58
+ //# sourceMappingURL=AriaLiveOutlet.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AriaLiveOutlet.mjs","names":[],"sources":["../../../../src/components/Accessibility/AriaLiveOutlet.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef } from 'react';\n\nimport { useAriaLiveOutletContext } from './AriaLiveOutletContext';\nimport { Portal } from '../Portal/Portal';\nimport { VisuallyHidden } from '../VisuallyHidden';\n\nexport type AriaLiveOutletProps = {\n /**\n * Stacking layer. The {@link AriaLiveAnnouncerProvider} renders into the highest-layer\n * outlet (ties resolve to the most recently registered). Outlets inside an `aria-modal`\n * subtree must use a layer above the root outlet so announcements land inside the modal\n * (assistive technologies suppress live regions outside the active modal). Defaults to `0`.\n */\n layer?: number;\n /**\n * When true, render the live region into a `document.body` portal instead of in place.\n * Use for the root outlet; modal outlets must render in place (omit) so they stay inside\n * the `aria-modal` subtree.\n */\n portal?: boolean;\n};\n\n/**\n * Dumb render target for the unified announcer. Registers itself with the nearest\n * {@link AriaLiveAnnouncerProvider} and renders the polite/assertive live regions ONLY when\n * it is the active (innermost) outlet, so exactly one region is live at a time — always in\n * the active accessibility-tree scope. Mount one at the `Chat` root and one inside each\n * `aria-modal` dialog (with a higher `layer`).\n */\nexport const AriaLiveOutlet = ({ layer = 0, portal = false }: AriaLiveOutletProps) => {\n const context = useAriaLiveOutletContext();\n\n const idRef = useRef<symbol | null>(null);\n if (idRef.current === null) {\n idRef.current = Symbol('aria-live-outlet');\n }\n\n const registerOutlet = context?.registerOutlet;\n const unregisterOutlet = context?.unregisterOutlet;\n\n useEffect(() => {\n const id = idRef.current;\n if (!id || !registerOutlet || !unregisterOutlet) return;\n\n registerOutlet(id, layer);\n return () => unregisterOutlet(id);\n }, [layer, registerOutlet, unregisterOutlet]);\n\n const getPortalDestination = useCallback(() => document.body, []);\n\n if (!context || context.activeOutletId !== idRef.current) return null;\n\n const { announcementsByPriority } = context;\n\n const liveRegions = (\n <VisuallyHidden>\n <div\n aria-atomic='false'\n aria-live='polite'\n aria-relevant='additions'\n data-testid='str-chat__aria-live-region--polite'\n role='status'\n >\n {announcementsByPriority.polite.map((announcement) => (\n <div key={announcement.id}>{announcement.message}</div>\n ))}\n </div>\n <div\n aria-atomic='false'\n aria-live='assertive'\n aria-relevant='additions'\n data-testid='str-chat__aria-live-region--assertive'\n role='alert'\n >\n {announcementsByPriority.assertive.map((announcement) => (\n <div key={announcement.id}>{announcement.message}</div>\n ))}\n </div>\n </VisuallyHidden>\n );\n\n if (!portal) return liveRegions;\n\n return (\n <Portal getPortalDestination={getPortalDestination} isOpen>\n {liveRegions}\n </Portal>\n );\n};\n"],"mappings":";;;;;;;;;;;;;AA6BA,IAAa,kBAAkB,EAAE,QAAQ,GAAG,SAAS,YAAiC;CACpF,MAAM,UAAU,yBAAyB;CAEzC,MAAM,QAAQ,OAAsB,IAAI;CACxC,IAAI,MAAM,YAAY,MACpB,MAAM,UAAU,OAAO,kBAAkB;CAG3C,MAAM,iBAAiB,SAAS;CAChC,MAAM,mBAAmB,SAAS;CAElC,gBAAgB;EACd,MAAM,KAAK,MAAM;EACjB,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,kBAAkB;EAEjD,eAAe,IAAI,KAAK;EACxB,aAAa,iBAAiB,EAAE;CAClC,GAAG;EAAC;EAAO;EAAgB;CAAgB,CAAC;CAE5C,MAAM,uBAAuB,kBAAkB,SAAS,MAAM,CAAC,CAAC;CAEhE,IAAI,CAAC,WAAW,QAAQ,mBAAmB,MAAM,SAAS,OAAO;CAEjE,MAAM,EAAE,4BAA4B;CAEpC,MAAM,cACJ,qBAAC,gBAAD,EAAA,UAAA,CACE,oBAAC,OAAD;EACE,eAAY;EACZ,aAAU;EACV,iBAAc;EACd,eAAY;EACZ,MAAK;YAEJ,wBAAwB,OAAO,KAAK,iBACnC,oBAAC,OAAD,EAAA,UAA4B,aAAa,QAAa,GAA5C,aAAa,EAA+B,CACvD;CACE,CAAA,GACL,oBAAC,OAAD;EACE,eAAY;EACZ,aAAU;EACV,iBAAc;EACd,eAAY;EACZ,MAAK;YAEJ,wBAAwB,UAAU,KAAK,iBACtC,oBAAC,OAAD,EAAA,UAA4B,aAAa,QAAa,GAA5C,aAAa,EAA+B,CACvD;CACE,CAAA,CACS,EAAA,CAAA;CAGlB,IAAI,CAAC,QAAQ,OAAO;CAEpB,OACE,oBAAC,QAAD;EAA8B;EAAsB,QAAA;YACjD;CACK,CAAA;AAEZ"}
@@ -0,0 +1,8 @@
1
+ import { createContext, useContext } from "react";
2
+ //#region src/components/Accessibility/AriaLiveOutletContext.ts
3
+ var AriaLiveOutletContext = createContext(void 0);
4
+ var useAriaLiveOutletContext = () => useContext(AriaLiveOutletContext);
5
+ //#endregion
6
+ export { AriaLiveOutletContext, useAriaLiveOutletContext };
7
+
8
+ //# sourceMappingURL=AriaLiveOutletContext.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AriaLiveOutletContext.mjs","names":[],"sources":["../../../../src/components/Accessibility/AriaLiveOutletContext.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nimport type { AriaLivePriority } from './useAriaLiveAnnouncer';\n\nexport type LiveAnnouncement = {\n id: number;\n message: string;\n};\n\nexport type AnnouncementsByPriority = {\n [key in AriaLivePriority]: LiveAnnouncement[];\n};\n\n/**\n * Internal coordination context between {@link AriaLiveAnnouncerProvider} (which owns the\n * announcement state and the outlet stack) and the {@link AriaLiveOutlet}s that render the\n * live regions. Not part of the public API — consumers announce via `useAriaLiveAnnouncer`.\n */\nexport type AriaLiveOutletContextValue = {\n /** The id of the single outlet that should currently render the live regions. */\n activeOutletId: symbol | null;\n /** Current announcements grouped by aria-live priority. */\n announcementsByPriority: AnnouncementsByPriority;\n /** Register an outlet. Higher `layer` wins; ties resolve to the most recently registered. */\n registerOutlet: (id: symbol, layer: number) => void;\n unregisterOutlet: (id: symbol) => void;\n};\n\nexport const AriaLiveOutletContext = createContext<\n AriaLiveOutletContextValue | undefined\n>(undefined);\n\nexport const useAriaLiveOutletContext = () => useContext(AriaLiveOutletContext);\n"],"mappings":";;AA4BA,IAAa,wBAAwB,cAEnC,KAAA,CAAS;AAEX,IAAa,iCAAiC,WAAW,qBAAqB"}
@@ -0,0 +1,87 @@
1
+ import { useTranslationContext } from "../../context/TranslationContext.mjs";
2
+ import { useAriaLiveAnnouncer } from "./useAriaLiveAnnouncer.mjs";
3
+ import { useAnnouncementQueue } from "./scheduling/useAnnouncementQueue.mjs";
4
+ import { useNotifications } from "../Notifications/hooks/useNotifications.mjs";
5
+ import { useEffect, useRef } from "react";
6
+ //#region src/components/Accessibility/NotificationAnnouncer.tsx
7
+ var getAnnouncementPriority = (notification) => notification.severity === "error" ? "assertive" : "polite";
8
+ var getSeverityLabel = (notification) => {
9
+ if (!notification.severity) return null;
10
+ return `${notification.severity[0].toUpperCase()}${notification.severity.slice(1)}`;
11
+ };
12
+ var getDefaultAnnouncementMessage = (notification, message) => {
13
+ const severityLabel = getSeverityLabel(notification);
14
+ if (severityLabel) return `${severityLabel} notification: ${message}`;
15
+ return `Notification: ${message}`;
16
+ };
17
+ var defaultBuildNotificationAnnouncement = ({ defaultMessage }) => defaultMessage;
18
+ var defaultNotificationFilter = () => true;
19
+ /**
20
+ * Announces app notifications to assistive technology.
21
+ *
22
+ * As of the announcer unification this renders **no live region of its own** — it routes new
23
+ * notifications through the shared {@link useAriaLiveAnnouncer} sink (so they land in the active
24
+ * {@link AriaLiveOutlet}, including inside an open modal) and paces them with
25
+ * {@link useAnnouncementQueue}.
26
+ *
27
+ * ## Required context (contract)
28
+ * `NotificationAnnouncer` **must** be rendered inside an `AriaLiveAnnouncerProvider`. `Chat` mounts
29
+ * that provider (with a root, portalled `AriaLiveOutlet`), so the default component tree already
30
+ * satisfies this and no extra setup is needed.
31
+ *
32
+ * Rendered **without** a provider ancestor it mounts successfully but **announces nothing** —
33
+ * `useAriaLiveAnnouncer()` returns a no-op and logs a `console.warn` ("… called outside of an
34
+ * AriaLiveAnnouncerProvider"). This is intentional post-F4: the component no longer carries a
35
+ * fallback live region, so a single announcer owns all output and there are no duplicate/competing
36
+ * regions. If you render it outside `Chat`, wrap it in `AriaLiveAnnouncerProvider` + `AriaLiveOutlet`
37
+ * yourself.
38
+ */
39
+ var NotificationAnnouncer = ({ buildNotificationAnnouncement = defaultBuildNotificationAnnouncement, notificationFilter = defaultNotificationFilter }) => {
40
+ const { t } = useTranslationContext();
41
+ const notifications = useNotifications();
42
+ const { enqueue } = useAnnouncementQueue(useAriaLiveAnnouncer());
43
+ const initializedRef = useRef(false);
44
+ const seenNotificationIdsRef = useRef(/* @__PURE__ */ new Set());
45
+ useEffect(() => {
46
+ const visibleNotificationIds = new Set(notifications.map(({ id }) => id));
47
+ seenNotificationIdsRef.current.forEach((id) => {
48
+ if (!visibleNotificationIds.has(id)) seenNotificationIdsRef.current.delete(id);
49
+ });
50
+ if (!initializedRef.current) {
51
+ notifications.forEach(({ id }) => seenNotificationIdsRef.current.add(id));
52
+ initializedRef.current = true;
53
+ return;
54
+ }
55
+ notifications.forEach((notification) => {
56
+ if (seenNotificationIdsRef.current.has(notification.id)) return;
57
+ seenNotificationIdsRef.current.add(notification.id);
58
+ if (!notificationFilter(notification)) return;
59
+ const message = t("translationBuilderTopic/notification", {
60
+ notification,
61
+ value: notification.message
62
+ });
63
+ if (!message) return;
64
+ const announcementMessage = buildNotificationAnnouncement({
65
+ defaultMessage: getDefaultAnnouncementMessage(notification, message),
66
+ notification,
67
+ translatedMessage: message
68
+ });
69
+ if (!announcementMessage) return;
70
+ enqueue({
71
+ message: announcementMessage,
72
+ priority: getAnnouncementPriority(notification)
73
+ });
74
+ });
75
+ }, [
76
+ buildNotificationAnnouncement,
77
+ enqueue,
78
+ notificationFilter,
79
+ notifications,
80
+ t
81
+ ]);
82
+ return null;
83
+ };
84
+ //#endregion
85
+ export { NotificationAnnouncer };
86
+
87
+ //# sourceMappingURL=NotificationAnnouncer.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotificationAnnouncer.mjs","names":[],"sources":["../../../../src/components/Accessibility/NotificationAnnouncer.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport type { Notification } from 'stream-chat';\n\nimport { useAnnouncementQueue } from './scheduling';\nimport { useAriaLiveAnnouncer } from './useAriaLiveAnnouncer';\nimport type { AriaLivePriority } from './useAriaLiveAnnouncer';\nimport { useNotifications } from '../Notifications';\nimport { useTranslationContext } from '../../context';\n\nexport type NotificationAnnouncementBuilderParams = {\n defaultMessage: string;\n notification: Notification;\n translatedMessage: string;\n};\n\nexport type NotificationAnnouncementBuilder = (\n params: NotificationAnnouncementBuilderParams,\n) => string;\nexport type NotificationAnnouncementFilter = (notification: Notification) => boolean;\n\nconst getAnnouncementPriority = (notification: Notification): AriaLivePriority =>\n notification.severity === 'error' ? 'assertive' : 'polite';\n\nconst getSeverityLabel = (notification: Notification) => {\n if (!notification.severity) return null;\n return `${notification.severity[0].toUpperCase()}${notification.severity.slice(1)}`;\n};\n\nconst getDefaultAnnouncementMessage = (notification: Notification, message: string) => {\n const severityLabel = getSeverityLabel(notification);\n\n if (severityLabel) {\n return `${severityLabel} notification: ${message}`;\n }\n\n return `Notification: ${message}`;\n};\n\nexport type NotificationAnnouncerProps = {\n buildNotificationAnnouncement?: NotificationAnnouncementBuilder;\n notificationFilter?: NotificationAnnouncementFilter;\n};\n\nconst defaultBuildNotificationAnnouncement: NotificationAnnouncementBuilder = ({\n defaultMessage,\n}) => defaultMessage;\nconst defaultNotificationFilter: NotificationAnnouncementFilter = () => true;\n\n/**\n * Announces app notifications to assistive technology.\n *\n * As of the announcer unification this renders **no live region of its own** — it routes new\n * notifications through the shared {@link useAriaLiveAnnouncer} sink (so they land in the active\n * {@link AriaLiveOutlet}, including inside an open modal) and paces them with\n * {@link useAnnouncementQueue}.\n *\n * ## Required context (contract)\n * `NotificationAnnouncer` **must** be rendered inside an `AriaLiveAnnouncerProvider`. `Chat` mounts\n * that provider (with a root, portalled `AriaLiveOutlet`), so the default component tree already\n * satisfies this and no extra setup is needed.\n *\n * Rendered **without** a provider ancestor it mounts successfully but **announces nothing** —\n * `useAriaLiveAnnouncer()` returns a no-op and logs a `console.warn` (\"… called outside of an\n * AriaLiveAnnouncerProvider\"). This is intentional post-F4: the component no longer carries a\n * fallback live region, so a single announcer owns all output and there are no duplicate/competing\n * regions. If you render it outside `Chat`, wrap it in `AriaLiveAnnouncerProvider` + `AriaLiveOutlet`\n * yourself.\n */\nexport const NotificationAnnouncer = ({\n buildNotificationAnnouncement = defaultBuildNotificationAnnouncement,\n notificationFilter = defaultNotificationFilter,\n}: NotificationAnnouncerProps) => {\n const { t } = useTranslationContext();\n const notifications = useNotifications();\n const announce = useAriaLiveAnnouncer();\n const { enqueue } = useAnnouncementQueue(announce);\n\n const initializedRef = useRef(false);\n const seenNotificationIdsRef = useRef(new Set<string>());\n\n useEffect(() => {\n const visibleNotificationIds = new Set(notifications.map(({ id }) => id));\n\n seenNotificationIdsRef.current.forEach((id) => {\n if (!visibleNotificationIds.has(id)) {\n seenNotificationIdsRef.current.delete(id);\n }\n });\n\n // Do not announce notifications already present on first render.\n if (!initializedRef.current) {\n notifications.forEach(({ id }) => seenNotificationIdsRef.current.add(id));\n initializedRef.current = true;\n return;\n }\n\n notifications.forEach((notification) => {\n if (seenNotificationIdsRef.current.has(notification.id)) return;\n\n seenNotificationIdsRef.current.add(notification.id);\n if (!notificationFilter(notification)) return;\n\n const message = t('translationBuilderTopic/notification', {\n notification,\n value: notification.message,\n });\n\n if (!message) return;\n\n const defaultMessage = getDefaultAnnouncementMessage(notification, message);\n const announcementMessage = buildNotificationAnnouncement({\n defaultMessage,\n notification,\n translatedMessage: message,\n });\n\n if (!announcementMessage) return;\n\n enqueue({\n message: announcementMessage,\n priority: getAnnouncementPriority(notification),\n });\n });\n }, [buildNotificationAnnouncement, enqueue, notificationFilter, notifications, t]);\n\n return null;\n};\n"],"mappings":";;;;;;AAoBA,IAAM,2BAA2B,iBAC/B,aAAa,aAAa,UAAU,cAAc;AAEpD,IAAM,oBAAoB,iBAA+B;CACvD,IAAI,CAAC,aAAa,UAAU,OAAO;CACnC,OAAO,GAAG,aAAa,SAAS,EAAE,CAAC,YAAY,IAAI,aAAa,SAAS,MAAM,CAAC;AAClF;AAEA,IAAM,iCAAiC,cAA4B,YAAoB;CACrF,MAAM,gBAAgB,iBAAiB,YAAY;CAEnD,IAAI,eACF,OAAO,GAAG,cAAc,iBAAiB;CAG3C,OAAO,iBAAiB;AAC1B;AAOA,IAAM,wCAAyE,EAC7E,qBACI;AACN,IAAM,kCAAkE;;;;;;;;;;;;;;;;;;;;;AAsBxE,IAAa,yBAAyB,EACpC,gCAAgC,sCAChC,qBAAqB,gCACW;CAChC,MAAM,EAAE,MAAM,sBAAsB;CACpC,MAAM,gBAAgB,iBAAiB;CAEvC,MAAM,EAAE,YAAY,qBADH,qBACwB,CAAQ;CAEjD,MAAM,iBAAiB,OAAO,KAAK;CACnC,MAAM,yBAAyB,uBAAO,IAAI,IAAY,CAAC;CAEvD,gBAAgB;EACd,MAAM,yBAAyB,IAAI,IAAI,cAAc,KAAK,EAAE,SAAS,EAAE,CAAC;EAExE,uBAAuB,QAAQ,SAAS,OAAO;GAC7C,IAAI,CAAC,uBAAuB,IAAI,EAAE,GAChC,uBAAuB,QAAQ,OAAO,EAAE;EAE5C,CAAC;EAGD,IAAI,CAAC,eAAe,SAAS;GAC3B,cAAc,SAAS,EAAE,SAAS,uBAAuB,QAAQ,IAAI,EAAE,CAAC;GACxE,eAAe,UAAU;GACzB;EACF;EAEA,cAAc,SAAS,iBAAiB;GACtC,IAAI,uBAAuB,QAAQ,IAAI,aAAa,EAAE,GAAG;GAEzD,uBAAuB,QAAQ,IAAI,aAAa,EAAE;GAClD,IAAI,CAAC,mBAAmB,YAAY,GAAG;GAEvC,MAAM,UAAU,EAAE,wCAAwC;IACxD;IACA,OAAO,aAAa;GACtB,CAAC;GAED,IAAI,CAAC,SAAS;GAGd,MAAM,sBAAsB,8BAA8B;IACxD,gBAFqB,8BAA8B,cAAc,OAEjE;IACA;IACA,mBAAmB;GACrB,CAAC;GAED,IAAI,CAAC,qBAAqB;GAE1B,QAAQ;IACN,SAAS;IACT,UAAU,wBAAwB,YAAY;GAChD,CAAC;EACH,CAAC;CACH,GAAG;EAAC;EAA+B;EAAS;EAAoB;EAAe;CAAC,CAAC;CAEjF,OAAO;AACT"}
@@ -0,0 +1,20 @@
1
+ import { useStateStore } from "../../../store/hooks/useStateStore.mjs";
2
+ import { useInteractionAnnouncements } from "./useInteractionAnnouncements.mjs";
3
+ import { useEffect, useRef } from "react";
4
+ //#region src/components/Accessibility/hooks/useAudioPlaybackChangeAnnouncements.ts
5
+ var playbackRateSelector = (state) => ({ currentPlaybackRate: state.currentPlaybackRate });
6
+ var useAudioPlaybackChangeAnnouncements = (audioPlayer) => {
7
+ const { announceInteraction } = useInteractionAnnouncements();
8
+ const { currentPlaybackRate } = useStateStore(audioPlayer?.state, playbackRateSelector) ?? {};
9
+ const previousPlaybackRateRef = useRef(currentPlaybackRate);
10
+ useEffect(() => {
11
+ const previous = previousPlaybackRateRef.current;
12
+ previousPlaybackRateRef.current = currentPlaybackRate;
13
+ if (currentPlaybackRate === void 0 || previous === void 0 || previous === currentPlaybackRate) return;
14
+ announceInteraction("audioPlayer.playbackRateChanged", { rate: currentPlaybackRate });
15
+ }, [announceInteraction, currentPlaybackRate]);
16
+ };
17
+ //#endregion
18
+ export { useAudioPlaybackChangeAnnouncements };
19
+
20
+ //# sourceMappingURL=useAudioPlaybackChangeAnnouncements.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAudioPlaybackChangeAnnouncements.mjs","names":[],"sources":["../../../../../src/components/Accessibility/hooks/useAudioPlaybackChangeAnnouncements.ts"],"sourcesContent":["import type { AudioPlayer, AudioPlayerState } from '../../AudioPlayback';\nimport { useInteractionAnnouncements } from './useInteractionAnnouncements';\nimport { useStateStore } from '../../../store';\nimport { useEffect, useRef } from 'react';\n\nconst playbackRateSelector = (state: AudioPlayerState) => ({\n currentPlaybackRate: state.currentPlaybackRate,\n});\n\nexport const useAudioPlaybackChangeAnnouncements = (\n audioPlayer: AudioPlayer | undefined,\n) => {\n const { announceInteraction } = useInteractionAnnouncements();\n\n // Announce a playback-speed change to assistive tech. The rate button only changes an icon/label\n // in place, so a screen reader gets no confirmation; announce off the state so it reflects the new\n // rate regardless of which widget's button was pressed (voice recording or audio attachment).\n const { currentPlaybackRate } =\n useStateStore(audioPlayer?.state, playbackRateSelector) ?? {};\n const previousPlaybackRateRef = useRef(currentPlaybackRate);\n useEffect(() => {\n const previous = previousPlaybackRateRef.current;\n previousPlaybackRateRef.current = currentPlaybackRate;\n // Skip the initial value and no-op re-renders; announce only a real change to a defined rate.\n if (\n currentPlaybackRate === undefined ||\n previous === undefined ||\n previous === currentPlaybackRate\n )\n return;\n announceInteraction('audioPlayer.playbackRateChanged', { rate: currentPlaybackRate });\n }, [announceInteraction, currentPlaybackRate]);\n};\n"],"mappings":";;;;AAKA,IAAM,wBAAwB,WAA6B,EACzD,qBAAqB,MAAM,oBAC7B;AAEA,IAAa,uCACX,gBACG;CACH,MAAM,EAAE,wBAAwB,4BAA4B;CAK5D,MAAM,EAAE,wBACN,cAAc,aAAa,OAAO,oBAAoB,KAAK,CAAC;CAC9D,MAAM,0BAA0B,OAAO,mBAAmB;CAC1D,gBAAgB;EACd,MAAM,WAAW,wBAAwB;EACzC,wBAAwB,UAAU;EAElC,IACE,wBAAwB,KAAA,KACxB,aAAa,KAAA,KACb,aAAa,qBAEb;EACF,oBAAoB,mCAAmC,EAAE,MAAM,oBAAoB,CAAC;CACtF,GAAG,CAAC,qBAAqB,mBAAmB,CAAC;AAC/C"}
@@ -0,0 +1,37 @@
1
+ import { useCallback, useRef } from "react";
2
+ //#region src/components/Accessibility/hooks/useFocusReturn.ts
3
+ var isFocusableElement = (value) => value instanceof HTMLElement && typeof value.focus === "function";
4
+ /**
5
+ * Generic focus-restoration primitive: capture-before-steal, restore-on-finish —
6
+ * the pattern dialogs/popovers use. A transient surface (e.g. the Giphy preview)
7
+ * `reserve()`s before it moves focus into itself, then `restore()`s when it
8
+ * completes, returning focus to wherever it was — WITHOUT the surface knowing or
9
+ * naming that element (no coupling to "the composer").
10
+ *
11
+ * Single-candidate by design: each consumer holds its own reservation in a ref,
12
+ * so concurrent/nested transient surfaces never clobber each other (each restores
13
+ * its own origin). There is one `document.activeElement` at a time, and these
14
+ * flows are mutually exclusive, so no shared slot/stack/key registry is needed.
15
+ * If a cross-component rendezvous or deep nesting ever appears, a stack (nesting)
16
+ * or coarse typed keys (rendezvous) can be added without changing this API.
17
+ *
18
+ * React 17/18/19 compatible — `useRef`/`useCallback` only.
19
+ */
20
+ var useFocusReturn = () => {
21
+ const reservedTargetRef = useRef(null);
22
+ return {
23
+ reserve: useCallback((options) => {
24
+ const candidate = options?.target ?? document.activeElement;
25
+ reservedTargetRef.current = isFocusableElement(candidate) && candidate !== document.body ? candidate : null;
26
+ }, []),
27
+ restore: useCallback(() => {
28
+ const target = reservedTargetRef.current;
29
+ reservedTargetRef.current = null;
30
+ if (target?.isConnected) target.focus();
31
+ }, [])
32
+ };
33
+ };
34
+ //#endregion
35
+ export { useFocusReturn };
36
+
37
+ //# sourceMappingURL=useFocusReturn.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFocusReturn.mjs","names":[],"sources":["../../../../../src/components/Accessibility/hooks/useFocusReturn.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\n\nexport type ReserveFocusReturnOptions = {\n /**\n * Explicit element focus should return to. Defaults to the current\n * `document.activeElement` (the natural \"origin\" — e.g. the composer when a\n * transient surface steals focus). Provide this when the desired return target\n * is NOT where focus currently is. A non-focusable value (or `document.body`)\n * reserves nothing.\n */\n target?: HTMLElement | null;\n};\n\nexport type UseFocusReturnResult = {\n /**\n * Capture the element focus should return to. Called with no argument it\n * captures the current `document.activeElement`; pass `{ target }` to override.\n * Options is an object for forward-compatibility (future flags add fields here\n * without changing the call signature).\n */\n reserve: (options?: ReserveFocusReturnOptions) => void;\n /**\n * Move focus back to the reserved element (if it is still connected) and clear\n * the reservation. No-op when nothing was reserved or the element is gone.\n * Focuses synchronously — defer announcements yourself if you need the focus\n * announcement to be spoken first.\n */\n restore: () => void;\n};\n\nconst isFocusableElement = (value: Element | null): value is HTMLElement =>\n value instanceof HTMLElement && typeof value.focus === 'function';\n\n/**\n * Generic focus-restoration primitive: capture-before-steal, restore-on-finish —\n * the pattern dialogs/popovers use. A transient surface (e.g. the Giphy preview)\n * `reserve()`s before it moves focus into itself, then `restore()`s when it\n * completes, returning focus to wherever it was — WITHOUT the surface knowing or\n * naming that element (no coupling to \"the composer\").\n *\n * Single-candidate by design: each consumer holds its own reservation in a ref,\n * so concurrent/nested transient surfaces never clobber each other (each restores\n * its own origin). There is one `document.activeElement` at a time, and these\n * flows are mutually exclusive, so no shared slot/stack/key registry is needed.\n * If a cross-component rendezvous or deep nesting ever appears, a stack (nesting)\n * or coarse typed keys (rendezvous) can be added without changing this API.\n *\n * React 17/18/19 compatible — `useRef`/`useCallback` only.\n */\nexport const useFocusReturn = (): UseFocusReturnResult => {\n const reservedTargetRef = useRef<HTMLElement | null>(null);\n\n const reserve = useCallback((options?: ReserveFocusReturnOptions) => {\n const candidate = options?.target ?? (document.activeElement as Element | null);\n reservedTargetRef.current =\n isFocusableElement(candidate) && candidate !== document.body ? candidate : null;\n }, []);\n\n const restore = useCallback(() => {\n const target = reservedTargetRef.current;\n reservedTargetRef.current = null;\n if (target?.isConnected) target.focus();\n }, []);\n\n return { reserve, restore };\n};\n"],"mappings":";;AA8BA,IAAM,sBAAsB,UAC1B,iBAAiB,eAAe,OAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;AAkBzD,IAAa,uBAA6C;CACxD,MAAM,oBAAoB,OAA2B,IAAI;CAczD,OAAO;EAAE,SAZO,aAAa,YAAwC;GACnE,MAAM,YAAY,SAAS,UAAW,SAAS;GAC/C,kBAAkB,UAChB,mBAAmB,SAAS,KAAK,cAAc,SAAS,OAAO,YAAY;EAC/E,GAAG,CAAC,CAQK;EAAS,SANF,kBAAkB;GAChC,MAAM,SAAS,kBAAkB;GACjC,kBAAkB,UAAU;GAC5B,IAAI,QAAQ,aAAa,OAAO,MAAM;EACxC,GAAG,CAAC,CAEc;CAAQ;AAC5B"}
@@ -0,0 +1,84 @@
1
+ import { useTranslationContext } from "../../../context/TranslationContext.mjs";
2
+ import { useAriaLiveAnnouncer } from "../useAriaLiveAnnouncer.mjs";
3
+ import { useCallback, useEffect, useRef } from "react";
4
+ //#region src/components/Accessibility/hooks/useIncomingMessageAnnouncements.ts
5
+ var MESSAGE_ANNOUNCEMENT_THROTTLE_MS = 1e3;
6
+ var isAnnounceableIncomingMessage = (message, ownUserId) => {
7
+ const messageUserId = message.user?.id;
8
+ if (!message.id || !messageUserId || messageUserId === ownUserId) return false;
9
+ return message.type !== "deleted" && message.type !== "ephemeral" && message.type !== "error" && message.type !== "system" && message.status !== "failed" && message.status !== "sending";
10
+ };
11
+ var getSenderName = (message, t) => message.user?.name?.trim() || message.user?.id || t("Anonymous");
12
+ var useIncomingMessageAnnouncements = ({ activeThreadId, channel, ownUserId, threadList = false }) => {
13
+ const announce = useAriaLiveAnnouncer();
14
+ const { t } = useTranslationContext("useIncomingMessageAnnouncements");
15
+ const lastAnnouncementTimestampRef = useRef(0);
16
+ const flushTimeoutRef = useRef(void 0);
17
+ const announcedMessageIdsRef = useRef(/* @__PURE__ */ new Set());
18
+ const pendingAnnouncementBatchRef = useRef({
19
+ count: 0,
20
+ firstSender: null
21
+ });
22
+ const flushPendingAnnouncements = useCallback(() => {
23
+ const pendingAnnouncementBatch = pendingAnnouncementBatchRef.current;
24
+ if (pendingAnnouncementBatch.count <= 0) return;
25
+ if (pendingAnnouncementBatch.count === 1) announce(t("New message from {{user}}", { user: pendingAnnouncementBatch.firstSender || t("Anonymous") }));
26
+ else announce(t("{{count}} new messages", { count: pendingAnnouncementBatch.count }));
27
+ pendingAnnouncementBatch.count = 0;
28
+ pendingAnnouncementBatch.firstSender = null;
29
+ lastAnnouncementTimestampRef.current = Date.now();
30
+ }, [announce, t]);
31
+ const scheduleFlush = useCallback(() => {
32
+ if (flushTimeoutRef.current) return;
33
+ const elapsedSinceLastAnnouncement = Date.now() - lastAnnouncementTimestampRef.current;
34
+ if (elapsedSinceLastAnnouncement >= MESSAGE_ANNOUNCEMENT_THROTTLE_MS) {
35
+ flushPendingAnnouncements();
36
+ return;
37
+ }
38
+ flushTimeoutRef.current = setTimeout(() => {
39
+ flushTimeoutRef.current = void 0;
40
+ flushPendingAnnouncements();
41
+ }, MESSAGE_ANNOUNCEMENT_THROTTLE_MS - elapsedSinceLastAnnouncement);
42
+ }, [flushPendingAnnouncements]);
43
+ useEffect(() => () => {
44
+ if (flushTimeoutRef.current) clearTimeout(flushTimeoutRef.current);
45
+ }, []);
46
+ useEffect(() => {
47
+ if (!channel) return;
48
+ const handleMessageNew = (event) => {
49
+ const message = event.message;
50
+ if (!message) return;
51
+ if (event.cid && event.cid !== channel.cid || !isAnnounceableIncomingMessage(message, ownUserId)) return;
52
+ const isReply = !!message.parent_id;
53
+ const belongsToActiveThread = !!activeThreadId && message.parent_id === activeThreadId;
54
+ if (!(threadList && belongsToActiveThread) && !(!threadList && !isReply)) return;
55
+ if (announcedMessageIdsRef.current.has(message.id || "")) return;
56
+ if (message.id) {
57
+ if (announcedMessageIdsRef.current.size > 500) announcedMessageIdsRef.current.clear();
58
+ announcedMessageIdsRef.current.add(message.id);
59
+ }
60
+ pendingAnnouncementBatchRef.current.count += 1;
61
+ if (!pendingAnnouncementBatchRef.current.firstSender) pendingAnnouncementBatchRef.current.firstSender = getSenderName(message, t);
62
+ scheduleFlush();
63
+ };
64
+ const subscription = channel.on("message.new", handleMessageNew);
65
+ return () => {
66
+ subscription.unsubscribe();
67
+ if (flushTimeoutRef.current) {
68
+ clearTimeout(flushTimeoutRef.current);
69
+ flushTimeoutRef.current = void 0;
70
+ }
71
+ };
72
+ }, [
73
+ activeThreadId,
74
+ channel,
75
+ ownUserId,
76
+ scheduleFlush,
77
+ t,
78
+ threadList
79
+ ]);
80
+ };
81
+ //#endregion
82
+ export { useIncomingMessageAnnouncements };
83
+
84
+ //# sourceMappingURL=useIncomingMessageAnnouncements.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIncomingMessageAnnouncements.mjs","names":[],"sources":["../../../../../src/components/Accessibility/hooks/useIncomingMessageAnnouncements.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\nimport type { Channel, Event, MessageResponse } from 'stream-chat';\n\nimport { useAriaLiveAnnouncer } from '../useAriaLiveAnnouncer';\nimport { useTranslationContext } from '../../../context/TranslationContext';\n\nconst MESSAGE_ANNOUNCEMENT_THROTTLE_MS = 1000;\n\nconst isAnnounceableIncomingMessage = (\n message: MessageResponse,\n ownUserId?: string,\n): boolean => {\n const messageUserId = message.user?.id;\n\n if (!message.id || !messageUserId || messageUserId === ownUserId) {\n return false;\n }\n\n return (\n message.type !== 'deleted' &&\n message.type !== 'ephemeral' &&\n message.type !== 'error' &&\n message.type !== 'system' &&\n message.status !== 'failed' &&\n message.status !== 'sending'\n );\n};\n\nconst getSenderName = (\n message: MessageResponse,\n t: ReturnType<typeof useTranslationContext>['t'],\n) => message.user?.name?.trim() || message.user?.id || t('Anonymous');\n\nexport type UseIncomingMessageAnnouncementsParams = {\n activeThreadId?: string;\n channel?: Channel;\n ownUserId?: string;\n threadList?: boolean;\n};\n\nexport const useIncomingMessageAnnouncements = ({\n activeThreadId,\n channel,\n ownUserId,\n threadList = false,\n}: UseIncomingMessageAnnouncementsParams) => {\n const announce = useAriaLiveAnnouncer();\n const { t } = useTranslationContext('useIncomingMessageAnnouncements');\n const lastAnnouncementTimestampRef = useRef(0);\n const flushTimeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const announcedMessageIdsRef = useRef(new Set<string>());\n const pendingAnnouncementBatchRef = useRef<{\n count: number;\n firstSender: string | null;\n }>({\n count: 0,\n firstSender: null,\n });\n\n const flushPendingAnnouncements = useCallback(() => {\n const pendingAnnouncementBatch = pendingAnnouncementBatchRef.current;\n\n if (pendingAnnouncementBatch.count <= 0) return;\n\n if (pendingAnnouncementBatch.count === 1) {\n announce(\n t('New message from {{user}}', {\n user: pendingAnnouncementBatch.firstSender || t('Anonymous'),\n }),\n );\n } else {\n announce(t('{{count}} new messages', { count: pendingAnnouncementBatch.count }));\n }\n\n pendingAnnouncementBatch.count = 0;\n pendingAnnouncementBatch.firstSender = null;\n lastAnnouncementTimestampRef.current = Date.now();\n }, [announce, t]);\n\n const scheduleFlush = useCallback(() => {\n if (flushTimeoutRef.current) return;\n\n const now = Date.now();\n const elapsedSinceLastAnnouncement = now - lastAnnouncementTimestampRef.current;\n\n if (elapsedSinceLastAnnouncement >= MESSAGE_ANNOUNCEMENT_THROTTLE_MS) {\n flushPendingAnnouncements();\n return;\n }\n\n flushTimeoutRef.current = setTimeout(() => {\n flushTimeoutRef.current = undefined;\n flushPendingAnnouncements();\n }, MESSAGE_ANNOUNCEMENT_THROTTLE_MS - elapsedSinceLastAnnouncement);\n }, [flushPendingAnnouncements]);\n\n useEffect(\n () => () => {\n if (flushTimeoutRef.current) {\n clearTimeout(flushTimeoutRef.current);\n }\n },\n [],\n );\n\n useEffect(() => {\n if (!channel) {\n return;\n }\n\n const handleMessageNew = (event: Event) => {\n const message = event.message;\n if (!message) return;\n\n if (\n (event.cid && event.cid !== channel.cid) ||\n !isAnnounceableIncomingMessage(message, ownUserId)\n ) {\n return;\n }\n\n const isReply = !!message.parent_id;\n const belongsToActiveThread =\n !!activeThreadId && message.parent_id === activeThreadId;\n const shouldAnnounceInThreadList = threadList && belongsToActiveThread;\n const shouldAnnounceInMainList = !threadList && !isReply;\n\n if (!shouldAnnounceInThreadList && !shouldAnnounceInMainList) {\n return;\n }\n\n if (announcedMessageIdsRef.current.has(message.id || '')) {\n return;\n }\n\n if (message.id) {\n if (announcedMessageIdsRef.current.size > 500) {\n announcedMessageIdsRef.current.clear();\n }\n announcedMessageIdsRef.current.add(message.id);\n }\n\n pendingAnnouncementBatchRef.current.count += 1;\n if (!pendingAnnouncementBatchRef.current.firstSender) {\n pendingAnnouncementBatchRef.current.firstSender = getSenderName(message, t);\n }\n\n scheduleFlush();\n };\n\n const subscription = channel.on('message.new', handleMessageNew);\n\n return () => {\n subscription.unsubscribe();\n if (flushTimeoutRef.current) {\n clearTimeout(flushTimeoutRef.current);\n flushTimeoutRef.current = undefined;\n }\n };\n }, [activeThreadId, channel, ownUserId, scheduleFlush, t, threadList]);\n};\n"],"mappings":";;;;AAMA,IAAM,mCAAmC;AAEzC,IAAM,iCACJ,SACA,cACY;CACZ,MAAM,gBAAgB,QAAQ,MAAM;CAEpC,IAAI,CAAC,QAAQ,MAAM,CAAC,iBAAiB,kBAAkB,WACrD,OAAO;CAGT,OACE,QAAQ,SAAS,aACjB,QAAQ,SAAS,eACjB,QAAQ,SAAS,WACjB,QAAQ,SAAS,YACjB,QAAQ,WAAW,YACnB,QAAQ,WAAW;AAEvB;AAEA,IAAM,iBACJ,SACA,MACG,QAAQ,MAAM,MAAM,KAAK,KAAK,QAAQ,MAAM,MAAM,EAAE,WAAW;AASpE,IAAa,mCAAmC,EAC9C,gBACA,SACA,WACA,aAAa,YAC8B;CAC3C,MAAM,WAAW,qBAAqB;CACtC,MAAM,EAAE,MAAM,sBAAsB,iCAAiC;CACrE,MAAM,+BAA+B,OAAO,CAAC;CAC7C,MAAM,kBAAkB,OAAkD,KAAA,CAAS;CACnF,MAAM,yBAAyB,uBAAO,IAAI,IAAY,CAAC;CACvD,MAAM,8BAA8B,OAGjC;EACD,OAAO;EACP,aAAa;CACf,CAAC;CAED,MAAM,4BAA4B,kBAAkB;EAClD,MAAM,2BAA2B,4BAA4B;EAE7D,IAAI,yBAAyB,SAAS,GAAG;EAEzC,IAAI,yBAAyB,UAAU,GACrC,SACE,EAAE,6BAA6B,EAC7B,MAAM,yBAAyB,eAAe,EAAE,WAAW,EAC7D,CAAC,CACH;OAEA,SAAS,EAAE,0BAA0B,EAAE,OAAO,yBAAyB,MAAM,CAAC,CAAC;EAGjF,yBAAyB,QAAQ;EACjC,yBAAyB,cAAc;EACvC,6BAA6B,UAAU,KAAK,IAAI;CAClD,GAAG,CAAC,UAAU,CAAC,CAAC;CAEhB,MAAM,gBAAgB,kBAAkB;EACtC,IAAI,gBAAgB,SAAS;EAG7B,MAAM,+BADM,KAAK,IACoB,IAAM,6BAA6B;EAExE,IAAI,gCAAgC,kCAAkC;GACpE,0BAA0B;GAC1B;EACF;EAEA,gBAAgB,UAAU,iBAAiB;GACzC,gBAAgB,UAAU,KAAA;GAC1B,0BAA0B;EAC5B,GAAG,mCAAmC,4BAA4B;CACpE,GAAG,CAAC,yBAAyB,CAAC;CAE9B,sBACc;EACV,IAAI,gBAAgB,SAClB,aAAa,gBAAgB,OAAO;CAExC,GACA,CAAC,CACH;CAEA,gBAAgB;EACd,IAAI,CAAC,SACH;EAGF,MAAM,oBAAoB,UAAiB;GACzC,MAAM,UAAU,MAAM;GACtB,IAAI,CAAC,SAAS;GAEd,IACG,MAAM,OAAO,MAAM,QAAQ,QAAQ,OACpC,CAAC,8BAA8B,SAAS,SAAS,GAEjD;GAGF,MAAM,UAAU,CAAC,CAAC,QAAQ;GAC1B,MAAM,wBACJ,CAAC,CAAC,kBAAkB,QAAQ,cAAc;GAI5C,IAAI,EAH+B,cAAc,0BAGd,EAFF,CAAC,cAAc,CAAC,UAG/C;GAGF,IAAI,uBAAuB,QAAQ,IAAI,QAAQ,MAAM,EAAE,GACrD;GAGF,IAAI,QAAQ,IAAI;IACd,IAAI,uBAAuB,QAAQ,OAAO,KACxC,uBAAuB,QAAQ,MAAM;IAEvC,uBAAuB,QAAQ,IAAI,QAAQ,EAAE;GAC/C;GAEA,4BAA4B,QAAQ,SAAS;GAC7C,IAAI,CAAC,4BAA4B,QAAQ,aACvC,4BAA4B,QAAQ,cAAc,cAAc,SAAS,CAAC;GAG5E,cAAc;EAChB;EAEA,MAAM,eAAe,QAAQ,GAAG,eAAe,gBAAgB;EAE/D,aAAa;GACX,aAAa,YAAY;GACzB,IAAI,gBAAgB,SAAS;IAC3B,aAAa,gBAAgB,OAAO;IACpC,gBAAgB,UAAU,KAAA;GAC5B;EACF;CACF,GAAG;EAAC;EAAgB;EAAS;EAAW;EAAe;EAAG;CAAU,CAAC;AACvE"}