stream-chat-react 14.11.0 → 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 (1103) 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 +248 -62
  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 -20861
  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/ChannelListItem/ChannelListItem.d.ts.map +1 -1
  1063. package/dist/types/components/Dialog/service/DialogAnchor.d.ts +8 -1
  1064. package/dist/types/components/Dialog/service/DialogAnchor.d.ts.map +1 -1
  1065. package/dist/types/components/Loading/AttachmentUploadedSizeIndicator.d.ts +20 -0
  1066. package/dist/types/components/Loading/AttachmentUploadedSizeIndicator.d.ts.map +1 -0
  1067. package/dist/types/components/Loading/UploadProgressIndicator.d.ts +7 -1
  1068. package/dist/types/components/Loading/UploadProgressIndicator.d.ts.map +1 -1
  1069. package/dist/types/components/Loading/index.d.ts +1 -0
  1070. package/dist/types/components/Loading/index.d.ts.map +1 -1
  1071. package/dist/types/components/Message/MessageStatus.d.ts.map +1 -1
  1072. package/dist/types/components/MessageComposer/AttachmentPreviewList/AudioAttachmentPreview.d.ts.map +1 -1
  1073. package/dist/types/components/MessageComposer/AttachmentPreviewList/FileAttachmentPreview.d.ts.map +1 -1
  1074. package/dist/types/components/MessageComposer/AttachmentPreviewList/MediaAttachmentPreview.d.ts.map +1 -1
  1075. package/dist/types/components/MessageComposer/RemoveAttachmentPreviewButton.d.ts.map +1 -1
  1076. package/dist/types/components/MessageComposer/hooks/useMessageComposerHasSendableData.d.ts.map +1 -1
  1077. package/dist/types/components/MessageComposer/hooks/useSubmitHandler.d.ts.map +1 -1
  1078. package/dist/types/components/MessageComposer/hooks/utils.d.ts.map +1 -1
  1079. package/dist/types/components/TextareaComposer/TextareaComposer.d.ts.map +1 -1
  1080. package/dist/types/components/VideoPlayer/ReactPlayerWrapper.d.ts +1 -1
  1081. package/dist/types/components/VideoPlayer/ReactPlayerWrapper.d.ts.map +1 -1
  1082. package/dist/types/components/VideoPlayer/VideoPlayer.d.ts +7 -1
  1083. package/dist/types/components/VideoPlayer/VideoPlayer.d.ts.map +1 -1
  1084. package/dist/types/context/ComponentContext.d.ts +3 -0
  1085. package/dist/types/context/ComponentContext.d.ts.map +1 -1
  1086. package/dist/types/i18n/Streami18n.d.ts +1 -0
  1087. package/dist/types/i18n/Streami18n.d.ts.map +1 -1
  1088. package/package.json +5 -9
  1089. package/dist/cjs/NotificationList.6abbee1c.js.map +0 -1
  1090. package/dist/cjs/useInertWhenHidden.22151beb.js.map +0 -1
  1091. package/dist/es/NotificationList.db01a56d.mjs +0 -7703
  1092. package/dist/es/NotificationList.db01a56d.mjs.map +0 -1
  1093. package/dist/es/ReactPlayerWrapper.d2ae5941.mjs.map +0 -1
  1094. package/dist/es/audioProcessing.766ca76c.mjs.map +0 -1
  1095. package/dist/es/channel-detail.mjs.map +0 -1
  1096. package/dist/es/emojis.mjs.map +0 -1
  1097. package/dist/es/index.mjs.map +0 -1
  1098. package/dist/es/useChannelHeaderOnlineStatus.a9357343.mjs +0 -771
  1099. package/dist/es/useChannelHeaderOnlineStatus.a9357343.mjs.map +0 -1
  1100. package/dist/es/useInertWhenHidden.3d5fbdba.mjs +0 -5765
  1101. package/dist/es/useInertWhenHidden.3d5fbdba.mjs.map +0 -1
  1102. package/dist/types/components/MessageComposer/AttachmentPreviewList/AttachmentUploadedSizeIndicator.d.ts +0 -14
  1103. package/dist/types/components/MessageComposer/AttachmentPreviewList/AttachmentUploadedSizeIndicator.d.ts.map +0 -1
@@ -0,0 +1,85 @@
1
+ import React, { useMemo } from "react";
2
+ //#region src/components/Accessibility/hooks/useInertWhenHidden.ts
3
+ var INERT_PRESENT = parseInt(React.version, 10) >= 19 ? true : "true";
4
+ var SHOWN_PROPS = {
5
+ "aria-hidden": void 0,
6
+ hidden: void 0,
7
+ inert: void 0,
8
+ tabIndex: void 0
9
+ };
10
+ var HIDDEN_PROPS = {
11
+ "aria-hidden": true,
12
+ hidden: true,
13
+ inert: INERT_PRESENT,
14
+ tabIndex: -1
15
+ };
16
+ var HIDDEN_PROPS_WITHOUT_HIDDEN_ATTRIBUTE = {
17
+ "aria-hidden": true,
18
+ hidden: void 0,
19
+ inert: INERT_PRESENT,
20
+ tabIndex: -1
21
+ };
22
+ /**
23
+ * Canonical way to fully hide a control from assistive technology AND the tab
24
+ * order while it must stay mounted.
25
+ *
26
+ * @remarks
27
+ * **Prefer not rendering.** The simplest and most robust fix for a control that
28
+ * should be unavailable is to *not render it at all* when it is hidden. Reach
29
+ * for this hook only when the element MUST stay mounted — e.g. to preserve
30
+ * internal state, layout measurements, or enter/exit transitions.
31
+ *
32
+ * @example
33
+ * ```tsx
34
+ * const Toolbar = ({ collapsed }: { collapsed: boolean }) => {
35
+ * const inertProps = useInertWhenHidden(collapsed);
36
+ * return <button {...inertProps}>Add attachment</button>;
37
+ * };
38
+ * ```
39
+ *
40
+ * When `hidden === true`, the returned props make the element:
41
+ * - absent from the accessibility tree (`aria-hidden`, `hidden`),
42
+ * - unreachable via Tab (`tabIndex={-1}`, `inert`),
43
+ * - non-interactive (`inert`).
44
+ *
45
+ * When `hidden === false`, every returned attribute is `undefined`, so spreading
46
+ * the object is a no-op and the element behaves exactly as normal. In
47
+ * particular, `aria-hidden` is omitted entirely (never emitted as
48
+ * `aria-hidden="false"`).
49
+ *
50
+ * Exact attribute values rendered to the DOM:
51
+ * - hidden: `aria-hidden=""(true)`, `hidden`, `tabindex="-1"`, `inert`
52
+ * - shown: none of the above attributes present
53
+ *
54
+ * **Cross-React-version handling of `inert`:** React 19 supports `inert` as a
55
+ * native boolean prop (`inert={true}` → DOM `inert=""`). React 17/18 do not
56
+ * recognize it and only forward it as a string (`inert="true"` → DOM
57
+ * `inert="true"`). Either of the *other* forms (a boolean on React 17/18, or an
58
+ * empty string on React 19) emits a console warning and/or drops the attribute.
59
+ * We therefore pick the correct form per major version via `React.version`. The
60
+ * resulting DOM attribute is present and falls back to `tabIndex={-1}` +
61
+ * `aria-hidden` on the rare engines lacking `inert` support.
62
+ *
63
+ * **Styling is out of scope.** The HTML `hidden` attribute applies
64
+ * `display: none`. If a consumer needs the element to remain *visible in the
65
+ * layout* (e.g. hidden purely via CSS or kept for transitions), pass
66
+ * `{ setHiddenAttribute: false }` so the `hidden` attribute is omitted while the
67
+ * a11y/focus semantics (`aria-hidden`, `inert`, `tabIndex={-1}`) still apply.
68
+ * The remaining styling is then the consumer's concern.
69
+ *
70
+ * @param hidden Whether the control is currently hidden.
71
+ * @param options Behavior options — see {@link UseInertWhenHiddenOptions}. Use
72
+ * `{ setHiddenAttribute: false }` for elements hidden via CSS/transition.
73
+ * @returns A stable, memoized props object to spread onto the element.
74
+ */
75
+ var useInertWhenHidden = (hidden, options) => {
76
+ const setHiddenAttribute = options?.setHiddenAttribute ?? true;
77
+ return useMemo(() => {
78
+ if (!hidden) return SHOWN_PROPS;
79
+ return setHiddenAttribute ? HIDDEN_PROPS : HIDDEN_PROPS_WITHOUT_HIDDEN_ATTRIBUTE;
80
+ }, [hidden, setHiddenAttribute]);
81
+ };
82
+ //#endregion
83
+ export { useInertWhenHidden };
84
+
85
+ //# sourceMappingURL=useInertWhenHidden.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInertWhenHidden.mjs","names":[],"sources":["../../../../../src/components/Accessibility/hooks/useInertWhenHidden.ts"],"sourcesContent":["import React, { useMemo } from 'react';\n\n/**\n * The set of props returned by {@link useInertWhenHidden}, to be spread onto the\n * element that must remain mounted while visually hidden.\n *\n * `inert` is typed as `boolean | undefined` so the object spreads cleanly onto a\n * JSX host element (React 19 types `inert?: boolean`; React 17/18 don't declare\n * it at all, so an extra prop via spread is accepted). The RUNTIME value differs\n * by React major version (string `'true'` on 17/18) — see the implementation\n * note on {@link useInertWhenHidden} — and is cast to `boolean` at the source so\n * the public type stays spread-safe. Consumers spread it; they never read it.\n */\nexport type InertWhenHiddenProps = {\n 'aria-hidden': true | undefined;\n hidden: boolean | undefined;\n inert: boolean | undefined;\n tabIndex: number | undefined;\n};\n\n/**\n * React 19 recognizes `inert` as a native boolean prop and renders\n * `inert={true}` to the DOM attribute `inert=\"\"` (no warning). React 17/18 do\n * NOT know `inert`; they forward it only as a string, rendering `inert=\"true\"`\n * (a valid present boolean attribute) with no warning. Passing a boolean to\n * React 17/18, or an empty string to React 19, produces a console warning and/or\n * drops the attribute — so we select the warning-free form per major version.\n */\nconst REACT_MAJOR = parseInt(React.version, 10);\n// Runtime value differs by React major (boolean on 19, the string 'true' on 17/18), but the\n// public type is `boolean | undefined` so the props spread cleanly onto JSX. The string form\n// is cast here — it is the only place the type/runtime divergence is reconciled.\nconst INERT_PRESENT = (REACT_MAJOR >= 19 ? true : 'true') as unknown as boolean;\n\nconst SHOWN_PROPS: InertWhenHiddenProps = {\n 'aria-hidden': undefined,\n hidden: undefined,\n inert: undefined,\n tabIndex: undefined,\n};\n\nconst HIDDEN_PROPS: InertWhenHiddenProps = {\n 'aria-hidden': true,\n hidden: true,\n inert: INERT_PRESENT,\n tabIndex: -1,\n};\n\nconst HIDDEN_PROPS_WITHOUT_HIDDEN_ATTRIBUTE: InertWhenHiddenProps = {\n 'aria-hidden': true,\n hidden: undefined,\n inert: INERT_PRESENT,\n tabIndex: -1,\n};\n\n/**\n * Options for {@link useInertWhenHidden}.\n */\nexport type UseInertWhenHiddenOptions = {\n /**\n * Whether to set the HTML `hidden` attribute (which applies `display: none`)\n * when `hidden` is `true`. Defaults to `true`.\n *\n * Set to `false` for elements whose visual hiding is already handled by CSS\n * (e.g. an opacity/scale/`max-width` transition) — the `hidden` attribute\n * would force `display: none` and kill the transition. With `false`, the hook\n * still applies `aria-hidden`, `inert`, and `tabIndex={-1}` so the element is\n * removed from the accessibility tree and tab order while staying laid out.\n */\n setHiddenAttribute?: boolean;\n};\n\n/**\n * Canonical way to fully hide a control from assistive technology AND the tab\n * order while it must stay mounted.\n *\n * @remarks\n * **Prefer not rendering.** The simplest and most robust fix for a control that\n * should be unavailable is to *not render it at all* when it is hidden. Reach\n * for this hook only when the element MUST stay mounted — e.g. to preserve\n * internal state, layout measurements, or enter/exit transitions.\n *\n * @example\n * ```tsx\n * const Toolbar = ({ collapsed }: { collapsed: boolean }) => {\n * const inertProps = useInertWhenHidden(collapsed);\n * return <button {...inertProps}>Add attachment</button>;\n * };\n * ```\n *\n * When `hidden === true`, the returned props make the element:\n * - absent from the accessibility tree (`aria-hidden`, `hidden`),\n * - unreachable via Tab (`tabIndex={-1}`, `inert`),\n * - non-interactive (`inert`).\n *\n * When `hidden === false`, every returned attribute is `undefined`, so spreading\n * the object is a no-op and the element behaves exactly as normal. In\n * particular, `aria-hidden` is omitted entirely (never emitted as\n * `aria-hidden=\"false\"`).\n *\n * Exact attribute values rendered to the DOM:\n * - hidden: `aria-hidden=\"\"(true)`, `hidden`, `tabindex=\"-1\"`, `inert`\n * - shown: none of the above attributes present\n *\n * **Cross-React-version handling of `inert`:** React 19 supports `inert` as a\n * native boolean prop (`inert={true}` → DOM `inert=\"\"`). React 17/18 do not\n * recognize it and only forward it as a string (`inert=\"true\"` → DOM\n * `inert=\"true\"`). Either of the *other* forms (a boolean on React 17/18, or an\n * empty string on React 19) emits a console warning and/or drops the attribute.\n * We therefore pick the correct form per major version via `React.version`. The\n * resulting DOM attribute is present and falls back to `tabIndex={-1}` +\n * `aria-hidden` on the rare engines lacking `inert` support.\n *\n * **Styling is out of scope.** The HTML `hidden` attribute applies\n * `display: none`. If a consumer needs the element to remain *visible in the\n * layout* (e.g. hidden purely via CSS or kept for transitions), pass\n * `{ setHiddenAttribute: false }` so the `hidden` attribute is omitted while the\n * a11y/focus semantics (`aria-hidden`, `inert`, `tabIndex={-1}`) still apply.\n * The remaining styling is then the consumer's concern.\n *\n * @param hidden Whether the control is currently hidden.\n * @param options Behavior options — see {@link UseInertWhenHiddenOptions}. Use\n * `{ setHiddenAttribute: false }` for elements hidden via CSS/transition.\n * @returns A stable, memoized props object to spread onto the element.\n */\nexport const useInertWhenHidden = (\n hidden: boolean,\n options?: UseInertWhenHiddenOptions,\n): InertWhenHiddenProps => {\n const setHiddenAttribute = options?.setHiddenAttribute ?? true;\n return useMemo(() => {\n if (!hidden) return SHOWN_PROPS;\n return setHiddenAttribute ? HIDDEN_PROPS : HIDDEN_PROPS_WITHOUT_HIDDEN_ATTRIBUTE;\n }, [hidden, setHiddenAttribute]);\n};\n"],"mappings":";;AAgCA,IAAM,gBAJc,SAAS,MAAM,SAAS,EAIrB,KAAe,KAAK,OAAO;AAElD,IAAM,cAAoC;CACxC,eAAe,KAAA;CACf,QAAQ,KAAA;CACR,OAAO,KAAA;CACP,UAAU,KAAA;AACZ;AAEA,IAAM,eAAqC;CACzC,eAAe;CACf,QAAQ;CACR,OAAO;CACP,UAAU;AACZ;AAEA,IAAM,wCAA8D;CAClE,eAAe;CACf,QAAQ,KAAA;CACR,OAAO;CACP,UAAU;AACZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwEA,IAAa,sBACX,QACA,YACyB;CACzB,MAAM,qBAAqB,SAAS,sBAAsB;CAC1D,OAAO,cAAc;EACnB,IAAI,CAAC,QAAQ,OAAO;EACpB,OAAO,qBAAqB,eAAe;CAC7C,GAAG,CAAC,QAAQ,kBAAkB,CAAC;AACjC"}
@@ -0,0 +1,155 @@
1
+ import { useTranslationContext } from "../../../context/TranslationContext.mjs";
2
+ import { useAriaLiveAnnouncer } from "../useAriaLiveAnnouncer.mjs";
3
+ import { useDebouncedAnnounce } from "../scheduling/useDebouncedAnnounce.mjs";
4
+ import { useMemo, useRef } from "react";
5
+ //#region src/components/Accessibility/hooks/useInteractionAnnouncements.ts
6
+ /**
7
+ * One entry per interaction — the single place an interaction is registered. Each
8
+ * resolver contains a LITERAL `t('aria/…')` call so that `i18next-cli extract`
9
+ * (run via `yarn build-translations`) discovers and generates the key across all
10
+ * locales. Keys must never be built dynamically (e.g. `t(someVariable)`) or
11
+ * extraction silently misses them. Adding an interaction = one line here + one
12
+ * line in {@link InteractionAnnouncementParams} (+ an override in
13
+ * {@link INTERACTION_PRIORITIES} only if it is not `polite`).
14
+ */
15
+ var INTERACTION_MESSAGES = {
16
+ "audioPlayer.playbackRateChanged": (t, params) => t("Playback speed {{ rate }}x", { rate: params.rate }),
17
+ "channel.opened": (t, params) => t("aria/Opened channel: {{ name }}", { name: params.name }),
18
+ "command.selected": (t, params) => t("aria/Command activated: {{ command }}", { command: params.command }),
19
+ "giphy.canceled": (t) => t("aria/Giphy canceled"),
20
+ "giphy.sent": (t) => t("aria/Giphy sent"),
21
+ "giphy.shuffled": (t, params) => params.title ? t("aria/Giphy image changed: {{ title }}", { title: params.title }) : t("aria/Giphy image changed"),
22
+ "poll.dialogOpened": (t) => `${t("aria/Poll dialog opened")}. ${t("Create a question, add options, and configure poll settings")}. ${t("aria/Press Enter to start typing")}.`,
23
+ "poll.optionDropped": (t, params) => t("aria/Dropped \"{{ option }}\" at position {{ position }}.", {
24
+ option: params.option,
25
+ position: params.position
26
+ }),
27
+ "poll.optionPickedUp": (t, params) => t("aria/Picked up \"{{ option }}\". Use arrow keys to reorder. Press Space or Tab to drop.", { option: params.option }),
28
+ "poll.optionRemoved": (t, params) => t("aria/Removed option {{ option }}", { option: params.option }),
29
+ "poll.sent": (t) => t("aria/Poll sent"),
30
+ "search.cleared": (t) => t("aria/Search cleared"),
31
+ "search.resultCount": (t, params) => {
32
+ if (params.count <= 0) return t("aria/No search results found");
33
+ const count = t("aria/{{ count }} search results", { count: params.count });
34
+ return params.allResultsLoaded ? `${count}. ${t("All results loaded")}` : count;
35
+ },
36
+ "suggestions.count": (t, params) => params.suggestionsLabel ? t("aria/{{ count }} {{ suggestionsLabel }}", {
37
+ count: params.count,
38
+ suggestionsLabel: params.suggestionsLabel
39
+ }) : t("aria/{{ count }} suggestions", { count: params.count }),
40
+ "thread.opened": (t, params) => t("aria/Opened thread in {{ name }}", { name: params.name }),
41
+ "user.selected": (t, params) => t("aria/User selected: {{ user }}", { user: params.user }),
42
+ "voiceRecording.attached": (t) => t("aria/Voice recording attached"),
43
+ "voiceRecording.paused": (t) => t("aria/Recording paused"),
44
+ "voiceRecording.resumed": (t) => t("aria/Recording resumed"),
45
+ "voiceRecording.sent": (t) => t("aria/Voice message sent"),
46
+ "voiceRecording.started": (t) => t("aria/Recording started")
47
+ };
48
+ /**
49
+ * Per-interaction aria-live priority. Interactions default to `polite`; list one
50
+ * here only to override it (e.g. with `assertive`).
51
+ */
52
+ var INTERACTION_PRIORITIES = {
53
+ "poll.dialogOpened": "assertive",
54
+ "poll.optionDropped": "assertive",
55
+ "poll.optionPickedUp": "assertive"
56
+ };
57
+ /**
58
+ * Per-interaction dedupe window (ms): an identical message for this interaction is announced at
59
+ * most once per window (see {@link AriaLiveAnnounceOptions.dedupeMs}). List an interaction here
60
+ * only when the SAME open/mount can fire it more than once in quick succession — e.g. a mount
61
+ * effect double-invoked by React StrictMode (dev) — so the user does not hear a duplicate.
62
+ */
63
+ var INTERACTION_DEDUPE_MS = {
64
+ "audioPlayer.playbackRateChanged": 300,
65
+ "poll.dialogOpened": 1e3
66
+ };
67
+ /**
68
+ * Default per-interaction debounce delay (ms). Only list rapidly-updating streams where just the
69
+ * settled value should be read (e.g. the autocomplete count as the query filters). Discrete
70
+ * confirmations (Giphy/Poll sent, user selected) are NOT listed and announce immediately. A call
71
+ * site can override (or opt into) a delay for a single call via `params.debounceMs` — see
72
+ * {@link InteractionDeliveryOptions}.
73
+ *
74
+ * `suggestions.count` is a CONSEQUENCE OF TYPING, so the delay does double duty: it coalesces
75
+ * rapid filters into the settled value AND lets the screen reader's per-keystroke typing echo
76
+ * (the spoken character + field re-read) finish first. A polite update that lands mid-echo gets
77
+ * queued behind a long re-read and is perceived as buried; waiting past the echo makes the count
78
+ * the next thing spoken once the user pauses. This is a heuristic — echo length varies with the
79
+ * SR's "speak typed words/characters" setting and field content — so tune if it still collides.
80
+ */
81
+ var INTERACTION_DEBOUNCE_MS = {
82
+ "search.resultCount": 1e3,
83
+ "suggestions.count": 500
84
+ };
85
+ /**
86
+ * Default per-interaction delay (ms) for the immediate (non-debounced) path — a single deferred
87
+ * emit scheduled in the announcer PROVIDER (see {@link AriaLiveAnnounceOptions.delayMs}), so it
88
+ * SURVIVES the calling component unmounting (unlike a debounce, whose timer is cleared on unmount).
89
+ *
90
+ * Opening a channel/thread moves focus to the (auto-focusing) message composer; the screen reader
91
+ * announces that newly-focused element first, and a live-region message emitted alongside it is
92
+ * superseded and dropped. The delay defers the confirmation past that focus read-out so it is spoken
93
+ * next, in a calm moment. It is a provider delay rather than a debounce specifically because
94
+ * selecting the item can unmount its list row (and the whole list, on mobile) — a per-row debounce
95
+ * would be cancelled mid-flight, swallowing the confirmation.
96
+ */
97
+ var INTERACTION_DELAY_MS = {
98
+ "channel.opened": 1500,
99
+ "command.selected": 1500,
100
+ "thread.opened": 1500
101
+ };
102
+ /**
103
+ * Thin, typed wrapper over the aria-live announcer exposing intention-revealing
104
+ * helpers for transient, user-initiated UI interactions (e.g. a Giphy being
105
+ * sent, a poll being created, a mention being picked). They map to i18n keys with
106
+ * baked-in priorities and reuse the existing live region via
107
+ * {@link useAriaLiveAnnouncer}. New interactions are registered as a single entry
108
+ * in {@link INTERACTION_MESSAGES}.
109
+ */
110
+ var useInteractionAnnouncements = () => {
111
+ const announce = useAriaLiveAnnouncer();
112
+ const { t } = useTranslationContext();
113
+ const { announce: announceDebounced, cancel: cancelDebounced } = useDebouncedAnnounce(announce);
114
+ const pendingImmediateCancelsRef = useRef({});
115
+ return useMemo(() => ({
116
+ announceInteraction: (interaction, params) => {
117
+ const resolveMessage = INTERACTION_MESSAGES[interaction];
118
+ if (!resolveMessage) return;
119
+ const message = resolveMessage(t, params);
120
+ const priority = INTERACTION_PRIORITIES[interaction] ?? "polite";
121
+ const debounceMs = params?.debounceMs ?? INTERACTION_DEBOUNCE_MS[interaction];
122
+ if (debounceMs === void 0) {
123
+ const delayMs = params?.delayMs ?? INTERACTION_DELAY_MS[interaction];
124
+ pendingImmediateCancelsRef.current[interaction]?.();
125
+ pendingImmediateCancelsRef.current[interaction] = announce(message, {
126
+ dedupeMs: INTERACTION_DEDUPE_MS[interaction],
127
+ delayMs,
128
+ priority
129
+ });
130
+ return;
131
+ }
132
+ announceDebounced(interaction, message, debounceMs, priority);
133
+ },
134
+ cancelInteraction: (interaction) => {
135
+ cancelDebounced(interaction);
136
+ const pending = pendingImmediateCancelsRef.current;
137
+ if (interaction) {
138
+ pending[interaction]?.();
139
+ delete pending[interaction];
140
+ } else {
141
+ Object.values(pending).forEach((cancel) => cancel?.());
142
+ pendingImmediateCancelsRef.current = {};
143
+ }
144
+ }
145
+ }), [
146
+ announce,
147
+ announceDebounced,
148
+ cancelDebounced,
149
+ t
150
+ ]);
151
+ };
152
+ //#endregion
153
+ export { useInteractionAnnouncements };
154
+
155
+ //# sourceMappingURL=useInteractionAnnouncements.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInteractionAnnouncements.mjs","names":[],"sources":["../../../../../src/components/Accessibility/hooks/useInteractionAnnouncements.ts"],"sourcesContent":["import { useMemo, useRef } from 'react';\n\nimport type { AriaLivePriority } from '../useAriaLiveAnnouncer';\nimport { useAriaLiveAnnouncer } from '../useAriaLiveAnnouncer';\nimport { useDebouncedAnnounce } from '../scheduling';\nimport { useTranslationContext } from '../../../context/TranslationContext';\n\ntype TranslateFn = ReturnType<typeof useTranslationContext>['t'];\n\n/**\n * Optional delivery overrides a call site may pass ALONGSIDE an interaction's message params.\n * These are not consumed by the message resolver — they only affect how the announcement is\n * delivered. `debounceMs` overrides that interaction's default debounce ({@link\n * INTERACTION_DEBOUNCE_MS}) for THIS call, and enables debouncing for an interaction that has no\n * default. `delayMs` overrides the default delay ({@link INTERACTION_DELAY_MS}) for the\n * (non-debounced) immediate path. Param-less (discrete) interactions are always immediate and do\n * not accept overrides.\n *\n * `debounceMs` vs `delayMs`: a debounce collapses rapid repeats on a per-call-site timer and is\n * **cancelled if that call site unmounts** — right for a value that keeps changing in place (a\n * result count). `delayMs` schedules a single deferred emit in the shared announcer PROVIDER, so it\n * **survives the caller unmounting** — right for a one-shot confirmation whose origin (e.g. a list\n * row) disappears on the very action being confirmed (opening a channel/thread hides the list on\n * mobile). Both let the message land after a competing focus/typing read-out. `debounceMs` wins if\n * both are given.\n */\nexport type InteractionDeliveryOptions = { debounceMs?: number; delayMs?: number };\n\n/**\n * Parameters accepted by each parameterized interaction announcement.\n * Interactions that take no parameters map to `undefined`. Param-ful interactions additionally\n * accept {@link InteractionDeliveryOptions} (e.g. a per-call `debounceMs`).\n */\nexport type InteractionAnnouncementParams = {\n /** Audio playback speed was changed via the playback-rate button. `rate` is the new multiplier. */\n 'audioPlayer.playbackRateChanged': InteractionDeliveryOptions & { rate: number };\n /** A channel was opened from the channel list. `name` is its display title. */\n 'channel.opened': InteractionDeliveryOptions & { name: string };\n /** A slash command was activated from the Instant Commands menu. `command` is its name. */\n 'command.selected': InteractionDeliveryOptions & { command: string };\n 'giphy.canceled': undefined;\n 'giphy.sent': undefined;\n 'giphy.shuffled': InteractionDeliveryOptions & { title?: string };\n 'poll.dialogOpened': undefined;\n /** A poll option was dropped at a new position during keyboard reorder. */\n 'poll.optionDropped': InteractionDeliveryOptions & {\n option: string;\n position: number;\n };\n /** A poll option was picked up to start a keyboard reorder. `option` is its text (or a fallback). */\n 'poll.optionPickedUp': InteractionDeliveryOptions & { option: string };\n 'poll.optionRemoved': InteractionDeliveryOptions & { option: string };\n 'poll.sent': undefined;\n 'search.cleared': undefined;\n 'search.resultCount': InteractionDeliveryOptions & {\n /** Whether every active source is fully loaded — appends an \"all results loaded\" clause. */\n allResultsLoaded?: boolean;\n count: number;\n };\n 'suggestions.count': InteractionDeliveryOptions & {\n count: number;\n suggestionsLabel?: string;\n };\n /** A thread was opened from the thread list. `name` is its channel's display title. */\n 'thread.opened': InteractionDeliveryOptions & { name: string };\n 'user.selected': InteractionDeliveryOptions & { user: string };\n /** A finished voice recording was added to the composer (async multi-send: not sent yet). */\n 'voiceRecording.attached': undefined;\n 'voiceRecording.paused': undefined;\n 'voiceRecording.resumed': undefined;\n /** A finished voice recording was sent immediately as a message. */\n 'voiceRecording.sent': undefined;\n 'voiceRecording.started': undefined;\n};\n\nexport type InteractionAnnouncementType = keyof InteractionAnnouncementParams;\n\n/**\n * One entry per interaction — the single place an interaction is registered. Each\n * resolver contains a LITERAL `t('aria/…')` call so that `i18next-cli extract`\n * (run via `yarn build-translations`) discovers and generates the key across all\n * locales. Keys must never be built dynamically (e.g. `t(someVariable)`) or\n * extraction silently misses them. Adding an interaction = one line here + one\n * line in {@link InteractionAnnouncementParams} (+ an override in\n * {@link INTERACTION_PRIORITIES} only if it is not `polite`).\n */\nconst INTERACTION_MESSAGES: {\n [T in InteractionAnnouncementType]: (\n t: TranslateFn,\n params: InteractionAnnouncementParams[T],\n ) => string;\n} = {\n // Confirms the new audio playback speed after the user cycles it with the playback-rate button.\n // Reuses the existing (already-localized) button label so the spoken text matches the control.\n 'audioPlayer.playbackRateChanged': (t, params) =>\n t('Playback speed {{ rate }}x', { rate: params.rate }),\n // Confirms which channel was opened after selecting it from the list. Delayed (see\n // INTERACTION_DELAY_MS) so it lands AFTER the screen reader's announcement of the newly-focused\n // element (the message composer auto-focuses on channel change) rather than competing with — and\n // being superseded by — that native focus read-out. A provider-managed delay (not a per-row\n // debounce) so it still fires when selecting the channel unmounts the list (mobile).\n 'channel.opened': (t, params) =>\n t('aria/Opened channel: {{ name }}', { name: params.name }),\n // Confirms which slash command was activated after picking it from the Instant Commands menu.\n // Delayed (INTERACTION_DELAY_MS) for the same reason as the \"opened\" confirmations: selecting a\n // command closes the menu and focuses the composer textarea (whose name changes, e.g. to\n // \"Search GIFs\"), so the screen reader reads that focus first — this lands after it. A provider\n // delay (not a debounce) because the menu that fired it unmounts on selection.\n 'command.selected': (t, params) =>\n t('aria/Command activated: {{ command }}', { command: params.command }),\n 'giphy.canceled': (t) => t('aria/Giphy canceled'),\n 'giphy.sent': (t) => t('aria/Giphy sent'),\n // Giphy payloads rarely carry a human title, so include it only when present; otherwise a\n // generic \"changed\" confirmation. Both literal keys are extracted by i18next-cli.\n 'giphy.shuffled': (t, params) =>\n params.title\n ? t('aria/Giphy image changed: {{ title }}', { title: params.title })\n : t('aria/Giphy image changed'),\n // Spoken on poll-dialog open. Reuses the already-localized visible description for the middle\n // clause (so the spoken and visible text stay consistent) and adds two short aria-only phrases:\n // an explicit \"opened\" confirmation and the Enter affordance to step into the Question field.\n 'poll.dialogOpened': (t) =>\n `${t('aria/Poll dialog opened')}. ${t(\n 'Create a question, add options, and configure poll settings',\n )}. ${t('aria/Press Enter to start typing')}.`,\n // Keyboard reorder pickup/drop. Assertive (see INTERACTION_PRIORITIES) — immediate drag feedback\n // that must not be queued behind other polite messages.\n 'poll.optionDropped': (t, params) =>\n t('aria/Dropped \"{{ option }}\" at position {{ position }}.', {\n option: params.option,\n position: params.position,\n }),\n 'poll.optionPickedUp': (t, params) =>\n t(\n 'aria/Picked up \"{{ option }}\". Use arrow keys to reorder. Press Space or Tab to drop.',\n { option: params.option },\n ),\n // Confirms a poll option was removed, naming it by its text (or positional fallback). Polite so it\n // queues behind the focus move to the next option field instead of interrupting it.\n 'poll.optionRemoved': (t, params) =>\n t('aria/Removed option {{ option }}', { option: params.option }),\n 'poll.sent': (t) => t('aria/Poll sent'),\n 'search.cleared': (t) => t('aria/Search cleared'),\n // The number of items currently listed in the search results; an empty result set is spelled out\n // rather than announced as \"0\". When the list is fully loaded, the end-of-list status is folded\n // into THIS one announcement (reusing the visible footer's \"All results loaded\" text) instead of a\n // competing second live-region message that would supersede the count.\n 'search.resultCount': (t, params) => {\n if (params.count <= 0) return t('aria/No search results found');\n const count = t('aria/{{ count }} search results', { count: params.count });\n return params.allResultsLoaded ? `${count}. ${t('All results loaded')}` : count;\n },\n // Name the suggestion type by reusing the already-localized list label (\"5 Command\n // Suggestions\") so the user knows what the results are; fall back to the bare count when no\n // label is given. Both literal keys are extracted.\n 'suggestions.count': (t, params) =>\n params.suggestionsLabel\n ? t('aria/{{ count }} {{ suggestionsLabel }}', {\n count: params.count,\n suggestionsLabel: params.suggestionsLabel,\n })\n : t('aria/{{ count }} suggestions', { count: params.count }),\n // Confirms which thread was opened after selecting it from the list; `name` is the thread's\n // channel display title. Delayed for the same reason as `channel.opened` (the thread composer\n // auto-focuses on open, and its focus announcement would otherwise supersede this one).\n 'thread.opened': (t, params) =>\n t('aria/Opened thread in {{ name }}', { name: params.name }),\n 'user.selected': (t, params) =>\n t('aria/User selected: {{ user }}', { user: params.user }),\n // Voice recorder lifecycle — discrete, immediate, polite confirmations. Cancellation is NOT here:\n // it already emits an app notification (\"Voice message deleted\") announced by NotificationAnnouncer,\n // and recording errors surface as error notifications; adding them here would double-announce.\n 'voiceRecording.attached': (t) => t('aria/Voice recording attached'),\n 'voiceRecording.paused': (t) => t('aria/Recording paused'),\n 'voiceRecording.resumed': (t) => t('aria/Recording resumed'),\n 'voiceRecording.sent': (t) => t('aria/Voice message sent'),\n 'voiceRecording.started': (t) => t('aria/Recording started'),\n};\n\n/**\n * Per-interaction aria-live priority. Interactions default to `polite`; list one\n * here only to override it (e.g. with `assertive`).\n */\nconst INTERACTION_PRIORITIES: Partial<\n Record<InteractionAnnouncementType, AriaLivePriority>\n> = {\n // Assertive on open: a polite update fired around the dialog's focus-entry announcement is\n // dropped; assertive interrupts and is spoken (VoiceOver demotes the aria-describedby hint).\n 'poll.dialogOpened': 'assertive',\n // Keyboard reorder feedback must be immediate (interrupt), not queued behind polite messages.\n 'poll.optionDropped': 'assertive',\n 'poll.optionPickedUp': 'assertive',\n};\n\n/**\n * Per-interaction dedupe window (ms): an identical message for this interaction is announced at\n * most once per window (see {@link AriaLiveAnnounceOptions.dedupeMs}). List an interaction here\n * only when the SAME open/mount can fire it more than once in quick succession — e.g. a mount\n * effect double-invoked by React StrictMode (dev) — so the user does not hear a duplicate.\n */\nconst INTERACTION_DEDUPE_MS: Partial<Record<InteractionAnnouncementType, number>> = {\n // The audio player is pooled: if the same asset is rendered by two widgets they share one player,\n // so a single rate change fires this from both consumers. Dedupe collapses the identical message.\n // (Cycling always lands on a different rate → different text, so this never swallows a real change.)\n 'audioPlayer.playbackRateChanged': 300,\n 'poll.dialogOpened': 1000,\n};\n\n/**\n * Default per-interaction debounce delay (ms). Only list rapidly-updating streams where just the\n * settled value should be read (e.g. the autocomplete count as the query filters). Discrete\n * confirmations (Giphy/Poll sent, user selected) are NOT listed and announce immediately. A call\n * site can override (or opt into) a delay for a single call via `params.debounceMs` — see\n * {@link InteractionDeliveryOptions}.\n *\n * `suggestions.count` is a CONSEQUENCE OF TYPING, so the delay does double duty: it coalesces\n * rapid filters into the settled value AND lets the screen reader's per-keystroke typing echo\n * (the spoken character + field re-read) finish first. A polite update that lands mid-echo gets\n * queued behind a long re-read and is perceived as buried; waiting past the echo makes the count\n * the next thing spoken once the user pauses. This is a heuristic — echo length varies with the\n * SR's \"speak typed words/characters\" setting and field content — so tune if it still collides.\n */\nconst INTERACTION_DEBOUNCE_MS: Partial<Record<InteractionAnnouncementType, number>> = {\n // Coalesce the result count as the query filters / results stream in, and let the screen reader's\n // typing echo finish first (same rationale as `suggestions.count`, slightly longer as search\n // results can arrive over the network in bursts). The end-of-list status rides along in this same\n // message (see `search.resultCount` resolver), so there is no second announcement to compete.\n 'search.resultCount': 1000,\n 'suggestions.count': 500,\n};\n\n/**\n * Default per-interaction delay (ms) for the immediate (non-debounced) path — a single deferred\n * emit scheduled in the announcer PROVIDER (see {@link AriaLiveAnnounceOptions.delayMs}), so it\n * SURVIVES the calling component unmounting (unlike a debounce, whose timer is cleared on unmount).\n *\n * Opening a channel/thread moves focus to the (auto-focusing) message composer; the screen reader\n * announces that newly-focused element first, and a live-region message emitted alongside it is\n * superseded and dropped. The delay defers the confirmation past that focus read-out so it is spoken\n * next, in a calm moment. It is a provider delay rather than a debounce specifically because\n * selecting the item can unmount its list row (and the whole list, on mobile) — a per-row debounce\n * would be cancelled mid-flight, swallowing the confirmation.\n */\nconst INTERACTION_DELAY_MS: Partial<Record<InteractionAnnouncementType, number>> = {\n 'channel.opened': 1500,\n 'command.selected': 1500,\n 'thread.opened': 1500,\n};\n\n// Overloads enforce that parameterized interactions require their params and that\n// param-less interactions reject extra arguments.\ntype AnnounceInteraction = {\n <T extends InteractionAnnouncementType>(\n interaction: InteractionAnnouncementParams[T] extends undefined ? T : never,\n ): void;\n <T extends InteractionAnnouncementType>(\n interaction: InteractionAnnouncementParams[T] extends undefined ? never : T,\n params: InteractionAnnouncementParams[T],\n ): void;\n};\n\nexport type UseInteractionAnnouncementsValue = {\n /**\n * Announce a predefined interaction event to assistive technology. The\n * interaction name maps to a localized message and a baked-in aria-live\n * priority.\n */\n announceInteraction: AnnounceInteraction;\n /**\n * Cancel pending (debounced, not-yet-spoken) announcements: a single `interaction`, or all when\n * omitted. Call this when the source of a debounced announcement is torn down (e.g. search exited)\n * so a queued message is not spoken after its context is gone. An announcement already emitted into\n * the live region cannot be recalled.\n */\n cancelInteraction: (interaction?: InteractionAnnouncementType) => void;\n};\n\n/**\n * Thin, typed wrapper over the aria-live announcer exposing intention-revealing\n * helpers for transient, user-initiated UI interactions (e.g. a Giphy being\n * sent, a poll being created, a mention being picked). They map to i18n keys with\n * baked-in priorities and reuse the existing live region via\n * {@link useAriaLiveAnnouncer}. New interactions are registered as a single entry\n * in {@link INTERACTION_MESSAGES}.\n */\nexport const useInteractionAnnouncements = (): UseInteractionAnnouncementsValue => {\n const announce = useAriaLiveAnnouncer();\n const { t } = useTranslationContext();\n // Per-interaction debounce: each type has its own timer + delay from INTERACTION_DEBOUNCE_MS,\n // so e.g. the typing-driven `suggestions.count` can wait longer (to clear the screen reader's\n // typing echo) without affecting any other debounced interaction.\n const { announce: announceDebounced, cancel: cancelDebounced } =\n useDebouncedAnnounce(announce);\n // Cancel fn of the still-pending provider-delayed emit per interaction. A second trigger of the\n // same interaction within its delay window supersedes the first (so only the latest is spoken).\n // NOT cleared on unmount on purpose — provider-delayed emits are designed to survive the caller\n // unmounting (e.g. channel.opened fires after its list row is gone).\n const pendingImmediateCancelsRef = useRef<\n Partial<Record<InteractionAnnouncementType, () => void>>\n >({});\n\n return useMemo(\n () => ({\n announceInteraction: (\n interaction: InteractionAnnouncementType,\n params?: InteractionAnnouncementParams[InteractionAnnouncementType],\n ) => {\n const resolveMessage = INTERACTION_MESSAGES[interaction] as (\n t: TranslateFn,\n params: InteractionAnnouncementParams[InteractionAnnouncementType],\n ) => string;\n\n if (!resolveMessage) return;\n\n const message = resolveMessage(t, params as never);\n const priority = INTERACTION_PRIORITIES[interaction] ?? 'polite';\n\n // A per-call `params.debounceMs` overrides the registered default (and can opt an\n // otherwise-immediate interaction into debouncing).\n const debounceMs =\n (params as InteractionDeliveryOptions | undefined)?.debounceMs ??\n INTERACTION_DEBOUNCE_MS[interaction];\n if (debounceMs === undefined) {\n // Immediate path. `delayMs` (if any) is a provider-managed deferral that survives this\n // call site unmounting — used by the \"opened\" confirmations, whose list row disappears on\n // selection. `debounceMs` takes precedence over `delayMs` when both are set.\n const delayMs =\n (params as InteractionDeliveryOptions | undefined)?.delayMs ??\n INTERACTION_DELAY_MS[interaction];\n // Supersede a still-pending delayed emit of the same interaction so a rapid re-trigger\n // (e.g. selecting a second channel within the 1500ms window) speaks only the latest.\n pendingImmediateCancelsRef.current[interaction]?.();\n pendingImmediateCancelsRef.current[interaction] = announce(message, {\n dedupeMs: INTERACTION_DEDUPE_MS[interaction],\n delayMs,\n priority,\n });\n return;\n }\n\n // Debounced stream (e.g. suggestions.count): coalesce rapid updates into the settled\n // value, on a channel keyed by interaction type with that type's own delay. We do NOT\n // dedupe an unchanged message here — whether a repeat is meaningful is the caller's call\n // (e.g. SuggestionList re-announces the count on each genuine re-filter so the user gets\n // feedback even when the count is steady, such as emoji results capped at a constant N).\n // The debounce window already collapses idle/rapid duplicates.\n announceDebounced(interaction, message, debounceMs, priority);\n },\n cancelInteraction: (interaction?: InteractionAnnouncementType) => {\n cancelDebounced(interaction);\n const pending = pendingImmediateCancelsRef.current;\n if (interaction) {\n pending[interaction]?.();\n delete pending[interaction];\n } else {\n Object.values(pending).forEach((cancel) => cancel?.());\n pendingImmediateCancelsRef.current = {};\n }\n },\n }),\n [announce, announceDebounced, cancelDebounced, t],\n );\n};\n"],"mappings":";;;;;;;;;;;;;;AAsFA,IAAM,uBAKF;CAGF,oCAAoC,GAAG,WACrC,EAAE,8BAA8B,EAAE,MAAM,OAAO,KAAK,CAAC;CAMvD,mBAAmB,GAAG,WACpB,EAAE,mCAAmC,EAAE,MAAM,OAAO,KAAK,CAAC;CAM5D,qBAAqB,GAAG,WACtB,EAAE,yCAAyC,EAAE,SAAS,OAAO,QAAQ,CAAC;CACxE,mBAAmB,MAAM,EAAE,qBAAqB;CAChD,eAAe,MAAM,EAAE,iBAAiB;CAGxC,mBAAmB,GAAG,WACpB,OAAO,QACH,EAAE,yCAAyC,EAAE,OAAO,OAAO,MAAM,CAAC,IAClE,EAAE,0BAA0B;CAIlC,sBAAsB,MACpB,GAAG,EAAE,yBAAyB,EAAE,IAAI,EAClC,6DACF,EAAE,IAAI,EAAE,kCAAkC,EAAE;CAG9C,uBAAuB,GAAG,WACxB,EAAE,6DAA2D;EAC3D,QAAQ,OAAO;EACf,UAAU,OAAO;CACnB,CAAC;CACH,wBAAwB,GAAG,WACzB,EACE,2FACA,EAAE,QAAQ,OAAO,OAAO,CAC1B;CAGF,uBAAuB,GAAG,WACxB,EAAE,oCAAoC,EAAE,QAAQ,OAAO,OAAO,CAAC;CACjE,cAAc,MAAM,EAAE,gBAAgB;CACtC,mBAAmB,MAAM,EAAE,qBAAqB;CAKhD,uBAAuB,GAAG,WAAW;EACnC,IAAI,OAAO,SAAS,GAAG,OAAO,EAAE,8BAA8B;EAC9D,MAAM,QAAQ,EAAE,mCAAmC,EAAE,OAAO,OAAO,MAAM,CAAC;EAC1E,OAAO,OAAO,mBAAmB,GAAG,MAAM,IAAI,EAAE,oBAAoB,MAAM;CAC5E;CAIA,sBAAsB,GAAG,WACvB,OAAO,mBACH,EAAE,2CAA2C;EAC3C,OAAO,OAAO;EACd,kBAAkB,OAAO;CAC3B,CAAC,IACD,EAAE,gCAAgC,EAAE,OAAO,OAAO,MAAM,CAAC;CAI/D,kBAAkB,GAAG,WACnB,EAAE,oCAAoC,EAAE,MAAM,OAAO,KAAK,CAAC;CAC7D,kBAAkB,GAAG,WACnB,EAAE,kCAAkC,EAAE,MAAM,OAAO,KAAK,CAAC;CAI3D,4BAA4B,MAAM,EAAE,+BAA+B;CACnE,0BAA0B,MAAM,EAAE,uBAAuB;CACzD,2BAA2B,MAAM,EAAE,wBAAwB;CAC3D,wBAAwB,MAAM,EAAE,yBAAyB;CACzD,2BAA2B,MAAM,EAAE,wBAAwB;AAC7D;;;;;AAMA,IAAM,yBAEF;CAGF,qBAAqB;CAErB,sBAAsB;CACtB,uBAAuB;AACzB;;;;;;;AAQA,IAAM,wBAA8E;CAIlF,mCAAmC;CACnC,qBAAqB;AACvB;;;;;;;;;;;;;;;AAgBA,IAAM,0BAAgF;CAKpF,sBAAsB;CACtB,qBAAqB;AACvB;;;;;;;;;;;;;AAcA,IAAM,uBAA6E;CACjF,kBAAkB;CAClB,oBAAoB;CACpB,iBAAiB;AACnB;;;;;;;;;AAsCA,IAAa,oCAAsE;CACjF,MAAM,WAAW,qBAAqB;CACtC,MAAM,EAAE,MAAM,sBAAsB;CAIpC,MAAM,EAAE,UAAU,mBAAmB,QAAQ,oBAC3C,qBAAqB,QAAQ;CAK/B,MAAM,6BAA6B,OAEjC,CAAC,CAAC;CAEJ,OAAO,eACE;EACL,sBACE,aACA,WACG;GACH,MAAM,iBAAiB,qBAAqB;GAK5C,IAAI,CAAC,gBAAgB;GAErB,MAAM,UAAU,eAAe,GAAG,MAAe;GACjD,MAAM,WAAW,uBAAuB,gBAAgB;GAIxD,MAAM,aACH,QAAmD,cACpD,wBAAwB;GAC1B,IAAI,eAAe,KAAA,GAAW;IAI5B,MAAM,UACH,QAAmD,WACpD,qBAAqB;IAGvB,2BAA2B,QAAQ,YAAY,GAAG;IAClD,2BAA2B,QAAQ,eAAe,SAAS,SAAS;KAClE,UAAU,sBAAsB;KAChC;KACA;IACF,CAAC;IACD;GACF;GAQA,kBAAkB,aAAa,SAAS,YAAY,QAAQ;EAC9D;EACA,oBAAoB,gBAA8C;GAChE,gBAAgB,WAAW;GAC3B,MAAM,UAAU,2BAA2B;GAC3C,IAAI,aAAa;IACf,QAAQ,YAAY,GAAG;IACvB,OAAO,QAAQ;GACjB,OAAO;IACL,OAAO,OAAO,OAAO,CAAC,CAAC,SAAS,WAAW,SAAS,CAAC;IACrD,2BAA2B,UAAU,CAAC;GACxC;EACF;CACF,IACA;EAAC;EAAU;EAAmB;EAAiB;CAAC,CAClD;AACF"}
@@ -0,0 +1,43 @@
1
+ import { useCallback, useEffect, useRef } from "react";
2
+ //#region src/components/Accessibility/scheduling/useAnnouncementQueue.ts
3
+ var DEFAULT_GAP_MS = 150;
4
+ /**
5
+ * L2 scheduling policy: announce queued messages one at a time, spaced by `gapMs`, through the
6
+ * provided `announce` (from `useAriaLiveAnnouncer`). Replaces per-consumer queue/timer
7
+ * bookkeeping (e.g. the old `NotificationAnnouncer` state machine). The unified announcer already
8
+ * appends a fresh node per call, so no "clear region first" trick is needed — the gap simply
9
+ * prevents successive messages from clobbering each other in the screen-reader buffer.
10
+ *
11
+ * React 17/18/19 compatible — `useCallback`/`useRef`/`useEffect` only. Pending timers and the
12
+ * queue are cleared on unmount.
13
+ */
14
+ var useAnnouncementQueue = (announce, { gapMs = DEFAULT_GAP_MS } = {}) => {
15
+ const queueRef = useRef([]);
16
+ const timerRef = useRef(null);
17
+ const announceRef = useRef(announce);
18
+ announceRef.current = announce;
19
+ const drain = useCallback(() => {
20
+ if (timerRef.current) return;
21
+ const next = queueRef.current.shift();
22
+ if (!next) return;
23
+ announceRef.current(next.message, { priority: next.priority });
24
+ timerRef.current = setTimeout(() => {
25
+ timerRef.current = null;
26
+ drain();
27
+ }, gapMs);
28
+ }, [gapMs]);
29
+ const enqueue = useCallback((announcement) => {
30
+ queueRef.current.push(announcement);
31
+ drain();
32
+ }, [drain]);
33
+ useEffect(() => () => {
34
+ if (timerRef.current) clearTimeout(timerRef.current);
35
+ timerRef.current = null;
36
+ queueRef.current = [];
37
+ }, []);
38
+ return { enqueue };
39
+ };
40
+ //#endregion
41
+ export { useAnnouncementQueue };
42
+
43
+ //# sourceMappingURL=useAnnouncementQueue.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAnnouncementQueue.mjs","names":[],"sources":["../../../../../src/components/Accessibility/scheduling/useAnnouncementQueue.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\nimport type { AriaLiveAnnounce, AriaLivePriority } from '../useAriaLiveAnnouncer';\n\nexport type QueuedAnnouncement = {\n message: string;\n priority?: AriaLivePriority;\n};\n\nexport type UseAnnouncementQueueOptions = {\n /** Minimum delay between successive announcements, in ms. Defaults to 150. */\n gapMs?: number;\n};\n\nexport type UseAnnouncementQueueResult = {\n /** Enqueue an announcement. The first drains immediately; the rest are paced by `gapMs`. */\n enqueue: (announcement: QueuedAnnouncement) => void;\n};\n\nconst DEFAULT_GAP_MS = 150;\n\n/**\n * L2 scheduling policy: announce queued messages one at a time, spaced by `gapMs`, through the\n * provided `announce` (from `useAriaLiveAnnouncer`). Replaces per-consumer queue/timer\n * bookkeeping (e.g. the old `NotificationAnnouncer` state machine). The unified announcer already\n * appends a fresh node per call, so no \"clear region first\" trick is needed — the gap simply\n * prevents successive messages from clobbering each other in the screen-reader buffer.\n *\n * React 17/18/19 compatible — `useCallback`/`useRef`/`useEffect` only. Pending timers and the\n * queue are cleared on unmount.\n */\nexport const useAnnouncementQueue = (\n announce: AriaLiveAnnounce,\n { gapMs = DEFAULT_GAP_MS }: UseAnnouncementQueueOptions = {},\n): UseAnnouncementQueueResult => {\n const queueRef = useRef<QueuedAnnouncement[]>([]);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Keep the latest `announce` without forcing `enqueue`/`drain` identity to change.\n const announceRef = useRef(announce);\n announceRef.current = announce;\n\n const drain = useCallback(() => {\n if (timerRef.current) return; // already pacing — the running timer will drain the next item\n\n const next = queueRef.current.shift();\n if (!next) return;\n\n announceRef.current(next.message, { priority: next.priority });\n\n timerRef.current = setTimeout(() => {\n timerRef.current = null;\n drain();\n }, gapMs);\n }, [gapMs]);\n\n const enqueue = useCallback(\n (announcement: QueuedAnnouncement) => {\n queueRef.current.push(announcement);\n drain();\n },\n [drain],\n );\n\n useEffect(\n () => () => {\n if (timerRef.current) clearTimeout(timerRef.current);\n timerRef.current = null;\n queueRef.current = [];\n },\n [],\n );\n\n return { enqueue };\n};\n"],"mappings":";;AAmBA,IAAM,iBAAiB;;;;;;;;;;;AAYvB,IAAa,wBACX,UACA,EAAE,QAAQ,mBAAgD,CAAC,MAC5B;CAC/B,MAAM,WAAW,OAA6B,CAAC,CAAC;CAChD,MAAM,WAAW,OAA6C,IAAI;CAGlE,MAAM,cAAc,OAAO,QAAQ;CACnC,YAAY,UAAU;CAEtB,MAAM,QAAQ,kBAAkB;EAC9B,IAAI,SAAS,SAAS;EAEtB,MAAM,OAAO,SAAS,QAAQ,MAAM;EACpC,IAAI,CAAC,MAAM;EAEX,YAAY,QAAQ,KAAK,SAAS,EAAE,UAAU,KAAK,SAAS,CAAC;EAE7D,SAAS,UAAU,iBAAiB;GAClC,SAAS,UAAU;GACnB,MAAM;EACR,GAAG,KAAK;CACV,GAAG,CAAC,KAAK,CAAC;CAEV,MAAM,UAAU,aACb,iBAAqC;EACpC,SAAS,QAAQ,KAAK,YAAY;EAClC,MAAM;CACR,GACA,CAAC,KAAK,CACR;CAEA,sBACc;EACV,IAAI,SAAS,SAAS,aAAa,SAAS,OAAO;EACnD,SAAS,UAAU;EACnB,SAAS,UAAU,CAAC;CACtB,GACA,CAAC,CACH;CAEA,OAAO,EAAE,QAAQ;AACnB"}
@@ -0,0 +1,78 @@
1
+ import { useCallback, useEffect, useRef } from "react";
2
+ //#region src/components/Accessibility/scheduling/useDebouncedAnnounce.ts
3
+ /**
4
+ * L2 scheduling policy: a per-key debounce over the provided `announce` (from
5
+ * `useAriaLiveAnnouncer`). Keeps an independent timer per `key` and takes the delay per call, so
6
+ * distinct rapidly-updating streams can coexist with different debounce windows without clobbering
7
+ * one another (e.g. the autocomplete count, which is a consequence of typing and wants a longer
8
+ * window to clear the screen reader's typing echo, vs. some other future debounced stream). For a
9
+ * single stream, use a constant key.
10
+ *
11
+ * React 17/18/19 compatible — `useCallback`/`useRef`/`useEffect` only. All pending timers are
12
+ * cleared on unmount.
13
+ *
14
+ * ## When to use this vs. {@link useSettledAnnouncement}
15
+ *
16
+ * Both wait out screen-reader noise (the typing echo / field re-read) before speaking, but they
17
+ * model different problems:
18
+ *
19
+ * - **`useDebouncedAnnounce` — an imperative throttle for a value you announce REPEATEDLY.** You
20
+ * call `announce(key, message, ...)` yourself whenever you have a fresh value (from an event
21
+ * handler or effect); rapid calls on a key collapse to the last one. The message typically
22
+ * *changes* each time, it can fire *again and again* (once per pause), and you drive it. Canonical
23
+ * case: the autocomplete result count re-announced as the user keeps typing. It has no notion of
24
+ * "active", "once", or re-arming — it just throttles whatever you push through it.
25
+ *
26
+ * - **{@link useSettledAnnouncement} — a declarative ONE-SHOT cue for a state change.** You pass
27
+ * `{ active, message, settleKey }`; it announces *once* when `active`, deferred until `settleKey`
28
+ * stops changing, then stays silent until `active` flips back and forth. The message is fixed and
29
+ * the point is "say this single fact once the UI settles", not "announce the latest value".
30
+ *
31
+ * | | `useDebouncedAnnounce` | `useSettledAnnouncement` |
32
+ * | --- | --- | --- |
33
+ * | Style | Imperative — you call `announce(key, …)` | Declarative — reacts to `{ active, message, settleKey }` |
34
+ * | Repetition | Fires repeatedly, once per pause | Once per `active` epoch (re-arms on reset) |
35
+ * | Message | Typically changes each time | Fixed fact |
36
+ * | Timer reset | Each explicit call | Each `settleKey` change |
37
+ * | Streams | Many, independent per `key` | One logical cue |
38
+ * | Canonical case | Autocomplete count while typing | "Controls just became available" |
39
+ *
40
+ * Rule of thumb: announcing the **latest value of a changing thing** → this hook. Announcing a
41
+ * **fixed fact once, after things settle** → `useSettledAnnouncement`.
42
+ */
43
+ var useDebouncedAnnounce = (announce) => {
44
+ const timersRef = useRef(/* @__PURE__ */ new Map());
45
+ const announceRef = useRef(announce);
46
+ announceRef.current = announce;
47
+ const cancel = useCallback((key) => {
48
+ const timers = timersRef.current;
49
+ if (key === void 0) {
50
+ timers.forEach((timerId) => clearTimeout(timerId));
51
+ timers.clear();
52
+ return;
53
+ }
54
+ const timerId = timers.get(key);
55
+ if (timerId !== void 0) {
56
+ clearTimeout(timerId);
57
+ timers.delete(key);
58
+ }
59
+ }, []);
60
+ useEffect(() => () => cancel(), [cancel]);
61
+ return {
62
+ announce: useCallback((key, message, delayMs, priority) => {
63
+ const timers = timersRef.current;
64
+ const existing = timers.get(key);
65
+ if (existing !== void 0) clearTimeout(existing);
66
+ const timerId = setTimeout(() => {
67
+ timers.delete(key);
68
+ announceRef.current(message, { priority });
69
+ }, delayMs);
70
+ timers.set(key, timerId);
71
+ }, []),
72
+ cancel
73
+ };
74
+ };
75
+ //#endregion
76
+ export { useDebouncedAnnounce };
77
+
78
+ //# sourceMappingURL=useDebouncedAnnounce.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDebouncedAnnounce.mjs","names":[],"sources":["../../../../../src/components/Accessibility/scheduling/useDebouncedAnnounce.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\nimport type { AriaLiveAnnounce, AriaLivePriority } from '../useAriaLiveAnnouncer';\n\nexport type DebouncedAnnounceResult = {\n /**\n * Schedule an announcement on the channel identified by `key`. Each call on the same key\n * resets that key's timer, so only the last call within its `delayMs` fires. Different keys\n * debounce independently — scheduling key `a` never cancels a pending key `b`, and each may\n * use its own `delayMs`.\n */\n announce: (\n key: string,\n message: string,\n delayMs: number,\n priority?: AriaLivePriority,\n ) => void;\n /** Cancel pending announcement(s): a single `key`, or all when omitted (also runs on unmount). */\n cancel: (key?: string) => void;\n};\n\n/**\n * L2 scheduling policy: a per-key debounce over the provided `announce` (from\n * `useAriaLiveAnnouncer`). Keeps an independent timer per `key` and takes the delay per call, so\n * distinct rapidly-updating streams can coexist with different debounce windows without clobbering\n * one another (e.g. the autocomplete count, which is a consequence of typing and wants a longer\n * window to clear the screen reader's typing echo, vs. some other future debounced stream). For a\n * single stream, use a constant key.\n *\n * React 17/18/19 compatible — `useCallback`/`useRef`/`useEffect` only. All pending timers are\n * cleared on unmount.\n *\n * ## When to use this vs. {@link useSettledAnnouncement}\n *\n * Both wait out screen-reader noise (the typing echo / field re-read) before speaking, but they\n * model different problems:\n *\n * - **`useDebouncedAnnounce` — an imperative throttle for a value you announce REPEATEDLY.** You\n * call `announce(key, message, ...)` yourself whenever you have a fresh value (from an event\n * handler or effect); rapid calls on a key collapse to the last one. The message typically\n * *changes* each time, it can fire *again and again* (once per pause), and you drive it. Canonical\n * case: the autocomplete result count re-announced as the user keeps typing. It has no notion of\n * \"active\", \"once\", or re-arming — it just throttles whatever you push through it.\n *\n * - **{@link useSettledAnnouncement} — a declarative ONE-SHOT cue for a state change.** You pass\n * `{ active, message, settleKey }`; it announces *once* when `active`, deferred until `settleKey`\n * stops changing, then stays silent until `active` flips back and forth. The message is fixed and\n * the point is \"say this single fact once the UI settles\", not \"announce the latest value\".\n *\n * | | `useDebouncedAnnounce` | `useSettledAnnouncement` |\n * | --- | --- | --- |\n * | Style | Imperative — you call `announce(key, …)` | Declarative — reacts to `{ active, message, settleKey }` |\n * | Repetition | Fires repeatedly, once per pause | Once per `active` epoch (re-arms on reset) |\n * | Message | Typically changes each time | Fixed fact |\n * | Timer reset | Each explicit call | Each `settleKey` change |\n * | Streams | Many, independent per `key` | One logical cue |\n * | Canonical case | Autocomplete count while typing | \"Controls just became available\" |\n *\n * Rule of thumb: announcing the **latest value of a changing thing** → this hook. Announcing a\n * **fixed fact once, after things settle** → `useSettledAnnouncement`.\n */\nexport const useDebouncedAnnounce = (\n announce: AriaLiveAnnounce,\n): DebouncedAnnounceResult => {\n const timersRef = useRef<Map<string, ReturnType<typeof setTimeout>>>(new Map());\n\n // Keep the latest `announce` without changing the debounced callback identity.\n const announceRef = useRef(announce);\n announceRef.current = announce;\n\n const cancel = useCallback((key?: string) => {\n const timers = timersRef.current;\n if (key === undefined) {\n timers.forEach((timerId) => clearTimeout(timerId));\n timers.clear();\n return;\n }\n const timerId = timers.get(key);\n if (timerId !== undefined) {\n clearTimeout(timerId);\n timers.delete(key);\n }\n }, []);\n\n useEffect(() => () => cancel(), [cancel]);\n\n const debouncedAnnounce = useCallback(\n (key: string, message: string, delayMs: number, priority?: AriaLivePriority) => {\n const timers = timersRef.current;\n const existing = timers.get(key);\n if (existing !== undefined) clearTimeout(existing);\n const timerId = setTimeout(() => {\n timers.delete(key);\n announceRef.current(message, { priority });\n }, delayMs);\n timers.set(key, timerId);\n },\n [],\n );\n\n return { announce: debouncedAnnounce, cancel };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DA,IAAa,wBACX,aAC4B;CAC5B,MAAM,YAAY,uBAAmD,IAAI,IAAI,CAAC;CAG9E,MAAM,cAAc,OAAO,QAAQ;CACnC,YAAY,UAAU;CAEtB,MAAM,SAAS,aAAa,QAAiB;EAC3C,MAAM,SAAS,UAAU;EACzB,IAAI,QAAQ,KAAA,GAAW;GACrB,OAAO,SAAS,YAAY,aAAa,OAAO,CAAC;GACjD,OAAO,MAAM;GACb;EACF;EACA,MAAM,UAAU,OAAO,IAAI,GAAG;EAC9B,IAAI,YAAY,KAAA,GAAW;GACzB,aAAa,OAAO;GACpB,OAAO,OAAO,GAAG;EACnB;CACF,GAAG,CAAC,CAAC;CAEL,sBAAsB,OAAO,GAAG,CAAC,MAAM,CAAC;CAgBxC,OAAO;EAAE,UAdiB,aACvB,KAAa,SAAiB,SAAiB,aAAgC;GAC9E,MAAM,SAAS,UAAU;GACzB,MAAM,WAAW,OAAO,IAAI,GAAG;GAC/B,IAAI,aAAa,KAAA,GAAW,aAAa,QAAQ;GACjD,MAAM,UAAU,iBAAiB;IAC/B,OAAO,OAAO,GAAG;IACjB,YAAY,QAAQ,SAAS,EAAE,SAAS,CAAC;GAC3C,GAAG,OAAO;GACV,OAAO,IAAI,KAAK,OAAO;EACzB,GACA,CAAC,CAGgB;EAAmB;CAAO;AAC/C"}
@@ -0,0 +1,90 @@
1
+ import { useEffect, useRef } from "react";
2
+ //#region src/components/Accessibility/scheduling/useSettledAnnouncement.ts
3
+ /**
4
+ * Announce a message via a live region, but only after the surrounding UI has gone idle.
5
+ *
6
+ * Use this when an immediate announcement would be **swallowed by the screen reader's own speech** —
7
+ * its typing echo, or the field/group re-read it performs when nearby DOM mutates. Such a read-out
8
+ * supersedes a competing live-region update *at any priority*, so the fix is not to fight it but to
9
+ * wait it out: each change to `settleKey` restarts an idle timer, and the message is announced only
10
+ * once the user has paused and the screen reader has fallen quiet — landing in a calm moment instead
11
+ * of being cut off.
12
+ *
13
+ * Typical shape: `active` is the condition that makes the announcement relevant (e.g. some controls
14
+ * just became available), and `settleKey` is the thing still changing (e.g. the list/text being
15
+ * edited). The announcement fires once per `active` epoch and re-arms when `active` goes false.
16
+ *
17
+ * Composable L2 policy over `announce` (from `useAriaLiveAnnouncer`), like
18
+ * {@link useDebouncedAnnounce}. React 17/18/19 compatible — `useEffect`/`useRef` only; the pending
19
+ * timer is cleared on unmount.
20
+ *
21
+ * ## When to use this vs. {@link useDebouncedAnnounce}
22
+ *
23
+ * Both wait out screen-reader noise (the typing echo / field re-read) before speaking, but they
24
+ * model different problems:
25
+ *
26
+ * - **`useSettledAnnouncement` — a declarative ONE-SHOT cue for a STATE CHANGE.** You pass
27
+ * `{ active, message, settleKey }` and it reacts: it announces *once* when `active`, deferred
28
+ * until `settleKey` stops changing, then stays silent until `active` flips false and true again.
29
+ * The message is fixed; the point is "say this single fact once the UI settles". Canonical case:
30
+ * "the reorder/remove controls just became available" once the option list stops mutating.
31
+ *
32
+ * - **{@link useDebouncedAnnounce} — an imperative throttle for a value you announce REPEATEDLY.**
33
+ * You call `announce(key, message, ...)` yourself whenever you have a fresh value; rapid calls on
34
+ * a key collapse to the last. The message typically *changes* and it fires *again and again* (once
35
+ * per pause). Canonical case: the autocomplete result count re-announced as the user keeps typing.
36
+ * It has no notion of `active`/`once`/re-arming.
37
+ *
38
+ * | | `useDebouncedAnnounce` | `useSettledAnnouncement` |
39
+ * | --- | --- | --- |
40
+ * | Style | Imperative — you call `announce(key, …)` | Declarative — reacts to `{ active, message, settleKey }` |
41
+ * | Repetition | Fires repeatedly, once per pause | Once per `active` epoch (re-arms on reset) |
42
+ * | Message | Typically changes each time | Fixed fact |
43
+ * | Timer reset | Each explicit call | Each `settleKey` change |
44
+ * | Streams | Many, independent per `key` | One logical cue |
45
+ * | Canonical case | Autocomplete count while typing | "Controls just became available" |
46
+ *
47
+ * Rule of thumb: announcing a **fixed fact once, after things settle** → this hook. Announcing the
48
+ * **latest value of a changing thing** (repeatedly) → `useDebouncedAnnounce`.
49
+ */
50
+ var useSettledAnnouncement = (announce, { active, idleMs = 1500, message, once = true, priority = "polite", settleKey }) => {
51
+ const announcedRef = useRef(false);
52
+ const timeoutRef = useRef(null);
53
+ const announceRef = useRef(announce);
54
+ announceRef.current = announce;
55
+ const messageRef = useRef(message);
56
+ messageRef.current = message;
57
+ useEffect(() => {
58
+ const clearPending = () => {
59
+ if (timeoutRef.current) {
60
+ clearTimeout(timeoutRef.current);
61
+ timeoutRef.current = null;
62
+ }
63
+ };
64
+ if (!active) {
65
+ announcedRef.current = false;
66
+ clearPending();
67
+ return;
68
+ }
69
+ if (once && announcedRef.current) return;
70
+ clearPending();
71
+ timeoutRef.current = setTimeout(() => {
72
+ timeoutRef.current = null;
73
+ announcedRef.current = true;
74
+ announceRef.current(messageRef.current, { priority });
75
+ }, idleMs);
76
+ }, [
77
+ active,
78
+ idleMs,
79
+ once,
80
+ priority,
81
+ settleKey
82
+ ]);
83
+ useEffect(() => () => {
84
+ if (timeoutRef.current) clearTimeout(timeoutRef.current);
85
+ }, []);
86
+ };
87
+ //#endregion
88
+ export { useSettledAnnouncement };
89
+
90
+ //# sourceMappingURL=useSettledAnnouncement.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSettledAnnouncement.mjs","names":[],"sources":["../../../../../src/components/Accessibility/scheduling/useSettledAnnouncement.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport type { AriaLiveAnnounce, AriaLivePriority } from '../useAriaLiveAnnouncer';\n\nexport type UseSettledAnnouncementParams = {\n /**\n * While `true`, the announcement is (re)scheduled; when it flips back to `false` the armed/spoken\n * state resets, so the message can fire again the next time `active` becomes `true`.\n */\n active: boolean;\n /** The message to announce. The latest value is used when the announcement fires. */\n message: string;\n /**\n * A value whose identity changes whenever the surrounding UI is still \"in motion\" — e.g. the\n * array/string being edited, or a counter you bump on each relevant change. Every change restarts\n * the idle timer, so the announcement only fires once activity has stopped. Pass a value that is\n * stable between changes (an immutably-updated array/string works; avoid a fresh object literal\n * each render, which would reset the timer forever).\n */\n settleKey: unknown;\n /** Idle window (ms) the `settleKey` must be unchanged before announcing. Default `1500`. */\n idleMs?: number;\n /** Announce at most once per `active` epoch. When `false`, re-announces each time it settles again\n * while still active. Default `true`. */\n once?: boolean;\n /** Live-region priority. Default `'polite'`. */\n priority?: AriaLivePriority;\n};\n\n/**\n * Announce a message via a live region, but only after the surrounding UI has gone idle.\n *\n * Use this when an immediate announcement would be **swallowed by the screen reader's own speech** —\n * its typing echo, or the field/group re-read it performs when nearby DOM mutates. Such a read-out\n * supersedes a competing live-region update *at any priority*, so the fix is not to fight it but to\n * wait it out: each change to `settleKey` restarts an idle timer, and the message is announced only\n * once the user has paused and the screen reader has fallen quiet — landing in a calm moment instead\n * of being cut off.\n *\n * Typical shape: `active` is the condition that makes the announcement relevant (e.g. some controls\n * just became available), and `settleKey` is the thing still changing (e.g. the list/text being\n * edited). The announcement fires once per `active` epoch and re-arms when `active` goes false.\n *\n * Composable L2 policy over `announce` (from `useAriaLiveAnnouncer`), like\n * {@link useDebouncedAnnounce}. React 17/18/19 compatible — `useEffect`/`useRef` only; the pending\n * timer is cleared on unmount.\n *\n * ## When to use this vs. {@link useDebouncedAnnounce}\n *\n * Both wait out screen-reader noise (the typing echo / field re-read) before speaking, but they\n * model different problems:\n *\n * - **`useSettledAnnouncement` — a declarative ONE-SHOT cue for a STATE CHANGE.** You pass\n * `{ active, message, settleKey }` and it reacts: it announces *once* when `active`, deferred\n * until `settleKey` stops changing, then stays silent until `active` flips false and true again.\n * The message is fixed; the point is \"say this single fact once the UI settles\". Canonical case:\n * \"the reorder/remove controls just became available\" once the option list stops mutating.\n *\n * - **{@link useDebouncedAnnounce} — an imperative throttle for a value you announce REPEATEDLY.**\n * You call `announce(key, message, ...)` yourself whenever you have a fresh value; rapid calls on\n * a key collapse to the last. The message typically *changes* and it fires *again and again* (once\n * per pause). Canonical case: the autocomplete result count re-announced as the user keeps typing.\n * It has no notion of `active`/`once`/re-arming.\n *\n * | | `useDebouncedAnnounce` | `useSettledAnnouncement` |\n * | --- | --- | --- |\n * | Style | Imperative — you call `announce(key, …)` | Declarative — reacts to `{ active, message, settleKey }` |\n * | Repetition | Fires repeatedly, once per pause | Once per `active` epoch (re-arms on reset) |\n * | Message | Typically changes each time | Fixed fact |\n * | Timer reset | Each explicit call | Each `settleKey` change |\n * | Streams | Many, independent per `key` | One logical cue |\n * | Canonical case | Autocomplete count while typing | \"Controls just became available\" |\n *\n * Rule of thumb: announcing a **fixed fact once, after things settle** → this hook. Announcing the\n * **latest value of a changing thing** (repeatedly) → `useDebouncedAnnounce`.\n */\nexport const useSettledAnnouncement = (\n announce: AriaLiveAnnounce,\n {\n active,\n idleMs = 1500,\n message,\n once = true,\n priority = 'polite',\n settleKey,\n }: UseSettledAnnouncementParams,\n) => {\n const announcedRef = useRef(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Keep the latest announce/message without making them reset the idle timer (only `settleKey`\n // should do that).\n const announceRef = useRef(announce);\n announceRef.current = announce;\n const messageRef = useRef(message);\n messageRef.current = message;\n\n useEffect(() => {\n const clearPending = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n };\n\n if (!active) {\n announcedRef.current = false;\n clearPending();\n return;\n }\n\n if (once && announcedRef.current) return;\n\n // Restart the idle timer on every `settleKey` change so the message lands only after activity\n // stops (after the screen reader's typing echo / field re-read, not during it).\n clearPending();\n timeoutRef.current = setTimeout(() => {\n timeoutRef.current = null;\n announcedRef.current = true;\n announceRef.current(messageRef.current, { priority });\n }, idleMs);\n }, [active, idleMs, once, priority, settleKey]);\n\n useEffect(\n () => () => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n },\n [],\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4EA,IAAa,0BACX,UACA,EACE,QACA,SAAS,MACT,SACA,OAAO,MACP,WAAW,UACX,gBAEC;CACH,MAAM,eAAe,OAAO,KAAK;CACjC,MAAM,aAAa,OAA6C,IAAI;CAIpE,MAAM,cAAc,OAAO,QAAQ;CACnC,YAAY,UAAU;CACtB,MAAM,aAAa,OAAO,OAAO;CACjC,WAAW,UAAU;CAErB,gBAAgB;EACd,MAAM,qBAAqB;GACzB,IAAI,WAAW,SAAS;IACtB,aAAa,WAAW,OAAO;IAC/B,WAAW,UAAU;GACvB;EACF;EAEA,IAAI,CAAC,QAAQ;GACX,aAAa,UAAU;GACvB,aAAa;GACb;EACF;EAEA,IAAI,QAAQ,aAAa,SAAS;EAIlC,aAAa;EACb,WAAW,UAAU,iBAAiB;GACpC,WAAW,UAAU;GACrB,aAAa,UAAU;GACvB,YAAY,QAAQ,WAAW,SAAS,EAAE,SAAS,CAAC;EACtD,GAAG,MAAM;CACX,GAAG;EAAC;EAAQ;EAAQ;EAAM;EAAU;CAAS,CAAC;CAE9C,sBACc;EACV,IAAI,WAAW,SAAS,aAAa,WAAW,OAAO;CACzD,GACA,CAAC,CACH;AACF"}
@@ -0,0 +1,16 @@
1
+ import { createContext, useContext } from "react";
2
+ //#region src/components/Accessibility/useAriaLiveAnnouncer.ts
3
+ var noopAnnounce = () => () => void 0;
4
+ var AriaLiveAnnouncerContext = createContext(void 0);
5
+ var useAriaLiveAnnouncer = () => {
6
+ const contextValue = useContext(AriaLiveAnnouncerContext);
7
+ if (!contextValue) {
8
+ console.warn("The useAriaLiveAnnouncer hook was called outside of an AriaLiveAnnouncerProvider.");
9
+ return noopAnnounce;
10
+ }
11
+ return contextValue.announce;
12
+ };
13
+ //#endregion
14
+ export { AriaLiveAnnouncerContext, useAriaLiveAnnouncer };
15
+
16
+ //# sourceMappingURL=useAriaLiveAnnouncer.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAriaLiveAnnouncer.mjs","names":[],"sources":["../../../../src/components/Accessibility/useAriaLiveAnnouncer.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nexport type AriaLivePriority = 'assertive' | 'polite';\n\nexport type AriaLiveAnnounceOptions = {\n priority?: AriaLivePriority;\n /**\n * Delay (ms) before the message is placed in the live region. Use to let a competing\n * screen-reader utterance settle first — e.g. a dialog-identity announcement made while a\n * field is being auto-focused is otherwise superseded by the field's focus announcement.\n * Omitted/0 announces immediately.\n */\n delayMs?: number;\n /**\n * When set, an identical `message` is announced at most once per this window (ms); a repeat\n * within the window is suppressed (returns a no-op cancel). The window starts when the message\n * is actually announced. Guards against duplicate announcements — e.g. an effect double-invoked\n * by React StrictMode, or rapid re-renders firing the same message.\n */\n dedupeMs?: number;\n};\n\n/**\n * Announce `message` to assistive technology. Delivery is controlled by an options object\n * (`priority` defaults to `'polite'`). Returns a `cancel` function: for a delayed announcement it\n * prevents a still-pending message from being announced (call it from effect cleanup so a closing\n * surface does not announce after unmount); for an immediate announcement it is a no-op.\n */\nexport type AriaLiveAnnounce = (\n message: string,\n options?: AriaLiveAnnounceOptions,\n) => () => void;\n\nexport type AriaLiveAnnouncerContextValue = {\n announce: AriaLiveAnnounce;\n};\n\nconst noopAnnounce: AriaLiveAnnounce = () => () => undefined;\n\nexport const AriaLiveAnnouncerContext = createContext<\n AriaLiveAnnouncerContextValue | undefined\n>(undefined);\n\nexport const useAriaLiveAnnouncer = () => {\n const contextValue = useContext(AriaLiveAnnouncerContext);\n\n if (!contextValue) {\n console.warn(\n 'The useAriaLiveAnnouncer hook was called outside of an AriaLiveAnnouncerProvider.',\n );\n\n return noopAnnounce;\n }\n\n return contextValue.announce;\n};\n"],"mappings":";;AAqCA,IAAM,2BAA6C,KAAA;AAEnD,IAAa,2BAA2B,cAEtC,KAAA,CAAS;AAEX,IAAa,6BAA6B;CACxC,MAAM,eAAe,WAAW,wBAAwB;CAExD,IAAI,CAAC,cAAc;EACjB,QAAQ,KACN,mFACF;EAEA,OAAO;CACT;CAEA,OAAO,aAAa;AACtB"}